yuyeon 0.3.5 → 0.3.6-beta.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/dist/style.css +1 -1
- package/dist/yuyeon.js +2394 -2332
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/abstract/items.js.map +1 -1
- package/lib/components/alert/YAlert.js +2 -2
- package/lib/components/alert/YAlert.js.map +1 -1
- package/lib/components/badge/YBadge.js.map +1 -1
- package/lib/components/badge/YBadge.scss +87 -87
- package/lib/components/card/YCard.js.map +1 -1
- package/lib/components/checkbox/YCheckbox.js.map +1 -1
- package/lib/components/date-picker/YDateCalendar.js.map +1 -1
- package/lib/components/date-picker/YDatePicker.js.map +1 -1
- package/lib/components/date-picker/YDatePickerControl.js.map +1 -1
- package/lib/components/date-picker/YMonthPicker.js.map +1 -1
- package/lib/components/date-picker/YYearPicker.js.map +1 -1
- package/lib/components/dialog/YDialog.js.map +1 -1
- package/lib/components/divider/YDivider.js.map +1 -1
- package/lib/components/draggable/YDraggable.js.map +1 -1
- package/lib/components/draggable/index.js.map +1 -1
- package/lib/components/dropdown/YDropdown.js.map +1 -1
- package/lib/components/field-input/YFieldInput.js.map +1 -1
- package/lib/components/form/YForm.js.map +1 -1
- package/lib/components/hover/YHover.js.map +1 -1
- package/lib/components/icon/YIcon.js.map +1 -1
- package/lib/components/icons/YIconCheckbox.js.map +1 -1
- package/lib/components/icons/YIconCheckbox.scss +4 -5
- package/lib/components/icons/YIconClear.js.map +1 -1
- package/lib/components/icons/YIconDropdown.js.map +1 -1
- package/lib/components/icons/YIconExpand.js.map +1 -1
- package/lib/components/icons/YIconPageControl.js.map +1 -1
- package/lib/components/icons/YIconSort.js.map +1 -1
- package/lib/components/img/YImg.js +4 -4
- package/lib/components/img/YImg.js.map +1 -1
- package/lib/components/img/index.js.map +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/components/input/YInput.js.map +1 -1
- package/lib/components/layer/YLayer.js.map +1 -1
- package/lib/components/layer/base.js +2 -2
- package/lib/components/layer/base.js.map +1 -1
- package/lib/components/layer/content.js.map +1 -1
- package/lib/components/list/YListItem.js.map +1 -1
- package/lib/components/menu/YMenu.js +2 -2
- package/lib/components/menu/YMenu.js.map +1 -1
- package/lib/components/panel/YDividePanel.js.map +1 -1
- package/lib/components/panel/YDividePanel.scss +44 -44
- package/lib/components/plate/YPlate.js +2 -2
- package/lib/components/plate/YPlate.js.map +1 -1
- package/lib/components/radio/YRadio.js.map +1 -1
- package/lib/components/radio/YRadioIcon.js.map +1 -1
- package/lib/components/radio/index.js.map +1 -1
- package/lib/components/select/YSelect.js.map +1 -1
- package/lib/components/slider/YSlider.js.map +1 -1
- package/lib/components/slider/index.js.map +1 -1
- package/lib/components/switch/YSwitch.js.map +1 -1
- package/lib/components/tab/YTab.js.map +1 -1
- package/lib/components/tab/YTabs.js.map +1 -1
- package/lib/components/table/YDataTable.js.map +1 -1
- package/lib/components/table/YDataTableBody.js.map +1 -1
- package/lib/components/table/YDataTableControl.js.map +1 -1
- package/lib/components/table/YDataTableControl.scss +17 -17
- package/lib/components/table/YDataTableLayerRows.js.map +1 -1
- package/lib/components/table/YDataTableServer.js.map +1 -1
- package/lib/components/table/YTable.js.map +1 -1
- package/lib/components/table/composables/expand.js.map +1 -1
- package/lib/components/table/composables/header.js.map +1 -1
- package/lib/components/table/composables/items.js.map +1 -1
- package/lib/components/table/composables/measure.js.map +1 -1
- package/lib/components/table/composables/provides.js.map +1 -1
- package/lib/components/table/types/item.js.map +1 -1
- package/lib/components/text-ellipsis/YTextEllipsis.js.map +1 -1
- package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
- package/lib/components/text-interpolation/YTi.js.map +1 -1
- package/lib/components/tooltip/YTooltip.js +2 -2
- package/lib/components/tooltip/YTooltip.js.map +1 -1
- package/lib/components/tree-view/YTreeView.js +23 -28
- package/lib/components/tree-view/YTreeView.js.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.js +58 -20
- package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
- package/lib/components/tree-view/tree-view.js +61 -8
- package/lib/components/tree-view/tree-view.js.map +1 -1
- package/lib/components/tree-view/types.js.map +1 -1
- package/lib/composables/choice.js.map +1 -1
- package/lib/composables/coordinate/index.js.map +1 -1
- package/lib/composables/coordinate/levitation.js +2 -2
- package/lib/composables/coordinate/levitation.js.map +1 -1
- package/lib/composables/coordinate/types.js.map +1 -1
- package/lib/composables/defaults/types.js.map +1 -1
- package/lib/composables/form.js.map +1 -1
- package/lib/composables/style-color.js.map +1 -1
- package/lib/composables/theme/index.js.map +1 -1
- package/lib/composables/theme/types.js.map +1 -1
- package/lib/composables/timing.js.map +1 -1
- package/lib/composables/validation.js.map +1 -1
- package/lib/directives/index.js.map +1 -1
- package/lib/directives/plate-wave/index.js +2 -2
- package/lib/directives/plate-wave/index.js.map +1 -1
- package/lib/directives/plate-wave/plate-wave.scss +44 -44
- package/lib/directives/theme-class/index.js.map +1 -1
- package/lib/etc/index.js.map +1 -1
- package/lib/i18n/built-in.js.map +1 -1
- package/lib/i18n/config.js.map +1 -1
- package/lib/i18n/types.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/locales/en.js.map +1 -1
- package/lib/locales/ko.js.map +1 -1
- package/lib/styles/settings/_provided.scss +33 -33
- package/lib/styles/theme/index.scss +4 -4
- package/lib/types/index.js.map +1 -1
- package/lib/util/color/apca.js +30 -30
- package/lib/util/color/apca.js.map +1 -1
- package/lib/util/color/const.js.map +1 -1
- package/lib/util/color/hct/cam16.js +95 -95
- package/lib/util/color/hct/cam16.js.map +1 -1
- package/lib/util/color/hct/hct-solver.js +107 -107
- package/lib/util/color/hct/hct-solver.js.map +1 -1
- package/lib/util/color/hct/hct.js +71 -71
- package/lib/util/color/hct/hct.js.map +1 -1
- package/lib/util/color/index.js +12 -12
- package/lib/util/color/index.js.map +1 -1
- package/lib/util/common.js.map +1 -1
- package/lib/util/component/component.js.map +1 -1
- package/lib/util/component/inject-self.js.map +1 -1
- package/lib/util/component/props.js.map +1 -1
- package/lib/util/component/types.js.map +1 -1
- package/lib/util/date/built-in.js.map +1 -1
- package/lib/util/date/index.js.map +1 -1
- package/lib/util/date/types.js.map +1 -1
- package/lib/util/debounce.js.map +1 -1
- package/lib/util/dom.js.map +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/string.js.map +1 -1
- package/lib/util/ui.js.map +1 -1
- package/package.json +132 -132
- package/types/components/tree-view/YTreeView.d.ts +18 -26
- package/types/components/tree-view/YTreeViewNode.d.ts +71 -1
- package/types/components/tree-view/tree-view.d.ts +17 -1
- package/types/declares.d.ts +1 -1
- package/types/globals.d.ts +19 -19
- package/types/shims.d.ts +64 -64
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { computed, defineComponent, onMounted, ref, shallowRef, watch, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps, createTextVNode as _createTextVNode } from
|
|
1
|
+
import { computed, defineComponent, onMounted, ref, shallowRef, watch, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps, createTextVNode as _createTextVNode } from "vue";
|
|
2
2
|
import { provideTreeView } from "./tree-view.js";
|
|
3
3
|
import { useRender } from "../../composables/component.js";
|
|
4
4
|
import { differenceBetween } from "../../util/array.js";
|
|
5
5
|
import { isColorValue } from "../../util/color/index.js";
|
|
6
|
-
import { deepEqual, getObjectValueByPath
|
|
6
|
+
import { deepEqual, getObjectValueByPath } from "../../util/common.js";
|
|
7
7
|
import { chooseProps } from "../../util/component/index.js";
|
|
8
8
|
import { debounce } from "../../util/debounce.js";
|
|
9
9
|
import { YProgressBar } from "../progress-bar/index.js";
|
|
10
|
-
import { YTreeViewNode, pressYTreeViewNodeProps } from "./YTreeViewNode.js";
|
|
11
10
|
import { filterTreeItem, filterTreeItems, getKeys } from "./util.js";
|
|
11
|
+
import { pressYTreeViewNodeProps, YTreeViewNode } from "./YTreeViewNode.js";
|
|
12
12
|
import "./YTreeView.scss";
|
|
13
13
|
const treeViewNodeProps = pressYTreeViewNodeProps();
|
|
14
14
|
export const YTreeView = defineComponent({
|
|
15
|
-
name:
|
|
15
|
+
name: "YTreeView",
|
|
16
16
|
props: {
|
|
17
17
|
expanded: {
|
|
18
18
|
type: [Array],
|
|
@@ -23,23 +23,11 @@ export const YTreeView = defineComponent({
|
|
|
23
23
|
default: () => []
|
|
24
24
|
},
|
|
25
25
|
multipleActive: Boolean,
|
|
26
|
-
activeStrategy: {
|
|
27
|
-
/**
|
|
28
|
-
* cascade: only descendent leaves
|
|
29
|
-
* relative: cascade after check parent (ancestor)
|
|
30
|
-
*/
|
|
31
|
-
type: String,
|
|
32
|
-
default: 'independent'
|
|
33
|
-
},
|
|
34
26
|
onlyEventActiveStrategy: Boolean,
|
|
35
27
|
selected: {
|
|
36
28
|
type: [Array],
|
|
37
29
|
default: () => []
|
|
38
30
|
},
|
|
39
|
-
selectStrategy: {
|
|
40
|
-
type: String,
|
|
41
|
-
default: 'leaf'
|
|
42
|
-
},
|
|
43
31
|
returnItem: Boolean,
|
|
44
32
|
defaultExpand: [Boolean, String, Number],
|
|
45
33
|
filter: Function,
|
|
@@ -49,11 +37,10 @@ export const YTreeView = defineComponent({
|
|
|
49
37
|
},
|
|
50
38
|
...treeViewNodeProps
|
|
51
39
|
},
|
|
52
|
-
emits: [
|
|
40
|
+
emits: ["update:expanded", "update:active", "update:selected"],
|
|
53
41
|
setup(props, _ref) {
|
|
54
42
|
let {
|
|
55
43
|
slots,
|
|
56
|
-
emit,
|
|
57
44
|
expose
|
|
58
45
|
} = _ref;
|
|
59
46
|
const filterItemsFn = shallowRef(debounce(excludeItem, props.searchDebounceWait));
|
|
@@ -78,7 +65,7 @@ export const YTreeView = defineComponent({
|
|
|
78
65
|
isExcluded
|
|
79
66
|
} = provideTreeView(props);
|
|
80
67
|
function excludeItem(items) {
|
|
81
|
-
let search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] :
|
|
68
|
+
let search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
82
69
|
let filter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : filterTreeItem;
|
|
83
70
|
const excluded = new Set();
|
|
84
71
|
if (!search) {
|
|
@@ -94,7 +81,7 @@ export const YTreeView = defineComponent({
|
|
|
94
81
|
return;
|
|
95
82
|
}
|
|
96
83
|
for (const item of items) {
|
|
97
|
-
filterTreeItems(filter, item, search ??
|
|
84
|
+
filterTreeItems(filter, item, search ?? "", props.itemKey, props.itemText, props.itemChildren, excluded);
|
|
98
85
|
}
|
|
99
86
|
excludedSet.value = excluded;
|
|
100
87
|
searchLoading.value = false;
|
|
@@ -117,7 +104,7 @@ export const YTreeView = defineComponent({
|
|
|
117
104
|
for (const item of items) {
|
|
118
105
|
const key = getObjectValueByPath(item, props.itemKey);
|
|
119
106
|
const children = getObjectValueByPath(item, props.itemChildren) ?? [];
|
|
120
|
-
const exist =
|
|
107
|
+
const exist = Object.hasOwn(nodes.value, key);
|
|
121
108
|
const existNode = exist ? nodes.value[key] : {
|
|
122
109
|
vnode: null,
|
|
123
110
|
selected: selected.value?.includes(key) ?? false,
|
|
@@ -174,8 +161,12 @@ export const YTreeView = defineComponent({
|
|
|
174
161
|
if (deepEqual(old, valuesOfKey)) {
|
|
175
162
|
return;
|
|
176
163
|
}
|
|
177
|
-
old.forEach(key =>
|
|
178
|
-
|
|
164
|
+
old.forEach(key => {
|
|
165
|
+
updater(key, false);
|
|
166
|
+
});
|
|
167
|
+
valuesOfKey.forEach(key => {
|
|
168
|
+
updater(key, true);
|
|
169
|
+
});
|
|
179
170
|
emitter();
|
|
180
171
|
}
|
|
181
172
|
watch(expanded, neo => {
|
|
@@ -194,7 +185,9 @@ export const YTreeView = defineComponent({
|
|
|
194
185
|
if (diff.length < 1 && neoKeys.length < oldKeys.length) {
|
|
195
186
|
return;
|
|
196
187
|
}
|
|
197
|
-
diff.forEach(k =>
|
|
188
|
+
diff.forEach(k => {
|
|
189
|
+
delete nodes.value[k];
|
|
190
|
+
});
|
|
198
191
|
|
|
199
192
|
// init
|
|
200
193
|
const oldSelected = [...selectedSet.value];
|
|
@@ -212,7 +205,7 @@ export const YTreeView = defineComponent({
|
|
|
212
205
|
filterItemsFn.value(neo, props.search, props.filter);
|
|
213
206
|
}, {
|
|
214
207
|
deep: true,
|
|
215
|
-
flush:
|
|
208
|
+
flush: "sync"
|
|
216
209
|
});
|
|
217
210
|
|
|
218
211
|
// Provide & Issue
|
|
@@ -225,7 +218,7 @@ export const YTreeView = defineComponent({
|
|
|
225
218
|
});
|
|
226
219
|
const classes = computed(() => {
|
|
227
220
|
return {
|
|
228
|
-
|
|
221
|
+
"y-tree-view": true
|
|
229
222
|
};
|
|
230
223
|
});
|
|
231
224
|
const styles = computed(() => {
|
|
@@ -245,7 +238,9 @@ export const YTreeView = defineComponent({
|
|
|
245
238
|
if (props.defaultExpand != null && props.defaultExpand !== false) {
|
|
246
239
|
expandedCache.value = [...expand(props.defaultExpand)];
|
|
247
240
|
} else {
|
|
248
|
-
expanded.value.forEach(v =>
|
|
241
|
+
expanded.value.forEach(v => {
|
|
242
|
+
updateExpanded(getNodeKey(v), true);
|
|
243
|
+
});
|
|
249
244
|
emitExpanded();
|
|
250
245
|
}
|
|
251
246
|
for (const activeValue of props.active.map(getNodeKey)) {
|
|
@@ -275,7 +270,7 @@ export const YTreeView = defineComponent({
|
|
|
275
270
|
}), slots);
|
|
276
271
|
}) : _createVNode("div", {
|
|
277
272
|
"class": "y-tree-view__no-data"
|
|
278
|
-
}, [slots[
|
|
273
|
+
}, [slots["no-data"] ? slots["no-data"]() : _createVNode("span", null, [_createTextVNode("No Data")])])])]);
|
|
279
274
|
});
|
|
280
275
|
return {
|
|
281
276
|
nodes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeView.js","names":["computed","defineComponent","onMounted","ref","shallowRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","createTextVNode","_createTextVNode","provideTreeView","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","chooseProps","debounce","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","onlyEventActiveStrategy","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","filterItemsFn","excludeItem","expandedCache","nodes","expandedSet","selectedSet","activeSet","searchLoading","excludedSet","issueVnodeState","updateExpanded","updateActive","updateSelected","emitExpanded","emitActive","emitSelected","isExcluded","items","search","arguments","length","undefined","excluded","Set","value","diff","forEach","key","item","itemKey","itemText","itemChildren","expand","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","includes","indeterminate","node","childKeys","map","child","add","neo","deep","until","Object","entries","_ref2","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","keys","nodeKey","neoKeys","k","oldSelected","oldActive","clear","flush","renderLeaves","slice","leaf","classes","styles","color","activeColor","activeValue","selectedValue"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\n type PropType,\n type Ref,\n computed,\n defineComponent,\n onMounted,\n ref,\n shallowRef,\n watch,\n} from 'vue';\n\nimport { provideTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport { CandidateKey } from '@/types';\nimport { differenceBetween } from '@/util/array';\nimport { isColorValue } from '@/util/color';\nimport { deepEqual, getObjectValueByPath, hasOwnProperty } from '@/util/common';\nimport { chooseProps } from '@/util/component';\nimport { debounce } from '@/util/debounce';\n\nimport { YProgressBar } from '../progress-bar';\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\nimport { NodeState, TreeviewFilterFn } from './types';\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\n\nimport './YTreeView.scss';\n\nconst treeViewNodeProps = pressYTreeViewNodeProps();\n\nexport const YTreeView = defineComponent({\n name: 'YTreeView',\n props: {\n expanded: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n active: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n multipleActive: Boolean,\n activeStrategy: {\n /**\n * cascade: only descendent leaves\n * relative: cascade after check parent (ancestor)\n */\n type: String as PropType<'independent' | 'cascade' | 'relative'>,\n default: 'independent',\n },\n onlyEventActiveStrategy: Boolean,\n selected: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n selectStrategy: {\n type: String as PropType<'independent' | 'cascade'>,\n default: 'leaf',\n },\n returnItem: Boolean,\n defaultExpand: [Boolean, String, Number],\n filter: Function as PropType<TreeviewFilterFn>,\n searchDebounceWait: {\n type: Number as PropType<number>,\n default: 700,\n },\n ...treeViewNodeProps,\n },\n emits: ['update:expanded', 'update:active', 'update:selected'],\n setup(props, { slots, emit, expose }) {\n const filterItemsFn = shallowRef(\n debounce(excludeItem, props.searchDebounceWait),\n );\n const expandedCache = ref<CandidateKey[]>([]);\n\n const {\n nodes,\n expanded,\n active,\n selected,\n expandedSet,\n selectedSet,\n activeSet,\n searchLoading,\n excludedSet,\n issueVnodeState,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n isExcluded,\n } = provideTreeView(props);\n\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\n const excluded = new Set<CandidateKey>();\n if (!search) {\n searchLoading.value = false;\n excludedSet.value = excluded;\n const diff = differenceBetween(expandedCache.value, [\n ...expandedSet.value,\n ]);\n diff.forEach((key) => {\n updateExpanded(key, false);\n });\n expandedCache.value.forEach((key) => {\n updateExpanded(key, true);\n });\n return;\n }\n for (const item of items) {\n filterTreeItems(\n filter,\n item,\n search ?? '',\n props.itemKey,\n props.itemText,\n props.itemChildren as string,\n excluded,\n );\n }\n excludedSet.value = excluded;\n searchLoading.value = false;\n expand();\n }\n\n watch(\n () => props.search,\n () => {\n searchLoading.value = true;\n filterItemsFn.value(props.items, props.search, props.filter);\n },\n );\n\n // Util Methods\n function getNodeKey(itemOrKey: any) {\n return props.returnItem\n ? getObjectValueByPath(itemOrKey, props.itemKey)\n : itemOrKey;\n }\n\n // State Methods\n function updateNodes(\n items: any[],\n parentKey: CandidateKey | null = null,\n level = 0,\n ) {\n for (const item of items) {\n const key = getObjectValueByPath(item, props.itemKey);\n const children =\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\n const exist = hasOwnProperty(nodes.value, key);\n const existNode = exist\n ? nodes.value[key]\n : {\n vnode: null,\n selected: selected.value?.includes(key) ?? false,\n indeterminate: false,\n active: active.value?.includes(key) ?? false,\n expanded: expanded.value?.includes(key) ?? false,\n };\n const node: NodeState = {\n vnode: existNode.vnode,\n item,\n level,\n parentKey,\n childKeys: children.map((child: any) =>\n getObjectValueByPath(child, props.itemKey),\n ),\n expanded: children.length > 0 && existNode.expanded,\n active: existNode.active,\n indeterminate: existNode.indeterminate,\n selected: existNode.selected,\n };\n\n updateNodes(children, key, level + 1);\n\n nodes.value[key] = node;\n if (nodes.value[key].expanded) {\n expandedSet.value.add(key);\n }\n if (nodes.value[key].selected) {\n selectedSet.value.add(key);\n }\n if (nodes.value[key].active) {\n activeSet.value.add(key);\n }\n issueVnodeState(key);\n }\n }\n\n watch(\n expandedSet,\n (neo) => {\n if (!props.search) {\n expandedCache.value = [...neo];\n }\n },\n { deep: true },\n );\n\n function expand(until: boolean | string | number = true) {\n Object.entries(nodes.value).forEach(([key, node]) => {\n if (until === true || Number(until) >= node.level) {\n updateExpanded(key, true);\n }\n });\n emitExpanded();\n return expandedSet.value;\n }\n\n function stateWatcher(\n value: any[],\n stateSet: Ref<Set<CandidateKey>>,\n updater: (key: CandidateKey, to: boolean) => void,\n emitter: () => void,\n ) {\n const valuesOfKey = props.returnItem\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\n : value;\n const old = [...stateSet.value];\n if (deepEqual(old, valuesOfKey)) {\n return;\n }\n old.forEach((key) => updater(key, false));\n valuesOfKey.forEach((key) => updater(key, true));\n emitter();\n }\n\n watch(expanded, (neo) => {\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\n });\n\n watch(active, (neo) => {\n stateWatcher(neo, activeSet, updateActive, emitActive);\n });\n\n watch(selected, (neo) => {\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\n });\n\n watch(\n () => props.items,\n (neo: any[]) => {\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\n );\n const neoKeys = getKeys(\n neo,\n props.itemKey,\n props.itemChildren as string,\n );\n const diff = differenceBetween(oldKeys, neoKeys);\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\n return;\n }\n diff.forEach((k) => delete nodes.value[k]);\n\n // init\n const oldSelected = [...selectedSet.value];\n const oldActive = [...activeSet.value];\n selectedSet.value.clear();\n expandedSet.value.clear();\n activeSet.value.clear();\n updateNodes(neo);\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\n emitSelected();\n }\n if (!deepEqual(oldActive, [...activeSet.value])) {\n emitActive();\n }\n filterItemsFn.value(neo, props.search, props.filter);\n },\n { deep: true, flush: 'sync' },\n );\n\n // Provide & Issue\n\n updateNodes(props.items);\n\n const renderLeaves = computed(() => {\n return props.items.slice().filter((leaf) => {\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n const classes = computed(() => {\n return {\n 'y-tree-view': true,\n };\n });\n\n const styles = computed(() => {\n let color = props.activeColor;\n if (props.activeColor && !isColorValue(props.activeColor)) {\n color = `var(--y-theme-${props.activeColor})`;\n }\n return {\n [`--y-tree-view__active-color`]: color,\n };\n });\n\n onMounted(() => {\n if (props.search) {\n searchLoading.value = true;\n excludeItem(props.items, props.search, props.filter);\n }\n\n if (props.defaultExpand != null && props.defaultExpand !== false) {\n expandedCache.value = [...expand(props.defaultExpand)];\n } else {\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\n emitExpanded();\n }\n\n for (const activeValue of props.active.map(getNodeKey)) {\n updateActive(activeValue, true);\n }\n\n for (const selectedValue of props.selected.map(getNodeKey)) {\n updateSelected(selectedValue, true);\n }\n });\n\n expose({\n expand,\n });\n\n useRender(() => {\n return (\n <>\n <div class={classes.value} style={styles.value} role=\"tree\">\n {searchLoading.value && <YProgressBar indeterminate />}\n {renderLeaves.value.length > 0 ? (\n renderLeaves.value.slice().map((leaf) => {\n return (\n <YTreeViewNode\n v-slots={slots}\n key={getObjectValueByPath(leaf, props.itemKey)}\n {...{\n ...chooseProps(props, treeViewNodeProps),\n item: leaf,\n level: 0,\n }}\n ></YTreeViewNode>\n );\n })\n ) : (\n <div class=\"y-tree-view__no-data\">\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\n </div>\n )}\n </div>\n </>\n );\n });\n\n return {\n nodes,\n expandedSet,\n selectedSet,\n activeSet,\n excludedSet,\n searchLoading,\n expandedCache,\n renderLeaves,\n };\n },\n});\n\nexport type YTreeView = InstanceType<typeof YTreeView>;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YTreeView.js","names":["computed","defineComponent","onMounted","ref","shallowRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","createTextVNode","_createTextVNode","provideTreeView","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","chooseProps","debounce","YProgressBar","filterTreeItem","filterTreeItems","getKeys","pressYTreeViewNodeProps","YTreeViewNode","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","onlyEventActiveStrategy","selected","returnItem","defaultExpand","String","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","expose","filterItemsFn","excludeItem","expandedCache","nodes","expandedSet","selectedSet","activeSet","searchLoading","excludedSet","issueVnodeState","updateExpanded","updateActive","updateSelected","emitExpanded","emitActive","emitSelected","isExcluded","items","search","arguments","length","undefined","excluded","Set","value","diff","forEach","key","item","itemKey","itemText","itemChildren","expand","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","Object","hasOwn","existNode","vnode","includes","indeterminate","node","childKeys","map","child","add","neo","deep","until","entries","_ref2","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","keys","nodeKey","neoKeys","k","oldSelected","oldActive","clear","flush","renderLeaves","slice","leaf","classes","styles","color","activeColor","activeValue","selectedValue"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n onMounted,\n type PropType,\n type Ref,\n ref,\n shallowRef,\n watch,\n} from \"vue\";\n\nimport { provideTreeView } from \"@/components/tree-view/tree-view\";\nimport { useRender } from \"@/composables/component\";\nimport type { CandidateKey } from \"@/types\";\nimport { differenceBetween } from \"@/util/array\";\nimport { isColorValue } from \"@/util/color\";\nimport { deepEqual, getObjectValueByPath } from \"@/util/common\";\nimport { chooseProps } from \"@/util/component\";\nimport { debounce } from \"@/util/debounce\";\n\nimport { YProgressBar } from \"../progress-bar\";\nimport type { NodeState, TreeviewFilterFn } from \"./types\";\nimport { filterTreeItem, filterTreeItems, getKeys } from \"./util\";\nimport { pressYTreeViewNodeProps, YTreeViewNode } from \"./YTreeViewNode\";\n\nimport \"./YTreeView.scss\";\n\nconst treeViewNodeProps = pressYTreeViewNodeProps();\n\nexport const YTreeView = defineComponent({\n name: \"YTreeView\",\n props: {\n expanded: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n active: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n multipleActive: Boolean,\n onlyEventActiveStrategy: Boolean,\n selected: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n returnItem: Boolean,\n defaultExpand: [Boolean, String, Number],\n filter: Function as PropType<TreeviewFilterFn>,\n searchDebounceWait: {\n type: Number as PropType<number>,\n default: 700,\n },\n ...treeViewNodeProps,\n },\n emits: [\"update:expanded\", \"update:active\", \"update:selected\"],\n setup(props, { slots, expose }) {\n const filterItemsFn = shallowRef(\n debounce(excludeItem, props.searchDebounceWait),\n );\n const expandedCache = ref<CandidateKey[]>([]);\n\n const {\n nodes,\n expanded,\n active,\n selected,\n expandedSet,\n selectedSet,\n activeSet,\n searchLoading,\n excludedSet,\n issueVnodeState,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n isExcluded,\n } = provideTreeView(props);\n\n function excludeItem(items: any[], search = \"\", filter = filterTreeItem) {\n const excluded = new Set<CandidateKey>();\n if (!search) {\n searchLoading.value = false;\n excludedSet.value = excluded;\n const diff = differenceBetween(expandedCache.value, [\n ...expandedSet.value,\n ]);\n diff.forEach((key) => {\n updateExpanded(key, false);\n });\n expandedCache.value.forEach((key) => {\n updateExpanded(key, true);\n });\n return;\n }\n for (const item of items) {\n filterTreeItems(\n filter,\n item,\n search ?? \"\",\n props.itemKey,\n props.itemText,\n props.itemChildren as string,\n excluded,\n );\n }\n excludedSet.value = excluded;\n searchLoading.value = false;\n expand();\n }\n\n watch(\n () => props.search,\n () => {\n searchLoading.value = true;\n filterItemsFn.value(props.items, props.search, props.filter);\n },\n );\n\n // Util Methods\n function getNodeKey(itemOrKey: any) {\n return props.returnItem\n ? getObjectValueByPath(itemOrKey, props.itemKey)\n : itemOrKey;\n }\n\n // State Methods\n function updateNodes(\n items: any[],\n parentKey: CandidateKey | null = null,\n level = 0,\n ) {\n for (const item of items) {\n const key = getObjectValueByPath(item, props.itemKey);\n const children =\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\n const exist = Object.hasOwn(nodes.value, key);\n const existNode = exist\n ? nodes.value[key]\n : {\n vnode: null,\n selected: selected.value?.includes(key) ?? false,\n indeterminate: false,\n active: active.value?.includes(key) ?? false,\n expanded: expanded.value?.includes(key) ?? false,\n };\n const node: NodeState = {\n vnode: existNode.vnode,\n item,\n level,\n parentKey,\n childKeys: children.map((child: any) =>\n getObjectValueByPath(child, props.itemKey),\n ),\n expanded: children.length > 0 && existNode.expanded,\n active: existNode.active,\n indeterminate: existNode.indeterminate,\n selected: existNode.selected,\n };\n\n updateNodes(children, key, level + 1);\n\n nodes.value[key] = node;\n if (nodes.value[key].expanded) {\n expandedSet.value.add(key);\n }\n if (nodes.value[key].selected) {\n selectedSet.value.add(key);\n }\n if (nodes.value[key].active) {\n activeSet.value.add(key);\n }\n issueVnodeState(key);\n }\n }\n\n watch(\n expandedSet,\n (neo) => {\n if (!props.search) {\n expandedCache.value = [...neo];\n }\n },\n { deep: true },\n );\n\n function expand(until: boolean | string | number = true) {\n Object.entries(nodes.value).forEach(([key, node]) => {\n if (until === true || Number(until) >= node.level) {\n updateExpanded(key, true);\n }\n });\n emitExpanded();\n return expandedSet.value;\n }\n\n function stateWatcher(\n value: any[],\n stateSet: Ref<Set<CandidateKey>>,\n updater: (key: CandidateKey, to: boolean) => void,\n emitter: () => void,\n ) {\n const valuesOfKey = props.returnItem\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\n : value;\n const old = [...stateSet.value];\n if (deepEqual(old, valuesOfKey)) {\n return;\n }\n old.forEach((key) => {\n updater(key, false)\n });\n valuesOfKey.forEach((key) => {\n updater(key, true)\n });\n emitter();\n }\n\n watch(expanded, (neo) => {\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\n });\n\n watch(active, (neo) => {\n stateWatcher(neo, activeSet, updateActive, emitActive);\n });\n\n watch(selected, (neo) => {\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\n });\n\n watch(\n () => props.items,\n (neo: any[]) => {\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\n );\n const neoKeys = getKeys(\n neo,\n props.itemKey,\n props.itemChildren as string,\n );\n const diff = differenceBetween(oldKeys, neoKeys);\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\n return;\n }\n diff.forEach((k) => {\n delete nodes.value[k]\n });\n\n // init\n const oldSelected = [...selectedSet.value];\n const oldActive = [...activeSet.value];\n selectedSet.value.clear();\n expandedSet.value.clear();\n activeSet.value.clear();\n updateNodes(neo);\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\n emitSelected();\n }\n if (!deepEqual(oldActive, [...activeSet.value])) {\n emitActive();\n }\n filterItemsFn.value(neo, props.search, props.filter);\n },\n { deep: true, flush: \"sync\" },\n );\n\n // Provide & Issue\n\n updateNodes(props.items);\n\n const renderLeaves = computed(() => {\n return props.items.slice().filter((leaf) => {\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n const classes = computed(() => {\n return {\n \"y-tree-view\": true,\n };\n });\n\n const styles = computed(() => {\n let color = props.activeColor;\n if (props.activeColor && !isColorValue(props.activeColor)) {\n color = `var(--y-theme-${props.activeColor})`;\n }\n return {\n [`--y-tree-view__active-color`]: color,\n };\n });\n\n onMounted(() => {\n if (props.search) {\n searchLoading.value = true;\n excludeItem(props.items, props.search, props.filter);\n }\n\n if (props.defaultExpand != null && props.defaultExpand !== false) {\n expandedCache.value = [...expand(props.defaultExpand)];\n } else {\n expanded.value.forEach((v: any) => {\n updateExpanded(getNodeKey(v), true)\n });\n emitExpanded();\n }\n\n for (const activeValue of props.active.map(getNodeKey)) {\n updateActive(activeValue, true);\n }\n\n for (const selectedValue of props.selected.map(getNodeKey)) {\n updateSelected(selectedValue, true);\n }\n });\n\n expose({\n expand,\n });\n\n useRender(() => {\n return (\n <>\n <div class={classes.value} style={styles.value} role=\"tree\">\n {searchLoading.value && <YProgressBar indeterminate />}\n {renderLeaves.value.length > 0 ? (\n renderLeaves.value.slice().map((leaf) => {\n return (\n <YTreeViewNode\n v-slots={slots}\n key={getObjectValueByPath(leaf, props.itemKey)}\n {...{\n ...chooseProps(props, treeViewNodeProps),\n item: leaf,\n level: 0,\n }}\n ></YTreeViewNode>\n );\n })\n ) : (\n <div class=\"y-tree-view__no-data\">\n {slots[\"no-data\"] ? slots[\"no-data\"]() : <span>No Data</span>}\n </div>\n )}\n </div>\n </>\n );\n });\n\n return {\n nodes,\n expandedSet,\n selectedSet,\n activeSet,\n excludedSet,\n searchLoading,\n expandedCache,\n renderLeaves,\n };\n },\n});\n\nexport type YTreeView = InstanceType<typeof YTreeView>;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/** biome-ignore-all lint/a11y/noStaticElementInteractions: <explanation> */
|
|
2
|
+
/** biome-ignore-all lint/a11y/useFocusableInteractive: <explanation> */
|
|
3
|
+
/** biome-ignore-all lint/a11y/useKeyWithClickEvents: <explanation> */
|
|
4
|
+
import { computed, mergeProps, onBeforeMount, ref, resolveComponent, watch, createVNode as _createVNode, mergeProps as _mergeProps } from 'vue';
|
|
2
5
|
import { pressItemsPropsOptions } from "../../abstract/items.js";
|
|
3
6
|
import { useTreeView } from "./tree-view.js";
|
|
4
7
|
import { useRender } from "../../composables/component.js";
|
|
5
8
|
import { getObjectValueByPath } from "../../util/common.js";
|
|
6
|
-
import { defineComponent } from "../../util/component/index.js";
|
|
7
|
-
import { propsFactory } from "../../util/component/index.js";
|
|
9
|
+
import { defineComponent, propsFactory } from "../../util/component/index.js";
|
|
8
10
|
import { YButton } from "../button/index.js";
|
|
9
11
|
import { YIconCheckbox, YIconExpand } from "../icons/index.js";
|
|
10
12
|
import { YPlate } from "../plate/index.js";
|
|
@@ -14,6 +16,14 @@ export const pressYTreeViewNodeProps = propsFactory({
|
|
|
14
16
|
search: String,
|
|
15
17
|
disableTransition: Boolean,
|
|
16
18
|
enableActive: Boolean,
|
|
19
|
+
activeStrategy: {
|
|
20
|
+
/**
|
|
21
|
+
* cascade: only action descendent leaves
|
|
22
|
+
* relative: cascade after check parent (ancestor)
|
|
23
|
+
*/
|
|
24
|
+
type: String,
|
|
25
|
+
default: 'independent'
|
|
26
|
+
},
|
|
17
27
|
activeClass: [String, Array],
|
|
18
28
|
activeSingleModifier: String,
|
|
19
29
|
requiredActive: Boolean,
|
|
@@ -22,6 +32,15 @@ export const pressYTreeViewNodeProps = propsFactory({
|
|
|
22
32
|
default: 'primary'
|
|
23
33
|
},
|
|
24
34
|
enableSelect: Boolean,
|
|
35
|
+
selectStrategy: {
|
|
36
|
+
/**
|
|
37
|
+
* cascade: only action descendent leaves
|
|
38
|
+
* relative: cascade after check parent (ancestor)
|
|
39
|
+
* leaves: relative after return values only leaf
|
|
40
|
+
*/
|
|
41
|
+
type: String,
|
|
42
|
+
default: 'relative'
|
|
43
|
+
},
|
|
25
44
|
onMouseenterContainer: Function,
|
|
26
45
|
onMouseleaveContainer: Function,
|
|
27
46
|
onMousemoveContainer: Function,
|
|
@@ -29,6 +48,10 @@ export const pressYTreeViewNodeProps = propsFactory({
|
|
|
29
48
|
itemKey: 'id'
|
|
30
49
|
})
|
|
31
50
|
}, 'YTreeViewNode');
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* TODO: correct selected values what selectStrategy leaf or others
|
|
54
|
+
*/
|
|
32
55
|
export const YTreeViewNode = defineComponent({
|
|
33
56
|
name: 'YTreeNode',
|
|
34
57
|
components: {
|
|
@@ -54,17 +77,35 @@ export const YTreeViewNode = defineComponent({
|
|
|
54
77
|
expose
|
|
55
78
|
} = _ref;
|
|
56
79
|
const YTreeNode = resolveComponent('YTreeViewNode', true);
|
|
57
|
-
const vm = getCurrentInstance();
|
|
58
80
|
const treeView = useTreeView();
|
|
59
81
|
const container$ = ref();
|
|
60
82
|
const expanded = ref(false);
|
|
61
83
|
const active = ref(false);
|
|
62
84
|
const selected = ref(false);
|
|
63
|
-
const
|
|
85
|
+
const indeterminate = ref(false);
|
|
86
|
+
const myKey = computed(() => getObjectValueByPath(props.item, props.itemKey));
|
|
64
87
|
const children = computed(() => {
|
|
65
88
|
return (getObjectValueByPath(props.item, props.itemChildren) ?? []).slice();
|
|
66
89
|
});
|
|
67
90
|
const imLeaf = computed(() => children.value.length < 1);
|
|
91
|
+
const searchLoading = computed(() => {
|
|
92
|
+
return treeView.searchLoading.value;
|
|
93
|
+
});
|
|
94
|
+
const leaves = computed(() => {
|
|
95
|
+
return children.value.filter(leaf => {
|
|
96
|
+
return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
const childrenSelection = computed(() => treeView.selectedState.value(myKey.value, children.value.map(child => getObjectValueByPath(child, props.itemKey))));
|
|
100
|
+
const childrenAllChecked = computed(() => {
|
|
101
|
+
return !!children.value?.length && childrenSelection.value.all;
|
|
102
|
+
});
|
|
103
|
+
const childrenSomeChecked = computed(() => {
|
|
104
|
+
return (props.selectStrategy === 'relative' || props.selectStrategy === 'leaf') && (children.value?.length ?? 0) > 0 && !childrenAllChecked.value && childrenSelection.value.some;
|
|
105
|
+
});
|
|
106
|
+
const isChecked = computed(() => {
|
|
107
|
+
return selected.value || props.selectStrategy === 'leaf' && childrenAllChecked.value;
|
|
108
|
+
});
|
|
68
109
|
const classes = computed(() => {
|
|
69
110
|
return {
|
|
70
111
|
'y-tree-view-node': true,
|
|
@@ -88,13 +129,8 @@ export const YTreeViewNode = defineComponent({
|
|
|
88
129
|
toggleActive
|
|
89
130
|
};
|
|
90
131
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
});
|
|
94
|
-
const leaves = computed(() => {
|
|
95
|
-
return children.value.filter(leaf => {
|
|
96
|
-
return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));
|
|
97
|
-
});
|
|
132
|
+
watch(childrenSomeChecked, value => {
|
|
133
|
+
indeterminate.value = value;
|
|
98
134
|
});
|
|
99
135
|
function toggleActive(e) {
|
|
100
136
|
const to = !active.value;
|
|
@@ -114,7 +150,7 @@ export const YTreeViewNode = defineComponent({
|
|
|
114
150
|
}
|
|
115
151
|
function onClickSelect(e) {
|
|
116
152
|
e.stopPropagation();
|
|
117
|
-
const to = !
|
|
153
|
+
const to = !isChecked.value;
|
|
118
154
|
selected.value = to;
|
|
119
155
|
treeView.updateSelected(myKey.value, to);
|
|
120
156
|
treeView.emitSelected();
|
|
@@ -166,11 +202,15 @@ export const YTreeViewNode = defineComponent({
|
|
|
166
202
|
default: () => [slots['expand-icon'] ? slots['expand-icon']() : _createVNode(YIconExpand, null, null)]
|
|
167
203
|
}) : _createVNode("i", {
|
|
168
204
|
"class": 'y-tree-view-node__no-expand-icon'
|
|
169
|
-
}, null), props.enableSelect &&
|
|
205
|
+
}, null), props.enableSelect && // biome-ignore lint/a11y/useSemanticElements: passive
|
|
206
|
+
_createVNode("div", {
|
|
170
207
|
"class": 'y-tree-view-node__select',
|
|
208
|
+
"role": "checkbox",
|
|
209
|
+
"aria-checked": isChecked.value,
|
|
171
210
|
"onClick": onClickSelect
|
|
172
211
|
}, [_createVNode(YIconCheckbox, {
|
|
173
|
-
"checked":
|
|
212
|
+
"checked": isChecked.value,
|
|
213
|
+
"indeterminate": !selected.value && childrenSomeChecked.value
|
|
174
214
|
}, null)]), _createVNode("div", {
|
|
175
215
|
"class": 'y-tree-view-node__content'
|
|
176
216
|
}, [slots.leading && _createVNode("div", {
|
|
@@ -226,15 +266,12 @@ export const YTreeViewNode = defineComponent({
|
|
|
226
266
|
})])]
|
|
227
267
|
})]);
|
|
228
268
|
});
|
|
229
|
-
const myKey = computed(() => {
|
|
230
|
-
return getObjectValueByPath(props.item, props.itemKey);
|
|
231
|
-
});
|
|
232
269
|
const nodeState = {
|
|
233
270
|
myKey,
|
|
234
271
|
expanded,
|
|
235
272
|
active,
|
|
236
273
|
selected,
|
|
237
|
-
|
|
274
|
+
indeterminate
|
|
238
275
|
};
|
|
239
276
|
expose(nodeState);
|
|
240
277
|
onBeforeMount(() => {
|
|
@@ -246,7 +283,8 @@ export const YTreeViewNode = defineComponent({
|
|
|
246
283
|
expanded,
|
|
247
284
|
active,
|
|
248
285
|
selected,
|
|
249
|
-
|
|
286
|
+
indeterminate,
|
|
287
|
+
childrenSelection
|
|
250
288
|
};
|
|
251
289
|
}
|
|
252
290
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeViewNode.js","names":["computed","getCurrentInstance","mergeProps","onBeforeMount","ref","resolveComponent","createVNode","_createVNode","_mergeProps","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","vm","treeView","container$","expanded","active","selected","immediate","children","itemChildren","slice","imLeaf","value","length","classes","styles","contentText","itemText","slotProps","toggleActive","searchLoading","leaves","filter","leaf","isExcluded","e","to","updateActive","myKey","emitActive","onClick","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","leading","text","trailing","map","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n type VNodeArrayChildren,\n computed,\n getCurrentInstance,\n mergeProps,\n onBeforeMount,\n ref,\n resolveComponent,\n} from 'vue';\n\nimport { pressItemsPropsOptions } from '@/abstract/items';\nimport { useTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport { getObjectValueByPath } from '@/util/common';\nimport { defineComponent } from '@/util/component';\nimport { propsFactory } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YIconCheckbox, YIconExpand } from '../icons';\nimport { YPlate } from '../plate';\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\nimport { YExpandVTransition } from '../transitions';\n\nexport const pressYTreeViewNodeProps = propsFactory(\n {\n search: String,\n disableTransition: Boolean,\n enableActive: Boolean,\n activeClass: [String, Array],\n activeSingleModifier: String,\n requiredActive: Boolean,\n activeColor: {\n type: String,\n default: 'primary',\n },\n enableSelect: Boolean,\n onMouseenterContainer: Function,\n onMouseleaveContainer: Function,\n onMousemoveContainer: Function,\n ...pressItemsPropsOptions({\n itemKey: 'id',\n }),\n },\n 'YTreeViewNode',\n);\n\nexport const YTreeViewNode = defineComponent({\n name: 'YTreeNode',\n components: {\n YButton,\n YIconExpand,\n YPlate,\n YIconCheckbox,\n },\n props: {\n item: {\n type: Object as PropType<any>,\n },\n level: {\n type: Number as PropType<number>,\n default: 0,\n },\n ...pressYTreeViewNodeProps(),\n },\n slots: Object as SlotsType<{\n default: any;\n 'expand-icon': any;\n leading: any;\n trailing: any;\n }>,\n setup(props, { slots, expose }) {\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\n const vm = getCurrentInstance();\n const treeView = useTreeView();\n const container$ = ref<HTMLElement>();\n\n const expanded = ref(false);\n const active = ref(false);\n const selected = ref(false);\n const immediate = ref(false);\n\n const children = computed(() => {\n return (\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\n ).slice();\n });\n\n const imLeaf = computed(() => children.value.length < 1);\n\n const classes = computed(() => {\n return {\n 'y-tree-view-node': true,\n 'y-tree-view-node--leaf': imLeaf.value,\n 'y-tree-view-node--expanded': expanded.value,\n 'y-tree-view-node--active': active.value,\n };\n });\n\n const styles = computed(() => {\n return {\n '--tree-view-node--level': props.level,\n };\n });\n\n const contentText = computed(() => {\n return getObjectValueByPath(props.item, props.itemText) ?? '';\n });\n\n const slotProps = computed(() => {\n return {\n level: props.level,\n imLeaf: imLeaf.value,\n toggleActive,\n };\n });\n\n const searchLoading = computed(() => {\n return treeView.searchLoading.value;\n });\n\n const leaves = computed(() => {\n return children.value.filter((leaf: any) => {\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n function toggleActive(e?: MouseEvent) {\n const to = !active.value;\n active.value = to;\n treeView.updateActive(myKey.value, to, e);\n treeView.emitActive();\n }\n\n function onClick(e: MouseEvent) {\n toggleActive(e);\n }\n\n function onClickExpand(e: MouseEvent) {\n e.stopPropagation();\n const to = !expanded.value;\n expanded.value = to;\n treeView.updateExpanded(myKey.value, to);\n treeView.emitExpanded();\n }\n\n function onClickSelect(e: MouseEvent) {\n e.stopPropagation();\n const to = !selected.value;\n selected.value = to;\n treeView.updateSelected(myKey.value, to);\n treeView.emitSelected();\n }\n\n function onMouseenterContainer(e: MouseEvent) {\n props.onMouseenterContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMouseleaveContainer(e: MouseEvent) {\n props.onMouseleaveContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMousemoveContainer(e: MouseEvent) {\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\n }\n\n useRender(() => {\n const indentSpacer: VNodeArrayChildren = [];\n for (let i = 0; i < props.level; i += 1) {\n indentSpacer.push(\n <div class={'y-tree-view-node__indent-spacer'}></div>,\n );\n }\n\n return (\n <div\n class={classes.value}\n style={styles.value}\n role=\"treeitem\"\n data-level={props.level}\n >\n <div\n ref={container$}\n class={'y-tree-view-node__container'}\n onClick={(e: MouseEvent) =>\n props.enableActive ? onClick(e) : void 0\n }\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\n >\n <YPlate />\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\n {/* EXPAND */}\n {!imLeaf.value && leaves.value.length > 0 ? (\n <YButton\n class={'y-tree-view-node__expand-icon'}\n variation={'icon'}\n onClick={onClickExpand}\n >\n {slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <YIconExpand></YIconExpand>\n )}\n </YButton>\n ) : (\n <i class={'y-tree-view-node__no-expand-icon'}></i>\n )}\n {/* SELECT */}\n {props.enableSelect && (\n <div class={'y-tree-view-node__select'} onClick={onClickSelect}>\n <YIconCheckbox checked={selected.value}></YIconCheckbox>\n </div>\n )}\n {/* CONTENT */}\n <div class={'y-tree-view-node__content'}>\n {slots.leading && (\n <div class={'y-tree-view-node__leading'}>\n {slots.leading(slotProps.value)}\n </div>\n )}\n <div class={'y-tree-view-node__text'}>\n {slots.default ? (\n slots.default?.({\n text: contentText.value,\n item: props.item,\n ...slotProps.value,\n })\n ) : props.search && !searchLoading.value ? (\n <YTextHighlighter\n text={contentText.value}\n keyword={props.search}\n ></YTextHighlighter>\n ) : (\n contentText.value\n )}\n </div>\n {slots.trailing && (\n <div class={'y-tree-view-node__trailing'}>\n {slots.trailing(slotProps.value)}\n </div>\n )}\n </div>\n </div>\n {/* CHILDREN */}\n {children.value.length > 0 && (\n <YExpandVTransition disabled={props.disableTransition}>\n {expanded.value && (\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\n {leaves.value.map((item: any) => {\n return (\n <YTreeNode\n {...mergeProps(props)}\n key={getObjectValueByPath(item, props.itemKey)}\n level={(props.level ?? 0) + 1}\n item={item}\n >\n {{\n default:\n slots.default &&\n ((...args: any[]) => slots.default?.(...args)),\n 'expand-icon':\n slots['expand-icon'] &&\n ((...args: any[]) =>\n slots['expand-icon']?.(...args)),\n leading:\n slots.leading &&\n ((...args: any[]) => slots.leading?.(...args)),\n trailing:\n slots.trailing &&\n ((...args: any[]) => slots.trailing?.(...args)),\n }}\n </YTreeNode>\n );\n })}\n </div>\n )}\n </YExpandVTransition>\n )}\n </div>\n );\n });\n\n const myKey = computed(() => {\n return getObjectValueByPath(props.item, props.itemKey);\n });\n\n const nodeState = {\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n\n expose(nodeState);\n\n onBeforeMount(() => {\n treeView?.register?.(myKey.value, nodeState);\n });\n\n return {\n treeView,\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n },\n});\n\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YTreeViewNode.js","names":["computed","mergeProps","onBeforeMount","ref","resolveComponent","watch","createVNode","_createVNode","_mergeProps","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeStrategy","type","default","activeClass","Array","activeSingleModifier","requiredActive","activeColor","enableSelect","selectStrategy","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","treeView","container$","expanded","active","selected","indeterminate","myKey","children","itemChildren","slice","imLeaf","value","length","searchLoading","leaves","filter","leaf","isExcluded","childrenSelection","selectedState","map","child","childrenAllChecked","all","childrenSomeChecked","some","isChecked","classes","styles","contentText","itemText","slotProps","toggleActive","e","to","updateActive","emitActive","onClick","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","leading","text","trailing","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["/** biome-ignore-all lint/a11y/noStaticElementInteractions: <explanation> */\r\n/** biome-ignore-all lint/a11y/useFocusableInteractive: <explanation> */\r\n/** biome-ignore-all lint/a11y/useKeyWithClickEvents: <explanation> */\r\nimport {\r\n computed,\r\n mergeProps,\r\n onBeforeMount,\r\n type PropType,\r\n ref,\r\n resolveComponent,\r\n type SlotsType,\r\n type VNodeArrayChildren,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { pressItemsPropsOptions } from '@/abstract/items';\r\nimport { useTreeView } from '@/components/tree-view/tree-view';\r\nimport { useRender } from '@/composables/component';\r\nimport { getObjectValueByPath } from '@/util/common';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\n\r\nimport { YButton } from '../button';\r\nimport { YIconCheckbox, YIconExpand } from '../icons';\r\nimport { YPlate } from '../plate';\r\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\r\nimport { YExpandVTransition } from '../transitions';\r\n\r\nexport const pressYTreeViewNodeProps = propsFactory(\r\n {\r\n search: String,\r\n disableTransition: Boolean,\r\n enableActive: Boolean,\r\n activeStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative'>,\r\n default: 'independent',\r\n },\r\n activeClass: [String, Array],\r\n activeSingleModifier: String,\r\n requiredActive: Boolean,\r\n activeColor: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n enableSelect: Boolean,\r\n selectStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n * leaves: relative after return values only leaf\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative' | 'leaf'>,\r\n default: 'relative',\r\n },\r\n onMouseenterContainer: Function,\r\n onMouseleaveContainer: Function,\r\n onMousemoveContainer: Function,\r\n ...pressItemsPropsOptions({\r\n itemKey: 'id',\r\n }),\r\n },\r\n 'YTreeViewNode',\r\n);\r\n\r\n/**\r\n * TODO: correct selected values what selectStrategy leaf or others\r\n */\r\nexport const YTreeViewNode = defineComponent({\r\n name: 'YTreeNode',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YPlate,\r\n YIconCheckbox,\r\n },\r\n props: {\r\n item: {\r\n type: Object as PropType<any>,\r\n },\r\n level: {\r\n type: Number as PropType<number>,\r\n default: 0,\r\n },\r\n ...pressYTreeViewNodeProps(),\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n 'expand-icon': any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, expose }) {\r\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\r\n const treeView = useTreeView();\r\n const container$ = ref<HTMLElement>();\r\n\r\n const expanded = ref(false);\r\n const active = ref(false);\r\n const selected = ref(false);\r\n const indeterminate = ref(false);\r\n\r\n const myKey = computed(() =>\r\n getObjectValueByPath(props.item, props.itemKey),\r\n );\r\n\r\n const children = computed(() => {\r\n return (\r\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\r\n ).slice();\r\n });\r\n\r\n const imLeaf = computed(() => children.value.length < 1);\r\n\r\n const searchLoading = computed(() => {\r\n return treeView.searchLoading.value;\r\n });\r\n\r\n const leaves = computed(() => {\r\n return children.value.filter((leaf: any) => {\r\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const childrenSelection = computed(() =>\r\n treeView.selectedState.value(\r\n myKey.value,\r\n children.value.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n ),\r\n );\r\n\r\n const childrenAllChecked = computed(() => {\r\n return !!children.value?.length && childrenSelection.value.all;\r\n });\r\n\r\n const childrenSomeChecked = computed(() => {\r\n return (\r\n (props.selectStrategy === 'relative' ||\r\n props.selectStrategy === 'leaf') &&\r\n (children.value?.length ?? 0) > 0 &&\r\n !childrenAllChecked.value &&\r\n childrenSelection.value.some\r\n );\r\n });\r\n\r\n const isChecked = computed(() => {\r\n return (\r\n selected.value ||\r\n (props.selectStrategy === 'leaf' && childrenAllChecked.value)\r\n );\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view-node': true,\r\n 'y-tree-view-node--leaf': imLeaf.value,\r\n 'y-tree-view-node--expanded': expanded.value,\r\n 'y-tree-view-node--active': active.value,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n '--tree-view-node--level': props.level,\r\n };\r\n });\r\n\r\n const contentText = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemText) ?? '';\r\n });\r\n\r\n const slotProps = computed(() => {\r\n return {\r\n level: props.level,\r\n imLeaf: imLeaf.value,\r\n toggleActive,\r\n };\r\n });\r\n\r\n watch(childrenSomeChecked, (value) => {\r\n indeterminate.value = value;\r\n });\r\n\r\n function toggleActive(e?: MouseEvent) {\r\n const to = !active.value;\r\n active.value = to;\r\n treeView.updateActive(myKey.value, to, e);\r\n treeView.emitActive();\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n toggleActive(e);\r\n }\r\n\r\n function onClickExpand(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !expanded.value;\r\n expanded.value = to;\r\n treeView.updateExpanded(myKey.value, to);\r\n treeView.emitExpanded();\r\n }\r\n\r\n function onClickSelect(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !isChecked.value;\r\n selected.value = to;\r\n treeView.updateSelected(myKey.value, to);\r\n treeView.emitSelected();\r\n }\r\n\r\n function onMouseenterContainer(e: MouseEvent) {\r\n props.onMouseenterContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMouseleaveContainer(e: MouseEvent) {\r\n props.onMouseleaveContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMousemoveContainer(e: MouseEvent) {\r\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\r\n }\r\n\r\n useRender(() => {\r\n const indentSpacer: VNodeArrayChildren = [];\r\n for (let i = 0; i < props.level; i += 1) {\r\n indentSpacer.push(\r\n <div class={'y-tree-view-node__indent-spacer'}></div>,\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n class={classes.value}\r\n style={styles.value}\r\n role=\"treeitem\"\r\n data-level={props.level}\r\n >\r\n <div\r\n ref={container$}\r\n class={'y-tree-view-node__container'}\r\n onClick={(e: MouseEvent) =>\r\n props.enableActive ? onClick(e) : void 0\r\n }\r\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\r\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\r\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\r\n >\r\n <YPlate />\r\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\r\n {/* EXPAND */}\r\n {!imLeaf.value && leaves.value.length > 0 ? (\r\n <YButton\r\n class={'y-tree-view-node__expand-icon'}\r\n variation={'icon'}\r\n onClick={onClickExpand}\r\n >\r\n {slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <YIconExpand></YIconExpand>\r\n )}\r\n </YButton>\r\n ) : (\r\n <i class={'y-tree-view-node__no-expand-icon'}></i>\r\n )}\r\n {/* SELECT */}\r\n {props.enableSelect && (\r\n // biome-ignore lint/a11y/useSemanticElements: passive\r\n <div\r\n class={'y-tree-view-node__select'}\r\n role=\"checkbox\"\r\n aria-checked={isChecked.value}\r\n onClick={onClickSelect}\r\n >\r\n <YIconCheckbox\r\n checked={isChecked.value}\r\n indeterminate={!selected.value && childrenSomeChecked.value}\r\n ></YIconCheckbox>\r\n </div>\r\n )}\r\n {/* CONTENT */}\r\n <div class={'y-tree-view-node__content'}>\r\n {slots.leading && (\r\n <div class={'y-tree-view-node__leading'}>\r\n {slots.leading(slotProps.value)}\r\n </div>\r\n )}\r\n <div class={'y-tree-view-node__text'}>\r\n {slots.default ? (\r\n slots.default?.({\r\n text: contentText.value,\r\n item: props.item,\r\n ...slotProps.value,\r\n })\r\n ) : props.search && !searchLoading.value ? (\r\n <YTextHighlighter\r\n text={contentText.value}\r\n keyword={props.search}\r\n ></YTextHighlighter>\r\n ) : (\r\n contentText.value\r\n )}\r\n </div>\r\n {slots.trailing && (\r\n <div class={'y-tree-view-node__trailing'}>\r\n {slots.trailing(slotProps.value)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {/* CHILDREN */}\r\n {children.value.length > 0 && (\r\n <YExpandVTransition disabled={props.disableTransition}>\r\n {expanded.value && (\r\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\r\n {leaves.value.map((item: any) => {\r\n return (\r\n <YTreeNode\r\n {...mergeProps(props)}\r\n key={getObjectValueByPath(item, props.itemKey)}\r\n level={(props.level ?? 0) + 1}\r\n item={item}\r\n >\r\n {{\r\n default:\r\n slots.default &&\r\n ((...args: any[]) => slots.default?.(...args)),\r\n 'expand-icon':\r\n slots['expand-icon'] &&\r\n ((...args: any[]) =>\r\n slots['expand-icon']?.(...args)),\r\n leading:\r\n slots.leading &&\r\n ((...args: any[]) => slots.leading?.(...args)),\r\n trailing:\r\n slots.trailing &&\r\n ((...args: any[]) => slots.trailing?.(...args)),\r\n }}\r\n </YTreeNode>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </YExpandVTransition>\r\n )}\r\n </div>\r\n );\r\n });\r\n\r\n const nodeState = {\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n };\r\n\r\n expose(nodeState);\r\n\r\n onBeforeMount(() => {\r\n treeView?.register?.(myKey.value, nodeState);\r\n });\r\n\r\n return {\r\n treeView,\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n childrenSelection,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\r\n"],"mappings":"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","ignoreList":[]}
|