@cloudparker/moldex.js 0.0.28 → 0.0.30
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 +57 -34
- package/dist/views/core/button/components/button/button.svelte.d.ts +19 -18
- package/dist/views/core/button/components/button-back/button-back.svelte +44 -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 +7 -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 +47 -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 +94 -42
- 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 +155 -103
- 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 +7 -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 +328 -231
- package/dist/views/core/dialog/components/dialog/dialog.svelte.d.ts +6 -10
- package/dist/views/core/dialog/components/list-dialog/list-picker-dialog.svelte +189 -0
- package/dist/views/core/dialog/components/list-dialog/list-picker-dialog.svelte.d.ts +41 -0
- package/dist/views/core/dialog/components/msg-dialog/msg-dialog.svelte +22 -13
- package/dist/views/core/dialog/index.d.ts +4 -2
- package/dist/views/core/dialog/index.js +2 -2
- package/dist/views/core/drawer/components/drawer/drawer.svelte +52 -34
- package/dist/views/core/icon/components/icon/icon.svelte +25 -12
- 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 +114 -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 +467 -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 +13 -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 +13 -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 +12 -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 +92 -0
- package/dist/views/core/input/components/file-field/file-field.svelte.d.ts +25 -0
- package/dist/views/core/input/components/input-field/input-field.svelte +382 -0
- package/dist/views/core/{form → input}/components/input-field/input-field.svelte.d.ts +51 -35
- package/dist/views/core/input/components/label/label.svelte +46 -0
- package/dist/views/core/input/components/number-field/number-field.svelte +13 -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 +83 -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 +90 -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 +72 -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 +67 -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 +12 -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 +12 -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 +12 -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 +71 -39
- 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 +51 -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/pagination/components/pagination/pagination.svelte +100 -71
- package/dist/views/core/progressbar/components/progressbar/progressbar.svelte +37 -23
- package/dist/views/core/referrer/components/referrer.svelte +15 -13
- package/dist/views/core/ruler/components/vertical-ruler/verticcal-ruler.svelte +6 -2
- package/dist/views/core/screen-detector/components/screen-detector.svelte +13 -9
- package/dist/views/core/spinner/components/spinner/spinner.svelte +7 -2
- package/dist/views/core/text/components/text-await/text-await.svelte +8 -2
- package/dist/views/core/text/components/text-copy/text-copy.svelte +28 -17
- package/dist/views/core/text/components/text-country/text-country.svelte +42 -29
- package/dist/views/core/text/components/text-country-state/text-country-state.svelte +38 -30
- package/dist/views/core/text/components/text-currency/text-currency.svelte +21 -10
- package/dist/views/core/text/components/text-date/text-date.svelte +33 -21
- package/dist/views/core/text/components/text-email/text-email.svelte +13 -4
- package/dist/views/core/text/components/text-html/text-html.svelte +3 -2
- package/dist/views/core/text/components/text-phone/text-phone.svelte +13 -4
- package/dist/views/core/toast/components/toast/toast.svelte +44 -21
- package/package.json +2 -2
- package/dist/views/core/form/components/input-field/input-field.svelte +0 -233
- package/dist/views/core/form/components/label/label.svelte +0 -32
- 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.d.ts +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { ripple } from '../../../../../actions';
|
|
3
|
+
import { mdiEyeOffOutline, mdiEyeOutline } from '../../../icon';
|
|
4
|
+
import Icon from '../../../icon/components/icon/icon.svelte';
|
|
5
|
+
import InputField, { type InputFieldPropsType } from '../input-field/input-field.svelte';
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
type = 'password',
|
|
9
|
+
size,
|
|
10
|
+
appearance,
|
|
11
|
+
buttonClassName,
|
|
12
|
+
iconClassName,
|
|
13
|
+
...props
|
|
14
|
+
}: InputFieldPropsType & {
|
|
15
|
+
buttonClassName?: string;
|
|
16
|
+
iconClassName?: string;
|
|
17
|
+
} = $props();
|
|
18
|
+
|
|
19
|
+
let btnRoundedClassName = $state('');
|
|
20
|
+
let btnIconSizeClassName = $state('');
|
|
21
|
+
|
|
22
|
+
let inputFieldRef: InputField | null = $state(null);
|
|
23
|
+
|
|
24
|
+
export function focus() {
|
|
25
|
+
inputFieldRef?.focus();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function handleTogglePassword() {
|
|
29
|
+
if (type == 'password') {
|
|
30
|
+
type = 'text';
|
|
31
|
+
} else {
|
|
32
|
+
type = 'password';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
$effect(() => {
|
|
37
|
+
if (size) {
|
|
38
|
+
switch (size) {
|
|
39
|
+
case 'lg':
|
|
40
|
+
btnIconSizeClassName = '!h-7 !w-7';
|
|
41
|
+
break;
|
|
42
|
+
case 'md':
|
|
43
|
+
btnIconSizeClassName = '!h-6 !w-6';
|
|
44
|
+
break;
|
|
45
|
+
case 'sm':
|
|
46
|
+
btnIconSizeClassName = '!h-5 !w-5';
|
|
47
|
+
break;
|
|
48
|
+
case 'xs':
|
|
49
|
+
btnIconSizeClassName = '!h-4 !w-4';
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
$effect(() => {
|
|
56
|
+
if (!appearance || appearance == 'normal') {
|
|
57
|
+
btnRoundedClassName = 'rounded-tr-lg rounded-br-lg';
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
{#snippet showPasswordButton()}
|
|
63
|
+
<button
|
|
64
|
+
class="px-3 h-full hover:bg-gray-100 {btnRoundedClassName} {buttonClassName}"
|
|
65
|
+
use:ripple
|
|
66
|
+
onclick={handleTogglePassword}
|
|
67
|
+
>
|
|
68
|
+
<Icon
|
|
69
|
+
path={type == 'password' ? mdiEyeOffOutline : mdiEyeOutline}
|
|
70
|
+
className=" {btnIconSizeClassName} {iconClassName}"
|
|
71
|
+
/>
|
|
72
|
+
</button>
|
|
73
|
+
{/snippet}
|
|
74
|
+
|
|
75
|
+
<InputField
|
|
76
|
+
bind:this={inputFieldRef}
|
|
77
|
+
{...props}
|
|
78
|
+
{type}
|
|
79
|
+
maxlength={props?.maxlength || 200}
|
|
80
|
+
rightSnippet={showPasswordButton}
|
|
81
|
+
{size}
|
|
82
|
+
{appearance}
|
|
83
|
+
/>
|
|
@@ -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;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { ripple } from '../../../../../actions';
|
|
3
|
+
import EasyScriptLoader from '@cloudparker/easy-script-loader-svelte';
|
|
4
|
+
import InputField, { type InputFieldPropsType } from '../input-field/input-field.svelte';
|
|
5
|
+
import { isMobileScreen, openListPickerDialog } from '../../../../../services';
|
|
6
|
+
import type { DialogSizeType } from '../../../dialog';
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
value,
|
|
10
|
+
size,
|
|
11
|
+
appearance,
|
|
12
|
+
buttonClassName,
|
|
13
|
+
className,
|
|
14
|
+
dialCode = $bindable('+1'),
|
|
15
|
+
...props
|
|
16
|
+
}: InputFieldPropsType & {
|
|
17
|
+
buttonClassName?: string;
|
|
18
|
+
dialCode?: string;
|
|
19
|
+
} = $props();
|
|
20
|
+
|
|
21
|
+
let btnRoundedClassName = $state('');
|
|
22
|
+
|
|
23
|
+
let EasyCountryData: any;
|
|
24
|
+
|
|
25
|
+
let inputFieldRef: InputField | null = $state(null);
|
|
26
|
+
|
|
27
|
+
export function focus() {
|
|
28
|
+
inputFieldRef?.focus();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async function hanleDialCodePicker() {
|
|
32
|
+
if (EasyCountryData) {
|
|
33
|
+
let items = EasyCountryData.getCountries();
|
|
34
|
+
// console.log('Countries', items);
|
|
35
|
+
let size: DialogSizeType = isMobileScreen() ? 'full' : 'sm';
|
|
36
|
+
let res: string = await openListPickerDialog<string>({
|
|
37
|
+
items,
|
|
38
|
+
itemTitle: 'dialCode',
|
|
39
|
+
itemSubtitle: 'name',
|
|
40
|
+
size,
|
|
41
|
+
hasCheck: true,
|
|
42
|
+
identity: 'dialCode'
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
console.log(res);
|
|
46
|
+
if (res) {
|
|
47
|
+
dialCode = res;
|
|
48
|
+
inputFieldRef && inputFieldRef.focus();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function handleScriptLoad(lib: any) {
|
|
54
|
+
console.log(lib);
|
|
55
|
+
EasyCountryData = lib;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
$effect(() => {
|
|
59
|
+
if (!appearance || appearance == 'normal') {
|
|
60
|
+
btnRoundedClassName = 'rounded-tl-lg rounded-bl-lg';
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
</script>
|
|
64
|
+
|
|
65
|
+
{#snippet showPasswordButton()}
|
|
66
|
+
<button
|
|
67
|
+
class="w-16 h-full hover:bg-gray-100 font-bold text-gray-400 {btnRoundedClassName} {buttonClassName}"
|
|
68
|
+
use:ripple
|
|
69
|
+
onclick={hanleDialCodePicker}
|
|
70
|
+
>
|
|
71
|
+
{dialCode}
|
|
72
|
+
</button>
|
|
73
|
+
{/snippet}
|
|
74
|
+
|
|
75
|
+
<EasyScriptLoader
|
|
76
|
+
scriptName="EasyCountryData"
|
|
77
|
+
scriptUrl="https://cdn.jsdelivr.net/gh/paramanandapradhan/easy-countrydata@main/dist/index.js"
|
|
78
|
+
onLoad={handleScriptLoad}
|
|
79
|
+
/>
|
|
80
|
+
|
|
81
|
+
<InputField
|
|
82
|
+
bind:this={inputFieldRef}
|
|
83
|
+
{...props}
|
|
84
|
+
type="tel"
|
|
85
|
+
maxlength={props?.maxlength || 12}
|
|
86
|
+
leftSnippet={showPasswordButton}
|
|
87
|
+
{size}
|
|
88
|
+
{appearance}
|
|
89
|
+
className="pl-16 {className}"
|
|
90
|
+
/>
|
|
@@ -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 PhoneField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType & {
|
|
16
|
+
buttonClassName?: string;
|
|
17
|
+
dialCode?: string;
|
|
18
|
+
}, {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
}, {}, {
|
|
21
|
+
focus: () => void;
|
|
22
|
+
}, "dialCode">;
|
|
23
|
+
type PhoneField = InstanceType<typeof PhoneField>;
|
|
24
|
+
export default PhoneField;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import InputField, {
|
|
3
|
+
type InputFieldSizeType
|
|
4
|
+
} from '../input-field/input-field.svelte';
|
|
5
|
+
|
|
6
|
+
type RangeFieldPropsType = {
|
|
7
|
+
id?: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
size?: InputFieldSizeType;
|
|
11
|
+
value?: number;
|
|
12
|
+
min?: number;
|
|
13
|
+
max?: number;
|
|
14
|
+
step?: number;
|
|
15
|
+
oninput?: (ev: any) => void;
|
|
16
|
+
onfocus?: (ev: any) => void;
|
|
17
|
+
onblur?: (ev: any) => void;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
let {
|
|
21
|
+
id,
|
|
22
|
+
value = $bindable(50),
|
|
23
|
+
size = 'md',
|
|
24
|
+
min = 0,
|
|
25
|
+
max = 100,
|
|
26
|
+
name,
|
|
27
|
+
step,
|
|
28
|
+
className,
|
|
29
|
+
oninput,
|
|
30
|
+
onblur,
|
|
31
|
+
onfocus
|
|
32
|
+
}: RangeFieldPropsType = $props();
|
|
33
|
+
|
|
34
|
+
let rangeSizeClassName = $state('');
|
|
35
|
+
|
|
36
|
+
$effect(() => {
|
|
37
|
+
switch (size) {
|
|
38
|
+
case 'lg':
|
|
39
|
+
rangeSizeClassName = 'h-3 ';
|
|
40
|
+
break;
|
|
41
|
+
case 'md':
|
|
42
|
+
rangeSizeClassName = 'h-2 ';
|
|
43
|
+
break;
|
|
44
|
+
case 'sm':
|
|
45
|
+
rangeSizeClassName = 'h-1 ';
|
|
46
|
+
break;
|
|
47
|
+
case 'xs':
|
|
48
|
+
rangeSizeClassName = 'h-2-px ';
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
</script>
|
|
53
|
+
|
|
54
|
+
<input
|
|
55
|
+
{id}
|
|
56
|
+
{name}
|
|
57
|
+
type="range"
|
|
58
|
+
class=" w-full bg-gray-200 appearance-none cursor-pointer dark:bg-gray-700 rounded-lg range-lg outline-none focus:outline-none {rangeSizeClassName} {className}"
|
|
59
|
+
{min}
|
|
60
|
+
{max}
|
|
61
|
+
{step}
|
|
62
|
+
bind:value
|
|
63
|
+
{oninput}
|
|
64
|
+
{onfocus}
|
|
65
|
+
{onblur}
|
|
66
|
+
/>
|
|
67
|
+
|
|
68
|
+
<style>
|
|
69
|
+
.h-2-px {
|
|
70
|
+
height: 2px;
|
|
71
|
+
}
|
|
72
|
+
</style>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type InputFieldSizeType } 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 RangeField: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
+
id?: string;
|
|
17
|
+
name?: string;
|
|
18
|
+
className?: string;
|
|
19
|
+
size?: InputFieldSizeType;
|
|
20
|
+
value?: number;
|
|
21
|
+
min?: number;
|
|
22
|
+
max?: number;
|
|
23
|
+
step?: number;
|
|
24
|
+
oninput?: (ev: any) => void;
|
|
25
|
+
onfocus?: (ev: any) => void;
|
|
26
|
+
onblur?: (ev: any) => void;
|
|
27
|
+
}, {
|
|
28
|
+
[evt: string]: CustomEvent<any>;
|
|
29
|
+
}, {}, {}, "value">;
|
|
30
|
+
type RangeField = InstanceType<typeof RangeField>;
|
|
31
|
+
export default RangeField;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { mdiMagnify } from '../../../icon';
|
|
3
|
+
import Icon from '../../../icon/components/icon/icon.svelte';
|
|
4
|
+
import InputField, { type InputFieldPropsType } from '../input-field/input-field.svelte';
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
className,
|
|
8
|
+
placeholder,
|
|
9
|
+
iconClassName,
|
|
10
|
+
onSearch,
|
|
11
|
+
...props
|
|
12
|
+
}: InputFieldPropsType & { iconClassName?: string; onSearch?: (value: string) => void } =
|
|
13
|
+
$props();
|
|
14
|
+
|
|
15
|
+
const debouncedSearch = debounce(search, 300);
|
|
16
|
+
let lastQuery: string;
|
|
17
|
+
|
|
18
|
+
let inputFieldRef: InputField | null = $state(null);
|
|
19
|
+
|
|
20
|
+
export function focus() {
|
|
21
|
+
inputFieldRef?.focus();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function handleInput(ev: any) {
|
|
25
|
+
// console.log(ev);
|
|
26
|
+
let input: HTMLInputElement = ev?.target;
|
|
27
|
+
if (input) {
|
|
28
|
+
let searchText = (input.value || '').toLowerCase().trim();
|
|
29
|
+
debouncedSearch(searchText);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function search(query: string) {
|
|
34
|
+
if (lastQuery != query) {
|
|
35
|
+
onSearch && onSearch(query);
|
|
36
|
+
lastQuery = query;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function debounce<T extends (...args: any[]) => void>(
|
|
41
|
+
func: T,
|
|
42
|
+
wait: number
|
|
43
|
+
): (...args: Parameters<T>) => void {
|
|
44
|
+
let timeout: ReturnType<typeof setTimeout>;
|
|
45
|
+
|
|
46
|
+
return function (...args: Parameters<T>) {
|
|
47
|
+
clearTimeout(timeout);
|
|
48
|
+
timeout = setTimeout(() => {
|
|
49
|
+
func(...args);
|
|
50
|
+
}, wait);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
{#snippet searchIcon()}
|
|
56
|
+
<Icon path={mdiMagnify} className="mx-3 text-gray-400 {iconClassName}"></Icon>
|
|
57
|
+
{/snippet}
|
|
58
|
+
<InputField
|
|
59
|
+
bind:this={inputFieldRef}
|
|
60
|
+
{...props}
|
|
61
|
+
type="search"
|
|
62
|
+
maxlength={props?.maxlength || 200}
|
|
63
|
+
leftSnippet={searchIcon}
|
|
64
|
+
className=" pl-12 {className}"
|
|
65
|
+
{placeholder}
|
|
66
|
+
oninput={handleInput}
|
|
67
|
+
/>
|
|
@@ -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 SearchField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType & {
|
|
16
|
+
iconClassName?: string;
|
|
17
|
+
onSearch?: (value: string) => void;
|
|
18
|
+
}, {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
}, {}, {
|
|
21
|
+
focus: () => void;
|
|
22
|
+
}, "">;
|
|
23
|
+
type SearchField = InstanceType<typeof SearchField>;
|
|
24
|
+
export default SearchField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import InputField, { type InputFieldPropsType } from '../input-field/input-field.svelte';
|
|
3
|
+
|
|
4
|
+
let { maxlength, ...props }: InputFieldPropsType = $props();
|
|
5
|
+
let inputFieldRef: InputField | null = $state(null);
|
|
6
|
+
|
|
7
|
+
export function focus() {
|
|
8
|
+
inputFieldRef?.focus();
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<InputField bind:this={inputFieldRef} {...props} type="text" maxlength={maxlength || 200} />
|
|
@@ -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 TextField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {
|
|
18
|
+
focus: () => void;
|
|
19
|
+
}, "">;
|
|
20
|
+
type TextField = InstanceType<typeof TextField>;
|
|
21
|
+
export default TextField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import InputField, { type InputFieldPropsType } from '../input-field/input-field.svelte';
|
|
3
|
+
|
|
4
|
+
let props: InputFieldPropsType = $props();
|
|
5
|
+
let inputFieldRef: InputField | null = $state(null);
|
|
6
|
+
|
|
7
|
+
export function focus() {
|
|
8
|
+
inputFieldRef?.focus();
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<InputField bind:this={inputFieldRef} {...props} type="textarea" maxlength={props?.maxlength || 200} />
|
|
@@ -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 TextareaField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {
|
|
18
|
+
focus: () => void;
|
|
19
|
+
}, "">;
|
|
20
|
+
type TextareaField = InstanceType<typeof TextareaField>;
|
|
21
|
+
export default TextareaField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import InputField, { type InputFieldPropsType } from '../input-field/input-field.svelte';
|
|
3
|
+
|
|
4
|
+
let props: InputFieldPropsType = $props();
|
|
5
|
+
let inputFieldRef: InputField | null = $state(null);
|
|
6
|
+
|
|
7
|
+
export function focus() {
|
|
8
|
+
inputFieldRef?.focus();
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<InputField bind:this={inputFieldRef} {...props} type="time" />
|
|
@@ -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 TimeField: $$__sveltets_2_IsomorphicComponent<InputFieldPropsType, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {
|
|
18
|
+
focus: () => void;
|
|
19
|
+
}, "">;
|
|
20
|
+
type TimeField = InstanceType<typeof TimeField>;
|
|
21
|
+
export default TimeField;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type InputFieldAppearanceType, type InputFieldPropsType, type InputFieldSizeType } from "./components/input-field/input-field.svelte";
|
|
2
|
+
import ColorField from "./components/color-field/color-field.svelte";
|
|
3
|
+
import ComboboxField from "./components/combobox-field/combobox-field.svelte";
|
|
4
|
+
import DateField from "./components/date-field/date-field.svelte";
|
|
5
|
+
import DatetimeField from "./components/datetime-field/datetime-field.svelte";
|
|
6
|
+
import EmailField from "./components/email-field/email-field.svelte";
|
|
7
|
+
import FileField from "./components/file-field/file-field.svelte";
|
|
8
|
+
import InputField from "./components/input-field/input-field.svelte";
|
|
9
|
+
import Label from "./components/label/label.svelte";
|
|
10
|
+
import NumberField from "./components/number-field/number-field.svelte";
|
|
11
|
+
import PasswordField from "./components/password-field/password-field.svelte";
|
|
12
|
+
import PhoneField from "./components/phone-field/phone-field.svelte";
|
|
13
|
+
import RangeField from "./components/range-field/range-field.svelte";
|
|
14
|
+
import SearchField from "./components/search-field/search-field.svelte";
|
|
15
|
+
import TextField from "./components/text-field/text-field.svelte";
|
|
16
|
+
import TextareaField from "./components/textarea-field/textarea-field.svelte";
|
|
17
|
+
import TimeField from "./components/time-field/time-field.svelte";
|
|
18
|
+
export { type InputFieldAppearanceType, type InputFieldPropsType, type InputFieldSizeType };
|
|
19
|
+
export { ColorField, ComboboxField, DateField, DatetimeField, EmailField, FileField, InputField, Label, NumberField, PasswordField, PhoneField, RangeField, SearchField, TextareaField, TextField, TimeField };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {} from "./components/input-field/input-field.svelte";
|
|
2
|
+
import ColorField from "./components/color-field/color-field.svelte";
|
|
3
|
+
import ComboboxField from "./components/combobox-field/combobox-field.svelte";
|
|
4
|
+
import DateField from "./components/date-field/date-field.svelte";
|
|
5
|
+
import DatetimeField from "./components/datetime-field/datetime-field.svelte";
|
|
6
|
+
import EmailField from "./components/email-field/email-field.svelte";
|
|
7
|
+
import FileField from "./components/file-field/file-field.svelte";
|
|
8
|
+
import InputField from "./components/input-field/input-field.svelte";
|
|
9
|
+
import Label from "./components/label/label.svelte";
|
|
10
|
+
import NumberField from "./components/number-field/number-field.svelte";
|
|
11
|
+
import PasswordField from "./components/password-field/password-field.svelte";
|
|
12
|
+
import PhoneField from "./components/phone-field/phone-field.svelte";
|
|
13
|
+
import RangeField from "./components/range-field/range-field.svelte";
|
|
14
|
+
import SearchField from "./components/search-field/search-field.svelte";
|
|
15
|
+
import TextField from "./components/text-field/text-field.svelte";
|
|
16
|
+
import TextareaField from "./components/textarea-field/textarea-field.svelte";
|
|
17
|
+
import TimeField from "./components/time-field/time-field.svelte";
|
|
18
|
+
export {};
|
|
19
|
+
export { ColorField, ComboboxField, DateField, DatetimeField, EmailField, FileField, InputField, Label, NumberField, PasswordField, PhoneField, RangeField, SearchField, TextareaField, TextField, TimeField };
|