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,38 +1,42 @@
1
1
  <script>
2
- import { createEventDispatcher, onMount, onDestroy } from 'svelte';
2
+ import { onMount, onDestroy } from 'svelte';
3
3
  import { colorClasses } from '../shared/mixins.js';
4
- import { classNames, noUndefinedProps, createEmitter } from '../shared/utils.js';
5
- import { restProps } from '../shared/rest-props.js';
4
+ import { classNames, noUndefinedProps } from '../shared/utils.js';
6
5
  import { app, f7ready } from '../shared/f7.js';
7
6
 
8
- const emit = createEmitter(createEventDispatcher, $$props);
7
+ let {
8
+ class: className,
9
+ mode = undefined,
10
+ value = undefined,
11
+ buttons = undefined,
12
+ customButtons = undefined,
13
+ dividers = undefined,
14
+ imageUrlText = undefined,
15
+ linkUrlText = undefined,
16
+ placeholder = undefined,
17
+ clearFormattingOnPaste = undefined,
18
+ resizable = false,
19
+ rootStart,
20
+ rootEnd,
21
+ root,
22
+ children,
23
+ ...restProps
24
+ } = $props();
9
25
 
10
- let className = undefined;
11
- export { className as class };
12
-
13
- export let mode = undefined;
14
- export let value = undefined;
15
- export let buttons = undefined;
16
- export let customButtons = undefined;
17
- export let dividers = undefined;
18
- export let imageUrlText = undefined;
19
- export let linkUrlText = undefined;
20
- export let placeholder = undefined;
21
- export let clearFormattingOnPaste = undefined;
22
- export let resizable = false;
23
-
24
- let el;
26
+ let el = $state(null);
25
27
  let f7TextEditor;
26
28
 
27
29
  export function instance() {
28
30
  return f7TextEditor;
29
31
  }
30
32
 
31
- $: classes = classNames(
32
- className,
33
- 'text-editor',
34
- resizable && 'text-editor-resizable',
35
- colorClasses($$props),
33
+ const classes = $derived(
34
+ classNames(
35
+ className,
36
+ 'text-editor',
37
+ resizable && 'text-editor-resizable',
38
+ colorClasses(restProps),
39
+ ),
36
40
  );
37
41
 
38
42
  function watchValue(newValue) {
@@ -41,40 +45,51 @@
41
45
  }
42
46
  }
43
47
 
44
- $: watchValue(value);
48
+ $effect(() => watchValue(value));
45
49
 
46
50
  function onChange(editor, editorValue) {
47
- emit('textEditorChange', [editorValue]);
51
+ restProps.onTextEditorChange?.(editorValue);
52
+ restProps.ontexteditorchange?.(editorValue);
48
53
  }
49
54
  function onInput(editor, editorValue) {
50
- emit('textEditorInput', [editorValue]);
55
+ restProps.onTextEditorInput?.(editorValue);
56
+ restProps.ontexteditorinput?.(editorValue);
51
57
  }
52
58
  function onFocus() {
53
- emit('textEditorFocus');
59
+ restProps.onTextEditorFocus?.();
60
+ restProps.ontexteditorfocus?.();
54
61
  }
55
62
  function onBlur() {
56
- emit('textEditorBlur');
63
+ restProps.onTextEditorBlur?.();
64
+ restProps.ontexteditorblur?.();
57
65
  }
58
66
  function onButtonClick(editor, button) {
59
- emit('textEditorButtonClick', [button]);
67
+ restProps.onTextEditorButtonClick?.(button);
68
+ restProps.ontexteditorbuttonclick?.(button);
60
69
  }
61
70
  function onKeyboardOpen() {
62
- emit('textEditorKeyboardOpen');
71
+ restProps.onTextEditorKeyboardOpen?.();
72
+ restProps.ontexteditorkeyboardopen?.();
63
73
  }
64
74
  function onKeyboardClose() {
65
- emit('textEditorKeyboardClose');
75
+ restProps.onTextEditorKeyboardClose?.();
76
+ restProps.ontexteditorkeyboardclose?.();
66
77
  }
67
78
  function onPopoverOpen() {
68
- emit('textEditorPopoverOpen');
79
+ restProps.onTextEditorPopoverOpen?.();
80
+ restProps.ontexteditorpopoveropen?.();
69
81
  }
70
82
  function onPopoverClose() {
71
- emit('textEditorPopoverClose');
83
+ restProps.onTextEditorPopoverClose?.();
84
+ restProps.ontexteditorpopoverclose?.();
72
85
  }
73
86
  const onInsertLink = (editor, url) => {
74
- emit('textEditorInsertLink', [url]);
87
+ restProps.onTextEditorInsertLink?.(url);
88
+ restProps.ontexteditorinsertlink?.(url);
75
89
  };
76
90
  const onInsertImage = (editor, url) => {
77
- emit('textEditorInsertImage', [url]);
91
+ restProps.onTextEditorInsertImage?.(url);
92
+ restProps.ontexteditorinsertimage?.(url);
78
93
  };
79
94
 
80
95
  onMount(() => {
@@ -116,11 +131,11 @@
116
131
  });
117
132
  </script>
118
133
 
119
- <div bind:this={el} class={classes} {...restProps($$restProps)}>
120
- <slot textEditor={f7TextEditor} name="root-start" />
134
+ <div bind:this={el} class={classes} {...restProps}>
135
+ {@render rootStart?.(f7TextEditor)}
121
136
  <div class="text-editor-content" contenteditable>
122
- <slot textEditor={f7TextEditor} />
137
+ {@render children?.(f7TextEditor)}
123
138
  </div>
124
- <slot textEditor={f7TextEditor} name="root-end" />
125
- <slot textEditor={f7TextEditor} name="root" />
139
+ {@render rootEnd?.(f7TextEditor)}
140
+ {@render root?.(f7TextEditor)}
126
141
  </div>
@@ -1,20 +1,20 @@
1
1
 
2
- import { SvelteComponent } from 'svelte';
2
+ import { SvelteComponent, Snippet } from 'svelte';
3
3
  import { HTMLAttributes } from 'svelte/elements';
4
4
 
5
5
  import { Toggle } from 'framework7/types';
6
6
 
7
7
 
8
- interface ToggleProps {
9
- init ?: boolean;
10
- checked ?: boolean;
11
- defaultChecked ?: boolean;
12
- disabled ?: boolean;
13
- readonly ?: boolean;
14
- name ?: string;
15
- value ?: string | number | Array<any>;
16
- tooltip ?: string;
17
- tooltipTrigger ?: string;
8
+ interface Props {
9
+ init?: boolean;
10
+ checked?: boolean;
11
+ defaultChecked?: boolean;
12
+ disabled?: boolean;
13
+ readonly?: boolean;
14
+ name?: string;
15
+ value?: string | number | Array<any>;
16
+ tooltip?: string;
17
+ tooltipTrigger?: string;
18
18
  color?: string;
19
19
  colorTheme?: string;
20
20
  textColor?: string;
@@ -22,15 +22,22 @@ interface ToggleProps {
22
22
  borderColor?: string;
23
23
  rippleColor?: string;
24
24
  dark?: boolean;
25
- onToggleChange ?: (...args: any[]) => void;
26
- onChange ?: (event?: any) => void;
25
+ onToggleChange?: (...args: any[]) => void;
26
+ onChange?: (event?: any) => void;
27
+ onchange?: () => void;
28
+ ontogglechange?: () => void;
27
29
  }
28
30
 
31
+ interface ToggleProps {}
32
+ interface ToggleProps extends Props {}
33
+
34
+ interface ToggleEvents extends Record<'',{}>{}
35
+
29
36
 
30
37
 
31
38
  declare class Toggle extends SvelteComponent<
32
- ToggleProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof ToggleProps>,
33
- { change: CustomEvent<void>; toggleChange: CustomEvent<void>; },
39
+ ToggleProps,
40
+ ToggleEvents,
34
41
  { }
35
42
  > {}
36
43
 
@@ -1,41 +1,40 @@
1
1
  <script>
2
- import { createEventDispatcher, onMount, onDestroy } from 'svelte';
2
+ import { onMount, onDestroy } from 'svelte';
3
3
  import { colorClasses } from '../shared/mixins.js';
4
- import { classNames, createEmitter } from '../shared/utils.js';
5
- import { restProps } from '../shared/rest-props.js';
4
+ import { classNames } from '../shared/utils.js';
6
5
  import { app, f7ready } from '../shared/f7.js';
7
6
  import { useTooltip } from '../shared/use-tooltip.js';
8
7
 
9
- const emit = createEmitter(createEventDispatcher, $$props);
8
+ let {
9
+ class: className,
10
+ init = true,
11
+ checked = undefined,
12
+ disabled = undefined,
13
+ readonly = undefined,
14
+ name = undefined,
15
+ value = undefined,
16
+ tooltip = undefined,
17
+ tooltipTrigger = undefined,
18
+ ...restProps
19
+ } = $props();
10
20
 
11
- let className = undefined;
12
- export { className as class };
13
-
14
- export let init = true;
15
- export let checked = undefined;
16
- export let disabled = undefined;
17
- export let readonly = undefined;
18
- export let name = undefined;
19
- export let value = undefined;
20
-
21
- export let tooltip = undefined;
22
- export let tooltipTrigger = undefined;
23
-
24
- let el;
25
- let inputEl;
21
+ let el = $state(null);
22
+ let inputEl = $state(null);
26
23
  let f7Toggle;
27
24
 
28
25
  export function instance() {
29
26
  return f7Toggle;
30
27
  }
31
28
 
32
- $: classes = classNames(
33
- 'toggle',
34
- className,
35
- {
36
- disabled,
37
- },
38
- colorClasses($$props),
29
+ const classes = $derived(
30
+ classNames(
31
+ 'toggle',
32
+ className,
33
+ {
34
+ disabled,
35
+ },
36
+ colorClasses(restProps),
37
+ ),
39
38
  );
40
39
 
41
40
  let initialWatched = false;
@@ -48,10 +47,11 @@
48
47
  f7Toggle.checked = isChecked;
49
48
  }
50
49
 
51
- $: watchChecked(checked);
50
+ $effect(() => watchChecked(checked));
52
51
 
53
52
  function onChange(event) {
54
- emit('change', [event]);
53
+ restProps.onChange?.(event);
54
+ restProps.onchange?.(event);
55
55
  }
56
56
 
57
57
  onMount(() => {
@@ -61,7 +61,8 @@
61
61
  el,
62
62
  on: {
63
63
  change(toggle) {
64
- emit('toggleChange', [toggle.checked]);
64
+ restProps.onToggleChange?.(toggle.checked);
65
+ restProps.ontogglechange?.(toggle.checked);
65
66
  checked = toggle.checked;
66
67
  },
67
68
  },
@@ -77,12 +78,7 @@
77
78
  });
78
79
  </script>
79
80
 
80
- <label
81
- bind:this={el}
82
- class={classes}
83
- {...restProps($$restProps)}
84
- use:useTooltip={{ tooltip, tooltipTrigger }}
85
- >
81
+ <label bind:this={el} class={classes} {...restProps} use:useTooltip={{ tooltip, tooltipTrigger }}>
86
82
  <input
87
83
  bind:this={inputEl}
88
84
  type="checkbox"
@@ -91,7 +87,7 @@
91
87
  {readonly}
92
88
  {checked}
93
89
  value={typeof value === 'undefined' ? '' : value}
94
- on:change={onChange}
90
+ onchange={onChange}
95
91
  />
96
- <span class="toggle-icon" />
92
+ <span class="toggle-icon"></span>
97
93
  </label>
@@ -0,0 +1,24 @@
1
+
2
+ import { SvelteComponent, Snippet } from 'svelte';
3
+ import { HTMLAttributes } from 'svelte/elements';
4
+
5
+
6
+ interface Props {
7
+ children?: Snippet;
8
+ }
9
+
10
+ interface ToolbarPaneProps {}
11
+ interface ToolbarPaneProps extends Props {}
12
+
13
+ interface ToolbarPaneEvents extends Record<'',{}>{}
14
+
15
+
16
+
17
+ declare class ToolbarPane extends SvelteComponent<
18
+ ToolbarPaneProps,
19
+ ToolbarPaneEvents,
20
+ { }
21
+ > {}
22
+
23
+ export { ToolbarPaneProps };
24
+ export default ToolbarPane;
@@ -0,0 +1,14 @@
1
+ <script>
2
+ import { colorClasses } from '../shared/mixins.js';
3
+ import { classNames } from '../shared/utils.js';
4
+
5
+ let { className, id, style, ref, children, ...restProps } = $props();
6
+
7
+ let el = $state(undefined);
8
+
9
+ const classes = $derived(classNames(className, 'toolbar-pane', colorClasses(restProps)));
10
+ </script>
11
+
12
+ <div bind:this={el} class={classes} {...restProps}>
13
+ {@render children?.()}
14
+ </div>
@@ -1,22 +1,22 @@
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 ToolbarProps {
7
- tabbar ?: boolean;
8
- icons ?: boolean;
9
- scrollable ?: boolean;
10
- hidden ?: boolean;
11
- outline ?: boolean;
12
- position ?: string;
13
- topMd ?: boolean;
14
- topIos ?: boolean;
15
- top ?: boolean;
16
- bottomMd ?: boolean;
17
- bottomIos ?: boolean;
18
- bottom ?: boolean;
19
- inner ?: boolean;
6
+ interface Props {
7
+ tabbar?: boolean;
8
+ icons?: boolean;
9
+ scrollable?: boolean;
10
+ hidden?: boolean;
11
+ outline?: boolean;
12
+ position?: string;
13
+ topMd?: boolean;
14
+ topIos?: boolean;
15
+ top?: boolean;
16
+ bottomMd?: boolean;
17
+ bottomIos?: boolean;
18
+ bottom?: boolean;
19
+ inner?: boolean;
20
20
  color?: string;
21
21
  colorTheme?: string;
22
22
  textColor?: string;
@@ -24,16 +24,26 @@ interface ToolbarProps {
24
24
  borderColor?: string;
25
25
  rippleColor?: string;
26
26
  dark?: boolean;
27
- onToolbarHide ?: (...args: any[]) => void;
28
- onToolbarShow ?: (...args: any[]) => void;
27
+ onToolbarHide?: (...args: any[]) => void;
28
+ onToolbarShow?: (...args: any[]) => void;
29
+ beforeInner?: Snippet;
30
+ children?: Snippet;
31
+ afterInner?: Snippet;
32
+ ontoolbarshow?: () => void;
33
+ ontoolbarhide?: () => void;
29
34
  }
30
35
 
36
+ interface ToolbarProps {}
37
+ interface ToolbarProps extends Props {}
38
+
39
+ interface ToolbarEvents extends Record<'',{}>{}
40
+
31
41
 
32
42
 
33
43
  declare class Toolbar extends SvelteComponent<
34
- ToolbarProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof ToolbarProps>,
35
- { toolbarShow: CustomEvent<void>; toolbarHide: CustomEvent<void>; },
36
- { 'before-inner' : {}; 'default' : {}; 'after-inner' : {}; }
44
+ ToolbarProps,
45
+ ToolbarEvents,
46
+ { }
37
47
  > {}
38
48
 
39
49
  export { ToolbarProps };
@@ -1,69 +1,77 @@
1
1
  <script>
2
- import { createEventDispatcher, onMount, onDestroy, afterUpdate } from 'svelte';
2
+ import { setContext, onMount, onDestroy } from 'svelte';
3
3
  import { colorClasses } from '../shared/mixins.js';
4
- import { classNames, createEmitter } from '../shared/utils.js';
5
- import { restProps } from '../shared/rest-props.js';
4
+ import { classNames } from '../shared/utils.js';
6
5
  import { app, f7ready } from '../shared/f7.js';
7
6
  import { useTheme } from '../shared/use-theme.js';
8
- import { setReactiveContext } from '../shared/set-reactive-context.js';
9
7
 
10
- const emit = createEmitter(createEventDispatcher, $$props);
8
+ let {
9
+ class: className,
10
+ tabbar = false,
11
+ icons = false,
12
+ scrollable = false,
13
+ hidden = false,
14
+ outline = true,
15
+ position = undefined,
16
+ topMd = undefined,
17
+ topIos = undefined,
18
+ top = undefined,
19
+ bottomMd = undefined,
20
+ bottomIos = undefined,
21
+ bottom = undefined,
22
+ inner = true,
23
+ f7Slot = 'fixed',
24
+ beforeInner,
25
+ children,
26
+ afterInner,
27
+ ...restProps
28
+ } = $props();
11
29
 
12
- let className = undefined;
13
- export { className as class };
14
-
15
- export let tabbar = false;
16
- export let icons = false;
17
- export let scrollable = false;
18
- export let hidden = false;
19
- export let outline = true;
20
- export let position = undefined;
21
- export let topMd = undefined;
22
- export let topIos = undefined;
23
- export let top = undefined;
24
- export let bottomMd = undefined;
25
- export let bottomIos = undefined;
26
- export let bottom = undefined;
27
- export let inner = true;
28
-
29
- export let f7Slot = 'fixed';
30
-
31
- let el;
30
+ let el = $state(undefined);
32
31
  let theme = useTheme((t) => {
33
32
  theme = t;
34
33
  });
35
34
 
36
- setReactiveContext('TabbarContext', () => ({
37
- tabbarHasIcons: icons,
35
+ setContext('TabbarContext', () => ({
36
+ value: {
37
+ tabbarHasIcons: icons,
38
+ },
38
39
  }));
39
40
 
40
- $: classes = classNames(
41
- className,
42
- 'toolbar',
43
- {
44
- tabbar,
45
- 'toolbar-bottom':
46
- (theme && theme.md && bottomMd) ||
47
- (theme && theme.ios && bottomIos) ||
48
- bottom ||
49
- position === 'bottom',
50
- 'toolbar-top':
51
- (theme && theme.md && topMd) || (theme && theme.ios && topIos) || top || position === 'top',
52
- 'tabbar-icons': icons,
53
- 'tabbar-scrollable': scrollable,
54
- 'toolbar-hidden': hidden,
55
- 'no-outline': !outline,
56
- },
57
- colorClasses($$props),
41
+ const classes = $derived(
42
+ classNames(
43
+ className,
44
+ 'toolbar',
45
+ {
46
+ tabbar,
47
+ 'toolbar-bottom':
48
+ (theme && theme.md && bottomMd) ||
49
+ (theme && theme.ios && bottomIos) ||
50
+ bottom ||
51
+ position === 'bottom',
52
+ 'toolbar-top':
53
+ (theme && theme.md && topMd) ||
54
+ (theme && theme.ios && topIos) ||
55
+ top ||
56
+ position === 'top',
57
+ 'tabbar-icons': icons,
58
+ 'tabbar-scrollable': scrollable,
59
+ 'toolbar-hidden': hidden,
60
+ 'no-outline': !outline,
61
+ },
62
+ colorClasses(restProps),
63
+ ),
58
64
  );
59
65
 
60
66
  function onShow(toolbarEl) {
61
67
  if (el !== toolbarEl) return;
62
- emit('toolbarShow');
68
+ restProps.onToolbarShow?.();
69
+ restProps.ontoolbarshow?.();
63
70
  }
64
71
  function onHide(toolbarEl) {
65
72
  if (el !== toolbarEl) return;
66
- emit('toolbarHide');
73
+ restProps.onToolbarHide?.();
74
+ restProps.ontoolbarhide?.();
67
75
  }
68
76
 
69
77
  onMount(() => {
@@ -74,7 +82,7 @@
74
82
  });
75
83
  });
76
84
 
77
- afterUpdate(() => {
85
+ $effect(() => {
78
86
  if (tabbar && app.f7 && el) {
79
87
  app.f7.toolbar.setHighlight(el);
80
88
  }
@@ -87,14 +95,14 @@
87
95
  });
88
96
  </script>
89
97
 
90
- <div bind:this={el} class={classes} data-f7-slot={f7Slot} {...restProps($$restProps)}>
91
- <slot name="before-inner" />
98
+ <div bind:this={el} class={classes} data-f7-slot={f7Slot} {...restProps}>
99
+ {@render beforeInner?.()}
92
100
  {#if inner}
93
101
  <div class="toolbar-inner">
94
- <slot />
102
+ {@render children?.()}
95
103
  </div>
96
104
  {:else}
97
- <slot />
105
+ {@render children?.()}
98
106
  {/if}
99
- <slot name="after-inner" />
107
+ {@render afterInner?.()}
100
108
  </div>
@@ -1,17 +1,17 @@
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 TreeviewItemProps {
7
- toggle ?: boolean;
8
- itemToggle ?: boolean;
9
- selectable ?: boolean;
10
- selected ?: boolean;
11
- opened ?: boolean;
12
- label ?: string;
13
- loadChildren ?: boolean;
14
- link ?: boolean | string;
6
+ interface Props {
7
+ toggle?: boolean;
8
+ itemToggle?: boolean;
9
+ selectable?: boolean;
10
+ selected?: boolean;
11
+ opened?: boolean;
12
+ label?: string | Snippet;
13
+ loadChildren?: boolean;
14
+ link?: boolean | string;
15
15
  color?: string;
16
16
  colorTheme?: string;
17
17
  textColor?: string;
@@ -65,18 +65,37 @@ interface TreeviewItemProps {
65
65
  iconMd?: string;
66
66
  iconColor?: string;
67
67
  iconSize?: string | number;
68
- onClick ?: (event?: any) => void;
69
- onTreeviewOpen ?: (el?: HTMLElement) => void;
70
- onTreeviewClose ?: (el?: HTMLElement) => void;
71
- onTreeviewLoadChildren ?: (el?: HTMLElement, done?: any) => void;
68
+ onClick?: (event?: any) => void;
69
+ onTreeviewOpen?: (el?: HTMLElement) => void;
70
+ onTreeviewClose?: (el?: HTMLElement) => void;
71
+ onTreeviewLoadChildren?: (el?: HTMLElement, done?: any) => void;
72
+ rootStart?: Snippet;
73
+ contentStart?: Snippet;
74
+ media?: Snippet;
75
+ labelStart?: Snippet;
76
+ content?: Snippet;
77
+ contentEnd?: Snippet;
78
+ root?: Snippet;
79
+ rootEnd?: Snippet;
80
+ childrenStart?: Snippet;
81
+ children?: Snippet;
82
+ onclick?: () => void;
83
+ ontreeviewopen?: () => void;
84
+ ontreeviewclose?: () => void;
85
+ ontreeviewloadchildren?: () => void;
72
86
  }
73
87
 
88
+ interface TreeviewItemProps {}
89
+ interface TreeviewItemProps extends Props {}
90
+
91
+ interface TreeviewItemEvents extends Record<'',{}>{}
92
+
74
93
 
75
94
 
76
95
  declare class TreeviewItem extends SvelteComponent<
77
- TreeviewItemProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof TreeviewItemProps>,
78
- { click: CustomEvent<void>; treeviewOpen: CustomEvent<void>; treeviewClose: CustomEvent<void>; treeviewLoadChildren: CustomEvent<void>; },
79
- { 'root-start' : {}; 'content-start' : {}; 'media' : {}; 'label-start' : {}; 'label' : {}; 'content' : {}; 'content-end' : {}; 'root' : {}; 'root-end' : {}; 'children-start' : {}; 'default' : {}; 'children' : {}; }
96
+ TreeviewItemProps,
97
+ TreeviewItemEvents,
98
+ { }
80
99
  > {}
81
100
 
82
101
  export { TreeviewItemProps };