@svelte-atoms/core 1.0.0-alpha.29 → 1.0.0-alpha.31
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 +3 -2
- package/dist/attachments/clickout.svelte.d.ts +1 -1
- package/dist/attachments/clickout.svelte.js +2 -2
- package/dist/components/accordion/accordion-root.svelte +65 -61
- package/dist/components/accordion/accordion-root.svelte.d.ts +1 -1
- package/dist/components/accordion/accordion.stories.svelte +70 -134
- package/dist/components/accordion/item/accordion-item-body.svelte +44 -42
- package/dist/components/accordion/item/accordion-item-header.svelte +51 -50
- package/dist/components/accordion/item/accordion-item-indicator.svelte +51 -50
- package/dist/components/accordion/item/accordion-item-root.svelte +66 -65
- package/dist/components/accordion/item/bond.svelte.d.ts +2 -0
- package/dist/components/accordion/item/index.d.ts +3 -0
- package/dist/components/accordion/item/index.js +3 -0
- package/dist/components/accordion/item/motion.svelte.d.ts +15 -0
- package/dist/components/accordion/item/motion.svelte.js +30 -0
- package/dist/components/accordion/item/types.d.ts +7 -24
- package/dist/components/alert/alert-close-button.svelte +66 -70
- package/dist/components/alert/alert-description.svelte +42 -42
- package/dist/components/alert/alert-description.svelte.d.ts +3 -6
- package/dist/components/alert/alert-root.svelte +68 -103
- package/dist/components/alert/alert-root.svelte.d.ts +2 -2
- package/dist/components/alert/alert.stories.svelte +10 -11
- package/dist/components/alert/bond.svelte.d.ts +0 -13
- package/dist/components/alert/bond.svelte.js +0 -32
- package/dist/components/alert/types.d.ts +8 -32
- package/dist/components/atom/html-atom.svelte +261 -207
- package/dist/components/avatar/avatar.stories.svelte +8 -13
- package/dist/components/badge/badge.stories.svelte +1 -6
- package/dist/components/badge/badge.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -21
- package/dist/components/button/button.stories.svelte +1 -34
- package/dist/components/calendar/calendar-day.svelte +9 -4
- package/dist/components/calendar/calendar-header.svelte +29 -29
- package/dist/components/calendar/calendar-root.svelte +206 -206
- package/dist/components/calendar/calendar.stories.svelte +26 -31
- package/dist/components/card/card-body.svelte +1 -1
- package/dist/components/card/card-footer.svelte +1 -1
- package/dist/components/card/card-root.svelte +1 -1
- package/dist/components/card/card.stories.svelte +92 -104
- package/dist/components/checkbox/checkbox.stories.svelte +4 -9
- package/dist/components/checkbox/checkbox.svelte +159 -157
- package/dist/components/collapsible/collapsible.stories.svelte +2 -3
- package/dist/components/combobox/atoms.d.ts +1 -1
- package/dist/components/combobox/atoms.js +1 -1
- package/dist/components/combobox/combobox-root.svelte +1 -1
- package/dist/components/combobox/compobox.stories.svelte +19 -22
- package/dist/components/combobox/index.d.ts +1 -0
- package/dist/components/container/container.stories.svelte +8 -11
- package/dist/components/container/container.svelte.d.ts +1 -1
- package/dist/components/datagrid/datagrid-root.svelte +59 -59
- package/dist/components/datagrid/datagrid.css +5 -5
- package/dist/components/datagrid/datagrid.stories.svelte +47 -50
- package/dist/components/datagrid/tr/bond.svelte.d.ts +4 -2
- package/dist/components/datagrid/tr/bond.svelte.js +9 -7
- package/dist/components/datagrid/tr/datagrid-tr.svelte +90 -88
- package/dist/components/date-picker/date-picker-calendar.svelte +2 -2
- package/dist/components/date-picker/date-picker-header.svelte +100 -100
- package/dist/components/date-picker/date-picker-months.svelte +142 -142
- package/dist/components/date-picker/date-picker-root.svelte +95 -95
- package/dist/components/date-picker/date-picker-years.svelte +205 -205
- package/dist/components/date-picker/date-picker.stories.svelte +35 -42
- package/dist/components/dialog/bond.svelte.d.ts +13 -3
- package/dist/components/dialog/bond.svelte.js +66 -5
- package/dist/components/dialog/dialog-content.svelte +2 -20
- package/dist/components/dialog/dialog-root.svelte +91 -110
- package/dist/components/dialog/dialog.stories.svelte +34 -37
- package/dist/components/dialog/motion.svelte.d.ts +13 -0
- package/dist/components/dialog/motion.svelte.js +44 -0
- package/dist/components/drawer/attachments.svelte.d.ts +1 -1
- package/dist/components/drawer/attachments.svelte.js +7 -10
- package/dist/components/drawer/bond.svelte.d.ts +24 -5
- package/dist/components/drawer/bond.svelte.js +77 -11
- package/dist/components/drawer/drawer-content.svelte +49 -42
- package/dist/components/drawer/drawer.stories.svelte +144 -224
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/drawer/index.js +2 -0
- package/dist/components/drawer/motion.d.ts +15 -0
- package/dist/components/drawer/motion.js +28 -0
- package/dist/components/dropdown/atoms.d.ts +1 -1
- package/dist/components/dropdown/atoms.js +1 -1
- package/dist/components/dropdown/bond.svelte.d.ts +5 -1
- package/dist/components/dropdown/dropdown-root.svelte +1 -1
- package/dist/components/dropdown/dropdown.stories.svelte +38 -41
- package/dist/components/dropdown/index.d.ts +1 -0
- package/dist/components/form/form.stories.svelte +58 -61
- package/dist/components/image/image.stories.svelte +9 -12
- package/dist/components/input/input.stories.svelte +11 -14
- package/dist/components/label/label.stories.svelte +1 -12
- package/dist/components/label/label.stories.svelte.d.ts +24 -4
- package/dist/components/lazy/lazy.stories.svelte +28 -35
- package/dist/components/lazy/lazy.svelte +28 -28
- package/dist/components/link/link.stories.svelte +1 -12
- package/dist/components/link/link.stories.svelte.d.ts +24 -4
- package/dist/components/list/list-item.svelte +20 -20
- package/dist/components/menu/atoms.d.ts +1 -0
- package/dist/components/menu/atoms.js +1 -0
- package/dist/components/menu/index.d.ts +2 -1
- package/dist/components/menu/index.js +1 -1
- package/dist/components/menu/menu-item.svelte +69 -51
- package/dist/components/menu/menu-item.svelte.d.ts +1 -0
- package/dist/components/menu/menu-list.svelte +40 -40
- package/dist/components/menu/menu.stories.svelte +9 -12
- package/dist/components/popover/bond.svelte.d.ts +20 -7
- package/dist/components/popover/bond.svelte.js +104 -45
- package/dist/components/popover/motion.d.ts +6 -0
- package/dist/components/popover/motion.js +56 -0
- package/dist/components/popover/popover-arrow.svelte +4 -4
- package/dist/components/popover/popover-content.svelte +137 -178
- package/dist/components/popover/popover-indicator.svelte +2 -1
- package/dist/components/popover/popover-root.svelte +1 -1
- package/dist/components/popover/popover.stories.svelte +49 -52
- package/dist/components/popover/types.d.ts +9 -7
- package/dist/components/portal/active-portal.svelte +29 -22
- package/dist/components/portal/active-portal.svelte.d.ts +2 -9
- package/dist/components/portal/portal-root.svelte +76 -83
- package/dist/components/portal/portal-root.svelte.d.ts +4 -6
- package/dist/components/portal/teleport.svelte +49 -50
- package/dist/components/portal/teleport.svelte.d.ts +3 -4
- package/dist/components/qr-code/qr-code.stories.svelte +18 -27
- package/dist/components/qr-code/qr-code.svelte +75 -75
- package/dist/components/radio/radio-group.stories.svelte +21 -30
- package/dist/components/radio/radio.stories.svelte +1 -10
- package/dist/components/radio/radio.svelte +109 -109
- package/dist/components/radio/types.d.ts +98 -0
- package/dist/components/radio/types.js +2 -0
- package/dist/components/root/root.svelte +104 -121
- package/dist/components/scrollable/scrollable-root.svelte.d.ts +2 -2
- package/dist/components/scrollable/scrollable.stories.svelte +95 -105
- package/dist/components/sidebar/index.d.ts +2 -0
- package/dist/components/sidebar/index.js +2 -0
- package/dist/components/sidebar/motion.svelte.d.ts +11 -0
- package/dist/components/sidebar/motion.svelte.js +16 -0
- package/dist/components/sidebar/sidebar-content.svelte +3 -2
- package/dist/components/sidebar/sidebar-root.svelte +39 -41
- package/dist/components/sidebar/sidebar.stories.svelte +43 -54
- package/dist/components/sidebar/types.d.ts +3 -12
- package/dist/components/tabs/tab/bond.svelte.d.ts +4 -1
- package/dist/components/tabs/tab/bond.svelte.js +4 -1
- package/dist/components/tabs/tabs.stories.svelte +31 -34
- package/dist/components/textarea/atoms.d.ts +1 -0
- package/dist/components/textarea/atoms.js +1 -0
- package/dist/components/textarea/textarea-input.svelte +9 -6
- package/dist/components/textarea/textarea-root.svelte +9 -9
- package/dist/components/textarea/textarea-root.svelte.d.ts +2 -0
- package/dist/components/tooltip/tooltip-trigger.svelte +39 -37
- package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +1 -0
- package/dist/components/tooltip/tooltip.stories.svelte +7 -10
- package/dist/components/tree/tree.stories.svelte +102 -94
- package/dist/context/preset.svelte.d.ts +3 -3
- package/dist/icons/icon-copy.svelte +6 -0
- package/dist/{components/radio/types.svelte.d.ts → icons/icon-copy.svelte.d.ts} +3 -3
- package/dist/utils/function.d.ts +2 -0
- package/dist/utils/function.js +6 -0
- package/dist/utils/markdown-to-llm.d.ts +28 -0
- package/dist/utils/markdown-to-llm.js +76 -0
- package/package.json +6 -10
- package/dist/actions/animation.svelte.d.ts +0 -6
- package/dist/actions/animation.svelte.js +0 -14
- package/dist/actions/clickout.svelte.d.ts +0 -2
- package/dist/actions/clickout.svelte.js +0 -15
- package/dist/actions/popover.svelte.d.ts +0 -19
- package/dist/actions/popover.svelte.js +0 -81
- package/dist/actions/portal.svelte.d.ts +0 -8
- package/dist/actions/portal.svelte.js +0 -32
- package/dist/attachments/gsap.svelte.d.ts +0 -2
- package/dist/attachments/gsap.svelte.js +0 -26
- package/dist/components/radio/types.svelte +0 -0
- package/llm/composition.md +0 -395
- package/llm/crafting.md +0 -838
- package/llm/motion.md +0 -970
- package/llm/philosophy.md +0 -23
- package/llm/preset-variant-integration.md +0 -516
- package/llm/preset.md +0 -383
- package/llm/styling.md +0 -216
- package/llm/usage.md +0 -46
- package/llm/variants.md +0 -1259
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script module>
|
|
2
2
|
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
3
|
import { Combobox as ACombobox } from '.';
|
|
4
|
-
import Root from '../root/root.svelte';
|
|
5
4
|
import { Input } from '../input';
|
|
6
5
|
import { Divider } from '../divider';
|
|
7
6
|
|
|
@@ -30,25 +29,23 @@
|
|
|
30
29
|
</script>
|
|
31
30
|
|
|
32
31
|
<Story name="Combobox" args={{}}>
|
|
33
|
-
<Root
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
</ACombobox.Root>
|
|
53
|
-
</Root>
|
|
32
|
+
<ACombobox.Root bind:open bind:value>
|
|
33
|
+
{#snippet children({ combobox })}
|
|
34
|
+
<ACombobox.Trigger
|
|
35
|
+
base={Input.Root}
|
|
36
|
+
class="h-10 min-w-sm items-center gap-0 rounded-sm p-1 transition-colors duration-200"
|
|
37
|
+
>
|
|
38
|
+
<Input.Icon class="text-foreground/50">$</Input.Icon>
|
|
39
|
+
<Divider class="mx-1" vertical />
|
|
40
|
+
<ACombobox.Input class="px-1" placeholder="Select a language" />
|
|
41
|
+
</ACombobox.Trigger>
|
|
42
|
+
<ACombobox.List>
|
|
43
|
+
{#each array.filter((item) => !combobox.state.query || item.label
|
|
44
|
+
.toLowerCase()
|
|
45
|
+
.includes(combobox.state.query)) as item (item.value)}
|
|
46
|
+
<ACombobox.Item value={item.value}>{item.label}</ACombobox.Item>
|
|
47
|
+
{/each}
|
|
48
|
+
</ACombobox.List>
|
|
49
|
+
{/snippet}
|
|
50
|
+
</ACombobox.Root>
|
|
54
51
|
</Story>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<script module>
|
|
2
2
|
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import Root from '../root/root.svelte';
|
|
4
3
|
import ContainerCmp from './container.svelte';
|
|
5
4
|
|
|
6
5
|
const { Story } = defineMeta({
|
|
@@ -9,15 +8,13 @@
|
|
|
9
8
|
</script>
|
|
10
9
|
|
|
11
10
|
<Story name="Container">
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
</div>
|
|
11
|
+
<ContainerCmp class="flex w-full flex-col items-center gap-4">
|
|
12
|
+
<div class="flex w-full gap-4">
|
|
13
|
+
{#each { length: 5 } as _, i (i)}
|
|
14
|
+
<div class="bg-foreground h-80 flex-1 rounded-lg"></div>
|
|
15
|
+
{/each}
|
|
16
|
+
</div>
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
</Root>
|
|
18
|
+
<div class="bg-foreground h-80 w-[50cqw] rounded-lg"></div>
|
|
19
|
+
</ContainerCmp>
|
|
23
20
|
</Story>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ContainerProps } from './types';
|
|
2
|
-
declare const Container: import("svelte").Component<ContainerProps, {}, "
|
|
2
|
+
declare const Container: import("svelte").Component<ContainerProps, {}, "clientHeight" | "clientWidth">;
|
|
3
3
|
type Container = ReturnType<typeof Container>;
|
|
4
4
|
export default Container;
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
<script lang="ts" generics="T extends keyof HTMLElementTagNameMap, B extends Base = Base">
|
|
2
|
-
import { defineProperty, defineState } from '../../utils';
|
|
3
|
-
import { HtmlAtom, type Base } from '../atom';
|
|
4
|
-
import { DataGridBond, DataGridBondState, type DataGridStateProps } from './bond.svelte';
|
|
5
|
-
import type { DatagridRootProps } from './types';
|
|
6
|
-
|
|
7
|
-
import './datagrid.css';
|
|
8
|
-
|
|
9
|
-
let {
|
|
10
|
-
class: klass = '',
|
|
11
|
-
values = $bindable([]),
|
|
12
|
-
template = undefined,
|
|
13
|
-
fallbackTemplate = 'auto',
|
|
14
|
-
factory = _factory,
|
|
15
|
-
children = undefined,
|
|
16
|
-
onmount = undefined,
|
|
17
|
-
ondestroy = undefined,
|
|
18
|
-
animate = undefined,
|
|
19
|
-
enter = undefined,
|
|
20
|
-
exit = undefined,
|
|
21
|
-
initial = undefined,
|
|
22
|
-
...restProps
|
|
23
|
-
}: DatagridRootProps<T> = $props();
|
|
24
|
-
|
|
25
|
-
const bondProps = defineState<DataGridStateProps<T>>([
|
|
26
|
-
defineProperty('template', () => template),
|
|
27
|
-
defineProperty(
|
|
28
|
-
'values',
|
|
29
|
-
() => values,
|
|
30
|
-
(v) => (values = v)
|
|
31
|
-
)
|
|
32
|
-
]);
|
|
33
|
-
const bond = factory(bondProps).share();
|
|
34
|
-
|
|
35
|
-
function _factory(props: typeof bondProps) {
|
|
36
|
-
const dataGridState = new DataGridBondState(() => props);
|
|
37
|
-
return new DataGridBond(dataGridState);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function getBond() {
|
|
41
|
-
return bond;
|
|
42
|
-
}
|
|
43
|
-
</script>
|
|
44
|
-
|
|
45
|
-
<HtmlAtom
|
|
46
|
-
{bond}
|
|
47
|
-
preset="datagrid"
|
|
48
|
-
class={['border-border', 'datagrid-root w-full gap-x-0 gap-y-0', '$preset', klass]}
|
|
49
|
-
style="--template-columns:{bond.state.template ?? fallbackTemplate}"
|
|
50
|
-
enter={enter?.bind(bond.state)}
|
|
51
|
-
exit={exit?.bind(bond.state)}
|
|
52
|
-
initial={initial?.bind(bond.state)}
|
|
53
|
-
animate={animate?.bind(bond.state)}
|
|
54
|
-
onmount={onmount?.bind(bond.state)}
|
|
55
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
56
|
-
{...restProps}
|
|
57
|
-
>
|
|
58
|
-
{@render children?.({ datagrid: bond })}
|
|
59
|
-
</HtmlAtom>
|
|
1
|
+
<script lang="ts" generics="T extends keyof HTMLElementTagNameMap, B extends Base = Base">
|
|
2
|
+
import { defineProperty, defineState } from '../../utils';
|
|
3
|
+
import { HtmlAtom, type Base } from '../atom';
|
|
4
|
+
import { DataGridBond, DataGridBondState, type DataGridStateProps } from './bond.svelte';
|
|
5
|
+
import type { DatagridRootProps } from './types';
|
|
6
|
+
|
|
7
|
+
import './datagrid.css';
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
class: klass = '',
|
|
11
|
+
values = $bindable([]),
|
|
12
|
+
template = undefined,
|
|
13
|
+
fallbackTemplate = 'auto',
|
|
14
|
+
factory = _factory,
|
|
15
|
+
children = undefined,
|
|
16
|
+
onmount = undefined,
|
|
17
|
+
ondestroy = undefined,
|
|
18
|
+
animate = undefined,
|
|
19
|
+
enter = undefined,
|
|
20
|
+
exit = undefined,
|
|
21
|
+
initial = undefined,
|
|
22
|
+
...restProps
|
|
23
|
+
}: DatagridRootProps<T> = $props();
|
|
24
|
+
|
|
25
|
+
const bondProps = defineState<DataGridStateProps<T>>([
|
|
26
|
+
defineProperty('template', () => template),
|
|
27
|
+
defineProperty(
|
|
28
|
+
'values',
|
|
29
|
+
() => values,
|
|
30
|
+
(v) => (values = v)
|
|
31
|
+
)
|
|
32
|
+
]);
|
|
33
|
+
const bond = factory(bondProps).share();
|
|
34
|
+
|
|
35
|
+
function _factory(props: typeof bondProps) {
|
|
36
|
+
const dataGridState = new DataGridBondState(() => props);
|
|
37
|
+
return new DataGridBond(dataGridState);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function getBond() {
|
|
41
|
+
return bond;
|
|
42
|
+
}
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<HtmlAtom
|
|
46
|
+
{bond}
|
|
47
|
+
preset="datagrid"
|
|
48
|
+
class={['border-border', 'datagrid-root w-full gap-x-0 gap-y-0', '$preset', klass]}
|
|
49
|
+
style="--template-columns:{bond.state.template ?? fallbackTemplate}"
|
|
50
|
+
enter={enter?.bind(bond.state)}
|
|
51
|
+
exit={exit?.bind(bond.state)}
|
|
52
|
+
initial={initial?.bind(bond.state)}
|
|
53
|
+
animate={animate?.bind(bond.state)}
|
|
54
|
+
onmount={onmount?.bind(bond.state)}
|
|
55
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
56
|
+
{...restProps}
|
|
57
|
+
>
|
|
58
|
+
{@render children?.({ datagrid: bond })}
|
|
59
|
+
</HtmlAtom>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
.datagrid-root {
|
|
2
|
-
display: grid;
|
|
3
|
-
grid-auto-flow: row;
|
|
4
|
-
grid-template-columns: var(--template-columns, auto);
|
|
5
|
-
}
|
|
1
|
+
.datagrid-root {
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-auto-flow: row;
|
|
4
|
+
grid-template-columns: var(--template-columns, auto);
|
|
5
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<script module>
|
|
2
2
|
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import Root from '../root/root.svelte';
|
|
4
3
|
import { DataGrid as DataGridCmp } from '.';
|
|
5
4
|
import { Dropdown } from '../dropdown';
|
|
6
5
|
import MoreVerticalIcon from '../../icons/icon-more-vert.svelte';
|
|
@@ -19,57 +18,55 @@
|
|
|
19
18
|
</script>
|
|
20
19
|
|
|
21
20
|
<Story name="DataGrid">
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<DataGridCmp.
|
|
25
|
-
<DataGridCmp.
|
|
26
|
-
<DataGridCmp.
|
|
27
|
-
<DataGridCmp.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
</DataGridCmp.Header>
|
|
21
|
+
{#snippet children({ args })}
|
|
22
|
+
<DataGridCmp.Root class="" {@attach datagridContainer.attach}>
|
|
23
|
+
<DataGridCmp.Header>
|
|
24
|
+
<DataGridCmp.Tr header>
|
|
25
|
+
<DataGridCmp.Th width="auto">
|
|
26
|
+
<DataGridCmp.Checkbox />
|
|
27
|
+
</DataGridCmp.Th>
|
|
28
|
+
<DataGridCmp.Th
|
|
29
|
+
class="resize-x overflow-x-auto"
|
|
30
|
+
width="auto"
|
|
31
|
+
hidden={datagridContainer.current?.width
|
|
32
|
+
? datagridContainer.current.width < 1024
|
|
33
|
+
: false}>ID</DataGridCmp.Th
|
|
34
|
+
>
|
|
35
|
+
<DataGridCmp.Th>Name</DataGridCmp.Th>
|
|
36
|
+
<DataGridCmp.Th width="auto">Job</DataGridCmp.Th>
|
|
37
|
+
<DataGridCmp.Th width="auto">Contact</DataGridCmp.Th>
|
|
38
|
+
<DataGridCmp.Th width="auto"></DataGridCmp.Th>
|
|
39
|
+
</DataGridCmp.Tr>
|
|
40
|
+
</DataGridCmp.Header>
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
<DataGridCmp.Body>
|
|
43
|
+
{#each { length: 10 } as _, i (i)}
|
|
44
|
+
<DataGridCmp.Tr>
|
|
45
|
+
<DataGridCmp.Td>
|
|
46
|
+
<DataGridCmp.Checkbox />
|
|
47
|
+
</DataGridCmp.Td>
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
<DataGridCmp.Td>{crypto.randomUUID()}</DataGridCmp.Td>
|
|
50
|
+
<DataGridCmp.Td>John Doe</DataGridCmp.Td>
|
|
51
|
+
<DataGridCmp.Td>Software Engineer</DataGridCmp.Td>
|
|
52
|
+
<DataGridCmp.Td>+213659009944</DataGridCmp.Td>
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
54
|
+
<DataGridCmp.Td base={Dropdown.Root} placement="bottom-end" offset={0}>
|
|
55
|
+
<Dropdown.Trigger class="flex aspect-square items-center justify-center p-0">
|
|
56
|
+
<Icon src={MoreVerticalIcon} />
|
|
57
|
+
</Dropdown.Trigger>
|
|
58
|
+
<Dropdown.List>
|
|
59
|
+
<Dropdown.Item value="ar">Arabic</Dropdown.Item>
|
|
60
|
+
<Dropdown.Item value="en">English</Dropdown.Item>
|
|
61
|
+
<Dropdown.Item value="sp">Spanish</Dropdown.Item>
|
|
62
|
+
<Dropdown.Item value="fr">Frensh</Dropdown.Item>
|
|
63
|
+
</Dropdown.List>
|
|
64
|
+
</DataGridCmp.Td>
|
|
65
|
+
</DataGridCmp.Tr>
|
|
66
|
+
{/each}
|
|
67
|
+
</DataGridCmp.Body>
|
|
70
68
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
</Root>
|
|
69
|
+
<DataGridCmp.Footer></DataGridCmp.Footer>
|
|
70
|
+
</DataGridCmp.Root>
|
|
71
|
+
{/snippet}
|
|
75
72
|
</Story>
|
|
@@ -15,7 +15,8 @@ export declare class DataGridTrBond<T, Props extends DataGridTrBondProps<T> = Da
|
|
|
15
15
|
share(): this;
|
|
16
16
|
mount(): () => void;
|
|
17
17
|
unmount(): void;
|
|
18
|
-
root(
|
|
18
|
+
root(): {
|
|
19
|
+
[x: symbol]: (node: HTMLElement) => void;
|
|
19
20
|
'data-kind': string;
|
|
20
21
|
'data-header': string | undefined;
|
|
21
22
|
'data-selected': string | undefined;
|
|
@@ -24,12 +25,13 @@ export declare class DataGridTrBond<T, Props extends DataGridTrBondProps<T> = Da
|
|
|
24
25
|
static set(bond: DataGridTrBond): DataGridTrBond;
|
|
25
26
|
}
|
|
26
27
|
export declare class DataGridTrBondState<T, Props extends DataGridTrBondProps<T> = DataGridTrBondProps<T>> extends BondState<Props> {
|
|
28
|
+
#private;
|
|
27
29
|
static CONTEXT_KEY: string;
|
|
28
30
|
constructor(props: () => Props);
|
|
29
31
|
get id(): string;
|
|
30
32
|
get isSelected(): boolean | undefined;
|
|
31
33
|
get isHeader(): boolean;
|
|
32
|
-
get datagrid(): import("..").DataGridBondState<unknown
|
|
34
|
+
get datagrid(): import("..").DataGridBondState<unknown> | undefined;
|
|
33
35
|
select(): void;
|
|
34
36
|
unselect(): void;
|
|
35
37
|
}
|
|
@@ -2,6 +2,7 @@ import { getContext, setContext } from 'svelte';
|
|
|
2
2
|
import { createAttachmentKey } from 'svelte/attachments';
|
|
3
3
|
import { Bond, BondState } from '../../../shared/bond.svelte';
|
|
4
4
|
import { DataGridBond } from '../bond.svelte';
|
|
5
|
+
import { getDatagridHeaderContext } from '../context';
|
|
5
6
|
const DATAGRID_TR_ELEMENTS_KIND = {
|
|
6
7
|
root: 'datagrid-tr'
|
|
7
8
|
};
|
|
@@ -26,12 +27,11 @@ export class DataGridTrBond extends Bond {
|
|
|
26
27
|
unmount() {
|
|
27
28
|
return this.datagrid.state.unmountRow(this.state.id);
|
|
28
29
|
}
|
|
29
|
-
root(
|
|
30
|
+
root() {
|
|
30
31
|
return {
|
|
31
32
|
'data-kind': DATAGRID_TR_ELEMENTS_KIND.root,
|
|
32
33
|
'data-header': this.state.isHeader ? 'true' : undefined,
|
|
33
34
|
'data-selected': this.state.isSelected ? 'true' : undefined,
|
|
34
|
-
...props,
|
|
35
35
|
[createAttachmentKey()]: (node) => {
|
|
36
36
|
this.elements.root = node;
|
|
37
37
|
}
|
|
@@ -46,6 +46,8 @@ export class DataGridTrBond extends Bond {
|
|
|
46
46
|
}
|
|
47
47
|
export class DataGridTrBondState extends BondState {
|
|
48
48
|
static CONTEXT_KEY = '@atoms/context/datagrid/tr';
|
|
49
|
+
#datagrid = DataGridBond.get();
|
|
50
|
+
#isHeader = $state(!!getDatagridHeaderContext());
|
|
49
51
|
constructor(props) {
|
|
50
52
|
super(props);
|
|
51
53
|
}
|
|
@@ -53,18 +55,18 @@ export class DataGridTrBondState extends BondState {
|
|
|
53
55
|
return this.props.value || super.id;
|
|
54
56
|
}
|
|
55
57
|
get isSelected() {
|
|
56
|
-
return this.datagrid
|
|
58
|
+
return this.datagrid?.props.values?.some((id) => id === this.id);
|
|
57
59
|
}
|
|
58
60
|
get isHeader() {
|
|
59
|
-
return this
|
|
61
|
+
return this.#isHeader;
|
|
60
62
|
}
|
|
61
63
|
get datagrid() {
|
|
62
|
-
return
|
|
64
|
+
return this.#datagrid?.state;
|
|
63
65
|
}
|
|
64
66
|
select() {
|
|
65
|
-
this.datagrid
|
|
67
|
+
this.datagrid?.select([this.id]);
|
|
66
68
|
}
|
|
67
69
|
unselect() {
|
|
68
|
-
this.datagrid
|
|
70
|
+
this.datagrid?.unselect([this.id]);
|
|
69
71
|
}
|
|
70
72
|
}
|
|
@@ -1,88 +1,90 @@
|
|
|
1
|
-
<script lang="ts" generics="T, E extends HtmlElementTagName, B extends Base = Base">
|
|
2
|
-
import { untrack } from 'svelte';
|
|
3
|
-
import { nanoid } from 'nanoid';
|
|
4
|
-
import { defineProperty, defineState } from '../../../utils';
|
|
5
|
-
import { HtmlAtom, type Base } from '../../atom';
|
|
6
|
-
import type { HtmlElementTagName } from '../../element';
|
|
7
|
-
import { DataGridTrBond, DataGridTrBondState, type DataGridTrBondProps } from './bond.svelte';
|
|
8
|
-
import type { DatagridTrProps } from '../types';
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
import './datagrid-tr.css';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
defineProperty('
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
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
|
-
|
|
1
|
+
<script lang="ts" generics="T, E extends HtmlElementTagName, B extends Base = Base">
|
|
2
|
+
import { untrack } from 'svelte';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
import { defineProperty, defineState } from '../../../utils';
|
|
5
|
+
import { HtmlAtom, type Base } from '../../atom';
|
|
6
|
+
import type { HtmlElementTagName } from '../../element';
|
|
7
|
+
import { DataGridTrBond, DataGridTrBondState, type DataGridTrBondProps } from './bond.svelte';
|
|
8
|
+
import type { DatagridTrProps } from '../types';
|
|
9
|
+
import { type DatagridContext } from '../context';
|
|
10
|
+
|
|
11
|
+
import './datagrid-tr.css';
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
class: klass = '',
|
|
15
|
+
value = nanoid(),
|
|
16
|
+
rows = 'auto',
|
|
17
|
+
data = undefined,
|
|
18
|
+
header = false,
|
|
19
|
+
factory = _factory,
|
|
20
|
+
children = undefined,
|
|
21
|
+
onmount = undefined,
|
|
22
|
+
ondestroy = undefined,
|
|
23
|
+
animate = undefined,
|
|
24
|
+
enter = undefined,
|
|
25
|
+
exit = undefined,
|
|
26
|
+
initial = undefined,
|
|
27
|
+
onclick = undefined,
|
|
28
|
+
...restProps
|
|
29
|
+
}: DatagridTrProps<T, E, B> = $props();
|
|
30
|
+
|
|
31
|
+
const bondProps = defineState<DataGridTrBondProps>([
|
|
32
|
+
defineProperty('data', () => data),
|
|
33
|
+
defineProperty('value', () => value),
|
|
34
|
+
defineProperty('header', () => header)
|
|
35
|
+
]);
|
|
36
|
+
const bond = factory(bondProps).share();
|
|
37
|
+
|
|
38
|
+
const isHeader = $derived(bond?.state.isHeader ?? false);
|
|
39
|
+
const isSelected = $derived(bond.state.isSelected);
|
|
40
|
+
|
|
41
|
+
const headerProps = $derived({
|
|
42
|
+
...bond.root(),
|
|
43
|
+
...restProps
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const unmount = untrack(() => {
|
|
47
|
+
if (!isHeader) {
|
|
48
|
+
return bond.mount();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
$effect(() => unmount);
|
|
53
|
+
|
|
54
|
+
function _factory(props: typeof bondProps) {
|
|
55
|
+
const datagridTrState = new DataGridTrBondState(() => props);
|
|
56
|
+
return new DataGridTrBond(datagridTrState);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function onclick_(ev: Event) {
|
|
60
|
+
onclick?.(ev, { tr: bond as unknown as DatagridContext<T> });
|
|
61
|
+
|
|
62
|
+
if (!ev.defaultPrevented) {
|
|
63
|
+
//
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
<HtmlAtom
|
|
69
|
+
{bond}
|
|
70
|
+
preset="datagrid.tr"
|
|
71
|
+
class={[
|
|
72
|
+
'datagrid-tr border-border items-center border-b bg-transparent',
|
|
73
|
+
!isHeader && 'hover:bg-foreground/2 active:bg-foreground/4 transition-colors duration-100',
|
|
74
|
+
isHeader && 'header-tr',
|
|
75
|
+
isSelected && 'bg-primary/2 hover:bg-primary/4 active:bg-primary/6',
|
|
76
|
+
'$preset',
|
|
77
|
+
klass
|
|
78
|
+
]}
|
|
79
|
+
style="--rows:{rows}"
|
|
80
|
+
enter={enter?.bind(bond.state)}
|
|
81
|
+
exit={exit?.bind(bond.state)}
|
|
82
|
+
initial={initial?.bind(bond.state)}
|
|
83
|
+
animate={animate?.bind(bond.state)}
|
|
84
|
+
onmount={onmount?.bind(bond.state)}
|
|
85
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
86
|
+
onclick={onclick_}
|
|
87
|
+
{...headerProps}
|
|
88
|
+
>
|
|
89
|
+
{@render children?.({ tr: bond as unknown as DatagridContext<T> })}
|
|
90
|
+
</HtmlAtom>
|
|
@@ -52,11 +52,11 @@
|
|
|
52
52
|
{...calendarProps}
|
|
53
53
|
>
|
|
54
54
|
<HtmlAtom base={Header} class="col-span-full" />
|
|
55
|
-
<HtmlAtom base={Weekdays} />
|
|
55
|
+
<HtmlAtom base={Weekdays} class="border-0" />
|
|
56
56
|
|
|
57
57
|
<HtmlAtom base={Body}>
|
|
58
58
|
{#snippet children({ day }: { day: CalendarDayType })}
|
|
59
|
-
<HtmlAtom base={Day} {day} class="flex items-center justify-center">
|
|
59
|
+
<HtmlAtom base={Day} {day} class="flex items-center justify-center border-0">
|
|
60
60
|
<span class="value">{day.dayOfMonth}</span>
|
|
61
61
|
</HtmlAtom>
|
|
62
62
|
{/snippet}
|