yuyeon 0.0.26 → 0.0.27
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 +5840 -5496
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/components/alert/YAlert.mjs +41 -6
- package/lib/components/alert/YAlert.mjs.map +1 -1
- package/lib/components/alert/YAlert.scss +25 -23
- package/lib/components/button/YButton.mjs +79 -74
- package/lib/components/button/YButton.mjs.map +1 -1
- package/lib/components/checkbox/YCheckbox.mjs.map +1 -1
- package/lib/components/checkbox/YCheckbox.scss +48 -48
- package/lib/components/index.mjs +1 -0
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/tab/YTab.mjs +57 -7
- package/lib/components/tab/YTab.mjs.map +1 -1
- package/lib/components/tab/YTab.scss +59 -0
- package/lib/components/tab/YTabs.mjs +50 -8
- package/lib/components/tab/YTabs.mjs.map +1 -1
- package/lib/components/tab/YTabs.scss +10 -0
- package/lib/components/tab/index.mjs +1 -0
- package/lib/components/tab/index.mjs.map +1 -1
- package/lib/components/tab/shared.mjs +2 -0
- package/lib/components/tab/shared.mjs.map +1 -0
- package/lib/components/tab/types.mjs +2 -0
- package/lib/components/tab/types.mjs.map +1 -0
- package/lib/components/table/YTable.scss +2 -1
- package/lib/components/toggle-button/YToggleButton.mjs +2 -0
- package/lib/components/toggle-button/YToggleButton.mjs.map +1 -0
- package/lib/components/toggle-button/index.mjs +2 -0
- package/lib/components/toggle-button/index.mjs.map +1 -0
- package/lib/components/tooltip/YTooltip.mjs +3 -3
- package/lib/components/tooltip/YTooltip.mjs.map +1 -1
- package/lib/components/tree-view/YTreeView.mjs +1 -1
- package/lib/components/tree-view/YTreeView.mjs.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
- package/lib/composables/choice.mjs +1 -1
- package/lib/composables/choice.mjs.map +1 -1
- package/lib/composables/communication.mjs +1 -1
- package/lib/composables/communication.mjs.map +1 -1
- package/lib/composables/index.mjs +2 -0
- package/lib/composables/index.mjs.map +1 -0
- package/lib/composables/theme/setting.mjs.map +1 -1
- package/lib/composables/vue-router.mjs +32 -0
- package/lib/composables/vue-router.mjs.map +1 -0
- package/lib/styles/_variables.scss +2 -0
- package/lib/styles/theme/dark.scss +11 -11
- package/lib/styles/theme/light.scss +11 -11
- package/lib/util/index.mjs +16 -0
- package/lib/util/index.mjs.map +1 -0
- package/lib/util/reactivity.mjs +5 -0
- package/lib/util/reactivity.mjs.map +1 -1
- package/lib/util/vue-component.mjs +24 -0
- package/lib/util/vue-component.mjs.map +1 -1
- package/package.json +11 -1
- package/types/components/button/YButton.d.ts +96 -42
- package/types/components/checkbox/YInputCheckbox.d.ts +1 -1
- package/types/components/dropdown/YDropdown.d.ts +3 -3
- package/types/components/field-input/YFieldInput.d.ts +26 -44
- package/types/components/index.d.ts +1 -0
- package/types/components/input/YInput.d.ts +16 -16
- package/types/components/layer/YLayer.d.ts +8 -8
- package/types/components/list/YList.d.ts +2 -2
- package/types/components/list/YListItem.d.ts +3 -3
- package/types/components/pagination/YPagination.d.ts +6 -6
- package/types/components/select/YSelect.d.ts +35 -53
- package/types/components/tab/YTab.d.ts +282 -7
- package/types/components/tab/YTabs.d.ts +111 -3
- package/types/components/tab/index.d.ts +1 -0
- package/types/components/tab/shared.d.ts +3 -0
- package/types/components/tab/types.d.ts +4 -0
- package/types/components/table/YDataTable.d.ts +7 -7
- package/types/components/table/YDataTableHead.d.ts +3 -3
- package/types/components/table/YDataTableRow.d.ts +3 -3
- package/types/components/table/YDataTableServer.d.ts +7 -7
- package/types/components/table/composibles/items.d.ts +1 -1
- package/types/components/table/composibles/selection.d.ts +1 -1
- package/types/components/table/composibles/sorting.d.ts +1 -1
- package/types/components/toggle-button/YToggleButton.d.ts +3 -0
- package/types/components/toggle-button/index.d.ts +1 -0
- package/types/components/tree-view/YTreeViewNode.d.ts +6 -6
- package/types/composables/choice.d.ts +107 -0
- package/types/composables/dimension.d.ts +6 -6
- package/types/composables/focus.d.ts +2 -2
- package/types/composables/list-items.d.ts +1 -1
- package/types/composables/theme/index.d.ts +1 -1
- package/types/composables/vue-router.d.ts +43 -0
- package/types/shims.d.ts +81 -77
- package/types/util/collection.d.ts +1 -0
- package/types/util/frame-scheduler.d.ts +7 -0
- package/types/util/index.d.ts +15 -0
- package/types/util/reactivity.d.ts +4 -0
- package/types/util/validation.d.ts +3 -0
- package/types/util/vue-component.d.ts +8 -4
|
@@ -1,14 +1,64 @@
|
|
|
1
|
-
import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
|
-
import {
|
|
1
|
+
import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
|
+
import { shallowRef } from '@vue/runtime-core';
|
|
3
|
+
import { computed, defineComponent, ref } from 'vue';
|
|
3
4
|
import { useRender } from "../../composables/component.mjs";
|
|
4
|
-
import {
|
|
5
|
+
import { chooseProps, propsFactory } from "../../util/index.mjs";
|
|
6
|
+
import { YButton, pressYButtonProps } from "../button/index.mjs";
|
|
7
|
+
import { Y_TABS_KEY } from "./shared.mjs";
|
|
8
|
+
import "./YTab.scss";
|
|
9
|
+
export const pressYTabPropsOptions = propsFactory({
|
|
10
|
+
text: String,
|
|
11
|
+
value: String,
|
|
12
|
+
hideIndicator: Boolean,
|
|
13
|
+
indicatorColor: String,
|
|
14
|
+
...pressYButtonProps({
|
|
15
|
+
selectedClass: 'y-tab--selected',
|
|
16
|
+
noWave: true
|
|
17
|
+
})
|
|
18
|
+
}, 'YTab');
|
|
5
19
|
export const YTab = defineComponent({
|
|
6
20
|
name: 'YTab',
|
|
7
|
-
props:
|
|
8
|
-
|
|
21
|
+
props: pressYTabPropsOptions(),
|
|
22
|
+
slots: Object,
|
|
23
|
+
setup(props, _ref) {
|
|
24
|
+
let {
|
|
25
|
+
slots,
|
|
26
|
+
attrs
|
|
27
|
+
} = _ref;
|
|
28
|
+
const selected = shallowRef(false);
|
|
29
|
+
const indicator$ = ref();
|
|
30
|
+
const indicatorStyles = computed(() => {
|
|
31
|
+
return {};
|
|
32
|
+
});
|
|
33
|
+
const attrsProps = computed(() => {
|
|
34
|
+
return {
|
|
35
|
+
role: 'tab',
|
|
36
|
+
'aria-selected': `${String(selected.value)}`,
|
|
37
|
+
tabindex: selected.value ? 0 : -1
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
function onChoice(_ref2) {
|
|
41
|
+
let {
|
|
42
|
+
value
|
|
43
|
+
} = _ref2;
|
|
44
|
+
selected.value = value;
|
|
45
|
+
}
|
|
9
46
|
useRender(() => {
|
|
10
|
-
|
|
11
|
-
|
|
47
|
+
const yButtonProps = chooseProps(props, YButton.props);
|
|
48
|
+
console.log(props, yButtonProps);
|
|
49
|
+
return _createVNode(_Fragment, null, [_createVNode(YButton, _mergeProps({
|
|
50
|
+
"class": ['y-tab'],
|
|
51
|
+
"active": false
|
|
52
|
+
}, attrsProps.value, attrs, yButtonProps, {
|
|
53
|
+
"injectSymbol": Y_TABS_KEY,
|
|
54
|
+
"onChoice:selected": onChoice
|
|
55
|
+
}), {
|
|
56
|
+
default: () => slots.default?.() ?? props.text,
|
|
57
|
+
append: () => !props.hideIndicator && _createVNode("div", {
|
|
58
|
+
"ref": indicator$,
|
|
59
|
+
"class": ['y-tab__indicator'],
|
|
60
|
+
"style": indicatorStyles.value
|
|
61
|
+
}, null)
|
|
12
62
|
})]);
|
|
13
63
|
});
|
|
14
64
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTab.mjs","names":["defineComponent","useRender","YButton","YTab","name","props","setup","_createVNode","_Fragment","default"],"sources":["../../../src/components/tab/YTab.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"YTab.mjs","names":["shallowRef","computed","defineComponent","ref","useRender","chooseProps","propsFactory","YButton","pressYButtonProps","Y_TABS_KEY","pressYTabPropsOptions","text","String","value","hideIndicator","Boolean","indicatorColor","selectedClass","noWave","YTab","name","props","slots","Object","setup","_ref","attrs","selected","indicator$","indicatorStyles","attrsProps","role","tabindex","onChoice","_ref2","yButtonProps","console","log","_createVNode","_Fragment","_mergeProps","default","append"],"sources":["../../../src/components/tab/YTab.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport {\n PropType,\n SlotsType,\n computed,\n defineComponent,\n mergeProps,\n ref,\n} from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { chooseProps, omit, propsFactory } from '../../util';\nimport { YButton, pressYButtonProps } from '../button';\nimport { Y_TABS_KEY } from './shared';\n\nimport './YTab.scss';\n\nexport const pressYTabPropsOptions = propsFactory(\n {\n text: String as PropType<string>,\n value: String as PropType<string>,\n hideIndicator: Boolean as PropType<boolean>,\n indicatorColor: String as PropType<string>,\n ...pressYButtonProps({\n selectedClass: 'y-tab--selected',\n noWave: true,\n }),\n },\n 'YTab',\n);\n\nexport const YTab = defineComponent({\n name: 'YTab',\n props: pressYTabPropsOptions(),\n slots: Object as SlotsType<{\n default?: any;\n }>,\n setup(props, { slots, attrs }) {\n const selected = shallowRef(false);\n\n const indicator$ = ref();\n const indicatorStyles = computed(() => {\n return {};\n });\n const attrsProps = computed(() => {\n return {\n role: 'tab',\n 'aria-selected': `${String(selected.value)}`,\n tabindex: selected.value ? 0 : -1,\n };\n });\n\n function onChoice({ value }: { value: boolean }) {\n selected.value = value;\n }\n\n useRender(() => {\n const yButtonProps = chooseProps(props, YButton.props);\n console.log(props, yButtonProps);\n return (\n <>\n <YButton\n class={['y-tab']}\n active={false}\n {...attrsProps.value}\n {...attrs}\n {...yButtonProps}\n injectSymbol={Y_TABS_KEY}\n onChoice:selected={onChoice}\n >\n {{\n default: () => slots.default?.() ?? props.text,\n append: () =>\n !props.hideIndicator && (\n <div\n ref={indicator$}\n class={['y-tab__indicator']}\n style={indicatorStyles.value}\n ></div>\n ),\n }}\n </YButton>\n </>\n );\n });\n\n return {};\n },\n});\n"],"mappings":";AAAA,SAASA,UAAU,QAAQ,mBAAmB;AAC9C,SAGEC,QAAQ,EACRC,eAAe,EAEfC,GAAG,QACE,KAAK;AAAC,SAEJC,SAAS;AAAA,SACTC,WAAW,EAAQC,YAAY;AAAA,SAC/BC,OAAO,EAAEC,iBAAiB;AAAA,SAC1BC,UAAU;AAEnB;AAEA,OAAO,MAAMC,qBAAqB,GAAGJ,YAAY,CAC/C;EACEK,IAAI,EAAEC,MAA0B;EAChCC,KAAK,EAAED,MAA0B;EACjCE,aAAa,EAAEC,OAA4B;EAC3CC,cAAc,EAAEJ,MAA0B;EAC1C,GAAGJ,iBAAiB,CAAC;IACjBS,aAAa,EAAE,iBAAiB;IAChCC,MAAM,EAAE;EACZ,CAAC;AACH,CAAC,EACD,MACF,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGjB,eAAe,CAAC;EAClCkB,IAAI,EAAE,MAAM;EACZC,KAAK,EAAEX,qBAAqB,CAAC,CAAC;EAC9BY,KAAK,EAAEC,MAEL;EACFC,KAAKA,CAACH,KAAK,EAAAI,IAAA,EAAoB;IAAA,IAAlB;MAAEH,KAAK;MAAEI;IAAM,CAAC,GAAAD,IAAA;IAC3B,MAAME,QAAQ,GAAG3B,UAAU,CAAC,KAAK,CAAC;IAElC,MAAM4B,UAAU,GAAGzB,GAAG,CAAC,CAAC;IACxB,MAAM0B,eAAe,GAAG5B,QAAQ,CAAC,MAAM;MACrC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM6B,UAAU,GAAG7B,QAAQ,CAAC,MAAM;MAChC,OAAO;QACL8B,IAAI,EAAE,KAAK;QACX,eAAe,EAAG,GAAEnB,MAAM,CAACe,QAAQ,CAACd,KAAK,CAAE,EAAC;QAC5CmB,QAAQ,EAAEL,QAAQ,CAACd,KAAK,GAAG,CAAC,GAAG,CAAC;MAClC,CAAC;IACH,CAAC,CAAC;IAEF,SAASoB,QAAQA,CAAAC,KAAA,EAAgC;MAAA,IAA/B;QAAErB;MAA0B,CAAC,GAAAqB,KAAA;MAC7CP,QAAQ,CAACd,KAAK,GAAGA,KAAK;IACxB;IAEAT,SAAS,CAAC,MAAM;MACd,MAAM+B,YAAY,GAAG9B,WAAW,CAACgB,KAAK,EAAEd,OAAO,CAACc,KAAK,CAAC;MACtDe,OAAO,CAACC,GAAG,CAAChB,KAAK,EAAEc,YAAY,CAAC;MAChC,OAAAG,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAA/B,OAAA,EAAAiC,WAAA;QAAA,SAGa,CAAC,OAAO,CAAC;QAAA,UACR;MAAK,GACTV,UAAU,CAACjB,KAAK,EAChBa,KAAK,EACLS,YAAY;QAAA,gBACF1B,UAAU;QAAA,qBACLwB;MAAQ;QAGzBQ,OAAO,EAAEA,CAAA,KAAMnB,KAAK,CAACmB,OAAO,GAAG,CAAC,IAAIpB,KAAK,CAACV,IAAI;QAC9C+B,MAAM,EAAEA,CAAA,KACN,CAACrB,KAAK,CAACP,aAAa,IAAAwB,YAAA;UAAA,OAEXV,UAAU;UAAA,SACR,CAAC,kBAAkB,CAAC;UAAA,SACpBC,eAAe,CAAChB;QAAK;MAE/B;IAKb,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
@use '../../styles/variables';
|
|
2
|
+
|
|
3
|
+
.y-tab {
|
|
4
|
+
--y-tab-color: var(--y-theme-on-surface);
|
|
5
|
+
--y-tab-active-color: var(--y-theme-primary);
|
|
6
|
+
|
|
7
|
+
--y-tab-indicator-width: 2.7px;
|
|
8
|
+
--y-tab-indicator-color: inherit;
|
|
9
|
+
--y-tab-active-indicator-color: var(--y-theme-primary);
|
|
10
|
+
--y-tab-hover-indicator-color: var(--y-theme-outline);
|
|
11
|
+
|
|
12
|
+
box-shadow: none;
|
|
13
|
+
border-radius: 0;
|
|
14
|
+
font-size: 1rem;
|
|
15
|
+
padding: 4px 8px 12px;
|
|
16
|
+
color: var(--y-tab-color);
|
|
17
|
+
|
|
18
|
+
&:before {
|
|
19
|
+
background: radial-gradient(currentColor 50%, transparent);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&__indicator {
|
|
23
|
+
height: var(--y-tab-indicator-width);
|
|
24
|
+
position: absolute;
|
|
25
|
+
left: 4px;
|
|
26
|
+
right: 4px;
|
|
27
|
+
bottom: 0;
|
|
28
|
+
background-color: currentColor;
|
|
29
|
+
border-top-left-radius: 4444px;
|
|
30
|
+
border-top-right-radius: 4444px;
|
|
31
|
+
transform: scaleY(0);
|
|
32
|
+
transform-origin: bottom center;
|
|
33
|
+
transition-timing-function: variables.$basic-transition-timing-function;
|
|
34
|
+
transition-duration: 200ms;
|
|
35
|
+
transition-property: all;
|
|
36
|
+
will-change: transform;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.y-button {
|
|
40
|
+
&__content {
|
|
41
|
+
padding: 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&--active {
|
|
46
|
+
font-weight: 700;
|
|
47
|
+
color: var(--y-tab-active-color);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&:hover:not(&--active) &__indicator {
|
|
51
|
+
transform: scaleY(1);
|
|
52
|
+
color: var(--y-tab-hover-indicator-color);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&--active &__indicator {
|
|
56
|
+
color: var(--y-tab-active-indicator-color);
|
|
57
|
+
transform: scaleY(1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
import { createVNode as _createVNode } from "vue";
|
|
2
|
-
import { defineComponent } from 'vue';
|
|
1
|
+
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
|
|
2
|
+
import { computed, defineComponent } from 'vue';
|
|
3
|
+
import { pressChoicePropsOptions, useChoice } from "../../composables/choice.mjs";
|
|
3
4
|
import { useRender } from "../../composables/component.mjs";
|
|
4
5
|
import { useResizeObserver } from "../../composables/resize-observer.mjs";
|
|
5
6
|
import { propsFactory } from "../../util/vue-component.mjs";
|
|
6
|
-
|
|
7
|
+
import { YTab } from "./YTab.mjs";
|
|
8
|
+
import { Y_TABS_KEY } from "./shared.mjs";
|
|
9
|
+
import "./YTabs.scss";
|
|
10
|
+
export const pressYTabsPropOptions = propsFactory({
|
|
11
|
+
items: {
|
|
12
|
+
type: Array
|
|
13
|
+
},
|
|
14
|
+
...pressChoicePropsOptions({
|
|
15
|
+
selectedClass: 'y-tab--active',
|
|
16
|
+
mandatory: 'force'
|
|
17
|
+
})
|
|
18
|
+
}, 'YTabs');
|
|
7
19
|
export const YTabs = defineComponent({
|
|
8
20
|
name: 'YTabs',
|
|
9
21
|
props: {
|
|
10
22
|
tag: {
|
|
11
23
|
type: String,
|
|
12
24
|
default: 'div'
|
|
13
|
-
}
|
|
25
|
+
},
|
|
26
|
+
...pressYTabsPropOptions()
|
|
27
|
+
},
|
|
28
|
+
emits: {
|
|
29
|
+
'update:modelValue': value => true
|
|
14
30
|
},
|
|
15
31
|
setup(props, _ref) {
|
|
16
32
|
let {
|
|
@@ -24,9 +40,30 @@ export const YTabs = defineComponent({
|
|
|
24
40
|
resizeObservedRef: content$,
|
|
25
41
|
contentRect
|
|
26
42
|
} = useResizeObserver();
|
|
43
|
+
const choiceState = useChoice(props, Y_TABS_KEY);
|
|
44
|
+
const slotProps = computed(() => {
|
|
45
|
+
return {
|
|
46
|
+
next: choiceState.next,
|
|
47
|
+
prev: choiceState.prev,
|
|
48
|
+
select: choiceState.select,
|
|
49
|
+
isSelected: choiceState.isSelected
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
const tabItems = computed(() => {
|
|
53
|
+
return props.items?.map(item => {
|
|
54
|
+
if (typeof item !== 'object') {
|
|
55
|
+
return {
|
|
56
|
+
text: item,
|
|
57
|
+
value: item
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return item;
|
|
61
|
+
}) ?? [];
|
|
62
|
+
});
|
|
27
63
|
useRender(() => {
|
|
28
64
|
return _createVNode(props.tag, {
|
|
29
|
-
"class": ['y-tabs']
|
|
65
|
+
"class": ['y-tabs'],
|
|
66
|
+
"role": "tablist"
|
|
30
67
|
}, {
|
|
31
68
|
default: () => [_createVNode("div", {
|
|
32
69
|
"key": "container",
|
|
@@ -34,11 +71,16 @@ export const YTabs = defineComponent({
|
|
|
34
71
|
"class": ['y-tabs__container']
|
|
35
72
|
}, [_createVNode("div", {
|
|
36
73
|
"key": "content",
|
|
37
|
-
"ref": content
|
|
38
|
-
|
|
74
|
+
"ref": content$,
|
|
75
|
+
"class": ['y-tabs__content']
|
|
76
|
+
}, [slots.default ? slots.default(slotProps.value) : tabItems.value.map(tabItem => _createVNode(YTab, _mergeProps(tabItem, {
|
|
77
|
+
"key": tabItem.text
|
|
78
|
+
}), null))])])]
|
|
39
79
|
});
|
|
40
80
|
});
|
|
41
|
-
return {
|
|
81
|
+
return {
|
|
82
|
+
selected: choiceState.selected
|
|
83
|
+
};
|
|
42
84
|
}
|
|
43
85
|
});
|
|
44
86
|
//# sourceMappingURL=YTabs.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTabs.mjs","names":["defineComponent","useRender","useResizeObserver","propsFactory","pressYTabsPropOptions","YTabs","name","props","tag","
|
|
1
|
+
{"version":3,"file":"YTabs.mjs","names":["computed","defineComponent","pressChoicePropsOptions","useChoice","useRender","useResizeObserver","propsFactory","YTab","Y_TABS_KEY","pressYTabsPropOptions","items","type","Array","selectedClass","mandatory","YTabs","name","props","tag","String","default","emits","value","setup","_ref","slots","resizeObservedRef","container$","contentRect","containerRect","content$","choiceState","slotProps","next","prev","select","isSelected","tabItems","map","item","text","_createVNode","tabItem","_mergeProps","selected"],"sources":["../../../src/components/tab/YTabs.tsx"],"sourcesContent":["import { PropType, computed, defineComponent } from 'vue';\n\nimport { pressChoicePropsOptions, useChoice } from '../../composables/choice';\nimport { useRender } from '../../composables/component';\nimport { useResizeObserver } from '../../composables/resize-observer';\nimport { propsFactory } from '../../util/vue-component';\nimport { YTab } from './YTab';\nimport { Y_TABS_KEY } from './shared';\nimport { YTabPropItem } from './types';\n\nimport './YTabs.scss';\n\nexport const pressYTabsPropOptions = propsFactory(\n {\n items: {\n type: Array as PropType<YTabPropItem[]>,\n },\n ...pressChoicePropsOptions({\n selectedClass: 'y-tab--active',\n mandatory: 'force' as const,\n }),\n },\n 'YTabs',\n);\n\nexport const YTabs = defineComponent({\n name: 'YTabs',\n props: {\n tag: {\n type: String as PropType<'div' | 'nav' | 'ol' | 'ul'>,\n default: 'div',\n },\n ...pressYTabsPropOptions(),\n },\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n setup(props, { slots }) {\n const { resizeObservedRef: container$, contentRect: containerRect } =\n useResizeObserver();\n const { resizeObservedRef: content$, contentRect } = useResizeObserver();\n\n const choiceState = useChoice(props, Y_TABS_KEY);\n\n const slotProps = computed(() => {\n return {\n next: choiceState.next,\n prev: choiceState.prev,\n select: choiceState.select,\n isSelected: choiceState.isSelected,\n };\n });\n\n const tabItems = computed(() => {\n return (\n props.items?.map((item) => {\n if (typeof item !== 'object') {\n return {\n text: item,\n value: item,\n };\n }\n return item;\n }) ?? []\n );\n });\n\n useRender(() => {\n return (\n <props.tag class={['y-tabs']} role=\"tablist\">\n <div key=\"container\" ref={container$} class={['y-tabs__container']}>\n <div key=\"content\" ref={content$} class={['y-tabs__content']}>\n {slots.default\n ? slots.default(slotProps.value)\n : tabItems.value.map((tabItem) => (\n <YTab {...tabItem} key={tabItem.text}></YTab>\n ))}\n </div>\n </div>\n </props.tag>\n );\n });\n\n return {\n selected: choiceState.selected,\n };\n },\n});\n\nexport type YTabs = InstanceType<typeof YTabs>;\n"],"mappings":";AAAA,SAAmBA,QAAQ,EAAEC,eAAe,QAAQ,KAAK;AAAC,SAEjDC,uBAAuB,EAAEC,SAAS;AAAA,SAClCC,SAAS;AAAA,SACTC,iBAAiB;AAAA,SACjBC,YAAY;AAAA,SACZC,IAAI;AAAA,SACJC,UAAU;AAGnB;AAEA,OAAO,MAAMC,qBAAqB,GAAGH,YAAY,CAC/C;EACEI,KAAK,EAAE;IACLC,IAAI,EAAEC;EACR,CAAC;EACD,GAAGV,uBAAuB,CAAC;IACzBW,aAAa,EAAE,eAAe;IAC9BC,SAAS,EAAE;EACb,CAAC;AACH,CAAC,EACD,OACF,CAAC;AAED,OAAO,MAAMC,KAAK,GAAGd,eAAe,CAAC;EACnCe,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE;IACLC,GAAG,EAAE;MACHP,IAAI,EAAEQ,MAA+C;MACrDC,OAAO,EAAE;IACX,CAAC;IACD,GAAGX,qBAAqB,CAAC;EAC3B,CAAC;EACDY,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAU,IAAK;EACvC,CAAC;EACDC,KAAKA,CAACN,KAAK,EAAAO,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE,iBAAiB,EAAEC,UAAU;MAAEC,WAAW,EAAEC;IAAc,CAAC,GACjExB,iBAAiB,CAAC,CAAC;IACrB,MAAM;MAAEqB,iBAAiB,EAAEI,QAAQ;MAAEF;IAAY,CAAC,GAAGvB,iBAAiB,CAAC,CAAC;IAExE,MAAM0B,WAAW,GAAG5B,SAAS,CAACc,KAAK,EAAET,UAAU,CAAC;IAEhD,MAAMwB,SAAS,GAAGhC,QAAQ,CAAC,MAAM;MAC/B,OAAO;QACLiC,IAAI,EAAEF,WAAW,CAACE,IAAI;QACtBC,IAAI,EAAEH,WAAW,CAACG,IAAI;QACtBC,MAAM,EAAEJ,WAAW,CAACI,MAAM;QAC1BC,UAAU,EAAEL,WAAW,CAACK;MAC1B,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,QAAQ,GAAGrC,QAAQ,CAAC,MAAM;MAC9B,OACEiB,KAAK,CAACP,KAAK,EAAE4B,GAAG,CAAEC,IAAI,IAAK;QACzB,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;UAC5B,OAAO;YACLC,IAAI,EAAED,IAAI;YACVjB,KAAK,EAAEiB;UACT,CAAC;QACH;QACA,OAAOA,IAAI;MACb,CAAC,CAAC,IAAI,EAAE;IAEZ,CAAC,CAAC;IAEFnC,SAAS,CAAC,MAAM;MACd,OAAAqC,YAAA,CAAAxB,KAAA,CAAAC,GAAA;QAAA,SACoB,CAAC,QAAQ,CAAC;QAAA,QAAO;MAAS;QAAAE,OAAA,EAAAA,CAAA,MAAAqB,YAAA;UAAA,OACjC,WAAW;UAAA,OAAMd,UAAU;UAAA,SAAS,CAAC,mBAAmB;QAAC,IAAAc,YAAA;UAAA,OACvD,SAAS;UAAA,OAAMX,QAAQ;UAAA,SAAS,CAAC,iBAAiB;QAAC,IACzDL,KAAK,CAACL,OAAO,GACVK,KAAK,CAACL,OAAO,CAACY,SAAS,CAACV,KAAK,CAAC,GAC9Be,QAAQ,CAACf,KAAK,CAACgB,GAAG,CAAEI,OAAO,IAAAD,YAAA,CAAAlC,IAAA,EAAAoC,WAAA,CACfD,OAAO;UAAA,OAAOA,OAAO,CAACF;QAAI,SACrC,CAAC;MAAA;IAKhB,CAAC,CAAC;IAEF,OAAO;MACLI,QAAQ,EAAEb,WAAW,CAACa;IACxB,CAAC;EACH;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/tab/index.ts"],"sourcesContent":["export * from './YTabs';\r\nexport * from './YTab';\r\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["Y_TABS_KEY"],"sources":["../../../src/components/tab/index.ts"],"sourcesContent":["export * from './YTabs';\r\nexport * from './YTab';\r\nexport {Y_TABS_KEY} from \"./shared\";\r\n"],"mappings":";;SAEQA,UAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.mjs","names":["Y_TABS_KEY","Symbol","for"],"sources":["../../../src/components/tab/shared.ts"],"sourcesContent":["import { InjectionKey } from 'vue';\n\nimport { ChoiceProvide } from '../../composables/choice';\n\nexport const Y_TABS_KEY: InjectionKey<ChoiceProvide> =\n Symbol.for('yuyeon.y-tabs');\n"],"mappings":"AAIA,OAAO,MAAMA,UAAuC,GAClDC,MAAM,CAACC,GAAG,CAAC,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../../../src/components/tab/types.ts"],"sourcesContent":["export interface YTabPropItem {\r\n text: string;\r\n value: string;\r\n}\r\n"],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
$table-cell-padding: 0 16px !default;
|
|
2
|
+
$table-head-background: var(--y-theme-surface-variant, #dfe3eb) !default;
|
|
2
3
|
|
|
3
4
|
.y-table {
|
|
4
5
|
display: flex;
|
|
@@ -29,7 +30,7 @@ $table-cell-padding: 0 16px !default;
|
|
|
29
30
|
|
|
30
31
|
&--fixed-head.y-table > &__container > table > thead > tr > th {
|
|
31
32
|
z-index: 1;
|
|
32
|
-
background:
|
|
33
|
+
background: $table-head-background;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
.y-table__container {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YToggleButton.mjs","names":["Y_TOGGLE_BUTTON_KEY","Symbol","for"],"sources":["../../../src/components/toggle-button/YToggleButton.tsx"],"sourcesContent":["import { InjectionKey } from 'vue';\n\nimport { ChoiceProvide } from '../../composables/choice';\n\nexport const Y_TOGGLE_BUTTON_KEY: InjectionKey<ChoiceProvide> = Symbol.for(\n 'yuyeon.y-toggle-button',\n);\n"],"mappings":"AAIA,OAAO,MAAMA,mBAAgD,GAAGC,MAAM,CAACC,GAAG,CACxE,wBACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/toggle-button/index.ts"],"sourcesContent":["export * from './YToggleButton';\r\n"],"mappings":""}
|
|
@@ -40,8 +40,8 @@ const YTooltipPropOptions = {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
/**
|
|
44
|
-
* # Component
|
|
43
|
+
/**
|
|
44
|
+
* # Component
|
|
45
45
|
*/
|
|
46
46
|
export const YTooltip = defineComponent({
|
|
47
47
|
name: NAME,
|
|
@@ -109,7 +109,7 @@ export const YTooltip = defineComponent({
|
|
|
109
109
|
left = rect.right;
|
|
110
110
|
left -= $content.clientWidth;
|
|
111
111
|
}
|
|
112
|
-
}
|
|
112
|
+
} else if (position === 'left' || position === 'right') {}
|
|
113
113
|
}
|
|
114
114
|
return {
|
|
115
115
|
top: `${top}px`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","mergeProps","nextTick","ref","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","toKebabCase","bindClasses","YLayer","YPlate","NAME","KEBAB_NAME","YTooltipPropOptions","modelValue","type","Boolean","default","tooltipClasses","Array","String","Object","disabled","position","align","openOnHover","preventClip","YTooltip","name","props","transition","emits","setup","_ref","slots","emit","expose","el$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","coordinatesStyles","$base","$content","rect","getBoundingClientRect","top","left","width","clientHeight","height","clientWidth","right","baseFromSlotEl","el","nodeType","base","$el","neo","content$","onMouseenter","e","onMouseleave","bindHover","addEventListener","unbindHover","removeEventListener","old","slotBase","_createVNode","_Fragment","$event","_len","arguments","length","args","_key"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { CSSProperties, PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n mergeProps,\n nextTick,\n ref,\n watch,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { toKebabCase } from '../../util/string';\nimport { bindClasses } from '../../util/vue-component';\nimport { YLayer } from '../layer';\nimport { YPlate } from '../plate';\n\nimport './YTooltip.scss';\n\nconst NAME = 'YTooltip';\nconst KEBAB_NAME = toKebabCase(NAME);\n\nconst YTooltipPropOptions = {\n modelValue: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n tooltipClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n position: {\n type: String as PropType<'default' | 'top' | 'bottom' | 'left' | 'right'>,\n default: 'default',\n },\n align: {\n type: String as PropType<'center' | 'start' | 'end'>,\n default: 'center',\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n};\n\n/**\n * # Component\n */\nexport const YTooltip = defineComponent({\n name: NAME,\n props: {\n ...YTooltipPropOptions,\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, expose }) {\n const el$ = ref<typeof YLayer>();\n const base$ = ref();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n const contentEl = ref<HTMLElement>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.tooltipClasses);\n return {\n ...boundClasses,\n 'y-tooltip': true,\n };\n });\n\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n\n const coordinatesStyles = computed<CSSProperties>(() => {\n const $base = baseEl.value;\n if ($base) {\n const { position, align } = props;\n const $content = contentEl.value;\n const rect = $base.getBoundingClientRect();\n\n let top = rect.top;\n let left = rect.left + rect.width / 2;\n\n if ($content) {\n if (position === 'top' || position === 'bottom') {\n if (position === 'top') {\n top -= $content.clientHeight;\n top -= 8; // Offset\n }\n\n if (position === 'bottom') {\n top += rect.height;\n top += 8; // Offset\n }\n\n if (align === 'center') {\n left -= $content.clientWidth / 2;\n } else if (align === 'end') {\n left = rect.right;\n left -= $content.clientWidth;\n }\n }\n }\n\n return {\n top: `${top}px`,\n left: `${left}px`,\n };\n }\n return {};\n });\n\n const baseFromSlotEl = computed(() => {\n return baseSlot.value?.[0]?.el;\n });\n\n watchEffect(() => {\n if (!base$.value) {\n if (baseFromSlotEl.value?.nodeType !== 3) {\n baseEl.value = baseFromSlotEl.value;\n }\n return;\n }\n const base = base$.value;\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\n });\n\n watch(active, (neo) => {\n if (neo) {\n nextTick(() => {\n const $content = el$.value?.content$;\n contentEl.value = $content;\n });\n }\n });\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = true;\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = false;\n }\n }\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(baseEl, (neo, old) => {\n if (neo) {\n bindHover(neo);\n } else if (old) {\n unbindHover(old);\n }\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <YLayer\n v-model={active.value}\n ref={el$}\n classes={classes.value}\n scrim={false}\n disabled={props.disabled}\n content-styles={{ ...coordinatesStyles.value }}\n transition={props.transition}\n >\n {{\n default: (...args: any) => {\n return (\n <>\n <YPlate></YPlate>\n <div class=\"y-tooltip__content\">\n {slots.default?.(...args) ?? ''}\n </div>\n </>\n );\n },\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n base$,\n el$,\n baseEl,\n coordinatesStyles,\n baseSlot,\n active,\n };\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","mergeProps","nextTick","ref","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","toKebabCase","bindClasses","YLayer","YPlate","NAME","KEBAB_NAME","YTooltipPropOptions","modelValue","type","Boolean","default","tooltipClasses","Array","String","Object","disabled","position","align","openOnHover","preventClip","YTooltip","name","props","transition","emits","setup","_ref","slots","emit","expose","el$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","coordinatesStyles","$base","$content","rect","getBoundingClientRect","top","left","width","clientHeight","height","clientWidth","right","baseFromSlotEl","el","nodeType","base","$el","neo","content$","onMouseenter","e","onMouseleave","bindHover","addEventListener","unbindHover","removeEventListener","old","slotBase","_createVNode","_Fragment","$event","_len","arguments","length","args","_key"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { CSSProperties, PropType } from 'vue';\r\nimport {\r\n computed,\r\n defineComponent,\r\n mergeProps,\r\n nextTick,\r\n ref,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { polyTransitionPropOptions } from '../../composables/transition';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses } from '../../util/vue-component';\r\nimport { YLayer } from '../layer';\r\nimport { YPlate } from '../plate';\r\n\r\nimport './YTooltip.scss';\r\n\r\nconst NAME = 'YTooltip';\r\nconst KEBAB_NAME = toKebabCase(NAME);\r\n\r\nconst YTooltipPropOptions = {\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n tooltipClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n disabled: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n position: {\r\n type: String as PropType<'default' | 'top' | 'bottom' | 'left' | 'right'>,\r\n default: 'default',\r\n },\r\n align: {\r\n type: String as PropType<'center' | 'start' | 'end'>,\r\n default: 'center',\r\n },\r\n openOnHover: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YTooltip = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YTooltipPropOptions,\r\n transition: {\r\n ...polyTransitionPropOptions.transition,\r\n default: 'fade',\r\n },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit, expose }) {\r\n const el$ = ref<typeof YLayer>();\r\n const base$ = ref();\r\n const baseSlot = ref();\r\n const baseEl = ref<HTMLElement>();\r\n const contentEl = ref<HTMLElement>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.tooltipClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-tooltip': true,\r\n };\r\n });\r\n\r\n const model = useModelDuplex(props);\r\n\r\n const active = computed({\r\n get: (): boolean => {\r\n return !!model.value;\r\n },\r\n set: (v: boolean) => {\r\n if (!(v && props.disabled)) model.value = v;\r\n },\r\n });\r\n\r\n const coordinatesStyles = computed<CSSProperties>(() => {\r\n const $base = baseEl.value;\r\n if ($base) {\r\n const { position, align } = props;\r\n const $content = contentEl.value;\r\n const rect = $base.getBoundingClientRect();\r\n\r\n let top = rect.top;\r\n let left = rect.left + rect.width / 2;\r\n\r\n if ($content) {\r\n if (position === 'top' || position === 'bottom') {\r\n if (position === 'top') {\r\n top -= $content.clientHeight;\r\n top -= 8; // Offset\r\n }\r\n\r\n if (position === 'bottom') {\r\n top += rect.height;\r\n top += 8; // Offset\r\n }\r\n\r\n if (align === 'center') {\r\n left -= $content.clientWidth / 2;\r\n } else if (align === 'end') {\r\n left = rect.right;\r\n left -= $content.clientWidth;\r\n }\r\n } else if (position === 'left' || position === 'right') {\r\n\r\n }\r\n }\r\n\r\n return {\r\n top: `${top}px`,\r\n left: `${left}px`,\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n const baseFromSlotEl = computed(() => {\r\n return baseSlot.value?.[0]?.el;\r\n });\r\n\r\n watchEffect(() => {\r\n if (!base$.value) {\r\n if (baseFromSlotEl.value?.nodeType !== 3) {\r\n baseEl.value = baseFromSlotEl.value;\r\n }\r\n return;\r\n }\r\n const base = base$.value;\r\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\r\n });\r\n\r\n watch(active, (neo) => {\r\n if (neo) {\r\n nextTick(() => {\r\n const $content = el$.value?.content$;\r\n contentEl.value = $content;\r\n });\r\n }\r\n });\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n active.value = true;\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n active.value = false;\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(baseEl, (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n } else if (old) {\r\n unbindHover(old);\r\n }\r\n });\r\n\r\n useRender(() => {\r\n const slotBase = slots.base?.({\r\n active: active.value,\r\n props: mergeProps({\r\n ref: base$,\r\n }),\r\n });\r\n baseSlot.value = slotBase;\r\n return (\r\n <>\r\n {slotBase}\r\n <YLayer\r\n v-model={active.value}\r\n ref={el$}\r\n classes={classes.value}\r\n scrim={false}\r\n disabled={props.disabled}\r\n content-styles={{ ...coordinatesStyles.value }}\r\n transition={props.transition}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return (\r\n <>\r\n <YPlate></YPlate>\r\n <div class=\"y-tooltip__content\">\r\n {slots.default?.(...args) ?? ''}\r\n </div>\r\n </>\r\n );\r\n },\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n base$,\r\n el$,\r\n baseEl,\r\n coordinatesStyles,\r\n baseSlot,\r\n active,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { computed, defineComponent, onMounted, provide, ref, shallowRef, watch,
|
|
|
3
3
|
import { useModelDuplex } from "../../composables/communication.mjs";
|
|
4
4
|
import { useRender } from "../../composables/component.mjs";
|
|
5
5
|
import { differenceBetween } from "../../util/array.mjs";
|
|
6
|
+
import { isColorValue } from "../../util/color/index.mjs";
|
|
6
7
|
import { deepEqual, getObjectValueByPath, hasOwnProperty } from "../../util/common.mjs";
|
|
7
8
|
import { debounce } from "../../util/debounce.mjs";
|
|
8
9
|
import { chooseProps } from "../../util/vue-component.mjs";
|
|
@@ -10,7 +11,6 @@ import { YProgressBar } from "../progress-bar/index.mjs";
|
|
|
10
11
|
import { YTreeViewNode, pressYTreeViewNodeProps } from "./YTreeViewNode.mjs";
|
|
11
12
|
import { filterTreeItem, filterTreeItems, getKeys } from "./util.mjs";
|
|
12
13
|
import "./YTreeView.scss";
|
|
13
|
-
import { isColorValue } from "../../util/color/index.mjs";
|
|
14
14
|
const treeViewNodeProps = pressYTreeViewNodeProps();
|
|
15
15
|
export const YTreeView = defineComponent({
|
|
16
16
|
name: 'YTreeView',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","provide","ref","shallowRef","watch","watchEffect","useModelDuplex","useRender","differenceBetween","deepEqual","getObjectValueByPath","hasOwnProperty","debounce","chooseProps","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","isColorValue","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","nodes","expandedSet","Set","selectedSet","activeSet","excludedSet","filterItemsFn","excludeItem","expandedCache","searchLoading","items","search","arguments","length","undefined","excluded","value","diff","forEach","key","updateExpanded","item","itemKey","itemText","itemChildren","expand","getDescendants","descendants","childKeys","push","childKey","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","indeterminate","node","map","child","add","issueVnodeState","to","isArray","delete","neo","deep","until","Object","entries","_ref2","emitExpanded","updateActive","event","inactiveKey","keys","activeSingleModifier","getModifierState","descendant","updateSelected","arr","emitActive","emitSelected","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","nodeKey","neoKeys","k","oldSelected","clear","isExcluded","has","register","activeValue","selectedValue","renderLeaves","leaf","classes","styles","color","activeColor","_createVNode","_Fragment","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\r\n PropType,\r\n Ref,\r\n VNode,\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n provide,\r\n ref,\r\n shallowRef,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { differenceBetween } from '../../util/array';\r\nimport {\r\n deepEqual,\r\n getObjectValueByPath,\r\n hasOwnProperty,\r\n} from '../../util/common';\r\nimport { debounce } from '../../util/debounce';\r\nimport { chooseProps } from '../../util/vue-component';\r\nimport { YProgressBar } from '../progress-bar';\r\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\r\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\r\n\r\nimport { CandidateKey } from '../../types';\r\nimport './YTreeView.scss';\r\nimport { NodeState, TreeviewFilterFn } from './types';\r\nimport { isColorValue } from \"../../util/color\";\r\n\r\nconst treeViewNodeProps = pressYTreeViewNodeProps();\r\n\r\nexport const YTreeView = defineComponent({\r\n name: 'YTreeView',\r\n props: {\r\n expanded: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n active: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n multipleActive: Boolean,\r\n activeStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'independent',\r\n },\r\n selected: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n selectStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'leaf',\r\n },\r\n returnItem: Boolean,\r\n defaultExpand: [Boolean, String, Number],\r\n filter: Function as PropType<TreeviewFilterFn>,\r\n searchDebounceWait: {\r\n type: Number as PropType<number>,\r\n default: 700,\r\n },\r\n ...treeViewNodeProps,\r\n },\r\n emits: ['update:expanded', 'update:active', 'update:selected'],\r\n setup(props, { slots, emit, expose }) {\r\n const nodes = ref<Record<CandidateKey, any>>({});\r\n\r\n const expanded = useModelDuplex(props, 'expanded');\r\n const active = useModelDuplex(props, 'active');\r\n const selected = useModelDuplex(props, 'selected');\r\n\r\n const expandedSet = ref(new Set<CandidateKey>());\r\n const selectedSet = ref(new Set<CandidateKey>());\r\n const activeSet = ref(new Set<CandidateKey>());\r\n const excludedSet = ref(new Set<CandidateKey>());\r\n const filterItemsFn = shallowRef(\r\n debounce(excludeItem, props.searchDebounceWait),\r\n );\r\n const expandedCache = ref<CandidateKey[]>([]);\r\n const searchLoading = shallowRef(false);\r\n\r\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\r\n const excluded = new Set<CandidateKey>();\r\n if (!search) {\r\n searchLoading.value = false;\r\n excludedSet.value = excluded;\r\n const diff = differenceBetween(expandedCache.value, [...expandedSet.value]);\r\n diff.forEach((key) => {\r\n updateExpanded(key, false);\r\n });\r\n expandedCache.value.forEach((key) => {\r\n updateExpanded(key, true);\r\n });\r\n return;\r\n }\r\n for (const item of items) {\r\n filterTreeItems(\r\n filter,\r\n item,\r\n search ?? '',\r\n props.itemKey,\r\n props.itemText,\r\n props.itemChildren as string,\r\n excluded,\r\n );\r\n }\r\n excludedSet.value = excluded;\r\n searchLoading.value = false;\r\n expand();\r\n }\r\n\r\n watchEffect(() => {\r\n searchLoading.value = true;\r\n filterItemsFn.value(props.items, props.search, props.filter);\r\n });\r\n\r\n // Util Methods\r\n function getDescendants(\r\n key: CandidateKey,\r\n descendants: CandidateKey[] = [],\r\n ) {\r\n const { childKeys } = nodes.value[key];\r\n descendants.push(...childKeys);\r\n for (const childKey of childKeys) {\r\n descendants = getDescendants(childKey, descendants);\r\n }\r\n return descendants;\r\n }\r\n\r\n function getNodeKey(itemOrKey: any) {\r\n return props.returnItem\r\n ? getObjectValueByPath(itemOrKey, props.itemKey)\r\n : itemOrKey;\r\n }\r\n\r\n // State Methods\r\n function updateNodes(\r\n items: any[],\r\n parentKey: CandidateKey | null = null,\r\n level = 0,\r\n ) {\r\n for (const item of items) {\r\n const key = getObjectValueByPath(item, props.itemKey);\r\n const children = getObjectValueByPath(item, props.itemChildren as string) ?? [];\r\n const exist = hasOwnProperty(nodes.value, key);\r\n const existNode = exist\r\n ? nodes.value[key]\r\n : {\r\n vnode: null,\r\n selected: false,\r\n indeterminate: false,\r\n active: false,\r\n expanded: false,\r\n };\r\n const node: NodeState = {\r\n vnode: existNode.vnode,\r\n item,\r\n level,\r\n parentKey,\r\n childKeys: children.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n expanded: children.length > 0 && existNode.expanded,\r\n active: existNode.active,\r\n indeterminate: existNode.indeterminate,\r\n selected: existNode.selected,\r\n };\r\n\r\n updateNodes(children, key, level + 1);\r\n\r\n nodes.value[key] = node;\r\n if (nodes.value[key].expanded) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].selected) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].active) {\r\n activeSet.value.add(key);\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n function updateExpanded(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n const children = getObjectValueByPath(node.item, props.itemChildren as string);\r\n if (Array.isArray(children) && children.length > 0) {\r\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\r\n node.expanded = to;\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n watch(expandedSet, (neo) => {\r\n if (!props.search) {\r\n expandedCache.value = [...neo];\r\n }\r\n }, { deep: true })\r\n\r\n function expand(until: boolean | string | number = true) {\r\n Object.entries(nodes.value).forEach(([key, node]) => {\r\n if (until === true || until >= node.level) {\r\n updateExpanded(key, true);\r\n }\r\n });\r\n emitExpanded();\r\n return expandedSet.value;\r\n }\r\n\r\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n let inactiveKey = !to ? key : '';\r\n if (!props.multipleActive) {\r\n [inactiveKey] = activeSet.value.keys();\r\n }\r\n if (to) {\r\n activeSet.value.add(key);\r\n node.active = true;\r\n }\r\n if (inactiveKey && inactiveKey in nodes.value) {\r\n activeSet.value.delete(inactiveKey);\r\n nodes.value[inactiveKey].active = false;\r\n issueVnodeState(inactiveKey);\r\n }\r\n\r\n if (\r\n props.activeSingleModifier &&\r\n event?.getModifierState(props.activeSingleModifier)\r\n ) {\r\n return;\r\n }\r\n\r\n if (props.multipleActive && props.activeStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? activeSet.value.add(descendant)\r\n : activeSet.value.delete(descendant);\r\n nodes.value[descendant].active = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateSelected(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n\r\n if (to) {\r\n selectedSet.value.add(key);\r\n node.selected = true;\r\n }\r\n\r\n if (!to && key in nodes.value) {\r\n selectedSet.value.delete(key);\r\n nodes.value[key].selected = false;\r\n issueVnodeState(key);\r\n }\r\n\r\n if (props.selectStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? selectedSet.value.add(descendant)\r\n : selectedSet.value.delete(descendant);\r\n nodes.value[descendant].selected = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function emitExpanded() {\r\n const arr = [...expandedSet.value];\r\n expanded.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitActive() {\r\n const arr = [...activeSet.value];\r\n active.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitSelected() {\r\n const arr = [...selectedSet.value];\r\n selected.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function stateWatcher(\r\n value: any[],\r\n stateSet: Ref<Set<CandidateKey>>,\r\n updater: (key: CandidateKey, to: boolean) => void,\r\n emitter: () => void,\r\n ) {\r\n const valuesOfKey = props.returnItem\r\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\r\n : value;\r\n const old = [...stateSet.value];\r\n if (deepEqual(old, valuesOfKey)) {\r\n return;\r\n }\r\n old.forEach((key) => updater(key, false));\r\n valuesOfKey.forEach((key) => updater(key, true));\r\n emitter();\r\n }\r\n\r\n watch(expanded, (neo) => {\r\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\r\n });\r\n\r\n watch(active, (neo) => {\r\n stateWatcher(neo, activeSet, updateActive, emitActive);\r\n });\r\n\r\n watch(selected, (neo) => {\r\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\r\n });\r\n\r\n watch(\r\n () => props.items,\r\n (neo: any[]) => {\r\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\r\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\r\n );\r\n const neoKeys = getKeys(neo, props.itemKey, props.itemChildren as string);\r\n const diff = differenceBetween(oldKeys, neoKeys);\r\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\r\n return;\r\n }\r\n diff.forEach((k) => delete nodes.value[k]);\r\n\r\n // init\r\n const oldSelected = [...selectedSet.value];\r\n selectedSet.value.clear();\r\n expandedSet.value.clear();\r\n activeSet.value.clear();\r\n updateNodes(neo);\r\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\r\n emitSelected();\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n // Search\r\n function isExcluded(key: CandidateKey) {\r\n return !!props.search && excludedSet.value.has(key);\r\n }\r\n\r\n // Provide & Issue\r\n function issueVnodeState(key: CandidateKey) {\r\n const node = nodes.value[key];\r\n if (node && node.vnode) {\r\n node.vnode.active = node.active;\r\n node.vnode.selected = node.selected;\r\n node.vnode.indeterminate = node.indeterminate;\r\n node.vnode.expanded = node.expanded;\r\n }\r\n }\r\n\r\n function register(key: CandidateKey, vnode: VNode) {\r\n if (nodes.value[key]) {\r\n nodes.value[key].vnode = vnode;\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n\r\n updateNodes(props.items);\r\n\r\n for (const activeValue of props.active.map(getNodeKey)) {\r\n updateActive(activeValue, true);\r\n }\r\n\r\n for (const selectedValue of props.selected.map(getNodeKey)) {\r\n updateSelected(selectedValue, true);\r\n }\r\n\r\n provide('tree-view', {\r\n register,\r\n updateExpanded,\r\n updateActive,\r\n updateSelected,\r\n emitExpanded,\r\n emitActive,\r\n emitSelected,\r\n isExcluded,\r\n searchLoading,\r\n });\r\n\r\n const renderLeaves = computed(() => {\r\n return props.items.filter((leaf) => {\r\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view': true,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n let color = props.activeColor;\r\n if (props.activeColor && !isColorValue(props.activeColor)) {\r\n color = `var(--y-theme-${props.activeColor})`;\r\n }\r\n return {\r\n [`--y-tree-view__active-color`]: color,\r\n };\r\n });\r\n\r\n onMounted(() => {\r\n if (props.defaultExpand !== undefined) {\r\n expandedCache.value = [...expand(props.defaultExpand)];\r\n } else {\r\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\r\n emitExpanded();\r\n }\r\n });\r\n\r\n expose({\r\n expand,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <div class={classes.value} style={styles.value} role=\"tree\">\r\n {searchLoading.value && <YProgressBar indeterminate />}\r\n {renderLeaves.value.length > 0 ? (\r\n renderLeaves.value.map((leaf) => {\r\n return (\r\n <YTreeViewNode\r\n v-slots={slots}\r\n {...{\r\n ...chooseProps(props, treeViewNodeProps),\r\n item: leaf,\r\n level: 0,\r\n }}\r\n ></YTreeViewNode>\r\n );\r\n })\r\n ) : (\r\n <div class=\"y-tree-view__no-data\">\r\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n nodes,\r\n expandedSet,\r\n selectedSet,\r\n activeSet,\r\n excludedSet,\r\n searchLoading,\r\n expandedCache,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeView = InstanceType<typeof YTreeView>;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","provide","ref","shallowRef","watch","watchEffect","useModelDuplex","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","debounce","chooseProps","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","nodes","expandedSet","Set","selectedSet","activeSet","excludedSet","filterItemsFn","excludeItem","expandedCache","searchLoading","items","search","arguments","length","undefined","excluded","value","diff","forEach","key","updateExpanded","item","itemKey","itemText","itemChildren","expand","getDescendants","descendants","childKeys","push","childKey","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","indeterminate","node","map","child","add","issueVnodeState","to","isArray","delete","neo","deep","until","Object","entries","_ref2","emitExpanded","updateActive","event","inactiveKey","keys","activeSingleModifier","getModifierState","descendant","updateSelected","arr","emitActive","emitSelected","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","nodeKey","neoKeys","k","oldSelected","clear","isExcluded","has","register","activeValue","selectedValue","renderLeaves","leaf","classes","styles","color","activeColor","_createVNode","_Fragment","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\r\n PropType,\r\n Ref,\r\n VNode,\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n provide,\r\n ref,\r\n shallowRef,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { CandidateKey } from '../../types';\r\nimport { differenceBetween } from '../../util/array';\r\nimport { isColorValue } from '../../util/color';\r\nimport {\r\n deepEqual,\r\n getObjectValueByPath,\r\n hasOwnProperty,\r\n} from '../../util/common';\r\nimport { debounce } from '../../util/debounce';\r\nimport { chooseProps } from '../../util/vue-component';\r\nimport { YProgressBar } from '../progress-bar';\r\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\r\nimport { NodeState, TreeviewFilterFn } from './types';\r\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\r\n\r\nimport './YTreeView.scss';\r\n\r\nconst treeViewNodeProps = pressYTreeViewNodeProps();\r\n\r\nexport const YTreeView = defineComponent({\r\n name: 'YTreeView',\r\n props: {\r\n expanded: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n active: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n multipleActive: Boolean,\r\n activeStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'independent',\r\n },\r\n selected: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n selectStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'leaf',\r\n },\r\n returnItem: Boolean,\r\n defaultExpand: [Boolean, String, Number],\r\n filter: Function as PropType<TreeviewFilterFn>,\r\n searchDebounceWait: {\r\n type: Number as PropType<number>,\r\n default: 700,\r\n },\r\n ...treeViewNodeProps,\r\n },\r\n emits: ['update:expanded', 'update:active', 'update:selected'],\r\n setup(props, { slots, emit, expose }) {\r\n const nodes = ref<Record<CandidateKey, any>>({});\r\n\r\n const expanded = useModelDuplex(props, 'expanded');\r\n const active = useModelDuplex(props, 'active');\r\n const selected = useModelDuplex(props, 'selected');\r\n\r\n const expandedSet = ref(new Set<CandidateKey>());\r\n const selectedSet = ref(new Set<CandidateKey>());\r\n const activeSet = ref(new Set<CandidateKey>());\r\n const excludedSet = ref(new Set<CandidateKey>());\r\n const filterItemsFn = shallowRef(\r\n debounce(excludeItem, props.searchDebounceWait),\r\n );\r\n const expandedCache = ref<CandidateKey[]>([]);\r\n const searchLoading = shallowRef(false);\r\n\r\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\r\n const excluded = new Set<CandidateKey>();\r\n if (!search) {\r\n searchLoading.value = false;\r\n excludedSet.value = excluded;\r\n const diff = differenceBetween(expandedCache.value, [\r\n ...expandedSet.value,\r\n ]);\r\n diff.forEach((key) => {\r\n updateExpanded(key, false);\r\n });\r\n expandedCache.value.forEach((key) => {\r\n updateExpanded(key, true);\r\n });\r\n return;\r\n }\r\n for (const item of items) {\r\n filterTreeItems(\r\n filter,\r\n item,\r\n search ?? '',\r\n props.itemKey,\r\n props.itemText,\r\n props.itemChildren as string,\r\n excluded,\r\n );\r\n }\r\n excludedSet.value = excluded;\r\n searchLoading.value = false;\r\n expand();\r\n }\r\n\r\n watchEffect(() => {\r\n searchLoading.value = true;\r\n filterItemsFn.value(props.items, props.search, props.filter);\r\n });\r\n\r\n // Util Methods\r\n function getDescendants(\r\n key: CandidateKey,\r\n descendants: CandidateKey[] = [],\r\n ) {\r\n const { childKeys } = nodes.value[key];\r\n descendants.push(...childKeys);\r\n for (const childKey of childKeys) {\r\n descendants = getDescendants(childKey, descendants);\r\n }\r\n return descendants;\r\n }\r\n\r\n function getNodeKey(itemOrKey: any) {\r\n return props.returnItem\r\n ? getObjectValueByPath(itemOrKey, props.itemKey)\r\n : itemOrKey;\r\n }\r\n\r\n // State Methods\r\n function updateNodes(\r\n items: any[],\r\n parentKey: CandidateKey | null = null,\r\n level = 0,\r\n ) {\r\n for (const item of items) {\r\n const key = getObjectValueByPath(item, props.itemKey);\r\n const children =\r\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\r\n const exist = hasOwnProperty(nodes.value, key);\r\n const existNode = exist\r\n ? nodes.value[key]\r\n : {\r\n vnode: null,\r\n selected: false,\r\n indeterminate: false,\r\n active: false,\r\n expanded: false,\r\n };\r\n const node: NodeState = {\r\n vnode: existNode.vnode,\r\n item,\r\n level,\r\n parentKey,\r\n childKeys: children.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n expanded: children.length > 0 && existNode.expanded,\r\n active: existNode.active,\r\n indeterminate: existNode.indeterminate,\r\n selected: existNode.selected,\r\n };\r\n\r\n updateNodes(children, key, level + 1);\r\n\r\n nodes.value[key] = node;\r\n if (nodes.value[key].expanded) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].selected) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].active) {\r\n activeSet.value.add(key);\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n function updateExpanded(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n const children = getObjectValueByPath(\r\n node.item,\r\n props.itemChildren as string,\r\n );\r\n if (Array.isArray(children) && children.length > 0) {\r\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\r\n node.expanded = to;\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n watch(\r\n expandedSet,\r\n (neo) => {\r\n if (!props.search) {\r\n expandedCache.value = [...neo];\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n function expand(until: boolean | string | number = true) {\r\n Object.entries(nodes.value).forEach(([key, node]) => {\r\n if (until === true || until >= node.level) {\r\n updateExpanded(key, true);\r\n }\r\n });\r\n emitExpanded();\r\n return expandedSet.value;\r\n }\r\n\r\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n let inactiveKey = !to ? key : '';\r\n if (!props.multipleActive) {\r\n [inactiveKey] = activeSet.value.keys();\r\n }\r\n if (to) {\r\n activeSet.value.add(key);\r\n node.active = true;\r\n }\r\n if (inactiveKey && inactiveKey in nodes.value) {\r\n activeSet.value.delete(inactiveKey);\r\n nodes.value[inactiveKey].active = false;\r\n issueVnodeState(inactiveKey);\r\n }\r\n\r\n if (\r\n props.activeSingleModifier &&\r\n event?.getModifierState(props.activeSingleModifier)\r\n ) {\r\n return;\r\n }\r\n\r\n if (props.multipleActive && props.activeStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? activeSet.value.add(descendant)\r\n : activeSet.value.delete(descendant);\r\n nodes.value[descendant].active = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateSelected(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n\r\n if (to) {\r\n selectedSet.value.add(key);\r\n node.selected = true;\r\n }\r\n\r\n if (!to && key in nodes.value) {\r\n selectedSet.value.delete(key);\r\n nodes.value[key].selected = false;\r\n issueVnodeState(key);\r\n }\r\n\r\n if (props.selectStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? selectedSet.value.add(descendant)\r\n : selectedSet.value.delete(descendant);\r\n nodes.value[descendant].selected = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function emitExpanded() {\r\n const arr = [...expandedSet.value];\r\n expanded.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitActive() {\r\n const arr = [...activeSet.value];\r\n active.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitSelected() {\r\n const arr = [...selectedSet.value];\r\n selected.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function stateWatcher(\r\n value: any[],\r\n stateSet: Ref<Set<CandidateKey>>,\r\n updater: (key: CandidateKey, to: boolean) => void,\r\n emitter: () => void,\r\n ) {\r\n const valuesOfKey = props.returnItem\r\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\r\n : value;\r\n const old = [...stateSet.value];\r\n if (deepEqual(old, valuesOfKey)) {\r\n return;\r\n }\r\n old.forEach((key) => updater(key, false));\r\n valuesOfKey.forEach((key) => updater(key, true));\r\n emitter();\r\n }\r\n\r\n watch(expanded, (neo) => {\r\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\r\n });\r\n\r\n watch(active, (neo) => {\r\n stateWatcher(neo, activeSet, updateActive, emitActive);\r\n });\r\n\r\n watch(selected, (neo) => {\r\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\r\n });\r\n\r\n watch(\r\n () => props.items,\r\n (neo: any[]) => {\r\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\r\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\r\n );\r\n const neoKeys = getKeys(\r\n neo,\r\n props.itemKey,\r\n props.itemChildren as string,\r\n );\r\n const diff = differenceBetween(oldKeys, neoKeys);\r\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\r\n return;\r\n }\r\n diff.forEach((k) => delete nodes.value[k]);\r\n\r\n // init\r\n const oldSelected = [...selectedSet.value];\r\n selectedSet.value.clear();\r\n expandedSet.value.clear();\r\n activeSet.value.clear();\r\n updateNodes(neo);\r\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\r\n emitSelected();\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n // Search\r\n function isExcluded(key: CandidateKey) {\r\n return !!props.search && excludedSet.value.has(key);\r\n }\r\n\r\n // Provide & Issue\r\n function issueVnodeState(key: CandidateKey) {\r\n const node = nodes.value[key];\r\n if (node && node.vnode) {\r\n node.vnode.active = node.active;\r\n node.vnode.selected = node.selected;\r\n node.vnode.indeterminate = node.indeterminate;\r\n node.vnode.expanded = node.expanded;\r\n }\r\n }\r\n\r\n function register(key: CandidateKey, vnode: VNode) {\r\n if (nodes.value[key]) {\r\n nodes.value[key].vnode = vnode;\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n\r\n updateNodes(props.items);\r\n\r\n for (const activeValue of props.active.map(getNodeKey)) {\r\n updateActive(activeValue, true);\r\n }\r\n\r\n for (const selectedValue of props.selected.map(getNodeKey)) {\r\n updateSelected(selectedValue, true);\r\n }\r\n\r\n provide('tree-view', {\r\n register,\r\n updateExpanded,\r\n updateActive,\r\n updateSelected,\r\n emitExpanded,\r\n emitActive,\r\n emitSelected,\r\n isExcluded,\r\n searchLoading,\r\n });\r\n\r\n const renderLeaves = computed(() => {\r\n return props.items.filter((leaf) => {\r\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view': true,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n let color = props.activeColor;\r\n if (props.activeColor && !isColorValue(props.activeColor)) {\r\n color = `var(--y-theme-${props.activeColor})`;\r\n }\r\n return {\r\n [`--y-tree-view__active-color`]: color,\r\n };\r\n });\r\n\r\n onMounted(() => {\r\n if (props.defaultExpand !== undefined) {\r\n expandedCache.value = [...expand(props.defaultExpand)];\r\n } else {\r\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\r\n emitExpanded();\r\n }\r\n });\r\n\r\n expose({\r\n expand,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <div class={classes.value} style={styles.value} role=\"tree\">\r\n {searchLoading.value && <YProgressBar indeterminate />}\r\n {renderLeaves.value.length > 0 ? (\r\n renderLeaves.value.map((leaf) => {\r\n return (\r\n <YTreeViewNode\r\n v-slots={slots}\r\n {...{\r\n ...chooseProps(props, treeViewNodeProps),\r\n item: leaf,\r\n level: 0,\r\n }}\r\n ></YTreeViewNode>\r\n );\r\n })\r\n ) : (\r\n <div class=\"y-tree-view__no-data\">\r\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n nodes,\r\n expandedSet,\r\n selectedSet,\r\n activeSet,\r\n excludedSet,\r\n searchLoading,\r\n expandedCache,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeView = InstanceType<typeof YTreeView>;\r\n"],"mappings":"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"}
|