framework7-svelte 8.3.4 → 9.0.0-beta.1

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,8 +1,7 @@
1
1
  <script>
2
- import { createEventDispatcher, onMount, onDestroy, afterUpdate } from 'svelte';
2
+ import { onMount, onDestroy } from 'svelte';
3
3
  import { colorClasses } from '../shared/mixins.js';
4
- import { classNames, plainText, createEmitter } from '../shared/utils.js';
5
- import { restProps } from '../shared/rest-props.js';
4
+ import { classNames } from '../shared/utils.js';
6
5
  import { f7ready, app } from '../shared/f7.js';
7
6
  import { useTheme } from '../shared/use-theme.js';
8
7
 
@@ -10,39 +9,40 @@
10
9
  import NavTitle from './nav-title.svelte';
11
10
  import NavRight from './nav-right.svelte';
12
11
 
13
- const emit = createEmitter(createEventDispatcher, $$props);
14
-
15
- let className = undefined;
16
- export { className as class };
17
-
18
- export let backLink = undefined;
19
- export let backLinkUrl = undefined;
20
- export let backLinkForce = false;
21
- export let backLinkShowText = undefined;
22
- export let sliding = true;
23
- export let title = undefined;
24
- export let subtitle = undefined;
25
- export let hidden = false;
26
- export let outline = true;
27
- export let innerClass = undefined;
28
- export let innerClassName = undefined;
29
- export let large = false;
30
- export let largeTransparent = false;
31
- export let transparent = false;
32
- export let titleLarge = undefined;
33
-
34
- export let f7Slot = 'fixed';
35
-
36
- let el;
12
+ let {
13
+ class: className,
14
+ backLink = undefined,
15
+ backLinkUrl = undefined,
16
+ backLinkForce = false,
17
+ backLinkShowText = undefined,
18
+ title = undefined,
19
+ subtitle = undefined,
20
+ hidden = false,
21
+ outline = true,
22
+ innerClass = undefined,
23
+ innerClassName = undefined,
24
+ large = false,
25
+ largeTransparent = false,
26
+ transparent = false,
27
+ titleLarge = undefined,
28
+ f7Slot = 'fixed',
29
+ children,
30
+ navLeft = undefined,
31
+ left = undefined,
32
+ navRight = undefined,
33
+ right = undefined,
34
+ beforeInner = undefined,
35
+ afterInner = undefined,
36
+ ...restProps
37
+ } = $props();
38
+
39
+ let el = $state(null);
37
40
  let theme = useTheme((t) => {
38
41
  theme = t;
39
42
  });
40
- let routerPositionClass = '';
41
- let largeCollapsed = false;
42
- let routerNavbarRole = null;
43
- let routerNavbarRoleDetailRoot = false;
44
- let routerNavbarMasterStack = false;
45
- let transparentVisible = false;
43
+ let routerPositionClass = $state('');
44
+ let largeCollapsed = $state(false);
45
+ let transparentVisible = $state(false);
46
46
 
47
47
  export function hide(animate) {
48
48
  app.f7.navbar.hide(el, animate);
@@ -54,96 +54,90 @@
54
54
  app.f7.navbar.size(el);
55
55
  }
56
56
 
57
- // eslint-disable-next-line
58
- $: hasLeftSlots = $$slots['nav-left'] || $$slots['left'];
59
- // eslint-disable-next-line
60
- $: hasRightSlots = $$slots['nav-right'] || $$slots['right'];
61
- // eslint-disable-next-line
62
- $: hasTitleSlots = $$slots['title'];
57
+ const hasLeftSlots = $derived(navLeft || left);
58
+ const hasRightSlots = $derived(navRight || right);
59
+ const hasTitleSlots = $derived(title);
63
60
 
64
- $: largeTitle = titleLarge || (large && title);
65
- // eslint-disable-next-line
66
- $: hasTitleLargeSlots = $$slots['title-large'];
61
+ const largeTitle = $derived(titleLarge || (large && title));
62
+ const hasTitleLargeSlots = $derived(titleLarge);
67
63
 
68
- $: addLeftTitleClass = theme && theme.ios && app.f7 && !app.f7.params.navbar.iosCenterTitle;
69
- $: addCenterTitleClass = theme && theme.md && app.f7 && app.f7.params.navbar.mdCenterTitle;
70
-
71
- $: isLarge = large || largeTransparent;
72
- $: isTransparent = transparent || (isLarge && largeTransparent);
73
- $: isTransparentVisible = isTransparent && transparentVisible;
64
+ const addLeftTitleClass = $derived(
65
+ theme && theme.ios && app.f7 && !app.f7.params.navbar.iosCenterTitle,
66
+ );
67
+ const addCenterTitleClass = $derived(
68
+ theme && theme.md && app.f7 && app.f7.params.navbar.mdCenterTitle,
69
+ );
74
70
 
75
- $: classes = classNames(
76
- className,
77
- 'navbar',
78
- routerPositionClass,
79
- {
80
- 'navbar-hidden': hidden,
81
- 'navbar-large': isLarge,
82
- 'navbar-large-collapsed': isLarge && largeCollapsed,
83
- 'navbar-transparent': isTransparent,
84
- 'navbar-transparent-visible': isTransparentVisible,
85
- 'navbar-master': routerNavbarRole === 'master',
86
- 'navbar-master-detail': routerNavbarRole === 'detail',
87
- 'navbar-master-detail-root': routerNavbarRoleDetailRoot === true,
88
- 'navbar-master-stacked': routerNavbarMasterStack === true,
89
- 'no-outline': !outline,
90
- },
91
- colorClasses($$props),
71
+ const isLarge = $derived(large || largeTransparent);
72
+ const isTransparent = $derived(transparent || (isLarge && largeTransparent));
73
+ const isTransparentVisible = $derived(isTransparent && transparentVisible);
74
+
75
+ const classes = $derived(
76
+ classNames(
77
+ className,
78
+ 'navbar',
79
+ routerPositionClass,
80
+ {
81
+ 'navbar-hidden': hidden,
82
+ 'navbar-large': isLarge,
83
+ 'navbar-large-collapsed': isLarge && largeCollapsed,
84
+ 'navbar-transparent': isTransparent,
85
+ 'navbar-transparent-visible': isTransparentVisible,
86
+ 'no-outline': !outline,
87
+ },
88
+ colorClasses(restProps),
89
+ ),
92
90
  );
93
91
 
94
- $: innerClasses = classNames('navbar-inner', innerClass, innerClassName, {
95
- sliding,
96
- 'navbar-inner-left-title': addLeftTitleClass,
97
- 'navbar-inner-centered-title': addCenterTitleClass,
98
- });
92
+ const innerClasses = $derived(
93
+ classNames('navbar-inner', innerClass, innerClassName, {
94
+ 'navbar-inner-left-title': addLeftTitleClass,
95
+ 'navbar-inner-centered-title': addCenterTitleClass,
96
+ }),
97
+ );
99
98
 
100
99
  function onHide(navbarEl) {
101
100
  if (el !== navbarEl) return;
102
- emit('navbarHide');
101
+ restProps.onNavbarHide?.();
102
+ restProps.onnavbarhide?.();
103
103
  }
104
104
  function onShow(navbarEl) {
105
105
  if (el !== navbarEl) return;
106
- emit('navbarShow');
106
+ restProps.onNavbarShow?.();
107
+ restProps.onnavbarshow?.();
107
108
  }
108
109
  function onNavbarTransparentShow(navbarEl) {
109
110
  if (el !== navbarEl) return;
110
111
  transparentVisible = true;
111
- emit('navbarTransparentShow');
112
+ restProps.onNavbarTransparentShow?.();
113
+ restProps.onnavbartransparentshow?.();
112
114
  }
113
115
  function onNavbarTransparentHide(navbarEl) {
114
116
  if (el !== navbarEl) return;
115
117
  transparentVisible = false;
116
- emit('navbarTransparentHide');
118
+ restProps.onNavbarTransparentHide?.();
119
+ restProps.onnavbartransparenthide?.();
117
120
  }
118
121
  function onExpand(navbarEl) {
119
122
  if (el !== navbarEl) return;
120
123
  largeCollapsed = false;
121
- emit('navbarExpand');
124
+ restProps.onNavbarExpand?.();
125
+ restProps.onnavbarexpand?.();
122
126
  }
123
127
  function onCollapse(navbarEl) {
124
128
  if (el !== navbarEl) return;
125
129
  largeCollapsed = true;
126
- emit('navbarCollapse');
130
+ restProps.onNavbarCollapse?.();
131
+ restProps.onnavbarcollapse?.();
127
132
  }
128
133
  function onNavbarPosition(navbarEl, position) {
129
134
  if (el !== navbarEl) return;
130
135
  routerPositionClass = position ? `navbar-${position}` : position;
131
136
  }
132
- function onNavbarRole(navbarEl, rolesData) {
133
- if (el !== navbarEl) return;
134
- routerNavbarRole = rolesData.role;
135
- routerNavbarRoleDetailRoot = rolesData.detailRoot;
136
- }
137
- function onNavbarMasterStack(navbarEl) {
138
- if (el !== navbarEl) return;
139
- routerNavbarMasterStack = true;
140
- }
141
- function onNavbarMasterUnstack(navbarEl) {
142
- if (el !== navbarEl) return;
143
- routerNavbarMasterStack = false;
144
- }
137
+
145
138
  function onBackClick() {
146
- emit('clickBack');
139
+ restProps.onClickBack?.();
140
+ restProps.onclickback?.();
147
141
  }
148
142
 
149
143
  function mountNavbar() {
@@ -152,9 +146,6 @@
152
146
  app.f7.on('navbarCollapse', onCollapse);
153
147
  app.f7.on('navbarExpand', onExpand);
154
148
  app.f7.on('navbarPosition', onNavbarPosition);
155
- app.f7.on('navbarRole', onNavbarRole);
156
- app.f7.on('navbarMasterStack', onNavbarMasterStack);
157
- app.f7.on('navbarMasterUnstack', onNavbarMasterUnstack);
158
149
  app.f7.on('navbarTransparentShow', onNavbarTransparentShow);
159
150
  app.f7.on('navbarTransparentHide', onNavbarTransparentHide);
160
151
  }
@@ -164,9 +155,6 @@
164
155
  app.f7.off('navbarCollapse', onCollapse);
165
156
  app.f7.off('navbarExpand', onExpand);
166
157
  app.f7.off('navbarPosition', onNavbarPosition);
167
- app.f7.off('navbarRole', onNavbarRole);
168
- app.f7.off('navbarMasterStack', onNavbarMasterStack);
169
- app.f7.off('navbarMasterUnstack', onNavbarMasterUnstack);
170
158
  app.f7.off('navbarTransparentShow', onNavbarTransparentShow);
171
159
  app.f7.off('navbarTransparentHide', onNavbarTransparentHide);
172
160
  }
@@ -176,7 +164,7 @@
176
164
  mountNavbar();
177
165
  });
178
166
  });
179
- afterUpdate(() => {
167
+ $effect(() => {
180
168
  if (!app.f7) return;
181
169
  app.f7.navbar.size(el);
182
170
  });
@@ -186,36 +174,37 @@
186
174
  });
187
175
  </script>
188
176
 
189
- <div class={classes} bind:this={el} data-f7-slot={f7Slot} {...restProps($$restProps)}>
190
- <div class="navbar-bg" />
191
- <slot name="before-inner" />
177
+ <div class={classes} bind:this={el} data-f7-slot={f7Slot} {...restProps}>
178
+ <div class="navbar-bg"></div>
179
+ {@render beforeInner?.()}
192
180
  <div class={innerClasses}>
193
181
  {#if backLink || hasLeftSlots}
194
182
  <NavLeft {backLink} {backLinkUrl} {backLinkForce} {backLinkShowText} {onBackClick}>
195
- <slot name="nav-left" />
196
- <slot name="left" />
183
+ {@render navLeft?.()}
184
+ {@render left?.()}
197
185
  </NavLeft>
198
186
  {/if}
199
187
  {#if title || subtitle || hasTitleSlots}
200
- <NavTitle {title} {subtitle}>
201
- <slot name="title" />
202
- </NavTitle>
188
+ <NavTitle {title} {subtitle} />
203
189
  {/if}
204
190
  {#if hasRightSlots}
205
191
  <NavRight>
206
- <slot name="nav-right" />
207
- <slot name="right" />
192
+ {@render navRight?.()}
193
+ {@render right?.()}
208
194
  </NavRight>
209
195
  {/if}
210
196
  {#if largeTitle || hasTitleLargeSlots}
211
197
  <div class="title-large">
212
198
  <div class="title-large-text">
213
- {plainText(largeTitle)}
214
- <slot name="title-large" />
199
+ {#if typeof largeTitle === 'function'}
200
+ {@render largeTitle?.()}
201
+ {:else}
202
+ {largeTitle}
203
+ {/if}
215
204
  </div>
216
205
  </div>
217
206
  {/if}
218
- <slot />
207
+ {@render children?.()}
219
208
  </div>
220
- <slot name="after-inner" />
209
+ {@render afterInner?.()}
221
210
  </div>
@@ -1,25 +1,25 @@
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 PageContentProps {
7
- tab ?: boolean;
8
- tabActive ?: boolean;
9
- ptr ?: boolean;
10
- ptrDistance ?: number;
11
- ptrPreloader ?: boolean;
12
- ptrBottom ?: boolean;
13
- ptrMousewheel ?: boolean;
14
- infinite ?: boolean;
15
- infiniteTop ?: boolean;
16
- infiniteDistance ?: number;
17
- infinitePreloader ?: boolean;
18
- hideBarsOnScroll ?: boolean;
19
- hideNavbarOnScroll ?: boolean;
20
- hideToolbarOnScroll ?: boolean;
21
- messagesContent ?: boolean;
22
- loginScreen ?: boolean;
6
+ interface Props {
7
+ tab?: boolean;
8
+ tabActive?: boolean;
9
+ ptr?: boolean;
10
+ ptrDistance?: number;
11
+ ptrPreloader?: boolean;
12
+ ptrBottom?: boolean;
13
+ ptrMousewheel?: boolean;
14
+ infinite?: boolean;
15
+ infiniteTop?: boolean;
16
+ infiniteDistance?: number;
17
+ infinitePreloader?: boolean;
18
+ hideBarsOnScroll?: boolean;
19
+ hideNavbarOnScroll?: boolean;
20
+ hideToolbarOnScroll?: boolean;
21
+ messagesContent?: boolean;
22
+ loginScreen?: boolean;
23
23
  color?: string;
24
24
  colorTheme?: string;
25
25
  textColor?: string;
@@ -27,22 +27,34 @@ interface PageContentProps {
27
27
  borderColor?: string;
28
28
  rippleColor?: string;
29
29
  dark?: boolean;
30
- onPtrPullStart ?: (...args: any[]) => void;
31
- onPtrPullMove ?: (...args: any[]) => void;
32
- onPtrPullEnd ?: (...args: any[]) => void;
33
- onPtrRefresh ?: (done?: any) => void;
34
- onPtrDone ?: (...args: any[]) => void;
35
- onInfinite ?: (...args: any[]) => void;
36
- onTabShow ?: (el?: HTMLElement) => void;
37
- onTabHide ?: (el?: HTMLElement) => void;
30
+ onPtrPullStart?: (...args: any[]) => void;
31
+ onPtrPullMove?: (...args: any[]) => void;
32
+ onPtrPullEnd?: (...args: any[]) => void;
33
+ onPtrRefresh?: (done?: any) => void;
34
+ onPtrDone?: (...args: any[]) => void;
35
+ onInfinite?: (...args: any[]) => void;
36
+ onTabShow?: (el?: HTMLElement) => void;
37
+ onTabHide?: (el?: HTMLElement) => void;
38
+ children?: Snippet;
39
+ onptrpullstart?: () => void;
40
+ onptrpullmove?: () => void;
41
+ onptrpullend?: () => void;
42
+ onptrrefresh?: () => void;
43
+ onptrdone?: () => void;
44
+ oninfinite?: () => void;
38
45
  }
39
46
 
47
+ interface PageContentProps {}
48
+ interface PageContentProps extends Props {}
49
+
50
+ interface PageContentEvents extends Record<'',{}>{}
51
+
40
52
 
41
53
 
42
54
  declare class PageContent extends SvelteComponent<
43
- PageContentProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof PageContentProps>,
44
- { ptrPullStart: CustomEvent<void>; ptrPullMove: CustomEvent<void>; ptrPullEnd: CustomEvent<void>; ptrRefresh: CustomEvent<void>; ptrDone: CustomEvent<void>; infinite: CustomEvent<void>; },
45
- { 'default' : {}; }
55
+ PageContentProps,
56
+ PageContentEvents,
57
+ { }
46
58
  > {}
47
59
 
48
60
  export { PageContentProps };
@@ -1,79 +1,87 @@
1
1
  <script>
2
- import { onMount, onDestroy, createEventDispatcher } from 'svelte';
3
- import { restProps } from '../shared/rest-props.js';
2
+ import { onMount, onDestroy } from 'svelte';
4
3
  import { colorClasses } from '../shared/mixins.js';
5
- import { classNames, createEmitter } from '../shared/utils.js';
4
+ import { classNames } from '../shared/utils.js';
6
5
  import { app, f7ready } from '../shared/f7.js';
7
6
  import { useTab } from '../shared/use-tab.js';
8
7
 
9
8
  import Preloader from './preloader.svelte';
10
9
 
11
- const emit = createEmitter(createEventDispatcher, $$props);
12
- export let tab = false;
13
- export let tabActive = false;
14
- export let ptr = false;
15
- export let ptrDistance = undefined;
16
- export let ptrPreloader = true;
17
- export let ptrBottom = false;
18
- export let ptrMousewheel = false;
19
- export let infinite = false;
20
- export let infiniteTop = false;
21
- export let infiniteDistance = undefined;
22
- export let infinitePreloader = true;
23
- export let hideBarsOnScroll = false;
24
- export let hideNavbarOnScroll = false;
25
- export let hideToolbarOnScroll = false;
26
- export let messagesContent = false;
27
- export let loginScreen = false;
10
+ let {
11
+ class: className,
12
+ tab = false,
13
+ tabActive = false,
14
+ ptr = false,
15
+ ptrDistance = undefined,
16
+ ptrPreloader = true,
17
+ ptrBottom = false,
18
+ ptrMousewheel = false,
19
+ infinite = false,
20
+ infiniteTop = false,
21
+ infiniteDistance = undefined,
22
+ infinitePreloader = true,
23
+ hideBarsOnScroll = false,
24
+ hideNavbarOnScroll = false,
25
+ hideToolbarOnScroll = false,
26
+ messagesContent = false,
27
+ loginScreen = false,
28
+ children,
29
+ ...restProps
30
+ } = $props();
28
31
 
29
- let className = undefined;
30
- export { className as class };
32
+ let pageContentEl = $state(null);
31
33
 
32
- let pageContentEl;
33
-
34
- $: pageContentClasses = classNames(
35
- className,
36
- 'page-content',
37
- {
38
- tab,
39
- 'tab-active': tabActive,
40
- 'ptr-content': ptr,
41
- 'ptr-bottom': ptrBottom,
42
- 'infinite-scroll-content': infinite,
43
- 'infinite-scroll-top': infiniteTop,
44
- 'hide-bars-on-scroll': hideBarsOnScroll,
45
- 'hide-navbar-on-scroll': hideNavbarOnScroll,
46
- 'hide-toolbar-on-scroll': hideToolbarOnScroll,
47
- 'messages-content': messagesContent,
48
- 'login-screen-content': loginScreen,
49
- },
50
- colorClasses($$props),
34
+ const pageContentClasses = $derived(
35
+ classNames(
36
+ className,
37
+ 'page-content',
38
+ {
39
+ tab,
40
+ 'tab-active': tabActive,
41
+ 'ptr-content': ptr,
42
+ 'ptr-bottom': ptrBottom,
43
+ 'infinite-scroll-content': infinite,
44
+ 'infinite-scroll-top': infiniteTop,
45
+ 'hide-bars-on-scroll': hideBarsOnScroll,
46
+ 'hide-navbar-on-scroll': hideNavbarOnScroll,
47
+ 'hide-toolbar-on-scroll': hideToolbarOnScroll,
48
+ 'messages-content': messagesContent,
49
+ 'login-screen-content': loginScreen,
50
+ },
51
+ colorClasses(restProps),
52
+ ),
51
53
  );
52
54
 
53
55
  // Event handlers
54
56
  function onPtrPullStart(ptrEl) {
55
57
  if (ptrEl !== pageContentEl) return;
56
- emit('ptrPullStart');
58
+ restProps.onPtrPullStart?.();
59
+ restProps.onptrpullstart?.();
57
60
  }
58
61
  function onPtrPullMove(ptrEl) {
59
62
  if (ptrEl !== pageContentEl) return;
60
- emit('ptrPullMove');
63
+ restProps.onPtrPullMove?.();
64
+ restProps.onptrpullmove?.();
61
65
  }
62
66
  function onPtrPullEnd(ptrEl) {
63
67
  if (ptrEl !== pageContentEl) return;
64
- emit('ptrPullEnd');
68
+ restProps.onPtrPullEnd?.();
69
+ restProps.onptrpullend?.();
65
70
  }
66
71
  function onPtrRefresh(ptrEl, done) {
67
72
  if (ptrEl !== pageContentEl) return;
68
- emit('ptrRefresh', [done]);
73
+ restProps.onPtrRefresh?.(done);
74
+ restProps.onptrrefresh?.(done);
69
75
  }
70
76
  function onPtrDone(ptrEl) {
71
77
  if (ptrEl !== pageContentEl) return;
72
- emit('ptrDone');
78
+ restProps.onPtrDone?.();
79
+ restProps.onptrdone?.();
73
80
  }
74
81
  function onInfinite(infEl) {
75
82
  if (infEl !== pageContentEl) return;
76
- emit('infinite');
83
+ restProps.onInfinite?.();
84
+ restProps.oninfinite?.();
77
85
  }
78
86
 
79
87
  function mountPageContent() {
@@ -101,7 +109,7 @@
101
109
  }
102
110
  }
103
111
 
104
- useTab(() => pageContentEl, emit);
112
+ useTab(() => pageContentEl, restProps);
105
113
 
106
114
  onMount(() => {
107
115
  f7ready(() => {
@@ -120,7 +128,7 @@
120
128
  data-ptr-distance={ptrDistance}
121
129
  data-ptr-mousewheel={ptrMousewheel || undefined}
122
130
  data-infinite-distance={infiniteDistance || undefined}
123
- {...restProps($$restProps)}
131
+ {...restProps}
124
132
  >
125
133
  {#if ptr && ptrPreloader && !ptrBottom}
126
134
  <div class="ptr-preloader">
@@ -131,7 +139,7 @@
131
139
  {#if infinite && infiniteTop && infinitePreloader}
132
140
  <Preloader class="infinite-scroll-preloader" />
133
141
  {/if}
134
- <slot />
142
+ {@render children?.()}
135
143
  {#if infinite && !infiniteTop && infinitePreloader}
136
144
  <Preloader class="infinite-scroll-preloader" />
137
145
  {/if}