@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,203 @@
1
+ /* eslint no-underscore-dangle: "off" */
2
+ import { f7events, f7routers } from './f7.js';
3
+ import { extend, getComponentId } from './utils.js';
4
+ import { routerOpenIn } from './router-open-in.js';
5
+ const getChildrenArray = el => {
6
+ const arr = [];
7
+ for (let i = 0; i < el.children.length; i += 1) {
8
+ arr.push(el.children[i]);
9
+ }
10
+ return arr;
11
+ };
12
+ const hasSameChildren = (childrenBefore, childrenAfter) => {
13
+ if (childrenBefore.length !== childrenAfter.length) return false;
14
+ const set = new Set([...childrenBefore, ...childrenAfter]);
15
+ if (set.size === childrenBefore.length) return true;
16
+ return false;
17
+ };
18
+ export default {
19
+ proto: {
20
+ openIn(router, navigateUrl, options) {
21
+ return routerOpenIn(router, navigateUrl, options);
22
+ },
23
+ pageComponentLoader(_ref) {
24
+ let {
25
+ routerEl,
26
+ component,
27
+ options,
28
+ resolve,
29
+ reject
30
+ } = _ref;
31
+ const router = this;
32
+ const routerId = router.id;
33
+ const el = routerEl;
34
+ let viewRouter;
35
+ f7routers.views.forEach(data => {
36
+ if (data.el && data.el === routerEl || data.routerId && data.routerId === routerId) {
37
+ viewRouter = data;
38
+ }
39
+ });
40
+ if (!viewRouter) {
41
+ reject();
42
+ return;
43
+ }
44
+ const pageData = {
45
+ component,
46
+ id: getComponentId(),
47
+ props: extend({
48
+ f7route: options.route,
49
+ f7router: router
50
+ }, options.route.params, options.props || {})
51
+ };
52
+ let resolved;
53
+ const childrenBefore = getChildrenArray(el);
54
+ function onDidUpdate(componentRouterData) {
55
+ if (componentRouterData !== viewRouter || resolved) return;
56
+ const childrenAfter = getChildrenArray(el);
57
+ if (hasSameChildren(childrenBefore, childrenAfter)) return;
58
+ f7events.off('viewRouterDidUpdate', onDidUpdate);
59
+ const pageEl = el.children[el.children.length - 1];
60
+ pageData.el = pageEl;
61
+ resolve(pageEl);
62
+ resolved = true;
63
+ }
64
+ f7events.on('viewRouterDidUpdate', onDidUpdate);
65
+ viewRouter.pages.push(pageData);
66
+ viewRouter.setPages(viewRouter.pages);
67
+ },
68
+ removePage($pageEl) {
69
+ if (!$pageEl) return;
70
+ const router = this;
71
+ let f7Page;
72
+ if ('length' in $pageEl && $pageEl[0]) f7Page = $pageEl[0].f7Page;else f7Page = $pageEl.f7Page;
73
+ if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {
74
+ router.app.$($pageEl).remove();
75
+ return;
76
+ }
77
+ let viewRouter;
78
+ f7routers.views.forEach(data => {
79
+ if (data.el && data.el === router.el) {
80
+ viewRouter = data;
81
+ }
82
+ });
83
+ let pageEl;
84
+ if ('length' in $pageEl) {
85
+ // Dom7
86
+ if ($pageEl.length === 0) return;
87
+ pageEl = $pageEl[0];
88
+ } else {
89
+ pageEl = $pageEl;
90
+ }
91
+ if (!pageEl) return;
92
+ let pageComponentFound;
93
+ viewRouter.pages.forEach((page, index) => {
94
+ if (page.el === pageEl) {
95
+ pageComponentFound = true;
96
+ viewRouter.pages.splice(index, 1);
97
+ viewRouter.setPages(viewRouter.pages);
98
+ }
99
+ });
100
+ if (!pageComponentFound) {
101
+ pageEl.parentNode.removeChild(pageEl);
102
+ }
103
+ },
104
+ tabComponentLoader(_temp) {
105
+ let {
106
+ tabEl,
107
+ component,
108
+ options,
109
+ resolve,
110
+ reject
111
+ } = _temp === void 0 ? {} : _temp;
112
+ const router = this;
113
+ if (!tabEl) reject();
114
+ let tabRouter;
115
+ f7routers.tabs.forEach(tabData => {
116
+ if (tabData.el && tabData.el === tabEl) {
117
+ tabRouter = tabData;
118
+ }
119
+ });
120
+ if (!tabRouter) {
121
+ reject();
122
+ return;
123
+ }
124
+ const id = getComponentId();
125
+ const tabContent = {
126
+ id,
127
+ component,
128
+ props: extend({
129
+ f7route: options.route,
130
+ f7router: router
131
+ }, options.route.route && options.route.route.tab && options.route.route.tab.options && options.route.route.tab.options.props || {}, options.route.params, options.props || {})
132
+ };
133
+ let resolved;
134
+ function onDidUpdate(componentRouterData) {
135
+ if (componentRouterData !== tabRouter || resolved) return;
136
+ f7events.off('tabRouterDidUpdate', onDidUpdate);
137
+ const tabContentEl = tabEl.children[0];
138
+ resolve(tabContentEl);
139
+ resolved = true;
140
+ }
141
+ f7events.on('tabRouterDidUpdate', onDidUpdate);
142
+ tabRouter.setTabContent(tabContent);
143
+ },
144
+ removeTabContent(tabEl) {
145
+ if (!tabEl) return;
146
+ let tabRouter;
147
+ f7routers.tabs.forEach(tabData => {
148
+ if (tabData.el && tabData.el === tabEl) {
149
+ tabRouter = tabData;
150
+ }
151
+ });
152
+ if (!tabRouter) {
153
+ tabEl.innerHTML = ''; // eslint-disable-line
154
+ return;
155
+ }
156
+ tabRouter.setTabContent(null);
157
+ },
158
+ modalComponentLoader(_temp2) {
159
+ let {
160
+ component,
161
+ options,
162
+ resolve,
163
+ reject
164
+ } = _temp2 === void 0 ? {} : _temp2;
165
+ const router = this;
166
+ const modalsRouter = f7routers.modals;
167
+ if (!modalsRouter) {
168
+ reject();
169
+ return;
170
+ }
171
+ const modalData = {
172
+ component,
173
+ id: getComponentId(),
174
+ props: extend({
175
+ f7route: options.route,
176
+ f7router: router
177
+ }, options.route.params, options.props || {})
178
+ };
179
+ let resolved;
180
+ function onDidUpdate() {
181
+ if (resolved) return;
182
+ f7events.off('modalsRouterDidUpdate', onDidUpdate);
183
+ const modalEl = modalsRouter.el.children[modalsRouter.el.children.length - 1];
184
+ modalData.el = modalEl;
185
+ resolve(modalEl);
186
+ resolved = true;
187
+ }
188
+ f7events.on('modalsRouterDidUpdate', onDidUpdate);
189
+ modalsRouter.modals.push(modalData);
190
+ modalsRouter.setModals(modalsRouter.modals);
191
+ },
192
+ removeModal(modalEl) {
193
+ const modalsRouter = f7routers.modals;
194
+ if (!modalsRouter) return;
195
+ let modalDataToRemove;
196
+ modalsRouter.modals.forEach(modalData => {
197
+ if (modalData.el === modalEl) modalDataToRemove = modalData;
198
+ });
199
+ modalsRouter.modals.splice(modalsRouter.modals.indexOf(modalDataToRemove), 1);
200
+ modalsRouter.setModals(modalsRouter.modals);
201
+ }
202
+ }
203
+ };
package/shared/f7.js ADDED
@@ -0,0 +1,71 @@
1
+ /* eslint-disable import/no-mutable-exports */
2
+ import Framework7 from '@xenknight/framework7/lite';
3
+ import { extend, unsetRouterIds } from './utils.js';
4
+ let f7;
5
+ let f7events;
6
+ const theme = {};
7
+ const f7routers = {
8
+ views: [],
9
+ tabs: [],
10
+ modals: null
11
+ };
12
+ const setTheme = () => {
13
+ if (!f7) return;
14
+ theme.ios = f7.theme === 'ios';
15
+ theme.md = f7.theme === 'md';
16
+ };
17
+ const cleanup = () => {
18
+ unsetRouterIds();
19
+ delete theme.ios;
20
+ delete theme.md;
21
+ f7routers.views = [];
22
+ f7routers.tabs = [];
23
+ f7routers.modals = null;
24
+ };
25
+ const f7initEvents = () => {
26
+ f7events = new Framework7.Events();
27
+ };
28
+ const f7init = function (rootEl, params, init) {
29
+ if (params === void 0) {
30
+ params = {};
31
+ }
32
+ if (init === void 0) {
33
+ init = true;
34
+ }
35
+ const f7Params = extend({}, params, {
36
+ el: rootEl,
37
+ init
38
+ });
39
+ if (typeof params.store !== 'undefined') f7Params.store = params.store;
40
+ if (!f7Params.routes) f7Params.routes = [];
41
+ if (f7Params.userAgent && (f7Params.theme === 'auto' || !f7Params.theme)) {
42
+ const device = Framework7.getDevice({
43
+ userAgent: f7Params.userAgent
44
+ }, true);
45
+ theme.ios = !!device.ios;
46
+ theme.md = !theme.ios;
47
+ }
48
+ // eslint-disable-next-line
49
+ if (f7 && typeof window !== 'undefined') return;
50
+ // eslint-disable-next-line
51
+ if (typeof window === 'undefined') cleanup();
52
+ const instance = new Framework7(f7Params);
53
+ f7 = instance;
54
+ setTheme();
55
+ if (instance.initialized) {
56
+ f7 = instance;
57
+ f7events.emit('ready', f7);
58
+ } else {
59
+ instance.on('init', () => {
60
+ f7 = instance;
61
+ f7events.emit('ready', f7);
62
+ });
63
+ }
64
+ };
65
+ const f7ready = callback => {
66
+ if (!callback) return;
67
+ if (f7 && f7.initialized) callback(f7);else {
68
+ f7events.once('ready', callback);
69
+ }
70
+ };
71
+ export { f7, theme, f7ready, f7events, f7init, f7routers, f7initEvents, setTheme };
@@ -0,0 +1,35 @@
1
+ import { getComponentId } from './utils.js';
2
+ export const getRouterInitialComponent = (router, initialComponent) => {
3
+ let initialComponentData;
4
+ const {
5
+ initialUrl
6
+ } = router.getInitialUrl();
7
+ const initialRoute = router.findMatchingRoute(initialUrl);
8
+ let routeProps = {};
9
+ if (initialRoute && initialRoute.route && initialRoute.route.options) {
10
+ routeProps = initialRoute.route.options.props;
11
+ }
12
+ const isMasterRoute = route => {
13
+ if (route.master === true) return true;
14
+ if (typeof route.master === 'function') return route.master(router.app);
15
+ return false;
16
+ };
17
+ if (initialRoute && initialRoute.route && (initialRoute.route.component || initialRoute.route.asyncComponent) && !isMasterRoute(initialRoute.route)) {
18
+ initialComponentData = {
19
+ component: initialRoute.route.component || initialRoute.route.asyncComponent,
20
+ initialComponent,
21
+ id: getComponentId(),
22
+ isAsync: !!initialRoute.route.asyncComponent,
23
+ props: {
24
+ f7route: initialRoute,
25
+ f7router: router,
26
+ ...routeProps,
27
+ ...initialRoute.params
28
+ }
29
+ };
30
+ }
31
+ return {
32
+ initialPage: initialComponentData,
33
+ initialRoute
34
+ };
35
+ };
@@ -0,0 +1,233 @@
1
+ import { isStringProp } from './utils.js';
2
+ export function colorClasses(props) {
3
+ const {
4
+ color,
5
+ textColor,
6
+ bgColor,
7
+ borderColor,
8
+ rippleColor,
9
+ dark
10
+ } = props;
11
+ return {
12
+ dark,
13
+ [`color-${color}`]: color,
14
+ [`text-color-${textColor}`]: textColor,
15
+ [`bg-color-${bgColor}`]: bgColor,
16
+ [`border-color-${borderColor}`]: borderColor,
17
+ [`ripple-color-${rippleColor}`]: rippleColor
18
+ };
19
+ }
20
+ export const colorProps = {
21
+ color: String,
22
+ colorTheme: String,
23
+ textColor: String,
24
+ bgColor: String,
25
+ borderColor: String,
26
+ rippleColor: String,
27
+ dark: Boolean
28
+ };
29
+ export const iconProps = {
30
+ icon: String,
31
+ iconMaterial: String,
32
+ iconF7: String,
33
+ iconIos: String,
34
+ iconMd: String,
35
+ iconColor: String,
36
+ iconSize: [String, Number],
37
+ iconBadge: [String, Number],
38
+ iconBadgeColor: String
39
+ };
40
+ export const routerProps = {
41
+ back: Boolean,
42
+ external: Boolean,
43
+ force: Boolean,
44
+ animate: {
45
+ type: Boolean,
46
+ default: undefined
47
+ },
48
+ ignoreCache: Boolean,
49
+ reloadCurrent: Boolean,
50
+ reloadAll: Boolean,
51
+ reloadPrevious: Boolean,
52
+ reloadDetail: {
53
+ type: Boolean,
54
+ default: undefined
55
+ },
56
+ routeTabId: String,
57
+ view: String,
58
+ routeProps: Object,
59
+ preventRouter: Boolean,
60
+ transition: String,
61
+ openIn: String
62
+ };
63
+ export function routerAttrs(props) {
64
+ const {
65
+ force,
66
+ reloadCurrent,
67
+ reloadPrevious,
68
+ reloadAll,
69
+ reloadDetail,
70
+ animate,
71
+ ignoreCache,
72
+ routeTabId,
73
+ view,
74
+ transition,
75
+ openIn
76
+ } = props;
77
+ let dataAnimate;
78
+ if ('animate' in props && typeof animate !== 'undefined') {
79
+ dataAnimate = animate.toString();
80
+ }
81
+ let dataReloadDetail;
82
+ if ('reloadDetail' in props && typeof reloadDetail !== 'undefined') {
83
+ dataReloadDetail = reloadDetail.toString();
84
+ }
85
+ return {
86
+ 'data-force': force || undefined,
87
+ 'data-reload-current': reloadCurrent || undefined,
88
+ 'data-reload-all': reloadAll || undefined,
89
+ 'data-reload-previous': reloadPrevious || undefined,
90
+ 'data-reload-detail': dataReloadDetail,
91
+ 'data-animate': dataAnimate,
92
+ 'data-ignore-cache': ignoreCache || undefined,
93
+ 'data-route-tab-id': routeTabId || undefined,
94
+ 'data-view': isStringProp(view) ? view : undefined,
95
+ 'data-transition': isStringProp(transition) ? transition : undefined,
96
+ 'data-open-in': isStringProp(openIn) ? openIn : undefined
97
+ };
98
+ }
99
+ export function routerClasses(props) {
100
+ const {
101
+ back,
102
+ linkBack,
103
+ external,
104
+ preventRouter
105
+ } = props;
106
+ return {
107
+ back: back || linkBack,
108
+ external,
109
+ 'prevent-router': preventRouter
110
+ };
111
+ }
112
+ export const actionsProps = {
113
+ searchbarEnable: [Boolean, String],
114
+ searchbarDisable: [Boolean, String],
115
+ searchbarClear: [Boolean, String],
116
+ searchbarToggle: [Boolean, String],
117
+ // Panel
118
+ panelOpen: [Boolean, String],
119
+ panelClose: [Boolean, String],
120
+ panelToggle: [Boolean, String],
121
+ // Popup
122
+ popupOpen: [Boolean, String],
123
+ popupClose: [Boolean, String],
124
+ // Actions
125
+ actionsOpen: [Boolean, String],
126
+ actionsClose: [Boolean, String],
127
+ // Popover
128
+ popoverOpen: [Boolean, String],
129
+ popoverClose: [Boolean, String],
130
+ // Login Screen
131
+ loginScreenOpen: [Boolean, String],
132
+ loginScreenClose: [Boolean, String],
133
+ // Picker
134
+ sheetOpen: [Boolean, String],
135
+ sheetClose: [Boolean, String],
136
+ // Sortable
137
+ sortableEnable: [Boolean, String],
138
+ sortableDisable: [Boolean, String],
139
+ sortableToggle: [Boolean, String],
140
+ // Card
141
+ cardOpen: [Boolean, String],
142
+ cardPreventOpen: [Boolean, String],
143
+ cardClose: [Boolean, String]
144
+ };
145
+ export function actionsAttrs(props) {
146
+ const {
147
+ searchbarEnable,
148
+ searchbarDisable,
149
+ searchbarClear,
150
+ searchbarToggle,
151
+ panelOpen,
152
+ panelClose,
153
+ panelToggle,
154
+ popupOpen,
155
+ popupClose,
156
+ actionsOpen,
157
+ actionsClose,
158
+ popoverOpen,
159
+ popoverClose,
160
+ loginScreenOpen,
161
+ loginScreenClose,
162
+ sheetOpen,
163
+ sheetClose,
164
+ sortableEnable,
165
+ sortableDisable,
166
+ sortableToggle,
167
+ cardOpen,
168
+ cardClose
169
+ } = props;
170
+ return {
171
+ 'data-searchbar': isStringProp(searchbarEnable) && searchbarEnable || isStringProp(searchbarDisable) && searchbarDisable || isStringProp(searchbarClear) && searchbarClear || isStringProp(searchbarToggle) && searchbarToggle || undefined,
172
+ 'data-panel': isStringProp(panelOpen) && panelOpen || isStringProp(panelClose) && panelClose || isStringProp(panelToggle) && panelToggle || undefined,
173
+ 'data-popup': isStringProp(popupOpen) && popupOpen || isStringProp(popupClose) && popupClose || undefined,
174
+ 'data-actions': isStringProp(actionsOpen) && actionsOpen || isStringProp(actionsClose) && actionsClose || undefined,
175
+ 'data-popover': isStringProp(popoverOpen) && popoverOpen || isStringProp(popoverClose) && popoverClose || undefined,
176
+ 'data-sheet': isStringProp(sheetOpen) && sheetOpen || isStringProp(sheetClose) && sheetClose || undefined,
177
+ 'data-login-screen': isStringProp(loginScreenOpen) && loginScreenOpen || isStringProp(loginScreenClose) && loginScreenClose || undefined,
178
+ 'data-sortable': isStringProp(sortableEnable) && sortableEnable || isStringProp(sortableDisable) && sortableDisable || isStringProp(sortableToggle) && sortableToggle || undefined,
179
+ 'data-card': isStringProp(cardOpen) && cardOpen || isStringProp(cardClose) && cardClose || undefined
180
+ };
181
+ }
182
+ export function actionsClasses(props) {
183
+ const {
184
+ searchbarEnable,
185
+ searchbarDisable,
186
+ searchbarClear,
187
+ searchbarToggle,
188
+ panelOpen,
189
+ panelClose,
190
+ panelToggle,
191
+ popupOpen,
192
+ popupClose,
193
+ actionsClose,
194
+ actionsOpen,
195
+ popoverOpen,
196
+ popoverClose,
197
+ loginScreenOpen,
198
+ loginScreenClose,
199
+ sheetOpen,
200
+ sheetClose,
201
+ sortableEnable,
202
+ sortableDisable,
203
+ sortableToggle,
204
+ cardOpen,
205
+ cardPreventOpen,
206
+ cardClose
207
+ } = props;
208
+ return {
209
+ 'searchbar-enable': searchbarEnable || searchbarEnable === '',
210
+ 'searchbar-disable': searchbarDisable || searchbarDisable === '',
211
+ 'searchbar-clear': searchbarClear || searchbarClear === '',
212
+ 'searchbar-toggle': searchbarToggle || searchbarToggle === '',
213
+ 'panel-close': panelClose || panelClose === '',
214
+ 'panel-open': panelOpen || panelOpen === '',
215
+ 'panel-toggle': panelToggle || panelToggle === '',
216
+ 'popup-close': popupClose || popupClose === '',
217
+ 'popup-open': popupOpen || popupOpen === '',
218
+ 'actions-close': actionsClose || actionsClose === '',
219
+ 'actions-open': actionsOpen || actionsOpen === '',
220
+ 'popover-close': popoverClose || popoverClose === '',
221
+ 'popover-open': popoverOpen || popoverOpen === '',
222
+ 'sheet-close': sheetClose || sheetClose === '',
223
+ 'sheet-open': sheetOpen || sheetOpen === '',
224
+ 'login-screen-close': loginScreenClose || loginScreenClose === '',
225
+ 'login-screen-open': loginScreenOpen || loginScreenOpen === '',
226
+ 'sortable-enable': sortableEnable || sortableEnable === '',
227
+ 'sortable-disable': sortableDisable || sortableDisable === '',
228
+ 'sortable-toggle': sortableToggle || sortableToggle === '',
229
+ 'card-close': cardClose || cardClose === '',
230
+ 'card-open': cardOpen || cardOpen === '',
231
+ 'card-prevent-open': cardPreventOpen || cardPreventOpen === ''
232
+ };
233
+ }
@@ -0,0 +1,10 @@
1
+ export const modalStateClasses = function (_temp) {
2
+ let {
3
+ isOpened,
4
+ isClosing
5
+ } = _temp === void 0 ? {} : _temp;
6
+ return {
7
+ 'modal-in': isOpened && !isClosing,
8
+ 'modal-out': isClosing
9
+ };
10
+ };
@@ -0,0 +1,37 @@
1
+ import Framework7 from '@xenknight/framework7/lite';
2
+ import componentsRouter from './components-router.js';
3
+ import { f7, f7ready, theme, f7initEvents, setTheme } from './f7.js';
4
+ const Framework7Vue = {
5
+ name: 'vuePlugin',
6
+ installed: false,
7
+ install(params) {
8
+ if (params === void 0) {
9
+ params = {};
10
+ }
11
+ if (Framework7Vue.installed) return;
12
+ Framework7Vue.installed = true;
13
+ f7initEvents();
14
+ const {
15
+ theme: paramsTheme,
16
+ userAgent
17
+ } = params;
18
+ if (paramsTheme === 'md') theme.md = true;
19
+ if (paramsTheme === 'ios') theme.ios = true;
20
+
21
+ // eslint-disable-next-line
22
+ const needThemeCalc = typeof window === 'undefined' ? !!userAgent : true;
23
+ if (needThemeCalc && (!paramsTheme || paramsTheme === 'auto')) {
24
+ const device = Framework7.getDevice({
25
+ userAgent
26
+ }, true);
27
+ theme.ios = !!device.ios;
28
+ theme.md = !theme.ios;
29
+ }
30
+ f7ready(() => {
31
+ setTheme();
32
+ });
33
+ Framework7.Router.use(componentsRouter);
34
+ }
35
+ };
36
+ export { f7ready, f7, theme };
37
+ export default Framework7Vue;
@@ -0,0 +1,105 @@
1
+ import { h } from 'vue';
2
+ import Popup from '../components/popup.js';
3
+ import View from '../components/view.js';
4
+ import LoginScreen from '../components/login-screen.js';
5
+ import Sheet from '../components/sheet.js';
6
+ import Popover from '../components/popover.js';
7
+ import Panel from '../components/panel.js';
8
+ export const routerOpenIn = (router, url, options) => {
9
+ const navigateOptions = {
10
+ url,
11
+ route: {
12
+ path: url,
13
+ options: {
14
+ ...options,
15
+ openIn: undefined
16
+ }
17
+ }
18
+ };
19
+ const params = {
20
+ ...options
21
+ };
22
+ if (options.openIn === 'popup') {
23
+ params.component = {
24
+ setup() {
25
+ return () => h(Popup, {
26
+ class: 'popup-router-open-in',
27
+ 'data-url': url
28
+ }, [h(View, {
29
+ linksView: router.view.selector,
30
+ url,
31
+ ignoreOpenIn: true
32
+ })]);
33
+ }
34
+ };
35
+ navigateOptions.route.popup = params;
36
+ }
37
+ if (options.openIn === 'loginScreen') {
38
+ params.component = {
39
+ setup() {
40
+ return () => h(LoginScreen, {
41
+ class: 'login-screen-router-open-in',
42
+ 'data-url': url
43
+ }, [h(View, {
44
+ linksView: router.view.selector,
45
+ url,
46
+ ignoreOpenIn: true
47
+ })]);
48
+ }
49
+ };
50
+ navigateOptions.route.loginScreen = params;
51
+ }
52
+ if (options.openIn === 'sheet') {
53
+ params.component = {
54
+ setup() {
55
+ return () => h(Sheet, {
56
+ class: 'sheet-modal-router-open-in',
57
+ 'data-url': url
58
+ }, [h(View, {
59
+ linksView: router.view.selector,
60
+ url,
61
+ ignoreOpenIn: true
62
+ })]);
63
+ }
64
+ };
65
+ navigateOptions.route.sheet = params;
66
+ }
67
+ if (options.openIn === 'popover') {
68
+ params.targetEl = options.clickedEl || options.targetEl;
69
+ params.component = {
70
+ setup() {
71
+ return () => h(Popover, {
72
+ class: 'popover-router-open-in',
73
+ 'data-url': url,
74
+ targetEl: options.clickedEl || options.targetEl
75
+ }, [h(View, {
76
+ linksView: router.view.selector,
77
+ url,
78
+ ignoreOpenIn: true
79
+ })]);
80
+ }
81
+ };
82
+ navigateOptions.route.popover = params;
83
+ }
84
+ if (options.openIn.indexOf('panel') >= 0) {
85
+ const parts = options.openIn.split(':');
86
+ const side = parts[1] || 'left';
87
+ const effect = parts[2] || 'cover';
88
+ params.component = {
89
+ setup() {
90
+ return () => h(Panel, {
91
+ class: 'panel-router-open-in',
92
+ 'data-url': url,
93
+ side,
94
+ effect
95
+ }, [h(View, {
96
+ linksView: router.view.selector,
97
+ url,
98
+ ignoreOpenIn: true
99
+ })]);
100
+ }
101
+ };
102
+ navigateOptions.route.panel = params;
103
+ }
104
+ return router.navigate(navigateOptions);
105
+ };