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,63 +1,60 @@
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 { modalStateClasses } from '../shared/modal-state-classes.js';
8
7
 
9
- const emit = createEmitter(createEventDispatcher, $$props);
8
+ let {
9
+ class: className,
10
+ style = '',
11
+ opened = undefined,
12
+ animate = undefined,
13
+ containerEl = undefined,
14
+ children,
15
+ ...restProps
16
+ } = $props();
10
17
 
11
- let className = undefined;
12
- export { className as class };
13
-
14
- export let style = '';
15
- export let opened = undefined;
16
- export let animate = undefined;
17
- export let containerEl = undefined;
18
-
19
- let el;
20
- let f7LoginScreen;
21
-
22
- const state = {
23
- isOpened: opened,
24
- isClosing: false,
25
- };
18
+ let el = $state(null);
19
+ let f7LoginScreen = $state(null);
20
+ let isOpened = $state(opened);
21
+ let isClosing = $state(false);
26
22
 
27
23
  export function instance() {
28
24
  return f7LoginScreen;
29
25
  }
30
26
 
31
- $: classes = classNames(
32
- className,
33
- 'login-screen',
34
- modalStateClasses(state),
35
- colorClasses($$props),
27
+ const classes = $derived(
28
+ classNames(
29
+ className,
30
+ 'login-screen',
31
+ modalStateClasses({ isOpened, isClosing }),
32
+ colorClasses(restProps),
33
+ ),
36
34
  );
37
35
 
38
36
  function onOpen(instance) {
39
- Object.assign(state, {
40
- isOpened: true,
41
- isClosing: false,
42
- });
43
- emit('loginscreenOpen loginScreenOpen', [instance]);
37
+ isOpened = true;
38
+ isClosing = false;
39
+ restProps.onLoginScreenOpen?.(instance);
40
+ restProps.onloginscreenopen?.();
44
41
  opened = true;
45
42
  }
46
43
  function onOpened(instance) {
47
- emit('loginscreenOpened loginScreenOpened', [instance]);
44
+ restProps.onLoginScreenOpened?.(instance);
45
+ restProps.onloginscreenopened?.();
48
46
  }
49
47
  function onClose(instance) {
50
- Object.assign(state, {
51
- isOpened: false,
52
- isClosing: true,
53
- });
54
- emit('loginscreenClose loginScreenClose', [instance]);
48
+ isOpened = false;
49
+ isClosing = true;
50
+ restProps.onLoginScreenClose?.(instance);
51
+ restProps.onloginscreenclose?.();
52
+ opened = false;
55
53
  }
56
54
  function onClosed(instance) {
57
- Object.assign(state, {
58
- isClosing: false,
59
- });
60
- emit('loginscreenClosed loginScreenClosed', [instance]);
55
+ isClosing = false;
56
+ restProps.onLoginScreenClosed?.(instance);
57
+ restProps.onloginscreenclosed?.();
61
58
  opened = false;
62
59
  }
63
60
 
@@ -72,7 +69,7 @@
72
69
  else f7LoginScreen.close();
73
70
  }
74
71
 
75
- $: watchOpened(opened);
72
+ $effect(() => watchOpened(opened));
76
73
 
77
74
  onMount(() => {
78
75
  const params = {
@@ -100,6 +97,6 @@
100
97
  });
101
98
  </script>
102
99
 
103
- <div class={classes} bind:this={el} {style} {...restProps($$restProps)}>
104
- <slot loginScreen={f7LoginScreen} />
100
+ <div class={classes} bind:this={el} {style} {...restProps}>
101
+ {@render children?.(f7LoginScreen)}
105
102
  </div>
@@ -1,26 +1,26 @@
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 MessageProps {
7
- text ?: string;
8
- name ?: string;
9
- avatar ?: string;
10
- type ?: string;
11
- image ?: string;
12
- header ?: string;
13
- footer ?: string;
14
- textHeader ?: string;
15
- textFooter ?: string;
16
- first ?: boolean;
17
- last ?: boolean;
18
- tail ?: boolean;
19
- sameName ?: boolean;
20
- sameHeader ?: boolean;
21
- sameFooter ?: boolean;
22
- sameAvatar ?: boolean;
23
- typing ?: boolean;
6
+ interface Props {
7
+ text?: string | Snippet;
8
+ name?: string | Snippet;
9
+ avatar?: string | Snippet;
10
+ type?: string;
11
+ image?: string | Snippet;
12
+ header?: string | Snippet;
13
+ footer?: string | Snippet;
14
+ textHeader?: string | Snippet;
15
+ textFooter?: string | Snippet;
16
+ first?: boolean;
17
+ last?: boolean;
18
+ tail?: boolean;
19
+ sameName?: boolean;
20
+ sameHeader?: boolean;
21
+ sameFooter?: boolean;
22
+ sameAvatar?: boolean;
23
+ typing?: boolean;
24
24
  color?: string;
25
25
  colorTheme?: string;
26
26
  textColor?: string;
@@ -28,21 +28,40 @@ interface MessageProps {
28
28
  borderColor?: string;
29
29
  rippleColor?: string;
30
30
  dark?: boolean;
31
- onClick ?: (event?: any) => void;
32
- onClickName ?: (event?: any) => void;
33
- onClickText ?: (event?: any) => void;
34
- onClickAvatar ?: (event?: any) => void;
35
- onClickHeader ?: (event?: any) => void;
36
- onClickFooter ?: (event?: any) => void;
37
- onClickBubble ?: (event?: any) => void;
31
+ onClick?: (event?: any) => void;
32
+ onClickName?: (event?: any) => void;
33
+ onClickText?: (event?: any) => void;
34
+ onClickAvatar?: (event?: any) => void;
35
+ onClickHeader?: (event?: any) => void;
36
+ onClickFooter?: (event?: any) => void;
37
+ onClickBubble?: (event?: any) => void;
38
+ start?: Snippet;
39
+ contentStart?: Snippet;
40
+ bubbleStart?: Snippet;
41
+ bubbleEnd?: Snippet;
42
+ children?: Snippet;
43
+ contentEnd?: Snippet;
44
+ end?: Snippet;
45
+ onclick?: () => void;
46
+ onclickname?: () => void;
47
+ onclicktext?: () => void;
48
+ onclickavatar?: () => void;
49
+ onclickheader?: () => void;
50
+ onclickfooter?: () => void;
51
+ onclickbubble?: () => void;
38
52
  }
39
53
 
54
+ interface MessageProps {}
55
+ interface MessageProps extends Props {}
56
+
57
+ interface MessageEvents extends Record<'',{}>{}
58
+
40
59
 
41
60
 
42
61
  declare class Message extends SvelteComponent<
43
- MessageProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof MessageProps>,
44
- { click: CustomEvent<void>; clickName: CustomEvent<void>; clickText: CustomEvent<void>; clickAvatar: CustomEvent<void>; clickHeader: CustomEvent<void>; clickFooter: CustomEvent<void>; clickBubble: CustomEvent<void>; },
45
- { 'start' : {}; 'avatar' : {}; 'content-start' : {}; 'name' : {}; 'header' : {}; 'bubble-start' : {}; 'image' : {}; 'text-header' : {}; 'text' : {}; 'text-footer' : {}; 'bubble-end' : {}; 'default' : {}; 'footer' : {}; 'content-end' : {}; 'end' : {}; }
62
+ MessageProps,
63
+ MessageEvents,
64
+ { }
46
65
  > {}
47
66
 
48
67
  export { MessageProps };
@@ -1,137 +1,166 @@
1
1
  <script>
2
2
  /* eslint-disable no-undef */
3
- import { createEventDispatcher } from 'svelte';
4
3
  import { colorClasses } from '../shared/mixins.js';
5
- import { classNames, plainText, createEmitter } from '../shared/utils.js';
6
- import { restProps } from '../shared/rest-props.js';
4
+ import { classNames, plainText } from '../shared/utils.js';
7
5
 
8
- const emit = createEmitter(createEventDispatcher, $$props);
6
+ let {
7
+ class: className,
8
+ text = undefined,
9
+ htmlText = undefined,
10
+ name = undefined,
11
+ avatar = undefined,
12
+ type = 'sent',
13
+ image = undefined,
14
+ header = undefined,
15
+ footer = undefined,
16
+ textHeader = undefined,
17
+ textFooter = undefined,
18
+ first = undefined,
19
+ last = undefined,
20
+ tail = undefined,
21
+ sameName = undefined,
22
+ sameHeader = undefined,
23
+ sameFooter = undefined,
24
+ sameAvatar = undefined,
25
+ typing = undefined,
26
+ start = undefined,
27
+ contentStart = undefined,
28
+ contentEnd = undefined,
29
+ end = undefined,
30
+ bubbleStart = undefined,
31
+ bubbleEnd = undefined,
32
+ children,
33
+ ...restProps
34
+ } = $props();
9
35
 
10
- let className = undefined;
11
- export { className as class };
12
-
13
- export let text = undefined;
14
- export let htmlText = undefined;
15
- export let name = undefined;
16
- export let avatar = undefined;
17
- export let type = 'sent';
18
- export let image = undefined;
19
- export let header = undefined;
20
- export let footer = undefined;
21
- export let textHeader = undefined;
22
- export let textFooter = undefined;
23
- export let first = undefined;
24
- export let last = undefined;
25
- export let tail = undefined;
26
- export let sameName = undefined;
27
- export let sameHeader = undefined;
28
- export let sameFooter = undefined;
29
- export let sameAvatar = undefined;
30
- export let typing = undefined;
31
-
32
- $: classes = classNames(
33
- className,
34
- 'message',
35
- {
36
- 'message-sent': type === 'sent' || !type,
37
- 'message-received': type === 'received',
38
- 'message-typing': typing,
39
- 'message-first': first,
40
- 'message-last': last,
41
- 'message-tail': tail,
42
- 'message-same-name': sameName,
43
- 'message-same-header': sameHeader,
44
- 'message-same-footer': sameFooter,
45
- 'message-same-avatar': sameAvatar,
46
- },
47
- colorClasses($$props),
36
+ const classes = $derived(
37
+ classNames(
38
+ className,
39
+ 'message',
40
+ {
41
+ 'message-sent': type === 'sent' || !type,
42
+ 'message-received': type === 'received',
43
+ 'message-typing': typing,
44
+ 'message-first': first,
45
+ 'message-last': last,
46
+ 'message-tail': tail,
47
+ 'message-same-name': sameName,
48
+ 'message-same-header': sameHeader,
49
+ 'message-same-footer': sameFooter,
50
+ 'message-same-avatar': sameAvatar,
51
+ },
52
+ colorClasses(restProps),
53
+ ),
48
54
  );
49
55
 
50
- $: hasAvatarSlots = $$slots.avatar;
51
- $: hasNameSlots = $$slots.name;
52
- $: hasHeaderSlots = $$slots.header;
53
- $: hasImageSlots = $$slots.image;
54
- $: hasTextHeaderSlots = $$slots['text-header'];
55
- $: hasTextFooterSlots = $$slots['text-footer'];
56
- $: hasTextSlots = $$slots.text;
57
- $: hasFooterSlots = $$slots.footer;
56
+ const hasAvatarSlots = $derived(avatar);
57
+ const hasNameSlots = $derived(name);
58
+ const hasHeaderSlots = $derived(header);
59
+ const hasImageSlots = $derived(image);
60
+ const hasTextHeaderSlots = $derived(textHeader);
61
+ const hasTextFooterSlots = $derived(textFooter);
62
+ const hasTextSlots = $derived(text);
63
+ const hasFooterSlots = $derived(footer);
58
64
 
59
65
  function onClick() {
60
- emit('click');
66
+ restProps.onclick?.();
61
67
  }
62
68
 
63
69
  function onNameClick() {
64
- emit('clickName');
70
+ restProps.onclickname?.();
71
+ restProps.onClickName?.();
65
72
  }
66
73
 
67
74
  function onTextClick() {
68
- emit('clickText');
75
+ restProps.onclicktext?.();
76
+ restProps.onClickText?.();
69
77
  }
70
78
 
71
79
  function onAvatarClick() {
72
- emit('clickAvatar');
80
+ restProps.onclickavatar?.();
81
+ restProps.onClickAvatar?.();
73
82
  }
74
83
 
75
84
  function onHeaderClick() {
76
- emit('clickHeader');
85
+ restProps.onclickheader?.();
86
+ restProps.onClickHeader?.();
77
87
  }
78
88
 
79
89
  function onFooterClick() {
80
- emit('clickFooter');
90
+ restProps.onclickfooter?.();
91
+ restProps.onClickFooter?.();
81
92
  }
82
93
 
83
94
  function onBubbleClick() {
84
- emit('clickBubble');
95
+ restProps.onclickbubble?.();
96
+ restProps.onClickBubble?.();
85
97
  }
86
98
  </script>
87
99
 
88
- <!-- svelte-ignore a11y-missing-attribute -->
89
- <div class={classes} on:click={onClick} {...restProps($$restProps)}>
90
- <slot name="start" />
100
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
101
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
102
+ <div class={classes} onclick={onClick} {...restProps}>
103
+ {@render start?.()}
91
104
  {#if avatar || hasAvatarSlots}
92
105
  <div
93
- on:click={onAvatarClick}
106
+ onclick={onAvatarClick}
94
107
  class="message-avatar"
95
- style={avatar ? `background-image: url(${avatar})` : undefined}
108
+ style={avatar && typeof avatar === 'string' ? `background-image: url(${avatar})` : undefined}
96
109
  >
97
- <slot name="avatar" />
110
+ {#if typeof avatar === 'function'}
111
+ {@render avatar?.()}
112
+ {/if}
98
113
  </div>
99
114
  {/if}
100
115
  <div class="message-content">
101
- <slot name="content-start" />
116
+ {@render contentStart?.()}
102
117
  {#if hasNameSlots || name}
103
- <div class="message-name" on:click={onNameClick}>
104
- {plainText(name)}
105
- <slot name="name" />
118
+ <div class="message-name" onclick={onNameClick}>
119
+ {#if typeof name === 'function'}
120
+ {@render name?.()}
121
+ {:else}
122
+ {name}
123
+ {/if}
106
124
  </div>
107
125
  {/if}
108
126
  {#if hasHeaderSlots || header}
109
- <div class="message-header" on:click={onHeaderClick}>
110
- {plainText(header)}
111
- <slot name="header" />
127
+ <div class="message-header" onclick={onHeaderClick}>
128
+ {#if typeof header === 'function'}
129
+ {@render header?.()}
130
+ {:else}
131
+ {header}
132
+ {/if}
112
133
  </div>
113
134
  {/if}
114
- <div class="message-bubble" on:click={onBubbleClick}>
115
- <slot name="bubble-start" />
135
+ <div class="message-bubble" onclick={onBubbleClick}>
136
+ {@render bubbleStart?.()}
116
137
  {#if hasImageSlots || image}
117
138
  <div class="message-image">
118
- {#if image}
139
+ {#if typeof image === 'function'}
140
+ {@render image?.()}
141
+ {:else if typeof image === 'string' && image}
119
142
  <img src={image} />
120
143
  {/if}
121
- <slot name="image" />
122
144
  </div>
123
145
  {/if}
124
146
  {#if hasTextHeaderSlots || textHeader}
125
147
  <div class="message-text-header">
126
- {plainText(textHeader)}
127
- <slot name="text-header" />
148
+ {#if typeof textHeader === 'function'}
149
+ {@render textHeader?.()}
150
+ {:else}
151
+ {textHeader}
152
+ {/if}
128
153
  </div>
129
154
  {/if}
130
155
  {#if hasTextSlots || text || htmlText || typing}
131
- <div class="message-text" on:click={onTextClick}>
132
- {plainText(text)}
156
+ <div class="message-text" onclick={onTextClick}>
157
+ {#if typeof text === 'function'}
158
+ {@render text?.()}
159
+ {:else}
160
+ {text}
161
+ {/if}
133
162
  {#if htmlText}{@html htmlText}{/if}
134
- <slot name="text" />
163
+
135
164
  {#if typing}
136
165
  <div class="message-typing-indicator">
137
166
  <div />
@@ -143,20 +172,26 @@
143
172
  {/if}
144
173
  {#if hasTextFooterSlots || textFooter}
145
174
  <div class="message-text-footer">
146
- {plainText(textFooter)}
147
- <slot name="text-footer" />
175
+ {#if typeof textFooter === 'function'}
176
+ {@render textFooter?.()}
177
+ {:else}
178
+ {textFooter}
179
+ {/if}
148
180
  </div>
149
181
  {/if}
150
- <slot name="bubble-end" />
151
- <slot />
182
+ {@render bubbleEnd?.()}
183
+ {@render children?.()}
152
184
  </div>
153
185
  {#if hasFooterSlots || footer}
154
- <div class="message-footer" on:click={onFooterClick}>
155
- {plainText(footer)}
156
- <slot name="footer" />
186
+ <div class="message-footer" onclick={onFooterClick}>
187
+ {#if typeof footer === 'function'}
188
+ {@render footer?.()}
189
+ {:else}
190
+ {footer}
191
+ {/if}
157
192
  </div>
158
193
  {/if}
159
- <slot name="content-end" />
194
+ {@render contentEnd?.()}
160
195
  </div>
161
- <slot name="end" />
196
+ {@render end?.()}
162
197
  </div>
@@ -1,11 +1,11 @@
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 MessagebarAttachmentProps {
7
- image ?: string;
8
- deletable ?: boolean;
6
+ interface Props {
7
+ image?: string | Snippet;
8
+ deletable?: boolean;
9
9
  color?: string;
10
10
  colorTheme?: string;
11
11
  textColor?: string;
@@ -13,16 +13,24 @@ interface MessagebarAttachmentProps {
13
13
  borderColor?: string;
14
14
  rippleColor?: string;
15
15
  dark?: boolean;
16
- onAttachmentClick ?: (event?: any) => void;
17
- onAttachmentDelete ?: (event?: any) => void;
16
+ onAttachmentClick?: (event?: any) => void;
17
+ onAttachmentDelete?: (event?: any) => void;
18
+ children?: Snippet;
19
+ onattachmentclick?: () => void;
20
+ onattachmentdelete?: () => void;
18
21
  }
19
22
 
23
+ interface MessagebarAttachmentProps {}
24
+ interface MessagebarAttachmentProps extends Props {}
25
+
26
+ interface MessagebarAttachmentEvents extends Record<'',{}>{}
27
+
20
28
 
21
29
 
22
30
  declare class MessagebarAttachment extends SvelteComponent<
23
- MessagebarAttachmentProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof MessagebarAttachmentProps>,
24
- { attachmentClick: CustomEvent<void>; attachmentDelete: CustomEvent<void>; },
25
- { 'default' : {}; }
31
+ MessagebarAttachmentProps,
32
+ MessagebarAttachmentEvents,
33
+ { }
26
34
  > {}
27
35
 
28
36
  export { MessagebarAttachmentProps };
@@ -1,35 +1,33 @@
1
1
  <script>
2
- import { createEventDispatcher } from 'svelte';
3
2
  import { colorClasses } from '../shared/mixins.js';
4
- import { classNames, createEmitter } from '../shared/utils.js';
5
- import { restProps } from '../shared/rest-props.js';
3
+ import { classNames } from '../shared/utils.js';
6
4
 
7
- const emit = createEmitter(createEventDispatcher, $$props);
5
+ let { class: className, image = undefined, deletable = true, children, ...restProps } = $props();
8
6
 
9
- let className = undefined;
10
- export { className as class };
11
-
12
- export let image = undefined;
13
- export let deletable = true;
14
-
15
- $: classes = classNames(className, 'messagebar-attachment', colorClasses($$props));
7
+ const classes = $derived(classNames(className, 'messagebar-attachment', colorClasses(restProps)));
16
8
 
17
9
  function onClick(event) {
18
- emit('attachmentClick', [event]);
10
+ restProps.onAttachmentClick?.();
11
+ restProps.onattachmentclick?.();
19
12
  }
20
13
 
21
14
  function onDeleteClick(event) {
22
- emit('attachmentDelete', [event]);
15
+ restProps.onAttachmentDelete?.();
16
+ restProps.onattachmentdelete?.();
23
17
  }
24
18
  </script>
25
19
 
26
- <!-- svelte-ignore a11y-missing-attribute -->
27
- <div on:click={onClick} class={classes} {...restProps($$restProps)}>
28
- {#if image}
20
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
21
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
22
+ <div onclick={onClick} class={classes} {...restProps}>
23
+ {#if image && typeof image === 'string'}
29
24
  <img src={image} />
30
25
  {/if}
26
+ {#if typeof image === 'function'}
27
+ {@render image?.()}
28
+ {/if}
31
29
  {#if deletable}
32
- <span on:click={onDeleteClick} class="messagebar-attachment-delete" />
30
+ <span onclick={onDeleteClick} class="messagebar-attachment-delete"></span>
33
31
  {/if}
34
- <slot />
32
+ {@render children?.()}
35
33
  </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 MessagebarAttachmentsProps {
6
+ interface Props {
7
7
  color?: string;
8
8
  colorTheme?: string;
9
9
  textColor?: string;
@@ -11,14 +11,20 @@ interface MessagebarAttachmentsProps {
11
11
  borderColor?: string;
12
12
  rippleColor?: string;
13
13
  dark?: boolean;
14
+ children?: Snippet;
14
15
  }
15
16
 
17
+ interface MessagebarAttachmentsProps {}
18
+ interface MessagebarAttachmentsProps extends Props {}
19
+
20
+ interface MessagebarAttachmentsEvents extends Record<'',{}>{}
21
+
16
22
 
17
23
 
18
24
  declare class MessagebarAttachments extends SvelteComponent<
19
- MessagebarAttachmentsProps & Omit<HTMLAttributes<HTMLElementTagNameMap['div']>, keyof MessagebarAttachmentsProps>,
20
- { },
21
- { 'default' : {}; }
25
+ MessagebarAttachmentsProps,
26
+ MessagebarAttachmentsEvents,
27
+ { }
22
28
  > {}
23
29
 
24
30
  export { MessagebarAttachmentsProps };
@@ -1,14 +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, children, ...restProps } = $props();
8
6
 
9
- $: classes = classNames(className, 'messagebar-attachments', colorClasses($$props));
7
+ const classes = $derived(
8
+ classNames(className, 'messagebar-attachments', colorClasses(restProps)),
9
+ );
10
10
  </script>
11
11
 
12
- <div class={classes} {...restProps($$restProps)}>
13
- <slot />
12
+ <div class={classes} {...restProps}>
13
+ {@render children?.()}
14
14
  </div>