@likable-hair/svelte 4.2.4 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/components/composed/buttons/ActivableButton.svelte +25 -7
  2. package/dist/components/composed/common/HeadersDrawer.svelte +66 -28
  3. package/dist/components/composed/common/HeadersDrawer.svelte.d.ts +22 -12
  4. package/dist/components/composed/common/MenuOrDrawer.svelte +40 -12
  5. package/dist/components/composed/common/MenuOrDrawerOptions.svelte +51 -27
  6. package/dist/components/composed/common/MenuOrDrawerOptions.svelte.d.ts +15 -10
  7. package/dist/components/composed/common/QuickActions.css +5 -5
  8. package/dist/components/composed/common/QuickActions.svelte +76 -33
  9. package/dist/components/composed/common/ToolTip.svelte +51 -32
  10. package/dist/components/composed/dashboard/DashboardShaper.svelte +280 -147
  11. package/dist/components/composed/dashboard/DashboardShaper.svelte.d.ts +54 -45
  12. package/dist/components/composed/forms/AsyncAutocomplete.svelte +81 -30
  13. package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +17 -5
  14. package/dist/components/composed/forms/AvatarDropdown.svelte +146 -70
  15. package/dist/components/composed/forms/AvatarDropdown.svelte.d.ts +27 -22
  16. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte +65 -19
  17. package/dist/components/composed/forms/CountriesAutocomplete.svelte +33 -4
  18. package/dist/components/composed/forms/DatePickerTextField.svelte +266 -161
  19. package/dist/components/composed/forms/Dropdown.svelte +89 -22
  20. package/dist/components/composed/forms/Dropdown.svelte.d.ts +18 -13
  21. package/dist/components/composed/forms/IconsDropdown.svelte +85 -40
  22. package/dist/components/composed/forms/IconsDropdown.svelte.d.ts +15 -8
  23. package/dist/components/composed/forms/LabelAndSelect.svelte +46 -5
  24. package/dist/components/composed/forms/LabelAndTextField.svelte +56 -3
  25. package/dist/components/composed/forms/PeriodPicker.svelte +38 -18
  26. package/dist/components/composed/forms/PeriodPicker.svelte.d.ts +32 -7
  27. package/dist/components/composed/forms/PeriodSelector.svelte +427 -312
  28. package/dist/components/composed/forms/PeriodSelector.svelte.d.ts +20 -13
  29. package/dist/components/composed/forms/ToggleList.svelte +71 -37
  30. package/dist/components/composed/forms/ToggleList.svelte.d.ts +14 -7
  31. package/dist/components/composed/forms/YearPickerTextField.svelte +154 -82
  32. package/dist/components/composed/list/DynamicTable.svelte +1377 -808
  33. package/dist/components/composed/list/DynamicTable.svelte.d.ts +85 -70
  34. package/dist/components/composed/list/EnhancedPaginatedTable.svelte +75 -32
  35. package/dist/components/composed/list/EnhancedPaginatedTable.svelte.d.ts +16 -6
  36. package/dist/components/composed/list/PaginatedTable.svelte +325 -120
  37. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +26 -22
  38. package/dist/components/composed/progress/HorizontalStackedProgress.svelte +67 -29
  39. package/dist/components/composed/search/DynamicFilters.svelte +126 -91
  40. package/dist/components/composed/search/FilterEditor.svelte +178 -115
  41. package/dist/components/composed/search/Filters.svelte +441 -301
  42. package/dist/components/composed/search/GlobalSearchTextField.svelte +102 -42
  43. package/dist/components/composed/search/GlobalSearchTextField.svelte.d.ts +23 -20
  44. package/dist/components/composed/search/MobileFilterEditor.svelte +174 -120
  45. package/dist/components/composed/search/QuickFilters.svelte +133 -23
  46. package/dist/components/composed/search/SearchBar.svelte +42 -3
  47. package/dist/components/composed/search/SearchResults.svelte +48 -5
  48. package/dist/components/composed/search/SearchResults.svelte.d.ts +17 -17
  49. package/dist/components/layouts/CollapsibleSideBarLayout.svelte +100 -24
  50. package/dist/components/layouts/StableDividedSideBarLayout.svelte +74 -24
  51. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte +140 -57
  52. package/dist/components/simple/buttons/Button.svelte +86 -36
  53. package/dist/components/simple/buttons/LinkButton.svelte +81 -25
  54. package/dist/components/simple/charts/BarChart.svelte +137 -105
  55. package/dist/components/simple/charts/LineChart.svelte +124 -92
  56. package/dist/components/simple/charts/PieChart.svelte +51 -23
  57. package/dist/components/simple/common/CollapsibleDivider.svelte +58 -26
  58. package/dist/components/simple/common/Divider.svelte +2 -1
  59. package/dist/components/simple/common/InfiniteScroll.svelte +60 -34
  60. package/dist/components/simple/common/MediaQuery.svelte +28 -3
  61. package/dist/components/simple/common/Menu.svelte +516 -390
  62. package/dist/components/simple/common/NoData.svelte +18 -4
  63. package/dist/components/simple/common/VerticalDraggableList.svelte +52 -26
  64. package/dist/components/simple/common/VerticalDraggableList.svelte.d.ts +20 -9
  65. package/dist/components/simple/dashboards/DashboardGridShaper.svelte +28 -22
  66. package/dist/components/simple/dates/Calendar.svelte +142 -72
  67. package/dist/components/simple/dates/DatePicker.svelte +138 -71
  68. package/dist/components/simple/dates/MonthSelector.svelte +49 -13
  69. package/dist/components/simple/dates/YearSelector.svelte +73 -30
  70. package/dist/components/simple/dialogs/Dialog.svelte +109 -59
  71. package/dist/components/simple/forms/Autocomplete.css +3 -0
  72. package/dist/components/simple/forms/Autocomplete.svelte +366 -164
  73. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +31 -19
  74. package/dist/components/simple/forms/Checkbox.svelte +57 -29
  75. package/dist/components/simple/forms/FileInput.svelte +103 -58
  76. package/dist/components/simple/forms/FileInputList.svelte +115 -51
  77. package/dist/components/simple/forms/RadioButton.svelte +36 -3
  78. package/dist/components/simple/forms/Select.svelte +30 -3
  79. package/dist/components/simple/forms/SimpleTextField.svelte +94 -4
  80. package/dist/components/simple/forms/Switch.svelte +33 -11
  81. package/dist/components/simple/forms/Textarea.svelte +22 -5
  82. package/dist/components/simple/forms/VerticalSwitch.svelte +19 -2
  83. package/dist/components/simple/forms/VerticalTextSwitch.svelte +35 -3
  84. package/dist/components/simple/lists/BoxList.svelte +42 -11
  85. package/dist/components/simple/lists/ColorInvertedSelector.svelte +83 -25
  86. package/dist/components/simple/lists/HierarchyMenu.svelte +55 -20
  87. package/dist/components/simple/lists/Paginator.svelte +53 -34
  88. package/dist/components/simple/lists/SelectableMenuList.svelte +52 -16
  89. package/dist/components/simple/lists/SelectableVerticalList.svelte +169 -85
  90. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +21 -14
  91. package/dist/components/simple/lists/SidebarMenuList.svelte +127 -79
  92. package/dist/components/simple/lists/SimpleTable.svelte +449 -239
  93. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +31 -22
  94. package/dist/components/simple/loaders/CircularLoader.css +1 -1
  95. package/dist/components/simple/loaders/CircularLoader.svelte +11 -3
  96. package/dist/components/simple/loaders/Skeleton.svelte +3 -2
  97. package/dist/components/simple/media/Avatar.svelte +35 -15
  98. package/dist/components/simple/media/DescriptiveAvatar.svelte +30 -4
  99. package/dist/components/simple/media/FlagIcon.svelte +13 -3
  100. package/dist/components/simple/media/Icon.svelte +21 -6
  101. package/dist/components/simple/navigation/Breadcrumb.svelte +41 -9
  102. package/dist/components/simple/navigation/Chip.css +1 -1
  103. package/dist/components/simple/navigation/Chip.svelte +65 -36
  104. package/dist/components/simple/navigation/Drawer.svelte +132 -71
  105. package/dist/components/simple/navigation/HeaderMenu.svelte +69 -25
  106. package/dist/components/simple/navigation/Navigator.svelte +45 -11
  107. package/dist/components/simple/navigation/TabSwitcher.svelte +60 -19
  108. package/dist/components/simple/notifiers/AlertBanner.svelte +59 -11
  109. package/dist/components/simple/progress/ProgressBar.svelte +26 -10
  110. package/dist/components/simple/timeline/SimpleTimeLine.svelte +52 -5
  111. package/dist/components/simple/timeline/SimpleTimeLine.svelte.d.ts +16 -9
  112. package/dist/components/simple/typography/Code.svelte +41 -12
  113. package/dist/stores/layouts/unstableSidebarOpened.d.ts +1 -1
  114. package/dist/stores/layouts/unstableSidebarOpened.js +1 -1
  115. package/dist/stores/theme.js +2 -2
  116. package/dist/utils/filters/builder.d.ts +2 -2
  117. package/dist/utils/filters/builder.js +7 -7
  118. package/dist/utils/filters/modifiers/where.d.ts +1 -1
  119. package/dist/utils/teleporter.js +4 -4
  120. package/package.json +39 -33
@@ -1,81 +1,142 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import './Drawer.css';
3
- import Navigator from "./Navigator.svelte";
4
- import { onMount } from 'svelte';
5
- import Teleporter from '../../../utils/teleporter';
6
- import Keyboarder, {} from '../../../utils/keyboarder';
7
- import { BROWSER } from 'esm-env';
8
- let { open = $bindable(), position = $bindable("left"), overlay = $bindable(false), closeOnClickOutside = true, items = [], teleportedUid = undefined, _space = undefined, _openingSpeed = undefined, _backgroundColor = undefined, _color = undefined, _overflow = undefined, _borderRadius = undefined, _margin = undefined, _overlaySpeed = undefined, _overlayBackgroundColor = undefined, _overlayOpacity = undefined, onclose, children, onitemClick, } = $props();
9
- let drawerElement, localOpen = $state(false);
10
- onMount(() => {
11
- if (!teleportedUid) {
12
- // let oldCssVars = {
13
- // '--drawer-space': getComputedStyle(drawerElement).getPropertyValue('--drawer-space')
14
- // }
15
- let tp = new Teleporter();
16
- teleportedUid = tp.attachNode(drawerElement);
17
- // drawerElement.style.setProperty('--drawer-space', oldCssVars['--drawer-space'])
1
+ <script lang="ts">
2
+ import '../../../css/main.css'
3
+ import './Drawer.css'
4
+ import Navigator from "./Navigator.svelte";
5
+ import type { Item } from "./Navigator.svelte";
6
+ import { onMount, type ComponentProps, type Snippet } from 'svelte';
7
+ import Teleporter from '../../../utils/teleporter';
8
+ import Keyboarder, { type CallbackFunction } from '../../../utils/keyboarder';
9
+ import { BROWSER } from 'esm-env';
10
+
11
+ interface Props {
12
+ open?: boolean;
13
+ position?: "left" | "top" | "right" | "bottom";
14
+ overlay?: boolean;
15
+ closeOnClickOutside?: boolean;
16
+ items?: Item[];
17
+ teleportedUid?: string;
18
+ _space?: string;
19
+ _openingSpeed?: string;
20
+ _backgroundColor?: string;
21
+ _color?: string;
22
+ _overflow?: string;
23
+ _borderRadius?: string;
24
+ _margin?: string;
25
+ _overlaySpeed?: string;
26
+ _overlayBackgroundColor?: string;
27
+ _overlayOpacity?: string;
28
+ onclose?: () => void
29
+ onitemClick?: ComponentProps<typeof Navigator>['onitemClick']
30
+ children?: Snippet<[]>
31
+ }
32
+
33
+ let {
34
+ open = $bindable(),
35
+ position = $bindable("left"),
36
+ overlay = $bindable(false),
37
+ closeOnClickOutside = true,
38
+ items = [],
39
+ teleportedUid = undefined,
40
+ _space = undefined,
41
+ _openingSpeed = undefined,
42
+ _backgroundColor = undefined,
43
+ _color = undefined,
44
+ _overflow = undefined,
45
+ _borderRadius = undefined,
46
+ _margin = undefined,
47
+ _overlaySpeed = undefined,
48
+ _overlayBackgroundColor = undefined,
49
+ _overlayOpacity = undefined,
50
+ onclose,
51
+ children,
52
+ onitemClick,
53
+ }: Props = $props();
54
+
55
+ let drawerElement: HTMLElement,
56
+ localOpen: boolean = $state(false)
57
+
58
+ onMount(() => {
59
+ if(!teleportedUid) {
60
+ // let oldCssVars = {
61
+ // '--drawer-space': getComputedStyle(drawerElement).getPropertyValue('--drawer-space')
62
+ // }
63
+
64
+ let tp = new Teleporter()
65
+ teleportedUid = tp.attachNode(drawerElement)
66
+
67
+ // drawerElement.style.setProperty('--drawer-space', oldCssVars['--drawer-space'])
68
+ }
69
+
70
+ let keyboarderHandler: CallbackFunction = (params) => {
71
+ if(params.key == 'Escape' && open) closeDrawer()
18
72
  }
19
- let keyboarderHandler = (params) => {
20
- if (params.key == 'Escape' && open)
21
- closeDrawer();
22
- };
23
- Keyboarder.on(keyboarderHandler);
73
+ Keyboarder.on(keyboarderHandler)
74
+
24
75
  return () => {
25
- if (!!teleportedUid) {
26
- let tp = new Teleporter();
27
- tp.destroyNode(teleportedUid);
28
- }
29
- Keyboarder.off(keyboarderHandler);
30
- };
31
- });
32
- function closeDrawer() {
76
+ if(!!teleportedUid) {
77
+ let tp = new Teleporter()
78
+ tp.destroyNode(teleportedUid)
79
+ }
80
+
81
+ Keyboarder.off(keyboarderHandler)
82
+ }
83
+ })
84
+
85
+ function closeDrawer() {
33
86
  open = false;
34
87
  overlay = false;
35
- if (onclose) {
36
- onclose();
37
- }
38
- }
39
- function handleClickOverlay() {
40
- if (closeOnClickOutside) {
41
- open = false;
42
- overlay = false;
43
- if (onclose) {
44
- onclose();
45
- }
88
+ if(onclose) {
89
+ onclose()
46
90
  }
47
- }
48
- let zIndex = $state(50);
49
- $effect.pre(() => {
50
- if (BROWSER && open && localOpen !== open) {
51
- let otherDialogs = document.querySelectorAll("[data-dialog=true]");
52
- let maxZIndex = 0;
53
- if (otherDialogs.length > 0) {
54
- otherDialogs.forEach((dialog) => {
55
- let computedStyle = getComputedStyle(dialog);
56
- let currentZIndex = computedStyle.getPropertyValue('--dialog-z-index');
57
- if (!maxZIndex || maxZIndex < Number(currentZIndex))
58
- maxZIndex = Number(currentZIndex);
59
- });
60
- zIndex = maxZIndex + 2;
61
- }
62
- let otherDrawers = document.querySelectorAll("[data-drawer=true]");
63
- if (otherDrawers.length > 0) {
64
- otherDrawers.forEach((dialog) => {
65
- let computedStyle = getComputedStyle(dialog);
66
- let currentZIndex = computedStyle.getPropertyValue('--drawer-z-index');
67
- if (!maxZIndex || maxZIndex < Number(currentZIndex))
68
- maxZIndex = Number(currentZIndex);
69
- });
70
- zIndex = maxZIndex + 2;
71
- }
72
- overlay = true;
73
- localOpen = true;
91
+ }
92
+
93
+ function handleClickOverlay() {
94
+ if(closeOnClickOutside) {
95
+ open = false;
96
+ overlay = false;
97
+ if(onclose) {
98
+ onclose()
99
+ }
74
100
  }
75
- else if (BROWSER && !open && localOpen !== open) {
76
- localOpen = false;
101
+ }
102
+
103
+ let zIndex: number = $state(50)
104
+ $effect.pre(() => {
105
+ if(BROWSER && open && localOpen !== open) {
106
+ let otherDialogs: NodeListOf<HTMLElement> =
107
+ document.querySelectorAll("[data-dialog=true]");
108
+
109
+ let maxZIndex = 0;
110
+
111
+ if (otherDialogs.length > 0) {
112
+ otherDialogs.forEach((dialog) => {
113
+ let computedStyle = getComputedStyle(dialog)
114
+ let currentZIndex = computedStyle.getPropertyValue('--dialog-z-index')
115
+ if (!maxZIndex || maxZIndex < Number(currentZIndex))
116
+ maxZIndex = Number(currentZIndex);
117
+ });
118
+ zIndex = maxZIndex + 2;
119
+ }
120
+
121
+ let otherDrawers: NodeListOf<HTMLElement> =
122
+ document.querySelectorAll("[data-drawer=true]");
123
+
124
+ if (otherDrawers.length > 0) {
125
+ otherDrawers.forEach((dialog) => {
126
+ let computedStyle = getComputedStyle(dialog)
127
+ let currentZIndex = computedStyle.getPropertyValue('--drawer-z-index')
128
+ if (!maxZIndex || maxZIndex < Number(currentZIndex))
129
+ maxZIndex = Number(currentZIndex);
130
+ });
131
+ zIndex = maxZIndex + 2;
132
+ }
133
+
134
+ overlay = true
135
+ localOpen = true
136
+ } else if(BROWSER && !open && localOpen !== open) {
137
+ localOpen = false
77
138
  }
78
- });
139
+ })
79
140
  </script>
80
141
 
81
142
  <div
@@ -1,32 +1,76 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import './HeaderMenu.css';
3
- import Button from "../buttons/Button.svelte";
4
- import { Drawer } from '../../..';
5
- let { openDrawer = $bindable(false), title = "", hideOnScroll = true, initialRemoveShadow = false, color = undefined, mobileMenu = true, zIndex = 25, ondrawerChange, drawerSnippet, appendSnippet, prependSnippet, titleSnippet, onitemClick, } = $props();
6
- let scrollY = $state(), lastScrollY, visible = $state(true);
7
- function handleScroll() {
8
- if (scrollY) {
9
- if (hideOnScroll) {
10
- if (scrollY > lastScrollY) {
11
- visible = false;
12
- }
13
- else {
14
- visible = true;
15
- }
1
+ <script lang="ts">
2
+ import '../../../css/main.css'
3
+ import './HeaderMenu.css'
4
+ import Button from "../buttons/Button.svelte";
5
+ import { Drawer } from '../../..';
6
+ import type { ComponentProps, Snippet } from 'svelte';
7
+
8
+ interface Props {
9
+ openDrawer?: boolean
10
+ title?: string;
11
+ hideOnScroll?: boolean;
12
+ initialRemoveShadow?: boolean;
13
+ color?: string;
14
+ mobileMenu?: boolean;
15
+ zIndex?: number;
16
+ ondrawerChange?: (event: {
17
+ detail: {
18
+ opened: boolean
19
+ }
20
+ }) => void
21
+ drawerSnippet?: Snippet<[]>
22
+ titleSnippet?: Snippet<[]>
23
+ appendSnippet?: Snippet<[]>
24
+ prependSnippet?: Snippet<[{
25
+ toggleDrawer: () => void,
26
+ openDrawer: boolean
27
+ }]>
28
+ onitemClick?: ComponentProps<typeof Drawer>['onitemClick']
29
+ }
30
+
31
+ let {
32
+ openDrawer = $bindable(false),
33
+ title = "",
34
+ hideOnScroll = true,
35
+ initialRemoveShadow = false,
36
+ color = undefined,
37
+ mobileMenu = true,
38
+ zIndex = 25,
39
+ ondrawerChange,
40
+ drawerSnippet,
41
+ appendSnippet,
42
+ prependSnippet,
43
+ titleSnippet,
44
+ onitemClick,
45
+ }: Props = $props();
46
+
47
+ let scrollY: number | undefined = $state(),
48
+ lastScrollY: number,
49
+ visible = $state(true);
50
+ function handleScroll() {
51
+ if(scrollY){
52
+ if (hideOnScroll) {
53
+ if (scrollY > lastScrollY) {
54
+ visible = false;
55
+ } else {
56
+ visible = true;
16
57
  }
17
- lastScrollY = scrollY;
58
+ }
59
+
60
+ lastScrollY = scrollY;
18
61
  }
19
- }
20
- function toggleDrawer() {
62
+ }
63
+
64
+ function toggleDrawer() {
21
65
  openDrawer = !openDrawer;
22
- if (ondrawerChange) {
23
- ondrawerChange({
24
- detail: {
25
- opened: openDrawer
26
- }
27
- });
66
+ if(ondrawerChange) {
67
+ ondrawerChange({
68
+ detail: {
69
+ opened: openDrawer
70
+ }
71
+ })
28
72
  }
29
- }
73
+ }
30
74
  </script>
31
75
 
32
76
  <svelte:window bind:scrollY onscroll={handleScroll} />
@@ -1,17 +1,51 @@
1
- <script module lang="ts">export {};
1
+ <script module lang="ts">
2
+ export type Item = {
3
+ title?: string;
4
+ icon?: string;
5
+ name: string;
6
+ url?: string;
7
+ detail?: object;
8
+ };
2
9
  </script>
3
10
 
4
- <script lang="ts">import Icon from "../media/Icon.svelte";
5
- let { items = [], color = undefined, vertical = false, variant = 'underlined', textColor = '', hoverTextColor = undefined, space = "20px", onitemClick, } = $props();
6
- function handleItemClick(item) {
7
- if (onitemClick) {
8
- onitemClick({
9
- detail: {
10
- item
11
- }
12
- });
11
+ <script lang="ts">
12
+ import Icon from "../media/Icon.svelte"
13
+
14
+ interface Props {
15
+ items?: Item[];
16
+ color?: string;
17
+ vertical?: boolean;
18
+ variant?: 'standard' | 'underlined';
19
+ textColor?: string;
20
+ hoverTextColor?: string;
21
+ space?: string;
22
+ onitemClick?: (event: {
23
+ detail: {
24
+ item: Item
25
+ }
26
+ }) => void
27
+ }
28
+
29
+ let {
30
+ items = [],
31
+ color = undefined,
32
+ vertical = false,
33
+ variant = 'underlined',
34
+ textColor = '',
35
+ hoverTextColor = undefined,
36
+ space = "20px",
37
+ onitemClick,
38
+ }: Props = $props();
39
+
40
+ function handleItemClick(item: Item) {
41
+ if(onitemClick) {
42
+ onitemClick({
43
+ detail: {
44
+ item
45
+ }
46
+ })
13
47
  }
14
- }
48
+ }
15
49
  </script>
16
50
 
17
51
  <div
@@ -1,26 +1,67 @@
1
- <script lang="ts" module>export {};
1
+ <script lang="ts" module>
2
+ export type Tab = {
3
+ name: string;
4
+ label: string;
5
+ icon?: string;
6
+ };
2
7
  </script>
3
8
 
4
- <script lang="ts">import { onMount } from "svelte";
5
- import './TabSwitcher.css';
6
- import Icon from "../media/Icon.svelte";
7
- let { tabs = [], selected = $bindable(undefined), mandatory = true, class: clazz = {}, ontabClick, appendSnippet, } = $props();
8
- let tabButtons = $state({});
9
- onMount(() => {
10
- if (mandatory && !selected && tabs.length > 0)
11
- selected = tabs[0].name;
12
- });
13
- function handleTabClick(clickedTab, nativeEvent) {
9
+ <script lang="ts">
10
+ import { onMount, type Snippet } from "svelte";
11
+ import './TabSwitcher.css'
12
+ import Icon from "../media/Icon.svelte";
13
+
14
+ interface Props {
15
+ tabs?: Tab[];
16
+ selected?: string;
17
+ mandatory?: boolean;
18
+ class?: {
19
+ container?: string,
20
+ tabs?: string,
21
+ selected?: string,
22
+ bookmark?: string,
23
+ guide?: string
24
+ }
25
+ ontabClick?: (event: {
26
+ detail: {
27
+ nativeEvent: MouseEvent;
28
+ tab: Tab;
29
+ }
30
+ }) => void
31
+ ontabKeypress?: (event: {
32
+ detail: {
33
+ nativeEvent: KeyboardEvent;
34
+ tab: Tab;
35
+ }
36
+ }) => void
37
+ appendSnippet?: Snippet<[]>
38
+ }
39
+
40
+ let {
41
+ tabs = [],
42
+ selected = $bindable(undefined),
43
+ mandatory = true,
44
+ class: clazz = {},
45
+ ontabClick,
46
+ appendSnippet,
47
+ }: Props = $props();
48
+
49
+ let tabButtons: Record<string, HTMLElement> = $state({});
50
+ onMount(() => {
51
+ if (mandatory && !selected && tabs.length > 0) selected = tabs[0].name;
52
+ });
53
+
54
+ function handleTabClick(clickedTab: Tab, nativeEvent: MouseEvent) {
14
55
  selected = clickedTab.name;
15
- if (ontabClick) {
16
- ontabClick({
17
- detail: {
18
- nativeEvent,
19
- tab: clickedTab
20
- }
21
- });
56
+ if(ontabClick) {
57
+ ontabClick({
58
+ detail: {
59
+ nativeEvent,
60
+ tab: clickedTab
61
+ }
62
+ })
22
63
  }
23
- }
64
+ }
24
65
  </script>
25
66
 
26
67
  <div
@@ -1,14 +1,62 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import './AlertBanner.css';
3
- let { title, description, disabled = false, class: clazz = {}, onclick: onclickInternal, onkeypress: onkeypressInternal, contentSnippet, titleSnippet, descriptionSnippet, appendSnippet } = $props();
4
- function onclick(e) {
5
- if (!disabled && !!onclickInternal)
6
- onclickInternal({ detail: { nativeEvent: e } });
7
- }
8
- function onkeypress(e) {
9
- if (!disabled && !!onkeypressInternal)
10
- onkeypressInternal({ detail: { nativeEvent: e } });
11
- }
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import '../../../css/main.css'
4
+ import './AlertBanner.css'
5
+
6
+ interface Props {
7
+ title?: string
8
+ description?: string
9
+ disabled?: boolean
10
+ class?: {
11
+ container?: string,
12
+ border?: string,
13
+ body?: string
14
+ },
15
+ onclick?: (event:{
16
+ detail: {
17
+ nativeEvent: MouseEvent
18
+ }
19
+ }) => void,
20
+ onkeypress?: (event:{
21
+ detail: {
22
+ nativeEvent: KeyboardEvent
23
+ }
24
+ }) => void,
25
+ contentSnippet?: Snippet<[{
26
+ title?: string,
27
+ description?: string
28
+ }]>,
29
+ titleSnippet?: Snippet<[{
30
+ title: string,
31
+ }]>,
32
+ descriptionSnippet?: Snippet<[{
33
+ description: string
34
+ }]>,
35
+ appendSnippet?: Snippet<[{
36
+ disabled: boolean
37
+ }]>
38
+ }
39
+
40
+ let {
41
+ title,
42
+ description,
43
+ disabled = false,
44
+ class: clazz = { },
45
+ onclick: onclickInternal,
46
+ onkeypress: onkeypressInternal,
47
+ contentSnippet,
48
+ titleSnippet,
49
+ descriptionSnippet,
50
+ appendSnippet
51
+ }: Props = $props()
52
+
53
+ function onclick(e: MouseEvent) {
54
+ if(!disabled && !!onclickInternal) onclickInternal({ detail: { nativeEvent: e }})
55
+ }
56
+
57
+ function onkeypress(e: KeyboardEvent) {
58
+ if(!disabled && !!onkeypressInternal) onkeypressInternal({ detail: { nativeEvent: e }})
59
+ }
12
60
  </script>
13
61
 
14
62
  <div
@@ -1,16 +1,32 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import './ProgressBar.css';
3
- import ToolTip from '../../composed/common/ToolTip.svelte';
4
- let { value = 0, total = 100, valueTooltip = false, valueTooltipLabel = undefined, } = $props();
5
- let activator = $state();
6
- let hundredBasedProgress = $derived(total === 0 ? 100 : (value * 100) / total);
7
- let cssVariables = $derived(Object.entries({
1
+ <script lang="ts">
2
+ import '../../../css/main.css'
3
+ import './ProgressBar.css'
4
+ import ToolTip from '../../composed/common/ToolTip.svelte';
5
+
6
+ interface Props {
7
+ value?: number;
8
+ total?: number;
9
+ valueTooltip?: boolean;
10
+ valueTooltipLabel?: string | number;
11
+ }
12
+
13
+ let {
14
+ value = 0,
15
+ total = 100,
16
+ valueTooltip = false,
17
+ valueTooltipLabel = undefined,
18
+ }: Props = $props();
19
+
20
+ let activator: HTMLElement | undefined = $state()
21
+
22
+ let hundredBasedProgress = $derived(total === 0 ? 100 : (value * 100) / total);
23
+ let cssVariables = $derived(Object.entries({
8
24
  "--progress-width": hundredBasedProgress + "%",
9
- })
25
+ })
10
26
  .filter(([key]) => key.startsWith("--"))
11
27
  .reduce((css, [key, value]) => {
12
- return `${css}${key}: ${value};`;
13
- }, ""));
28
+ return `${css}${key}: ${value};`;
29
+ }, ""))
14
30
  </script>
15
31
 
16
32
  <div
@@ -1,10 +1,57 @@
1
- <script module lang="ts">export {};
1
+ <script module lang="ts">
2
+ export type TimeLineItem<Data = any> = {
3
+ name: string;
4
+ title?: string;
5
+ description?: string;
6
+ imageUrl?: string;
7
+ from?: Date;
8
+ to?: Date;
9
+ data?: Data;
10
+ };
2
11
  </script>
3
12
 
4
- <script lang="ts" generics="Data">import { dateToString } from "../dates/utils";
5
- import "../../../css/main.css";
6
- import "./SimpleTimeLine.css";
7
- let { items = [], singleSided = false, circleAlignment = "top", circleSnippet, infosAppendSnippet, infosSnippet, itemSnippet, timesSnippet, } = $props();
13
+ <script lang="ts" generics="Data">
14
+ import { dateToString } from "../dates/utils";
15
+ import type { Snippet } from "svelte";
16
+ import "../../../css/main.css";
17
+ import "./SimpleTimeLine.css";
18
+
19
+ type TimeLineItemData = TimeLineItem<Data>
20
+ interface Props {
21
+ items: TimeLineItemData[];
22
+ singleSided?: boolean;
23
+ circleAlignment?: "top" | "center" | "bottom";
24
+ itemSnippet?: Snippet<[{
25
+ item: TimeLineItemData
26
+ alignment: 'left' | 'right'
27
+ }]>
28
+ timesSnippet?: Snippet<[{
29
+ item: TimeLineItemData
30
+ dateToString: typeof dateToString
31
+ }]>
32
+ infosSnippet?: Snippet<[{
33
+ item: TimeLineItemData
34
+ alignment: 'left' | 'right'
35
+ }]>
36
+ infosAppendSnippet?: Snippet<[{
37
+ item: TimeLineItemData
38
+ alignment: 'left' | 'right'
39
+ }]>
40
+ circleSnippet?: Snippet<[{
41
+ item: TimeLineItemData
42
+ }]>
43
+ }
44
+
45
+ let {
46
+ items = [],
47
+ singleSided = false,
48
+ circleAlignment = "top",
49
+ circleSnippet,
50
+ infosAppendSnippet,
51
+ infosSnippet,
52
+ itemSnippet,
53
+ timesSnippet,
54
+ }: Props = $props();
8
55
  </script>
9
56
 
10
57
  <div