@juspay/svelte-ui-components 1.34.1 → 2.0.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 (89) hide show
  1. package/dist/Accordion/Accordion.svelte +17 -30
  2. package/dist/Accordion/Accordion.svelte.d.ts +6 -20
  3. package/dist/Animations/ModalAnimation.svelte +44 -30
  4. package/dist/Animations/ModalAnimation.svelte.d.ts +9 -21
  5. package/dist/Animations/OverlayAnimation.svelte +9 -2
  6. package/dist/Animations/OverlayAnimation.svelte.d.ts +6 -28
  7. package/dist/Badge/Badge.svelte +9 -8
  8. package/dist/Badge/Badge.svelte.d.ts +3 -18
  9. package/dist/Banner/Banner.svelte +20 -19
  10. package/dist/Banner/Banner.svelte.d.ts +3 -23
  11. package/dist/Banner/properties.d.ts +6 -2
  12. package/dist/BrandLoader/BrandLoader.svelte +11 -12
  13. package/dist/BrandLoader/BrandLoader.svelte.d.ts +3 -19
  14. package/dist/BrandLoader/properties.d.ts +1 -4
  15. package/dist/BrandLoader/properties.js +1 -7
  16. package/dist/Button/Button.svelte +38 -27
  17. package/dist/Button/Button.svelte.d.ts +4 -23
  18. package/dist/Button/properties.d.ts +9 -5
  19. package/dist/Button/properties.js +1 -7
  20. package/dist/Carousel/Carousel.svelte +132 -108
  21. package/dist/Carousel/Carousel.svelte.d.ts +3 -20
  22. package/dist/Carousel/properties.d.ts +6 -12
  23. package/dist/Carousel/properties.js +1 -7
  24. package/dist/CheckListItem/CheckListItem.svelte +18 -12
  25. package/dist/CheckListItem/CheckListItem.svelte.d.ts +4 -23
  26. package/dist/CheckListItem/properties.d.ts +7 -0
  27. package/dist/CheckListItem/properties.js +1 -0
  28. package/dist/GridItem/GridItem.svelte +17 -11
  29. package/dist/GridItem/GridItem.svelte.d.ts +4 -24
  30. package/dist/GridItem/properties.d.ts +8 -0
  31. package/dist/GridItem/properties.js +1 -0
  32. package/dist/Icon/Icon.svelte +8 -6
  33. package/dist/Icon/Icon.svelte.d.ts +3 -21
  34. package/dist/Icon/properties.d.ts +3 -2
  35. package/dist/Icon/properties.js +1 -4
  36. package/dist/IconStack/IconStack.svelte +5 -3
  37. package/dist/IconStack/IconStack.svelte.d.ts +4 -19
  38. package/dist/IconStack/properties.d.ts +4 -1
  39. package/dist/Img/Img.svelte +13 -9
  40. package/dist/Img/Img.svelte.d.ts +4 -20
  41. package/dist/Img/properties.d.ts +2 -2
  42. package/dist/Input/Input.svelte +172 -139
  43. package/dist/Input/Input.svelte.d.ts +6 -32
  44. package/dist/Input/properties.d.ts +23 -22
  45. package/dist/Input/properties.js +1 -23
  46. package/dist/InputButton/InputButton.svelte +76 -78
  47. package/dist/InputButton/InputButton.svelte.d.ts +6 -35
  48. package/dist/InputButton/properties.d.ts +6 -4
  49. package/dist/InputButton/properties.js +1 -18
  50. package/dist/ListItem/ListItem.svelte +87 -64
  51. package/dist/ListItem/ListItem.svelte.d.ts +4 -35
  52. package/dist/ListItem/properties.d.ts +21 -7
  53. package/dist/ListItem/properties.js +1 -8
  54. package/dist/Loader/Loader.svelte +1 -4
  55. package/dist/Loader/Loader.svelte.d.ts +24 -15
  56. package/dist/Modal/Modal.svelte +117 -95
  57. package/dist/Modal/Modal.svelte.d.ts +3 -29
  58. package/dist/Modal/properties.d.ts +21 -13
  59. package/dist/Modal/properties.js +1 -14
  60. package/dist/Select/Select.svelte +170 -142
  61. package/dist/Select/Select.svelte.d.ts +3 -26
  62. package/dist/Select/properties.d.ts +19 -10
  63. package/dist/Status/Status.svelte +15 -15
  64. package/dist/Status/Status.svelte.d.ts +3 -21
  65. package/dist/Status/properties.d.ts +2 -2
  66. package/dist/Status/properties.js +1 -6
  67. package/dist/Stepper/Step.svelte +13 -13
  68. package/dist/Stepper/Step.svelte.d.ts +4 -23
  69. package/dist/Stepper/Stepper.svelte +10 -7
  70. package/dist/Stepper/Stepper.svelte.d.ts +3 -20
  71. package/dist/Stepper/properties.d.ts +12 -0
  72. package/dist/Table/Table.svelte +73 -47
  73. package/dist/Table/Table.svelte.d.ts +3 -20
  74. package/dist/Table/properties.d.ts +5 -5
  75. package/dist/Toast/Toast.svelte +144 -76
  76. package/dist/Toast/Toast.svelte.d.ts +24 -23
  77. package/dist/Toast/properties.d.ts +10 -11
  78. package/dist/Toast/properties.js +1 -4
  79. package/dist/Toggle/Toggle.svelte +12 -11
  80. package/dist/Toggle/Toggle.svelte.d.ts +4 -21
  81. package/dist/Toggle/properties.d.ts +5 -0
  82. package/dist/Toggle/properties.js +1 -0
  83. package/dist/Toolbar/Toolbar.svelte +27 -20
  84. package/dist/Toolbar/Toolbar.svelte.d.ts +3 -26
  85. package/dist/Toolbar/properties.d.ts +10 -4
  86. package/dist/Toolbar/properties.js +1 -5
  87. package/dist/index.d.ts +0 -11
  88. package/dist/index.js +0 -11
  89. package/package.json +29 -29
@@ -1,166 +1,195 @@
1
- <script>import { createEventDispatcher, onDestroy, onMount } from "svelte";
2
- import Img from "../Img/Img.svelte";
3
- import Button from "../Button/Button.svelte";
4
- import CheckListItem from "../CheckListItem/CheckListItem.svelte";
5
- let selectedElementDiv = null;
6
- export let dropDownIconAlt = "";
7
- export let properties = {
8
- placeholder: "",
9
- label: "",
10
- allItems: [],
11
- selectedItem: "",
12
- selectedItemLabel: null,
13
- showSelectedItemInDropdown: false,
14
- selectMultipleItems: false,
15
- leftIcon: null,
16
- showSelectedItem: true,
17
- showSelectedItemCount: false
18
- };
19
- const dropDownIcon = properties.dropDownIcon ?? "https://sdk.breeze.in/gallery/icons/down-arrow.svg";
20
- let applyButtonProps;
21
- $:
22
- applyButtonProps = {
23
- text: `Select (${properties.selectedItem.length})`,
24
- enable: properties.selectedItem.length > 0,
1
+ <script lang="ts">
2
+ import { onDestroy, onMount } from 'svelte';
3
+ import type { SelectProperties } from './properties';
4
+ import type { ButtonProperties } from '../Button/properties';
5
+ import Img from '../Img/Img.svelte';
6
+ import Button from '../Button/Button.svelte';
7
+ import CheckListItem from '../CheckListItem/CheckListItem.svelte';
8
+
9
+ let selectedElementDiv: HTMLDivElement | null = $state(null);
10
+
11
+ let {
12
+ dropDownIconAlt = '',
13
+ placeholder = '',
14
+ label = '',
15
+ allItems = [],
16
+ selectedItem = '',
17
+ selectedItemLabel = null,
18
+ showSelectedItemInDropdown = false,
19
+ selectMultipleItems = false,
20
+ hideDropDownIcon,
21
+ dropDownIcon,
22
+ leftIcon = null,
23
+ showSingleSelectButton,
24
+ showSelectedItem = true,
25
+ showSelectedItemCount = false,
26
+ testId,
27
+ labelTestId,
28
+ itemTestId,
29
+ leftContent,
30
+ bottomContent,
31
+ onselect,
32
+ ondropdownClick,
33
+ onkeydown
34
+ }: SelectProperties = $props();
35
+
36
+ const dropDownIconUrl = dropDownIcon ?? 'https://sdk.breeze.in/gallery/icons/down-arrow.svg';
37
+
38
+ let applyButtonProps: ButtonProperties = $derived({
39
+ text: `Select (${selectedItem.length})`,
40
+ enable: selectedItem.length > 0,
41
+ showLoader: false,
42
+ type: 'submit'
43
+ });
44
+
45
+ const selectAllButtonProps: ButtonProperties = {
46
+ text: 'Select All',
47
+ enable: true,
25
48
  showLoader: false,
26
- loaderType: null,
27
- type: "submit"
49
+ type: 'submit'
28
50
  };
29
- const selectAllButtonProps = {
30
- text: "Select All",
31
- enable: true,
32
- showLoader: false,
33
- loaderType: null,
34
- type: "submit"
35
- };
36
- let isSelectOpen = false;
37
- const dispatch = createEventDispatcher();
38
- $:
39
- nonSelectedItems = properties.allItems.filter(
40
- (item) => properties.selectMultipleItems ? !properties.selectedItem.includes(item) : item !== properties.selectedItem
51
+
52
+ let isSelectOpen = $state(false);
53
+
54
+ let nonSelectedItems = $derived(
55
+ allItems.filter((item) =>
56
+ selectMultipleItems ? !selectedItem.includes(item) : item !== selectedItem
57
+ )
41
58
  );
42
- function isSelected(selectedItem, item) {
43
- if (Array.isArray(selectedItem)) {
44
- return selectedItem.includes(item);
45
- } else {
46
- return selectedItem.trim() === item.trim();
59
+
60
+ function isSelected(selectedItem: string | string[], item: string) {
61
+ if (Array.isArray(selectedItem)) {
62
+ return selectedItem.includes(item);
63
+ } else {
64
+ return selectedItem.trim() === item.trim();
65
+ }
47
66
  }
48
- }
49
- function selectItem(item) {
50
- if (properties.selectMultipleItems && Array.isArray(properties.selectedItemLabel) && Array.isArray(properties.selectedItem)) {
51
- if (isSelected(properties.selectedItem, item)) {
52
- properties.selectedItem = properties.selectedItem.filter(
53
- (selectedItem) => selectedItem !== item
54
- );
55
- properties.selectedItemLabel = properties.selectedItemLabel.filter(
56
- (label) => label !== item
57
- );
67
+
68
+ function selectItem(item: string) {
69
+ if (selectMultipleItems && Array.isArray(selectedItemLabel) && Array.isArray(selectedItem)) {
70
+ if (isSelected(selectedItem, item)) {
71
+ selectedItem = selectedItem.filter((selected) => selected !== item);
72
+ selectedItemLabel = selectedItemLabel.filter((label) => label !== item);
73
+ } else {
74
+ selectedItem = [...selectedItem, item];
75
+ selectedItemLabel = [...selectedItemLabel, item];
76
+ }
58
77
  } else {
59
- properties.selectedItem = [...properties.selectedItem, item];
60
- properties.selectedItemLabel = [...properties.selectedItemLabel, item];
78
+ selectedItem = [item];
79
+ selectedItemLabel = [item];
80
+ }
81
+ if (!selectMultipleItems) {
82
+ toggleSelect();
83
+ dispatchEvent();
61
84
  }
62
- } else {
63
- properties.selectedItem = [item];
64
- properties.selectedItemLabel = [item];
65
85
  }
66
- if (!properties.selectMultipleItems) {
67
- toggleSelect();
68
- dispatchEvent();
86
+
87
+ function dispatchEvent() {
88
+ onselect?.({ selectedItems: selectedItem });
89
+ isSelectOpen = false;
69
90
  }
70
- }
71
- function dispatchEvent() {
72
- dispatch("message", { selectedItems: properties.selectedItem });
73
- isSelectOpen = false;
74
- }
75
- function toggleSelect() {
76
- isSelectOpen = !isSelectOpen;
77
- dispatch("dropdownClick");
78
- }
79
- function selectAllItems() {
80
- if (properties.selectedItem.length === properties.allItems.length) {
81
- properties.selectedItem = [];
82
- properties.selectedItemLabel = [];
83
- } else {
84
- properties.selectedItem = [...properties.allItems];
85
- properties.selectedItemLabel = [...properties.allItems];
91
+
92
+ function toggleSelect() {
93
+ isSelectOpen = !isSelectOpen;
94
+ ondropdownClick?.();
86
95
  }
87
- }
88
- function closeSelect(event) {
89
- const clickedElement = event.target;
90
- if (selectedElementDiv !== null && !selectedElementDiv.contains(clickedElement)) {
91
- const isItemClicked = clickedElement.classList.contains("item");
92
- const isApplyButtonClicked = clickedElement.classList.contains("apply-btn");
93
- const isClearAllButtonClicked = clickedElement.innerText === "Clear All";
94
- const isSelectAllButtonClicked = clickedElement.innerText === "Select All";
95
- const isCheckListClicked = clickedElement.classList.contains("checkbox");
96
- if (!isItemClicked && !isApplyButtonClicked && !isClearAllButtonClicked && !isSelectAllButtonClicked && !isCheckListClicked) {
97
- isSelectOpen = false;
96
+
97
+ function selectAllItems() {
98
+ if (selectedItem.length === allItems.length) {
99
+ selectedItem = [];
100
+ selectedItemLabel = [];
101
+ } else {
102
+ selectedItem = [...allItems];
103
+ selectedItemLabel = [...allItems];
98
104
  }
99
105
  }
100
- }
101
- onMount(() => {
102
- document.addEventListener("click", closeSelect);
103
- });
104
- onDestroy(() => {
105
- if (typeof window !== "undefined") {
106
- document.removeEventListener("click", closeSelect);
106
+
107
+ function closeSelect(event: Event) {
108
+ const clickedElement = event.target as HTMLElement;
109
+ if (selectedElementDiv !== null && !selectedElementDiv.contains(clickedElement)) {
110
+ const isItemClicked = clickedElement.classList.contains('item');
111
+ const isApplyButtonClicked = clickedElement.classList.contains('apply-btn');
112
+ const isClearAllButtonClicked = clickedElement.innerText === 'Clear All';
113
+ const isSelectAllButtonClicked = clickedElement.innerText === 'Select All';
114
+ const isCheckListClicked = clickedElement.classList.contains('checkbox');
115
+ if (
116
+ !isItemClicked &&
117
+ !isApplyButtonClicked &&
118
+ !isClearAllButtonClicked &&
119
+ !isSelectAllButtonClicked &&
120
+ !isCheckListClicked
121
+ ) {
122
+ isSelectOpen = false;
123
+ }
124
+ }
107
125
  }
108
- });
126
+
127
+ onMount(() => {
128
+ document.addEventListener('click', closeSelect);
129
+ });
130
+
131
+ onDestroy(() => {
132
+ if (typeof window !== 'undefined') {
133
+ document.removeEventListener('click', closeSelect);
134
+ }
135
+ });
109
136
  </script>
110
137
 
111
- {#if properties.label !== null && properties.label !== ''}
112
- <label class="label-container" for={properties.label} data-pw={properties.labelTestId}>
113
- {properties.label}
138
+ {#if label !== null && label !== ''}
139
+ <label class="label-container" for={label} data-pw={labelTestId}>
140
+ {label}
114
141
  </label>
115
142
  {/if}
116
143
 
117
- {#if properties.allItems.length !== 0}
144
+ {#if allItems.length !== 0}
118
145
  <div class="select">
119
146
  <div
120
147
  class="selected item"
121
- on:click={toggleSelect}
148
+ onclick={toggleSelect}
122
149
  bind:this={selectedElementDiv}
123
- on:keydown
150
+ {onkeydown}
124
151
  role="button"
125
152
  tabindex="0"
126
- data-pw={properties.testId}
153
+ data-pw={testId}
127
154
  >
128
- {#if properties.leftIcon !== null}
155
+ {#if leftIcon !== null}
129
156
  <div class="icon-container">
130
- <Img {...properties.leftIcon} />
157
+ <Img {...leftIcon} />
131
158
  </div>
132
- <slot name="leftContent" />
159
+ {/if}
160
+ {#if leftContent}
161
+ {@render leftContent()}
133
162
  {/if}
134
163
  <div class="selected-content">
135
- {#if properties.selectMultipleItems && Array.isArray(properties.selectedItemLabel) && Array.isArray(properties.selectedItem)}
136
- {#if properties.selectedItem.length === 0}
137
- {properties.placeholder}
138
- {:else if properties.selectedItemLabel?.length === 0 || (properties.showSelectedItemInDropdown && properties.showSelectedItem !== false)}
139
- {properties.selectedItem.join(', ')}
140
- {:else if properties.showSelectedItem !== false}
141
- {properties.selectedItemLabel.join(', ')}
164
+ {#if selectMultipleItems && Array.isArray(selectedItemLabel) && Array.isArray(selectedItem)}
165
+ {#if selectedItem.length === 0}
166
+ {placeholder}
167
+ {:else if selectedItemLabel?.length === 0 || (showSelectedItemInDropdown && showSelectedItem !== false)}
168
+ {selectedItem.join(', ')}
169
+ {:else if showSelectedItem !== false}
170
+ {selectedItemLabel.join(', ')}
142
171
  {:else}
143
- {properties.placeholder}
172
+ {placeholder}
144
173
  {/if}
145
- {:else if properties.selectedItem === ''}
146
- {properties.placeholder}
147
- {:else if properties.selectedItemLabel === null || (properties.selectedItemLabel === '' && properties.showSelectedItem !== false)}
148
- {properties.selectedItem}
149
- {:else if properties.showSelectedItem !== false}
150
- {properties.selectedItemLabel}
174
+ {:else if selectedItem === ''}
175
+ {placeholder}
176
+ {:else if selectedItemLabel === null || (selectedItemLabel === '' && showSelectedItem !== false)}
177
+ {selectedItem}
178
+ {:else if showSelectedItem !== false}
179
+ {selectedItemLabel}
151
180
  {:else}
152
- {properties.placeholder}
181
+ {placeholder}
153
182
  {/if}
154
183
  </div>
155
- <div class="filler" />
156
- {#if properties.showSelectedItemCount && properties.selectMultipleItems && Array.isArray(properties.selectedItem)}
184
+ <div class="filler"></div>
185
+ {#if showSelectedItemCount && selectMultipleItems && Array.isArray(selectedItem)}
157
186
  <div class="selected-item-count">
158
- {properties.selectedItem.length}
187
+ {selectedItem.length}
159
188
  </div>
160
189
  {/if}
161
- {#if !properties.hideDropDownIcon}
190
+ {#if !hideDropDownIcon}
162
191
  <img
163
- src={dropDownIcon}
192
+ src={dropDownIconUrl}
164
193
  alt={dropDownIconAlt}
165
194
  class="arrow {isSelectOpen ? 'active' : ''}"
166
195
  />
@@ -170,42 +199,41 @@ onDestroy(() => {
170
199
  class="non-selected-items"
171
200
  style="--non-selected-display:{isSelectOpen ? 'inline-block' : 'none'};"
172
201
  >
173
- {#if properties.selectMultipleItems && !properties.showSingleSelectButton}
202
+ {#if selectMultipleItems && !showSingleSelectButton}
174
203
  <div class="select-all-btn">
175
204
  <CheckListItem
176
- checked={Array.isArray(properties.selectedItem) &&
177
- properties.selectedItem.length === properties.allItems.length}
205
+ checked={Array.isArray(selectedItem) && selectedItem.length === allItems.length}
178
206
  text=""
179
- on:click={selectAllItems}
207
+ onclick={selectAllItems}
180
208
  />
181
- <Button properties={selectAllButtonProps} on:click={selectAllItems} />
209
+ <Button {...selectAllButtonProps} onclick={selectAllItems} />
182
210
  </div>
183
211
  {/if}
184
212
  <div class="item-list">
185
- {#each properties.showSelectedItemInDropdown ? properties.allItems : nonSelectedItems as item}
213
+ {#each showSelectedItemInDropdown ? allItems : nonSelectedItems as item (item)}
186
214
  <div
187
- on:keydown
188
- on:click={() => {
215
+ {onkeydown}
216
+ onclick={() => {
189
217
  selectItem(item);
190
218
  }}
191
- class="item {isSelected(properties.selectedItem, item) ? ' item-selected' : ''}"
219
+ class="item {isSelected(selectedItem, item) ? ' item-selected' : ''}"
192
220
  role="button"
193
221
  tabindex="0"
194
- data-pw={`${properties.itemTestId}-${item}`}
222
+ data-pw={`${itemTestId}-${item}`}
195
223
  >
196
- {#if properties.selectMultipleItems}
197
- <CheckListItem checked={isSelected(properties.selectedItem, item)} text="" />
224
+ {#if selectMultipleItems}
225
+ <CheckListItem checked={isSelected(selectedItem, item)} text="" />
198
226
  {/if}
199
227
  {item}
200
228
  </div>
201
229
  {/each}
202
230
  </div>
203
- {#if $$slots.bottomContent}
204
- <slot name="bottomContent" />
231
+ {#if bottomContent}
232
+ {@render bottomContent()}
205
233
  {/if}
206
- {#if properties.selectMultipleItems}
234
+ {#if selectMultipleItems}
207
235
  <div class="apply-btn-container">
208
- <Button properties={applyButtonProps} on:click={dispatchEvent} />
236
+ <Button {...applyButtonProps} onclick={dispatchEvent} />
209
237
  </div>
210
238
  {/if}
211
239
  </div>
@@ -1,27 +1,4 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { SelectProperties } from './properties';
3
- declare const __propDef: {
4
- props: {
5
- dropDownIconAlt?: string;
6
- properties?: SelectProperties;
7
- };
8
- events: {
9
- keydown: KeyboardEvent;
10
- message: CustomEvent<any>;
11
- dropdownClick: CustomEvent<any>;
12
- } & {
13
- [evt: string]: CustomEvent<any>;
14
- };
15
- slots: {
16
- leftContent: {};
17
- bottomContent: {};
18
- };
19
- exports?: {} | undefined;
20
- bindings?: string | undefined;
21
- };
22
- export type SelectProps = typeof __propDef.props;
23
- export type SelectEvents = typeof __propDef.events;
24
- export type SelectSlots = typeof __propDef.slots;
25
- export default class Select extends SvelteComponent<SelectProps, SelectEvents, SelectSlots> {
26
- }
27
- export {};
2
+ declare const Select: import("svelte").Component<SelectProperties, {}, "">;
3
+ type Select = ReturnType<typeof Select>;
4
+ export default Select;
@@ -1,19 +1,28 @@
1
- import type { ImgProps } from '../Img/properties';
1
+ import type { Snippet } from 'svelte';
2
+ import type { ImgProperties } from '../Img/properties';
2
3
  export type SelectProperties = {
3
- placeholder: string;
4
- label: string;
5
- allItems: string[];
6
- selectedItem: string | string[];
7
- selectedItemLabel: string | string[] | null;
8
- showSelectedItemInDropdown: boolean;
9
- selectMultipleItems: boolean;
4
+ dropDownIconAlt?: string;
5
+ placeholder?: string | null;
6
+ label?: string | null;
7
+ allItems?: string[];
8
+ selectedItem?: string | string[];
9
+ selectedItemLabel?: string | string[] | null;
10
+ showSelectedItemInDropdown?: boolean;
11
+ selectMultipleItems?: boolean;
10
12
  hideDropDownIcon?: boolean;
11
13
  dropDownIcon?: string;
12
- leftIcon: ImgProps | null;
13
- showSingleSelectButton?: boolean | null;
14
+ leftIcon?: ImgProperties | null;
15
+ showSingleSelectButton?: boolean;
14
16
  showSelectedItem?: boolean;
15
17
  showSelectedItemCount?: boolean;
16
18
  testId?: string;
17
19
  labelTestId?: string;
18
20
  itemTestId?: string;
21
+ leftContent?: Snippet;
22
+ bottomContent?: Snippet;
23
+ onselect?: (event: {
24
+ selectedItems: string | string[];
25
+ }) => void;
26
+ ondropdownClick?: () => void;
27
+ onkeydown?: (event: KeyboardEvent) => void;
19
28
  };
@@ -1,26 +1,26 @@
1
- <script context="module">export const prerender = true;
2
- </script>
1
+ <script lang="ts">
2
+ import type { StatusProperties } from './properties';
3
+ import Button from '../Button/Button.svelte';
3
4
 
4
- <script>import { defaultStatusProperties } from "./properties";
5
- import Button from "../Button/Button.svelte";
6
- import { createEventDispatcher } from "svelte";
7
- const dispatch = createEventDispatcher();
8
- export let properties = defaultStatusProperties;
9
- function handleButtonClick() {
10
- dispatch("buttonClick");
11
- }
5
+ let {
6
+ statusIcon = 'icons/order-success-icon.svg',
7
+ statusText = '',
8
+ statusDescription = '',
9
+ buttonProperties,
10
+ onbuttonClick
11
+ }: StatusProperties = $props();
12
12
  </script>
13
13
 
14
14
  <div class="background">
15
15
  <div class="order-status">
16
- <div class="status-image"><img src={properties.statusIcon} alt="status" /></div>
17
- <div class="status-text">{properties.statusText}</div>
16
+ <div class="status-image"><img src={statusIcon} alt="status" /></div>
17
+ <div class="status-text">{statusText}</div>
18
18
  <div class="status-description">
19
19
  <!-- eslint-disable-next-line -->
20
- {@html properties.statusDescription}
20
+ {@html statusDescription}
21
21
  </div>
22
- {#if properties.buttonProperties !== null}
23
- <Button properties={properties.buttonProperties} on:click={handleButtonClick} />
22
+ {#if buttonProperties}
23
+ <Button {...buttonProperties} onclick={onbuttonClick} />
24
24
  {/if}
25
25
  </div>
26
26
  </div>
@@ -1,22 +1,4 @@
1
- import { SvelteComponent } from "svelte";
2
- export declare const prerender = true;
3
1
  import type { StatusProperties } from './properties';
4
- declare const __propDef: {
5
- props: {
6
- properties?: StatusProperties;
7
- };
8
- events: {
9
- buttonClick: CustomEvent<any>;
10
- } & {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- exports?: {} | undefined;
15
- bindings?: string | undefined;
16
- };
17
- export type StatusProps = typeof __propDef.props;
18
- export type StatusEvents = typeof __propDef.events;
19
- export type StatusSlots = typeof __propDef.slots;
20
- export default class Status extends SvelteComponent<StatusProps, StatusEvents, StatusSlots> {
21
- }
22
- export {};
2
+ declare const Status: import("svelte").Component<StatusProperties, {}, "">;
3
+ type Status = ReturnType<typeof Status>;
4
+ export default Status;
@@ -3,6 +3,6 @@ export type StatusProperties = {
3
3
  statusIcon: string;
4
4
  statusText: string;
5
5
  statusDescription: string;
6
- buttonProperties: ButtonProperties | null;
6
+ buttonProperties?: ButtonProperties;
7
+ onbuttonClick?: () => void;
7
8
  };
8
- export declare const defaultStatusProperties: StatusProperties;
@@ -1,6 +1 @@
1
- export const defaultStatusProperties = {
2
- statusIcon: 'icons/order-success-icon.svg',
3
- statusText: '',
4
- statusDescription: '',
5
- buttonProperties: null
6
- };
1
+ export {};
@@ -1,29 +1,29 @@
1
- <script>import { createEventDispatcher } from "svelte";
2
- export let stepIndex;
3
- export let label;
4
- export let icon;
5
- const dispatch = createEventDispatcher();
6
- function handleStepClick() {
7
- dispatch("handleStepClick", { selectedIndex: stepIndex });
8
- }
1
+ <script lang="ts">
2
+ import type { StepProperties } from './properties';
3
+
4
+ let { stepIndex, label, icon, onclick, onkeydown }: StepProperties = $props();
5
+
6
+ function handleStepClick() {
7
+ onclick?.({ selectedIndex: stepIndex });
8
+ }
9
9
  </script>
10
10
 
11
- <div class="step" on:click={handleStepClick} role="button" tabindex="0" on:keydown>
12
- {#if icon !== null}
11
+ <div class="step" onclick={handleStepClick} {onkeydown} role="button" tabindex="0">
12
+ {#if icon}
13
13
  <div class="step-icon-container">
14
14
  <img class="step-icon" src={icon} alt="" />
15
15
  </div>
16
16
  {:else}
17
17
  <div class="step-index-container">
18
- <div class={'step-index-text'}>
18
+ <div class="step-index-text">
19
19
  {stepIndex}
20
20
  </div>
21
21
  </div>
22
22
  {/if}
23
- <div class={'step-text'}>
23
+ <div class="step-text">
24
24
  {label}
25
25
  </div>
26
- <div class={'separator'} />
26
+ <div class="separator"></div>
27
27
  </div>
28
28
 
29
29
  <style>
@@ -1,23 +1,4 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- stepIndex: number;
5
- label: string;
6
- icon: string | null;
7
- };
8
- events: {
9
- keydown: KeyboardEvent;
10
- handleStepClick: CustomEvent<any>;
11
- } & {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- exports?: {} | undefined;
16
- bindings?: string | undefined;
17
- };
18
- export type StepProps = typeof __propDef.props;
19
- export type StepEvents = typeof __propDef.events;
20
- export type StepSlots = typeof __propDef.slots;
21
- export default class Step extends SvelteComponent<StepProps, StepEvents, StepSlots> {
22
- }
23
- export {};
1
+ import type { StepProperties } from './properties';
2
+ declare const Step: import("svelte").Component<StepProperties, {}, "">;
3
+ type Step = ReturnType<typeof Step>;
4
+ export default Step;
@@ -1,18 +1,21 @@
1
- <script>import Step from "./Step.svelte";
2
- export let properties;
1
+ <script lang="ts">
2
+ import type { StepperProperties } from './properties';
3
+ import Step from './Step.svelte';
4
+
5
+ let { steps, currentStepIndex, onhandleStepClick }: StepperProperties = $props();
3
6
  </script>
4
7
 
5
8
  <div class="container">
6
- {#each properties.steps as currentStep, stepIndex}
9
+ {#each steps as currentStep, stepIndex}
7
10
  <div
8
- class:active-step={properties.currentStepIndex === stepIndex}
9
- class:completed-step={properties.currentStepIndex > stepIndex}
11
+ class:active-step={currentStepIndex === stepIndex}
12
+ class:completed-step={currentStepIndex > stepIndex}
10
13
  class="step-container"
11
14
  >
12
15
  <Step
13
- on:handleStepClick
16
+ onclick={onhandleStepClick}
14
17
  label={currentStep.label}
15
- icon={currentStep.icon ?? null}
18
+ icon={currentStep.icon}
16
19
  stepIndex={stepIndex + 1}
17
20
  />
18
21
  </div>