@xenknight/framework7-vue 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +33 -0
  3. package/components/accordion-content.d.ts +46 -0
  4. package/components/accordion-content.js +22 -0
  5. package/components/accordion-item.d.ts +51 -0
  6. package/components/accordion-item.js +77 -0
  7. package/components/accordion-toggle.d.ts +46 -0
  8. package/components/accordion-toggle.js +22 -0
  9. package/components/accordion.d.ts +50 -0
  10. package/components/accordion.js +23 -0
  11. package/components/actions-button.d.ts +56 -0
  12. package/components/actions-button.js +58 -0
  13. package/components/actions-group.d.ts +46 -0
  14. package/components/actions-group.js +22 -0
  15. package/components/actions-label.d.ts +51 -0
  16. package/components/actions-label.js +36 -0
  17. package/components/actions.d.ts +109 -0
  18. package/components/actions.js +157 -0
  19. package/components/app.d.ts +310 -0
  20. package/components/app.js +267 -0
  21. package/components/area-chart.d.ts +88 -0
  22. package/components/area-chart.js +364 -0
  23. package/components/badge.d.ts +54 -0
  24. package/components/badge.js +29 -0
  25. package/components/block-footer.d.ts +46 -0
  26. package/components/block-footer.js +22 -0
  27. package/components/block-header.d.ts +46 -0
  28. package/components/block-header.js +22 -0
  29. package/components/block-title.d.ts +54 -0
  30. package/components/block-title.js +35 -0
  31. package/components/block.d.ts +163 -0
  32. package/components/block.js +123 -0
  33. package/components/breadcrumbs-collapsed.d.ts +19 -0
  34. package/components/breadcrumbs-collapsed.js +21 -0
  35. package/components/breadcrumbs-item.d.ts +22 -0
  36. package/components/breadcrumbs-item.js +24 -0
  37. package/components/breadcrumbs-separator.d.ts +19 -0
  38. package/components/breadcrumbs-separator.js +20 -0
  39. package/components/breadcrumbs.d.ts +19 -0
  40. package/components/breadcrumbs.js +20 -0
  41. package/components/button.d.ts +371 -0
  42. package/components/button.js +182 -0
  43. package/components/card-content.d.ts +51 -0
  44. package/components/card-content.js +28 -0
  45. package/components/card-footer.d.ts +46 -0
  46. package/components/card-footer.js +22 -0
  47. package/components/card-header.d.ts +46 -0
  48. package/components/card-header.js +22 -0
  49. package/components/card.d.ts +145 -0
  50. package/components/card.js +192 -0
  51. package/components/checkbox.d.ts +72 -0
  52. package/components/checkbox.js +70 -0
  53. package/components/chip.d.ts +107 -0
  54. package/components/chip.js +81 -0
  55. package/components/fab-backdrop.d.ts +46 -0
  56. package/components/fab-backdrop.js +22 -0
  57. package/components/fab-button.d.ts +67 -0
  58. package/components/fab-button.js +52 -0
  59. package/components/fab-buttons.d.ts +51 -0
  60. package/components/fab-buttons.js +26 -0
  61. package/components/fab.d.ts +76 -0
  62. package/components/fab.js +78 -0
  63. package/components/gauge.d.ts +91 -0
  64. package/components/gauge.js +151 -0
  65. package/components/icon.d.ts +78 -0
  66. package/components/icon.js +100 -0
  67. package/components/input.d.ts +226 -0
  68. package/components/input.js +409 -0
  69. package/components/link.d.ts +287 -0
  70. package/components/link.js +129 -0
  71. package/components/list-button.d.ts +239 -0
  72. package/components/list-button.js +71 -0
  73. package/components/list-group.d.ts +71 -0
  74. package/components/list-group.js +53 -0
  75. package/components/list-index.d.ts +81 -0
  76. package/components/list-index.js +96 -0
  77. package/components/list-input.d.ts +245 -0
  78. package/components/list-input.js +415 -0
  79. package/components/list-item.d.ts +370 -0
  80. package/components/list-item.js +451 -0
  81. package/components/list.d.ts +236 -0
  82. package/components/list.js +222 -0
  83. package/components/login-screen-title.d.ts +46 -0
  84. package/components/login-screen-title.js +22 -0
  85. package/components/login-screen.d.ts +61 -0
  86. package/components/login-screen.js +104 -0
  87. package/components/message.d.ts +116 -0
  88. package/components/message.js +169 -0
  89. package/components/messagebar-attachment.d.ts +56 -0
  90. package/components/messagebar-attachment.js +52 -0
  91. package/components/messagebar-attachments.d.ts +46 -0
  92. package/components/messagebar-attachments.js +22 -0
  93. package/components/messagebar-sheet-image.d.ts +55 -0
  94. package/components/messagebar-sheet-image.js +48 -0
  95. package/components/messagebar-sheet-item.d.ts +46 -0
  96. package/components/messagebar-sheet-item.js +22 -0
  97. package/components/messagebar-sheet.d.ts +46 -0
  98. package/components/messagebar-sheet.js +22 -0
  99. package/components/messagebar.d.ts +117 -0
  100. package/components/messagebar.js +193 -0
  101. package/components/messages-title.d.ts +46 -0
  102. package/components/messages-title.js +22 -0
  103. package/components/messages.d.ts +116 -0
  104. package/components/messages.js +134 -0
  105. package/components/nav-left.d.ts +68 -0
  106. package/components/nav-left.js +66 -0
  107. package/components/nav-right.d.ts +50 -0
  108. package/components/nav-right.js +25 -0
  109. package/components/nav-title-large.d.ts +46 -0
  110. package/components/nav-title-large.js +25 -0
  111. package/components/nav-title.d.ts +58 -0
  112. package/components/nav-title.js +31 -0
  113. package/components/navbar.d.ts +110 -0
  114. package/components/navbar.js +248 -0
  115. package/components/page-content.d.ts +113 -0
  116. package/components/page-content.js +147 -0
  117. package/components/page.d.ts +150 -0
  118. package/components/page.js +331 -0
  119. package/components/panel.d.ts +139 -0
  120. package/components/panel.js +198 -0
  121. package/components/photo-browser.d.ts +164 -0
  122. package/components/photo-browser.js +181 -0
  123. package/components/pie-chart.d.ts +37 -0
  124. package/components/pie-chart.js +172 -0
  125. package/components/popover.d.ts +101 -0
  126. package/components/popover.js +157 -0
  127. package/components/popup.d.ts +99 -0
  128. package/components/popup.js +161 -0
  129. package/components/preloader.d.ts +50 -0
  130. package/components/preloader.js +65 -0
  131. package/components/progressbar.d.ts +54 -0
  132. package/components/progressbar.js +44 -0
  133. package/components/radio.d.ts +68 -0
  134. package/components/radio.js +59 -0
  135. package/components/range.d.ts +141 -0
  136. package/components/range.js +139 -0
  137. package/components/routable-modals.d.ts +19 -0
  138. package/components/routable-modals.js +58 -0
  139. package/components/searchbar.d.ts +182 -0
  140. package/components/searchbar.js +285 -0
  141. package/components/segmented.d.ts +87 -0
  142. package/components/segmented.js +53 -0
  143. package/components/sheet.d.ts +132 -0
  144. package/components/sheet.js +213 -0
  145. package/components/skeleton-avatar.d.ts +6 -0
  146. package/components/skeleton-avatar.js +3 -0
  147. package/components/skeleton-block.d.ts +6 -0
  148. package/components/skeleton-block.js +3 -0
  149. package/components/skeleton-image.d.ts +6 -0
  150. package/components/skeleton-image.js +3 -0
  151. package/components/skeleton-text.d.ts +6 -0
  152. package/components/skeleton-text.js +3 -0
  153. package/components/stepper.d.ts +197 -0
  154. package/components/stepper.js +230 -0
  155. package/components/subnavbar.d.ts +59 -0
  156. package/components/subnavbar.js +40 -0
  157. package/components/swipeout-actions.d.ts +58 -0
  158. package/components/swipeout-actions.js +33 -0
  159. package/components/swipeout-button.d.ts +75 -0
  160. package/components/swipeout-button.js +48 -0
  161. package/components/tab.d.ts +51 -0
  162. package/components/tab.js +128 -0
  163. package/components/tabs.d.ts +63 -0
  164. package/components/tabs.js +59 -0
  165. package/components/text-editor.d.ts +95 -0
  166. package/components/text-editor.js +147 -0
  167. package/components/toggle.d.ts +80 -0
  168. package/components/toggle.js +89 -0
  169. package/components/toolbar.d.ts +108 -0
  170. package/components/toolbar.js +135 -0
  171. package/components/treeview-item.d.ts +265 -0
  172. package/components/treeview-item.js +140 -0
  173. package/components/treeview.d.ts +46 -0
  174. package/components/treeview.js +22 -0
  175. package/components/use-icon.d.ts +19 -0
  176. package/components/use-icon.js +27 -0
  177. package/components/view.d.ts +296 -0
  178. package/components/view.js +373 -0
  179. package/components/views.d.ts +50 -0
  180. package/components/views.js +25 -0
  181. package/framework7-vue-bundle.js +190 -0
  182. package/framework7-vue.d.ts +121 -0
  183. package/framework7-vue.js +108 -0
  184. package/package.json +65 -0
  185. package/shared/components-router.js +203 -0
  186. package/shared/f7.js +71 -0
  187. package/shared/get-router-initial-component.js +35 -0
  188. package/shared/mixins.js +233 -0
  189. package/shared/modal-state-classes.js +10 -0
  190. package/shared/plugin.js +37 -0
  191. package/shared/router-open-in.js +105 -0
  192. package/shared/use-icon.js +37 -0
  193. package/shared/use-route-props.js +18 -0
  194. package/shared/use-smart-select.js +24 -0
  195. package/shared/use-store.js +24 -0
  196. package/shared/use-tab.js +24 -0
  197. package/shared/use-theme.js +11 -0
  198. package/shared/use-tooltip.js +43 -0
  199. package/shared/utils.js +110 -0
@@ -0,0 +1,296 @@
1
+
2
+ import { ComponentOptionsMixin, DefineComponent, PropType } from 'vue';
3
+
4
+
5
+ declare const View: DefineComponent<
6
+ {
7
+
8
+ tab: {
9
+ type: BooleanConstructor;
10
+ },
11
+
12
+ tabActive: {
13
+ type: BooleanConstructor;
14
+ },
15
+
16
+ name: {
17
+ type: StringConstructor;
18
+ },
19
+
20
+ linksView: {
21
+ type: ObjectConstructor | StringConstructor;
22
+ },
23
+
24
+ url: {
25
+ type: StringConstructor;
26
+ },
27
+
28
+ xhrCacheIgnore: {
29
+ type: ArrayConstructor;
30
+ },
31
+
32
+ xhrCacheDuration: {
33
+ type: NumberConstructor;
34
+ },
35
+
36
+ masterDetailBreakpoint: {
37
+ type: NumberConstructor;
38
+ },
39
+
40
+ removeElementsTimeout: {
41
+ type: NumberConstructor;
42
+ },
43
+
44
+ iosSwipeBackActiveArea: {
45
+ type: NumberConstructor;
46
+ },
47
+
48
+ iosSwipeBackThreshold: {
49
+ type: NumberConstructor;
50
+ },
51
+
52
+ mdSwipeBackActiveArea: {
53
+ type: NumberConstructor;
54
+ },
55
+
56
+ mdSwipeBackThreshold: {
57
+ type: NumberConstructor;
58
+ },
59
+
60
+ browserHistoryRoot: {
61
+ type: StringConstructor;
62
+ },
63
+
64
+ browserHistorySeparator: {
65
+ type: StringConstructor;
66
+ },
67
+
68
+ transition: {
69
+ type: StringConstructor;
70
+ },
71
+
72
+ materialPageLoadDelay: {
73
+ type: NumberConstructor;
74
+ },
75
+
76
+ routes: {
77
+ type: ArrayConstructor;
78
+ },
79
+
80
+ routesAdd: {
81
+ type: ArrayConstructor;
82
+ },
83
+
84
+ routesBeforeEnter: {
85
+ type: FunctionConstructor | ArrayConstructor;
86
+ },
87
+
88
+ routesBeforeLeave: {
89
+ type: FunctionConstructor | ArrayConstructor;
90
+ },
91
+
92
+ initRouterOnTabShow: {
93
+ type: BooleanConstructor;
94
+ default: undefined;
95
+ },
96
+
97
+ router: {
98
+ type: BooleanConstructor;
99
+ default: boolean;
100
+ },
101
+
102
+ main: {
103
+ type: BooleanConstructor;
104
+ default: undefined;
105
+ },
106
+
107
+ xhrCache: {
108
+ type: BooleanConstructor;
109
+ default: undefined;
110
+ },
111
+
112
+ xhrCacheIgnoreGetParameters: {
113
+ type: BooleanConstructor;
114
+ default: undefined;
115
+ },
116
+
117
+ preloadPreviousPage: {
118
+ type: BooleanConstructor;
119
+ default: undefined;
120
+ },
121
+
122
+ allowDuplicateUrls: {
123
+ type: BooleanConstructor;
124
+ default: undefined;
125
+ },
126
+
127
+ reloadPages: {
128
+ type: BooleanConstructor;
129
+ default: undefined;
130
+ },
131
+
132
+ reloadDetail: {
133
+ type: BooleanConstructor;
134
+ default: undefined;
135
+ },
136
+
137
+ masterDetailResizable: {
138
+ type: BooleanConstructor;
139
+ default: undefined;
140
+ },
141
+
142
+ removeElements: {
143
+ type: BooleanConstructor;
144
+ default: undefined;
145
+ },
146
+
147
+ removeElementsWithTimeout: {
148
+ type: BooleanConstructor;
149
+ default: undefined;
150
+ },
151
+
152
+ restoreScrollTopOnBack: {
153
+ type: BooleanConstructor;
154
+ default: undefined;
155
+ },
156
+
157
+ loadInitialPage: {
158
+ type: BooleanConstructor;
159
+ default: undefined;
160
+ },
161
+
162
+ iosSwipeBack: {
163
+ type: BooleanConstructor;
164
+ default: undefined;
165
+ },
166
+
167
+ iosSwipeBackAnimateShadow: {
168
+ type: BooleanConstructor;
169
+ default: undefined;
170
+ },
171
+
172
+ iosSwipeBackAnimateOpacity: {
173
+ type: BooleanConstructor;
174
+ default: undefined;
175
+ },
176
+
177
+ mdSwipeBack: {
178
+ type: BooleanConstructor;
179
+ default: undefined;
180
+ },
181
+
182
+ mdSwipeBackAnimateShadow: {
183
+ type: BooleanConstructor;
184
+ default: undefined;
185
+ },
186
+
187
+ mdSwipeBackAnimateOpacity: {
188
+ type: BooleanConstructor;
189
+ default: undefined;
190
+ },
191
+
192
+ browserHistory: {
193
+ type: BooleanConstructor;
194
+ default: undefined;
195
+ },
196
+
197
+ browserHistoryAnimate: {
198
+ type: BooleanConstructor;
199
+ default: undefined;
200
+ },
201
+
202
+ browserHistoryAnimateOnLoad: {
203
+ type: BooleanConstructor;
204
+ default: undefined;
205
+ },
206
+
207
+ browserHistoryOnLoad: {
208
+ type: BooleanConstructor;
209
+ default: undefined;
210
+ },
211
+
212
+ browserHistoryInitialMatch: {
213
+ type: BooleanConstructor;
214
+ default: boolean;
215
+ },
216
+
217
+ browserHistoryStoreHistory: {
218
+ type: BooleanConstructor;
219
+ default: undefined;
220
+ },
221
+
222
+ animate: {
223
+ type: BooleanConstructor;
224
+ default: undefined;
225
+ },
226
+
227
+ iosDynamicNavbar: {
228
+ type: BooleanConstructor;
229
+ default: undefined;
230
+ },
231
+
232
+ iosAnimateNavbarBackIcon: {
233
+ type: BooleanConstructor;
234
+ default: undefined;
235
+ },
236
+
237
+ passRouteQueryToRequest: {
238
+ type: BooleanConstructor;
239
+ default: undefined;
240
+ },
241
+
242
+ passRouteParamsToRequest: {
243
+ type: BooleanConstructor;
244
+ default: undefined;
245
+ },
246
+
247
+ unloadTabContent: {
248
+ type: any;
249
+ default: undefined;
250
+ },
251
+
252
+ init: {
253
+ type: BooleanConstructor;
254
+ default: boolean;
255
+ },
256
+
257
+ color: {
258
+ type: StringConstructor;
259
+ },
260
+
261
+ colorTheme: {
262
+ type: StringConstructor;
263
+ },
264
+
265
+ textColor: {
266
+ type: StringConstructor;
267
+ },
268
+
269
+ bgColor: {
270
+ type: StringConstructor;
271
+ },
272
+
273
+ borderColor: {
274
+ type: StringConstructor;
275
+ },
276
+
277
+ rippleColor: {
278
+ type: StringConstructor;
279
+ },
280
+
281
+ dark: {
282
+ type: BooleanConstructor;
283
+ }
284
+ },
285
+ () => JSX.Element,
286
+ unknown,
287
+ {},
288
+ {},
289
+ ComponentOptionsMixin,
290
+ ComponentOptionsMixin,
291
+ ("view:init" | "view:resize" | "swipeback:move" | "swipeback:beforechange" | "swipeback:afterchange" | "swipeback:beforereset" | "swipeback:afterreset" | "tab:hide" | "tab:show")[],
292
+ "view:init" | "view:resize" | "swipeback:move" | "swipeback:beforechange" | "swipeback:afterchange" | "swipeback:beforereset" | "swipeback:afterreset" | "tab:hide" | "tab:show"
293
+ >;
294
+
295
+ export default View;
296
+
@@ -0,0 +1,373 @@
1
+ import { computed, ref, onMounted, onBeforeUnmount, onUpdated, toRaw, h } from 'vue';
2
+ import { classNames, noUndefinedProps, getRouterId } from '../shared/utils.js';
3
+ import { colorClasses, colorProps } from '../shared/mixins.js';
4
+ import { f7ready, f7routers, f7, f7events } from '../shared/f7.js';
5
+ import { useTab } from '../shared/use-tab.js';
6
+ import { getRouterInitialComponent } from '../shared/get-router-initial-component.js';
7
+ export default {
8
+ name: 'f7-view',
9
+ props: {
10
+ tab: Boolean,
11
+ tabActive: Boolean,
12
+ name: String,
13
+ initRouterOnTabShow: {
14
+ type: Boolean,
15
+ default: undefined
16
+ },
17
+ router: {
18
+ type: Boolean,
19
+ default: true
20
+ },
21
+ linksView: [Object, String],
22
+ url: String,
23
+ main: {
24
+ type: Boolean,
25
+ default: undefined
26
+ },
27
+ xhrCache: {
28
+ type: Boolean,
29
+ default: undefined
30
+ },
31
+ xhrCacheIgnore: Array,
32
+ xhrCacheIgnoreGetParameters: {
33
+ type: Boolean,
34
+ default: undefined
35
+ },
36
+ xhrCacheDuration: Number,
37
+ preloadPreviousPage: {
38
+ type: Boolean,
39
+ default: undefined
40
+ },
41
+ allowDuplicateUrls: {
42
+ type: Boolean,
43
+ default: undefined
44
+ },
45
+ reloadPages: {
46
+ type: Boolean,
47
+ default: undefined
48
+ },
49
+ reloadDetail: {
50
+ type: Boolean,
51
+ default: undefined
52
+ },
53
+ masterDetailResizable: {
54
+ type: Boolean,
55
+ default: undefined
56
+ },
57
+ masterDetailBreakpoint: Number,
58
+ removeElements: {
59
+ type: Boolean,
60
+ default: undefined
61
+ },
62
+ removeElementsWithTimeout: {
63
+ type: Boolean,
64
+ default: undefined
65
+ },
66
+ removeElementsTimeout: Number,
67
+ restoreScrollTopOnBack: {
68
+ type: Boolean,
69
+ default: undefined
70
+ },
71
+ loadInitialPage: {
72
+ type: Boolean,
73
+ default: undefined
74
+ },
75
+ // Swipe Back
76
+ iosSwipeBack: {
77
+ type: Boolean,
78
+ default: undefined
79
+ },
80
+ iosSwipeBackAnimateShadow: {
81
+ type: Boolean,
82
+ default: undefined
83
+ },
84
+ iosSwipeBackAnimateOpacity: {
85
+ type: Boolean,
86
+ default: undefined
87
+ },
88
+ iosSwipeBackActiveArea: Number,
89
+ iosSwipeBackThreshold: Number,
90
+ mdSwipeBack: {
91
+ type: Boolean,
92
+ default: undefined
93
+ },
94
+ mdSwipeBackAnimateShadow: {
95
+ type: Boolean,
96
+ default: undefined
97
+ },
98
+ mdSwipeBackAnimateOpacity: {
99
+ type: Boolean,
100
+ default: undefined
101
+ },
102
+ mdSwipeBackActiveArea: Number,
103
+ mdSwipeBackThreshold: Number,
104
+ // Push State
105
+ browserHistory: {
106
+ type: Boolean,
107
+ default: undefined
108
+ },
109
+ browserHistoryRoot: String,
110
+ browserHistoryAnimate: {
111
+ type: Boolean,
112
+ default: undefined
113
+ },
114
+ browserHistoryAnimateOnLoad: {
115
+ type: Boolean,
116
+ default: undefined
117
+ },
118
+ browserHistorySeparator: String,
119
+ browserHistoryOnLoad: {
120
+ type: Boolean,
121
+ default: undefined
122
+ },
123
+ browserHistoryInitialMatch: {
124
+ type: Boolean,
125
+ default: true
126
+ },
127
+ browserHistoryStoreHistory: {
128
+ type: Boolean,
129
+ default: undefined
130
+ },
131
+ // Animate Pages
132
+ animate: {
133
+ type: Boolean,
134
+ default: undefined
135
+ },
136
+ transition: String,
137
+ // iOS Dynamic Navbar
138
+ iosDynamicNavbar: {
139
+ type: Boolean,
140
+ default: undefined
141
+ },
142
+ // Animate iOS Navbar Back Icon
143
+ iosAnimateNavbarBackIcon: {
144
+ type: Boolean,
145
+ default: undefined
146
+ },
147
+ // MD Theme delay
148
+ materialPageLoadDelay: Number,
149
+ passRouteQueryToRequest: {
150
+ type: Boolean,
151
+ default: undefined
152
+ },
153
+ passRouteParamsToRequest: {
154
+ type: Boolean,
155
+ default: undefined
156
+ },
157
+ routes: Array,
158
+ routesAdd: Array,
159
+ // Routes hooks
160
+ routesBeforeEnter: [Function, Array],
161
+ routesBeforeLeave: [Function, Array],
162
+ unloadTabContent: {
163
+ type: Boolean,
164
+ default: undefined
165
+ },
166
+ init: {
167
+ type: Boolean,
168
+ default: true
169
+ },
170
+ ...colorProps
171
+ },
172
+ emits: ['view:init', 'view:resize', 'swipeback:move', 'swipeback:beforechange', 'swipeback:afterchange', 'swipeback:beforereset', 'swipeback:afterreset', 'tab:hide', 'tab:show'],
173
+ setup(props, _ref) {
174
+ let {
175
+ emit,
176
+ slots
177
+ } = _ref;
178
+ // const childrenArray = React.Children.toArray(children);
179
+ // const initialPageComponent = childrenArray.filter((c) => c.props && c.props.initialPage)[0];
180
+ // const restChildren = childrenArray.filter((c) => !c.props || !c.props.initialPage);
181
+ const initialPageComponent = null;
182
+ const shouldInitRouter = !(props.initRouterOnTabShow && props.tab && !props.tabActive);
183
+ let f7View = null;
184
+ const elRef = ref(null);
185
+ let routerData = null;
186
+ let initialPage;
187
+ let initialRoute;
188
+ const onViewInit = view => {
189
+ emit('view:init', view);
190
+ if (!props.init) {
191
+ routerData.instance = view;
192
+ f7View = routerData.instance;
193
+ }
194
+ };
195
+ const getViewParams = () => {
196
+ const routes = toRaw(props.routes || []);
197
+ const routesAdd = toRaw(props.routesAdd || []);
198
+ return noUndefinedProps({
199
+ ...props,
200
+ routes,
201
+ routesAdd
202
+ });
203
+ };
204
+ if (f7 && !f7View && props.init) {
205
+ const routerId = getRouterId();
206
+ f7View = f7.views.create(elRef.value, {
207
+ ...getViewParams(),
208
+ routerId,
209
+ init: false,
210
+ on: {
211
+ init: onViewInit
212
+ }
213
+ });
214
+ routerData = {
215
+ routerId,
216
+ instance: f7View
217
+ };
218
+ f7routers.views.push(routerData);
219
+ if (shouldInitRouter && f7View && f7View.router && (props.url || props.main)) {
220
+ const initialData = getRouterInitialComponent(f7View.router, initialPageComponent);
221
+ initialPage = initialData.initialPage;
222
+ initialRoute = initialData.initialRoute;
223
+ if (initialRoute && initialRoute.route && initialRoute.route.masterRoute) {
224
+ initialPage = undefined;
225
+ initialRoute = undefined;
226
+ }
227
+ }
228
+ }
229
+ const pages = ref(initialPage ? [initialPage] : []);
230
+ const setPages = newPages => {
231
+ newPages.forEach(page => {
232
+ // eslint-disable-next-line
233
+ page.component = toRaw(page.component);
234
+ });
235
+ pages.value = newPages;
236
+ };
237
+ const onResize = (view, width) => {
238
+ emit('view:resize', width);
239
+ };
240
+ const onSwipeBackMove = data => {
241
+ const swipeBackData = data;
242
+ emit('swipeback:move', swipeBackData);
243
+ };
244
+ const onSwipeBackBeforeChange = data => {
245
+ const swipeBackData = data;
246
+ emit('swipeback:beforechange', swipeBackData);
247
+ };
248
+ const onSwipeBackAfterChange = data => {
249
+ const swipeBackData = data;
250
+ emit('swipeback:afterchange', swipeBackData);
251
+ };
252
+ const onSwipeBackBeforeReset = data => {
253
+ const swipeBackData = data;
254
+ emit('swipeback:beforereset', swipeBackData);
255
+ };
256
+ const onSwipeBackAfterReset = data => {
257
+ const swipeBackData = data;
258
+ emit('swipeback:afterreset', swipeBackData);
259
+ };
260
+ onMounted(() => {
261
+ f7ready(() => {
262
+ if (f7View) {
263
+ routerData.el = elRef.value;
264
+ routerData.pages = pages.value;
265
+ routerData.setPages = newPages => {
266
+ setPages([...newPages]);
267
+ };
268
+ if (initialPage && initialPage.isAsync && !initialPage.initialComponent) {
269
+ initialPage.component().then(() => {
270
+ setTimeout(() => {
271
+ f7View.init(elRef.value);
272
+ if (initialPage) {
273
+ initialPage.el = f7View.router.currentPageEl;
274
+ if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
275
+ initialRoute.route.keepAliveData = {
276
+ pageEl: initialPage.el
277
+ };
278
+ }
279
+ }
280
+ }, 100);
281
+ });
282
+ } else {
283
+ f7View.init(elRef.value);
284
+ if (initialPage) {
285
+ initialPage.el = f7View.router.currentPageEl;
286
+ if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
287
+ initialRoute.route.keepAliveData = {
288
+ pageEl: initialPage.el
289
+ };
290
+ }
291
+ }
292
+ }
293
+ } else {
294
+ const routerId = getRouterId();
295
+ routerData = {
296
+ el: elRef.value,
297
+ routerId,
298
+ pages: pages.value,
299
+ instance: f7View,
300
+ setPages(newPages) {
301
+ setPages([...newPages]);
302
+ }
303
+ };
304
+ f7routers.views.push(routerData);
305
+ routerData.instance = f7.views.create(elRef.value, {
306
+ routerId,
307
+ ...getViewParams(),
308
+ on: {
309
+ init: onViewInit
310
+ }
311
+ });
312
+ f7View = routerData.instance;
313
+ }
314
+ if (!props.init) return;
315
+ f7View.on('resize', onResize);
316
+ f7View.on('swipebackMove', onSwipeBackMove);
317
+ f7View.on('swipebackBeforeChange', onSwipeBackBeforeChange);
318
+ f7View.on('swipebackAfterChange', onSwipeBackAfterChange);
319
+ f7View.on('swipebackBeforeReset', onSwipeBackBeforeReset);
320
+ f7View.on('swipebackAfterReset', onSwipeBackAfterReset);
321
+ });
322
+ });
323
+ onBeforeUnmount(() => {
324
+ if (f7View) {
325
+ f7View.off('resize', onResize);
326
+ f7View.off('swipebackMove', onSwipeBackMove);
327
+ f7View.off('swipebackBeforeChange', onSwipeBackBeforeChange);
328
+ f7View.off('swipebackAfterChange', onSwipeBackAfterChange);
329
+ f7View.off('swipebackBeforeReset', onSwipeBackBeforeReset);
330
+ f7View.off('swipebackAfterReset', onSwipeBackAfterReset);
331
+ if (f7View.destroy) f7View.destroy();
332
+ f7View = null;
333
+ }
334
+ f7routers.views.splice(f7routers.views.indexOf(routerData), 1);
335
+ routerData = null;
336
+ });
337
+ onUpdated(() => {
338
+ if (!routerData || !f7) return;
339
+ f7events.emit('viewRouterDidUpdate', routerData);
340
+ });
341
+ useTab(elRef, emit);
342
+ const classes = computed(() => classNames('view', {
343
+ 'view-main': props.main,
344
+ 'tab-active': props.tabActive,
345
+ tab: props.tab
346
+ }, colorClasses(props)));
347
+ const getComponent = page => toRaw(page.component);
348
+ const getProps = page => {
349
+ const {
350
+ component: pageComponent,
351
+ props: pageProps
352
+ } = page;
353
+ let keys = [];
354
+ const passProps = {};
355
+ if (pageComponent && pageComponent.props) {
356
+ if (Array.isArray(pageComponent.props)) keys = pageComponent.props.filter(prop => typeof prop === 'string');else keys = Object.keys(pageComponent.props);
357
+ }
358
+ keys.forEach(key => {
359
+ if (key in pageProps) passProps[key] = pageProps[key];
360
+ });
361
+ return passProps;
362
+ };
363
+ return () => {
364
+ return h('div', {
365
+ ref: elRef,
366
+ class: classes.value
367
+ }, [slots.default && slots.default(), ...pages.value.map(page => h(getComponent(page), {
368
+ key: page.id,
369
+ ...getProps(page)
370
+ }))]);
371
+ };
372
+ }
373
+ };
@@ -0,0 +1,50 @@
1
+
2
+ import { ComponentOptionsMixin, DefineComponent, PropType } from 'vue';
3
+
4
+
5
+ declare const Views: DefineComponent<
6
+ {
7
+
8
+ tabs: {
9
+ type: BooleanConstructor;
10
+ },
11
+
12
+ color: {
13
+ type: StringConstructor;
14
+ },
15
+
16
+ colorTheme: {
17
+ type: StringConstructor;
18
+ },
19
+
20
+ textColor: {
21
+ type: StringConstructor;
22
+ },
23
+
24
+ bgColor: {
25
+ type: StringConstructor;
26
+ },
27
+
28
+ borderColor: {
29
+ type: StringConstructor;
30
+ },
31
+
32
+ rippleColor: {
33
+ type: StringConstructor;
34
+ },
35
+
36
+ dark: {
37
+ type: BooleanConstructor;
38
+ }
39
+ },
40
+ () => JSX.Element,
41
+ unknown,
42
+ {},
43
+ {},
44
+ ComponentOptionsMixin,
45
+ ComponentOptionsMixin,
46
+
47
+ >;
48
+
49
+ export default Views;
50
+