@svelte-atoms/core 1.0.0-alpha.25 → 1.0.0-alpha.26
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/README.md +645 -645
- package/dist/components/accordion/accordion-root.svelte +1 -1
- package/dist/components/accordion/item/accordion-item-body.svelte +1 -1
- package/dist/components/accordion/item/accordion-item-header.svelte +5 -1
- package/dist/components/accordion/item/accordion-item-indicator.svelte +1 -1
- package/dist/components/accordion/item/accordion-item-root.svelte +1 -1
- package/dist/components/alert/alert-actions.svelte +1 -1
- package/dist/components/alert/alert-close-button.svelte +1 -1
- package/dist/components/alert/alert-content.svelte +1 -1
- package/dist/components/alert/alert-description.svelte +1 -1
- package/dist/components/alert/alert-icon.svelte +1 -1
- package/dist/components/alert/alert-root.svelte +1 -1
- package/dist/components/alert/alert-title.svelte +1 -1
- package/dist/components/atom/html-atom.svelte +201 -217
- package/dist/components/badge/badge.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb-item.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb-root.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb-separator.svelte +1 -1
- package/dist/components/button/button.stories.svelte +57 -57
- package/dist/components/button/button.svelte +1 -1
- package/dist/components/button/button.svelte.d.ts +4 -1
- package/dist/components/button/types.d.ts +1 -1
- package/dist/components/card/card-body.svelte +1 -1
- package/dist/components/card/card-description.svelte +1 -1
- package/dist/components/card/card-footer.svelte +1 -1
- package/dist/components/card/card-header.svelte +1 -1
- package/dist/components/card/card-media.svelte +1 -1
- package/dist/components/card/card-subtitle.svelte +1 -1
- package/dist/components/card/card-title.svelte +5 -1
- package/dist/components/checkbox/checkbox.svelte +39 -28
- package/dist/components/collapsible/collapsible-body.svelte +1 -1
- package/dist/components/collapsible/collapsible-header.svelte +1 -1
- package/dist/components/collapsible/collapsible-indicator.svelte +1 -1
- package/dist/components/collapsible/collapsible-root.svelte +1 -1
- package/dist/components/combobox/atoms.d.ts +5 -1
- package/dist/components/combobox/atoms.js +5 -1
- package/dist/components/combobox/{combobox-input.svelte → combobox-control.svelte} +3 -3
- package/dist/components/combobox/{combobox-input.svelte.d.ts → combobox-control.svelte.d.ts} +3 -3
- package/dist/components/combobox/combobox-trigger.svelte +1 -1
- package/dist/components/combobox/compobox-item.svelte +1 -1
- package/dist/components/container/container.svelte +1 -1
- package/dist/components/datagrid/datagrid-body.svelte +1 -1
- package/dist/components/datagrid/datagrid-footer.svelte +1 -1
- package/dist/components/datagrid/datagrid-header.svelte +1 -1
- package/dist/components/datagrid/datagrid-root.svelte +1 -1
- package/dist/components/datagrid/datagrid.stories.svelte +75 -75
- package/dist/components/datagrid/td/datagrid-td.svelte +1 -1
- package/dist/components/datagrid/th/datagrid-th-sort-icon.svelte +1 -1
- package/dist/components/datagrid/th/datagrid-th.svelte +1 -1
- package/dist/components/dialog/dialog-body.svelte +1 -1
- package/dist/components/dialog/dialog-close-button.svelte +1 -1
- package/dist/components/dialog/dialog-content.svelte +8 -11
- package/dist/components/dialog/dialog-description.svelte +1 -1
- package/dist/components/dialog/dialog-footer.svelte +1 -1
- package/dist/components/dialog/dialog-header.svelte +1 -1
- package/dist/components/dialog/dialog-root.svelte +123 -120
- package/dist/components/dialog/dialog-root.svelte.d.ts +3 -1
- package/dist/components/dialog/dialog-title.svelte +1 -1
- package/dist/components/drawer/drawer-backdrop.svelte +1 -1
- package/dist/components/drawer/drawer-body.svelte +1 -1
- package/dist/components/drawer/drawer-description.svelte +1 -1
- package/dist/components/drawer/drawer-footer.svelte +1 -1
- package/dist/components/drawer/drawer-header.svelte +1 -1
- package/dist/components/drawer/drawer-root.svelte +118 -113
- package/dist/components/drawer/drawer-root.svelte.d.ts +5 -2
- package/dist/components/drawer/drawer-title.svelte +1 -1
- package/dist/components/dropdown/dropdown-placeholder.svelte +1 -1
- package/dist/components/dropdown/dropdown-query.svelte +1 -1
- package/dist/components/dropdown/dropdown-trigger.svelte +1 -1
- package/dist/components/dropdown/dropdown-value.svelte +1 -3
- package/dist/components/dropdown/item/bond.svelte.d.ts +4 -0
- package/dist/components/dropdown/item/bond.svelte.js +9 -0
- package/dist/components/dropdown/item/dropdown-item.svelte +10 -6
- package/dist/components/form/field/bond.svelte.d.ts +8 -0
- package/dist/components/form/field/bond.svelte.js +13 -1
- package/dist/components/form/field/field-control.svelte +7 -0
- package/dist/components/form/field/field-control.svelte.d.ts +2 -2
- package/dist/components/form/form.stories.svelte +3 -3
- package/dist/components/input/atoms.d.ts +5 -1
- package/dist/components/input/atoms.js +5 -1
- package/dist/components/input/{input-value.svelte → input-control.svelte} +107 -113
- package/dist/components/input/input-control.svelte.d.ts +27 -0
- package/dist/components/input/input-icon.svelte +1 -1
- package/dist/components/input/input-placeholder.svelte +54 -56
- package/dist/components/input/input-root.svelte +5 -12
- package/dist/components/input/input-root.svelte.d.ts +3 -20
- package/dist/components/input/input.stories.svelte +2 -2
- package/dist/components/input/types.d.ts +22 -0
- package/dist/components/input/types.js +1 -0
- package/dist/components/list/list-group.svelte +1 -1
- package/dist/components/list/list-item.svelte +1 -1
- package/dist/components/list/list-root.svelte +6 -1
- package/dist/components/list/list-title.svelte +1 -1
- package/dist/components/menu/menu-list.svelte +1 -1
- package/dist/components/popover/bond.svelte.d.ts +2 -0
- package/dist/components/popover/bond.svelte.js +1 -1
- package/dist/components/popover/popover-arrow.svelte +111 -117
- package/dist/components/popover/popover-arrow.svelte.d.ts +1 -2
- package/dist/components/popover/popover-content.svelte +139 -147
- package/dist/components/popover/popover-content.svelte.d.ts +3 -17
- package/dist/components/popover/popover-indicator.svelte +1 -1
- package/dist/components/popover/popover-root.svelte +49 -63
- package/dist/components/popover/popover-root.svelte.d.ts +1 -15
- package/dist/components/popover/popover-trigger.svelte +47 -56
- package/dist/components/popover/popover-trigger.svelte.d.ts +2 -8
- package/dist/components/popover/types.d.ts +39 -0
- package/dist/components/popover/types.js +1 -0
- package/dist/components/portal/active-portal.svelte +22 -16
- package/dist/components/portal/active-portal.svelte.d.ts +2 -2
- package/dist/components/portal/portal-inner.svelte +1 -1
- package/dist/components/portal/portal-root.svelte +1 -1
- package/dist/components/portal/teleport.svelte +55 -49
- package/dist/components/portal/teleport.svelte.d.ts +3 -2
- package/dist/components/radio/radio-group.stories.svelte +4 -4
- package/dist/components/radio/radio.svelte +3 -3
- package/dist/components/root/root.css +24 -66
- package/dist/components/root/root.svelte +1 -1
- package/dist/components/sidebar/sidebar-content.svelte +2 -16
- package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -9
- package/dist/components/sidebar/sidebar-root.svelte +4 -23
- package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -13
- package/dist/components/sidebar/types.d.ts +19 -0
- package/dist/components/sidebar/types.js +1 -0
- package/dist/components/stack/stack-item.svelte +5 -1
- package/dist/components/stack/stack-root.svelte +5 -1
- package/dist/components/tabs/tab/tab-body.svelte +1 -1
- package/dist/components/tabs/tab/tab-description.svelte +1 -1
- package/dist/components/tabs/tab/tab-header.svelte +2 -2
- package/dist/components/tabs/tab/tab-root.svelte +6 -1
- package/dist/components/tabs/tabs-body.svelte +1 -1
- package/dist/components/tabs/tabs-header.svelte +1 -1
- package/dist/components/tabs/tabs-root.svelte +1 -1
- package/dist/components/textarea/textarea-input.svelte +2 -1
- package/dist/components/toast/toast-description.svelte +1 -1
- package/dist/components/toast/toast-root.svelte +1 -1
- package/dist/components/toast/toast-title.svelte +1 -1
- package/dist/components/tree/tree-body.svelte +1 -1
- package/dist/components/tree/tree-header.svelte +1 -1
- package/dist/components/tree/tree-indicator.svelte +1 -1
- package/dist/components/tree/tree-root.svelte +1 -1
- package/dist/context/preset.svelte.d.ts +1 -1
- package/llm/composition.md +395 -395
- package/llm/crafting.md +838 -838
- package/llm/motion.md +970 -970
- package/llm/philosophy.md +23 -23
- package/llm/preset-variant-integration.md +516 -516
- package/llm/preset.md +383 -383
- package/llm/styling.md +216 -216
- package/llm/usage.md +46 -46
- package/llm/variants.md +712 -712
- package/package.json +437 -437
- package/dist/components/input/input-value.svelte.d.ts +0 -19
|
@@ -1,113 +1,118 @@
|
|
|
1
|
-
<script module lang="ts">
|
|
2
|
-
import type { Factory } from '../../types';
|
|
3
|
-
|
|
4
|
-
export type SlideoverRootProps<
|
|
5
|
-
E extends keyof HTMLElementTagNameMap,
|
|
6
|
-
B extends Base = Base
|
|
7
|
-
> = Override<
|
|
8
|
-
HtmlAtomProps<E, B>,
|
|
9
|
-
{
|
|
10
|
-
children?: Snippet<[{
|
|
11
|
-
initial?: (node: HTMLElement, bond: DrawerBond) => void;
|
|
12
|
-
enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
|
|
13
|
-
exit?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
|
|
14
|
-
}
|
|
15
|
-
> & {
|
|
16
|
-
open?: boolean;
|
|
17
|
-
disabled?: boolean;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
import type {
|
|
26
|
-
import type {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import
|
|
30
|
-
import
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
type
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
{
|
|
111
|
-
|
|
112
|
-
{
|
|
113
|
-
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Factory } from '../../types';
|
|
3
|
+
|
|
4
|
+
export type SlideoverRootProps<
|
|
5
|
+
E extends keyof HTMLElementTagNameMap,
|
|
6
|
+
B extends Base = Base
|
|
7
|
+
> = Override<
|
|
8
|
+
HtmlAtomProps<E, B>,
|
|
9
|
+
{
|
|
10
|
+
children?: Snippet<[{ drawer: DrawerBond }]>;
|
|
11
|
+
initial?: (node: HTMLElement, bond: DrawerBond) => void;
|
|
12
|
+
enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
|
|
13
|
+
exit?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
|
|
14
|
+
}
|
|
15
|
+
> & {
|
|
16
|
+
open?: boolean;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
portal?: string | PortalBond;
|
|
19
|
+
onclose?: (event: Event, bond: DrawerBond) => void;
|
|
20
|
+
factory?: Factory<DrawerBond>;
|
|
21
|
+
};
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap='dialog', B extends Base = Base">
|
|
25
|
+
import type { Snippet } from 'svelte';
|
|
26
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
27
|
+
import type { Override } from '../../types';
|
|
28
|
+
import { defineProperty, defineState } from '../../utils';
|
|
29
|
+
import { type TransitionFunction } from '../element';
|
|
30
|
+
import Teleport from '../portal/teleport.svelte';
|
|
31
|
+
import type { HtmlAtomProps, Base } from '../atom';
|
|
32
|
+
import { DrawerBond, DrawerBondState, type DrawerBondProps } from './bond.svelte';
|
|
33
|
+
import { ActivePortal, type PortalBond } from '../portal';
|
|
34
|
+
|
|
35
|
+
type Element = HTMLElementTagNameMap[E];
|
|
36
|
+
|
|
37
|
+
let {
|
|
38
|
+
open = $bindable(false),
|
|
39
|
+
children = undefined,
|
|
40
|
+
class: klass = '',
|
|
41
|
+
as = 'dialog',
|
|
42
|
+
disabled = false,
|
|
43
|
+
portal = undefined,
|
|
44
|
+
onclose = undefined,
|
|
45
|
+
onmount = undefined,
|
|
46
|
+
ondestroy = undefined,
|
|
47
|
+
animate = undefined,
|
|
48
|
+
enter = undefined,
|
|
49
|
+
exit = undefined,
|
|
50
|
+
initial = undefined,
|
|
51
|
+
factory = _factory,
|
|
52
|
+
...restProps
|
|
53
|
+
}: SlideoverRootProps<E, B> & HTMLAttributes<Element> = $props();
|
|
54
|
+
|
|
55
|
+
const bondProps = defineState<DrawerBondProps>(
|
|
56
|
+
[
|
|
57
|
+
defineProperty(
|
|
58
|
+
'open',
|
|
59
|
+
() => open,
|
|
60
|
+
(v) => {
|
|
61
|
+
open = v;
|
|
62
|
+
}
|
|
63
|
+
),
|
|
64
|
+
defineProperty('disabled', () => disabled)
|
|
65
|
+
],
|
|
66
|
+
() => ({})
|
|
67
|
+
);
|
|
68
|
+
const bond = _factory(bondProps).share();
|
|
69
|
+
|
|
70
|
+
const rootProps = $derived({
|
|
71
|
+
...bond?.root(),
|
|
72
|
+
...restProps
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
$effect(() => {
|
|
76
|
+
if (bond.elements.root instanceof HTMLDialogElement) {
|
|
77
|
+
if (open) {
|
|
78
|
+
bond.elements.root?.show?.();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
function _factory(props: typeof bondProps) {
|
|
84
|
+
const bondState = new DrawerBondState(() => props);
|
|
85
|
+
const bond = new DrawerBond(bondState);
|
|
86
|
+
|
|
87
|
+
return bond;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function getBond() {
|
|
91
|
+
return bond;
|
|
92
|
+
}
|
|
93
|
+
</script>
|
|
94
|
+
|
|
95
|
+
<Teleport
|
|
96
|
+
{as}
|
|
97
|
+
{bond}
|
|
98
|
+
portal={portal ?? 'root.l1'}
|
|
99
|
+
preset="drawer"
|
|
100
|
+
class={[
|
|
101
|
+
'border-border pointer-events-auto h-full w-full overflow-hidden bg-transparent',
|
|
102
|
+
!open && 'pointer-events-none',
|
|
103
|
+
'$preset',
|
|
104
|
+
klass
|
|
105
|
+
]}
|
|
106
|
+
closeby="none"
|
|
107
|
+
onmount={onmount?.bind(bond.state)}
|
|
108
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
109
|
+
enter={enter?.bind(bond.state)}
|
|
110
|
+
exit={exit?.bind(bond.state)}
|
|
111
|
+
initial={initial?.bind(bond.state)}
|
|
112
|
+
animate={animate?.bind(bond.state)}
|
|
113
|
+
{...rootProps}
|
|
114
|
+
>
|
|
115
|
+
<ActivePortal portal={portal ?? 'root.l1'}>
|
|
116
|
+
{@render children?.({ drawer: bond })}
|
|
117
|
+
</ActivePortal>
|
|
118
|
+
</Teleport>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Factory } from '../../types';
|
|
2
2
|
export type SlideoverRootProps<E extends keyof HTMLElementTagNameMap, B extends Base = Base> = Override<HtmlAtomProps<E, B>, {
|
|
3
3
|
children?: Snippet<[{
|
|
4
|
-
|
|
4
|
+
drawer: DrawerBond;
|
|
5
5
|
}]>;
|
|
6
6
|
initial?: (node: HTMLElement, bond: DrawerBond) => void;
|
|
7
7
|
enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
|
|
@@ -9,6 +9,7 @@ export type SlideoverRootProps<E extends keyof HTMLElementTagNameMap, B extends
|
|
|
9
9
|
}> & {
|
|
10
10
|
open?: boolean;
|
|
11
11
|
disabled?: boolean;
|
|
12
|
+
portal?: string | PortalBond;
|
|
12
13
|
onclose?: (event: Event, bond: DrawerBond) => void;
|
|
13
14
|
factory?: Factory<DrawerBond>;
|
|
14
15
|
};
|
|
@@ -18,10 +19,11 @@ import type { Override } from '../../types';
|
|
|
18
19
|
import { type TransitionFunction } from '../element';
|
|
19
20
|
import type { HtmlAtomProps, Base } from '../atom';
|
|
20
21
|
import { DrawerBond, DrawerBondState, type DrawerBondProps } from './bond.svelte';
|
|
22
|
+
import { type PortalBond } from '../portal';
|
|
21
23
|
declare function $$render<E extends keyof HTMLElementTagNameMap = 'dialog', B extends Base = Base>(): {
|
|
22
24
|
props: Omit<HtmlAtomProps<E, B>, "initial" | "enter" | "exit" | "children"> & {
|
|
23
25
|
children?: Snippet<[{
|
|
24
|
-
|
|
26
|
+
drawer: DrawerBond;
|
|
25
27
|
}]>;
|
|
26
28
|
initial?: (node: HTMLElement, bond: DrawerBond) => void;
|
|
27
29
|
enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<"dialog">;
|
|
@@ -29,6 +31,7 @@ declare function $$render<E extends keyof HTMLElementTagNameMap = 'dialog', B ex
|
|
|
29
31
|
} & {
|
|
30
32
|
open?: boolean;
|
|
31
33
|
disabled?: boolean;
|
|
34
|
+
portal?: string | PortalBond;
|
|
32
35
|
onclose?: (event: Event, bond: DrawerBond) => void;
|
|
33
36
|
factory?: Factory<DrawerBond>;
|
|
34
37
|
} & HTMLAttributes<HTMLElementTagNameMap[E]>;
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{bond}
|
|
30
30
|
preset="dropdown.placeholder"
|
|
31
31
|
class={[
|
|
32
|
-
'absolute inset-0 flex h-full w-full items-center px-2 leading-1 opacity-50 outline-none',
|
|
32
|
+
'border-border absolute inset-0 flex h-full w-full items-center px-2 leading-1 opacity-50 outline-none',
|
|
33
33
|
'$preset',
|
|
34
34
|
klass
|
|
35
35
|
]}
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
{as}
|
|
40
40
|
{bond}
|
|
41
41
|
preset="dropdown.trigger"
|
|
42
|
-
class={['relative flex h-auto min-h-10 flex-wrap items-center', '$preset', klass]}
|
|
42
|
+
class={['border-border relative flex h-auto min-h-10 flex-wrap items-center', '$preset', klass]}
|
|
43
43
|
onmount={onmount?.bind(bond.state)}
|
|
44
44
|
ondestroy={ondestroy?.bind(bond.state)}
|
|
45
45
|
enter={enter?.bind(bond.state)}
|
|
@@ -28,8 +28,6 @@
|
|
|
28
28
|
ev.preventDefault();
|
|
29
29
|
ev.stopPropagation();
|
|
30
30
|
|
|
31
|
-
console.log('unselect', value);
|
|
32
|
-
|
|
33
31
|
bond?.state.unselect([value]);
|
|
34
32
|
}
|
|
35
33
|
</script>
|
|
@@ -39,7 +37,7 @@
|
|
|
39
37
|
{bond}
|
|
40
38
|
preset="dropdown.value"
|
|
41
39
|
class={[
|
|
42
|
-
'dropdown-value bg-foreground/5 inline-flex flex-nowrap items-center gap-1 rounded-xs px-1 whitespace-nowrap',
|
|
40
|
+
'dropdown-value border-border bg-foreground/5 inline-flex flex-nowrap items-center gap-1 rounded-xs px-1 whitespace-nowrap',
|
|
43
41
|
'$preset',
|
|
44
42
|
klass
|
|
45
43
|
]}
|
|
@@ -19,6 +19,10 @@ export declare class DropdownItemBond<T = unknown> extends Bond<DropdownItemBond
|
|
|
19
19
|
mount(): () => void;
|
|
20
20
|
unmount(): void;
|
|
21
21
|
share(): this;
|
|
22
|
+
root(): {
|
|
23
|
+
[x: symbol]: (node: HTMLElement) => void;
|
|
24
|
+
'data-selected': boolean;
|
|
25
|
+
};
|
|
22
26
|
static get(): DropdownItemBond | undefined;
|
|
23
27
|
static set(bond: DropdownItemBond): DropdownItemBond;
|
|
24
28
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getContext, setContext } from 'svelte';
|
|
2
2
|
import { Bond, BondState } from '../../../shared/bond.svelte';
|
|
3
3
|
import { DropdownBond, DropdownBondState } from '../bond.svelte';
|
|
4
|
+
import { createAttachmentKey } from 'svelte/attachments';
|
|
4
5
|
export class DropdownItemBond extends Bond {
|
|
5
6
|
static CONTEXT_KEY = '@atoms/context/dropdown/item';
|
|
6
7
|
#dropdown;
|
|
@@ -31,6 +32,14 @@ export class DropdownItemBond extends Bond {
|
|
|
31
32
|
share() {
|
|
32
33
|
return DropdownItemBond.set(this);
|
|
33
34
|
}
|
|
35
|
+
root() {
|
|
36
|
+
return {
|
|
37
|
+
'data-selected': this.state.isSelected,
|
|
38
|
+
[createAttachmentKey()]: (node) => {
|
|
39
|
+
this.elements.root = node;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
34
43
|
static get() {
|
|
35
44
|
return getContext(DropdownItemBond.CONTEXT_KEY);
|
|
36
45
|
}
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
const unmount = bond.mount();
|
|
42
42
|
$effect(() => unmount);
|
|
43
43
|
|
|
44
|
+
const rootProps = $derived({
|
|
45
|
+
...bond?.root?.(),
|
|
46
|
+
...restProps
|
|
47
|
+
});
|
|
48
|
+
|
|
44
49
|
function _factory() {
|
|
45
50
|
const item = dropdown?.state.item(value);
|
|
46
51
|
|
|
@@ -56,7 +61,7 @@
|
|
|
56
61
|
return new DropdownItemBond(bondState);
|
|
57
62
|
}
|
|
58
63
|
|
|
59
|
-
function
|
|
64
|
+
function handleClick(ev: MouseEvent) {
|
|
60
65
|
onclick?.(ev);
|
|
61
66
|
|
|
62
67
|
if (ev.defaultPrevented) {
|
|
@@ -76,12 +81,11 @@
|
|
|
76
81
|
</script>
|
|
77
82
|
|
|
78
83
|
<Item
|
|
79
|
-
{@attach (node) => (bond.elements.root = node)}
|
|
80
84
|
{bond}
|
|
81
85
|
{preset}
|
|
82
86
|
class={[
|
|
83
|
-
bond.state.isHighlighted && 'bg-foreground/
|
|
84
|
-
bond.state.isSelected && 'bg-
|
|
87
|
+
bond.state.isHighlighted && 'bg-foreground/5',
|
|
88
|
+
bond.state.isSelected && 'bg-primary/5 hover:bg-primary/10 active:bg-primary/15',
|
|
85
89
|
'$preset',
|
|
86
90
|
klass
|
|
87
91
|
]}
|
|
@@ -91,8 +95,8 @@
|
|
|
91
95
|
animate={animate?.bind(bond.state)}
|
|
92
96
|
onmount={onmount?.bind(bond.state)}
|
|
93
97
|
ondestroy={ondestroy?.bind(bond.state)}
|
|
94
|
-
onclick={
|
|
95
|
-
{...
|
|
98
|
+
onclick={handleClick}
|
|
99
|
+
{...rootProps}
|
|
96
100
|
>
|
|
97
101
|
{@render children?.({ dropdownItem: bond })}
|
|
98
102
|
</Item>
|
|
@@ -25,6 +25,10 @@ export type FieldStateProps<Extension extends Record<string, unknown> = Record<s
|
|
|
25
25
|
readonly: boolean;
|
|
26
26
|
name?: string;
|
|
27
27
|
value?: Value;
|
|
28
|
+
files?: File[];
|
|
29
|
+
date?: Date | null;
|
|
30
|
+
number?: number;
|
|
31
|
+
checked?: boolean;
|
|
28
32
|
schema?: Schema;
|
|
29
33
|
validator?: ValidationAdapter<Schema, Value>;
|
|
30
34
|
onvalidation?: (errors: ValidationError[]) => void;
|
|
@@ -68,6 +72,10 @@ export declare class FieldBondState<Props extends FieldStateProps = FieldStatePr
|
|
|
68
72
|
#private;
|
|
69
73
|
constructor(props: () => Props);
|
|
70
74
|
get value(): unknown;
|
|
75
|
+
get files(): File[] | undefined;
|
|
76
|
+
get date(): Date | null | undefined;
|
|
77
|
+
get number(): number | undefined;
|
|
78
|
+
get checked(): boolean | undefined;
|
|
71
79
|
get errors(): ValidationError[];
|
|
72
80
|
get isValidating(): boolean;
|
|
73
81
|
validate(): ValidationResult;
|
|
@@ -101,7 +101,7 @@ export class FieldBondState extends BondState {
|
|
|
101
101
|
#form;
|
|
102
102
|
constructor(props) {
|
|
103
103
|
super(props);
|
|
104
|
-
this.#form = FormBond.get()
|
|
104
|
+
this.#form = FormBond.get()?.state;
|
|
105
105
|
if (!this.#form) {
|
|
106
106
|
throw new Error('Form Context is undefined, FieldAtom must be used within a FormAtom context');
|
|
107
107
|
}
|
|
@@ -109,6 +109,18 @@ export class FieldBondState extends BondState {
|
|
|
109
109
|
get value() {
|
|
110
110
|
return this.props.value;
|
|
111
111
|
}
|
|
112
|
+
get files() {
|
|
113
|
+
return this.props.files;
|
|
114
|
+
}
|
|
115
|
+
get date() {
|
|
116
|
+
return this.props.date;
|
|
117
|
+
}
|
|
118
|
+
get number() {
|
|
119
|
+
return this.props.number;
|
|
120
|
+
}
|
|
121
|
+
get checked() {
|
|
122
|
+
return this.props.checked;
|
|
123
|
+
}
|
|
112
124
|
get errors() {
|
|
113
125
|
return [...this.#errors];
|
|
114
126
|
}
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
class: klass = '',
|
|
27
27
|
value = $bindable(),
|
|
28
28
|
checked = $bindable(),
|
|
29
|
+
number = $bindable(),
|
|
30
|
+
date = $bindable(),
|
|
31
|
+
files = $bindable(),
|
|
29
32
|
children = undefined,
|
|
30
33
|
oninput = undefined,
|
|
31
34
|
...restProps
|
|
@@ -41,6 +44,10 @@
|
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
bond.state.props.value = value = detail?.value;
|
|
47
|
+
bond.state.props.files = files = detail?.files ?? [];
|
|
48
|
+
bond.state.props.date = date = detail?.date ?? null;
|
|
49
|
+
bond.state.props.number = number = detail?.number ?? null;
|
|
50
|
+
bond.state.props.checked = checked = detail?.checked ?? false;
|
|
44
51
|
}
|
|
45
52
|
</script>
|
|
46
53
|
|
|
@@ -19,7 +19,7 @@ declare function $$render<B extends Base<{
|
|
|
19
19
|
}>>(): {
|
|
20
20
|
props: FieldInputProps<B>;
|
|
21
21
|
exports: {};
|
|
22
|
-
bindings: "value" | "checked";
|
|
22
|
+
bindings: "number" | "value" | "date" | "files" | "checked";
|
|
23
23
|
slots: {};
|
|
24
24
|
events: {};
|
|
25
25
|
};
|
|
@@ -29,7 +29,7 @@ declare class __sveltets_Render<B extends Base<{
|
|
|
29
29
|
props(): ReturnType<typeof $$render<B>>['props'];
|
|
30
30
|
events(): ReturnType<typeof $$render<B>>['events'];
|
|
31
31
|
slots(): ReturnType<typeof $$render<B>>['slots'];
|
|
32
|
-
bindings(): "value" | "checked";
|
|
32
|
+
bindings(): "number" | "value" | "date" | "files" | "checked";
|
|
33
33
|
exports(): {};
|
|
34
34
|
}
|
|
35
35
|
interface $$IsomorphicComponent {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<Field.Label>First Name</Field.Label>
|
|
45
45
|
<Input.Root>
|
|
46
46
|
<Field.Control
|
|
47
|
-
base={Input.
|
|
47
|
+
base={Input.Control}
|
|
48
48
|
placeholder="Enter your first name"
|
|
49
49
|
onblur={() => {
|
|
50
50
|
const results = field?.state.validate();
|
|
@@ -65,14 +65,14 @@
|
|
|
65
65
|
<Field.Root name="last name" schema={personSchema.shape.lastName}>
|
|
66
66
|
<Field.Label>Last Name</Field.Label>
|
|
67
67
|
<Input.Root>
|
|
68
|
-
<Field.Control base={Input.
|
|
68
|
+
<Field.Control base={Input.Control} placeholder="Enter your last name" />
|
|
69
69
|
</Input.Root>
|
|
70
70
|
</Field.Root>
|
|
71
71
|
</div>
|
|
72
72
|
|
|
73
73
|
<div class="flex flex-col">
|
|
74
74
|
<Field.Root name="is admin" schema={personSchema.shape.isAdmin}>
|
|
75
|
-
<Field.Label>Is Admin
|
|
75
|
+
<Field.Label>Is Admin?</Field.Label>
|
|
76
76
|
<Field.Control base={Checkbox} />
|
|
77
77
|
</Field.Root>
|
|
78
78
|
</div>
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { default as Root } from './input-root.svelte';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated use Input.Control instead
|
|
4
|
+
*/
|
|
5
|
+
export { default as Value } from './input-control.svelte';
|
|
6
|
+
export { default as Control } from './input-control.svelte';
|
|
3
7
|
export { default as Icon } from './input-icon.svelte';
|
|
4
8
|
export { default as Placeholder } from './input-placeholder.svelte';
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { default as Root } from './input-root.svelte';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated use Input.Control instead
|
|
4
|
+
*/
|
|
5
|
+
export { default as Value } from './input-control.svelte';
|
|
6
|
+
export { default as Control } from './input-control.svelte';
|
|
3
7
|
export { default as Icon } from './input-icon.svelte';
|
|
4
8
|
export { default as Placeholder } from './input-placeholder.svelte';
|