@cloudparker/moldex.js 0.0.27 → 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.
Files changed (79) hide show
  1. package/dist/services/dialog/dialog-service.d.ts +16 -0
  2. package/dist/services/dialog/dialog-service.js +23 -1
  3. package/dist/services/utils/utils-service.d.ts +3 -0
  4. package/dist/services/utils/utils-service.js +26 -0
  5. package/dist/tailwind.css +1 -1
  6. package/dist/views/core/button/components/button/button.svelte +5 -3
  7. package/dist/views/core/button/components/button/button.svelte.d.ts +19 -18
  8. package/dist/views/core/button/components/button-back/button-back.svelte +32 -0
  9. package/dist/views/core/button/components/button-back/button-back.svelte.d.ts +24 -0
  10. package/dist/views/core/button/components/button-close/button-close.svelte +5 -0
  11. package/dist/views/core/button/components/button-close/button-close.svelte.d.ts +19 -0
  12. package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte +33 -0
  13. package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte.d.ts +25 -0
  14. package/dist/views/core/button/components/button-list-item/button-list-item.svelte +28 -24
  15. package/dist/views/core/button/components/button-list-item/button-list-item.svelte.d.ts +11 -11
  16. package/dist/views/core/button/components/button-menu/button-menu.svelte +19 -20
  17. package/dist/views/core/button/components/button-menu/button-menu.svelte.d.ts +7 -7
  18. package/dist/views/core/button/components/button-ok/button-ok.svelte +5 -0
  19. package/dist/views/core/button/components/button-ok/button-ok.svelte.d.ts +19 -0
  20. package/dist/views/core/button/index.d.ts +5 -1
  21. package/dist/views/core/button/index.js +10 -1
  22. package/dist/views/core/dialog/components/dialog/dialog.svelte +94 -84
  23. package/dist/views/core/dialog/components/dialog/dialog.svelte.d.ts +4 -3
  24. package/dist/views/core/dialog/components/list-dialog/list-picker-dialog.svelte +145 -0
  25. package/dist/views/core/dialog/components/list-dialog/list-picker-dialog.svelte.d.ts +41 -0
  26. package/dist/views/core/icon/components/icon/icon.svelte +5 -3
  27. package/dist/views/core/icon/components/icon/icon.svelte.d.ts +1 -0
  28. package/dist/views/core/icon/services/icon-path-service.d.ts +6 -0
  29. package/dist/views/core/icon/services/icon-path-service.js +6 -0
  30. package/dist/views/core/index.d.ts +2 -0
  31. package/dist/views/core/index.js +2 -0
  32. package/dist/views/core/input/components/color-field/color-field.svelte +104 -0
  33. package/dist/views/core/input/components/color-field/color-field.svelte.d.ts +23 -0
  34. package/dist/views/core/input/components/combobox-field/combobox-field.svelte +385 -0
  35. package/dist/views/core/input/components/combobox-field/combobox-field.svelte.d.ts +63 -0
  36. package/dist/views/core/input/components/date-field/date-field.svelte +9 -0
  37. package/dist/views/core/input/components/date-field/date-field.svelte.d.ts +21 -0
  38. package/dist/views/core/input/components/datetime-field/datetime-field.svelte +9 -0
  39. package/dist/views/core/input/components/datetime-field/datetime-field.svelte.d.ts +21 -0
  40. package/dist/views/core/input/components/email-field/email-field.svelte +9 -0
  41. package/dist/views/core/input/components/email-field/email-field.svelte.d.ts +21 -0
  42. package/dist/views/core/input/components/file-field/file-field.svelte +80 -0
  43. package/dist/views/core/input/components/file-field/file-field.svelte.d.ts +25 -0
  44. package/dist/views/core/input/components/input-field/input-field.svelte +282 -0
  45. package/dist/views/core/input/components/input-field/input-field.svelte.d.ts +81 -0
  46. package/dist/views/core/{form → input}/components/label/label.svelte +1 -3
  47. package/dist/views/core/input/components/number-field/number-field.svelte +9 -0
  48. package/dist/views/core/input/components/number-field/number-field.svelte.d.ts +21 -0
  49. package/dist/views/core/input/components/password-field/password-field.svelte +72 -0
  50. package/dist/views/core/input/components/password-field/password-field.svelte.d.ts +24 -0
  51. package/dist/views/core/input/components/phone-field/phone-field.svelte +76 -0
  52. package/dist/views/core/input/components/phone-field/phone-field.svelte.d.ts +24 -0
  53. package/dist/views/core/input/components/range-field/range-field.svelte +53 -0
  54. package/dist/views/core/{form/components/input-field/input-field.svelte.d.ts → input/components/range-field/range-field.svelte.d.ts} +16 -29
  55. package/dist/views/core/input/components/search-field/search-field.svelte +53 -0
  56. package/dist/views/core/input/components/search-field/search-field.svelte.d.ts +24 -0
  57. package/dist/views/core/input/components/text-field/text-field.svelte +9 -0
  58. package/dist/views/core/{form → input}/components/text-field/text-field.svelte.d.ts +5 -12
  59. package/dist/views/core/input/components/textarea-field/textarea-field.svelte +9 -0
  60. package/dist/views/core/input/components/textarea-field/textarea-field.svelte.d.ts +21 -0
  61. package/dist/views/core/input/components/time-field/time-field.svelte +9 -0
  62. package/dist/views/core/input/components/time-field/time-field.svelte.d.ts +21 -0
  63. package/dist/views/core/input/index.d.ts +19 -0
  64. package/dist/views/core/input/index.js +19 -0
  65. package/dist/views/core/navbar/components/navbar/navbar.svelte +11 -11
  66. package/dist/views/core/navbar/components/navbar/navbar.svelte.d.ts +3 -3
  67. package/dist/views/core/no-data/components/no-data/no-data.svelte +34 -0
  68. package/dist/views/core/no-data/components/no-data/no-data.svelte.d.ts +27 -0
  69. package/dist/views/core/no-data/index.d.ts +2 -0
  70. package/dist/views/core/no-data/index.js +2 -0
  71. package/dist/views/core/text/components/text-country/text-country.svelte +2 -1
  72. package/dist/views/core/text/components/text-country-state/text-country-state.svelte +1 -1
  73. package/dist/views/core/toast/components/toast/toast.svelte +1 -1
  74. package/package.json +2 -2
  75. package/dist/views/core/form/components/input-field/input-field.svelte +0 -85
  76. package/dist/views/core/form/components/text-field/text-field.svelte +0 -26
  77. package/dist/views/core/form/index.d.ts +0 -0
  78. package/dist/views/core/form/index.js +0 -1
  79. /package/dist/views/core/{form → input}/components/label/label.svelte.d.ts +0 -0
@@ -0,0 +1,21 @@
1
+ import { type InputFieldPropsType } from '../input-field/input-field.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 EmailField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {
18
+ focus: () => void;
19
+ }, "">;
20
+ type EmailField = InstanceType<typeof EmailField>;
21
+ export default EmailField;
@@ -0,0 +1,80 @@
1
+ <script lang="ts">import { ripple } from "../../../../../actions";
2
+ import { openFilePicker } from "../../../../../services";
3
+ import { mdiAttachment } from "../../../icon";
4
+ import Icon from "../../../icon/components/icon/icon.svelte";
5
+ import InputField, {} from "../input-field/input-field.svelte";
6
+ let {
7
+ appearance,
8
+ size,
9
+ className,
10
+ accept = "",
11
+ multiple = false,
12
+ value,
13
+ ...props
14
+ } = $props();
15
+ let btnRoundedClassName = $state("");
16
+ let btnIconSizeClassName = $state("");
17
+ let fileNameDisplay = $state("");
18
+ let inputFieldRef = $state(null);
19
+ export function focus() {
20
+ inputFieldRef?.focus();
21
+ }
22
+ async function handleFileAttachment() {
23
+ let res = await openFilePicker({ accept, multiple });
24
+ if (res) {
25
+ value = res;
26
+ if (multiple) {
27
+ let files = value;
28
+ fileNameDisplay = files.map((file) => file.name).join(", ");
29
+ } else {
30
+ let file = value;
31
+ fileNameDisplay = file.name;
32
+ }
33
+ }
34
+ }
35
+ $effect(() => {
36
+ if (size) {
37
+ switch (size) {
38
+ case "lg":
39
+ btnIconSizeClassName = "!h-7 !w-7";
40
+ break;
41
+ case "md":
42
+ btnIconSizeClassName = "!h-6 !w-6";
43
+ break;
44
+ case "sm":
45
+ btnIconSizeClassName = "!h-5 !w-5";
46
+ break;
47
+ case "xs":
48
+ btnIconSizeClassName = "!h-4 !w-4";
49
+ break;
50
+ }
51
+ }
52
+ });
53
+ $effect(() => {
54
+ if (!appearance || appearance == "normal") {
55
+ btnRoundedClassName = "rounded-tr-lg rounded-br-lg";
56
+ }
57
+ });
58
+ </script>
59
+
60
+ {#snippet fileButton()}
61
+ <button
62
+ class="px-3 h-full hover:bg-gray-100 {btnRoundedClassName} "
63
+ use:ripple
64
+ onclick={handleFileAttachment}
65
+ >
66
+ <Icon path={mdiAttachment} className=" {btnIconSizeClassName}"></Icon>
67
+ </button>
68
+ {/snippet}
69
+
70
+ <InputField
71
+ bind:this={inputFieldRef}
72
+ {...props}
73
+ {appearance}
74
+ {size}
75
+ value={fileNameDisplay}
76
+ className="pr-14 {className}"
77
+ type="text"
78
+ readonly
79
+ rightSnippet={fileButton}
80
+ />
@@ -0,0 +1,25 @@
1
+ import { type InputFieldPropsType } from '../input-field/input-field.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 FileField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType & {
16
+ accept?: string;
17
+ multiple?: boolean;
18
+ value?: File | File[];
19
+ }, {
20
+ [evt: string]: CustomEvent<any>;
21
+ }, {}, {
22
+ focus: () => void;
23
+ }, "">;
24
+ type FileField = InstanceType<typeof FileField>;
25
+ export default FileField;
@@ -0,0 +1,282 @@
1
+ <script module lang="ts"></script>
2
+
3
+ <script lang="ts">import Label from "../label/label.svelte";
4
+ let {
5
+ appearance = "normal",
6
+ ariaControls,
7
+ ariaExpanded,
8
+ autofocus = false,
9
+ className = "",
10
+ cols,
11
+ containerClassName = "",
12
+ contentSnippet,
13
+ contentSnippetClassName,
14
+ disabled = false,
15
+ floatingLabel = false,
16
+ hasRequiredSymbol = true,
17
+ id = "",
18
+ label = "",
19
+ labelClassName = "",
20
+ leftSnippet,
21
+ leftSnippetContainerClassName = "",
22
+ max,
23
+ maxlength,
24
+ min,
25
+ minlength,
26
+ multiple = false,
27
+ name = "",
28
+ title,
29
+ onblur,
30
+ onchange,
31
+ onclick,
32
+ ondblclick,
33
+ ondrag,
34
+ ondragover,
35
+ ondrop,
36
+ onfocus,
37
+ oninput,
38
+ onkeydown,
39
+ onkeypress,
40
+ onkeyup,
41
+ onmousedown,
42
+ onmouseup,
43
+ pattern = "",
44
+ placeholder = "",
45
+ readonly = false,
46
+ required = false,
47
+ requiredSymbol = "*",
48
+ requiredSymbolColor = "red",
49
+ rightSnippet,
50
+ rightSnippetContainerClassName = "",
51
+ role,
52
+ rows = 5,
53
+ size = "md",
54
+ step,
55
+ type = "text",
56
+ value = $bindable("")
57
+ } = $props();
58
+ let inputRef = $state(null);
59
+ let sizeClassName = $state("");
60
+ let appearanceClassName = $state("");
61
+ let floatingLabelClassName = $state("");
62
+ let floatingLabelPaddingClassName = $state("");
63
+ let floatingLabelTextClassName = $state("");
64
+ export function focus() {
65
+ inputRef && inputRef.focus();
66
+ }
67
+ $effect(() => {
68
+ if (floatingLabel || leftSnippet != null || rightSnippet != null) {
69
+ containerClassName = (containerClassName || "") + " relative";
70
+ }
71
+ });
72
+ $effect(() => {
73
+ if (floatingLabel) {
74
+ if (size) {
75
+ let flpcn = "";
76
+ switch (size) {
77
+ case "lg":
78
+ flpcn = ` px-1 peer-focus:px-1 peer-placeholder-shown:px-4 `;
79
+ floatingLabelTextClassName = "text-base";
80
+ break;
81
+ case "md":
82
+ flpcn = " px-1 peer-focus:px-1 peer-placeholder-shown:px-2.5 ";
83
+ floatingLabelTextClassName = "text-sm";
84
+ break;
85
+ case "sm":
86
+ flpcn = " px-1 peer-focus:px-1 peer-placeholder-shown:px-2";
87
+ floatingLabelTextClassName = "text-xs";
88
+ break;
89
+ case "xs":
90
+ flpcn = " px-0 peer-focus:px-0 peer-placeholder-shown:px-1 ";
91
+ floatingLabelTextClassName = "text-xs";
92
+ break;
93
+ }
94
+ floatingLabelPaddingClassName = flpcn;
95
+ }
96
+ floatingLabelClassName = `absolute duration-300 transform top-0 rounded -translate-y-1/2 peer-placeholder-shown:top-1/2 peer-focus:top-0 peer-placeholder-shown:start-0 peer-focus:start-1 bg-white peer-placeholder-shown:bg-transparent peer-focus:bg-white start-1 ${floatingLabelPaddingClassName} ${floatingLabelTextClassName}`;
97
+ }
98
+ });
99
+ $effect(() => {
100
+ if (appearance) {
101
+ switch (appearance) {
102
+ case "normal":
103
+ appearanceClassName = "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-indigo-500 focus:border-indigo-500 dark:bg-gray-700 ";
104
+ break;
105
+ case "box":
106
+ appearanceClassName = "bg-gray-50 border border-gray-300 text-gray-900 focus:ring-indigo-500 focus:border-indigo-500 ";
107
+ break;
108
+ case "fill":
109
+ appearanceClassName = "bg-gray-100 border-0 appearance-none focus:bg-gray-200 focus:outline-none focus:ring-0";
110
+ break;
111
+ case "underline":
112
+ appearanceClassName = "bg-transparent border-0 border-b-2 border-gray-300 appearance-none focus:outline-none focus:ring-0 focus:border-blue-600";
113
+ break;
114
+ case "fill-underline":
115
+ appearanceClassName = "bg-gray-100 border-0 border-b-2 border-gray-300 appearance-none focus:outline-none focus:ring-0 focus:border-blue-600";
116
+ break;
117
+ case "none":
118
+ appearanceClassName = "hover:bg-gray-100 focus:bg-gray-100 border-0 focus:outline-none focus:ring-0 appearance-none";
119
+ break;
120
+ }
121
+ }
122
+ });
123
+ $effect(() => {
124
+ if (size) {
125
+ switch (size) {
126
+ case "lg":
127
+ sizeClassName = "p-4 text-base";
128
+ break;
129
+ case "md":
130
+ sizeClassName = "p-2.5 text-sm";
131
+ break;
132
+ case "sm":
133
+ sizeClassName = "p-2 text-xs";
134
+ break;
135
+ case "xs":
136
+ sizeClassName = "p-1 text-xs";
137
+ break;
138
+ }
139
+ }
140
+ });
141
+ $effect(() => {
142
+ if (name && !id) {
143
+ id = name;
144
+ } else if (id && !name) {
145
+ name = id;
146
+ }
147
+ });
148
+ $effect(() => {
149
+ if (inputRef && autofocus) {
150
+ inputRef.focus();
151
+ }
152
+ });
153
+ </script>
154
+
155
+ {#snippet labelSnippet()}
156
+ <Label
157
+ forName={id}
158
+ {label}
159
+ className="{floatingLabelClassName} {labelClassName}"
160
+ {required}
161
+ {requiredSymbolColor}
162
+ {requiredSymbol}
163
+ {hasRequiredSymbol}
164
+ />
165
+ {/snippet}
166
+
167
+ {#if !floatingLabel && label}
168
+ {@render labelSnippet()}
169
+ {/if}
170
+
171
+ <div class="w-full {containerClassName}">
172
+ {#if leftSnippet}
173
+ <div
174
+ class="absolute flex items-center justify-center left-children {leftSnippetContainerClassName}"
175
+ >
176
+ {@render leftSnippet()}
177
+ </div>
178
+ {/if}
179
+
180
+ {#if type == 'textarea'}
181
+ <textarea
182
+ bind:this={inputRef}
183
+ bind:value
184
+ class="block w-full peer {appearanceClassName} {sizeClassName} {className}"
185
+ {title}
186
+ {id}
187
+ {name}
188
+ {placeholder}
189
+ {required}
190
+ {disabled}
191
+ {readonly}
192
+ {maxlength}
193
+ {minlength}
194
+ {rows}
195
+ {cols}
196
+ {onchange}
197
+ {oninput}
198
+ {onfocus}
199
+ {onblur}
200
+ {ondblclick}
201
+ {onclick}
202
+ {onmousedown}
203
+ {onmouseup}
204
+ {onkeydown}
205
+ {onkeyup}
206
+ {onkeypress}
207
+ {ondrop}
208
+ {ondrag}
209
+ {ondragover}
210
+ ></textarea>
211
+ {:else}
212
+ <input
213
+ bind:this={inputRef}
214
+ bind:value
215
+ class="block w-full peer {appearanceClassName} {sizeClassName} {className}"
216
+ {title}
217
+ {type}
218
+ {id}
219
+ {name}
220
+ {placeholder}
221
+ {required}
222
+ {disabled}
223
+ {readonly}
224
+ {maxlength}
225
+ {minlength}
226
+ {min}
227
+ {max}
228
+ {step}
229
+ {pattern}
230
+ {multiple}
231
+ {role}
232
+ {onchange}
233
+ {oninput}
234
+ {onfocus}
235
+ {onblur}
236
+ {ondblclick}
237
+ {onclick}
238
+ {onmousedown}
239
+ {onmouseup}
240
+ {onkeydown}
241
+ {onkeyup}
242
+ {onkeypress}
243
+ {ondrop}
244
+ {ondrag}
245
+ {ondragover}
246
+ aria-controls={ariaControls}
247
+ aria-expanded={ariaExpanded}
248
+ />
249
+ {/if}
250
+ {#if contentSnippet}
251
+ <div
252
+ class="absolute inset-0 pointer-events-none block w-full overflow-hidden {appearanceClassName} {sizeClassName} {contentSnippetClassName}"
253
+ >
254
+ {@render contentSnippet()}
255
+ </div>
256
+ {/if}
257
+ {#if rightSnippet}
258
+ <div
259
+ class="absolute flex items-center justify-center right-children {rightSnippetContainerClassName}"
260
+ >
261
+ {@render rightSnippet()}
262
+ </div>
263
+ {/if}
264
+
265
+ {#if label && floatingLabel}
266
+ {@render labelSnippet()}
267
+ {/if}
268
+ </div>
269
+
270
+ <style>
271
+ .left-children {
272
+ left: 2px;
273
+ top: 2px;
274
+ bottom: 2px;
275
+ }
276
+
277
+ .right-children {
278
+ right: 2px;
279
+ top: 2px;
280
+ bottom: 2px;
281
+ }
282
+ </style>
@@ -0,0 +1,81 @@
1
+ export type InputFieldSizeType = 'lg' | 'md' | 'sm' | 'xs';
2
+ export type InputFieldAppearanceType = 'normal' | 'box' | 'fill' | 'underline' | 'fill-underline' | 'none';
3
+ export type InputValueType = string | string[] | number | number[] | Date | Date[] | File | File[] | null | undefined;
4
+ export type InputFieldPropsType = {
5
+ appearance?: InputFieldAppearanceType;
6
+ ariaControls?: string;
7
+ ariaExpanded?: boolean;
8
+ autofocus?: boolean;
9
+ className?: string;
10
+ cols?: number;
11
+ containerClassName?: string;
12
+ contentSnippet?: Snippet;
13
+ contentSnippetClassName?: string;
14
+ disabled?: boolean;
15
+ floatingLabel?: boolean;
16
+ hasRequiredSymbol?: boolean;
17
+ iconClassName?: string;
18
+ iconPath?: string;
19
+ id?: string;
20
+ label?: string;
21
+ labelClassName?: string;
22
+ leftSnippet?: Snippet;
23
+ leftSnippetContainerClassName?: string;
24
+ max?: number;
25
+ maxlength?: number;
26
+ min?: number;
27
+ minlength?: number;
28
+ multiple?: boolean;
29
+ name?: string;
30
+ title?: string;
31
+ onblur?: (ev: any) => void;
32
+ onchange?: (ev: any) => void;
33
+ onclick?: (ev: MouseEvent) => void;
34
+ ondblclick?: (ev: MouseEvent) => void;
35
+ ondrag?: (ev: DragEvent) => void;
36
+ ondragover?: (ev: DragEvent) => void;
37
+ ondrop?: (ev: DragEvent) => void;
38
+ onfocus?: (ev: any) => void;
39
+ oninput?: (ev: any) => void;
40
+ onkeydown?: (ev: KeyboardEvent) => void;
41
+ onkeypress?: (ev: KeyboardEvent) => void;
42
+ onkeyup?: (ev: KeyboardEvent) => void;
43
+ onmousedown?: (ev: MouseEvent) => void;
44
+ onmouseup?: (ev: MouseEvent) => void;
45
+ pattern?: string;
46
+ placeholder?: string;
47
+ readonly?: boolean;
48
+ required?: boolean;
49
+ requiredSymbol?: string;
50
+ requiredSymbolColor?: string;
51
+ rightSnippet?: Snippet;
52
+ rightSnippetContainerClassName?: string;
53
+ role?: AriaRole;
54
+ rows?: number;
55
+ size?: InputFieldSizeType;
56
+ step?: number;
57
+ type?: HTMLInputTypeAttribute | 'textarea';
58
+ value?: InputValueType;
59
+ };
60
+ import type { Snippet } from 'svelte';
61
+ import type { HTMLInputTypeAttribute, AriaRole } from 'svelte/elements';
62
+ 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> {
63
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
64
+ $$bindings?: Bindings;
65
+ } & Exports;
66
+ (internal: unknown, props: Props & {
67
+ $$events?: Events;
68
+ $$slots?: Slots;
69
+ }): Exports & {
70
+ $set?: any;
71
+ $on?: any;
72
+ };
73
+ z_$$bindings?: Bindings;
74
+ }
75
+ declare const InputField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType, {
76
+ [evt: string]: CustomEvent<any>;
77
+ }, {}, {
78
+ focus: () => void;
79
+ }, "value">;
80
+ type InputField = InstanceType<typeof InputField>;
81
+ export default InputField;
@@ -12,9 +12,7 @@
12
12
 
13
13
  <label
14
14
  for={forName || ''}
15
- class="block mb-2 text-sm font-medium text-gray-900 dark:text-white {hasRequiredSymbol && required
16
- ? 'required'
17
- : ''} {className}"
15
+ class="block text-sm text-gray-500 {hasRequiredSymbol && required ? 'required' : ''} {className}"
18
16
  style="--requiredSymbolColor:{requiredSymbolColor}; --requiredSymbol: '{requiredSymbol}'; "
19
17
  >
20
18
  {#if children}
@@ -0,0 +1,9 @@
1
+ <script lang="ts">import InputField, {} from "../input-field/input-field.svelte";
2
+ let props = $props();
3
+ let inputFieldRef = $state(null);
4
+ export function focus() {
5
+ inputFieldRef?.focus();
6
+ }
7
+ </script>
8
+
9
+ <InputField bind:this={inputFieldRef} {...props} type="number" />
@@ -0,0 +1,21 @@
1
+ import { type InputFieldPropsType } from '../input-field/input-field.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 NumberField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {
18
+ focus: () => void;
19
+ }, "">;
20
+ type NumberField = InstanceType<typeof NumberField>;
21
+ export default NumberField;
@@ -0,0 +1,72 @@
1
+ <script lang="ts">import { ripple } from "../../../../../actions";
2
+ import { mdiEyeOffOutline, mdiEyeOutline } from "../../../icon";
3
+ import Icon from "../../../icon/components/icon/icon.svelte";
4
+ import InputField, {} from "../input-field/input-field.svelte";
5
+ let {
6
+ type = "password",
7
+ size,
8
+ appearance,
9
+ buttonClassName,
10
+ iconClassName,
11
+ ...props
12
+ } = $props();
13
+ let btnRoundedClassName = $state("");
14
+ let btnIconSizeClassName = $state("");
15
+ let inputFieldRef = $state(null);
16
+ export function focus() {
17
+ inputFieldRef?.focus();
18
+ }
19
+ function handleTogglePassword() {
20
+ if (type == "password") {
21
+ type = "text";
22
+ } else {
23
+ type = "password";
24
+ }
25
+ }
26
+ $effect(() => {
27
+ if (size) {
28
+ switch (size) {
29
+ case "lg":
30
+ btnIconSizeClassName = "!h-7 !w-7";
31
+ break;
32
+ case "md":
33
+ btnIconSizeClassName = "!h-6 !w-6";
34
+ break;
35
+ case "sm":
36
+ btnIconSizeClassName = "!h-5 !w-5";
37
+ break;
38
+ case "xs":
39
+ btnIconSizeClassName = "!h-4 !w-4";
40
+ break;
41
+ }
42
+ }
43
+ });
44
+ $effect(() => {
45
+ if (!appearance || appearance == "normal") {
46
+ btnRoundedClassName = "rounded-tr-lg rounded-br-lg";
47
+ }
48
+ });
49
+ </script>
50
+
51
+ {#snippet showPasswordButton()}
52
+ <button
53
+ class="px-3 h-full hover:bg-gray-100 {btnRoundedClassName} {buttonClassName}"
54
+ use:ripple
55
+ onclick={handleTogglePassword}
56
+ >
57
+ <Icon
58
+ path={type == 'password' ? mdiEyeOffOutline : mdiEyeOutline}
59
+ className=" {btnIconSizeClassName} {iconClassName}"
60
+ />
61
+ </button>
62
+ {/snippet}
63
+
64
+ <InputField
65
+ bind:this={inputFieldRef}
66
+ {...props}
67
+ {type}
68
+ maxlength={props?.maxlength || 200}
69
+ rightSnippet={showPasswordButton}
70
+ {size}
71
+ {appearance}
72
+ />
@@ -0,0 +1,24 @@
1
+ import { type InputFieldPropsType } from '../input-field/input-field.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 PasswordField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType & {
16
+ buttonClassName?: string;
17
+ iconClassName?: string;
18
+ }, {
19
+ [evt: string]: CustomEvent<any>;
20
+ }, {}, {
21
+ focus: () => void;
22
+ }, "">;
23
+ type PasswordField = InstanceType<typeof PasswordField>;
24
+ export default PasswordField;