@cloudparker/moldex.js 0.0.28 → 0.0.29
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.
- package/dist/services/dialog/dialog-service.d.ts +16 -0
- package/dist/services/dialog/dialog-service.js +23 -1
- package/dist/services/utils/utils-service.d.ts +3 -0
- package/dist/services/utils/utils-service.js +26 -0
- package/dist/tailwind.css +1 -1
- package/dist/views/core/button/components/button/button.svelte +5 -3
- package/dist/views/core/button/components/button/button.svelte.d.ts +19 -18
- package/dist/views/core/button/components/button-back/button-back.svelte +32 -0
- package/dist/views/core/button/components/button-back/button-back.svelte.d.ts +24 -0
- package/dist/views/core/button/components/button-close/button-close.svelte +5 -0
- package/dist/views/core/button/components/button-close/button-close.svelte.d.ts +19 -0
- package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte +33 -0
- package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte.d.ts +25 -0
- package/dist/views/core/button/components/button-list-item/button-list-item.svelte +28 -24
- package/dist/views/core/button/components/button-list-item/button-list-item.svelte.d.ts +11 -11
- package/dist/views/core/button/components/button-menu/button-menu.svelte +19 -20
- package/dist/views/core/button/components/button-menu/button-menu.svelte.d.ts +7 -7
- package/dist/views/core/button/components/button-ok/button-ok.svelte +5 -0
- package/dist/views/core/button/components/button-ok/button-ok.svelte.d.ts +19 -0
- package/dist/views/core/button/index.d.ts +5 -1
- package/dist/views/core/button/index.js +10 -1
- package/dist/views/core/dialog/components/dialog/dialog.svelte +94 -84
- package/dist/views/core/dialog/components/dialog/dialog.svelte.d.ts +4 -3
- package/dist/views/core/dialog/components/list-dialog/list-picker-dialog.svelte +145 -0
- package/dist/views/core/dialog/components/list-dialog/list-picker-dialog.svelte.d.ts +41 -0
- package/dist/views/core/icon/components/icon/icon.svelte +5 -3
- package/dist/views/core/icon/components/icon/icon.svelte.d.ts +1 -0
- package/dist/views/core/icon/services/icon-path-service.d.ts +6 -0
- package/dist/views/core/icon/services/icon-path-service.js +6 -0
- package/dist/views/core/index.d.ts +2 -0
- package/dist/views/core/index.js +2 -0
- package/dist/views/core/input/components/color-field/color-field.svelte +104 -0
- package/dist/views/core/input/components/color-field/color-field.svelte.d.ts +23 -0
- package/dist/views/core/input/components/combobox-field/combobox-field.svelte +385 -0
- package/dist/views/core/input/components/combobox-field/combobox-field.svelte.d.ts +63 -0
- package/dist/views/core/input/components/date-field/date-field.svelte +9 -0
- package/dist/views/core/input/components/date-field/date-field.svelte.d.ts +21 -0
- package/dist/views/core/input/components/datetime-field/datetime-field.svelte +9 -0
- package/dist/views/core/input/components/datetime-field/datetime-field.svelte.d.ts +21 -0
- package/dist/views/core/input/components/email-field/email-field.svelte +9 -0
- package/dist/views/core/input/components/email-field/email-field.svelte.d.ts +21 -0
- package/dist/views/core/input/components/file-field/file-field.svelte +80 -0
- package/dist/views/core/input/components/file-field/file-field.svelte.d.ts +25 -0
- package/dist/views/core/{form → input}/components/input-field/input-field.svelte +162 -113
- package/dist/views/core/{form → input}/components/input-field/input-field.svelte.d.ts +51 -35
- package/dist/views/core/input/components/number-field/number-field.svelte +9 -0
- package/dist/views/core/input/components/number-field/number-field.svelte.d.ts +21 -0
- package/dist/views/core/input/components/password-field/password-field.svelte +72 -0
- package/dist/views/core/input/components/password-field/password-field.svelte.d.ts +24 -0
- package/dist/views/core/input/components/phone-field/phone-field.svelte +76 -0
- package/dist/views/core/input/components/phone-field/phone-field.svelte.d.ts +24 -0
- package/dist/views/core/input/components/range-field/range-field.svelte +53 -0
- package/dist/views/core/input/components/range-field/range-field.svelte.d.ts +31 -0
- package/dist/views/core/input/components/search-field/search-field.svelte +53 -0
- package/dist/views/core/input/components/search-field/search-field.svelte.d.ts +24 -0
- package/dist/views/core/input/components/text-field/text-field.svelte +9 -0
- package/dist/views/core/input/components/text-field/text-field.svelte.d.ts +21 -0
- package/dist/views/core/input/components/textarea-field/textarea-field.svelte +9 -0
- package/dist/views/core/input/components/textarea-field/textarea-field.svelte.d.ts +21 -0
- package/dist/views/core/input/components/time-field/time-field.svelte +9 -0
- package/dist/views/core/input/components/time-field/time-field.svelte.d.ts +21 -0
- package/dist/views/core/input/index.d.ts +19 -0
- package/dist/views/core/input/index.js +19 -0
- package/dist/views/core/navbar/components/navbar/navbar.svelte +11 -11
- package/dist/views/core/navbar/components/navbar/navbar.svelte.d.ts +3 -3
- package/dist/views/core/no-data/components/no-data/no-data.svelte +34 -0
- package/dist/views/core/no-data/components/no-data/no-data.svelte.d.ts +27 -0
- package/dist/views/core/no-data/index.d.ts +2 -0
- package/dist/views/core/no-data/index.js +2 -0
- package/dist/views/core/text/components/text-country/text-country.svelte +2 -1
- package/dist/views/core/text/components/text-country-state/text-country-state.svelte +1 -1
- package/dist/views/core/toast/components/toast/toast.svelte +1 -1
- package/package.json +2 -2
- package/dist/views/core/form/index.d.ts +0 -3
- package/dist/views/core/form/index.js +0 -3
- /package/dist/views/core/{form → input}/components/label/label.svelte +0 -0
- /package/dist/views/core/{form → input}/components/label/label.svelte.d.ts +0 -0
|
@@ -21,8 +21,8 @@ let {
|
|
|
21
21
|
rightIconClassName = "",
|
|
22
22
|
dropIconPath = mdiChevronDown,
|
|
23
23
|
dropIconClassName = "",
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
titleClassName = "",
|
|
25
|
+
title = "Button",
|
|
26
26
|
dropdownStyle = "",
|
|
27
27
|
dropdownClassName = "",
|
|
28
28
|
hasCheck = false,
|
|
@@ -39,15 +39,15 @@ let {
|
|
|
39
39
|
checkClassName = "",
|
|
40
40
|
listIconClassName = "",
|
|
41
41
|
listImgClassName = "",
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
listTitleClassName = "",
|
|
43
|
+
listSubtitleClassName = "",
|
|
44
44
|
dividerClassName = "",
|
|
45
45
|
onmenuclick = (ev, item, index) => {
|
|
46
46
|
},
|
|
47
47
|
children,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
buttonSnippet,
|
|
49
|
+
menuItemSnippet,
|
|
50
|
+
menuItemInnerSnippet
|
|
51
51
|
} = $props();
|
|
52
52
|
let expanded = $state(false);
|
|
53
53
|
let dropdownState = $state(1 /* CLOSED */);
|
|
@@ -103,8 +103,8 @@ $effect(() => {
|
|
|
103
103
|
>
|
|
104
104
|
<span class="sr-only">{screenOnlyDesc}</span>
|
|
105
105
|
<div class="flex items-center flex-nowrap gap-2">
|
|
106
|
-
{#if
|
|
107
|
-
{@render
|
|
106
|
+
{#if buttonSnippet}
|
|
107
|
+
{@render buttonSnippet()}
|
|
108
108
|
{:else}
|
|
109
109
|
{#if imgSrc}
|
|
110
110
|
<img class="h-8 w-8 rounded-full bg-gray-50 {imgClassName}" src={imgSrc} alt={imgAlt} />
|
|
@@ -112,9 +112,9 @@ $effect(() => {
|
|
|
112
112
|
{#if leftIconPath}
|
|
113
113
|
<Icon path={leftIconPath} className={leftIconClassName} />
|
|
114
114
|
{/if}
|
|
115
|
-
{#if
|
|
116
|
-
<span class="text-nowrap {
|
|
117
|
-
{@html
|
|
115
|
+
{#if title}
|
|
116
|
+
<span class="text-nowrap {titleClassName}">
|
|
117
|
+
{@html title}
|
|
118
118
|
</span>
|
|
119
119
|
{/if}
|
|
120
120
|
{#if rightIconPath}
|
|
@@ -152,15 +152,14 @@ $effect(() => {
|
|
|
152
152
|
{#each options as menu, index (menu.id || index)}
|
|
153
153
|
{#if menu?.divider}
|
|
154
154
|
<div class="border-t border-gray-200 {dividerClassName}"></div>
|
|
155
|
-
{:else if
|
|
156
|
-
{@render
|
|
155
|
+
{:else if menuItemSnippet}
|
|
156
|
+
{@render menuItemSnippet(menu, index)}
|
|
157
157
|
{:else}
|
|
158
158
|
<ButtonListItem
|
|
159
159
|
item={menu}
|
|
160
160
|
{index}
|
|
161
|
-
checked={selectedMenu == menu}
|
|
162
161
|
{hasCheck}
|
|
163
|
-
|
|
162
|
+
id={id}
|
|
164
163
|
className={menuItemClassName}
|
|
165
164
|
{uncheckIconPath}
|
|
166
165
|
{checkIconPath}
|
|
@@ -169,10 +168,10 @@ $effect(() => {
|
|
|
169
168
|
{checkClassName}
|
|
170
169
|
iconClassName={listIconClassName}
|
|
171
170
|
imgClassName={listImgClassName}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
children={
|
|
175
|
-
|
|
171
|
+
titleClassName={listTitleClassName}
|
|
172
|
+
subtitleClassName={listSubtitleClassName}
|
|
173
|
+
children={menuItemInnerSnippet}
|
|
174
|
+
onClick={handlemenuItemClick}
|
|
176
175
|
/>
|
|
177
176
|
{/if}
|
|
178
177
|
{/each}
|
|
@@ -27,8 +27,8 @@ declare const ButtonMenu: $$__sveltets_2_IsomorphicComponent<{
|
|
|
27
27
|
leftIconClassName?: string;
|
|
28
28
|
rightIconPath?: string;
|
|
29
29
|
rightIconClassName?: string;
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
title?: string | any;
|
|
31
|
+
titleClassName?: string;
|
|
32
32
|
dropdownClassName?: string;
|
|
33
33
|
dropdownStyle?: string;
|
|
34
34
|
hasCheck?: boolean;
|
|
@@ -45,16 +45,16 @@ declare const ButtonMenu: $$__sveltets_2_IsomorphicComponent<{
|
|
|
45
45
|
checkClassName?: string;
|
|
46
46
|
listIconClassName?: string;
|
|
47
47
|
listImgClassName?: string;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
listTitleClassName?: string;
|
|
49
|
+
listSubtitleClassName?: string;
|
|
50
50
|
dividerClassName?: string;
|
|
51
51
|
dropIconPath?: string;
|
|
52
52
|
dropIconClassName?: string;
|
|
53
53
|
onmenuclick?: (ev: MouseEvent, item: string | ListItemType, index: number) => void;
|
|
54
54
|
children?: Snippet;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
buttonSnippet?: Snippet;
|
|
56
|
+
menuItemSnippet?: Snippet<[ListItemType, number]>;
|
|
57
|
+
menuItemInnerSnippet?: Snippet<[ListItemType, number]>;
|
|
58
58
|
}, {
|
|
59
59
|
[evt: string]: CustomEvent<any>;
|
|
60
60
|
}, {}, {}, "">;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ButtonPropsType } from '../button/button.svelte';
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
declare const ButtonOk: $$__sveltets_2_IsomorphicComponent<ButtonPropsType, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {}, "">;
|
|
18
|
+
type ButtonOk = InstanceType<typeof ButtonOk>;
|
|
19
|
+
export default ButtonOk;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import Button from './components/button/button.svelte';
|
|
2
|
+
import ButtonBack from './components/button-back/button-back.svelte';
|
|
3
|
+
import ButtonClose from './components/button-close/button-close.svelte';
|
|
4
|
+
import ButtonCloseIcon from './components/button-close-icon/button-close-icon.svelte';
|
|
2
5
|
import ButtonListItem from './components/button-list-item/button-list-item.svelte';
|
|
3
6
|
import ButtonMenu from './components/button-menu/button-menu.svelte';
|
|
4
|
-
|
|
7
|
+
import ButtonOk from './components/button-ok/button-ok.svelte';
|
|
8
|
+
export { Button, ButtonBack, ButtonClose, ButtonCloseIcon, ButtonListItem, ButtonMenu, ButtonOk };
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
+
import ButtonBack from './components/button-back/button-back.svelte';
|
|
2
|
+
import ButtonCloseIcon from './components/button-close-icon/button-close-icon.svelte';
|
|
3
|
+
import ButtonClose from './components/button-close/button-close.svelte';
|
|
1
4
|
import ButtonListItem from './components/button-list-item/button-list-item.svelte';
|
|
2
5
|
import ButtonMenu from './components/button-menu/button-menu.svelte';
|
|
6
|
+
import ButtonOk from './components/button-ok/button-ok.svelte';
|
|
3
7
|
import Button from './components/button/button.svelte';
|
|
4
8
|
|
|
5
9
|
export {
|
|
6
10
|
Button,
|
|
11
|
+
ButtonBack,
|
|
12
|
+
ButtonClose,
|
|
13
|
+
ButtonCloseIcon,
|
|
7
14
|
ButtonListItem,
|
|
8
|
-
ButtonMenu
|
|
15
|
+
ButtonMenu,
|
|
16
|
+
ButtonOk
|
|
9
17
|
};
|
|
18
|
+
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
<script lang="ts"
|
|
1
|
+
<script module lang="ts">import ButtonBack from "../../../button/components/button-back/button-back.svelte";
|
|
2
|
+
import ButtonClose from "../../../button/components/button-close-icon/button-close-icon.svelte";
|
|
3
|
+
export var DialogSizeEnum = /* @__PURE__ */ ((DialogSizeEnum2) => {
|
|
2
4
|
DialogSizeEnum2["SM"] = "sm";
|
|
3
5
|
DialogSizeEnum2["MD"] = "md";
|
|
4
6
|
DialogSizeEnum2["LG"] = "lg";
|
|
@@ -49,12 +51,13 @@ let {
|
|
|
49
51
|
submitButtonFormId = void 0,
|
|
50
52
|
size = DialogSizeEnum.SM,
|
|
51
53
|
bodyClassName = "",
|
|
54
|
+
bodyComponent,
|
|
52
55
|
component,
|
|
53
56
|
props = {},
|
|
54
57
|
children,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
headerSnippet,
|
|
59
|
+
bodySnippet,
|
|
60
|
+
footerSnippet,
|
|
58
61
|
onClose,
|
|
59
62
|
onResult,
|
|
60
63
|
onOkClick,
|
|
@@ -71,6 +74,7 @@ let dialogExports = {
|
|
|
71
74
|
let isPlaced = $state(false);
|
|
72
75
|
let isOpened = $state(false);
|
|
73
76
|
let CustomComponent = $state(null);
|
|
77
|
+
let BodyComponent = $state(null);
|
|
74
78
|
let result;
|
|
75
79
|
let smSizeClassName = "w-11/12 sm:w-3/4 md:w-1/2 lg:w-1/3 xl:w-1/4";
|
|
76
80
|
let mdSizeClassName = "w-11/12 sm:w-3/4 md:w-2/3 lg:w-1/2 xl:w-1/3";
|
|
@@ -148,6 +152,9 @@ function handleOkClick(event) {
|
|
|
148
152
|
onOkClick(event, dialogExports);
|
|
149
153
|
}
|
|
150
154
|
}
|
|
155
|
+
$effect(() => {
|
|
156
|
+
BodyComponent = bodyComponent;
|
|
157
|
+
});
|
|
151
158
|
$effect(() => {
|
|
152
159
|
CustomComponent = component;
|
|
153
160
|
});
|
|
@@ -167,93 +174,96 @@ $effect(() => {
|
|
|
167
174
|
: 'rounded-lg shadow-xl'} {className}"
|
|
168
175
|
onclick={(ev: MouseEvent) => ev.stopPropagation()}
|
|
169
176
|
>
|
|
170
|
-
{#if
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
177
|
+
{#if CustomComponent?.length == 2}
|
|
178
|
+
<CustomComponent {...{ ...props }} {...{ ...dialogExports }} />
|
|
179
|
+
{:else}
|
|
180
|
+
{#if hasHeader}
|
|
181
|
+
<div
|
|
182
|
+
class="flex items-start gap-4 w-full cursor-default py-2 {hasHeaderShadow
|
|
183
|
+
? 'border-b shadow-sm'
|
|
184
|
+
: ''} {headerClassName}"
|
|
185
|
+
>
|
|
186
|
+
<div>
|
|
187
|
+
{#if hasHeaderBack}
|
|
188
|
+
<ButtonBack
|
|
189
|
+
iconPath={headerBackIconPath}
|
|
190
|
+
iconClassName={headerBackIconClassName}
|
|
191
|
+
className={headerBackButtonClassName}
|
|
192
|
+
onClick={handleClose}
|
|
193
|
+
/>
|
|
194
|
+
{/if}
|
|
195
|
+
</div>
|
|
196
|
+
<div class="py-2">
|
|
197
|
+
{#if hasTitle}
|
|
198
|
+
<div class="text-xl {titleClassName}">{title || ''}</div>
|
|
199
|
+
{/if}
|
|
200
|
+
{#if hasSubtitle}
|
|
201
|
+
<div class="text-sm text-gray-500 {subtitleClassName}">{subtitle || ''}</div>
|
|
202
|
+
{/if}
|
|
203
|
+
</div>
|
|
204
|
+
<div class="flex-grow">
|
|
205
|
+
{#if headerSnippet}
|
|
206
|
+
{@render headerSnippet(dialogExports)}
|
|
207
|
+
{/if}
|
|
208
|
+
</div>
|
|
209
|
+
<div>
|
|
210
|
+
{#if hasHeaderClose}
|
|
211
|
+
<ButtonClose
|
|
212
|
+
className={headerCloseButtonClassName}
|
|
213
|
+
iconPath={headerCloseIconPath}
|
|
214
|
+
iconClassName={headerCloseIconClassName}
|
|
215
|
+
onClick={handleClose}
|
|
216
|
+
/>
|
|
217
|
+
{/if}
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
{/if}
|
|
221
|
+
|
|
222
|
+
<div class="flex-grow overflow-y-auto {bodyClassName}">
|
|
223
|
+
{#if children}
|
|
224
|
+
{@render children()}
|
|
225
|
+
{:else if bodySnippet}
|
|
226
|
+
{@render bodySnippet(dialogExports)}
|
|
227
|
+
{:else if BodyComponent?.length == 2}
|
|
228
|
+
<BodyComponent {...{ ...props }} {...{ ...dialogExports }} />
|
|
229
|
+
{/if}
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
{#if hasFooter}
|
|
233
|
+
<div
|
|
234
|
+
class="flex items-center justify-end p-4 gap-4 {hasFooterShadow
|
|
235
|
+
? 'border-t'
|
|
236
|
+
: ''} {footerClassName}"
|
|
237
|
+
>
|
|
238
|
+
<div class="flex-grow">
|
|
239
|
+
{#if footerSnippet}
|
|
240
|
+
{@render footerSnippet(dialogExports)}
|
|
241
|
+
{/if}
|
|
242
|
+
</div>
|
|
243
|
+
{#if hasFooterOkButton}
|
|
178
244
|
<Button
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
245
|
+
id="btn-ok"
|
|
246
|
+
form={submitButtonFormId}
|
|
247
|
+
type={submitButtonFormId ? 'submit' : footerOkButtonType}
|
|
248
|
+
className="p-2 px-5 rounded bg-indigo-600 hover:bg-indigo-700 focus:bg-indigo-700 text-white {footerOkButtonClassName}"
|
|
249
|
+
label={footerOkLable}
|
|
250
|
+
disabled={footerOkButtonDisabled}
|
|
251
|
+
spinner={footerOkButtonSpinner}
|
|
252
|
+
spinnerClassName="text-white w-4 h-4"
|
|
253
|
+
onClick={handleOkClick}
|
|
183
254
|
/>
|
|
184
255
|
{/if}
|
|
185
|
-
|
|
186
|
-
<div class="py-2">
|
|
187
|
-
{#if hasTitle}
|
|
188
|
-
<div class="text-xl {titleClassName}">{title || ''}</div>
|
|
189
|
-
{/if}
|
|
190
|
-
{#if hasSubtitle}
|
|
191
|
-
<div class="text-sm text-gray-500 {subtitleClassName}">{subtitle || ''}</div>
|
|
192
|
-
{/if}
|
|
193
|
-
</div>
|
|
194
|
-
<div class="flex-grow">
|
|
195
|
-
{#if headerChildren}
|
|
196
|
-
{@render headerChildren(dialogExports)}
|
|
197
|
-
{/if}
|
|
198
|
-
</div>
|
|
199
|
-
<div>
|
|
200
|
-
{#if hasHeaderClose}
|
|
256
|
+
{#if hasFooterCloseButton}
|
|
201
257
|
<Button
|
|
202
|
-
id="close"
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
258
|
+
id="btn-close"
|
|
259
|
+
type="button"
|
|
260
|
+
className="p-2 px-5 rounded bg-gray-100 hover:bg-gray-200 {footerCloseButtonClassName}"
|
|
261
|
+
label={footerCloseLabel}
|
|
262
|
+
onClick={handleClose}
|
|
263
|
+
/>
|
|
208
264
|
{/if}
|
|
209
265
|
</div>
|
|
210
|
-
</div>
|
|
211
|
-
{/if}
|
|
212
|
-
|
|
213
|
-
<div class="flex-grow overflow-y-auto {bodyClassName}">
|
|
214
|
-
{#if children}
|
|
215
|
-
{@render children()}
|
|
216
|
-
{:else if bodyChildren}
|
|
217
|
-
{@render bodyChildren(dialogExports)}
|
|
218
|
-
{:else if CustomComponent?.length == 2}
|
|
219
|
-
<CustomComponent {...{ ...props }} {...{ ...dialogExports }} />
|
|
220
266
|
{/if}
|
|
221
|
-
</div>
|
|
222
|
-
|
|
223
|
-
{#if hasFooter}
|
|
224
|
-
<div
|
|
225
|
-
class="flex items-center justify-end p-4 gap-4 {hasFooterShadow
|
|
226
|
-
? 'border-t'
|
|
227
|
-
: ''} {footerClassName}"
|
|
228
|
-
>
|
|
229
|
-
<div class="flex-grow">
|
|
230
|
-
{#if footerChildren}
|
|
231
|
-
{@render footerChildren(dialogExports)}
|
|
232
|
-
{/if}
|
|
233
|
-
</div>
|
|
234
|
-
{#if hasFooterOkButton}
|
|
235
|
-
<Button
|
|
236
|
-
id="btn-ok"
|
|
237
|
-
form={submitButtonFormId}
|
|
238
|
-
type={submitButtonFormId ? 'submit' : footerOkButtonType}
|
|
239
|
-
className="p-2 px-5 rounded bg-indigo-600 hover:bg-indigo-700 focus:bg-indigo-700 text-white {footerOkButtonClassName}"
|
|
240
|
-
label={footerOkLable}
|
|
241
|
-
disabled={footerOkButtonDisabled}
|
|
242
|
-
spinner={footerOkButtonSpinner}
|
|
243
|
-
spinnerClassName="text-white w-4 h-4"
|
|
244
|
-
onclick={handleOkClick}
|
|
245
|
-
/>
|
|
246
|
-
{/if}
|
|
247
|
-
{#if hasFooterCloseButton}
|
|
248
|
-
<Button
|
|
249
|
-
id="btn-close"
|
|
250
|
-
type="button"
|
|
251
|
-
className="p-2 px-5 rounded bg-gray-100 hover:bg-gray-200 {footerCloseButtonClassName}"
|
|
252
|
-
label={footerCloseLabel}
|
|
253
|
-
onclick={handleClose}
|
|
254
|
-
/>
|
|
255
|
-
{/if}
|
|
256
|
-
</div>
|
|
257
267
|
{/if}
|
|
258
268
|
</div>
|
|
259
269
|
{/snippet}
|
|
@@ -47,13 +47,14 @@ export type DialogPropsType = {
|
|
|
47
47
|
footerOkButtonDisabled?: boolean;
|
|
48
48
|
submitButtonFormId?: string;
|
|
49
49
|
bodyClassName?: string;
|
|
50
|
+
bodyComponent?: any;
|
|
50
51
|
component?: any;
|
|
51
52
|
props?: any;
|
|
52
53
|
size?: DialogSizeEnum;
|
|
53
54
|
children?: Snippet;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
headerSnippet?: Snippet<[dialogExports: DialogExportsType]>;
|
|
56
|
+
bodySnippet?: Snippet<[dialogExports: DialogExportsType]>;
|
|
57
|
+
footerSnippet?: Snippet<[dialogExports: DialogExportsType]>;
|
|
57
58
|
onClose?: () => void;
|
|
58
59
|
onResult?: (value: any) => void;
|
|
59
60
|
onOkClick?: (ev: MouseEvent | TouchEvent, options: DialogExportsType) => void;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
<script lang="ts">import { ButtonListItem } from "../../..";
|
|
2
|
+
import ButtonBack from "../../../button/components/button-back/button-back.svelte";
|
|
3
|
+
import ButtonCloseIcon from "../../../button/components/button-close-icon/button-close-icon.svelte";
|
|
4
|
+
import ButtonClose from "../../../button/components/button-close/button-close.svelte";
|
|
5
|
+
import ButtonOk from "../../../button/components/button-ok/button-ok.svelte";
|
|
6
|
+
import SearchField from "../../../input/components/search-field/search-field.svelte";
|
|
7
|
+
let {
|
|
8
|
+
value,
|
|
9
|
+
multiple = false,
|
|
10
|
+
items,
|
|
11
|
+
itemTitle,
|
|
12
|
+
itemSubtitle,
|
|
13
|
+
hasCheckbox,
|
|
14
|
+
hasArrow,
|
|
15
|
+
search,
|
|
16
|
+
identity,
|
|
17
|
+
itemTitleClassName,
|
|
18
|
+
itemSubtitleClassName,
|
|
19
|
+
okButtonLable = "Select",
|
|
20
|
+
okButtonClassName = "",
|
|
21
|
+
closeButtonLabel = "Close",
|
|
22
|
+
closeButtonClassName = "",
|
|
23
|
+
itemSnippet,
|
|
24
|
+
closeDialog,
|
|
25
|
+
setResult
|
|
26
|
+
} = $props();
|
|
27
|
+
let searchText = $state("");
|
|
28
|
+
let idField = Symbol("_id");
|
|
29
|
+
let searchField = Symbol("_search");
|
|
30
|
+
let selectedItemsSet = $derived.by(() => {
|
|
31
|
+
let set = /* @__PURE__ */ new Set();
|
|
32
|
+
if (value != null) {
|
|
33
|
+
if (Array.isArray(value)) {
|
|
34
|
+
value.forEach((v) => set.add(v));
|
|
35
|
+
} else {
|
|
36
|
+
set.add(value);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return set;
|
|
40
|
+
});
|
|
41
|
+
let preparedItems = $derived.by(() => {
|
|
42
|
+
return (items || []).map((item, index) => {
|
|
43
|
+
let res = {
|
|
44
|
+
[idField]: identity && item.hasOwnProperty(identity) ? item[identity] : index
|
|
45
|
+
};
|
|
46
|
+
if (itemTitle) {
|
|
47
|
+
res.title = item.hasOwnProperty(itemTitle) ? item[itemTitle] : itemTitle;
|
|
48
|
+
}
|
|
49
|
+
if (itemSubtitle) {
|
|
50
|
+
res.subtitle = item.hasOwnProperty(itemSubtitle) ? item[itemSubtitle] : itemSubtitle;
|
|
51
|
+
}
|
|
52
|
+
if (search) {
|
|
53
|
+
res[searchField] = (item[search] || "").trim().toLowerCase();
|
|
54
|
+
} else {
|
|
55
|
+
res[searchField] = `${res.title || ""} ${res.subtitle || ""}`.trim().toLowerCase();
|
|
56
|
+
}
|
|
57
|
+
if (selectedItemsSet.has(res[idField])) {
|
|
58
|
+
res.isChecked = true;
|
|
59
|
+
} else {
|
|
60
|
+
res.isChecked = false;
|
|
61
|
+
}
|
|
62
|
+
return res;
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
let filteredItems = $derived.by(() => {
|
|
66
|
+
if (searchText) {
|
|
67
|
+
return preparedItems.filter((item) => {
|
|
68
|
+
return item[searchField].indexOf(searchText) >= 0;
|
|
69
|
+
});
|
|
70
|
+
} else {
|
|
71
|
+
return [...preparedItems];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
function handleSearch(text) {
|
|
75
|
+
searchText = text;
|
|
76
|
+
}
|
|
77
|
+
function handleItemSelected(ev, item, index) {
|
|
78
|
+
let id = item[idField];
|
|
79
|
+
if (multiple) {
|
|
80
|
+
if (selectedItemsSet.has(id)) {
|
|
81
|
+
selectedItemsSet.delete(id);
|
|
82
|
+
} else {
|
|
83
|
+
selectedItemsSet.add(id);
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
selectedItemsSet.clear();
|
|
87
|
+
selectedItemsSet.add(id);
|
|
88
|
+
}
|
|
89
|
+
items = [...items || []];
|
|
90
|
+
if (!multiple) {
|
|
91
|
+
if (selectedItemsSet.size) {
|
|
92
|
+
setTimeout(() => {
|
|
93
|
+
setResult(Array.from(selectedItemsSet)[0]);
|
|
94
|
+
closeDialog();
|
|
95
|
+
}, 300);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function handleClose() {
|
|
100
|
+
closeDialog();
|
|
101
|
+
}
|
|
102
|
+
function handleOk() {
|
|
103
|
+
setResult(Array.from(selectedItemsSet));
|
|
104
|
+
closeDialog();
|
|
105
|
+
}
|
|
106
|
+
$effect(() => {
|
|
107
|
+
setResult(null);
|
|
108
|
+
});
|
|
109
|
+
</script>
|
|
110
|
+
|
|
111
|
+
<div class="flex gap-3 p-3">
|
|
112
|
+
<ButtonBack onlyMobile onClick={handleClose} />
|
|
113
|
+
<div class="flex-grow">
|
|
114
|
+
<SearchField
|
|
115
|
+
name="search"
|
|
116
|
+
className="rounded-full"
|
|
117
|
+
onSearch={handleSearch}
|
|
118
|
+
placeholder="Search..."
|
|
119
|
+
/>
|
|
120
|
+
</div>
|
|
121
|
+
<ButtonCloseIcon onlyWeb onClick={handleClose} />
|
|
122
|
+
</div>
|
|
123
|
+
<div class="flex-grow overflow-y-auto">
|
|
124
|
+
{#each filteredItems as item, index}
|
|
125
|
+
<div>
|
|
126
|
+
<ButtonListItem
|
|
127
|
+
{item}
|
|
128
|
+
id="list"
|
|
129
|
+
{index}
|
|
130
|
+
titleClassName={itemTitleClassName}
|
|
131
|
+
subtitleClassName={itemSubtitleClassName}
|
|
132
|
+
{hasArrow}
|
|
133
|
+
{hasCheckbox}
|
|
134
|
+
onClick={(ev) => handleItemSelected(ev, item, index)}
|
|
135
|
+
className="px-4"
|
|
136
|
+
/>
|
|
137
|
+
</div>
|
|
138
|
+
{/each}
|
|
139
|
+
</div>
|
|
140
|
+
{#if multiple}
|
|
141
|
+
<div class="flex items-center justify-end gap-3 p-4">
|
|
142
|
+
<ButtonOk label={okButtonLable} className={okButtonClassName} onClick={handleOk} />
|
|
143
|
+
<ButtonClose label={closeButtonLabel} className={closeButtonClassName} onClick={handleClose} />
|
|
144
|
+
</div>
|
|
145
|
+
{/if}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { DialogExportsType } from '../dialog/dialog.svelte';
|
|
3
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
4
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
5
|
+
$$bindings?: Bindings;
|
|
6
|
+
} & Exports;
|
|
7
|
+
(internal: unknown, props: Props & {
|
|
8
|
+
$$events?: Events;
|
|
9
|
+
$$slots?: Slots;
|
|
10
|
+
}): Exports & {
|
|
11
|
+
$set?: any;
|
|
12
|
+
$on?: any;
|
|
13
|
+
};
|
|
14
|
+
z_$$bindings?: Bindings;
|
|
15
|
+
}
|
|
16
|
+
declare const ListPickerDialog: $$__sveltets_2_IsomorphicComponent<{
|
|
17
|
+
value?: any | any[];
|
|
18
|
+
multiple?: boolean;
|
|
19
|
+
items?: any[];
|
|
20
|
+
itemSnippet?: Snippet<[any, number]>;
|
|
21
|
+
itemTitle?: string;
|
|
22
|
+
itemSubtitle?: string;
|
|
23
|
+
search?: string;
|
|
24
|
+
identity?: string;
|
|
25
|
+
iconPath?: string;
|
|
26
|
+
hasCheckbox?: boolean;
|
|
27
|
+
hasArrow?: boolean;
|
|
28
|
+
itemTitleClassName?: string;
|
|
29
|
+
itemSubtitleClassName?: string;
|
|
30
|
+
okButtonLable?: string;
|
|
31
|
+
okButtonClassName?: string;
|
|
32
|
+
closeButtonLabel?: string;
|
|
33
|
+
closeButtonClassName?: string;
|
|
34
|
+
} & DialogExportsType & {
|
|
35
|
+
items?: any[];
|
|
36
|
+
itemSnippet?: Snippet<[any, number]>;
|
|
37
|
+
}, {
|
|
38
|
+
[evt: string]: CustomEvent<any>;
|
|
39
|
+
}, {}, {}, "">;
|
|
40
|
+
type ListPickerDialog = InstanceType<typeof ListPickerDialog>;
|
|
41
|
+
export default ListPickerDialog;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
<script lang="ts">import "
|
|
1
|
+
<script lang="ts">import ColorField from "../../../input/components/color-field/color-field.svelte";
|
|
2
|
+
import "../../../../../tailwind.css";
|
|
2
3
|
let {
|
|
3
4
|
path,
|
|
4
5
|
className = "",
|
|
5
6
|
size = 24,
|
|
6
7
|
fill = "currentColor",
|
|
7
|
-
viewBox = ""
|
|
8
|
+
viewBox = "",
|
|
9
|
+
color
|
|
8
10
|
} = $props();
|
|
9
11
|
$effect(() => {
|
|
10
12
|
viewBox = viewBox || `0 0 ${size} ${size}`;
|
|
11
13
|
});
|
|
12
14
|
</script>
|
|
13
15
|
|
|
14
|
-
<svg class="w-6 h-6 align-middle {className}" {viewBox} fill=
|
|
16
|
+
<svg class="w-6 h-6 align-middle {className}" {viewBox} fill={color || fill}>
|
|
15
17
|
<path d={path} />
|
|
16
18
|
</svg>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const mdiArrowLeft = "M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z";
|
|
2
|
+
export declare const mdiAttachment = "M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z";
|
|
2
3
|
export declare const mdiBellOutline = "M10 21H14C14 22.1 13.1 23 12 23S10 22.1 10 21M21 19V20H3V19L5 17V11C5 7.9 7 5.2 10 4.3V4C10 2.9 10.9 2 12 2S14 2.9 14 4V4.3C17 5.2 19 7.9 19 11V17L21 19M17 11C17 8.2 14.8 6 12 6S7 8.2 7 11V18H17V11Z";
|
|
3
4
|
export declare const mdiCheckCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z";
|
|
4
5
|
export declare const mdiCheckCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M16.59 7.58L10 14.17L7.41 11.59L6 13L10 17L18 9L16.59 7.58Z";
|
|
@@ -8,8 +9,13 @@ export declare const mdiChevronRight = "M8.59,16.58L13.17,12L8.59,7.41L10,6L16,1
|
|
|
8
9
|
export declare const mdiClose = "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z";
|
|
9
10
|
export declare const mdiContentCopy = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z";
|
|
10
11
|
export declare const mdiEmailOutline = "M22 6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6M20 6L12 11L4 6H20M20 18H4V8L12 13L20 8V18Z";
|
|
12
|
+
export declare const mdiEyeOffOutline = "M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.58,15.76C18.94,14.82 20.06,13.54 20.82,12C19.17,8.64 15.76,6.5 12,6.5C10.91,6.5 9.84,6.68 8.84,7L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C12.69,17.5 13.37,17.43 14,17.29L11.72,15C10.29,14.85 9.15,13.71 9,12.28L5.6,8.87C4.61,9.72 3.78,10.78 3.18,12Z";
|
|
13
|
+
export declare const mdiEyeOutline = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z";
|
|
11
14
|
export declare const mdiFlowerTulip = "M3,13A9,9 0 0,0 12,22A9,9 0 0,0 3,13M12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,22M18,3V8A6,6 0 0,1 12,14A6,6 0 0,1 6,8V3C6.74,3 7.47,3.12 8.16,3.39C8.71,3.62 9.2,3.96 9.61,4.39L12,2L14.39,4.39C14.8,3.96 15.29,3.62 15.84,3.39C16.53,3.12 17.26,3 18,3Z";
|
|
15
|
+
export declare const mdiMagnify = "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z";
|
|
12
16
|
export declare const mdiMenu = "M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z";
|
|
13
17
|
export declare const mdiPageFirst = "M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z";
|
|
14
18
|
export declare const mdiPageLast = "M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z";
|
|
15
19
|
export declare const mdiPhone = "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z";
|
|
20
|
+
export declare const mdiSquare = "M3,3V21H21V3";
|
|
21
|
+
export declare const mdiUnfoldMoreHorizontal = "M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z";
|