@likable-hair/svelte 4.2.5 → 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 (117) 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.svelte +59 -23
  8. package/dist/components/composed/common/ToolTip.svelte +51 -32
  9. package/dist/components/composed/dashboard/DashboardShaper.svelte +280 -147
  10. package/dist/components/composed/dashboard/DashboardShaper.svelte.d.ts +54 -45
  11. package/dist/components/composed/forms/AsyncAutocomplete.svelte +81 -30
  12. package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +12 -5
  13. package/dist/components/composed/forms/AvatarDropdown.svelte +146 -70
  14. package/dist/components/composed/forms/AvatarDropdown.svelte.d.ts +27 -22
  15. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte +65 -19
  16. package/dist/components/composed/forms/CountriesAutocomplete.svelte +33 -4
  17. package/dist/components/composed/forms/DatePickerTextField.svelte +266 -161
  18. package/dist/components/composed/forms/Dropdown.svelte +88 -21
  19. package/dist/components/composed/forms/Dropdown.svelte.d.ts +18 -13
  20. package/dist/components/composed/forms/IconsDropdown.svelte +85 -40
  21. package/dist/components/composed/forms/IconsDropdown.svelte.d.ts +15 -8
  22. package/dist/components/composed/forms/LabelAndSelect.svelte +46 -5
  23. package/dist/components/composed/forms/LabelAndTextField.svelte +56 -3
  24. package/dist/components/composed/forms/PeriodPicker.svelte +38 -18
  25. package/dist/components/composed/forms/PeriodPicker.svelte.d.ts +32 -7
  26. package/dist/components/composed/forms/PeriodSelector.svelte +427 -312
  27. package/dist/components/composed/forms/PeriodSelector.svelte.d.ts +20 -13
  28. package/dist/components/composed/forms/ToggleList.svelte +71 -37
  29. package/dist/components/composed/forms/ToggleList.svelte.d.ts +14 -7
  30. package/dist/components/composed/forms/YearPickerTextField.svelte +154 -82
  31. package/dist/components/composed/list/DynamicTable.svelte +1372 -809
  32. package/dist/components/composed/list/DynamicTable.svelte.d.ts +85 -70
  33. package/dist/components/composed/list/EnhancedPaginatedTable.svelte +75 -32
  34. package/dist/components/composed/list/EnhancedPaginatedTable.svelte.d.ts +16 -6
  35. package/dist/components/composed/list/PaginatedTable.svelte +324 -116
  36. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +26 -22
  37. package/dist/components/composed/progress/HorizontalStackedProgress.svelte +67 -29
  38. package/dist/components/composed/search/DynamicFilters.svelte +126 -91
  39. package/dist/components/composed/search/FilterEditor.svelte +169 -109
  40. package/dist/components/composed/search/Filters.svelte +385 -275
  41. package/dist/components/composed/search/GlobalSearchTextField.svelte +102 -42
  42. package/dist/components/composed/search/GlobalSearchTextField.svelte.d.ts +23 -20
  43. package/dist/components/composed/search/MobileFilterEditor.svelte +174 -120
  44. package/dist/components/composed/search/QuickFilters.svelte +124 -75
  45. package/dist/components/composed/search/SearchBar.svelte +42 -3
  46. package/dist/components/composed/search/SearchResults.svelte +48 -5
  47. package/dist/components/composed/search/SearchResults.svelte.d.ts +17 -17
  48. package/dist/components/layouts/CollapsibleSideBarLayout.svelte +100 -24
  49. package/dist/components/layouts/StableDividedSideBarLayout.svelte +74 -24
  50. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte +140 -57
  51. package/dist/components/simple/buttons/Button.svelte +86 -36
  52. package/dist/components/simple/buttons/LinkButton.svelte +81 -25
  53. package/dist/components/simple/charts/BarChart.svelte +137 -105
  54. package/dist/components/simple/charts/LineChart.svelte +124 -92
  55. package/dist/components/simple/charts/PieChart.svelte +51 -23
  56. package/dist/components/simple/common/CollapsibleDivider.svelte +58 -26
  57. package/dist/components/simple/common/Divider.svelte +2 -1
  58. package/dist/components/simple/common/InfiniteScroll.svelte +60 -34
  59. package/dist/components/simple/common/MediaQuery.svelte +28 -3
  60. package/dist/components/simple/common/Menu.svelte +516 -371
  61. package/dist/components/simple/common/NoData.svelte +18 -4
  62. package/dist/components/simple/common/VerticalDraggableList.svelte +52 -26
  63. package/dist/components/simple/common/VerticalDraggableList.svelte.d.ts +20 -9
  64. package/dist/components/simple/dashboards/DashboardGridShaper.svelte +28 -22
  65. package/dist/components/simple/dates/Calendar.svelte +142 -72
  66. package/dist/components/simple/dates/DatePicker.svelte +138 -71
  67. package/dist/components/simple/dates/MonthSelector.svelte +49 -13
  68. package/dist/components/simple/dates/YearSelector.svelte +73 -30
  69. package/dist/components/simple/dialogs/Dialog.svelte +109 -59
  70. package/dist/components/simple/forms/Autocomplete.svelte +341 -164
  71. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +27 -20
  72. package/dist/components/simple/forms/Checkbox.svelte +57 -29
  73. package/dist/components/simple/forms/FileInput.svelte +103 -58
  74. package/dist/components/simple/forms/FileInputList.svelte +115 -51
  75. package/dist/components/simple/forms/RadioButton.svelte +36 -3
  76. package/dist/components/simple/forms/Select.svelte +30 -3
  77. package/dist/components/simple/forms/SimpleTextField.svelte +94 -4
  78. package/dist/components/simple/forms/Switch.svelte +33 -11
  79. package/dist/components/simple/forms/Textarea.svelte +22 -5
  80. package/dist/components/simple/forms/VerticalSwitch.svelte +19 -2
  81. package/dist/components/simple/forms/VerticalTextSwitch.svelte +35 -3
  82. package/dist/components/simple/lists/BoxList.svelte +42 -11
  83. package/dist/components/simple/lists/ColorInvertedSelector.svelte +83 -25
  84. package/dist/components/simple/lists/HierarchyMenu.svelte +55 -20
  85. package/dist/components/simple/lists/Paginator.svelte +53 -34
  86. package/dist/components/simple/lists/SelectableMenuList.svelte +52 -16
  87. package/dist/components/simple/lists/SelectableVerticalList.svelte +169 -85
  88. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +21 -14
  89. package/dist/components/simple/lists/SidebarMenuList.svelte +127 -79
  90. package/dist/components/simple/lists/SimpleTable.svelte +442 -245
  91. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +31 -22
  92. package/dist/components/simple/loaders/CircularLoader.css +1 -1
  93. package/dist/components/simple/loaders/CircularLoader.svelte +11 -3
  94. package/dist/components/simple/loaders/Skeleton.svelte +3 -2
  95. package/dist/components/simple/media/Avatar.svelte +35 -15
  96. package/dist/components/simple/media/DescriptiveAvatar.svelte +30 -4
  97. package/dist/components/simple/media/FlagIcon.svelte +13 -3
  98. package/dist/components/simple/media/Icon.svelte +21 -6
  99. package/dist/components/simple/navigation/Breadcrumb.svelte +41 -9
  100. package/dist/components/simple/navigation/Chip.svelte +65 -29
  101. package/dist/components/simple/navigation/Drawer.svelte +132 -71
  102. package/dist/components/simple/navigation/HeaderMenu.svelte +69 -25
  103. package/dist/components/simple/navigation/Navigator.svelte +45 -11
  104. package/dist/components/simple/navigation/TabSwitcher.svelte +60 -19
  105. package/dist/components/simple/notifiers/AlertBanner.svelte +59 -11
  106. package/dist/components/simple/progress/ProgressBar.svelte +26 -10
  107. package/dist/components/simple/timeline/SimpleTimeLine.svelte +52 -5
  108. package/dist/components/simple/timeline/SimpleTimeLine.svelte.d.ts +16 -9
  109. package/dist/components/simple/typography/Code.svelte +41 -12
  110. package/dist/stores/layouts/unstableSidebarOpened.d.ts +1 -1
  111. package/dist/stores/layouts/unstableSidebarOpened.js +1 -1
  112. package/dist/stores/theme.js +2 -2
  113. package/dist/utils/filters/builder.d.ts +2 -2
  114. package/dist/utils/filters/builder.js +7 -7
  115. package/dist/utils/filters/modifiers/where.d.ts +1 -1
  116. package/dist/utils/teleporter.js +4 -4
  117. package/package.json +39 -33
@@ -1,36 +1,64 @@
1
- <script lang="ts">import './Checkbox.css';
2
- import '../../../css/main.css';
3
- import { onMount } from 'svelte';
4
- let { value = $bindable(), id = undefined, disabled = false, onchange, ...rest } = $props();
5
- onMount(() => {
6
- window.addEventListener('keydown', handleKeyDown);
7
- window.addEventListener('keyup', handleKeyUp);
1
+ <script lang="ts">
2
+ import './Checkbox.css'
3
+ import '../../../css/main.css'
4
+ import { onMount } from 'svelte';
5
+ import type { HTMLInputAttributes } from 'svelte/elements';
6
+
7
+ interface Props extends Omit<HTMLInputAttributes,
8
+ 'onchange' | 'disabled' | 'id' | 'type' | 'checked'> {
9
+ value?: boolean;
10
+ id?: string;
11
+ disabled?: boolean;
12
+ onchange?: (event: {
13
+ detail: {
14
+ shiftKeyPressed: boolean,
15
+ nativeEvent: Event
16
+ }
17
+ }) => void
18
+ }
19
+
20
+ let {
21
+ value = $bindable(),
22
+ id = undefined,
23
+ disabled = false,
24
+ onchange,
25
+ ...rest
26
+ }: Props = $props();
27
+
28
+ onMount(() => {
29
+ window.addEventListener('keydown', handleKeyDown)
30
+ window.addEventListener('keyup', handleKeyUp)
31
+
8
32
  return () => {
9
- window.removeEventListener('keydown', handleKeyDown);
10
- window.removeEventListener('keyup', handleKeyUp);
11
- };
12
- });
13
- function handleKeyDown(event) {
14
- if (event.key == 'Shift') {
15
- shiftKeyPressed = true;
33
+ window.removeEventListener('keydown', handleKeyDown)
34
+ window.removeEventListener('keyup', handleKeyUp)
16
35
  }
17
- }
18
- function handleKeyUp(event) {
19
- if (event.key == 'Shift') {
20
- shiftKeyPressed = false;
36
+ })
37
+
38
+ function handleKeyDown(event: KeyboardEvent) {
39
+ if(event.key == 'Shift') {
40
+ shiftKeyPressed = true
21
41
  }
22
- }
23
- let shiftKeyPressed = false;
24
- function handleChange(e) {
25
- if (onchange) {
26
- onchange({
27
- detail: {
28
- shiftKeyPressed,
29
- nativeEvent: e
30
- }
31
- });
42
+ }
43
+
44
+ function handleKeyUp(event: KeyboardEvent) {
45
+ if(event.key == 'Shift') {
46
+ shiftKeyPressed = false
47
+ }
48
+ }
49
+
50
+ let shiftKeyPressed: boolean = false
51
+
52
+ function handleChange(e: Event) {
53
+ if(onchange) {
54
+ onchange({
55
+ detail: {
56
+ shiftKeyPressed,
57
+ nativeEvent: e
58
+ }
59
+ })
32
60
  }
33
- }
61
+ }
34
62
  </script>
35
63
 
36
64
  <input
@@ -1,66 +1,111 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import './FileInput.css';
3
- let { files = $bindable(), placeholder = undefined, persistOverUpload = true, disabled = false, maxFiles = undefined, class: clazz = '', onfileDrop, onfileSelect, onchange, bodySnippet, } = $props();
4
- let inputElement = undefined;
5
- let dropAreaActive = $state(false);
6
- const highlight = (highlighted) => {
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import '../../../css/main.css'
4
+ import './FileInput.css'
5
+
6
+ interface Props {
7
+ files?: File[];
8
+ placeholder?: string;
9
+ persistOverUpload?: boolean;
10
+ disabled?: boolean;
11
+ maxFiles?: number;
12
+ class?: string
13
+ onfileDrop?: (event: {
14
+ detail: {
15
+ nativeEvent: DragEvent;
16
+ files: File[];
17
+ }
18
+ }) => void
19
+ onfileSelect?: (event: {
20
+ detail: {
21
+ nativeEvent: Event;
22
+ files: File[];
23
+ }
24
+ }) => void
25
+ onchange?: () => void
26
+ bodySnippet?: Snippet<[{
27
+ active: boolean
28
+ }]>
29
+ }
30
+
31
+ let {
32
+ files = $bindable(),
33
+ placeholder = undefined,
34
+ persistOverUpload = true,
35
+ disabled = false,
36
+ maxFiles = undefined,
37
+ class: clazz = '',
38
+ onfileDrop,
39
+ onfileSelect,
40
+ onchange,
41
+ bodySnippet,
42
+ }: Props = $props();
43
+
44
+ let inputElement: HTMLElement | undefined = undefined;
45
+ let dropAreaActive = $state(false);
46
+
47
+ const highlight: (highlighted: boolean) => void = (highlighted) => {
7
48
  dropAreaActive = highlighted && !disabled;
8
- };
9
- function handleFileDrop(event) {
10
- highlight(false);
11
- let droppedFiles = event.dataTransfer?.files;
12
- let limitedFiles;
49
+ };
50
+
51
+ function handleFileDrop(event: DragEvent) {
52
+ highlight(false)
53
+ let droppedFiles: FileList | undefined = event.dataTransfer?.files;
54
+ let limitedFiles: File[]
55
+
13
56
  if (droppedFiles) {
14
- if (maxFiles !== undefined) {
15
- let freeSlots = Math.max(0, maxFiles - (files?.length || 0));
16
- limitedFiles = Array.from(droppedFiles).slice(0, freeSlots);
17
- }
18
- else {
19
- limitedFiles = Array.from(droppedFiles);
20
- }
21
- if (!persistOverUpload)
22
- files = limitedFiles;
23
- else
24
- files = files
25
- ? [...files, ...limitedFiles]
26
- : limitedFiles;
27
- if (onfileDrop) {
28
- onfileDrop({
29
- detail: {
30
- nativeEvent: event,
31
- files: limitedFiles,
32
- }
33
- });
34
- }
57
+ if(maxFiles !== undefined) {
58
+ let freeSlots = Math.max(0, maxFiles - (files?.length || 0))
59
+ limitedFiles = Array.from(droppedFiles).slice(0, freeSlots)
60
+ } else {
61
+ limitedFiles = Array.from(droppedFiles)
62
+ }
63
+
64
+ if (!persistOverUpload) files = limitedFiles;
65
+ else
66
+ files = files
67
+ ? [...files, ...limitedFiles]
68
+ : limitedFiles;
69
+
70
+ if(onfileDrop){
71
+ onfileDrop({
72
+ detail: {
73
+ nativeEvent: event,
74
+ files: limitedFiles,
75
+ }
76
+ })
77
+ }
35
78
  }
36
- }
37
- function handleFileFromInput(event) {
38
- let selectedFiles = event.target.files;
39
- let limitedFiles;
79
+ }
80
+
81
+ function handleFileFromInput(event: Event) {
82
+ let selectedFiles: FileList | null = (<HTMLInputElement>event.target).files;
83
+ let limitedFiles: File[]
84
+
40
85
  if (selectedFiles) {
41
- if (maxFiles !== undefined) {
42
- let freeSlots = Math.max(0, maxFiles - (files?.length || 0));
43
- limitedFiles = Array.from(selectedFiles).slice(0, freeSlots);
44
- }
45
- else {
46
- limitedFiles = Array.from(selectedFiles);
47
- }
48
- if (!persistOverUpload)
49
- files = limitedFiles;
50
- else
51
- files = files
52
- ? [...files, ...limitedFiles]
53
- : limitedFiles;
54
- if (onfileSelect) {
55
- onfileSelect({
56
- detail: {
57
- nativeEvent: event,
58
- files: limitedFiles,
59
- }
60
- });
61
- }
86
+ if(maxFiles !== undefined) {
87
+ let freeSlots = Math.max(0, maxFiles - (files?.length || 0))
88
+ limitedFiles = Array.from(selectedFiles).slice(0, freeSlots)
89
+ } else {
90
+ limitedFiles = Array.from(selectedFiles)
91
+ }
92
+
93
+ if (!persistOverUpload) files = limitedFiles;
94
+ else
95
+ files = files
96
+ ? [...files, ...limitedFiles]
97
+ : limitedFiles;
98
+
99
+ if(onfileSelect){
100
+ onfileSelect({
101
+ detail: {
102
+ nativeEvent: event,
103
+ files: limitedFiles,
104
+ }
105
+ })
106
+ }
62
107
  }
63
- }
108
+ }
64
109
  </script>
65
110
 
66
111
  <div
@@ -1,66 +1,130 @@
1
- <script lang="ts">import "../../../css/main.css";
2
- import "./FileInputList.css";
3
- import Button from "../buttons/Button.svelte";
4
- import FileInput from "./FileInput.svelte";
5
- import Icon from "../media/Icon.svelte";
6
- let { files = $bindable(), persistOverUpload = true, dropAreaActive = true, icon = "mdi-file-document", message = "Drop file here or click to upload", disabled = false, maxFiles = undefined, class: clazz = '', onchange, onfileChange, onfileDrop, onfileSelect, bodySnippet: bodyOuterSnippet, messageSnippet, fileListSnippet, previewFiles = false } = $props();
7
- let fileActive = $state(null);
8
- function handleFileMouseEnter(file) {
1
+ <script lang="ts">
2
+ import "../../../css/main.css";
3
+ import "./FileInputList.css";
4
+ import Button from "../buttons/Button.svelte";
5
+ import FileInput from "./FileInput.svelte";
6
+ import Icon from "../media/Icon.svelte";
7
+ import type { ComponentProps, Snippet } from "svelte";
8
+
9
+ interface Props {
10
+ files?: File[];
11
+ persistOverUpload?: boolean;
12
+ dropAreaActive?: boolean;
13
+ icon?: string;
14
+ message?: string;
15
+ disabled?: boolean;
16
+ maxFiles?: number;
17
+ class?: string
18
+ onchange?: ComponentProps<typeof FileInput>['onchange']
19
+ onfileChange?: (event: {
20
+ detail: {
21
+ files: File[]
22
+ }
23
+ }) => void
24
+ onfileDrop?: () => void
25
+ onfileSelect?: () => void
26
+ bodySnippet?: Snippet<[{
27
+ active: boolean
28
+ }]>
29
+ messageSnippet?: Snippet<[{
30
+ message: string | undefined
31
+ }]>
32
+ fileListSnippet?: Snippet<[{
33
+ files: File[]
34
+ previewFiles: boolean
35
+ fileActive: File | null
36
+ }]>,
37
+ previewFiles?: boolean
38
+ }
39
+
40
+ let {
41
+ files = $bindable(),
42
+ persistOverUpload = true,
43
+ dropAreaActive = true,
44
+ icon = "mdi-file-document",
45
+ message = "Drop file here or click to upload",
46
+ disabled = false,
47
+ maxFiles = undefined,
48
+ class: clazz = '',
49
+ onchange,
50
+ onfileChange,
51
+ onfileDrop,
52
+ onfileSelect,
53
+ bodySnippet: bodyOuterSnippet,
54
+ messageSnippet,
55
+ fileListSnippet,
56
+ previewFiles = false
57
+ }: Props = $props();
58
+
59
+ let fileActive: File | null = $state(null);
60
+
61
+ function handleFileMouseEnter(file: File) {
9
62
  dropAreaActive = false;
10
63
  fileActive = file;
11
- }
12
- function handleFileMouseLeave() {
64
+ }
65
+
66
+ function handleFileMouseLeave() {
13
67
  dropAreaActive = true;
14
68
  fileActive = null;
15
- }
16
- function handleFileClick(file) {
69
+ }
70
+
71
+ function handleFileClick(file: File) {
17
72
  alert(file.name);
18
- }
19
- function handleRemove(file) {
73
+ }
74
+
75
+ function handleRemove(file: File) {
20
76
  files = files?.filter((elem) => {
21
- return elem !== file;
77
+ return elem !== file;
22
78
  });
23
- if (onfileChange) {
24
- onfileChange({
25
- detail: {
26
- files: files || []
27
- }
28
- });
79
+
80
+ if(onfileChange){
81
+ onfileChange({
82
+ detail: {
83
+ files: files || []
84
+ }
85
+ })
29
86
  }
30
- }
31
- function handleFileDrop() {
32
- if (onfileChange) {
33
- onfileChange({
34
- detail: {
35
- files: files || []
36
- }
37
- });
87
+ }
88
+
89
+ function handleFileDrop() {
90
+ if(onfileChange){
91
+ onfileChange({
92
+ detail: {
93
+ files: files || []
94
+ }
95
+ })
38
96
  }
39
- if (onfileDrop) {
40
- onfileDrop();
97
+
98
+ if(onfileDrop){
99
+ onfileDrop()
41
100
  }
42
- }
43
- function handleFileSelect() {
44
- if (onfileChange) {
45
- onfileChange({
46
- detail: {
47
- files: files || []
48
- }
49
- });
101
+ }
102
+
103
+ function handleFileSelect() {
104
+ if(onfileChange){
105
+ onfileChange({
106
+ detail: {
107
+ files: files || []
108
+ }
109
+ })
50
110
  }
51
- if (onfileSelect) {
52
- onfileSelect();
111
+
112
+ if(onfileSelect){
113
+ onfileSelect()
53
114
  }
54
- }
55
- function isImageFile(file) {
56
- if (file.type.startsWith('image/') && (file.type.endsWith("/jpg")
57
- || file.type.endsWith("/png")
58
- || file.type.endsWith("/jpeg")
59
- || file.type.endsWith("/webp"))) {
60
- return true;
115
+ }
116
+
117
+ function isImageFile(file: File): boolean {
118
+ if (file.type.startsWith('image/') && (
119
+ file.type.endsWith("/jpg")
120
+ || file.type.endsWith("/png")
121
+ || file.type.endsWith("/jpeg")
122
+ || file.type.endsWith("/webp")
123
+ )) {
124
+ return true
61
125
  }
62
- return false;
63
- }
126
+ return false
127
+ }
64
128
  </script>
65
129
 
66
130
  <div class="card-container {clazz}">
@@ -87,7 +151,7 @@ function isImageFile(file) {
87
151
  style:width="100%"
88
152
  style:display="flex"
89
153
  >
90
- <div class="body-container" class:{active}>
154
+ <div class="body-container" class:active>
91
155
  {#if !files || files.length === 0}
92
156
  {#if messageSnippet}
93
157
  {@render messageSnippet({ message })}
@@ -1,6 +1,39 @@
1
- <script lang="ts">import './RadioButton.css';
2
- import "../../../css/main.css";
3
- let { name, value, id = undefined, checked = $bindable(), label = undefined, disabled = false, onblur, onchange, onfocus, oninput, onkeydown, onkeypress, onkeyup, } = $props();
1
+ <script lang="ts">
2
+ import './RadioButton.css'
3
+ import "../../../css/main.css";
4
+
5
+ interface Props {
6
+ name: string;
7
+ value: string;
8
+ id?: string;
9
+ checked?: boolean;
10
+ label?: string;
11
+ disabled?: boolean;
12
+ onchange?: () => void
13
+ oninput?: () => void
14
+ onfocus?: () => void
15
+ onblur?: () => void
16
+ onkeydown?: () => void
17
+ onkeypress?: () => void
18
+ onkeyup?: () => void
19
+ }
20
+
21
+ let {
22
+ name,
23
+ value,
24
+ id = undefined,
25
+ checked = $bindable(),
26
+ label = undefined,
27
+ disabled = false,
28
+ onblur,
29
+ onchange,
30
+ onfocus,
31
+ oninput,
32
+ onkeydown,
33
+ onkeypress,
34
+ onkeyup,
35
+ }: Props = $props();
36
+
4
37
  </script>
5
38
 
6
39
  <input
@@ -1,7 +1,34 @@
1
- <script lang="ts" module>import './Select.css';
1
+ <script lang="ts" module>
2
+ import './Select.css'
3
+ export type Option = {
4
+ icon?: string
5
+ value: string | number | undefined
6
+ text: string
7
+ }
2
8
  </script>
3
- <script lang="ts">import { Icon } from "../../..";
4
- let { options, name = undefined, value = $bindable(), disabled = false, placeholder = undefined, onchange, optionAttributes, ...rest } = $props();
9
+ <script lang="ts">
10
+ import { Icon } from "../../..";
11
+ import type { HTMLOptionAttributes, HTMLSelectAttributes } from 'svelte/elements';
12
+
13
+ interface Props extends HTMLSelectAttributes{
14
+ options: Option[],
15
+ name?: string,
16
+ value?: string | number,
17
+ disabled?: boolean,
18
+ placeholder?: string,
19
+ optionAttributes?: HTMLOptionAttributes
20
+ }
21
+
22
+ let {
23
+ options,
24
+ name = undefined,
25
+ value = $bindable(),
26
+ disabled = false,
27
+ placeholder = undefined,
28
+ onchange,
29
+ optionAttributes,
30
+ ...rest
31
+ }: Props = $props();
5
32
  </script>
6
33
 
7
34
  <select
@@ -1,7 +1,97 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import './SimpleTextField.css';
3
- import Icon from "../media/Icon.svelte";
4
- let { value = $bindable(), valueTo = $bindable(), type = "text", range = false, placeholder = undefined, placeholderTo = undefined, disabled = false, readonly = false, id = undefined, idTo = undefined, appendIcon = undefined, appendInnerIcon = undefined, prependIcon = undefined, prependInnerIcon = undefined, iconSize = "12pt", name = undefined, nameTo = undefined, hint = undefined, input = $bindable(undefined), inputTo = $bindable(undefined), betweenLabel = '-', class: clazz = {}, prependSnippet, prependInnerSnippet, appendInnerSnippet, appendSnippet, hintSnippet, onchange, oninput, onfocus, onblur, onkeydown, onkeyup, onkeypress, ...rest } = $props();
1
+ <script lang="ts">
2
+ import '../../../css/main.css'
3
+ import './SimpleTextField.css'
4
+ import Icon from "../media/Icon.svelte";
5
+ import type { HTMLInputAttributes } from 'svelte/elements';
6
+ import type { Snippet } from 'svelte';
7
+
8
+ interface Props extends HTMLInputAttributes{
9
+ value?: string | number;
10
+ valueTo?: string | number;
11
+ type?: "text" | "password" | "number" | "time" | "date";
12
+ range?: boolean
13
+ placeholder?: string;
14
+ placeholderTo?: string;
15
+ disabled?: boolean;
16
+ readonly?: boolean;
17
+ id?: string;
18
+ idTo?: string;
19
+ appendIcon?: string;
20
+ appendInnerIcon?: string;
21
+ prependIcon?: string;
22
+ prependInnerIcon?: string;
23
+ iconSize?: string;
24
+ name?: string;
25
+ nameTo?: string;
26
+ hint?: string;
27
+ input?: HTMLElement;
28
+ inputTo?: HTMLElement;
29
+ betweenLabel?: string
30
+ class?: {
31
+ container?: string,
32
+ row?: string,
33
+ field?: string,
34
+ hint?: string,
35
+ input?: string
36
+ }
37
+ prependSnippet?: Snippet<[{
38
+ prependIcon: string | undefined
39
+ iconSize: string
40
+ }]>
41
+ prependInnerSnippet?: Snippet<[{
42
+ prependInnerIcon: string | undefined
43
+ iconSize: string
44
+ }]>
45
+ appendSnippet?: Snippet<[{
46
+ appendIcon: string | undefined
47
+ iconSize: string
48
+ }]>
49
+ appendInnerSnippet?: Snippet<[{
50
+ appendInnerIcon: string | undefined
51
+ iconSize: string
52
+ }]>
53
+ hintSnippet?: Snippet<[{
54
+ hint: string | undefined
55
+ }]>
56
+ }
57
+
58
+ let {
59
+ value = $bindable(),
60
+ valueTo = $bindable(),
61
+ type = "text",
62
+ range = false,
63
+ placeholder = undefined,
64
+ placeholderTo = undefined,
65
+ disabled = false,
66
+ readonly = false,
67
+ id = undefined,
68
+ idTo = undefined,
69
+ appendIcon = undefined,
70
+ appendInnerIcon = undefined,
71
+ prependIcon = undefined,
72
+ prependInnerIcon = undefined,
73
+ iconSize = "12pt",
74
+ name = undefined,
75
+ nameTo = undefined,
76
+ hint = undefined,
77
+ input = $bindable(undefined),
78
+ inputTo = $bindable(undefined),
79
+ betweenLabel = '-',
80
+ class: clazz = {},
81
+ prependSnippet,
82
+ prependInnerSnippet,
83
+ appendInnerSnippet,
84
+ appendSnippet,
85
+ hintSnippet,
86
+ onchange,
87
+ oninput,
88
+ onfocus,
89
+ onblur,
90
+ onkeydown,
91
+ onkeyup,
92
+ onkeypress,
93
+ ...rest
94
+ }: Props = $props();
5
95
  </script>
6
96
 
7
97
  <div
@@ -1,15 +1,37 @@
1
- <script lang="ts">import './Switch.css';
2
- let { value = $bindable(), disabled = false, onchange: onchangeInternal, } = $props();
3
- function onchange(event) {
4
- if (onchangeInternal) {
5
- onchangeInternal({
6
- detail: {
7
- nativeEvent: event,
8
- value: event.currentTarget.checked
9
- }
10
- });
1
+ <script lang="ts">
2
+ import './Switch.css'
3
+
4
+ interface Props {
5
+ value?: boolean;
6
+ disabled?: boolean;
7
+ onchange?: (event: {
8
+ detail: {
9
+ nativeEvent: Event & {
10
+ currentTarget: EventTarget & HTMLInputElement;
11
+ },
12
+ value: boolean
13
+ }
14
+ }) => void
15
+ }
16
+
17
+ let {
18
+ value = $bindable(),
19
+ disabled = false,
20
+ onchange: onchangeInternal,
21
+ }: Props = $props();
22
+
23
+ function onchange(event: Event & {
24
+ currentTarget: EventTarget & HTMLInputElement;
25
+ }) {
26
+ if(onchangeInternal) {
27
+ onchangeInternal({
28
+ detail: {
29
+ nativeEvent: event,
30
+ value: event.currentTarget.checked
31
+ }
32
+ })
11
33
  }
12
- }
34
+ }
13
35
  </script>
14
36
 
15
37
  <label class="toggle-switch" class:disabled>