@svelte-atoms/core 1.0.0-alpha.30 → 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 +853 -852
- package/dist/components/accordion/accordion-root.svelte +7 -3
- package/dist/components/accordion/accordion.stories.svelte +7 -82
- 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 +400 -400
- 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 -261
- package/dist/components/avatar/avatar.stories.svelte +22 -22
- package/dist/components/badge/badge.stories.svelte +12 -12
- package/dist/components/badge/badge.svelte +19 -19
- package/dist/components/breadcrumb/breadcrumb.stories.svelte +5 -5
- package/dist/components/button/button.stories.svelte +27 -27
- package/dist/components/calendar/calendar-day.svelte +101 -96
- package/dist/components/calendar/calendar.stories.svelte +26 -26
- package/dist/components/card/card-body.svelte +39 -39
- package/dist/components/card/card-footer.svelte +41 -41
- package/dist/components/card/card-root.svelte +91 -91
- package/dist/components/card/card.stories.svelte +133 -133
- package/dist/components/checkbox/checkbox.stories.svelte +22 -22
- package/dist/components/checkbox/checkbox.svelte +6 -2
- package/dist/components/collapsible/collapsible.stories.svelte +172 -172
- package/dist/components/combobox/atoms.d.ts +1 -1
- package/dist/components/combobox/atoms.js +1 -1
- package/dist/components/combobox/combobox-root.svelte +65 -65
- package/dist/components/combobox/compobox.stories.svelte +51 -51
- package/dist/components/combobox/index.d.ts +1 -0
- package/dist/components/container/container.stories.svelte +20 -20
- package/dist/components/container/container.svelte.d.ts +1 -1
- package/dist/components/datagrid/datagrid.stories.svelte +72 -72
- 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 +67 -67
- package/dist/components/date-picker/date-picker-root.svelte +95 -95
- package/dist/components/date-picker/date-picker.stories.svelte +35 -35
- 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 +44 -62
- package/dist/components/dialog/dialog-root.svelte +91 -110
- package/dist/components/dialog/dialog.stories.svelte +64 -64
- 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 +1 -3
- 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 +6 -14
- package/dist/components/drawer/drawer.stories.svelte +27 -95
- 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 +59 -59
- package/dist/components/dropdown/dropdown.stories.svelte +80 -80
- package/dist/components/dropdown/index.d.ts +1 -0
- package/dist/components/form/form.stories.svelte +96 -96
- package/dist/components/image/image.stories.svelte +20 -20
- package/dist/components/input/input.stories.svelte +35 -35
- package/dist/components/label/label.stories.svelte +15 -15
- package/dist/components/lazy/lazy.stories.svelte +28 -28
- package/dist/components/link/link.stories.svelte +15 -15
- 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.stories.svelte +33 -33
- package/dist/components/popover/bond.svelte.d.ts +20 -7
- package/dist/components/popover/bond.svelte.js +80 -27
- package/dist/components/popover/motion.d.ts +6 -0
- package/dist/components/popover/motion.js +56 -0
- package/dist/components/popover/popover-arrow.svelte +111 -111
- package/dist/components/popover/popover-content.svelte +34 -72
- package/dist/components/popover/popover-indicator.svelte +44 -44
- package/dist/components/popover/popover-root.svelte +48 -48
- package/dist/components/popover/popover.stories.svelte +3 -3
- 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 -18
- package/dist/components/radio/radio-group.stories.svelte +41 -41
- package/dist/components/radio/radio.stories.svelte +17 -17
- package/dist/components/radio/radio.svelte +1 -1
- package/dist/components/radio/types.d.ts +98 -0
- package/dist/components/radio/types.js +2 -0
- package/dist/components/root/root.svelte +13 -30
- package/dist/components/root/root.svelte.d.ts +1 -1
- package/dist/components/scrollable/scrollable-root.svelte.d.ts +2 -2
- package/dist/components/scrollable/scrollable.stories.svelte +116 -116
- 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 -13
- package/dist/components/sidebar/sidebar-root.svelte +39 -39
- package/dist/components/sidebar/sidebar.stories.svelte +43 -43
- package/dist/components/sidebar/types.d.ts +2 -12
- package/dist/components/tabs/tabs.stories.svelte +56 -56
- 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 +2 -2
- package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +1 -0
- package/dist/components/tooltip/tooltip.stories.svelte +32 -32
- package/dist/components/tree/tree.stories.svelte +142 -142
- 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/markdown-to-llm.d.ts +28 -0
- package/dist/utils/markdown-to-llm.js +76 -0
- package/package.json +1 -2
- 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,72 +1,72 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import { DataGrid as DataGridCmp } from '.';
|
|
4
|
-
import { Dropdown } from '../dropdown';
|
|
5
|
-
import MoreVerticalIcon from '../../icons/icon-more-vert.svelte';
|
|
6
|
-
import { Icon } from '../icon';
|
|
7
|
-
import { container } from '../../runes/container.svelte';
|
|
8
|
-
|
|
9
|
-
const { Story } = defineMeta({
|
|
10
|
-
title: 'Atoms/DataGrid'
|
|
11
|
-
});
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<script>
|
|
15
|
-
let values = $state([]);
|
|
16
|
-
|
|
17
|
-
const datagridContainer = container();
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<Story name="DataGrid">
|
|
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>
|
|
41
|
-
|
|
42
|
-
<DataGridCmp.Body>
|
|
43
|
-
{#each { length: 10 } as _, i (i)}
|
|
44
|
-
<DataGridCmp.Tr>
|
|
45
|
-
<DataGridCmp.Td>
|
|
46
|
-
<DataGridCmp.Checkbox />
|
|
47
|
-
</DataGridCmp.Td>
|
|
48
|
-
|
|
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>
|
|
53
|
-
|
|
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>
|
|
68
|
-
|
|
69
|
-
<DataGridCmp.Footer></DataGridCmp.Footer>
|
|
70
|
-
</DataGridCmp.Root>
|
|
71
|
-
{/snippet}
|
|
72
|
-
</Story>
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import { DataGrid as DataGridCmp } from '.';
|
|
4
|
+
import { Dropdown } from '../dropdown';
|
|
5
|
+
import MoreVerticalIcon from '../../icons/icon-more-vert.svelte';
|
|
6
|
+
import { Icon } from '../icon';
|
|
7
|
+
import { container } from '../../runes/container.svelte';
|
|
8
|
+
|
|
9
|
+
const { Story } = defineMeta({
|
|
10
|
+
title: 'Atoms/DataGrid'
|
|
11
|
+
});
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
let values = $state([]);
|
|
16
|
+
|
|
17
|
+
const datagridContainer = container();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<Story name="DataGrid">
|
|
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>
|
|
41
|
+
|
|
42
|
+
<DataGridCmp.Body>
|
|
43
|
+
{#each { length: 10 } as _, i (i)}
|
|
44
|
+
<DataGridCmp.Tr>
|
|
45
|
+
<DataGridCmp.Td>
|
|
46
|
+
<DataGridCmp.Checkbox />
|
|
47
|
+
</DataGridCmp.Td>
|
|
48
|
+
|
|
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>
|
|
53
|
+
|
|
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>
|
|
68
|
+
|
|
69
|
+
<DataGridCmp.Footer></DataGridCmp.Footer>
|
|
70
|
+
</DataGridCmp.Root>
|
|
71
|
+
{/snippet}
|
|
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>
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Content } from '../popover/atoms';
|
|
3
|
-
import {
|
|
4
|
-
Root,
|
|
5
|
-
Header as CalendarHeader,
|
|
6
|
-
Body as CalendarBody,
|
|
7
|
-
Day as CalendarDay
|
|
8
|
-
} from '../calendar/atoms';
|
|
9
|
-
import { DatePickerBond } from './bond.svelte';
|
|
10
|
-
import DatePickerHeader from './date-picker-header.svelte';
|
|
11
|
-
import DatePickerMonths from './date-picker-months.svelte';
|
|
12
|
-
import DatePickerYears from './date-picker-years.svelte';
|
|
13
|
-
import { HtmlAtom } from '../atom';
|
|
14
|
-
import type { CalendarRange, Day as CalendarDayType } from '../calendar/types';
|
|
15
|
-
import type { DatePickerCalendarProps } from './types';
|
|
16
|
-
|
|
17
|
-
const datePickerBond = DatePickerBond.get();
|
|
18
|
-
const datePickerBondProps = $derived(datePickerBond?.state.props);
|
|
19
|
-
|
|
20
|
-
let {
|
|
21
|
-
class: klass = '',
|
|
22
|
-
preset = 'datepicker.calendar',
|
|
23
|
-
children: childrenProp,
|
|
24
|
-
Header = DatePickerHeader,
|
|
25
|
-
Weekdays = CalendarHeader,
|
|
26
|
-
Body = CalendarBody,
|
|
27
|
-
Day = CalendarDay,
|
|
28
|
-
Months = DatePickerMonths,
|
|
29
|
-
Years = DatePickerYears,
|
|
30
|
-
...restProps
|
|
31
|
-
}: DatePickerCalendarProps = $props();
|
|
32
|
-
|
|
33
|
-
const calendarProps = $derived({
|
|
34
|
-
...datePickerBond?.content(),
|
|
35
|
-
...datePickerBondProps,
|
|
36
|
-
...restProps
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
function handleChange(_: CustomEvent, { range, pivote }: { range: CalendarRange; pivote: Date }) {
|
|
40
|
-
if (!datePickerBond) return;
|
|
41
|
-
|
|
42
|
-
datePickerBond.state.props.range = range;
|
|
43
|
-
datePickerBond.state.props.pivote = pivote;
|
|
44
|
-
}
|
|
45
|
-
</script>
|
|
46
|
-
|
|
47
|
-
<Content
|
|
48
|
-
class={['relative overflow-hidden p-0', klass]}
|
|
49
|
-
base={Root}
|
|
50
|
-
onchange={handleChange}
|
|
51
|
-
{preset}
|
|
52
|
-
{...calendarProps}
|
|
53
|
-
>
|
|
54
|
-
<HtmlAtom base={Header} class="col-span-full" />
|
|
55
|
-
<HtmlAtom base={Weekdays} />
|
|
56
|
-
|
|
57
|
-
<HtmlAtom base={Body}>
|
|
58
|
-
{#snippet children({ day }: { day: CalendarDayType })}
|
|
59
|
-
<HtmlAtom base={Day} {day} class="flex items-center justify-center">
|
|
60
|
-
<span class="value">{day.dayOfMonth}</span>
|
|
61
|
-
</HtmlAtom>
|
|
62
|
-
{/snippet}
|
|
63
|
-
</HtmlAtom>
|
|
64
|
-
|
|
65
|
-
<HtmlAtom base={Months} />
|
|
66
|
-
<HtmlAtom base={Years} />
|
|
67
|
-
</Content>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Content } from '../popover/atoms';
|
|
3
|
+
import {
|
|
4
|
+
Root,
|
|
5
|
+
Header as CalendarHeader,
|
|
6
|
+
Body as CalendarBody,
|
|
7
|
+
Day as CalendarDay
|
|
8
|
+
} from '../calendar/atoms';
|
|
9
|
+
import { DatePickerBond } from './bond.svelte';
|
|
10
|
+
import DatePickerHeader from './date-picker-header.svelte';
|
|
11
|
+
import DatePickerMonths from './date-picker-months.svelte';
|
|
12
|
+
import DatePickerYears from './date-picker-years.svelte';
|
|
13
|
+
import { HtmlAtom } from '../atom';
|
|
14
|
+
import type { CalendarRange, Day as CalendarDayType } from '../calendar/types';
|
|
15
|
+
import type { DatePickerCalendarProps } from './types';
|
|
16
|
+
|
|
17
|
+
const datePickerBond = DatePickerBond.get();
|
|
18
|
+
const datePickerBondProps = $derived(datePickerBond?.state.props);
|
|
19
|
+
|
|
20
|
+
let {
|
|
21
|
+
class: klass = '',
|
|
22
|
+
preset = 'datepicker.calendar',
|
|
23
|
+
children: childrenProp,
|
|
24
|
+
Header = DatePickerHeader,
|
|
25
|
+
Weekdays = CalendarHeader,
|
|
26
|
+
Body = CalendarBody,
|
|
27
|
+
Day = CalendarDay,
|
|
28
|
+
Months = DatePickerMonths,
|
|
29
|
+
Years = DatePickerYears,
|
|
30
|
+
...restProps
|
|
31
|
+
}: DatePickerCalendarProps = $props();
|
|
32
|
+
|
|
33
|
+
const calendarProps = $derived({
|
|
34
|
+
...datePickerBond?.content(),
|
|
35
|
+
...datePickerBondProps,
|
|
36
|
+
...restProps
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
function handleChange(_: CustomEvent, { range, pivote }: { range: CalendarRange; pivote: Date }) {
|
|
40
|
+
if (!datePickerBond) return;
|
|
41
|
+
|
|
42
|
+
datePickerBond.state.props.range = range;
|
|
43
|
+
datePickerBond.state.props.pivote = pivote;
|
|
44
|
+
}
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<Content
|
|
48
|
+
class={['relative overflow-hidden p-0', klass]}
|
|
49
|
+
base={Root}
|
|
50
|
+
onchange={handleChange}
|
|
51
|
+
{preset}
|
|
52
|
+
{...calendarProps}
|
|
53
|
+
>
|
|
54
|
+
<HtmlAtom base={Header} class="col-span-full" />
|
|
55
|
+
<HtmlAtom base={Weekdays} class="border-0" />
|
|
56
|
+
|
|
57
|
+
<HtmlAtom base={Body}>
|
|
58
|
+
{#snippet children({ day }: { day: CalendarDayType })}
|
|
59
|
+
<HtmlAtom base={Day} {day} class="flex items-center justify-center border-0">
|
|
60
|
+
<span class="value">{day.dayOfMonth}</span>
|
|
61
|
+
</HtmlAtom>
|
|
62
|
+
{/snippet}
|
|
63
|
+
</HtmlAtom>
|
|
64
|
+
|
|
65
|
+
<HtmlAtom base={Months} />
|
|
66
|
+
<HtmlAtom base={Years} />
|
|
67
|
+
</Content>
|