Guy Carmeli 8 gadus atpakaļ
vecāks
revīzija
91d1bac43c

+ 21
- 13
android/app/src/main/java/com/reactnativenavigation/layouts/BottomTabsLayout.java Parādīt failu

9
 import com.aurelhubert.ahbottomnavigation.AHBottomNavigation;
9
 import com.aurelhubert.ahbottomnavigation.AHBottomNavigation;
10
 import com.reactnativenavigation.NavigationApplication;
10
 import com.reactnativenavigation.NavigationApplication;
11
 import com.reactnativenavigation.params.ActivityParams;
11
 import com.reactnativenavigation.params.ActivityParams;
12
+import com.reactnativenavigation.params.FabParams;
12
 import com.reactnativenavigation.params.ScreenParams;
13
 import com.reactnativenavigation.params.ScreenParams;
13
 import com.reactnativenavigation.params.SideMenuParams;
14
 import com.reactnativenavigation.params.SideMenuParams;
14
 import com.reactnativenavigation.params.SnackbarParams;
15
 import com.reactnativenavigation.params.SnackbarParams;
17
 import com.reactnativenavigation.screens.ScreenStack;
18
 import com.reactnativenavigation.screens.ScreenStack;
18
 import com.reactnativenavigation.views.BottomTabs;
19
 import com.reactnativenavigation.views.BottomTabs;
19
 import com.reactnativenavigation.views.SideMenu;
20
 import com.reactnativenavigation.views.SideMenu;
20
-import com.reactnativenavigation.views.SnackbarContainer;
21
+import com.reactnativenavigation.views.SnackbarAndFabContainer;
21
 
22
 
22
 import java.util.List;
23
 import java.util.List;
23
 
24
 
28
 
29
 
29
     private final AppCompatActivity activity;
30
     private final AppCompatActivity activity;
30
     private ActivityParams params;
31
     private ActivityParams params;
31
-    private SnackbarContainer snackbarContainer;
32
+    private SnackbarAndFabContainer snackbarAndFabContainer;
32
     private BottomTabs bottomTabs;
33
     private BottomTabs bottomTabs;
33
     private ScreenStack[] screenStacks;
34
     private ScreenStack[] screenStacks;
34
     private final SideMenuParams sideMenuParams;
35
     private final SideMenuParams sideMenuParams;
51
         addScreenStacks();
52
         addScreenStacks();
52
         createSnackbarContainer();
53
         createSnackbarContainer();
53
         showInitialScreenStack();
54
         showInitialScreenStack();
55
+        showFab();
54
     }
56
     }
55
 
57
 
56
     private void createSideMenu() {
58
     private void createSideMenu() {
100
     }
102
     }
101
 
103
 
102
     private void createSnackbarContainer() {
104
     private void createSnackbarContainer() {
103
-        snackbarContainer = new SnackbarContainer(getContext());
104
-        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
105
+        snackbarAndFabContainer = new SnackbarAndFabContainer(getContext());
106
+        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT);
105
         lp.addRule(ABOVE, bottomTabs.getId());
107
         lp.addRule(ABOVE, bottomTabs.getId());
106
-        snackbarContainer.setLayoutParams(lp);
107
-        getScreenStackParent().addView(snackbarContainer);
108
+        getScreenStackParent().addView(snackbarAndFabContainer, lp);
108
     }
109
     }
109
 
110
 
110
     private void showInitialScreenStack() {
111
     private void showInitialScreenStack() {
111
         showStackAndUpdateStyle(screenStacks[0]);
112
         showStackAndUpdateStyle(screenStacks[0]);
112
     }
113
     }
113
 
114
 
115
+    private void showFab() {
116
+        FabParams fabParams = getCurrentScreenStack().peek().getFabParams();
117
+        if (fabParams != null) {
118
+            snackbarAndFabContainer.showFab(fabParams);
119
+        }
120
+    }
121
+
114
     @Override
122
     @Override
115
     public View asView() {
123
     public View asView() {
116
         return this;
124
         return this;
187
     @Override
195
     @Override
188
     public void showSnackbar(SnackbarParams params) {
196
     public void showSnackbar(SnackbarParams params) {
189
         final String eventId = getCurrentScreenStack().peek().getNavigatorEventId();
197
         final String eventId = getCurrentScreenStack().peek().getNavigatorEventId();
190
-        snackbarContainer.showSnackbar(eventId, params);
198
+        snackbarAndFabContainer.showSnackbar(eventId, params);
191
     }
199
     }
192
 
200
 
193
     public void selectBottomTabByTabIndex(Integer index) {
201
     public void selectBottomTabByTabIndex(Integer index) {
205
         if (isCurrentStack(screenStack)) {
213
         if (isCurrentStack(screenStack)) {
206
             bottomTabs.setStyleFromScreen(screenParams.styleParams);
214
             bottomTabs.setStyleFromScreen(screenParams.styleParams);
207
         }
215
         }
208
-        snackbarContainer.onScreenChange();
216
+        snackbarAndFabContainer.onScreenChange();
209
     }
217
     }
210
 
218
 
211
     @Override
219
     @Override
216
                 setBottomTabsStyleFromCurrentScreen();
224
                 setBottomTabsStyleFromCurrentScreen();
217
             }
225
             }
218
         });
226
         });
219
-        snackbarContainer.onScreenChange();
227
+        snackbarAndFabContainer.onScreenChange();
220
     }
228
     }
221
 
229
 
222
     @Override
230
     @Override
223
     public void popToRoot(ScreenParams params) {
231
     public void popToRoot(ScreenParams params) {
224
         getCurrentScreenStack().popToRoot(params.animateScreenTransitions);
232
         getCurrentScreenStack().popToRoot(params.animateScreenTransitions);
225
         setBottomTabsStyleFromCurrentScreen();
233
         setBottomTabsStyleFromCurrentScreen();
226
-        snackbarContainer.onScreenChange();
234
+        snackbarAndFabContainer.onScreenChange();
227
     }
235
     }
228
 
236
 
229
     @Override
237
     @Override
238
         screenStacks[currentStackIndex] = newStack;
246
         screenStacks[currentStackIndex] = newStack;
239
 
247
 
240
         bottomTabs.setStyleFromScreen(params.styleParams);
248
         bottomTabs.setStyleFromScreen(params.styleParams);
241
-        snackbarContainer.onScreenChange();
249
+        snackbarAndFabContainer.onScreenChange();
242
     }
250
     }
243
 
251
 
244
     @Override
252
     @Override
245
     public void destroy() {
253
     public void destroy() {
246
-        snackbarContainer.destroy();
254
+        snackbarAndFabContainer.destroy();
247
         for (ScreenStack screenStack : screenStacks) {
255
         for (ScreenStack screenStack : screenStacks) {
248
             screenStack.destroy();
256
             screenStack.destroy();
249
         }
257
         }
256
     public boolean onTabSelected(int position, boolean wasSelected) {
264
     public boolean onTabSelected(int position, boolean wasSelected) {
257
         hideCurrentStack();
265
         hideCurrentStack();
258
         showNewStack(position);
266
         showNewStack(position);
259
-        snackbarContainer.onScreenChange();
267
+        snackbarAndFabContainer.onScreenChange();
260
         return true;
268
         return true;
261
     }
269
     }
262
 
270
 

+ 11
- 11
android/app/src/main/java/com/reactnativenavigation/layouts/SingleScreenLayout.java Parādīt failu

14
 import com.reactnativenavigation.screens.ScreenStack;
14
 import com.reactnativenavigation.screens.ScreenStack;
15
 import com.reactnativenavigation.views.LeftButtonOnClickListener;
15
 import com.reactnativenavigation.views.LeftButtonOnClickListener;
16
 import com.reactnativenavigation.views.SideMenu;
16
 import com.reactnativenavigation.views.SideMenu;
17
-import com.reactnativenavigation.views.SnackbarContainer;
17
+import com.reactnativenavigation.views.SnackbarAndFabContainer;
18
 
18
 
19
 import java.util.List;
19
 import java.util.List;
20
 
20
 
27
     protected final ScreenParams screenParams;
27
     protected final ScreenParams screenParams;
28
     private final SideMenuParams sideMenuParams;
28
     private final SideMenuParams sideMenuParams;
29
     protected ScreenStack stack;
29
     protected ScreenStack stack;
30
-    private SnackbarContainer snackbarContainer;
30
+    private SnackbarAndFabContainer snackbarAndFabContainer;
31
     protected LeftButtonOnClickListener leftButtonOnClickListener;
31
     protected LeftButtonOnClickListener leftButtonOnClickListener;
32
     private @Nullable SideMenu sideMenu;
32
     private @Nullable SideMenu sideMenu;
33
 
33
 
75
     }
75
     }
76
 
76
 
77
     private void createSnackbarContainer() {
77
     private void createSnackbarContainer() {
78
-        snackbarContainer = new SnackbarContainer(getContext());
78
+        snackbarAndFabContainer = new SnackbarAndFabContainer(getContext());
79
         RelativeLayout.LayoutParams lp = new LayoutParams(MATCH_PARENT, WRAP_CONTENT);
79
         RelativeLayout.LayoutParams lp = new LayoutParams(MATCH_PARENT, WRAP_CONTENT);
80
         lp.addRule(ALIGN_PARENT_BOTTOM);
80
         lp.addRule(ALIGN_PARENT_BOTTOM);
81
-        snackbarContainer.setLayoutParams(lp);
82
-        getScreenStackParent().addView(snackbarContainer);
81
+        snackbarAndFabContainer.setLayoutParams(lp);
82
+        getScreenStackParent().addView(snackbarAndFabContainer);
83
     }
83
     }
84
 
84
 
85
     @Override
85
     @Override
99
     @Override
99
     @Override
100
     public void destroy() {
100
     public void destroy() {
101
         stack.destroy();
101
         stack.destroy();
102
-        snackbarContainer.destroy();
102
+        snackbarAndFabContainer.destroy();
103
         if (sideMenu != null) {
103
         if (sideMenu != null) {
104
             sideMenu.destroy();
104
             sideMenu.destroy();
105
         }
105
         }
109
     public void push(ScreenParams params) {
109
     public void push(ScreenParams params) {
110
         LayoutParams lp = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
110
         LayoutParams lp = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
111
         stack.push(params, lp);
111
         stack.push(params, lp);
112
-        snackbarContainer.onScreenChange();
112
+        snackbarAndFabContainer.onScreenChange();
113
     }
113
     }
114
 
114
 
115
     @Override
115
     @Override
116
     public void pop(ScreenParams params) {
116
     public void pop(ScreenParams params) {
117
         stack.pop(params.animateScreenTransitions);
117
         stack.pop(params.animateScreenTransitions);
118
-        snackbarContainer.onScreenChange();
118
+        snackbarAndFabContainer.onScreenChange();
119
     }
119
     }
120
 
120
 
121
     @Override
121
     @Override
122
     public void popToRoot(ScreenParams params) {
122
     public void popToRoot(ScreenParams params) {
123
         stack.popToRoot(params.animateScreenTransitions);
123
         stack.popToRoot(params.animateScreenTransitions);
124
-        snackbarContainer.onScreenChange();
124
+        snackbarAndFabContainer.onScreenChange();
125
     }
125
     }
126
 
126
 
127
     @Override
127
     @Override
128
     public void newStack(ScreenParams params) {
128
     public void newStack(ScreenParams params) {
129
         RelativeLayout parent = sideMenu == null ? this : sideMenu.getContentContainer();
129
         RelativeLayout parent = sideMenu == null ? this : sideMenu.getContentContainer();
130
         createStack(parent);
130
         createStack(parent);
131
-        snackbarContainer.onScreenChange();
131
+        snackbarAndFabContainer.onScreenChange();
132
     }
132
     }
133
 
133
 
134
     @Override
134
     @Override
179
     @Override
179
     @Override
180
     public void showSnackbar(SnackbarParams params) {
180
     public void showSnackbar(SnackbarParams params) {
181
         final String navigatorEventId = stack.peek().getNavigatorEventId();
181
         final String navigatorEventId = stack.peek().getNavigatorEventId();
182
-        snackbarContainer.showSnackbar(navigatorEventId, params);
182
+        snackbarAndFabContainer.showSnackbar(navigatorEventId, params);
183
     }
183
     }
184
 
184
 
185
     @Override
185
     @Override

+ 8
- 0
android/app/src/main/java/com/reactnativenavigation/params/FabActionParams.java Parādīt failu

1
+package com.reactnativenavigation.params;
2
+
3
+import android.graphics.drawable.Drawable;
4
+
5
+public class FabActionParams {
6
+    public String id;
7
+    public Drawable icon;
8
+}

+ 13
- 0
android/app/src/main/java/com/reactnativenavigation/params/FabParams.java Parādīt failu

1
+package com.reactnativenavigation.params;
2
+
3
+import android.graphics.drawable.Drawable;
4
+
5
+import java.util.List;
6
+
7
+public class FabParams {
8
+    public Drawable collapsedIcon;
9
+    public Drawable expendedIcon;
10
+    public StyleParams.Color backgroundColor;
11
+    public String id;
12
+    public List<FabActionParams> actions;
13
+}

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/params/ScreenParams.java Parādīt failu

16
     public String fragmentCreatorClassName;
16
     public String fragmentCreatorClassName;
17
     public Bundle fragmentCreatorPassProps;
17
     public Bundle fragmentCreatorPassProps;
18
     public boolean animateScreenTransitions;
18
     public boolean animateScreenTransitions;
19
-
19
+    public FabParams fabParams;
20
     public String tabLabel;
20
     public String tabLabel;
21
     public Drawable tabIcon;
21
     public Drawable tabIcon;
22
 
22
 

+ 15
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/FabActionParamsParser.java Parādīt failu

1
+package com.reactnativenavigation.params.parsers;
2
+
3
+import android.os.Bundle;
4
+
5
+import com.reactnativenavigation.params.FabActionParams;
6
+import com.reactnativenavigation.react.ImageLoader;
7
+
8
+public class FabActionParamsParser extends Parser {
9
+    public FabActionParams parse(Bundle params) {
10
+        FabActionParams fabActionParams = new FabActionParams();
11
+        fabActionParams.id = params.getString("id");
12
+        fabActionParams.icon = ImageLoader.loadImage(params.getString("icon"));
13
+        return fabActionParams;
14
+    }
15
+}

+ 33
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/FabParamsParser.java Parādīt failu

1
+package com.reactnativenavigation.params.parsers;
2
+
3
+import android.os.Bundle;
4
+
5
+import com.reactnativenavigation.params.FabActionParams;
6
+import com.reactnativenavigation.params.FabParams;
7
+import com.reactnativenavigation.params.StyleParams;
8
+import com.reactnativenavigation.react.ImageLoader;
9
+
10
+public class FabParamsParser extends Parser {
11
+    public FabParams parse(Bundle params) {
12
+        FabParams fabParams = new FabParams();
13
+        fabParams.id = params.getString("id");
14
+        fabParams.backgroundColor = getColor(params, "backgroundColor", new StyleParams.Color());
15
+
16
+        if (hasKey(params, "collapsedIcon")) {
17
+            fabParams.collapsedIcon = ImageLoader.loadImage(params.getString("collapsedIcon"));
18
+        }
19
+        if (hasKey(params, "expendedIcon")) {
20
+            fabParams.expendedIcon = ImageLoader.loadImage(params.getString("expendedIcon"));
21
+        }
22
+        if (hasKey(params, "actions")) {
23
+            fabParams.actions = parseBundle(params.getBundle("actions"), new ParseStrategy<FabActionParams>() {
24
+                @Override
25
+                public FabActionParams parse(Bundle params) {
26
+                    return new FabActionParamsParser().parse(params);
27
+                }
28
+            });
29
+        }
30
+
31
+        return fabParams;
32
+    }
33
+}

+ 12
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenParamsParser.java Parādīt failu

3
 import android.graphics.drawable.Drawable;
3
 import android.graphics.drawable.Drawable;
4
 import android.os.Bundle;
4
 import android.os.Bundle;
5
 
5
 
6
+import com.reactnativenavigation.params.FabParams;
6
 import com.reactnativenavigation.params.NavigationParams;
7
 import com.reactnativenavigation.params.NavigationParams;
7
 import com.reactnativenavigation.params.ScreenParams;
8
 import com.reactnativenavigation.params.ScreenParams;
8
 import com.reactnativenavigation.params.TitleBarButtonParams;
9
 import com.reactnativenavigation.params.TitleBarButtonParams;
18
     private static final String KEY_NAVIGATION_PARAMS = "navigationParams";
19
     private static final String KEY_NAVIGATION_PARAMS = "navigationParams";
19
     private static final String KEY_RIGHT_BUTTONS = "rightButtons";
20
     private static final String KEY_RIGHT_BUTTONS = "rightButtons";
20
     private static final String KEY_LEFT_BUTTON = "leftButton";
21
     private static final String KEY_LEFT_BUTTON = "leftButton";
22
+    private static final String KEY_FAB = "fab";
21
     private static final String KEY_BACK_BUTTON_HIDDEN = "backButtonHidden";
23
     private static final String KEY_BACK_BUTTON_HIDDEN = "backButtonHidden";
22
     private static final String STYLE_PARAMS = "styleParams";
24
     private static final String STYLE_PARAMS = "styleParams";
23
     private static final String TOP_TABS = "topTabs";
25
     private static final String TOP_TABS = "topTabs";
46
             result.fragmentCreatorPassProps = params.getBundle(FRAGMENT_CREATOR_PASS_PROPS);
48
             result.fragmentCreatorPassProps = params.getBundle(FRAGMENT_CREATOR_PASS_PROPS);
47
         }
49
         }
48
 
50
 
51
+        result.fabParams = parseFab(params);
52
+
49
         result.tabLabel = getTabLabel(params);
53
         result.tabLabel = getTabLabel(params);
50
         result.tabIcon = getTabIcon(params);
54
         result.tabIcon = getTabIcon(params);
51
 
55
 
99
         return leftButton;
103
         return leftButton;
100
     }
104
     }
101
 
105
 
106
+    private static FabParams parseFab(Bundle params) {
107
+        FabParams fabParams = null;
108
+        if (hasKey(params, KEY_FAB)) {
109
+            fabParams = new FabParamsParser().parse(params.getBundle(KEY_FAB));
110
+        }
111
+        return fabParams;
112
+    }
113
+
102
     public List<ScreenParams> parseTabs(Bundle params) {
114
     public List<ScreenParams> parseTabs(Bundle params) {
103
         return parseBundle(params, new ParseStrategy<ScreenParams>() {
115
         return parseBundle(params, new ParseStrategy<ScreenParams>() {
104
             @Override
116
             @Override

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/screens/Screen.java Parādīt failu

9
 import android.widget.RelativeLayout;
9
 import android.widget.RelativeLayout;
10
 
10
 
11
 import com.reactnativenavigation.animation.VisibilityAnimator;
11
 import com.reactnativenavigation.animation.VisibilityAnimator;
12
+import com.reactnativenavigation.params.FabParams;
12
 import com.reactnativenavigation.params.ScreenParams;
13
 import com.reactnativenavigation.params.ScreenParams;
13
 import com.reactnativenavigation.params.StyleParams;
14
 import com.reactnativenavigation.params.StyleParams;
14
 import com.reactnativenavigation.params.TitleBarButtonParams;
15
 import com.reactnativenavigation.params.TitleBarButtonParams;
136
         return screenParams.getNavigatorEventId();
137
         return screenParams.getNavigatorEventId();
137
     }
138
     }
138
 
139
 
140
+    public FabParams getFabParams() {
141
+        return screenParams.fabParams;
142
+    }
143
+
139
     public void setTopBarVisible(boolean visible, boolean animate) {
144
     public void setTopBarVisible(boolean visible, boolean animate) {
140
         topBarVisibilityAnimator.setVisible(visible, animate);
145
         topBarVisibilityAnimator.setVisible(visible, animate);
141
     }
146
     }

android/app/src/main/java/com/reactnativenavigation/views/SnackbarContainer.java → android/app/src/main/java/com/reactnativenavigation/views/SnackbarAndFabContainer.java Parādīt failu

1
 package com.reactnativenavigation.views;
1
 package com.reactnativenavigation.views;
2
 
2
 
3
 import android.content.Context;
3
 import android.content.Context;
4
+import android.support.annotation.NonNull;
4
 import android.support.design.widget.CoordinatorLayout;
5
 import android.support.design.widget.CoordinatorLayout;
6
+import android.support.design.widget.FloatingActionButton;
7
+import android.view.Gravity;
8
+import android.view.ViewGroup;
5
 
9
 
6
 import com.reactnativenavigation.events.ScreenChangeBroadcastReceiver;
10
 import com.reactnativenavigation.events.ScreenChangeBroadcastReceiver;
11
+import com.reactnativenavigation.params.FabParams;
7
 import com.reactnativenavigation.params.SnackbarParams;
12
 import com.reactnativenavigation.params.SnackbarParams;
13
+import com.reactnativenavigation.utils.ViewUtils;
8
 
14
 
9
-public class SnackbarContainer extends CoordinatorLayout implements Snakbar.OnDismissListener, ScreenChangeBroadcastReceiver.OnScreenChangeListener {
10
-
15
+public class SnackbarAndFabContainer extends CoordinatorLayout implements Snakbar.OnDismissListener, ScreenChangeBroadcastReceiver.OnScreenChangeListener {
16
+    private static final String TAG = "SnackbarAndFabContainer";
11
     private Snakbar snakbar;
17
     private Snakbar snakbar;
12
     private ScreenChangeBroadcastReceiver screenChangeBroadcastReceiver;
18
     private ScreenChangeBroadcastReceiver screenChangeBroadcastReceiver;
13
 
19
 
14
-    public SnackbarContainer(Context context) {
20
+    public SnackbarAndFabContainer(Context context) {
15
         super(context);
21
         super(context);
16
         registerTabSelectedReceiver();
22
         registerTabSelectedReceiver();
17
     }
23
     }
46
     public void onScreenChangeListener() {
52
     public void onScreenChangeListener() {
47
         onScreenChange();
53
         onScreenChange();
48
     }
54
     }
55
+
56
+    public void showFab(@NonNull FabParams fabParams) {
57
+        FloatingActionButton fab = new FloatingActionButton(getContext());
58
+        CoordinatorLayout.LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
59
+        lp.gravity = Gravity.RIGHT | Gravity.BOTTOM;
60
+        int margin = (int) ViewUtils.convertDpToPixel(16);
61
+        lp.setMargins(0, 0, margin, margin);
62
+        addView(fab, lp);
63
+    }
49
 }
64
 }

+ 12
- 8
android/app/src/main/java/com/reactnativenavigation/views/Snakbar.java Parādīt failu

16
         void onDismiss();
16
         void onDismiss();
17
     }
17
     }
18
 
18
 
19
+    public void show() {
20
+        snackbar.show();
21
+    }
22
+
23
+    public void dismiss() {
24
+        snackbar.dismiss();
25
+    }
26
+
27
+    public View getView() {
28
+        return snackbar.getView();
29
+    }
30
+
19
     public Snakbar(OnDismissListener parent, String navigatorEventId, SnackbarParams params) {
31
     public Snakbar(OnDismissListener parent, String navigatorEventId, SnackbarParams params) {
20
         this.parent = parent;
32
         this.parent = parent;
21
         this.navigatorEventId = navigatorEventId;
33
         this.navigatorEventId = navigatorEventId;
60
             }
72
             }
61
         });
73
         });
62
     }
74
     }
63
-
64
-    public void show() {
65
-        snackbar.show();
66
-    }
67
-
68
-    public void dismiss() {
69
-        snackbar.dismiss();
70
-    }
71
 }
75
 }

+ 23
- 0
src/deprecated/platformSpecificDeprecated.android.js Parādīt failu

357
     }
357
     }
358
   }
358
   }
359
 
359
 
360
+  const fab = getFab(screen);
361
+  if (fab) {
362
+    screen.fab = fab;
363
+  }
364
+
360
   if (rightButtons) {
365
   if (rightButtons) {
361
     screen.rightButtons = rightButtons;
366
     screen.rightButtons = rightButtons;
362
   }
367
   }
365
   }
370
   }
366
 }
371
 }
367
 
372
 
373
+function getFab(screen) {
374
+  if (screen.fab) {
375
+    const fab = screen.fab;
376
+    debugger;
377
+    fab.collapsedIcon = resolveAssetSource(fab.collapsedIcon).uri;
378
+    fab.expendedIcon = resolveAssetSource(fab.expendedIcon).uri;
379
+
380
+    if (fab.actions) {
381
+      _.forEach(fab.actions, (action) => {
382
+        action.icon = resolveAssetSource(action.icon).uri;
383
+        return action;
384
+      })
385
+    }
386
+
387
+    return fab;
388
+  }
389
+}
390
+
368
 function createSideMenuButton() {
391
 function createSideMenuButton() {
369
   return {
392
   return {
370
     id: "sideMenu"
393
     id: "sideMenu"