framework7-svelte 8.3.4 → 9.0.0

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 (194) hide show
  1. package/components/accordion-content.d.ts +11 -5
  2. package/components/accordion-content.svelte +8 -6
  3. package/components/accordion-item.d.ts +23 -11
  4. package/components/accordion-item.svelte +27 -25
  5. package/components/accordion-toggle.d.ts +11 -5
  6. package/components/accordion-toggle.svelte +8 -6
  7. package/components/accordion.d.ts +11 -5
  8. package/components/accordion.svelte +11 -10
  9. package/components/actions-button.d.ts +14 -6
  10. package/components/actions-button.svelte +21 -19
  11. package/components/actions-group.d.ts +11 -5
  12. package/components/actions-group.svelte +4 -7
  13. package/components/actions-label.d.ts +11 -5
  14. package/components/actions-label.svelte +13 -23
  15. package/components/actions.d.ts +31 -21
  16. package/components/actions.svelte +50 -54
  17. package/components/app.d.ts +11 -5
  18. package/components/app.svelte +6 -7
  19. package/components/area-chart.d.ts +13 -6
  20. package/components/area-chart.svelte +42 -46
  21. package/components/badge.d.ts +11 -5
  22. package/components/badge.svelte +10 -9
  23. package/components/block-footer.d.ts +11 -5
  24. package/components/block-footer.svelte +8 -6
  25. package/components/block-header.d.ts +11 -5
  26. package/components/block-header.svelte +8 -6
  27. package/components/block-title.d.ts +11 -5
  28. package/components/block-title.svelte +12 -10
  29. package/components/block.d.ts +11 -5
  30. package/components/block.svelte +76 -76
  31. package/components/breadcrumbs-collapsed.d.ts +12 -6
  32. package/components/breadcrumbs-collapsed.svelte +10 -15
  33. package/components/breadcrumbs-item.d.ts +12 -6
  34. package/components/breadcrumbs-item.svelte +9 -8
  35. package/components/breadcrumbs-separator.d.ts +10 -5
  36. package/components/breadcrumbs-separator.svelte +9 -5
  37. package/components/breadcrumbs.d.ts +11 -6
  38. package/components/breadcrumbs.svelte +8 -6
  39. package/components/button.d.ts +44 -37
  40. package/components/button.svelte +107 -103
  41. package/components/card-content.d.ts +11 -5
  42. package/components/card-content.svelte +11 -10
  43. package/components/card-footer.d.ts +11 -5
  44. package/components/card-footer.svelte +8 -6
  45. package/components/card-header.d.ts +11 -5
  46. package/components/card-header.svelte +8 -6
  47. package/components/card.d.ts +43 -31
  48. package/components/card.svelte +78 -67
  49. package/components/checkbox.d.ts +20 -13
  50. package/components/checkbox.svelte +32 -30
  51. package/components/chip.d.ts +22 -15
  52. package/components/chip.svelte +54 -60
  53. package/components/fab-backdrop.d.ts +10 -5
  54. package/components/fab-backdrop.svelte +5 -7
  55. package/components/fab-button.d.ts +17 -11
  56. package/components/fab-button.svelte +20 -29
  57. package/components/fab-buttons.d.ts +11 -5
  58. package/components/fab-buttons.svelte +5 -12
  59. package/components/fab.d.ts +22 -13
  60. package/components/fab.svelte +55 -51
  61. package/components/gauge.d.ts +24 -19
  62. package/components/gauge.svelte +25 -25
  63. package/components/icon.d.ts +19 -13
  64. package/components/icon.svelte +65 -63
  65. package/components/input.d.ts +78 -61
  66. package/components/input.svelte +171 -154
  67. package/components/link.d.ts +28 -21
  68. package/components/link.svelte +67 -65
  69. package/components/list-button.d.ts +22 -15
  70. package/components/list-button.svelte +56 -44
  71. package/components/list-group.d.ts +16 -10
  72. package/components/list-group.svelte +38 -34
  73. package/components/list-index.d.ts +20 -13
  74. package/components/list-index.svelte +23 -24
  75. package/components/list-input.d.ts +91 -64
  76. package/components/list-input.svelte +254 -205
  77. package/components/list-item.d.ts +98 -63
  78. package/components/list-item.svelte +412 -439
  79. package/components/list.d.ts +72 -54
  80. package/components/list.svelte +151 -147
  81. package/components/login-screen-title.d.ts +11 -5
  82. package/components/login-screen-title.svelte +4 -6
  83. package/components/login-screen.d.ts +20 -10
  84. package/components/login-screen.svelte +39 -42
  85. package/components/message.d.ts +48 -29
  86. package/components/message.svelte +123 -88
  87. package/components/messagebar-attachment.d.ts +17 -9
  88. package/components/messagebar-attachment.svelte +16 -18
  89. package/components/messagebar-attachments.d.ts +11 -5
  90. package/components/messagebar-attachments.svelte +6 -6
  91. package/components/messagebar-sheet-image.d.ts +19 -10
  92. package/components/messagebar-sheet-image.svelte +30 -22
  93. package/components/messagebar-sheet-item.d.ts +11 -5
  94. package/components/messagebar-sheet-item.svelte +4 -6
  95. package/components/messagebar-sheet.d.ts +11 -5
  96. package/components/messagebar-sheet.svelte +4 -6
  97. package/components/messagebar.d.ts +53 -31
  98. package/components/messagebar.svelte +100 -77
  99. package/components/messages-title.d.ts +11 -5
  100. package/components/messages-title.svelte +4 -6
  101. package/components/messages.d.ts +26 -20
  102. package/components/messages.svelte +32 -32
  103. package/components/nav-left.d.ts +19 -12
  104. package/components/nav-left.svelte +23 -39
  105. package/components/nav-right.d.ts +11 -6
  106. package/components/nav-right.svelte +4 -15
  107. package/components/nav-title-large.d.ts +11 -5
  108. package/components/nav-title-large.svelte +4 -6
  109. package/components/nav-title.d.ts +13 -8
  110. package/components/nav-title.svelte +25 -20
  111. package/components/navbar.d.ts +47 -28
  112. package/components/navbar.svelte +100 -111
  113. package/components/page-content.d.ts +41 -29
  114. package/components/page-content.svelte +58 -50
  115. package/components/page.d.ts +71 -46
  116. package/components/page.svelte +102 -82
  117. package/components/panel.d.ts +51 -35
  118. package/components/panel.svelte +94 -99
  119. package/components/photo-browser.d.ts +50 -41
  120. package/components/photo-browser.svelte +48 -47
  121. package/components/pie-chart.d.ts +13 -6
  122. package/components/pie-chart.svelte +29 -27
  123. package/components/popover.d.ts +28 -19
  124. package/components/popover.svelte +45 -48
  125. package/components/popup.d.ts +37 -23
  126. package/components/popup.svelte +68 -57
  127. package/components/preloader.d.ts +10 -5
  128. package/components/preloader.svelte +30 -31
  129. package/components/progressbar.d.ts +11 -6
  130. package/components/progressbar.svelte +13 -17
  131. package/components/radio.d.ts +19 -12
  132. package/components/radio.svelte +19 -23
  133. package/components/range.d.ts +35 -27
  134. package/components/range.svelte +47 -44
  135. package/components/routable-modals.d.ts +9 -4
  136. package/components/routable-modals.svelte +9 -8
  137. package/components/router-context-provider.d.ts +11 -6
  138. package/components/router-context-provider.svelte +2 -4
  139. package/components/searchbar.d.ts +60 -43
  140. package/components/searchbar.svelte +115 -104
  141. package/components/segmented.d.ts +21 -15
  142. package/components/segmented.svelte +38 -35
  143. package/components/sheet.d.ts +47 -30
  144. package/components/sheet.svelte +94 -76
  145. package/components/snippet-render.d.ts +24 -0
  146. package/components/snippet-render.svelte +9 -0
  147. package/components/stepper.d.ts +53 -43
  148. package/components/stepper.svelte +83 -79
  149. package/components/subnavbar.d.ts +13 -8
  150. package/components/subnavbar.svelte +12 -20
  151. package/components/swipeout-actions.d.ts +14 -8
  152. package/components/swipeout-actions.svelte +14 -13
  153. package/components/swipeout-button.d.ts +20 -13
  154. package/components/swipeout-button.svelte +31 -31
  155. package/components/tab.d.ts +14 -8
  156. package/components/tab.svelte +20 -28
  157. package/components/tabs.d.ts +15 -9
  158. package/components/tabs.svelte +27 -26
  159. package/components/text-editor.d.ts +44 -24
  160. package/components/text-editor.svelte +56 -41
  161. package/components/toggle.d.ts +22 -15
  162. package/components/toggle.svelte +33 -37
  163. package/components/toolbar-pane.d.ts +24 -0
  164. package/components/toolbar-pane.svelte +14 -0
  165. package/components/toolbar.d.ts +30 -20
  166. package/components/toolbar.svelte +61 -53
  167. package/components/treeview-item.d.ts +36 -17
  168. package/components/treeview-item.svelte +101 -81
  169. package/components/treeview.d.ts +11 -5
  170. package/components/treeview.svelte +4 -6
  171. package/components/use-icon.d.ts +9 -4
  172. package/components/use-icon.svelte +1 -1
  173. package/components/view.d.ts +76 -65
  174. package/components/view.svelte +66 -48
  175. package/components/views.d.ts +11 -5
  176. package/components/views.svelte +12 -15
  177. package/framework7-svelte.d.ts +3 -1
  178. package/framework7-svelte.js +6 -4
  179. package/package.json +2 -2
  180. package/shared/components-router.js +28 -25
  181. package/shared/f7.js +1 -7
  182. package/shared/mixins.js +5 -5
  183. package/shared/modal-state-classes.js +4 -5
  184. package/shared/plugin.js +1 -4
  185. package/shared/rest-props.js +1 -4
  186. package/shared/use-icon.js +2 -5
  187. package/shared/use-store.js +9 -9
  188. package/shared/use-tab.js +3 -3
  189. package/shared/use-tooltip.js +3 -4
  190. package/shared/utils.js +2 -8
  191. package/shared/get-reactive-context.js +0 -16
  192. package/shared/list-context.js +0 -10
  193. package/shared/router-context.js +0 -8
  194. package/shared/set-reactive-context.js +0 -26
@@ -1,39 +1,46 @@
1
1
  <script>
2
- import { onMount, onDestroy, afterUpdate, createEventDispatcher, tick } from 'svelte';
2
+ import { onMount, onDestroy, tick } from 'svelte';
3
3
  import { app, f7ready } from '../shared/f7.js';
4
4
  import { colorClasses } from '../shared/mixins.js';
5
- import { classNames, noUndefinedProps, createEmitter, getRouterId } from '../shared/utils.js';
5
+ import { classNames, noUndefinedProps, getRouterId } from '../shared/utils.js';
6
6
  import { getRouterInitialComponent } from '../shared/get-router-initial-component.js';
7
7
  import { useTab } from '../shared/use-tab.js';
8
8
 
9
9
  import RouterContextProvider from './router-context-provider.svelte';
10
10
 
11
- export let id = undefined;
12
- export let style = undefined;
13
-
14
- export let init = true;
15
- export let url = undefined;
16
- let className = undefined;
17
- export { className as class };
18
-
19
- const emit = createEmitter(createEventDispatcher, $$props);
20
-
21
- const { main, tab, tabActive, browserHistoryInitialMatch = true, initRouterOnTabShow } = $$props;
22
-
23
- const shouldInitRouter = !(initRouterOnTabShow && tab && !tabActive);
24
-
25
- let initialPage;
26
- let initialRoute;
27
- let el;
28
- let routerData;
29
- let f7View;
11
+ let {
12
+ class: className,
13
+ id = undefined,
14
+ style = undefined,
15
+ init = true,
16
+ url = undefined,
17
+ children,
18
+ ...restProps
19
+ } = $props();
20
+
21
+ const {
22
+ main,
23
+ tab,
24
+ tabActive,
25
+ browserHistoryInitialMatch = true,
26
+ initRouterOnTabShow,
27
+ } = restProps;
28
+
29
+ const shouldInitRouter = $derived(!(initRouterOnTabShow && tab && !tabActive));
30
+
31
+ let initialPage = $state(null);
32
+ let initialRoute = $state(null);
33
+ let el = $state(null);
34
+ let routerData = $state(null);
35
+ let f7View = $state(null);
30
36
 
31
37
  export function instance() {
32
38
  return f7View;
33
39
  }
34
40
 
35
41
  function onViewInit(view) {
36
- emit('viewInit', [view]);
42
+ restProps.onViewInit?.(view);
43
+ restProps.onviewinit?.(view);
37
44
  if (!init) {
38
45
  f7View = view;
39
46
  routerData.instance = view;
@@ -45,7 +52,7 @@
45
52
  f7View = app.f7.views.create(el, {
46
53
  routerId,
47
54
  init: false,
48
- ...noUndefinedProps($$props),
55
+ ...noUndefinedProps({ url, ...restProps }),
49
56
  browserHistoryInitialMatch,
50
57
  on: {
51
58
  init: onViewInit,
@@ -67,39 +74,47 @@
67
74
  }
68
75
  }
69
76
 
70
- let pages = initialPage ? [initialPage] : [];
77
+ let pages = $state(initialPage ? [initialPage] : []);
71
78
 
72
79
  function onResize(view, width) {
73
- emit('viewResize', [width]);
80
+ restProps.onViewResize?.(width);
81
+ restProps.onviewresize?.(width);
74
82
  }
75
83
  function onSwipeBackMove(data) {
76
- emit('swipeBackMove', [data]);
84
+ restProps.onSwipeBackMove?.(data);
85
+ restProps.onswipebackmove?.(data);
77
86
  }
78
87
  function onSwipeBackBeforeChange(data) {
79
- emit('swipeBackBeforeChange', [data]);
88
+ restProps.onSwipeBackBeforeChange?.(data);
89
+ restProps.onswipebackbeforechange?.(data);
80
90
  }
81
91
  function onSwipeBackAfterChange(data) {
82
- emit('swipeBackAfterChange', [data]);
92
+ restProps.onSwipeBackAfterChange?.(data);
93
+ restProps.onswipebackafterchange?.(data);
83
94
  }
84
95
  function onSwipeBackBeforeReset(data) {
85
- emit('swipeBackBeforeReset', [data]);
96
+ restProps.onSwipeBackBeforeReset?.(data);
97
+ restProps.onswipebackbeforereset?.(data);
86
98
  }
87
99
  function onSwipeBackAfterReset(data) {
88
- emit('swipeBackAfterReset', [data]);
100
+ restProps.onSwipeBackAfterReset?.(data);
101
+ restProps.onswipebackafterreset?.(data);
89
102
  }
90
103
 
91
- $: classes = classNames(
92
- className,
93
- 'view',
94
- {
95
- 'view-main': main,
96
- 'tab-active': tabActive,
97
- tab,
98
- },
99
- colorClasses($$props),
104
+ const classes = $derived(
105
+ classNames(
106
+ className,
107
+ 'view',
108
+ {
109
+ 'view-main': main,
110
+ 'tab-active': tabActive,
111
+ tab,
112
+ },
113
+ colorClasses(restProps),
114
+ ),
100
115
  );
101
116
 
102
- useTab(() => el, emit);
117
+ useTab(() => el, restProps);
103
118
 
104
119
  onMount(() => {
105
120
  f7ready(() => {
@@ -108,7 +123,7 @@
108
123
  routerData.pages = pages;
109
124
  routerData.setPages = (newPages) => {
110
125
  tick().then(() => {
111
- pages = newPages;
126
+ pages = [...newPages];
112
127
  });
113
128
  };
114
129
  if (initialPage && initialPage.isAsync && !initialPage.initialComponent) {
@@ -141,14 +156,14 @@
141
156
  instance: f7View,
142
157
  setPages(newPages) {
143
158
  tick().then(() => {
144
- pages = newPages;
159
+ pages = [...newPages];
145
160
  });
146
161
  },
147
162
  };
148
163
  app.f7routers.views.push(routerData);
149
164
  routerData.instance = app.f7.views.create(el, {
150
165
  routerId,
151
- ...noUndefinedProps($$props),
166
+ ...noUndefinedProps(restProps),
152
167
  browserHistoryInitialMatch,
153
168
  on: {
154
169
  init: onViewInit,
@@ -168,10 +183,13 @@
168
183
  });
169
184
  });
170
185
 
171
- afterUpdate(() => {
172
- if (!routerData) return;
186
+ const watchPagesAndRouterData = (pages, routerData) => {
187
+ if (!routerData || !pages) return;
188
+
173
189
  app.f7events.emit('viewRouterDidUpdate', routerData);
174
- });
190
+ };
191
+
192
+ $effect(() => watchPagesAndRouterData(pages, routerData));
175
193
 
176
194
  onDestroy(() => {
177
195
  if (f7View) {
@@ -191,10 +209,10 @@
191
209
  </script>
192
210
 
193
211
  <div class={classes} {style} {id} bind:this={el}>
194
- <slot view={f7View} />
212
+ {@render children?.(f7View)}
195
213
  {#each pages as page (page.id)}
196
214
  <RouterContextProvider route={page.props.f7route} router={page.props.f7router}>
197
- <svelte:component this={page.component} {...page.props} />
215
+ <page.component {...page.props} />
198
216
  </RouterContextProvider>
199
217
  {/each}
200
218
  </div>
@@ -1,9 +1,9 @@
1
1
 
2
- import { SvelteComponent } from 'svelte';
2
+ import { SvelteComponent, Snippet } from 'svelte';
3
3
  import { HTMLAttributes } from 'svelte/elements';
4
4
 
5
5
 
6
- interface ViewsProps {
6
+ interface Props {
7
7
  tabs?: boolean;
8
8
  color?: string;
9
9
  colorTheme?: string;
@@ -12,14 +12,20 @@ interface ViewsProps {
12
12
  borderColor?: string;
13
13
  rippleColor?: string;
14
14
  dark?: boolean;
15
+ children?: Snippet;
15
16
  }
16
17
 
18
+ interface ViewsProps {}
19
+ interface ViewsProps extends Props {}
20
+
21
+ interface ViewsEvents extends Record<'',{}>{}
22
+
17
23
 
18
24
 
19
25
  declare class Views extends SvelteComponent<
20
- ViewsProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof ViewsProps>,
21
- { },
22
- { 'default' : {}; }
26
+ ViewsProps,
27
+ ViewsEvents,
28
+ { }
23
29
  > {}
24
30
 
25
31
  export { ViewsProps };
@@ -1,23 +1,20 @@
1
1
  <script>
2
- import { restProps } from '../shared/rest-props.js';
3
2
  import { colorClasses } from '../shared/mixins.js';
4
3
  import { classNames } from '../shared/utils.js';
4
+ let { class: className, tabs = false, children, ...restProps } = $props();
5
5
 
6
- export let tabs = false;
7
-
8
- let className = undefined;
9
- export { className as class };
10
-
11
- $: classes = classNames(
12
- className,
13
- 'views',
14
- {
15
- tabs,
16
- },
17
- colorClasses($$props),
6
+ const classes = $derived(
7
+ classNames(
8
+ className,
9
+ 'views',
10
+ {
11
+ tabs,
12
+ },
13
+ colorClasses(restProps),
14
+ ),
18
15
  );
19
16
  </script>
20
17
 
21
- <div class={classes} {...restProps($$restProps)}>
22
- <slot />
18
+ <div class={classes} {...restProps}>
19
+ {@render children?.()}
23
20
  </div>
@@ -77,6 +77,7 @@ import SkeletonAvatar from './components/skeleton-avatar.js';
77
77
  import SkeletonBlock from './components/skeleton-block.js';
78
78
  import SkeletonImage from './components/skeleton-image.js';
79
79
  import SkeletonText from './components/skeleton-text.js';
80
+ import SnippetRender from './components/snippet-render.js';
80
81
  import Stepper from './components/stepper.js';
81
82
  import Subnavbar from './components/subnavbar.js';
82
83
  import SwipeoutActions from './components/swipeout-actions.js';
@@ -85,6 +86,7 @@ import Tab from './components/tab.js';
85
86
  import Tabs from './components/tabs.js';
86
87
  import TextEditor from './components/text-editor.js';
87
88
  import Toggle from './components/toggle.js';
89
+ import ToolbarPane from './components/toolbar-pane.js';
88
90
  import Toolbar from './components/toolbar.js';
89
91
  import TreeviewItem from './components/treeview-item.js';
90
92
  import Treeview from './components/treeview.js';
@@ -122,6 +124,6 @@ interface app {
122
124
 
123
125
  declare const app: app;
124
126
 
125
- export { AccordionContent, AccordionItem, AccordionToggle, Accordion, ActionsButton, ActionsGroup, ActionsLabel, Actions, App, AreaChart, Badge, BlockFooter, BlockHeader, BlockTitle, Block, BreadcrumbsCollapsed, BreadcrumbsItem, BreadcrumbsSeparator, Breadcrumbs, Button, CardContent, CardFooter, CardHeader, Card, Checkbox, Chip, FabBackdrop, FabButton, FabButtons, Fab, Gauge, Icon, Input, Link, ListButton, ListGroup, ListIndex, ListInput, ListItem, List, LoginScreenTitle, LoginScreen, Message, MessagebarAttachment, MessagebarAttachments, MessagebarSheetImage, MessagebarSheetItem, MessagebarSheet, Messagebar, MessagesTitle, Messages, NavLeft, NavRight, NavTitleLarge, NavTitle, Navbar, PageContent, Page, Panel, PhotoBrowser, PieChart, Popover, Popup, Preloader, Progressbar, Radio, Range, RoutableModals, RouterContextProvider, Searchbar, Segmented, Sheet, SkeletonAvatar, SkeletonBlock, SkeletonImage, SkeletonText, Stepper, Subnavbar, SwipeoutActions, SwipeoutButton, Tab, Tabs, TextEditor, Toggle, Toolbar, TreeviewItem, Treeview, UseIcon, View, Views }
127
+ export { AccordionContent, AccordionItem, AccordionToggle, Accordion, ActionsButton, ActionsGroup, ActionsLabel, Actions, App, AreaChart, Badge, BlockFooter, BlockHeader, BlockTitle, Block, BreadcrumbsCollapsed, BreadcrumbsItem, BreadcrumbsSeparator, Breadcrumbs, Button, CardContent, CardFooter, CardHeader, Card, Checkbox, Chip, FabBackdrop, FabButton, FabButtons, Fab, Gauge, Icon, Input, Link, ListButton, ListGroup, ListIndex, ListInput, ListItem, List, LoginScreenTitle, LoginScreen, Message, MessagebarAttachment, MessagebarAttachments, MessagebarSheetImage, MessagebarSheetItem, MessagebarSheet, Messagebar, MessagesTitle, Messages, NavLeft, NavRight, NavTitleLarge, NavTitle, Navbar, PageContent, Page, Panel, PhotoBrowser, PieChart, Popover, Popup, Preloader, Progressbar, Radio, Range, RoutableModals, RouterContextProvider, Searchbar, Segmented, Sheet, SkeletonAvatar, SkeletonBlock, SkeletonImage, SkeletonText, SnippetRender, Stepper, Subnavbar, SwipeoutActions, SwipeoutButton, Tab, Tabs, TextEditor, Toggle, ToolbarPane, Toolbar, TreeviewItem, Treeview, UseIcon, View, Views }
126
128
  export { f7, f7ready, theme, useStore, app };
127
129
  export default Framework7Svelte;
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Framework7 Svelte 8.3.4
2
+ * Framework7 Svelte 9.0.0
3
3
  * Build full featured iOS & Android apps using Framework7 & Svelte
4
4
  * https://framework7.io/svelte/
5
5
  *
6
- * Copyright 2014-2024 Vladimir Kharlampidi
6
+ * Copyright 2014-2025 Vladimir Kharlampidi
7
7
  *
8
8
  * Released under the MIT License
9
9
  *
10
- * Released on: September 18, 2024
10
+ * Released on: November 25, 2025
11
11
  */
12
12
  import Framework7Svelte from './shared/plugin.js';
13
13
  import { f7, f7ready, theme, app } from './shared/f7.js';
@@ -89,6 +89,7 @@ import SkeletonAvatar from './components/skeleton-avatar.js';
89
89
  import SkeletonBlock from './components/skeleton-block.js';
90
90
  import SkeletonImage from './components/skeleton-image.js';
91
91
  import SkeletonText from './components/skeleton-text.js';
92
+ import SnippetRender from './components/snippet-render.svelte';
92
93
  import Stepper from './components/stepper.svelte';
93
94
  import Subnavbar from './components/subnavbar.svelte';
94
95
  import SwipeoutActions from './components/swipeout-actions.svelte';
@@ -97,6 +98,7 @@ import Tab from './components/tab.svelte';
97
98
  import Tabs from './components/tabs.svelte';
98
99
  import TextEditor from './components/text-editor.svelte';
99
100
  import Toggle from './components/toggle.svelte';
101
+ import ToolbarPane from './components/toolbar-pane.svelte';
100
102
  import Toolbar from './components/toolbar.svelte';
101
103
  import TreeviewItem from './components/treeview-item.svelte';
102
104
  import Treeview from './components/treeview.svelte';
@@ -104,6 +106,6 @@ import UseIcon from './components/use-icon.svelte';
104
106
  import View from './components/view.svelte';
105
107
  import Views from './components/views.svelte';
106
108
 
107
- export { AccordionContent, AccordionItem, AccordionToggle, Accordion, ActionsButton, ActionsGroup, ActionsLabel, Actions, App, AreaChart, Badge, BlockFooter, BlockHeader, BlockTitle, Block, BreadcrumbsCollapsed, BreadcrumbsItem, BreadcrumbsSeparator, Breadcrumbs, Button, CardContent, CardFooter, CardHeader, Card, Checkbox, Chip, FabBackdrop, FabButton, FabButtons, Fab, Gauge, Icon, Input, Link, ListButton, ListGroup, ListIndex, ListInput, ListItem, List, LoginScreenTitle, LoginScreen, Message, MessagebarAttachment, MessagebarAttachments, MessagebarSheetImage, MessagebarSheetItem, MessagebarSheet, Messagebar, MessagesTitle, Messages, NavLeft, NavRight, NavTitleLarge, NavTitle, Navbar, PageContent, Page, Panel, PhotoBrowser, PieChart, Popover, Popup, Preloader, Progressbar, Radio, Range, RoutableModals, RouterContextProvider, Searchbar, Segmented, Sheet, SkeletonAvatar, SkeletonBlock, SkeletonImage, SkeletonText, Stepper, Subnavbar, SwipeoutActions, SwipeoutButton, Tab, Tabs, TextEditor, Toggle, Toolbar, TreeviewItem, Treeview, UseIcon, View, Views }
109
+ export { AccordionContent, AccordionItem, AccordionToggle, Accordion, ActionsButton, ActionsGroup, ActionsLabel, Actions, App, AreaChart, Badge, BlockFooter, BlockHeader, BlockTitle, Block, BreadcrumbsCollapsed, BreadcrumbsItem, BreadcrumbsSeparator, Breadcrumbs, Button, CardContent, CardFooter, CardHeader, Card, Checkbox, Chip, FabBackdrop, FabButton, FabButtons, Fab, Gauge, Icon, Input, Link, ListButton, ListGroup, ListIndex, ListInput, ListItem, List, LoginScreenTitle, LoginScreen, Message, MessagebarAttachment, MessagebarAttachments, MessagebarSheetImage, MessagebarSheetItem, MessagebarSheet, Messagebar, MessagesTitle, Messages, NavLeft, NavRight, NavTitleLarge, NavTitle, Navbar, PageContent, Page, Panel, PhotoBrowser, PieChart, Popover, Popup, Preloader, Progressbar, Radio, Range, RoutableModals, RouterContextProvider, Searchbar, Segmented, Sheet, SkeletonAvatar, SkeletonBlock, SkeletonImage, SkeletonText, SnippetRender, Stepper, Subnavbar, SwipeoutActions, SwipeoutButton, Tab, Tabs, TextEditor, Toggle, ToolbarPane, Toolbar, TreeviewItem, Treeview, UseIcon, View, Views }
108
110
  export { f7, f7ready, theme, useStore, app };
109
111
  export default Framework7Svelte;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framework7-svelte",
3
- "version": "8.3.4",
3
+ "version": "9.0.0",
4
4
  "description": "Build full featured iOS & Android apps using Framework7 & Svelte",
5
5
  "type": "module",
6
6
  "svelte": "./framework7-svelte.js",
@@ -50,5 +50,5 @@
50
50
  "type": "patreon",
51
51
  "url": "https://www.patreon.com/framework7"
52
52
  },
53
- "releaseDate": "September 18, 2024"
53
+ "releaseDate": "November 25, 2025"
54
54
  }
@@ -20,14 +20,14 @@ export default {
20
20
  openIn(router, navigateUrl, options) {
21
21
  return routerOpenIn(router, navigateUrl, options);
22
22
  },
23
- pageComponentLoader(_ref) {
24
- let {
25
- routerEl,
26
- component,
27
- options,
28
- resolve,
29
- reject
30
- } = _ref;
23
+ pageComponentLoader({
24
+ routerEl,
25
+ component,
26
+ options,
27
+ resolve,
28
+ reject,
29
+ direction
30
+ }) {
31
31
  const router = this;
32
32
  const routerId = router.id;
33
33
  const el = routerEl;
@@ -56,13 +56,18 @@ export default {
56
56
  const childrenAfter = getChildrenArray(el);
57
57
  if (hasSameChildren(childrenBefore, childrenAfter)) return;
58
58
  app.f7events.off('viewRouterDidUpdate', onDidUpdate);
59
- const pageEl = el.children[el.children.length - 1];
59
+ const pageEl = el.children[direction === 'backward' ? 0 : el.children.length - 1];
60
60
  pageData.el = pageEl;
61
61
  resolve(pageEl);
62
+ viewRouter.setPages(viewRouter.pages);
62
63
  resolved = true;
63
64
  }
64
65
  app.f7events.on('viewRouterDidUpdate', onDidUpdate);
65
- viewRouter.pages.push(pageData);
66
+ if (direction === 'backward') {
67
+ viewRouter.pages.unshift(pageData);
68
+ } else {
69
+ viewRouter.pages.push(pageData);
70
+ }
66
71
  viewRouter.setPages(viewRouter.pages);
67
72
  },
68
73
  removePage($pageEl) {
@@ -101,14 +106,13 @@ export default {
101
106
  pageEl.parentNode.removeChild(pageEl);
102
107
  }
103
108
  },
104
- tabComponentLoader(_temp) {
105
- let {
106
- tabEl,
107
- component,
108
- options,
109
- resolve,
110
- reject
111
- } = _temp === void 0 ? {} : _temp;
109
+ tabComponentLoader({
110
+ tabEl,
111
+ component,
112
+ options,
113
+ resolve,
114
+ reject
115
+ } = {}) {
112
116
  const router = this;
113
117
  if (!tabEl) reject();
114
118
  let tabRouter;
@@ -155,13 +159,12 @@ export default {
155
159
  }
156
160
  tabRouter.setTabContent(null);
157
161
  },
158
- modalComponentLoader(_temp2) {
159
- let {
160
- component,
161
- options,
162
- resolve,
163
- reject
164
- } = _temp2 === void 0 ? {} : _temp2;
162
+ modalComponentLoader({
163
+ component,
164
+ options,
165
+ resolve,
166
+ reject
167
+ } = {}) {
165
168
  const router = this;
166
169
  const modalsRouter = app.f7routers.modals;
167
170
  if (!modalsRouter) {
package/shared/f7.js CHANGED
@@ -44,13 +44,7 @@ const cleanup = () => {
44
44
  const f7initEvents = () => {
45
45
  app.f7events = new app.Framework7.Events();
46
46
  };
47
- const f7init = function (rootEl, params, init) {
48
- if (params === void 0) {
49
- params = {};
50
- }
51
- if (init === void 0) {
52
- init = true;
53
- }
47
+ const f7init = (rootEl, params = {}, init = true) => {
54
48
  const f7Params = extend({}, params, {
55
49
  el: rootEl,
56
50
  init
package/shared/mixins.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { isStringProp } from './utils.js';
2
- export function colorClasses(props) {
2
+ export function colorClasses(props = {}) {
3
3
  const {
4
4
  color,
5
5
  textColor,
@@ -17,7 +17,7 @@ export function colorClasses(props) {
17
17
  [`ripple-color-${rippleColor}`]: rippleColor
18
18
  };
19
19
  }
20
- export function routerAttrs(props) {
20
+ export function routerAttrs(props = {}) {
21
21
  const {
22
22
  force,
23
23
  reloadCurrent,
@@ -53,7 +53,7 @@ export function routerAttrs(props) {
53
53
  'data-open-in': isStringProp(openIn) ? openIn : undefined
54
54
  };
55
55
  }
56
- export function routerClasses(props) {
56
+ export function routerClasses(props = {}) {
57
57
  const {
58
58
  back,
59
59
  linkBack,
@@ -66,7 +66,7 @@ export function routerClasses(props) {
66
66
  'prevent-router': preventRouter
67
67
  };
68
68
  }
69
- export function actionsAttrs(props) {
69
+ export function actionsAttrs(props = {}) {
70
70
  const {
71
71
  searchbarEnable,
72
72
  searchbarDisable,
@@ -103,7 +103,7 @@ export function actionsAttrs(props) {
103
103
  'data-card': isStringProp(cardOpen) && cardOpen || isStringProp(cardClose) && cardClose || undefined
104
104
  };
105
105
  }
106
- export function actionsClasses(props) {
106
+ export function actionsClasses(props = {}) {
107
107
  const {
108
108
  searchbarEnable,
109
109
  searchbarDisable,
@@ -1,8 +1,7 @@
1
- export const modalStateClasses = function (_temp) {
2
- let {
3
- isOpened,
4
- isClosing
5
- } = _temp === void 0 ? {} : _temp;
1
+ export const modalStateClasses = ({
2
+ isOpened,
3
+ isClosing
4
+ } = {}) => {
6
5
  return {
7
6
  'modal-in': isOpened && !isClosing,
8
7
  'modal-out': isClosing
package/shared/plugin.js CHANGED
@@ -4,10 +4,7 @@ import { f7ready, theme, app, f7initEvents, setTheme } from './f7.js';
4
4
  const Framework7Svelte = {
5
5
  name: 'sveltePlugin',
6
6
  installed: false,
7
- install(params) {
8
- if (params === void 0) {
9
- params = {};
10
- }
7
+ install(params = {}) {
11
8
  const Framework7 = this;
12
9
  app.Framework7 = Framework7;
13
10
  if (Framework7Svelte.installed) return;
@@ -1,8 +1,5 @@
1
1
  const ignoreProps = ['color', 'colorTheme', 'textColor', 'bgColor', 'borderColor', 'rippleColor', 'dark', 'force', 'reloadCurrent', 'reloadPrevious', 'reloadAll', 'reloadDetail', 'animate', 'ignoreCache', 'routeTabId', 'view', 'transition', 'openIn', 'back', 'linkBack', 'external', 'preventRouter', 'searchbarEnable', 'searchbarDisable', 'searchbarClear', 'searchbarToggle', 'panelOpen', 'panelClose', 'panelToggle', 'popupOpen', 'popupClose', 'actionsOpen', 'actionsClose', 'popoverOpen', 'popoverClose', 'loginScreenOpen', 'loginScreenClose', 'sheetOpen', 'sheetClose', 'sortableEnable', 'sortableDisable', 'sortableToggle', 'cardOpen', 'cardClose'];
2
- export function restProps(rest) {
3
- if (rest === void 0) {
4
- rest = {};
5
- }
2
+ export function restProps(rest = {}) {
6
3
  const props = {};
7
4
  Object.keys(rest).filter(prop => !ignoreProps.includes(prop)).forEach(key => {
8
5
  if (key.indexOf('on') !== 0) {
@@ -1,7 +1,4 @@
1
- export const useIcon = function (props) {
2
- if (props === void 0) {
3
- props = {};
4
- }
1
+ export const useIcon = (restProps = {}) => {
5
2
  const {
6
3
  icon,
7
4
  iconMaterial,
@@ -13,7 +10,7 @@ export const useIcon = function (props) {
13
10
  iconBadge,
14
11
  badgeColor,
15
12
  iconBadgeColor
16
- } = props;
13
+ } = restProps;
17
14
  if (icon || iconMaterial || iconF7 || iconMd || iconIos) {
18
15
  return {
19
16
  props: {
@@ -1,20 +1,20 @@
1
1
  // eslint-disable-next-line
2
2
  import { onDestroy } from 'svelte';
3
3
  import { f7 } from './f7.js';
4
- export const useStore = function () {
4
+ export const useStore = (...args) => {
5
5
  // (store, getter, callback)
6
- let store = arguments.length <= 0 ? undefined : arguments[0];
7
- let getter = arguments.length <= 1 ? undefined : arguments[1];
8
- let callback = arguments.length <= 2 ? undefined : arguments[2];
9
- if (arguments.length === 1) {
6
+ let store = args[0];
7
+ let getter = args[1];
8
+ let callback = args[2];
9
+ if (args.length === 1) {
10
10
  // (getter)
11
11
  store = f7.store;
12
- getter = arguments.length <= 0 ? undefined : arguments[0];
13
- } else if (arguments.length === 2 && typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {
12
+ getter = args[0];
13
+ } else if (args.length === 2 && typeof args[0] === 'string') {
14
14
  // (getter, callback)
15
15
  store = f7.store;
16
- getter = arguments.length <= 0 ? undefined : arguments[0];
17
- callback = arguments.length <= 1 ? undefined : arguments[1];
16
+ getter = args[0];
17
+ callback = args[1];
18
18
  }
19
19
  // eslint-disable-next-line
20
20
  const obj = store._gettersPlain[getter];
package/shared/use-tab.js CHANGED
@@ -1,14 +1,14 @@
1
1
  // eslint-disable-next-line
2
2
  import { onMount, onDestroy } from 'svelte';
3
3
  import { f7, f7ready } from './f7.js';
4
- export const useTab = (getEl, emit) => {
4
+ export const useTab = (getEl, restProps = {}) => {
5
5
  const onTabShow = el => {
6
6
  if (getEl() !== el) return;
7
- emit('tabShow', [el]);
7
+ restProps.onTabShow?.(el);
8
8
  };
9
9
  const onTabHide = el => {
10
10
  if (getEl() !== el) return;
11
- emit('tabHide', [el]);
11
+ restProps.onTabHide?.(el);
12
12
  };
13
13
  const attachEvents = () => {
14
14
  if (!getEl()) return;
@@ -15,10 +15,9 @@ export const useTooltip = (el, props) => {
15
15
  });
16
16
  }
17
17
  return {
18
- update(_temp) {
19
- let {
20
- tooltip: value
21
- } = _temp === void 0 ? {} : _temp;
18
+ update({
19
+ tooltip: value
20
+ } = {}) {
22
21
  if (!value && f7Tooltip) {
23
22
  f7Tooltip.destroy();
24
23
  f7Tooltip = null;
package/shared/utils.js CHANGED
@@ -14,13 +14,10 @@ export function isObject(o) {
14
14
  export function now() {
15
15
  return Date.now();
16
16
  }
17
- export function extend() {
17
+ export function extend(...args) {
18
18
  let deep = true;
19
19
  let to;
20
20
  let from;
21
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
22
- args[_key] = arguments[_key];
23
- }
24
21
  if (typeof args[0] === 'boolean') {
25
22
  [deep, to] = args;
26
23
  args.splice(0, 2);
@@ -54,11 +51,8 @@ export function extend() {
54
51
  }
55
52
  return to;
56
53
  }
57
- export function classNames() {
54
+ export function classNames(...args) {
58
55
  const classes = [];
59
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
60
- args[_key2] = arguments[_key2];
61
- }
62
56
  args.forEach(arg => {
63
57
  if (typeof arg === 'object' && arg.constructor === Object) {
64
58
  Object.keys(arg).forEach(key => {
@@ -1,16 +0,0 @@
1
- // eslint-disable-next-line
2
- import { getContext, onDestroy } from 'svelte';
3
- export const getReactiveContext = (name, setValue) => {
4
- const ctx = getContext(name);
5
- if (!ctx) return undefined;
6
- const {
7
- value,
8
- subscribe,
9
- unsubscribe
10
- } = ctx;
11
- subscribe(setValue);
12
- onDestroy(() => {
13
- unsubscribe(setValue);
14
- });
15
- return value;
16
- };