@v-c/tree-select 1.0.0 → 1.0.1
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/package.json +5 -5
- package/dist/LegacyContext.cjs +0 -12
- package/dist/OptionList.cjs +0 -230
- package/dist/TreeNode.cjs +0 -11
- package/dist/TreeSelect.cjs +0 -953
- package/dist/TreeSelectContext.cjs +0 -12
- package/dist/_virtual/rolldown_runtime.cjs +0 -21
- package/dist/hooks/useCache.cjs +0 -25
- package/dist/hooks/useCheckedKeys.cjs +0 -25
- package/dist/hooks/useDataEntities.cjs +0 -40
- package/dist/hooks/useFilterTreeData.cjs +0 -28
- package/dist/hooks/useRefFunc.cjs +0 -15
- package/dist/hooks/useSearchConfig.cjs +0 -23
- package/dist/hooks/useTreeData.cjs +0 -43
- package/dist/index.cjs +0 -18
- package/dist/interface.cjs +0 -1
- package/dist/utils/legacyUtil.cjs +0 -85
- package/dist/utils/strategyUtil.cjs +0 -22
- package/dist/utils/valueUtil.cjs +0 -36
- package/dist/utils/warningPropsUtil.cjs +0 -18
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@v-c/tree-select",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
".": {
|
|
16
16
|
"types": "./dist/index.d.ts",
|
|
17
17
|
"import": "./dist/index.js",
|
|
18
|
-
"
|
|
18
|
+
"default": "./dist/index.js"
|
|
19
19
|
},
|
|
20
20
|
"./dist/*": "./dist/*",
|
|
21
21
|
"./package.json": "./package.json"
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"vue": "^3.0.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@v-c/select": "^1.0.
|
|
33
|
-
"@v-c/tree": "^1.0.
|
|
34
|
-
"@v-c/util": "^1.0.
|
|
32
|
+
"@v-c/select": "^1.0.10",
|
|
33
|
+
"@v-c/tree": "^1.0.3",
|
|
34
|
+
"@v-c/util": "^1.0.14"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "vite build",
|
package/dist/LegacyContext.cjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
|
|
3
|
-
let vue = require("vue");
|
|
4
|
-
var LegacyContextKey = Symbol("LegacyTreeSelectContext");
|
|
5
|
-
function useLegacyProvider(value) {
|
|
6
|
-
(0, vue.provide)(LegacyContextKey, value);
|
|
7
|
-
}
|
|
8
|
-
function useLegacyContext() {
|
|
9
|
-
return (0, vue.inject)(LegacyContextKey, (0, vue.ref)(null));
|
|
10
|
-
}
|
|
11
|
-
exports.useLegacyContext = useLegacyContext;
|
|
12
|
-
exports.useLegacyProvider = useLegacyProvider;
|
package/dist/OptionList.cjs
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
Object.defineProperties(exports, {
|
|
2
|
-
__esModule: { value: true },
|
|
3
|
-
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
-
});
|
|
5
|
-
const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
|
|
6
|
-
const require_LegacyContext = require("./LegacyContext.cjs");
|
|
7
|
-
const require_TreeSelectContext = require("./TreeSelectContext.cjs");
|
|
8
|
-
const require_valueUtil = require("./utils/valueUtil.cjs");
|
|
9
|
-
let vue = require("vue");
|
|
10
|
-
let _v_c_select = require("@v-c/select");
|
|
11
|
-
let _v_c_tree = require("@v-c/tree");
|
|
12
|
-
_v_c_tree = require_rolldown_runtime.__toESM(_v_c_tree);
|
|
13
|
-
let _v_c_util = require("@v-c/util");
|
|
14
|
-
var HIDDEN_STYLE = {
|
|
15
|
-
width: 0,
|
|
16
|
-
height: 0,
|
|
17
|
-
display: "flex",
|
|
18
|
-
overflow: "hidden",
|
|
19
|
-
opacity: 0,
|
|
20
|
-
border: 0,
|
|
21
|
-
padding: 0,
|
|
22
|
-
margin: 0
|
|
23
|
-
};
|
|
24
|
-
var OptionList = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
25
|
-
name: "OptionList",
|
|
26
|
-
inheritAttrs: false,
|
|
27
|
-
setup(_, { expose }) {
|
|
28
|
-
const baseProps = (0, _v_c_select.useBaseProps)();
|
|
29
|
-
const context = require_TreeSelectContext.useTreeSelectContext();
|
|
30
|
-
const legacyContext = require_LegacyContext.useLegacyContext();
|
|
31
|
-
const treeRef = (0, vue.ref)(null);
|
|
32
|
-
const memoTreeData = (0, vue.computed)(() => context.value?.treeData || []);
|
|
33
|
-
const mergedCheckedKeys = (0, vue.computed)(() => {
|
|
34
|
-
if (!legacyContext.value?.checkable) return null;
|
|
35
|
-
return {
|
|
36
|
-
checked: legacyContext.value.checkedKeys,
|
|
37
|
-
halfChecked: legacyContext.value.halfCheckedKeys
|
|
38
|
-
};
|
|
39
|
-
});
|
|
40
|
-
(0, vue.watch)(() => baseProps.value?.open, (open) => {
|
|
41
|
-
if (open && !baseProps.value?.multiple && legacyContext.value?.checkedKeys?.length) treeRef.value?.scrollTo({ key: legacyContext.value.checkedKeys[0] });
|
|
42
|
-
}, { immediate: true });
|
|
43
|
-
const onListMouseDown = (event) => {
|
|
44
|
-
event.preventDefault();
|
|
45
|
-
};
|
|
46
|
-
const onInternalSelect = (_$1, info) => {
|
|
47
|
-
const { node } = info;
|
|
48
|
-
if (legacyContext.value?.checkable && require_valueUtil.isCheckDisabled(node)) return;
|
|
49
|
-
const checkedKeys = legacyContext.value?.checkedKeys || [];
|
|
50
|
-
context.value?.onSelect(node.key, {
|
|
51
|
-
selected: !checkedKeys.includes(node.key),
|
|
52
|
-
source: "option"
|
|
53
|
-
});
|
|
54
|
-
if (!baseProps.value?.multiple) baseProps.value?.toggleOpen(false);
|
|
55
|
-
};
|
|
56
|
-
const expandedKeys = (0, vue.ref)(legacyContext.value?.treeDefaultExpandedKeys || []);
|
|
57
|
-
const searchExpandedKeys = (0, vue.ref)(null);
|
|
58
|
-
const mergedExpandedKeys = (0, vue.computed)(() => {
|
|
59
|
-
if (legacyContext.value?.treeExpandedKeys) return [...legacyContext.value.treeExpandedKeys];
|
|
60
|
-
if (baseProps.value?.searchValue) return searchExpandedKeys.value || expandedKeys.value || [];
|
|
61
|
-
return expandedKeys.value;
|
|
62
|
-
});
|
|
63
|
-
const onInternalExpand = (keys) => {
|
|
64
|
-
expandedKeys.value = keys;
|
|
65
|
-
searchExpandedKeys.value = keys;
|
|
66
|
-
legacyContext.value?.onTreeExpand?.(keys);
|
|
67
|
-
};
|
|
68
|
-
const filterTreeNode = (treeNode) => {
|
|
69
|
-
const searchValue = String(baseProps.value?.searchValue || "");
|
|
70
|
-
if (!searchValue) return false;
|
|
71
|
-
const lowerSearchValue = searchValue.toLowerCase();
|
|
72
|
-
const treeNodeFilterProp = legacyContext.value?.treeNodeFilterProp || "value";
|
|
73
|
-
return String(treeNode?.[treeNodeFilterProp]).toLowerCase().includes(lowerSearchValue);
|
|
74
|
-
};
|
|
75
|
-
(0, vue.watch)(() => baseProps.value?.searchValue, (val) => {
|
|
76
|
-
if (val) searchExpandedKeys.value = require_valueUtil.getAllKeys(memoTreeData.value, context.value?.fieldNames || {});
|
|
77
|
-
}, { immediate: true });
|
|
78
|
-
const disabledCache = (0, vue.shallowRef)(/* @__PURE__ */ new Map());
|
|
79
|
-
(0, vue.watch)(() => context.value?.leftMaxCount, (val) => {
|
|
80
|
-
if (val) disabledCache.value = /* @__PURE__ */ new Map();
|
|
81
|
-
}, { immediate: true });
|
|
82
|
-
function getDisabledWithCache(node) {
|
|
83
|
-
const value = node[context.value.fieldNames.value];
|
|
84
|
-
if (!disabledCache.value.has(value)) {
|
|
85
|
-
const entity = context.value?.valueEntities.get(value);
|
|
86
|
-
if (!((entity?.children || []).length === 0)) {
|
|
87
|
-
const checkedKeys = legacyContext.value?.checkedKeys || [];
|
|
88
|
-
const checkableChildren = (entity?.children || []).filter((child) => !child.node.disabled && !child.node.disableCheckbox && !checkedKeys.includes(child.node[context.value.fieldNames.value]));
|
|
89
|
-
disabledCache.value.set(value, checkableChildren.length > (context.value?.leftMaxCount || 0));
|
|
90
|
-
} else disabledCache.value.set(value, false);
|
|
91
|
-
}
|
|
92
|
-
return disabledCache.value.get(value);
|
|
93
|
-
}
|
|
94
|
-
const nodeDisabled = (node) => {
|
|
95
|
-
const checkedKeys = legacyContext.value?.checkedKeys || [];
|
|
96
|
-
const nodeValue = node[context.value.fieldNames.value];
|
|
97
|
-
if (checkedKeys.includes(nodeValue)) return false;
|
|
98
|
-
const leftMaxCount = context.value?.leftMaxCount ?? null;
|
|
99
|
-
if (leftMaxCount === null) return false;
|
|
100
|
-
if (leftMaxCount <= 0) return true;
|
|
101
|
-
if (context.value?.leafCountOnly && leftMaxCount) return getDisabledWithCache(node) || false;
|
|
102
|
-
return false;
|
|
103
|
-
};
|
|
104
|
-
(0, vue.provide)(_v_c_tree.UnstableContextKey, { nodeDisabled });
|
|
105
|
-
const getFirstMatchingNode = (nodes) => {
|
|
106
|
-
for (const node of nodes) {
|
|
107
|
-
if (node.disabled || node.selectable === false) continue;
|
|
108
|
-
if (baseProps.value?.searchValue) {
|
|
109
|
-
if (filterTreeNode(node)) return node;
|
|
110
|
-
} else return node;
|
|
111
|
-
const children = node[context.value.fieldNames.children];
|
|
112
|
-
if (children) {
|
|
113
|
-
const matchInChildren = getFirstMatchingNode(children);
|
|
114
|
-
if (matchInChildren) return matchInChildren;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return null;
|
|
118
|
-
};
|
|
119
|
-
const activeKey = (0, vue.ref)(null);
|
|
120
|
-
const activeEntity = (0, vue.computed)(() => legacyContext.value?.keyEntities?.[String(activeKey.value)]);
|
|
121
|
-
(0, vue.watch)(() => [baseProps.value?.open, baseProps.value?.searchValue], ([open]) => {
|
|
122
|
-
if (!open) return;
|
|
123
|
-
const fieldNames = context.value?.fieldNames;
|
|
124
|
-
const getFirstNode = () => {
|
|
125
|
-
const firstNode = getFirstMatchingNode(memoTreeData.value);
|
|
126
|
-
return firstNode ? firstNode[fieldNames?.value] : null;
|
|
127
|
-
};
|
|
128
|
-
if (!baseProps.value?.multiple && legacyContext.value?.checkedKeys?.length && !baseProps.value?.searchValue) activeKey.value = legacyContext.value.checkedKeys[0];
|
|
129
|
-
else activeKey.value = getFirstNode();
|
|
130
|
-
}, { immediate: true });
|
|
131
|
-
const onKeyDown = (event) => {
|
|
132
|
-
switch (event.which || event.keyCode) {
|
|
133
|
-
case _v_c_util.KeyCode.UP:
|
|
134
|
-
case _v_c_util.KeyCode.DOWN:
|
|
135
|
-
case _v_c_util.KeyCode.LEFT:
|
|
136
|
-
case _v_c_util.KeyCode.RIGHT:
|
|
137
|
-
treeRef.value?.onKeyDown(event);
|
|
138
|
-
break;
|
|
139
|
-
case _v_c_util.KeyCode.ENTER:
|
|
140
|
-
if (activeEntity.value) {
|
|
141
|
-
const isNodeDisabled = nodeDisabled(activeEntity.value.node);
|
|
142
|
-
const { selectable, value, disabled } = activeEntity.value.node;
|
|
143
|
-
if (selectable !== false && !disabled && !isNodeDisabled) onInternalSelect([], {
|
|
144
|
-
node: { key: activeKey.value },
|
|
145
|
-
selected: !(legacyContext.value?.checkedKeys || []).includes(value)
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
return;
|
|
149
|
-
case _v_c_util.KeyCode.ESC: baseProps.value?.toggleOpen(false);
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
const onKeyUp = () => {};
|
|
153
|
-
expose({
|
|
154
|
-
scrollTo: (scroll) => {
|
|
155
|
-
treeRef.value?.scrollTo(scroll);
|
|
156
|
-
},
|
|
157
|
-
onKeyDown,
|
|
158
|
-
onKeyUp
|
|
159
|
-
});
|
|
160
|
-
return () => {
|
|
161
|
-
const prefixCls = baseProps.value?.prefixCls;
|
|
162
|
-
const open = baseProps.value?.open;
|
|
163
|
-
const notFoundContent = baseProps.value?.notFoundContent;
|
|
164
|
-
const checkable = legacyContext.value?.checkable;
|
|
165
|
-
const checkedKeys = legacyContext.value?.checkedKeys || [];
|
|
166
|
-
const treeLoadedKeys = legacyContext.value?.treeLoadedKeys;
|
|
167
|
-
const treeDefaultExpandAll = legacyContext.value?.treeDefaultExpandAll;
|
|
168
|
-
const treeIcon = legacyContext.value?.treeIcon;
|
|
169
|
-
const showTreeIcon = legacyContext.value?.showTreeIcon;
|
|
170
|
-
const switcherIcon = legacyContext.value?.switcherIcon;
|
|
171
|
-
const treeLine = legacyContext.value?.treeLine;
|
|
172
|
-
const treeMotion = legacyContext.value?.treeMotion;
|
|
173
|
-
const loadData = legacyContext.value?.loadData;
|
|
174
|
-
const onTreeLoad = legacyContext.value?.onTreeLoad;
|
|
175
|
-
const { fieldNames, virtual, listHeight, listItemHeight, listItemScrollOffset, popupMatchSelectWidth, treeExpandAction, treeTitleRender, onPopupScroll, classNames, styles } = context.value || {};
|
|
176
|
-
if (memoTreeData.value.length === 0) return (0, vue.createVNode)("div", {
|
|
177
|
-
"role": "listbox",
|
|
178
|
-
"class": `${prefixCls}-empty`,
|
|
179
|
-
"onMousedown": onListMouseDown
|
|
180
|
-
}, [notFoundContent]);
|
|
181
|
-
const syncLoadData = baseProps.value?.searchValue ? void 0 : loadData;
|
|
182
|
-
return (0, vue.createVNode)("div", { "onMousedown": onListMouseDown }, [activeEntity.value && open && (0, vue.createVNode)("span", {
|
|
183
|
-
"style": HIDDEN_STYLE,
|
|
184
|
-
"aria-live": "assertive"
|
|
185
|
-
}, [activeEntity.value.node.value]), (0, vue.createVNode)(_v_c_tree.default, {
|
|
186
|
-
"ref": (el) => {
|
|
187
|
-
treeRef.value = el;
|
|
188
|
-
},
|
|
189
|
-
"focusable": false,
|
|
190
|
-
"prefixCls": `${prefixCls}-tree`,
|
|
191
|
-
"treeData": memoTreeData.value,
|
|
192
|
-
"fieldNames": fieldNames,
|
|
193
|
-
"height": listHeight,
|
|
194
|
-
"itemHeight": listItemHeight,
|
|
195
|
-
"itemScrollOffset": listItemScrollOffset,
|
|
196
|
-
"virtual": virtual !== false && popupMatchSelectWidth !== false,
|
|
197
|
-
"multiple": baseProps.value?.multiple,
|
|
198
|
-
"icon": treeIcon,
|
|
199
|
-
"showIcon": showTreeIcon,
|
|
200
|
-
"switcherIcon": switcherIcon,
|
|
201
|
-
"showLine": treeLine,
|
|
202
|
-
"loadData": syncLoadData,
|
|
203
|
-
"motion": treeMotion,
|
|
204
|
-
"activeKey": activeKey.value,
|
|
205
|
-
"checkable": checkable,
|
|
206
|
-
"checkStrictly": true,
|
|
207
|
-
"checkedKeys": mergedCheckedKeys.value,
|
|
208
|
-
"selectedKeys": !checkable ? checkedKeys : [],
|
|
209
|
-
"defaultExpandAll": treeDefaultExpandAll,
|
|
210
|
-
"titleRender": treeTitleRender,
|
|
211
|
-
"expandedKeys": mergedExpandedKeys.value,
|
|
212
|
-
"loadedKeys": treeLoadedKeys,
|
|
213
|
-
"onActiveChange": (key) => {
|
|
214
|
-
activeKey.value = key;
|
|
215
|
-
},
|
|
216
|
-
"onSelect": onInternalSelect,
|
|
217
|
-
"onCheck": onInternalSelect,
|
|
218
|
-
"onExpand": onInternalExpand,
|
|
219
|
-
"onLoad": onTreeLoad,
|
|
220
|
-
"filterTreeNode": filterTreeNode,
|
|
221
|
-
"expandAction": treeExpandAction,
|
|
222
|
-
"onScroll": onPopupScroll,
|
|
223
|
-
"classNames": classNames?.popup,
|
|
224
|
-
"styles": styles?.popup
|
|
225
|
-
}, null)]);
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
var OptionList_default = OptionList;
|
|
230
|
-
exports.default = OptionList_default;
|
package/dist/TreeNode.cjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
Object.defineProperties(exports, {
|
|
2
|
-
__esModule: { value: true },
|
|
3
|
-
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
-
});
|
|
5
|
-
const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
|
|
6
|
-
let vue = require("vue");
|
|
7
|
-
var TreeNode = /* @__PURE__ */ (0, vue.defineComponent)(() => {
|
|
8
|
-
return () => null;
|
|
9
|
-
});
|
|
10
|
-
var TreeNode_default = TreeNode;
|
|
11
|
-
exports.default = TreeNode_default;
|