@webamoki/web-svelte 0.5.19 → 0.5.21
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/components/form/fields/ChoiceField.svelte +5 -3
- package/dist/components/form/fields/ChoiceField.svelte.d.ts +13 -13
- package/dist/components/form/fields/ChoiceMultiField.svelte +4 -2
- package/dist/components/form/fields/ChoiceMultiField.svelte.d.ts +12 -12
- package/dist/components/ui/choice/Choice.svelte +16 -13
- package/dist/components/ui/choice/Choice.svelte.d.ts +14 -14
- package/dist/components/ui/choice/ChoiceInternal.svelte +32 -21
- package/dist/components/ui/choice/ChoiceInternal.svelte.d.ts +19 -18
- package/dist/components/ui/choice/ChoiceMulti.svelte +17 -14
- package/dist/components/ui/choice/ChoiceMulti.svelte.d.ts +13 -13
- package/dist/components/ui/choice/WeekdayChoice.svelte +1 -1
- package/dist/components/ui/choice/WeekdayChoiceMulti.svelte +2 -2
- package/dist/components/ui/index.d.ts +2 -1
- package/dist/components/ui/index.js +2 -1
- package/dist/components/ui/search/SearchBar.svelte +24 -0
- package/dist/components/ui/search/SearchBar.svelte.d.ts +9 -0
- package/package.json +1 -1
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
<script
|
|
2
2
|
lang="ts"
|
|
3
|
-
generics="V, K extends string | number | symbol,T extends Record<string, unknown>, U extends FormPath<T>, M"
|
|
3
|
+
generics="V,I, K extends string | number | symbol,T extends Record<string, unknown>, U extends FormPath<T>, M"
|
|
4
4
|
>
|
|
5
|
+
import Choice, { type ChoiceProps } from '../../ui/choice/Choice.svelte';
|
|
5
6
|
import type { FormPath } from 'sveltekit-superforms';
|
|
6
7
|
import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
|
|
7
|
-
import Choice, { type ChoiceProps } from '../../ui/choice/Choice.svelte';
|
|
8
8
|
|
|
9
|
-
type Props = FieldWrapperProps<T, U, M> & ChoiceProps<V, K>;
|
|
9
|
+
type Props = FieldWrapperProps<T, U, M> & ChoiceProps<V, I, K>;
|
|
10
10
|
|
|
11
11
|
let {
|
|
12
12
|
items,
|
|
13
13
|
getKey,
|
|
14
14
|
getLabel,
|
|
15
|
+
getValue,
|
|
15
16
|
onChange,
|
|
16
17
|
vertical,
|
|
17
18
|
value = $bindable(undefined),
|
|
@@ -33,6 +34,7 @@
|
|
|
33
34
|
{items}
|
|
34
35
|
{getKey}
|
|
35
36
|
{getLabel}
|
|
37
|
+
{getValue}
|
|
36
38
|
{onChange}
|
|
37
39
|
{buttonContent}
|
|
38
40
|
{vertical}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
+
import { type ChoiceProps } from '../../ui/choice/Choice.svelte';
|
|
1
2
|
import type { FormPath } from 'sveltekit-superforms';
|
|
2
3
|
import { type FieldWrapperProps } from '../FieldWrapper.svelte';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
props: FieldWrapperProps<T, U, M> & ChoiceProps<V, K>;
|
|
4
|
+
declare function $$render<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
|
|
5
|
+
props: FieldWrapperProps<T, U, M> & ChoiceProps<V, I, K>;
|
|
6
6
|
exports: {};
|
|
7
7
|
bindings: "value";
|
|
8
8
|
slots: {};
|
|
9
9
|
events: {};
|
|
10
10
|
};
|
|
11
|
-
declare class __sveltets_Render<V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> {
|
|
12
|
-
props(): ReturnType<typeof $$render<V, K, T, U, M>>['props'];
|
|
13
|
-
events(): ReturnType<typeof $$render<V, K, T, U, M>>['events'];
|
|
14
|
-
slots(): ReturnType<typeof $$render<V, K, T, U, M>>['slots'];
|
|
11
|
+
declare class __sveltets_Render<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> {
|
|
12
|
+
props(): ReturnType<typeof $$render<V, I, K, T, U, M>>['props'];
|
|
13
|
+
events(): ReturnType<typeof $$render<V, I, K, T, U, M>>['events'];
|
|
14
|
+
slots(): ReturnType<typeof $$render<V, I, K, T, U, M>>['slots'];
|
|
15
15
|
bindings(): "value";
|
|
16
16
|
exports(): {};
|
|
17
17
|
}
|
|
18
18
|
interface $$IsomorphicComponent {
|
|
19
|
-
new <V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, K, T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, K, T, U, M>['props']>, ReturnType<__sveltets_Render<V, K, T, U, M>['events']>, ReturnType<__sveltets_Render<V, K, T, U, M>['slots']>> & {
|
|
20
|
-
$$bindings?: ReturnType<__sveltets_Render<V, K, T, U, M>['bindings']>;
|
|
21
|
-
} & ReturnType<__sveltets_Render<V, K, T, U, M>['exports']>;
|
|
22
|
-
<V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<V, K, T, U, M>['props']> & {}): ReturnType<__sveltets_Render<V, K, T, U, M>['exports']>;
|
|
23
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any, any>['bindings']>;
|
|
19
|
+
new <V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, I, K, T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, I, K, T, U, M>['props']>, ReturnType<__sveltets_Render<V, I, K, T, U, M>['events']>, ReturnType<__sveltets_Render<V, I, K, T, U, M>['slots']>> & {
|
|
20
|
+
$$bindings?: ReturnType<__sveltets_Render<V, I, K, T, U, M>['bindings']>;
|
|
21
|
+
} & ReturnType<__sveltets_Render<V, I, K, T, U, M>['exports']>;
|
|
22
|
+
<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<V, I, K, T, U, M>['props']> & {}): ReturnType<__sveltets_Render<V, I, K, T, U, M>['exports']>;
|
|
23
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any, any, any>['bindings']>;
|
|
24
24
|
}
|
|
25
25
|
declare const ChoiceField: $$IsomorphicComponent;
|
|
26
|
-
type ChoiceField<V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof ChoiceField<V, K, T, U, M>>;
|
|
26
|
+
type ChoiceField<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof ChoiceField<V, I, K, T, U, M>>;
|
|
27
27
|
export default ChoiceField;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
<script
|
|
2
2
|
lang="ts"
|
|
3
|
-
generics="V, K extends string | number | symbol,T extends Record<string, unknown>, U extends FormPath<T>, M"
|
|
3
|
+
generics="V,I, K extends string | number | symbol,T extends Record<string, unknown>, U extends FormPath<T>, M"
|
|
4
4
|
>
|
|
5
5
|
import ChoiceMulti, { type ChoiceMultiProps } from '../../ui/choice/ChoiceMulti.svelte';
|
|
6
6
|
import type { FormPath } from 'sveltekit-superforms';
|
|
7
7
|
import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
|
|
8
8
|
|
|
9
|
-
type Props = FieldWrapperProps<T, U, M> & ChoiceMultiProps<V, K>;
|
|
9
|
+
type Props = FieldWrapperProps<T, U, M> & ChoiceMultiProps<V, I, K>;
|
|
10
10
|
let {
|
|
11
11
|
items,
|
|
12
12
|
getKey,
|
|
13
13
|
getLabel,
|
|
14
|
+
getValue,
|
|
14
15
|
onAdd,
|
|
15
16
|
onRemove,
|
|
16
17
|
vertical,
|
|
@@ -33,6 +34,7 @@
|
|
|
33
34
|
{items}
|
|
34
35
|
{getKey}
|
|
35
36
|
{getLabel}
|
|
37
|
+
{getValue}
|
|
36
38
|
{onAdd}
|
|
37
39
|
{onRemove}
|
|
38
40
|
{buttonContent}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { type ChoiceMultiProps } from '../../ui/choice/ChoiceMulti.svelte';
|
|
2
2
|
import type { FormPath } from 'sveltekit-superforms';
|
|
3
3
|
import { type FieldWrapperProps } from '../FieldWrapper.svelte';
|
|
4
|
-
declare function $$render<V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
|
|
5
|
-
props: FieldWrapperProps<T, U, M> & ChoiceMultiProps<V, K>;
|
|
4
|
+
declare function $$render<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
|
|
5
|
+
props: FieldWrapperProps<T, U, M> & ChoiceMultiProps<V, I, K>;
|
|
6
6
|
exports: {};
|
|
7
7
|
bindings: "value";
|
|
8
8
|
slots: {};
|
|
9
9
|
events: {};
|
|
10
10
|
};
|
|
11
|
-
declare class __sveltets_Render<V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> {
|
|
12
|
-
props(): ReturnType<typeof $$render<V, K, T, U, M>>['props'];
|
|
13
|
-
events(): ReturnType<typeof $$render<V, K, T, U, M>>['events'];
|
|
14
|
-
slots(): ReturnType<typeof $$render<V, K, T, U, M>>['slots'];
|
|
11
|
+
declare class __sveltets_Render<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> {
|
|
12
|
+
props(): ReturnType<typeof $$render<V, I, K, T, U, M>>['props'];
|
|
13
|
+
events(): ReturnType<typeof $$render<V, I, K, T, U, M>>['events'];
|
|
14
|
+
slots(): ReturnType<typeof $$render<V, I, K, T, U, M>>['slots'];
|
|
15
15
|
bindings(): "value";
|
|
16
16
|
exports(): {};
|
|
17
17
|
}
|
|
18
18
|
interface $$IsomorphicComponent {
|
|
19
|
-
new <V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, K, T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, K, T, U, M>['props']>, ReturnType<__sveltets_Render<V, K, T, U, M>['events']>, ReturnType<__sveltets_Render<V, K, T, U, M>['slots']>> & {
|
|
20
|
-
$$bindings?: ReturnType<__sveltets_Render<V, K, T, U, M>['bindings']>;
|
|
21
|
-
} & ReturnType<__sveltets_Render<V, K, T, U, M>['exports']>;
|
|
22
|
-
<V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<V, K, T, U, M>['props']> & {}): ReturnType<__sveltets_Render<V, K, T, U, M>['exports']>;
|
|
23
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any, any>['bindings']>;
|
|
19
|
+
new <V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, I, K, T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, I, K, T, U, M>['props']>, ReturnType<__sveltets_Render<V, I, K, T, U, M>['events']>, ReturnType<__sveltets_Render<V, I, K, T, U, M>['slots']>> & {
|
|
20
|
+
$$bindings?: ReturnType<__sveltets_Render<V, I, K, T, U, M>['bindings']>;
|
|
21
|
+
} & ReturnType<__sveltets_Render<V, I, K, T, U, M>['exports']>;
|
|
22
|
+
<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<V, I, K, T, U, M>['props']> & {}): ReturnType<__sveltets_Render<V, I, K, T, U, M>['exports']>;
|
|
23
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any, any, any>['bindings']>;
|
|
24
24
|
}
|
|
25
25
|
declare const ChoiceMultiField: $$IsomorphicComponent;
|
|
26
|
-
type ChoiceMultiField<V, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof ChoiceMultiField<V, K, T, U, M>>;
|
|
26
|
+
type ChoiceMultiField<V, I, K extends string | number | symbol, T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof ChoiceMultiField<V, I, K, T, U, M>>;
|
|
27
27
|
export default ChoiceMultiField;
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
export interface ChoiceProps<V, K extends string | number | symbol>
|
|
3
|
-
extends ChoiceInternalProps<V, K> {
|
|
2
|
+
export interface ChoiceProps<V, I, K extends string | number | symbol>
|
|
3
|
+
extends ChoiceInternalProps<V, I, K> {
|
|
4
4
|
value?: V;
|
|
5
5
|
onChange?: (value: V) => void;
|
|
6
6
|
}
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
|
-
<script lang="ts" generics="V, K extends string | number | symbol">
|
|
10
|
-
import ChoiceInternal, {
|
|
11
|
-
type ChoiceInternalProps as ChoiceInternalProps
|
|
12
|
-
} from './ChoiceInternal.svelte';
|
|
9
|
+
<script lang="ts" generics="V, I, K extends string | number | symbol">
|
|
10
|
+
import ChoiceInternal, { type ChoiceInternalProps } from './ChoiceInternal.svelte';
|
|
13
11
|
|
|
14
|
-
let {
|
|
12
|
+
let {
|
|
13
|
+
value = $bindable(undefined),
|
|
14
|
+
getValue,
|
|
15
|
+
onChange,
|
|
16
|
+
...props
|
|
17
|
+
}: ChoiceProps<V, I, K> = $props();
|
|
15
18
|
|
|
16
|
-
function handleItemClick(item:
|
|
17
|
-
value = item;
|
|
19
|
+
function handleItemClick(item: I) {
|
|
20
|
+
value = getValue(item);
|
|
18
21
|
// Trigger event
|
|
19
|
-
onChange?.(
|
|
22
|
+
onChange?.(value);
|
|
20
23
|
}
|
|
21
24
|
|
|
22
|
-
function isActive(item:
|
|
23
|
-
return value === item;
|
|
25
|
+
function isActive(item: I) {
|
|
26
|
+
return value === getValue(item);
|
|
24
27
|
}
|
|
25
28
|
</script>
|
|
26
29
|
|
|
27
|
-
<ChoiceInternal {handleItemClick} {isActive} {...props} />
|
|
30
|
+
<ChoiceInternal {handleItemClick} {isActive} {getValue} {...props} />
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
export interface ChoiceProps<V, K extends string | number | symbol> extends ChoiceInternalProps<V, K> {
|
|
1
|
+
export interface ChoiceProps<V, I, K extends string | number | symbol> extends ChoiceInternalProps<V, I, K> {
|
|
2
2
|
value?: V;
|
|
3
3
|
onChange?: (value: V) => void;
|
|
4
4
|
}
|
|
5
|
-
import { type ChoiceInternalProps
|
|
6
|
-
declare function $$render<V, K extends string | number | symbol>(): {
|
|
7
|
-
props: ChoiceProps<V, K>;
|
|
5
|
+
import { type ChoiceInternalProps } from './ChoiceInternal.svelte';
|
|
6
|
+
declare function $$render<V, I, K extends string | number | symbol>(): {
|
|
7
|
+
props: ChoiceProps<V, I, K>;
|
|
8
8
|
exports: {};
|
|
9
9
|
bindings: "value";
|
|
10
10
|
slots: {};
|
|
11
11
|
events: {};
|
|
12
12
|
};
|
|
13
|
-
declare class __sveltets_Render<V, K extends string | number | symbol> {
|
|
14
|
-
props(): ReturnType<typeof $$render<V, K>>['props'];
|
|
15
|
-
events(): ReturnType<typeof $$render<V, K>>['events'];
|
|
16
|
-
slots(): ReturnType<typeof $$render<V, K>>['slots'];
|
|
13
|
+
declare class __sveltets_Render<V, I, K extends string | number | symbol> {
|
|
14
|
+
props(): ReturnType<typeof $$render<V, I, K>>['props'];
|
|
15
|
+
events(): ReturnType<typeof $$render<V, I, K>>['events'];
|
|
16
|
+
slots(): ReturnType<typeof $$render<V, I, K>>['slots'];
|
|
17
17
|
bindings(): "value";
|
|
18
18
|
exports(): {};
|
|
19
19
|
}
|
|
20
20
|
interface $$IsomorphicComponent {
|
|
21
|
-
new <V, K extends string | number | symbol>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, K>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, K>['props']>, ReturnType<__sveltets_Render<V, K>['events']>, ReturnType<__sveltets_Render<V, K>['slots']>> & {
|
|
22
|
-
$$bindings?: ReturnType<__sveltets_Render<V, K>['bindings']>;
|
|
23
|
-
} & ReturnType<__sveltets_Render<V, K>['exports']>;
|
|
24
|
-
<V, K extends string | number | symbol>(internal: unknown, props: ReturnType<__sveltets_Render<V, K>['props']> & {}): ReturnType<__sveltets_Render<V, K>['exports']>;
|
|
25
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
21
|
+
new <V, I, K extends string | number | symbol>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, I, K>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, I, K>['props']>, ReturnType<__sveltets_Render<V, I, K>['events']>, ReturnType<__sveltets_Render<V, I, K>['slots']>> & {
|
|
22
|
+
$$bindings?: ReturnType<__sveltets_Render<V, I, K>['bindings']>;
|
|
23
|
+
} & ReturnType<__sveltets_Render<V, I, K>['exports']>;
|
|
24
|
+
<V, I, K extends string | number | symbol>(internal: unknown, props: ReturnType<__sveltets_Render<V, I, K>['props']> & {}): ReturnType<__sveltets_Render<V, I, K>['exports']>;
|
|
25
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
26
26
|
}
|
|
27
27
|
declare const Choice: $$IsomorphicComponent;
|
|
28
|
-
type Choice<V, K extends string | number | symbol> = InstanceType<typeof Choice<V, K>>;
|
|
28
|
+
type Choice<V, I, K extends string | number | symbol> = InstanceType<typeof Choice<V, I, K>>;
|
|
29
29
|
export default Choice;
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
export interface ChoiceInternalProps<
|
|
2
|
+
export interface ChoiceInternalProps<V, I, K extends string | number | symbol>
|
|
3
3
|
extends Partial<FormAttrs> {
|
|
4
|
-
items: readonly
|
|
5
|
-
getKey: (item:
|
|
6
|
-
getLabel: (item:
|
|
4
|
+
items: readonly I[];
|
|
5
|
+
getKey: (item: I) => K;
|
|
6
|
+
getLabel: (item: I) => string;
|
|
7
|
+
getValue: (item: I) => V;
|
|
7
8
|
vertical?: boolean;
|
|
8
9
|
buttonContent?: Snippet<[label: string]>;
|
|
9
10
|
}
|
|
10
11
|
</script>
|
|
11
12
|
|
|
12
|
-
<script lang="ts" generics="
|
|
13
|
+
<script lang="ts" generics="V, I, K extends string | number | symbol">
|
|
13
14
|
import type { FormAttrs } from '../../form/FieldWrapper.svelte';
|
|
14
15
|
import { cn } from '../../../shadcn/utils.js';
|
|
15
16
|
import type { Snippet } from 'svelte';
|
|
16
17
|
|
|
17
|
-
interface Props extends ChoiceInternalProps<
|
|
18
|
-
handleItemClick: (item:
|
|
19
|
-
isActive: (item:
|
|
18
|
+
interface Props extends ChoiceInternalProps<V, I, K> {
|
|
19
|
+
handleItemClick: (item: I) => void;
|
|
20
|
+
isActive: (item: I) => boolean;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
let {
|
|
@@ -46,20 +47,30 @@
|
|
|
46
47
|
)}
|
|
47
48
|
>
|
|
48
49
|
{#each items as item (getKey(item))}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
50
|
+
{#if buttonContent}
|
|
51
|
+
<button
|
|
52
|
+
type="button"
|
|
53
|
+
onclick={() => {
|
|
54
|
+
if (disabled || readonly) return;
|
|
55
|
+
handleItemClick(item);
|
|
56
|
+
}}
|
|
57
|
+
data-state={isActive(item) ? 'active' : 'inactive'}
|
|
58
|
+
class="cursor-pointer rounded-lg bg-transparent text-muted-foreground hover:text-foreground hover:outline-2 focus-visible:outline-ring data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm"
|
|
59
|
+
>
|
|
59
60
|
{@render buttonContent(getLabel(item))}
|
|
60
|
-
|
|
61
|
+
</button>
|
|
62
|
+
{:else}
|
|
63
|
+
<button
|
|
64
|
+
type="button"
|
|
65
|
+
onclick={() => {
|
|
66
|
+
if (disabled || readonly) return;
|
|
67
|
+
handleItemClick(item);
|
|
68
|
+
}}
|
|
69
|
+
data-state={isActive(item) ? 'active' : 'inactive'}
|
|
70
|
+
class="h-8 cursor-pointer rounded-lg bg-transparent p-2 text-muted-foreground hover:text-foreground hover:outline-2 focus-visible:outline-ring data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm"
|
|
71
|
+
>
|
|
61
72
|
{getLabel(item)}
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
</button>
|
|
74
|
+
{/if}
|
|
64
75
|
{/each}
|
|
65
76
|
</div>
|
|
@@ -1,36 +1,37 @@
|
|
|
1
|
-
export interface ChoiceInternalProps<
|
|
2
|
-
items: readonly
|
|
3
|
-
getKey: (item:
|
|
4
|
-
getLabel: (item:
|
|
1
|
+
export interface ChoiceInternalProps<V, I, K extends string | number | symbol> extends Partial<FormAttrs> {
|
|
2
|
+
items: readonly I[];
|
|
3
|
+
getKey: (item: I) => K;
|
|
4
|
+
getLabel: (item: I) => string;
|
|
5
|
+
getValue: (item: I) => V;
|
|
5
6
|
vertical?: boolean;
|
|
6
7
|
buttonContent?: Snippet<[label: string]>;
|
|
7
8
|
}
|
|
8
9
|
import type { FormAttrs } from '../../form/FieldWrapper.svelte';
|
|
9
10
|
import type { Snippet } from 'svelte';
|
|
10
|
-
declare function $$render<
|
|
11
|
-
props: ChoiceInternalProps<
|
|
12
|
-
handleItemClick: (item:
|
|
13
|
-
isActive: (item:
|
|
11
|
+
declare function $$render<V, I, K extends string | number | symbol>(): {
|
|
12
|
+
props: ChoiceInternalProps<V, I, K> & {
|
|
13
|
+
handleItemClick: (item: I) => void;
|
|
14
|
+
isActive: (item: I) => boolean;
|
|
14
15
|
};
|
|
15
16
|
exports: {};
|
|
16
17
|
bindings: "";
|
|
17
18
|
slots: {};
|
|
18
19
|
events: {};
|
|
19
20
|
};
|
|
20
|
-
declare class __sveltets_Render<
|
|
21
|
-
props(): ReturnType<typeof $$render<
|
|
22
|
-
events(): ReturnType<typeof $$render<
|
|
23
|
-
slots(): ReturnType<typeof $$render<
|
|
21
|
+
declare class __sveltets_Render<V, I, K extends string | number | symbol> {
|
|
22
|
+
props(): ReturnType<typeof $$render<V, I, K>>['props'];
|
|
23
|
+
events(): ReturnType<typeof $$render<V, I, K>>['events'];
|
|
24
|
+
slots(): ReturnType<typeof $$render<V, I, K>>['slots'];
|
|
24
25
|
bindings(): "";
|
|
25
26
|
exports(): {};
|
|
26
27
|
}
|
|
27
28
|
interface $$IsomorphicComponent {
|
|
28
|
-
new <
|
|
29
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
30
|
-
} & ReturnType<__sveltets_Render<
|
|
31
|
-
<
|
|
32
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
29
|
+
new <V, I, K extends string | number | symbol>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, I, K>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, I, K>['props']>, ReturnType<__sveltets_Render<V, I, K>['events']>, ReturnType<__sveltets_Render<V, I, K>['slots']>> & {
|
|
30
|
+
$$bindings?: ReturnType<__sveltets_Render<V, I, K>['bindings']>;
|
|
31
|
+
} & ReturnType<__sveltets_Render<V, I, K>['exports']>;
|
|
32
|
+
<V, I, K extends string | number | symbol>(internal: unknown, props: ReturnType<__sveltets_Render<V, I, K>['props']> & {}): ReturnType<__sveltets_Render<V, I, K>['exports']>;
|
|
33
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
33
34
|
}
|
|
34
35
|
declare const ChoiceInternal: $$IsomorphicComponent;
|
|
35
|
-
type ChoiceInternal<
|
|
36
|
+
type ChoiceInternal<V, I, K extends string | number | symbol> = InstanceType<typeof ChoiceInternal<V, I, K>>;
|
|
36
37
|
export default ChoiceInternal;
|
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
export interface ChoiceMultiProps<V, K extends string | number | symbol>
|
|
3
|
-
extends ChoiceInternalProps<V, K> {
|
|
2
|
+
export interface ChoiceMultiProps<V, I, K extends string | number | symbol>
|
|
3
|
+
extends ChoiceInternalProps<V, I, K> {
|
|
4
4
|
value: V[];
|
|
5
5
|
onAdd?: (value: V) => void;
|
|
6
6
|
onRemove?: (value: V) => void;
|
|
7
7
|
}
|
|
8
8
|
</script>
|
|
9
9
|
|
|
10
|
-
<script lang="ts" generics="V, K extends string | number | symbol">
|
|
11
|
-
import ChoiceInternal, { type ChoiceInternalProps } from './ChoiceInternal.svelte';
|
|
10
|
+
<script lang="ts" generics="V,I, K extends string | number | symbol">
|
|
12
11
|
import * as sorted from 'sorted-array-functions';
|
|
12
|
+
import ChoiceInternal, { type ChoiceInternalProps } from './ChoiceInternal.svelte';
|
|
13
13
|
|
|
14
14
|
let {
|
|
15
15
|
value = $bindable([]),
|
|
16
16
|
onAdd,
|
|
17
17
|
onRemove,
|
|
18
|
+
getValue,
|
|
18
19
|
items,
|
|
19
20
|
...props
|
|
20
|
-
}: ChoiceMultiProps<V, K> = $props();
|
|
21
|
+
}: ChoiceMultiProps<V, I, K> = $props();
|
|
21
22
|
|
|
22
|
-
const valueIndex = new Map<V, number>(
|
|
23
|
+
const valueIndex = new Map<V, number>(
|
|
24
|
+
items.map((item, index) => [getValue(item), index] as const)
|
|
25
|
+
);
|
|
23
26
|
|
|
24
27
|
function compareItems(a: V, b: V) {
|
|
25
28
|
const index1 = valueIndex.get(a);
|
|
@@ -30,21 +33,21 @@
|
|
|
30
33
|
return Math.sign(index1 - index2) as -1 | 0 | 1;
|
|
31
34
|
}
|
|
32
35
|
|
|
33
|
-
function contains(item:
|
|
36
|
+
function contains(item: I) {
|
|
34
37
|
// Sorted contains function
|
|
35
|
-
return sorted.has(value, item, compareItems);
|
|
38
|
+
return sorted.has(value, getValue(item), compareItems);
|
|
36
39
|
}
|
|
37
40
|
|
|
38
|
-
function handleItemClick(item:
|
|
41
|
+
function handleItemClick(item: I) {
|
|
39
42
|
// Toggle add or remove
|
|
40
43
|
if (!contains(item)) {
|
|
41
|
-
sorted.add(value, item, compareItems);
|
|
44
|
+
sorted.add(value, getValue(item), compareItems);
|
|
42
45
|
// Trigger event
|
|
43
|
-
onAdd?.(item);
|
|
46
|
+
onAdd?.(getValue(item));
|
|
44
47
|
} else {
|
|
45
|
-
sorted.remove(value, item, compareItems);
|
|
48
|
+
sorted.remove(value, getValue(item), compareItems);
|
|
46
49
|
// Trigger event
|
|
47
|
-
onRemove?.(item);
|
|
50
|
+
onRemove?.(getValue(item));
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
// Re-assign value to trigger state update
|
|
@@ -52,4 +55,4 @@
|
|
|
52
55
|
}
|
|
53
56
|
</script>
|
|
54
57
|
|
|
55
|
-
<ChoiceInternal {handleItemClick} isActive={contains} {items} {...props} />
|
|
58
|
+
<ChoiceInternal {handleItemClick} {getValue} isActive={contains} {items} {...props} />
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
export interface ChoiceMultiProps<V, K extends string | number | symbol> extends ChoiceInternalProps<V, K> {
|
|
1
|
+
export interface ChoiceMultiProps<V, I, K extends string | number | symbol> extends ChoiceInternalProps<V, I, K> {
|
|
2
2
|
value: V[];
|
|
3
3
|
onAdd?: (value: V) => void;
|
|
4
4
|
onRemove?: (value: V) => void;
|
|
5
5
|
}
|
|
6
6
|
import { type ChoiceInternalProps } from './ChoiceInternal.svelte';
|
|
7
|
-
declare function $$render<V, K extends string | number | symbol>(): {
|
|
8
|
-
props: ChoiceMultiProps<V, K>;
|
|
7
|
+
declare function $$render<V, I, K extends string | number | symbol>(): {
|
|
8
|
+
props: ChoiceMultiProps<V, I, K>;
|
|
9
9
|
exports: {};
|
|
10
10
|
bindings: "value";
|
|
11
11
|
slots: {};
|
|
12
12
|
events: {};
|
|
13
13
|
};
|
|
14
|
-
declare class __sveltets_Render<V, K extends string | number | symbol> {
|
|
15
|
-
props(): ReturnType<typeof $$render<V, K>>['props'];
|
|
16
|
-
events(): ReturnType<typeof $$render<V, K>>['events'];
|
|
17
|
-
slots(): ReturnType<typeof $$render<V, K>>['slots'];
|
|
14
|
+
declare class __sveltets_Render<V, I, K extends string | number | symbol> {
|
|
15
|
+
props(): ReturnType<typeof $$render<V, I, K>>['props'];
|
|
16
|
+
events(): ReturnType<typeof $$render<V, I, K>>['events'];
|
|
17
|
+
slots(): ReturnType<typeof $$render<V, I, K>>['slots'];
|
|
18
18
|
bindings(): "value";
|
|
19
19
|
exports(): {};
|
|
20
20
|
}
|
|
21
21
|
interface $$IsomorphicComponent {
|
|
22
|
-
new <V, K extends string | number | symbol>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, K>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, K>['props']>, ReturnType<__sveltets_Render<V, K>['events']>, ReturnType<__sveltets_Render<V, K>['slots']>> & {
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<V, K>['bindings']>;
|
|
24
|
-
} & ReturnType<__sveltets_Render<V, K>['exports']>;
|
|
25
|
-
<V, K extends string | number | symbol>(internal: unknown, props: ReturnType<__sveltets_Render<V, K>['props']> & {}): ReturnType<__sveltets_Render<V, K>['exports']>;
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
22
|
+
new <V, I, K extends string | number | symbol>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, I, K>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, I, K>['props']>, ReturnType<__sveltets_Render<V, I, K>['events']>, ReturnType<__sveltets_Render<V, I, K>['slots']>> & {
|
|
23
|
+
$$bindings?: ReturnType<__sveltets_Render<V, I, K>['bindings']>;
|
|
24
|
+
} & ReturnType<__sveltets_Render<V, I, K>['exports']>;
|
|
25
|
+
<V, I, K extends string | number | symbol>(internal: unknown, props: ReturnType<__sveltets_Render<V, I, K>['props']> & {}): ReturnType<__sveltets_Render<V, I, K>['exports']>;
|
|
26
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
27
27
|
}
|
|
28
28
|
declare const ChoiceMulti: $$IsomorphicComponent;
|
|
29
|
-
type ChoiceMulti<V, K extends string | number | symbol> = InstanceType<typeof ChoiceMulti<V, K>>;
|
|
29
|
+
type ChoiceMulti<V, I, K extends string | number | symbol> = InstanceType<typeof ChoiceMulti<V, I, K>>;
|
|
30
30
|
export default ChoiceMulti;
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
16
|
<script lang="ts">
|
|
17
|
-
import ChoiceMulti from './ChoiceMulti.svelte';
|
|
18
17
|
import { Days, formatDayLetter, formatDayShort, type Day } from '../../../utils/index.js';
|
|
18
|
+
import ChoiceMulti from './ChoiceMulti.svelte';
|
|
19
19
|
|
|
20
20
|
let { value = $bindable([]), ...props }: WeekdayChoiceMultiProps = $props();
|
|
21
21
|
|
|
@@ -26,4 +26,4 @@
|
|
|
26
26
|
});
|
|
27
27
|
</script>
|
|
28
28
|
|
|
29
|
-
<ChoiceMulti items={Days} bind:value {getLabel} getKey={identity} {...props} />
|
|
29
|
+
<ChoiceMulti items={Days} bind:value {getLabel} getKey={identity} getValue={identity} {...props} />
|
|
@@ -2,4 +2,5 @@ import Choice from './choice/Choice.svelte';
|
|
|
2
2
|
import ChoiceMulti from './choice/ChoiceMulti.svelte';
|
|
3
3
|
import WeekdayChoice from './choice/WeekdayChoice.svelte';
|
|
4
4
|
import WeekdayChoiceMulti from './choice/WeekdayChoiceMulti.svelte';
|
|
5
|
-
|
|
5
|
+
import SearchBar from './search/SearchBar.svelte';
|
|
6
|
+
export { Choice, ChoiceMulti, SearchBar, WeekdayChoice, WeekdayChoiceMulti };
|
|
@@ -2,4 +2,5 @@ import Choice from './choice/Choice.svelte';
|
|
|
2
2
|
import ChoiceMulti from './choice/ChoiceMulti.svelte';
|
|
3
3
|
import WeekdayChoice from './choice/WeekdayChoice.svelte';
|
|
4
4
|
import WeekdayChoiceMulti from './choice/WeekdayChoiceMulti.svelte';
|
|
5
|
-
|
|
5
|
+
import SearchBar from './search/SearchBar.svelte';
|
|
6
|
+
export { Choice, ChoiceMulti, SearchBar, WeekdayChoice, WeekdayChoiceMulti };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Input from '../../../shadcn/components/ui/input/input.svelte';
|
|
3
|
+
import { cn } from '../../../shadcn/utils.js';
|
|
4
|
+
import { Search } from '@lucide/svelte';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
defaultValue?: string;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
onChange: (value: string) => void;
|
|
10
|
+
class?: string;
|
|
11
|
+
}
|
|
12
|
+
let { defaultValue, placeholder, onChange, class: className }: Props = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<div class="relative w-full max-w-sm">
|
|
16
|
+
<Search class="absolute top-2.5 left-2.5 h-4 w-4 text-muted-foreground" />
|
|
17
|
+
<Input
|
|
18
|
+
type="search"
|
|
19
|
+
{placeholder}
|
|
20
|
+
value={defaultValue}
|
|
21
|
+
oninput={(e: Event & { currentTarget: HTMLInputElement }) => onChange(e.currentTarget.value)}
|
|
22
|
+
class={cn('w-full pl-9', className)}
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
defaultValue?: string;
|
|
3
|
+
placeholder?: string;
|
|
4
|
+
onChange: (value: string) => void;
|
|
5
|
+
class?: string;
|
|
6
|
+
}
|
|
7
|
+
declare const SearchBar: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type SearchBar = ReturnType<typeof SearchBar>;
|
|
9
|
+
export default SearchBar;
|