@ark-ui/vue 5.17.0 → 5.18.0
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/collection/index.cjs +2 -0
- package/dist/components/collection/index.d.cts +1 -0
- package/dist/components/collection/index.d.ts +1 -0
- package/dist/components/collection/index.js +1 -0
- package/dist/components/collection/tree-collection.js +1 -1
- package/dist/components/collection/use-list-selection.cjs +115 -0
- package/dist/components/collection/use-list-selection.d.cts +104 -0
- package/dist/components/collection/use-list-selection.d.ts +104 -0
- package/dist/components/collection/use-list-selection.js +111 -0
- package/dist/components/file-upload/file-upload-root.vue.cjs +2 -1
- package/dist/components/file-upload/file-upload-root.vue.d.cts +2 -0
- package/dist/components/file-upload/file-upload-root.vue.d.ts +2 -0
- package/dist/components/file-upload/file-upload-root.vue.js +2 -1
- package/dist/components/file-upload/file-upload.types.d.cts +8 -0
- package/dist/components/file-upload/file-upload.types.d.ts +8 -0
- package/dist/components/file-upload/use-file-upload.cjs +1 -0
- package/dist/components/file-upload/use-file-upload.js +1 -0
- package/dist/components/index.cjs +10 -0
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +6 -0
- package/dist/components/json-tree-view/get-branch-value.cjs +18 -0
- package/dist/components/json-tree-view/get-branch-value.d.cts +3 -0
- package/dist/components/json-tree-view/get-branch-value.d.ts +3 -0
- package/dist/components/json-tree-view/get-branch-value.js +14 -0
- package/dist/components/json-tree-view/index.cjs +17 -0
- package/dist/components/json-tree-view/index.d.cts +5 -0
- package/dist/components/json-tree-view/index.d.ts +5 -0
- package/dist/components/json-tree-view/index.js +6 -0
- package/dist/components/json-tree-view/json-tree-view-key-node.vue.cjs +30 -0
- package/dist/components/json-tree-view/json-tree-view-key-node.vue.d.cts +14 -0
- package/dist/components/json-tree-view/json-tree-view-key-node.vue.d.ts +14 -0
- package/dist/components/json-tree-view/json-tree-view-key-node.vue.js +26 -0
- package/dist/components/json-tree-view/json-tree-view-key-node.vue2.cjs +9 -0
- package/dist/components/json-tree-view/json-tree-view-key-node.vue2.js +5 -0
- package/dist/components/json-tree-view/json-tree-view-node.vue.cjs +140 -0
- package/dist/components/json-tree-view/json-tree-view-node.vue.d.cts +28 -0
- package/dist/components/json-tree-view/json-tree-view-node.vue.d.ts +28 -0
- package/dist/components/json-tree-view/json-tree-view-node.vue.js +136 -0
- package/dist/components/json-tree-view/json-tree-view-node.vue2.cjs +9 -0
- package/dist/components/json-tree-view/json-tree-view-node.vue2.js +5 -0
- package/dist/components/json-tree-view/json-tree-view-props-context.cjs +10 -0
- package/dist/components/json-tree-view/json-tree-view-props-context.d.cts +9 -0
- package/dist/components/json-tree-view/json-tree-view-props-context.d.ts +9 -0
- package/dist/components/json-tree-view/json-tree-view-props-context.js +5 -0
- package/dist/components/json-tree-view/json-tree-view-root-provider.vue.cjs +28 -0
- package/dist/components/json-tree-view/json-tree-view-root-provider.vue.d.cts +22 -0
- package/dist/components/json-tree-view/json-tree-view-root-provider.vue.d.ts +22 -0
- package/dist/components/json-tree-view/json-tree-view-root-provider.vue.js +24 -0
- package/dist/components/json-tree-view/json-tree-view-root-provider.vue2.cjs +9 -0
- package/dist/components/json-tree-view/json-tree-view-root-provider.vue2.js +5 -0
- package/dist/components/json-tree-view/json-tree-view-root.vue.cjs +87 -0
- package/dist/components/json-tree-view/json-tree-view-root.vue.d.cts +37 -0
- package/dist/components/json-tree-view/json-tree-view-root.vue.d.ts +37 -0
- package/dist/components/json-tree-view/json-tree-view-root.vue.js +83 -0
- package/dist/components/json-tree-view/json-tree-view-root.vue2.cjs +9 -0
- package/dist/components/json-tree-view/json-tree-view-root.vue2.js +5 -0
- package/dist/components/json-tree-view/json-tree-view-tree.vue.cjs +51 -0
- package/dist/components/json-tree-view/json-tree-view-tree.vue.d.cts +27 -0
- package/dist/components/json-tree-view/json-tree-view-tree.vue.d.ts +27 -0
- package/dist/components/json-tree-view/json-tree-view-tree.vue.js +47 -0
- package/dist/components/json-tree-view/json-tree-view-tree.vue2.cjs +9 -0
- package/dist/components/json-tree-view/json-tree-view-tree.vue2.js +5 -0
- package/dist/components/json-tree-view/json-tree-view-value-node.vue.cjs +49 -0
- package/dist/components/json-tree-view/json-tree-view-value-node.vue.d.cts +28 -0
- package/dist/components/json-tree-view/json-tree-view-value-node.vue.d.ts +28 -0
- package/dist/components/json-tree-view/json-tree-view-value-node.vue.js +45 -0
- package/dist/components/json-tree-view/json-tree-view-value-node.vue2.cjs +9 -0
- package/dist/components/json-tree-view/json-tree-view-value-node.vue2.js +5 -0
- package/dist/components/json-tree-view/json-tree-view.cjs +13 -0
- package/dist/components/json-tree-view/json-tree-view.d.cts +3 -0
- package/dist/components/json-tree-view/json-tree-view.d.ts +3 -0
- package/dist/components/json-tree-view/json-tree-view.js +3 -0
- package/dist/components/json-tree-view/use-json-tree-view.cjs +30 -0
- package/dist/components/json-tree-view/use-json-tree-view.d.cts +10 -0
- package/dist/components/json-tree-view/use-json-tree-view.d.ts +10 -0
- package/dist/components/json-tree-view/use-json-tree-view.js +26 -0
- package/dist/components/password-input/password-input-context.vue.d.cts +9 -9
- package/dist/components/password-input/password-input-context.vue.d.ts +9 -9
- package/dist/components/signature-pad/signature-pad-root.vue.cjs +2 -1
- package/dist/components/signature-pad/signature-pad-root.vue.d.cts +2 -0
- package/dist/components/signature-pad/signature-pad-root.vue.d.ts +2 -0
- package/dist/components/signature-pad/signature-pad-root.vue.js +2 -1
- package/dist/components/signature-pad/signature-pad.types.d.cts +8 -0
- package/dist/components/signature-pad/signature-pad.types.d.ts +8 -0
- package/dist/components/signature-pad/use-signature-pad.cjs +1 -0
- package/dist/components/signature-pad/use-signature-pad.js +1 -0
- package/dist/components/tabs/tabs-root.vue.d.cts +1 -1
- package/dist/components/tabs/tabs-root.vue.d.ts +1 -1
- package/dist/components/toggle-group/toggle-group-root.vue.d.cts +1 -1
- package/dist/components/toggle-group/toggle-group-root.vue.d.ts +1 -1
- package/dist/components/tree-view/tree-view-root.vue.cjs +4 -1
- package/dist/components/tree-view/tree-view-root.vue.js +4 -1
- package/dist/index.cjs +10 -0
- package/dist/index.js +6 -0
- package/package.json +60 -59
|
@@ -6,6 +6,7 @@ const gridCollection = require('./grid-collection.cjs');
|
|
|
6
6
|
const listCollection = require('./list-collection.cjs');
|
|
7
7
|
const treeCollection = require('./tree-collection.cjs');
|
|
8
8
|
const useListCollection = require('./use-list-collection.cjs');
|
|
9
|
+
const useListSelection = require('./use-list-selection.cjs');
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
|
|
@@ -14,3 +15,4 @@ exports.createListCollection = listCollection.createListCollection;
|
|
|
14
15
|
exports.createFileTreeCollection = treeCollection.createFileTreeCollection;
|
|
15
16
|
exports.createTreeCollection = treeCollection.createTreeCollection;
|
|
16
17
|
exports.useListCollection = useListCollection.useListCollection;
|
|
18
|
+
exports.useListSelection = useListSelection.useListSelection;
|
|
@@ -2,3 +2,4 @@ export { createGridCollection, type GridCollection, type GridCollectionOptions }
|
|
|
2
2
|
export { createListCollection, type CollectionItem, type CollectionOptions, type ListCollection, } from './list-collection';
|
|
3
3
|
export { createFileTreeCollection, createTreeCollection, type FilePathTreeNode, type FlatTreeNode, type TreeCollection, type TreeCollectionOptions, type TreeNode, } from './tree-collection';
|
|
4
4
|
export { useListCollection, type UseListCollectionProps, type UseListCollectionReturn } from './use-list-collection';
|
|
5
|
+
export { useListSelection, type UseListSelectionProps, type UseListSelectionReturn } from './use-list-selection';
|
|
@@ -2,3 +2,4 @@ export { createGridCollection, type GridCollection, type GridCollectionOptions }
|
|
|
2
2
|
export { createListCollection, type CollectionItem, type CollectionOptions, type ListCollection, } from './list-collection';
|
|
3
3
|
export { createFileTreeCollection, createTreeCollection, type FilePathTreeNode, type FlatTreeNode, type TreeCollection, type TreeCollectionOptions, type TreeNode, } from './tree-collection';
|
|
4
4
|
export { useListCollection, type UseListCollectionProps, type UseListCollectionReturn } from './use-list-collection';
|
|
5
|
+
export { useListSelection, type UseListSelectionProps, type UseListSelectionReturn } from './use-list-selection';
|
|
@@ -2,3 +2,4 @@ export { createGridCollection } from './grid-collection.js';
|
|
|
2
2
|
export { createListCollection } from './list-collection.js';
|
|
3
3
|
export { createFileTreeCollection, createTreeCollection } from './tree-collection.js';
|
|
4
4
|
export { useListCollection } from './use-list-collection.js';
|
|
5
|
+
export { useListSelection } from './use-list-selection.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TreeCollection, filePathToTree } from '@zag-js/collection';
|
|
2
2
|
|
|
3
3
|
const createTreeCollection = (options) => new TreeCollection(options);
|
|
4
4
|
const createFileTreeCollection = (paths) => filePathToTree(paths);
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
|
|
5
|
+
const collection = require('@zag-js/collection');
|
|
6
|
+
const vue = require('vue');
|
|
7
|
+
|
|
8
|
+
function useListSelection(props) {
|
|
9
|
+
const resolvedProps = vue.computed(() => {
|
|
10
|
+
const {
|
|
11
|
+
collection,
|
|
12
|
+
selectionMode = "single",
|
|
13
|
+
deselectable = true,
|
|
14
|
+
initialSelectedValues = [],
|
|
15
|
+
resetOnCollectionChange = false
|
|
16
|
+
} = vue.toValue(props);
|
|
17
|
+
return { collection, selectionMode, deselectable, initialSelectedValues, resetOnCollectionChange };
|
|
18
|
+
});
|
|
19
|
+
const createSelection = (values = []) => {
|
|
20
|
+
const { selectionMode, deselectable } = resolvedProps.value;
|
|
21
|
+
const selection2 = new collection.Selection(values);
|
|
22
|
+
selection2.selectionMode = selectionMode;
|
|
23
|
+
selection2.deselectable = deselectable;
|
|
24
|
+
return selection2;
|
|
25
|
+
};
|
|
26
|
+
const init = () => {
|
|
27
|
+
const { initialSelectedValues } = resolvedProps.value;
|
|
28
|
+
return createSelection(initialSelectedValues);
|
|
29
|
+
};
|
|
30
|
+
const selection = vue.shallowRef(init());
|
|
31
|
+
vue.watch(
|
|
32
|
+
[() => resolvedProps.value.collection.getValues(), () => resolvedProps.value.resetOnCollectionChange],
|
|
33
|
+
([, resetOnCollectionChange]) => {
|
|
34
|
+
if (resetOnCollectionChange) {
|
|
35
|
+
selection.value = createSelection();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
const selectedValues = vue.computed(() => Array.from(selection.value));
|
|
40
|
+
const isEmpty = vue.computed(() => selection.value.isEmpty());
|
|
41
|
+
const firstSelectedValue = vue.computed(() => {
|
|
42
|
+
const { collection } = resolvedProps.value;
|
|
43
|
+
return selection.value.firstSelectedValue(collection);
|
|
44
|
+
});
|
|
45
|
+
const lastSelectedValue = vue.computed(() => {
|
|
46
|
+
const { collection } = resolvedProps.value;
|
|
47
|
+
return selection.value.lastSelectedValue(collection);
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
selectedValues,
|
|
51
|
+
isEmpty,
|
|
52
|
+
firstSelectedValue,
|
|
53
|
+
lastSelectedValue,
|
|
54
|
+
isSelected: (value) => {
|
|
55
|
+
return selection.value.isSelected(value);
|
|
56
|
+
},
|
|
57
|
+
isAllSelected: () => {
|
|
58
|
+
const { collection } = resolvedProps.value;
|
|
59
|
+
const allValues = collection.getValues();
|
|
60
|
+
return allValues.length > 0 && allValues.every((value) => selection.value.isSelected(value));
|
|
61
|
+
},
|
|
62
|
+
isSomeSelected: () => {
|
|
63
|
+
const { collection } = resolvedProps.value;
|
|
64
|
+
const allValues = collection.getValues();
|
|
65
|
+
return allValues.some((value) => selection.value.isSelected(value));
|
|
66
|
+
},
|
|
67
|
+
canSelect: (value) => {
|
|
68
|
+
const { collection } = resolvedProps.value;
|
|
69
|
+
return selection.value.canSelect(collection, value);
|
|
70
|
+
},
|
|
71
|
+
select: (value, forceToggle) => {
|
|
72
|
+
const { collection } = resolvedProps.value;
|
|
73
|
+
selection.value = selection.value.select(collection, value, forceToggle);
|
|
74
|
+
},
|
|
75
|
+
deselect: (value) => {
|
|
76
|
+
selection.value = selection.value.deselect(value);
|
|
77
|
+
},
|
|
78
|
+
toggle: (value) => {
|
|
79
|
+
const { collection } = resolvedProps.value;
|
|
80
|
+
selection.value = selection.value.toggleSelection(collection, value);
|
|
81
|
+
},
|
|
82
|
+
replace: (value) => {
|
|
83
|
+
const { collection } = resolvedProps.value;
|
|
84
|
+
selection.value = selection.value.replaceSelection(collection, value);
|
|
85
|
+
},
|
|
86
|
+
extend: (anchorValue, targetValue) => {
|
|
87
|
+
const { collection } = resolvedProps.value;
|
|
88
|
+
selection.value = selection.value.extendSelection(collection, anchorValue, targetValue);
|
|
89
|
+
},
|
|
90
|
+
setSelectedValues: (values) => {
|
|
91
|
+
selection.value = selection.value.setSelection(values);
|
|
92
|
+
},
|
|
93
|
+
clear: () => {
|
|
94
|
+
selection.value = selection.value.clearSelection();
|
|
95
|
+
},
|
|
96
|
+
resetSelection: () => {
|
|
97
|
+
selection.value = createSelection();
|
|
98
|
+
},
|
|
99
|
+
setSelection: (newSelection) => {
|
|
100
|
+
selection.value = selection.value.setSelection(newSelection);
|
|
101
|
+
},
|
|
102
|
+
setSelectionMode: (mode) => {
|
|
103
|
+
const newSelection = selection.value.copy();
|
|
104
|
+
newSelection.selectionMode = mode;
|
|
105
|
+
selection.value = newSelection;
|
|
106
|
+
},
|
|
107
|
+
setDeselectable: (deselectable) => {
|
|
108
|
+
const newSelection = selection.value.copy();
|
|
109
|
+
newSelection.deselectable = deselectable;
|
|
110
|
+
selection.value = newSelection;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
exports.useListSelection = useListSelection;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { SelectionMode } from '@zag-js/collection';
|
|
2
|
+
import { MaybeRef, Ref } from 'vue';
|
|
3
|
+
import { CollectionItem, ListCollection } from './list-collection';
|
|
4
|
+
export interface UseListSelectionProps<T extends CollectionItem> {
|
|
5
|
+
/**
|
|
6
|
+
* The selection mode.
|
|
7
|
+
*/
|
|
8
|
+
selectionMode?: SelectionMode;
|
|
9
|
+
/**
|
|
10
|
+
* Whether the selection is deselectable.
|
|
11
|
+
*/
|
|
12
|
+
deselectable?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The initial selected values.
|
|
15
|
+
*/
|
|
16
|
+
initialSelectedValues?: string[];
|
|
17
|
+
/**
|
|
18
|
+
* Whether to reset the selection when the collection changes.
|
|
19
|
+
*/
|
|
20
|
+
resetOnCollectionChange?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The collection to use.
|
|
23
|
+
*/
|
|
24
|
+
collection: ListCollection<T>;
|
|
25
|
+
}
|
|
26
|
+
export declare function useListSelection<T extends CollectionItem>(props: MaybeRef<UseListSelectionProps<T>>): UseListSelectionReturn;
|
|
27
|
+
export interface UseListSelectionReturn {
|
|
28
|
+
/**
|
|
29
|
+
* The selected values as an array.
|
|
30
|
+
*/
|
|
31
|
+
selectedValues: Ref<string[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the selection is empty.
|
|
34
|
+
*/
|
|
35
|
+
isEmpty: Ref<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* The first selected value.
|
|
38
|
+
*/
|
|
39
|
+
firstSelectedValue: Ref<string | null>;
|
|
40
|
+
/**
|
|
41
|
+
* The last selected value.
|
|
42
|
+
*/
|
|
43
|
+
lastSelectedValue: Ref<string | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Check if a value is selected.
|
|
46
|
+
*/
|
|
47
|
+
isSelected: (value: string | null) => boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if a value can be selected.
|
|
50
|
+
*/
|
|
51
|
+
canSelect: (value: string) => boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Select a value.
|
|
54
|
+
*/
|
|
55
|
+
select: (value: string, forceToggle?: boolean) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Deselect a value.
|
|
58
|
+
*/
|
|
59
|
+
deselect: (value: string) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Toggle selection of a value.
|
|
62
|
+
*/
|
|
63
|
+
toggle: (value: string) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Replace the selection with a single value.
|
|
66
|
+
*/
|
|
67
|
+
replace: (value: string | null) => void;
|
|
68
|
+
/**
|
|
69
|
+
* Extend the selection from anchor to target.
|
|
70
|
+
*/
|
|
71
|
+
extend: (anchorValue: string, targetValue: string) => void;
|
|
72
|
+
/**
|
|
73
|
+
* Set the selected values.
|
|
74
|
+
*/
|
|
75
|
+
setSelectedValues: (values: string[]) => void;
|
|
76
|
+
/**
|
|
77
|
+
* Clear the selection.
|
|
78
|
+
*/
|
|
79
|
+
clear: () => void;
|
|
80
|
+
/**
|
|
81
|
+
* Clear all selections.
|
|
82
|
+
*/
|
|
83
|
+
resetSelection: () => void;
|
|
84
|
+
/**
|
|
85
|
+
* Returns true if all items from the collection are selected.
|
|
86
|
+
*/
|
|
87
|
+
isAllSelected: () => boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Returns true if at least one item from the collection is selected.
|
|
90
|
+
*/
|
|
91
|
+
isSomeSelected: () => boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Set the selection to a specific array of items.
|
|
94
|
+
*/
|
|
95
|
+
setSelection: (selection: string[]) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Set the selection mode.
|
|
98
|
+
*/
|
|
99
|
+
setSelectionMode: (mode: SelectionMode) => void;
|
|
100
|
+
/**
|
|
101
|
+
* Set whether the selection is deselectable.
|
|
102
|
+
*/
|
|
103
|
+
setDeselectable: (deselectable: boolean) => void;
|
|
104
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { SelectionMode } from '@zag-js/collection';
|
|
2
|
+
import { MaybeRef, Ref } from 'vue';
|
|
3
|
+
import { CollectionItem, ListCollection } from './list-collection';
|
|
4
|
+
export interface UseListSelectionProps<T extends CollectionItem> {
|
|
5
|
+
/**
|
|
6
|
+
* The selection mode.
|
|
7
|
+
*/
|
|
8
|
+
selectionMode?: SelectionMode;
|
|
9
|
+
/**
|
|
10
|
+
* Whether the selection is deselectable.
|
|
11
|
+
*/
|
|
12
|
+
deselectable?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The initial selected values.
|
|
15
|
+
*/
|
|
16
|
+
initialSelectedValues?: string[];
|
|
17
|
+
/**
|
|
18
|
+
* Whether to reset the selection when the collection changes.
|
|
19
|
+
*/
|
|
20
|
+
resetOnCollectionChange?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The collection to use.
|
|
23
|
+
*/
|
|
24
|
+
collection: ListCollection<T>;
|
|
25
|
+
}
|
|
26
|
+
export declare function useListSelection<T extends CollectionItem>(props: MaybeRef<UseListSelectionProps<T>>): UseListSelectionReturn;
|
|
27
|
+
export interface UseListSelectionReturn {
|
|
28
|
+
/**
|
|
29
|
+
* The selected values as an array.
|
|
30
|
+
*/
|
|
31
|
+
selectedValues: Ref<string[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the selection is empty.
|
|
34
|
+
*/
|
|
35
|
+
isEmpty: Ref<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* The first selected value.
|
|
38
|
+
*/
|
|
39
|
+
firstSelectedValue: Ref<string | null>;
|
|
40
|
+
/**
|
|
41
|
+
* The last selected value.
|
|
42
|
+
*/
|
|
43
|
+
lastSelectedValue: Ref<string | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Check if a value is selected.
|
|
46
|
+
*/
|
|
47
|
+
isSelected: (value: string | null) => boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if a value can be selected.
|
|
50
|
+
*/
|
|
51
|
+
canSelect: (value: string) => boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Select a value.
|
|
54
|
+
*/
|
|
55
|
+
select: (value: string, forceToggle?: boolean) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Deselect a value.
|
|
58
|
+
*/
|
|
59
|
+
deselect: (value: string) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Toggle selection of a value.
|
|
62
|
+
*/
|
|
63
|
+
toggle: (value: string) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Replace the selection with a single value.
|
|
66
|
+
*/
|
|
67
|
+
replace: (value: string | null) => void;
|
|
68
|
+
/**
|
|
69
|
+
* Extend the selection from anchor to target.
|
|
70
|
+
*/
|
|
71
|
+
extend: (anchorValue: string, targetValue: string) => void;
|
|
72
|
+
/**
|
|
73
|
+
* Set the selected values.
|
|
74
|
+
*/
|
|
75
|
+
setSelectedValues: (values: string[]) => void;
|
|
76
|
+
/**
|
|
77
|
+
* Clear the selection.
|
|
78
|
+
*/
|
|
79
|
+
clear: () => void;
|
|
80
|
+
/**
|
|
81
|
+
* Clear all selections.
|
|
82
|
+
*/
|
|
83
|
+
resetSelection: () => void;
|
|
84
|
+
/**
|
|
85
|
+
* Returns true if all items from the collection are selected.
|
|
86
|
+
*/
|
|
87
|
+
isAllSelected: () => boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Returns true if at least one item from the collection is selected.
|
|
90
|
+
*/
|
|
91
|
+
isSomeSelected: () => boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Set the selection to a specific array of items.
|
|
94
|
+
*/
|
|
95
|
+
setSelection: (selection: string[]) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Set the selection mode.
|
|
98
|
+
*/
|
|
99
|
+
setSelectionMode: (mode: SelectionMode) => void;
|
|
100
|
+
/**
|
|
101
|
+
* Set whether the selection is deselectable.
|
|
102
|
+
*/
|
|
103
|
+
setDeselectable: (deselectable: boolean) => void;
|
|
104
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Selection } from '@zag-js/collection';
|
|
2
|
+
import { computed, toValue, shallowRef, watch } from 'vue';
|
|
3
|
+
|
|
4
|
+
function useListSelection(props) {
|
|
5
|
+
const resolvedProps = computed(() => {
|
|
6
|
+
const {
|
|
7
|
+
collection,
|
|
8
|
+
selectionMode = "single",
|
|
9
|
+
deselectable = true,
|
|
10
|
+
initialSelectedValues = [],
|
|
11
|
+
resetOnCollectionChange = false
|
|
12
|
+
} = toValue(props);
|
|
13
|
+
return { collection, selectionMode, deselectable, initialSelectedValues, resetOnCollectionChange };
|
|
14
|
+
});
|
|
15
|
+
const createSelection = (values = []) => {
|
|
16
|
+
const { selectionMode, deselectable } = resolvedProps.value;
|
|
17
|
+
const selection2 = new Selection(values);
|
|
18
|
+
selection2.selectionMode = selectionMode;
|
|
19
|
+
selection2.deselectable = deselectable;
|
|
20
|
+
return selection2;
|
|
21
|
+
};
|
|
22
|
+
const init = () => {
|
|
23
|
+
const { initialSelectedValues } = resolvedProps.value;
|
|
24
|
+
return createSelection(initialSelectedValues);
|
|
25
|
+
};
|
|
26
|
+
const selection = shallowRef(init());
|
|
27
|
+
watch(
|
|
28
|
+
[() => resolvedProps.value.collection.getValues(), () => resolvedProps.value.resetOnCollectionChange],
|
|
29
|
+
([, resetOnCollectionChange]) => {
|
|
30
|
+
if (resetOnCollectionChange) {
|
|
31
|
+
selection.value = createSelection();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
const selectedValues = computed(() => Array.from(selection.value));
|
|
36
|
+
const isEmpty = computed(() => selection.value.isEmpty());
|
|
37
|
+
const firstSelectedValue = computed(() => {
|
|
38
|
+
const { collection } = resolvedProps.value;
|
|
39
|
+
return selection.value.firstSelectedValue(collection);
|
|
40
|
+
});
|
|
41
|
+
const lastSelectedValue = computed(() => {
|
|
42
|
+
const { collection } = resolvedProps.value;
|
|
43
|
+
return selection.value.lastSelectedValue(collection);
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
selectedValues,
|
|
47
|
+
isEmpty,
|
|
48
|
+
firstSelectedValue,
|
|
49
|
+
lastSelectedValue,
|
|
50
|
+
isSelected: (value) => {
|
|
51
|
+
return selection.value.isSelected(value);
|
|
52
|
+
},
|
|
53
|
+
isAllSelected: () => {
|
|
54
|
+
const { collection } = resolvedProps.value;
|
|
55
|
+
const allValues = collection.getValues();
|
|
56
|
+
return allValues.length > 0 && allValues.every((value) => selection.value.isSelected(value));
|
|
57
|
+
},
|
|
58
|
+
isSomeSelected: () => {
|
|
59
|
+
const { collection } = resolvedProps.value;
|
|
60
|
+
const allValues = collection.getValues();
|
|
61
|
+
return allValues.some((value) => selection.value.isSelected(value));
|
|
62
|
+
},
|
|
63
|
+
canSelect: (value) => {
|
|
64
|
+
const { collection } = resolvedProps.value;
|
|
65
|
+
return selection.value.canSelect(collection, value);
|
|
66
|
+
},
|
|
67
|
+
select: (value, forceToggle) => {
|
|
68
|
+
const { collection } = resolvedProps.value;
|
|
69
|
+
selection.value = selection.value.select(collection, value, forceToggle);
|
|
70
|
+
},
|
|
71
|
+
deselect: (value) => {
|
|
72
|
+
selection.value = selection.value.deselect(value);
|
|
73
|
+
},
|
|
74
|
+
toggle: (value) => {
|
|
75
|
+
const { collection } = resolvedProps.value;
|
|
76
|
+
selection.value = selection.value.toggleSelection(collection, value);
|
|
77
|
+
},
|
|
78
|
+
replace: (value) => {
|
|
79
|
+
const { collection } = resolvedProps.value;
|
|
80
|
+
selection.value = selection.value.replaceSelection(collection, value);
|
|
81
|
+
},
|
|
82
|
+
extend: (anchorValue, targetValue) => {
|
|
83
|
+
const { collection } = resolvedProps.value;
|
|
84
|
+
selection.value = selection.value.extendSelection(collection, anchorValue, targetValue);
|
|
85
|
+
},
|
|
86
|
+
setSelectedValues: (values) => {
|
|
87
|
+
selection.value = selection.value.setSelection(values);
|
|
88
|
+
},
|
|
89
|
+
clear: () => {
|
|
90
|
+
selection.value = selection.value.clearSelection();
|
|
91
|
+
},
|
|
92
|
+
resetSelection: () => {
|
|
93
|
+
selection.value = createSelection();
|
|
94
|
+
},
|
|
95
|
+
setSelection: (newSelection) => {
|
|
96
|
+
selection.value = selection.value.setSelection(newSelection);
|
|
97
|
+
},
|
|
98
|
+
setSelectionMode: (mode) => {
|
|
99
|
+
const newSelection = selection.value.copy();
|
|
100
|
+
newSelection.selectionMode = mode;
|
|
101
|
+
selection.value = newSelection;
|
|
102
|
+
},
|
|
103
|
+
setDeselectable: (deselectable) => {
|
|
104
|
+
const newSelection = selection.value.copy();
|
|
105
|
+
newSelection.deselectable = deselectable;
|
|
106
|
+
selection.value = newSelection;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export { useListSelection };
|
|
@@ -12,6 +12,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
12
12
|
__name: "file-upload-root",
|
|
13
13
|
props: /* @__PURE__ */ vue.mergeDefaults({
|
|
14
14
|
accept: {},
|
|
15
|
+
defaultAcceptedFiles: {},
|
|
15
16
|
allowDrop: { type: Boolean },
|
|
16
17
|
capture: {},
|
|
17
18
|
directory: { type: Boolean },
|
|
@@ -38,7 +39,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
38
39
|
preventDocumentDrop: void 0,
|
|
39
40
|
required: void 0
|
|
40
41
|
}),
|
|
41
|
-
emits: ["fileAccept", "fileChange", "fileReject"],
|
|
42
|
+
emits: ["update:acceptedFiles", "fileAccept", "fileChange", "fileReject"],
|
|
42
43
|
setup(__props, { emit: __emit }) {
|
|
43
44
|
const props = __props;
|
|
44
45
|
const emits = __emit;
|
|
@@ -13,10 +13,12 @@ HTMLAttributes {
|
|
|
13
13
|
export interface FileUploadRootEmits extends RootEmits {
|
|
14
14
|
}
|
|
15
15
|
declare const _default: __VLS_WithTemplateSlots< DefineComponent<FileUploadRootProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
16
|
+
"update:acceptedFiles": (files: File[]) => any;
|
|
16
17
|
fileAccept: (details: FileAcceptDetails) => any;
|
|
17
18
|
fileChange: (details: FileChangeDetails) => any;
|
|
18
19
|
fileReject: (details: FileRejectDetails) => any;
|
|
19
20
|
}, string, PublicProps, Readonly<FileUploadRootProps> & Readonly<{
|
|
21
|
+
"onUpdate:acceptedFiles"?: ((files: File[]) => any) | undefined;
|
|
20
22
|
onFileAccept?: ((details: FileAcceptDetails) => any) | undefined;
|
|
21
23
|
onFileChange?: ((details: FileChangeDetails) => any) | undefined;
|
|
22
24
|
onFileReject?: ((details: FileRejectDetails) => any) | undefined;
|
|
@@ -13,10 +13,12 @@ HTMLAttributes {
|
|
|
13
13
|
export interface FileUploadRootEmits extends RootEmits {
|
|
14
14
|
}
|
|
15
15
|
declare const _default: __VLS_WithTemplateSlots< DefineComponent<FileUploadRootProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
16
|
+
"update:acceptedFiles": (files: File[]) => any;
|
|
16
17
|
fileAccept: (details: FileAcceptDetails) => any;
|
|
17
18
|
fileChange: (details: FileChangeDetails) => any;
|
|
18
19
|
fileReject: (details: FileRejectDetails) => any;
|
|
19
20
|
}, string, PublicProps, Readonly<FileUploadRootProps> & Readonly<{
|
|
21
|
+
"onUpdate:acceptedFiles"?: ((files: File[]) => any) | undefined;
|
|
20
22
|
onFileAccept?: ((details: FileAcceptDetails) => any) | undefined;
|
|
21
23
|
onFileChange?: ((details: FileChangeDetails) => any) | undefined;
|
|
22
24
|
onFileReject?: ((details: FileRejectDetails) => any) | undefined;
|
|
@@ -8,6 +8,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
8
8
|
__name: "file-upload-root",
|
|
9
9
|
props: /* @__PURE__ */ mergeDefaults({
|
|
10
10
|
accept: {},
|
|
11
|
+
defaultAcceptedFiles: {},
|
|
11
12
|
allowDrop: { type: Boolean },
|
|
12
13
|
capture: {},
|
|
13
14
|
directory: { type: Boolean },
|
|
@@ -34,7 +35,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
34
35
|
preventDocumentDrop: void 0,
|
|
35
36
|
required: void 0
|
|
36
37
|
}),
|
|
37
|
-
emits: ["fileAccept", "fileChange", "fileReject"],
|
|
38
|
+
emits: ["update:acceptedFiles", "fileAccept", "fileChange", "fileReject"],
|
|
38
39
|
setup(__props, { emit: __emit }) {
|
|
39
40
|
const props = __props;
|
|
40
41
|
const emits = __emit;
|
|
@@ -4,6 +4,10 @@ export interface RootProps {
|
|
|
4
4
|
* The accept file types
|
|
5
5
|
*/
|
|
6
6
|
accept?: Record<string, string[]> | fileUpload.FileMimeType | fileUpload.FileMimeType[];
|
|
7
|
+
/**
|
|
8
|
+
* The default accepted files
|
|
9
|
+
*/
|
|
10
|
+
defaultAcceptedFiles?: File[];
|
|
7
11
|
/**
|
|
8
12
|
* Whether to allow drag and drop in the dropzone element
|
|
9
13
|
* @default true
|
|
@@ -92,6 +96,10 @@ export interface RootProps {
|
|
|
92
96
|
transformFiles?: (files: File[]) => Promise<File[]>;
|
|
93
97
|
}
|
|
94
98
|
export type RootEmits = {
|
|
99
|
+
/**
|
|
100
|
+
* Function called when the accepted files change
|
|
101
|
+
*/
|
|
102
|
+
'update:acceptedFiles': [files: File[]];
|
|
95
103
|
/**
|
|
96
104
|
* Function called when the file is accepted
|
|
97
105
|
*/
|
|
@@ -4,6 +4,10 @@ export interface RootProps {
|
|
|
4
4
|
* The accept file types
|
|
5
5
|
*/
|
|
6
6
|
accept?: Record<string, string[]> | fileUpload.FileMimeType | fileUpload.FileMimeType[];
|
|
7
|
+
/**
|
|
8
|
+
* The default accepted files
|
|
9
|
+
*/
|
|
10
|
+
defaultAcceptedFiles?: File[];
|
|
7
11
|
/**
|
|
8
12
|
* Whether to allow drag and drop in the dropzone element
|
|
9
13
|
* @default true
|
|
@@ -92,6 +96,10 @@ export interface RootProps {
|
|
|
92
96
|
transformFiles?: (files: File[]) => Promise<File[]>;
|
|
93
97
|
}
|
|
94
98
|
export type RootEmits = {
|
|
99
|
+
/**
|
|
100
|
+
* Function called when the accepted files change
|
|
101
|
+
*/
|
|
102
|
+
'update:acceptedFiles': [files: File[]];
|
|
95
103
|
/**
|
|
96
104
|
* Function called when the file is accepted
|
|
97
105
|
*/
|
|
@@ -50,6 +50,7 @@ const useFileUpload = (props = {}, emit) => {
|
|
|
50
50
|
getRootNode: env?.value.getRootNode,
|
|
51
51
|
...cleanProps.cleanProps(localeProps),
|
|
52
52
|
onFileChange: (details) => {
|
|
53
|
+
emit?.("update:acceptedFiles", details.acceptedFiles);
|
|
53
54
|
emit?.("fileChange", details);
|
|
54
55
|
localeProps.onFileChange?.(details);
|
|
55
56
|
},
|
|
@@ -27,6 +27,7 @@ const useFileUpload = (props = {}, emit) => {
|
|
|
27
27
|
getRootNode: env?.value.getRootNode,
|
|
28
28
|
...cleanProps(localeProps),
|
|
29
29
|
onFileChange: (details) => {
|
|
30
|
+
emit?.("update:acceptedFiles", details.acceptedFiles);
|
|
30
31
|
emit?.("fileChange", details);
|
|
31
32
|
localeProps.onFileChange?.(details);
|
|
32
33
|
},
|
|
@@ -282,6 +282,11 @@ const hoverCardTrigger_vue_vue_type_script_setup_true_lang = require('./hover-ca
|
|
|
282
282
|
const useHoverCard = require('./hover-card/use-hover-card.cjs');
|
|
283
283
|
const useHoverCardContext = require('./hover-card/use-hover-card-context.cjs');
|
|
284
284
|
const hoverCard$1 = require('./hover-card/hover-card.cjs');
|
|
285
|
+
const jsonTreeViewRoot_vue_vue_type_script_setup_true_lang = require('./json-tree-view/json-tree-view-root.vue.cjs');
|
|
286
|
+
const jsonTreeViewRootProvider_vue_vue_type_script_setup_true_lang = require('./json-tree-view/json-tree-view-root-provider.vue.cjs');
|
|
287
|
+
const jsonTreeViewTree_vue_vue_type_script_setup_true_lang = require('./json-tree-view/json-tree-view-tree.vue.cjs');
|
|
288
|
+
const useJsonTreeView = require('./json-tree-view/use-json-tree-view.cjs');
|
|
289
|
+
const jsonTreeView = require('./json-tree-view/json-tree-view.cjs');
|
|
285
290
|
const listboxContext_vue_vue_type_script_setup_true_lang = require('./listbox/listbox-context.vue.cjs');
|
|
286
291
|
const listboxContent_vue_vue_type_script_setup_true_lang = require('./listbox/listbox-content.vue.cjs');
|
|
287
292
|
const listboxInput_vue_vue_type_script_setup_true_lang = require('./listbox/listbox-input.vue.cjs');
|
|
@@ -1000,6 +1005,11 @@ exports.HoverCardTrigger = hoverCardTrigger_vue_vue_type_script_setup_true_lang.
|
|
|
1000
1005
|
exports.useHoverCard = useHoverCard.useHoverCard;
|
|
1001
1006
|
exports.useHoverCardContext = useHoverCardContext.useHoverCardContext;
|
|
1002
1007
|
exports.HoverCard = hoverCard$1;
|
|
1008
|
+
exports.JsonTreeViewRoot = jsonTreeViewRoot_vue_vue_type_script_setup_true_lang.default;
|
|
1009
|
+
exports.JsonTreeViewRootProvider = jsonTreeViewRootProvider_vue_vue_type_script_setup_true_lang.default;
|
|
1010
|
+
exports.JsonTreeViewTree = jsonTreeViewTree_vue_vue_type_script_setup_true_lang.default;
|
|
1011
|
+
exports.useJsonTreeView = useJsonTreeView.useJsonTreeView;
|
|
1012
|
+
exports.JsonTreeView = jsonTreeView;
|
|
1003
1013
|
exports.ListboxContext = listboxContext_vue_vue_type_script_setup_true_lang.default;
|
|
1004
1014
|
exports.ListboxContent = listboxContent_vue_vue_type_script_setup_true_lang.default;
|
|
1005
1015
|
exports.ListboxInput = listboxInput_vue_vue_type_script_setup_true_lang.default;
|
package/dist/components/index.js
CHANGED
|
@@ -296,6 +296,12 @@ export { useHoverCard } from './hover-card/use-hover-card.js';
|
|
|
296
296
|
export { useHoverCardContext } from './hover-card/use-hover-card-context.js';
|
|
297
297
|
import * as hoverCard from './hover-card/hover-card.js';
|
|
298
298
|
export { hoverCard as HoverCard };
|
|
299
|
+
export { default as JsonTreeViewRoot } from './json-tree-view/json-tree-view-root.vue.js';
|
|
300
|
+
export { default as JsonTreeViewRootProvider } from './json-tree-view/json-tree-view-root-provider.vue.js';
|
|
301
|
+
export { default as JsonTreeViewTree } from './json-tree-view/json-tree-view-tree.vue.js';
|
|
302
|
+
export { useJsonTreeView } from './json-tree-view/use-json-tree-view.js';
|
|
303
|
+
import * as jsonTreeView from './json-tree-view/json-tree-view.js';
|
|
304
|
+
export { jsonTreeView as JsonTreeView };
|
|
299
305
|
export { default as ListboxContext } from './listbox/listbox-context.vue.js';
|
|
300
306
|
export { default as ListboxContent } from './listbox/listbox-content.vue.js';
|
|
301
307
|
export { default as ListboxInput } from './listbox/listbox-input.vue.js';
|