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,47 +1,38 @@
1
1
  <script>
2
- import { createEventDispatcher } from 'svelte';
3
2
  import { colorClasses } from '../shared/mixins.js';
4
- import { classNames, plainText, createEmitter } from '../shared/utils.js';
5
- import { restProps } from '../shared/rest-props.js';
3
+ import { classNames, plainText } from '../shared/utils.js';
6
4
  import { useTooltip } from '../shared/use-tooltip.js';
7
5
 
8
- const emit = createEmitter(createEventDispatcher, $$props);
6
+ let {
7
+ class: className,
8
+ fabClose = false,
9
+ label = undefined,
10
+ target = undefined,
11
+ tooltip = undefined,
12
+ tooltipTrigger = undefined,
13
+ children,
14
+ ...restProps
15
+ } = $props();
9
16
 
10
- let className = undefined;
11
- export { className as class };
17
+ let el = $state(null);
12
18
 
13
- export let fabClose = false;
14
- export let label = undefined;
15
- export let target = undefined;
16
- export let tooltip = undefined;
17
- export let tooltipTrigger = undefined;
18
-
19
- let el;
20
-
21
- $: classes = classNames(
22
- className,
23
- {
24
- 'fab-close': fabClose,
25
- 'fab-label-button': label,
26
- },
27
- colorClasses($$props),
19
+ const classes = $derived(
20
+ classNames(
21
+ className,
22
+ { 'fab-close': fabClose, 'fab-label-button': label },
23
+ colorClasses(restProps),
24
+ ),
28
25
  );
29
-
30
- function onClick() {
31
- emit('click');
32
- }
33
26
  </script>
34
27
 
35
- <!-- svelte-ignore a11y-missing-attribute -->
36
28
  <a
37
29
  bind:this={el}
38
30
  {target}
39
31
  class={classes}
40
- on:click={onClick}
41
- {...restProps($$restProps)}
32
+ {...restProps}
42
33
  use:useTooltip={{ tooltip, tooltipTrigger }}
43
34
  >
44
- <slot />
35
+ {@render children?.()}
45
36
  {#if typeof label !== 'undefined'}
46
37
  <span class="fab-label">{plainText(label)}</span>
47
38
  {/if}
@@ -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 FabButtonsProps {
6
+ interface Props {
7
7
  position?: string;
8
8
  color?: string;
9
9
  colorTheme?: string;
@@ -12,14 +12,20 @@ interface FabButtonsProps {
12
12
  borderColor?: string;
13
13
  rippleColor?: string;
14
14
  dark?: boolean;
15
+ children?: Snippet;
15
16
  }
16
17
 
18
+ interface FabButtonsProps {}
19
+ interface FabButtonsProps extends Props {}
20
+
21
+ interface FabButtonsEvents extends Record<'',{}>{}
22
+
17
23
 
18
24
 
19
25
  declare class FabButtons extends SvelteComponent<
20
- FabButtonsProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof FabButtonsProps>,
21
- { },
22
- { 'default' : {}; }
26
+ FabButtonsProps,
27
+ FabButtonsEvents,
28
+ { }
23
29
  > {}
24
30
 
25
31
  export { FabButtonsProps };
@@ -1,21 +1,14 @@
1
1
  <script>
2
2
  import { colorClasses } from '../shared/mixins.js';
3
3
  import { classNames } from '../shared/utils.js';
4
- import { restProps } from '../shared/rest-props.js';
5
4
 
6
- let className = undefined;
7
- export { className as class };
5
+ let { class: className, position = 'top', children, ...restProps } = $props();
8
6
 
9
- export let position = 'top';
10
-
11
- $: classes = classNames(
12
- className,
13
- 'fab-buttons',
14
- `fab-buttons-${position}`,
15
- colorClasses($$props),
7
+ const classes = $derived(
8
+ classNames(className, 'fab-buttons', `fab-buttons-${position}`, colorClasses(restProps)),
16
9
  );
17
10
  </script>
18
11
 
19
- <div class={classes} {...restProps($$restProps)}>
20
- <slot />
12
+ <div class={classes} {...restProps}>
13
+ {@render children?.()}
21
14
  </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 FabProps {
7
- morphTo ?: string;
8
- href ?: boolean | string;
9
- target ?: string;
10
- text ?: string;
11
- position ?: string;
12
- tooltip ?: string;
13
- tooltipTrigger ?: string;
14
- onClick ?: (event?: any) => void;
6
+ interface Props {
7
+ morphTo?: string;
8
+ href?: boolean | string;
9
+ target?: string;
10
+ text?: string | Snippet;
11
+ position?: string;
12
+ tooltip?: string;
13
+ tooltipTrigger?: string;
14
+ onClick?: (event?: any) => void;
15
15
  color?: string;
16
16
  colorTheme?: string;
17
17
  textColor?: string;
@@ -19,14 +19,23 @@ interface FabProps {
19
19
  borderColor?: string;
20
20
  rippleColor?: string;
21
21
  dark?: boolean;
22
+ children?: Snippet;
23
+ link?: Snippet;
24
+ root?: Snippet;
25
+ onclick?: () => void;
22
26
  }
23
27
 
28
+ interface FabProps {}
29
+ interface FabProps extends Props {}
30
+
31
+ interface FabEvents extends Record<'',{}>{}
32
+
24
33
 
25
34
 
26
35
  declare class Fab extends SvelteComponent<
27
- FabProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof FabProps>,
28
- { click: CustomEvent<void>; },
29
- { 'default' : {}; 'text' : {}; 'link' : {}; 'root' : {}; }
36
+ FabProps,
37
+ FabEvents,
38
+ { }
30
39
  > {}
31
40
 
32
41
  export { FabProps };
@@ -1,49 +1,45 @@
1
1
  <script>
2
- import { createEventDispatcher, onMount, afterUpdate } from 'svelte';
2
+ import { onMount } 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 { 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
+ morphTo = undefined,
11
+ href = undefined,
12
+ target = undefined,
13
+ text = undefined,
14
+ link = undefined,
15
+ root = undefined,
16
+ position = 'right-bottom',
17
+ tooltip = undefined,
18
+ tooltipTrigger = undefined,
19
+ f7Slot = 'fixed',
20
+ children,
21
+ ...restProps
22
+ } = $props();
10
23
 
11
- let className = undefined;
12
- export { className as class };
24
+ let el = $state(null);
25
+ let linkEl = $state(null);
26
+ let textEl = $state(null);
13
27
 
14
- export let morphTo = undefined;
15
- export let href = undefined;
16
- export let target = undefined;
17
- export let text = undefined;
18
- export let position = 'right-bottom';
19
- export let tooltip = undefined;
20
- export let tooltipTrigger = undefined;
21
- export let f7Slot = 'fixed';
28
+ const hrefComputed = $derived(href === true ? '#' : href || undefined);
22
29
 
23
- let el;
24
- let linkEl;
25
- let textEl;
26
-
27
- $: hrefComputed = href === true ? '#' : href || undefined;
28
-
29
- // eslint-disable-next-line
30
- $: hasTextSlots = $$slots.text;
31
-
32
- $: classes = classNames(
33
- className,
34
- 'fab',
35
- `fab-${position}`,
36
- {
37
- 'fab-morph': morphTo,
38
- 'fab-extended': text || hasTextSlots || typeof textEl !== 'undefined',
39
- },
40
- colorClasses($$props),
30
+ const classes = $derived(
31
+ classNames(
32
+ className,
33
+ 'fab',
34
+ `fab-${position}`,
35
+ {
36
+ 'fab-morph': morphTo,
37
+ 'fab-extended': text || textEl !== null,
38
+ },
39
+ colorClasses(restProps),
40
+ ),
41
41
  );
42
42
 
43
- function onClick() {
44
- emit('click');
45
- }
46
-
47
43
  onMount(() => {
48
44
  f7ready(() => {
49
45
  const dom7 = app.f7.$;
@@ -53,7 +49,7 @@
53
49
  }
54
50
  });
55
51
  });
56
- afterUpdate(() => {
52
+ $effect(() => {
57
53
  if (!app.f7) return;
58
54
  const dom7 = app.f7.$;
59
55
  const rootEls = dom7(linkEl).children('.fab-buttons');
@@ -63,28 +59,36 @@
63
59
  });
64
60
  </script>
65
61
 
66
- <div
67
- class={classes}
68
- data-morph-to={morphTo}
69
- bind:this={el}
70
- data-f7-slot={f7Slot}
71
- {...restProps($$restProps)}
72
- >
62
+ <div class={classes} data-morph-to={morphTo} bind:this={el} data-f7-slot={f7Slot} {...restProps}>
73
63
  <a
74
64
  bind:this={linkEl}
75
- on:click={onClick}
65
+ onclick={(e) => {
66
+ restProps.onclick?.(e);
67
+ restProps.onclick?.(e);
68
+ }}
76
69
  {target}
77
70
  href={hrefComputed}
78
71
  use:useTooltip={{ tooltip, tooltipTrigger }}
79
72
  >
80
- <slot />
81
- {#if typeof text !== 'undefined' || hasTextSlots}
73
+ {@render children?.()}
74
+ {#if typeof text !== 'undefined'}
82
75
  <div class="fab-text" bind:this={textEl}>
83
- {plainText(text)}
84
- <slot name="text" />
76
+ {#if typeof text === 'function'}
77
+ {@render text?.()}
78
+ {:else if typeof text !== 'undefined'}
79
+ {text}
80
+ {/if}
85
81
  </div>
86
82
  {/if}
87
- <slot name="link" />
83
+ {#if typeof link === 'function'}
84
+ {@render link?.()}
85
+ {:else if typeof link !== 'undefined'}
86
+ {link}
87
+ {/if}
88
88
  </a>
89
- <slot name="root" />
89
+ {#if typeof root === 'function'}
90
+ {@render root?.()}
91
+ {:else if typeof root !== 'undefined'}
92
+ {root}
93
+ {/if}
90
94
  </div>
@@ -1,31 +1,36 @@
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 GaugeProps {
7
- type ?: string;
8
- value ?: number | string;
9
- size ?: number | string;
10
- bgColor ?: string;
11
- borderBgColor ?: string;
12
- borderColor ?: string;
13
- borderWidth ?: number | string;
14
- valueText ?: number | string;
15
- valueTextColor ?: string;
16
- valueFontSize ?: number | string;
17
- valueFontWeight ?: number | string;
18
- labelText ?: string;
19
- labelTextColor ?: string;
20
- labelFontSize ?: number | string;
21
- labelFontWeight ?: number | string;
6
+ interface Props {
7
+ type?: string;
8
+ value?: number | string;
9
+ size?: number | string;
10
+ bgColor?: string;
11
+ borderBgColor?: string;
12
+ borderColor?: string;
13
+ borderWidth?: number | string;
14
+ valueText?: number | string;
15
+ valueTextColor?: string;
16
+ valueFontSize?: number | string;
17
+ valueFontWeight?: number | string;
18
+ labelText?: string;
19
+ labelTextColor?: string;
20
+ labelFontSize?: number | string;
21
+ labelFontWeight?: number | string;
22
22
  }
23
23
 
24
+ interface GaugeProps {}
25
+ interface GaugeProps extends Props {}
26
+
27
+ interface GaugeEvents extends Record<'',{}>{}
28
+
24
29
 
25
30
 
26
31
  declare class Gauge extends SvelteComponent<
27
- GaugeProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof GaugeProps>,
28
- { },
32
+ GaugeProps,
33
+ GaugeEvents,
29
34
  { }
30
35
  > {}
31
36
 
@@ -1,35 +1,35 @@
1
1
  <script>
2
2
  import { classNames } from '../shared/utils.js';
3
- import { restProps } from '../shared/rest-props.js';
4
3
 
5
- let className = undefined;
6
- export { className as class };
4
+ let {
5
+ class: className,
6
+ type = 'circle',
7
+ value = 0,
8
+ size = 200,
9
+ bgColor = 'transparent',
10
+ borderBgColor = '#eeeeee',
11
+ borderColor = '#000000',
12
+ borderWidth = 10,
13
+ valueText = undefined,
14
+ valueTextColor = '#000000',
15
+ valueFontSize = 31,
16
+ valueFontWeight = 500,
17
+ labelText = undefined,
18
+ labelTextColor = '#888888',
19
+ labelFontSize = 14,
20
+ labelFontWeight = 400,
21
+ ...restProps
22
+ } = $props();
7
23
 
8
- export let type = 'circle';
9
- export let value = 0;
10
- export let size = 200;
11
- export let bgColor = 'transparent';
12
- export let borderBgColor = '#eeeeee';
13
- export let borderColor = '#000000';
14
- export let borderWidth = 10;
15
- export let valueText = undefined;
16
- export let valueTextColor = '#000000';
17
- export let valueFontSize = 31;
18
- export let valueFontWeight = 500;
19
- export let labelText = undefined;
20
- export let labelTextColor = '#888888';
21
- export let labelFontSize = 14;
22
- export let labelFontWeight = 400;
24
+ const classes = $derived(classNames(className, 'gauge'));
23
25
 
24
- $: classes = classNames(className, 'gauge');
25
-
26
- $: semiCircle = type === 'semicircle';
27
- $: radius = size / 2 - borderWidth / 2;
28
- $: length = 2 * Math.PI * radius;
29
- $: progress = Math.max(Math.min(value, 1), 0);
26
+ const semiCircle = $derived(type === 'semicircle');
27
+ const radius = $derived(size / 2 - borderWidth / 2);
28
+ const length = $derived(2 * Math.PI * radius);
29
+ const progress = $derived(Math.max(Math.min(value, 1), 0));
30
30
  </script>
31
31
 
32
- <div class={classes} {...restProps($$restProps)}>
32
+ <div class={classes} {...restProps}>
33
33
  <svg
34
34
  class="gauge-svg"
35
35
  width={`${size}px`}
@@ -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 IconProps {
7
- material ?: string;
8
- f7 ?: string;
9
- icon ?: string;
10
- ios ?: string;
11
- md ?: string;
12
- tooltip ?: string;
13
- tooltipTrigger ?: string;
14
- size ?: string | number;
6
+ interface Props {
7
+ material?: string;
8
+ f7?: string;
9
+ icon?: string;
10
+ ios?: string;
11
+ md?: string;
12
+ tooltip?: string;
13
+ tooltipTrigger?: string;
14
+ size?: string | number;
15
15
  color?: string;
16
16
  colorTheme?: string;
17
17
  textColor?: string;
@@ -19,14 +19,20 @@ interface IconProps {
19
19
  borderColor?: string;
20
20
  rippleColor?: string;
21
21
  dark?: boolean;
22
+ children?: Snippet;
22
23
  }
23
24
 
25
+ interface IconProps {}
26
+ interface IconProps extends Props {}
27
+
28
+ interface IconEvents extends Record<'',{}>{}
29
+
24
30
 
25
31
 
26
32
  declare class Icon extends SvelteComponent<
27
- IconProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof IconProps>,
28
- { },
29
- { 'default' : {}; }
33
+ IconProps,
34
+ IconEvents,
35
+ { }
30
36
  > {}
31
37
 
32
38
  export { IconProps };
@@ -1,73 +1,72 @@
1
1
  <script>
2
2
  import { colorClasses } from '../shared/mixins.js';
3
3
  import { classNames } from '../shared/utils.js';
4
- import { restProps } from '../shared/rest-props.js';
5
4
  import { useTooltip } from '../shared/use-tooltip.js';
6
5
  import { useTheme } from '../shared/use-theme.js';
6
+ let {
7
+ class: className,
8
+ style = undefined,
9
+ material = undefined,
10
+ f7 = undefined,
11
+ icon = undefined,
12
+ ios = undefined,
13
+ md = undefined,
14
+ tooltip = undefined,
15
+ tooltipTrigger = undefined,
16
+ size = undefined,
17
+ children,
18
+ ...restProps
19
+ } = $props();
7
20
 
8
- export let style = undefined;
9
-
10
- let className = undefined;
11
- export { className as class };
12
-
13
- export let material = undefined;
14
- export let f7 = undefined;
15
- export let icon = undefined;
16
- export let ios = undefined;
17
- export let md = undefined;
18
- export let tooltip = undefined;
19
- export let tooltipTrigger = undefined;
20
- export let size = undefined;
21
-
22
- let el;
21
+ let el = $state(null);
23
22
  let theme = useTheme((t) => {
24
23
  theme = t;
25
24
  });
26
25
 
27
- let classes = {
28
- icon: true,
29
- };
30
-
31
- let themeIcon;
32
-
33
- $: if (theme) {
34
- if (theme.ios) themeIcon = ios;
35
- if (theme.md) themeIcon = md;
36
- }
26
+ let themeIcon = $derived.by(() => {
27
+ if (theme) {
28
+ if (theme.ios) return ios;
29
+ if (theme.md) return md;
30
+ }
31
+ });
37
32
 
38
- $: if (themeIcon) {
39
- classes = {
40
- icon: true,
41
- };
42
- const parts = themeIcon.split(':');
43
- const prop = parts[0];
44
- const value = parts[1];
45
- if (prop === 'material' || prop === 'f7') {
46
- classes['material-icons'] = prop === 'material';
47
- classes['f7-icons'] = prop === 'f7';
48
- if (prop === 'icon') {
49
- classes[value] = true;
33
+ const classes = $derived.by(() => {
34
+ let res;
35
+ if (themeIcon) {
36
+ res = {
37
+ icon: true,
38
+ };
39
+ const parts = themeIcon.split(':');
40
+ const prop = parts[0];
41
+ const value = parts[1];
42
+ if (prop === 'material' || prop === 'f7') {
43
+ res['material-icons'] = prop === 'material';
44
+ res['f7-icons'] = prop === 'f7';
45
+ if (prop === 'icon') {
46
+ res[value] = true;
47
+ }
48
+ } else {
49
+ if (themeIcon.includes(':')) {
50
+ themeIcon = themeIcon
51
+ .split(' ')
52
+ .map((el) => el.replace('icon:', ''))
53
+ .join(' ');
54
+ }
55
+ res[themeIcon] = true;
50
56
  }
57
+ if (icon) res[icon] = true;
51
58
  } else {
52
- if (themeIcon.includes(':')) {
53
- themeIcon = themeIcon
54
- .split(' ')
55
- .map((el) => el.replace('icon:', ''))
56
- .join(' ');
57
- }
58
- classes[themeIcon] = true;
59
+ res = {
60
+ icon: true,
61
+ 'material-icons': material,
62
+ 'f7-icons': f7,
63
+ };
64
+ if (icon) res[icon] = true;
59
65
  }
60
- if (icon) classes[icon] = true;
61
- } else {
62
- classes = {
63
- icon: true,
64
- 'material-icons': material,
65
- 'f7-icons': f7,
66
- };
67
- if (icon) classes[icon] = true;
68
- }
66
+ return res;
67
+ });
69
68
 
70
- $: iconClasses = classNames(className, classes, colorClasses($$props));
69
+ const iconClasses = $derived(classNames(className, classes, colorClasses(restProps)));
71
70
 
72
71
  function iconTextComputed(t) {
73
72
  let textComputed = material || f7;
@@ -78,24 +77,27 @@
78
77
  }
79
78
  return textComputed;
80
79
  }
81
- $: iconText = iconTextComputed(theme);
80
+ const iconText = $derived(iconTextComputed(theme));
82
81
 
83
- $: iconSize = typeof size === 'number' || parseFloat(size) === size * 1 ? `${size}px` : size;
82
+ const iconSize = $derived(
83
+ typeof size === 'number' || parseFloat(size) === size * 1 ? `${size}px` : size,
84
+ );
84
85
 
85
- $: iconStyle =
86
+ const iconStyle = $derived(
86
87
  (style || '') +
87
- (iconSize
88
- ? `;font-size: ${iconSize}; width: ${iconSize}; height: ${iconSize}`.replace(';;', '')
89
- : '');
88
+ (iconSize
89
+ ? `;font-size: ${iconSize}; width: ${iconSize}; height: ${iconSize}`.replace(';;', '')
90
+ : ''),
91
+ );
90
92
  </script>
91
93
 
92
94
  <i
93
95
  style={iconStyle}
94
96
  class={iconClasses}
95
97
  bind:this={el}
96
- {...restProps($$restProps)}
98
+ {...restProps}
97
99
  use:useTooltip={{ tooltip, tooltipTrigger }}
98
100
  >
99
101
  {iconText || ''}
100
- <slot />
102
+ {@render children?.()}
101
103
  </i>