@veltra/desktop 1.2.3 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/action/action-group.vue.d.ts +3 -3
- package/dist/components/action/action.vue.d.ts +2 -2
- package/dist/components/auto-complete/auto-complete.js +25 -13
- package/dist/components/auto-complete/auto-complete.js.map +1 -1
- package/dist/components/auto-complete/auto-complete.vue.d.ts +3 -2
- package/dist/components/batch-edit/batch-edit-form.js +33 -26
- package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
- package/dist/components/batch-edit/batch-edit-list.js +4 -1
- package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
- package/dist/components/batch-edit/batch-edit.js +29 -50
- package/dist/components/batch-edit/batch-edit.js.map +1 -1
- package/dist/components/batch-edit/batch-edit.vue.d.ts +3 -3
- package/dist/components/batch-edit/di.js.map +1 -1
- package/dist/components/batch-edit/style2.css +3 -0
- package/dist/components/batch-edit/use-edit.js +39 -71
- package/dist/components/batch-edit/use-edit.js.map +1 -1
- package/dist/components/batch-edit/use-features.js +38 -0
- package/dist/components/batch-edit/use-features.js.map +1 -0
- package/dist/components/checkbox/checkbox-button.vue.d.ts +1 -1
- package/dist/components/contextmenu/style2.css +7 -7
- package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
- package/dist/components/date-picker/date-picker.vue.d.ts +1 -1
- package/dist/components/date-range-picker/date-range-picker.vue.d.ts +1 -1
- package/dist/components/dual-nav/dual-nav-app.js +49 -0
- package/dist/components/dual-nav/dual-nav-app.js.map +1 -0
- package/dist/components/dual-nav/dual-nav.js +125 -0
- package/dist/components/dual-nav/dual-nav.js.map +1 -0
- package/dist/components/dual-nav/dual-nav.vue.d.ts +13 -0
- package/dist/components/dual-nav/helper.js +21 -0
- package/dist/components/dual-nav/helper.js.map +1 -0
- package/dist/components/dual-nav/index.d.ts +1 -0
- package/dist/components/dual-nav/style.js +4 -0
- package/dist/components/dual-nav/style2.css +145 -0
- package/dist/components/empty/empty.vue.d.ts +1 -1
- package/dist/components/index.d.ts +23 -22
- package/dist/components/index.js +28 -26
- package/dist/components/index.js.map +1 -1
- package/dist/components/nav/di.js +7 -0
- package/dist/components/nav/di.js.map +1 -0
- package/dist/components/nav/helper.js +18 -0
- package/dist/components/nav/helper.js.map +1 -0
- package/dist/components/nav/index.d.ts +3 -0
- package/dist/components/{menu/menu-icon.js → nav/nav-icon.js} +4 -4
- package/dist/components/nav/nav-icon.js.map +1 -0
- package/dist/components/{menu/menu-item-collapsed.js → nav/nav-item-collapsed.js} +23 -23
- package/dist/components/nav/nav-item-collapsed.js.map +1 -0
- package/dist/components/{menu/menu-item.js → nav/nav-item.js} +13 -13
- package/dist/components/nav/nav-item.js.map +1 -0
- package/dist/components/{menu/menu-item.vue.d.ts → nav/nav-item.vue.d.ts} +4 -4
- package/dist/components/{menu/menu-sub-collapsed.js → nav/nav-sub-collapsed.js} +19 -19
- package/dist/components/nav/nav-sub-collapsed.js.map +1 -0
- package/dist/components/{menu/menu-sub.js → nav/nav-sub.js} +24 -24
- package/dist/components/nav/nav-sub.js.map +1 -0
- package/dist/components/{menu/menu-sub.vue.d.ts → nav/nav-sub.vue.d.ts} +4 -4
- package/dist/components/{menu/menu.js → nav/nav.js} +45 -36
- package/dist/components/nav/nav.js.map +1 -0
- package/dist/components/nav/nav.vue.d.ts +18 -0
- package/dist/components/nav/style.d.ts +1 -0
- package/dist/components/{menu → nav}/style2.css +105 -105
- package/dist/components/{menu/use-menu-item.js → nav/use-nav-item.js} +11 -11
- package/dist/components/nav/use-nav-item.js.map +1 -0
- package/dist/components/{menu/walk-menu-path.js → nav/walk-nav-path.js} +5 -5
- package/dist/components/nav/walk-nav-path.js.map +1 -0
- package/dist/components/number/number.vue.d.ts +1 -1
- package/dist/components/pop-confirm/pop-confirm.vue.d.ts +1 -1
- package/dist/components/select/style2.css +4 -4
- package/dist/components/table/use-columns.js +14 -12
- package/dist/components/table/use-columns.js.map +1 -1
- package/dist/components/tip/tip.vue.d.ts +1 -1
- package/dist/components/watermark/watermark.vue.d.ts +1 -1
- package/dist/index.d.ts +63 -61
- package/dist/index.js +56 -55
- package/dist/style.js +2 -1
- package/dist/types/auto-complete.d.ts +6 -1
- package/dist/types/batch-edit.d.ts +15 -2
- package/dist/types/dual-nav.d.ts +27 -0
- package/dist/types/index.d.ts +4 -3
- package/dist/types/nav.d.ts +48 -0
- package/package.json +6 -6
- package/src/components/auto-complete/auto-complete.vue +24 -13
- package/src/components/batch-edit/batch-edit-form.vue +29 -18
- package/src/components/batch-edit/batch-edit-list.vue +6 -1
- package/src/components/batch-edit/batch-edit.vue +36 -73
- package/src/components/batch-edit/di.ts +3 -1
- package/src/components/batch-edit/style.scss +5 -0
- package/src/components/batch-edit/use-edit.ts +63 -116
- package/src/components/batch-edit/use-features.ts +58 -0
- package/src/components/contextmenu/style.scss +5 -5
- package/src/components/dual-nav/dual-nav-app.vue +33 -0
- package/src/components/dual-nav/dual-nav.vue +150 -0
- package/src/components/dual-nav/helper.ts +25 -0
- package/src/components/dual-nav/index.ts +1 -0
- package/src/components/dual-nav/style.scss +153 -0
- package/src/components/dual-nav/style.ts +4 -0
- package/src/components/index.ts +3 -1
- package/src/components/nav/di.ts +17 -0
- package/src/components/nav/helper.ts +22 -0
- package/src/components/nav/index.ts +3 -0
- package/src/components/{menu/menu-icon.vue → nav/nav-icon.vue} +1 -1
- package/src/components/nav/nav-item-collapsed.vue +66 -0
- package/src/components/nav/nav-item.vue +36 -0
- package/src/components/{menu/menu-sub-collapsed.vue → nav/nav-sub-collapsed.vue} +15 -15
- package/src/components/{menu/menu-sub.vue → nav/nav-sub.vue} +19 -19
- package/src/components/{menu/menu.vue → nav/nav.vue} +42 -42
- package/src/components/{menu → nav}/style.scss +16 -14
- package/src/components/{menu/use-menu-item.ts → nav/use-nav-item.ts} +14 -14
- package/src/components/{menu/walk-menu-path.ts → nav/walk-nav-path.ts} +2 -2
- package/src/components/select/style.scss +4 -4
- package/src/components/table/use-columns.ts +23 -20
- package/src/style.ts +2 -1
- package/src/types/auto-complete.ts +6 -1
- package/src/types/batch-edit.ts +18 -1
- package/src/types/dual-nav.ts +28 -0
- package/src/types/index.ts +2 -1
- package/src/types/nav.ts +49 -0
- package/dist/components/menu/di.js +0 -7
- package/dist/components/menu/di.js.map +0 -1
- package/dist/components/menu/helper.js +0 -8
- package/dist/components/menu/helper.js.map +0 -1
- package/dist/components/menu/index.d.ts +0 -3
- package/dist/components/menu/menu-icon.js.map +0 -1
- package/dist/components/menu/menu-item-collapsed.js.map +0 -1
- package/dist/components/menu/menu-item.js.map +0 -1
- package/dist/components/menu/menu-sub-collapsed.js.map +0 -1
- package/dist/components/menu/menu-sub.js.map +0 -1
- package/dist/components/menu/menu.js.map +0 -1
- package/dist/components/menu/menu.vue.d.ts +0 -14
- package/dist/components/menu/use-menu-item.js.map +0 -1
- package/dist/components/menu/walk-menu-path.js.map +0 -1
- package/dist/types/menu.d.ts +0 -40
- package/src/components/menu/di.ts +0 -17
- package/src/components/menu/helper.ts +0 -3
- package/src/components/menu/index.ts +0 -3
- package/src/components/menu/menu-item-collapsed.vue +0 -66
- package/src/components/menu/menu-item.vue +0 -36
- package/src/components/menu/menu-node.ts +0 -6
- package/src/types/menu.ts +0 -41
- /package/dist/components/{menu → dual-nav}/style.d.ts +0 -0
- /package/dist/components/{menu → nav}/style.js +0 -0
- /package/src/components/{menu → nav}/style.ts +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import _sfc_main$1 from "./
|
|
2
|
-
import {
|
|
1
|
+
import _sfc_main$1 from "./nav-icon.js";
|
|
2
|
+
import { useNavItem } from "./use-nav-item.js";
|
|
3
3
|
import { createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, toDisplayString, unref, useTemplateRef } from "vue";
|
|
4
4
|
import { bem } from "@veltra/utils";
|
|
5
|
-
//#region src/components/
|
|
5
|
+
//#region src/components/nav/nav-item.vue
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
|
-
name: "
|
|
8
|
-
__name: "
|
|
7
|
+
name: "NavItem",
|
|
8
|
+
__name: "nav-item",
|
|
9
9
|
props: {
|
|
10
|
-
|
|
10
|
+
item: {},
|
|
11
11
|
depth: {}
|
|
12
12
|
},
|
|
13
13
|
setup(__props) {
|
|
14
|
-
const { cls, active,
|
|
14
|
+
const { cls, active, handleClickItem } = useNavItem({
|
|
15
15
|
itemProps: __props,
|
|
16
16
|
itemRef: useTemplateRef("item")
|
|
17
17
|
});
|
|
@@ -21,18 +21,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
21
21
|
unref(cls).e("item"),
|
|
22
22
|
unref(bem).is("first-level", __props.depth === 0),
|
|
23
23
|
unref(bem).is("active", unref(active)),
|
|
24
|
-
unref(bem).is("disabled", __props.
|
|
24
|
+
unref(bem).is("disabled", __props.item.disabled ?? false)
|
|
25
25
|
]),
|
|
26
26
|
ref: "item",
|
|
27
|
-
onClick: _cache[0] || (_cache[0] = (...args) => unref(
|
|
27
|
+
onClick: _cache[0] || (_cache[0] = (...args) => unref(handleClickItem) && unref(handleClickItem)(...args))
|
|
28
28
|
}, [
|
|
29
|
-
__props.
|
|
29
|
+
__props.item.icon ? (openBlock(), createBlock(_sfc_main$1, {
|
|
30
30
|
key: 0,
|
|
31
|
-
icon: __props.
|
|
31
|
+
icon: __props.item.icon,
|
|
32
32
|
class: normalizeClass(unref(cls).e("icon"))
|
|
33
33
|
}, null, 8, ["icon", "class"])) : createCommentVNode("v-if", true),
|
|
34
34
|
createCommentVNode(" 文本 "),
|
|
35
|
-
createElementVNode("span", { class: normalizeClass(unref(cls).e("item-title")) }, toDisplayString(__props.
|
|
35
|
+
createElementVNode("span", { class: normalizeClass(unref(cls).e("item-title")) }, toDisplayString(__props.item.title), 3)
|
|
36
36
|
], 2);
|
|
37
37
|
};
|
|
38
38
|
}
|
|
@@ -40,4 +40,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
40
40
|
//#endregion
|
|
41
41
|
export { _sfc_main as default };
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=
|
|
43
|
+
//# sourceMappingURL=nav-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-item.js","names":[],"sources":["../../../src/components/nav/nav-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('first-level', depth === 0),\n bem.is('active', active),\n bem.is('disabled', item.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"handleClickItem\"\n >\n <NavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('item-title')\">\n {{ item.title }}\n </span>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { bem } from '@veltra/utils'\nimport { useTemplateRef } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport NavIcon from './nav-icon.vue'\nimport { useNavItem } from './use-nav-item'\n\ndefineOptions({ name: 'NavItem' })\n\nconst props = defineProps<{ item: NavItem; depth: number }>()\n\nconst itemRef = useTemplateRef('item')\n\nconst { cls, active, handleClickItem } = useNavItem({ itemProps: props, itemRef })\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkCA,MAAM,EAAE,KAAK,QAAQ,oBAAoB,WAAW;GAAE,WAAW;GAAO,SAFxD,eAAe,MAEyC;EAAQ,CAAC;;uBAjC/E,mBAgBK,MAAA;IAfF,OAAK,eAAA;KAAU,MAAA,GAAA,EAAI,EAAC,MAAA;KAAgB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA;KAAe,MAAA,GAAA,EAAI,GAAE,UAAW,MAAA,MAAA,CAAM;KAAS,MAAA,GAAA,EAAI,GAAE,YAAa,QAAA,KAAK,YAAQ,KAAA;;IAM/I,KAAI;IACH,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,MAAA,eAAA,KAAA,MAAA,eAAA,EAAA,GAAA,IAAA;;IAEO,QAAA,KAAK,QAAA,UAAA,GAApB,YAAqE,aAAA;;KAA1C,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA;;IAEzD,mBAAA,MAAA;IACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA,EAAA,GAAA,gBACd,QAAA,KAAK,KAAK,GAAA,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region src/components/
|
|
1
|
+
import { NavItem } from "../../types/nav.js";
|
|
2
|
+
//#region src/components/nav/nav-item.vue.d.ts
|
|
3
3
|
type __VLS_Props = {
|
|
4
|
-
|
|
4
|
+
item: NavItem;
|
|
5
5
|
depth: number;
|
|
6
6
|
};
|
|
7
7
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
8
8
|
declare const _default: typeof __VLS_export;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { _default };
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=nav-item.vue.d.ts.map
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import _sfc_main$1 from "../icon/icon.js";
|
|
2
2
|
import _sfc_main$2 from "../scroll/scroll.js";
|
|
3
3
|
import _sfc_main$3 from "../tip/tip.js";
|
|
4
|
-
import {
|
|
5
|
-
import _sfc_main$4 from "./menu-icon.js";
|
|
6
|
-
import _sfc_main$5 from "./menu-item-collapsed.js";
|
|
4
|
+
import { NavDIKey } from "./di.js";
|
|
7
5
|
import { getKey } from "./helper.js";
|
|
6
|
+
import _sfc_main$4 from "./nav-icon.js";
|
|
7
|
+
import _sfc_main$5 from "./nav-item-collapsed.js";
|
|
8
8
|
import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, ref, renderList, resolveComponent, toDisplayString, unref, withCtx } from "vue";
|
|
9
9
|
import { bem } from "@veltra/utils";
|
|
10
10
|
import { ArrowRight } from "@veltra/icons/normal";
|
|
11
|
-
//#region src/components/
|
|
11
|
+
//#region src/components/nav/nav-sub-collapsed.vue
|
|
12
12
|
const _hoisted_1 = { key: 1 };
|
|
13
13
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
14
|
-
name: "
|
|
15
|
-
__name: "
|
|
14
|
+
name: "NavSubCollapsed",
|
|
15
|
+
__name: "nav-sub-collapsed",
|
|
16
16
|
props: {
|
|
17
|
-
|
|
17
|
+
item: {},
|
|
18
18
|
parentKey: {},
|
|
19
19
|
depth: {}
|
|
20
20
|
},
|
|
@@ -23,9 +23,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
23
23
|
function closeSubMenu() {
|
|
24
24
|
visible.value = false;
|
|
25
25
|
}
|
|
26
|
-
const { collapsedCls, size } = inject(
|
|
26
|
+
const { collapsedCls, size } = inject(NavDIKey);
|
|
27
27
|
return (_ctx, _cache) => {
|
|
28
|
-
const
|
|
28
|
+
const _component_NavSubCollapsed = resolveComponent("NavSubCollapsed", true);
|
|
29
29
|
return openBlock(), createBlock(unref(_sfc_main$3), {
|
|
30
30
|
"hide-arrow": "",
|
|
31
31
|
direction: "right",
|
|
@@ -39,31 +39,31 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
39
39
|
tag: "ul",
|
|
40
40
|
class: normalizeClass(unref(collapsedCls).e("sub-list"))
|
|
41
41
|
}, {
|
|
42
|
-
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.
|
|
42
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.item.children, (child, index) => {
|
|
43
43
|
return openBlock(), createElementBlock(Fragment, { key: unref(getKey)(index, __props.parentKey) }, [!child.children?.length ? (openBlock(), createBlock(_sfc_main$5, {
|
|
44
44
|
key: 0,
|
|
45
|
-
|
|
45
|
+
item: child,
|
|
46
46
|
depth: __props.depth + 1,
|
|
47
47
|
onClick: closeSubMenu
|
|
48
|
-
}, null, 8, ["
|
|
48
|
+
}, null, 8, ["item", "depth"])) : (openBlock(), createBlock(_component_NavSubCollapsed, {
|
|
49
49
|
key: 1,
|
|
50
|
-
|
|
50
|
+
item: child,
|
|
51
51
|
"parent-key": unref(getKey)(index, __props.parentKey),
|
|
52
52
|
depth: __props.depth + 1
|
|
53
53
|
}, null, 8, [
|
|
54
|
-
"
|
|
54
|
+
"item",
|
|
55
55
|
"parent-key",
|
|
56
56
|
"depth"
|
|
57
57
|
]))], 64);
|
|
58
58
|
}), 128))]),
|
|
59
59
|
_: 1
|
|
60
60
|
}, 8, ["class"])]),
|
|
61
|
-
default: withCtx(() => [createElementVNode("li", { class: normalizeClass([unref(collapsedCls).e("sub-content"), unref(bem).is("first-level", __props.depth === 0)]) }, [__props.
|
|
61
|
+
default: withCtx(() => [createElementVNode("li", { class: normalizeClass([unref(collapsedCls).e("sub-content"), unref(bem).is("first-level", __props.depth === 0)]) }, [__props.item.icon ? (openBlock(), createBlock(_sfc_main$4, {
|
|
62
62
|
key: 0,
|
|
63
|
-
icon: __props.
|
|
63
|
+
icon: __props.item.icon,
|
|
64
64
|
class: normalizeClass(unref(collapsedCls).e("icon"))
|
|
65
|
-
}, null, 8, ["icon", "class"])) : (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(__props.
|
|
66
|
-
createElementVNode("span", { class: normalizeClass(unref(collapsedCls).e("sub-title")) }, toDisplayString(__props.
|
|
65
|
+
}, null, 8, ["icon", "class"])) : (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(__props.item.title[0]), 1)), __props.depth !== 0 ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
|
|
66
|
+
createElementVNode("span", { class: normalizeClass(unref(collapsedCls).e("sub-title")) }, toDisplayString(__props.item.title), 3),
|
|
67
67
|
createCommentVNode(" 展开图标 "),
|
|
68
68
|
createVNode(unref(_sfc_main$1), { class: normalizeClass([unref(collapsedCls).e("sub-expand")]) }, {
|
|
69
69
|
default: withCtx(() => [createVNode(unref(ArrowRight))]),
|
|
@@ -78,4 +78,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
78
78
|
//#endregion
|
|
79
79
|
export { _sfc_main as default };
|
|
80
80
|
|
|
81
|
-
//# sourceMappingURL=
|
|
81
|
+
//# sourceMappingURL=nav-sub-collapsed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-sub-collapsed.js","names":[],"sources":["../../../src/components/nav/nav-sub-collapsed.vue"],"sourcesContent":["<template>\n <u-tip\n hide-arrow\n direction=\"right\"\n alignment=\"start\"\n :class=\"[collapsedCls.m(size), collapsedCls.e('panel')]\"\n style=\"padding: 0\"\n v-model:visible=\"visible\"\n >\n <li :class=\"[collapsedCls.e('sub-content'), bem.is('first-level', depth === 0)]\">\n <NavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"collapsedCls.e('icon')\" />\n\n <span v-else>{{ item.title[0] }}</span>\n\n <template v-if=\"depth !== 0\">\n <span :class=\"collapsedCls.e('sub-title')\">\n {{ item.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[collapsedCls.e('sub-expand')]\">\n <ArrowRight />\n </u-icon>\n </template>\n </li>\n\n <template #content>\n <u-scroll tag=\"ul\" :class=\"collapsedCls.e('sub-list')\">\n <template v-for=\"(child, index) of item.children!\" :key=\"getKey(index, parentKey)\">\n <UNavItemCollapsed\n v-if=\"!child.children?.length\"\n :item=\"child\"\n :depth=\"depth + 1\"\n @click=\"closeSubMenu\"\n />\n\n <NavSubCollapsed\n v-else\n :item=\"child\"\n :parent-key=\"getKey(index, parentKey)\"\n :depth=\"depth + 1\"\n />\n </template>\n </u-scroll>\n </template>\n </u-tip>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { inject, ref } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { UTip } from '../tip'\nimport { NavDIKey } from './di'\nimport { getKey } from './helper'\nimport NavIcon from './nav-icon.vue'\nimport UNavItemCollapsed from './nav-item-collapsed.vue'\n\ndefineOptions({ name: 'NavSubCollapsed' })\n\ndefineProps<{ item: NavItem; parentKey: string; depth: number }>()\n\nconst visible = ref(false)\n\nfunction closeSubMenu() {\n visible.value = false\n}\n\nconst { collapsedCls, size } = inject(NavDIKey)!\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAkEA,MAAM,UAAU,IAAI,KAAK;EAEzB,SAAS,eAAe;GACtB,QAAQ,QAAQ;EAClB;EAEA,MAAM,EAAE,cAAc,SAAS,OAAO,QAAQ;;;uBAvE5C,YA4CQ,MAAA,WAAA,GAAA;IA3CN,cAAA;IACA,WAAU;IACV,WAAU;IACT,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAE,MAAA,IAAA,CAAI,GAAG,MAAA,YAAA,EAAa,EAAC,OAAA,CAAA,CAAA;IAC7C,OAAA,EAAA,WAAA,IAAA;IACQ,SAAS,QAAA;8DAAA,QAAO,QAAA;;IAmBb,SAAO,cAiBL,CAhBX,YAgBW,MAAA,WAAA,GAAA;KAhBD,KAAI;KAAM,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,UAAA,CAAA;;4BACW,EAAA,UAAA,IAAA,GAAlD,mBAcW,UAAA,MAAA,WAdwB,QAAA,KAAK,WAAtB,OAAO,UAAK;8DAA2B,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS,EAAA,GAAA,CAAA,CAErE,MAAM,UAAU,UAAA,UAAA,GADzB,YAKE,aAAA;;OAHC,MAAM;OACN,OAAO,QAAA,QAAK;OACZ,SAAO;sDAGV,YAKE,4BAAA;;OAHC,MAAM;OACN,cAAY,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS;OACnC,OAAO,QAAA,QAAK;;;;;;;;;2BAhBhB,CAfL,mBAeK,MAAA,EAfA,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAC,aAAA,GAAiB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA,CAAA,CAAA,EAAA,GAAA,CACtD,QAAA,KAAK,QAAA,UAAA,GAApB,YAA8E,aAAA;;KAAnD,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,MAAA,CAAA;oDAElE,mBAAuC,QAAA,YAAA,gBAAvB,QAAA,KAAK,MAAK,EAAA,GAAA,CAAA,IAEV,QAAA,UAAK,KAAA,UAAA,GAArB,mBASW,UAAA,EAAA,KAAA,EAAA,GAAA;KART,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,WAAA,CAAA,EAAA,GAAA,gBACvB,QAAA,KAAK,KAAK,GAAA,CAAA;KAGf,mBAAA,QAAA;KACA,YAES,MAAA,WAAA,GAAA,EAFA,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAC,YAAA,CAAA,CAAA,EAAA,GAAA;6BACf,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
import _sfc_main$1 from "../icon/icon.js";
|
|
2
|
-
import {
|
|
3
|
-
import _sfc_main$2 from "./menu-icon.js";
|
|
4
|
-
import _sfc_main$3 from "./menu-item.js";
|
|
2
|
+
import { NavDIKey } from "./di.js";
|
|
5
3
|
import { getKey } from "./helper.js";
|
|
4
|
+
import _sfc_main$2 from "./nav-icon.js";
|
|
5
|
+
import _sfc_main$3 from "./nav-item.js";
|
|
6
6
|
import { Fragment, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, renderList, resolveComponent, toDisplayString, unref, vShow, withCtx, withDirectives } from "vue";
|
|
7
7
|
import { bem } from "@veltra/utils";
|
|
8
8
|
import { ArrowRight } from "@veltra/icons/normal";
|
|
9
|
-
//#region src/components/
|
|
9
|
+
//#region src/components/nav/nav-sub.vue
|
|
10
10
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
11
|
-
name: "
|
|
12
|
-
__name: "
|
|
11
|
+
name: "NavSub",
|
|
12
|
+
__name: "nav-sub",
|
|
13
13
|
props: {
|
|
14
|
-
|
|
14
|
+
item: {},
|
|
15
15
|
parentKey: {},
|
|
16
16
|
depth: {}
|
|
17
17
|
},
|
|
18
18
|
setup(__props) {
|
|
19
19
|
const props = __props;
|
|
20
|
-
const { cls, expandedPath,
|
|
21
|
-
const expanded = computed(() => expandedPath.has(props.
|
|
20
|
+
const { cls, expandedPath, navProps, expandTransition } = inject(NavDIKey);
|
|
21
|
+
const expanded = computed(() => expandedPath.has(props.item.path));
|
|
22
22
|
const branchActive = computed(() => {
|
|
23
|
-
const currentPath =
|
|
23
|
+
const currentPath = navProps.currentPath;
|
|
24
24
|
if (!currentPath) return false;
|
|
25
25
|
const check = (items) => {
|
|
26
26
|
return items?.some((item) => item.path === currentPath || check(item.children)) ?? false;
|
|
27
27
|
};
|
|
28
|
-
return check(props.
|
|
28
|
+
return check(props.item.children);
|
|
29
29
|
});
|
|
30
30
|
function handleToggleExpand() {
|
|
31
|
-
const {
|
|
32
|
-
expandedPath.has(
|
|
31
|
+
const { item } = props;
|
|
32
|
+
expandedPath.has(item.path) ? expandedPath.delete(item.path) : expandedPath.add(item.path);
|
|
33
33
|
}
|
|
34
34
|
return (_ctx, _cache) => {
|
|
35
|
-
const
|
|
36
|
-
return openBlock(), createElementBlock("li", { class: normalizeClass(
|
|
35
|
+
const _component_NavSub = resolveComponent("NavSub", true);
|
|
36
|
+
return openBlock(), createElementBlock("li", { class: normalizeClass(unref(cls).e("sub")) }, [
|
|
37
37
|
createElementVNode("div", {
|
|
38
38
|
class: normalizeClass([
|
|
39
39
|
unref(cls).e("sub-content"),
|
|
@@ -43,13 +43,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
43
43
|
]),
|
|
44
44
|
onClick: handleToggleExpand
|
|
45
45
|
}, [
|
|
46
|
-
__props.
|
|
46
|
+
__props.item.icon ? (openBlock(), createBlock(_sfc_main$2, {
|
|
47
47
|
key: 0,
|
|
48
|
-
icon: __props.
|
|
48
|
+
icon: __props.item.icon,
|
|
49
49
|
class: normalizeClass(unref(cls).e("icon"))
|
|
50
50
|
}, null, 8, ["icon", "class"])) : createCommentVNode("v-if", true),
|
|
51
51
|
createCommentVNode(" 文本 "),
|
|
52
|
-
createElementVNode("span", { class: normalizeClass(unref(cls).e("sub-title")) }, toDisplayString(__props.
|
|
52
|
+
createElementVNode("span", { class: normalizeClass(unref(cls).e("sub-title")) }, toDisplayString(__props.item.title), 3),
|
|
53
53
|
createCommentVNode(" 展开图标 "),
|
|
54
54
|
createVNode(unref(_sfc_main$1), { class: normalizeClass([unref(cls).e("sub-expand"), unref(bem).is("expanded", expanded.value)]) }, {
|
|
55
55
|
default: withCtx(() => [createVNode(unref(ArrowRight))]),
|
|
@@ -65,18 +65,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
65
65
|
onAfterLeave: _cache[4] || (_cache[4] = (el) => unref(expandTransition).afterLeave(el)),
|
|
66
66
|
persisted: ""
|
|
67
67
|
}, {
|
|
68
|
-
default: withCtx(() => [withDirectives(createElementVNode("ul", { class: normalizeClass(unref(cls).e("sub-list")) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.
|
|
68
|
+
default: withCtx(() => [withDirectives(createElementVNode("ul", { class: normalizeClass(unref(cls).e("sub-list")) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.item.children, (child, index) => {
|
|
69
69
|
return openBlock(), createElementBlock(Fragment, { key: unref(getKey)(index, __props.parentKey) }, [!child.children?.length ? (openBlock(), createBlock(_sfc_main$3, {
|
|
70
70
|
key: 0,
|
|
71
|
-
|
|
71
|
+
item: child,
|
|
72
72
|
depth: __props.depth + 1
|
|
73
|
-
}, null, 8, ["
|
|
73
|
+
}, null, 8, ["item", "depth"])) : (openBlock(), createBlock(_component_NavSub, {
|
|
74
74
|
key: 1,
|
|
75
|
-
|
|
75
|
+
item: child,
|
|
76
76
|
"parent-key": unref(getKey)(index, __props.parentKey),
|
|
77
77
|
depth: __props.depth + 1
|
|
78
78
|
}, null, 8, [
|
|
79
|
-
"
|
|
79
|
+
"item",
|
|
80
80
|
"parent-key",
|
|
81
81
|
"depth"
|
|
82
82
|
]))], 64);
|
|
@@ -90,4 +90,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
90
90
|
//#endregion
|
|
91
91
|
export { _sfc_main as default };
|
|
92
92
|
|
|
93
|
-
//# sourceMappingURL=
|
|
93
|
+
//# sourceMappingURL=nav-sub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-sub.js","names":[],"sources":["../../../src/components/nav/nav-sub.vue"],"sourcesContent":["<template>\n <li :class=\"cls.e('sub')\">\n <div\n :class=\"[\n cls.e('sub-content'),\n bem.is('first-level', depth === 0),\n bem.is('expanded', expanded),\n bem.is('branch-active', branchActive)\n ]\"\n @click=\"handleToggleExpand\"\n >\n <UNavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('sub-title')\">\n {{ item.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[cls.e('sub-expand'), bem.is('expanded', expanded)]\">\n <ArrowRight />\n </u-icon>\n </div>\n\n <!-- @vue-ignore -->\n <transition\n @enter=\"(el: Element) => expandTransition.enter(el as HTMLElement)\"\n @after-enter=\"(el: Element) => expandTransition.afterEnter(el as HTMLElement)\"\n @before-leave=\"(el: Element) => expandTransition.beforeLeave(el as HTMLElement)\"\n @leave=\"(el: Element) => expandTransition.leave(el as HTMLElement)\"\n @after-leave=\"(el: Element) => expandTransition.afterLeave(el as HTMLElement)\"\n >\n <ul :class=\"cls.e('sub-list')\" v-show=\"expanded\">\n <template v-for=\"(child, index) of item.children!\" :key=\"getKey(index, parentKey)\">\n <UNavItem v-if=\"!child.children?.length\" :item=\"child\" :depth=\"depth + 1\" />\n <NavSub v-else :item=\"child\" :parent-key=\"getKey(index, parentKey)\" :depth=\"depth + 1\" />\n </template>\n </ul>\n </transition>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { NavDIKey } from './di'\nimport { getKey } from './helper'\nimport UNavIcon from './nav-icon.vue'\nimport UNavItem from './nav-item.vue'\n\ndefineOptions({ name: 'NavSub' })\n\nconst props = defineProps<{ item: NavItem; parentKey: string; depth: number }>()\n\nconst { cls, expandedPath, navProps, expandTransition } = inject(NavDIKey)!\n\nconst expanded = computed(() => expandedPath.has(props.item.path))\n\nconst branchActive = computed(() => {\n const currentPath = navProps.currentPath\n if (!currentPath) return false\n\n const check = (items?: NavItem[]) => {\n return items?.some((item) => item.path === currentPath || check(item.children)) ?? false\n }\n\n return check(props.item.children)\n})\n\nfunction handleToggleExpand() {\n const { item } = props\n expandedPath.has(item.path) ? expandedPath.delete(item.path) : expandedPath.add(item.path)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAwDA,MAAM,QAAQ;EAEd,MAAM,EAAE,KAAK,cAAc,UAAU,qBAAqB,OAAO,QAAQ;EAEzE,MAAM,WAAW,eAAe,aAAa,IAAI,MAAM,KAAK,IAAI,CAAC;EAEjE,MAAM,eAAe,eAAe;GAClC,MAAM,cAAc,SAAS;GAC7B,IAAI,CAAC,aAAa,OAAO;GAEzB,MAAM,SAAS,UAAsB;IACnC,OAAO,OAAO,MAAM,SAAS,KAAK,SAAS,eAAe,MAAM,KAAK,QAAQ,CAAC,KAAK;GACrF;GAEA,OAAO,MAAM,MAAM,KAAK,QAAQ;EAClC,CAAC;EAED,SAAS,qBAAqB;GAC5B,MAAM,EAAE,SAAS;GACjB,aAAa,IAAI,KAAK,IAAI,IAAI,aAAa,OAAO,KAAK,IAAI,IAAI,aAAa,IAAI,KAAK,IAAI;EAC3F;;;uBA3EE,mBAsCK,MAAA,EAtCA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,KAAA,CAAA,EAAA,GAAA;IACf,mBAoBM,OAAA;KAnBH,OAAK,eAAA;MAAY,MAAA,GAAA,EAAI,EAAC,aAAA;MAAyB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA;MAAiB,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ;MAAW,MAAA,GAAA,EAAI,GAAE,iBAAkB,aAAA,KAAY;;KAMrK,SAAO;;KAEQ,QAAA,KAAK,QAAA,UAAA,GAArB,YAAsE,aAAA;;MAA1C,MAAM,QAAA,KAAK;MAAO,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA;;KAE1D,mBAAA,MAAA;KACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,WAAA,CAAA,EAAA,GAAA,gBACd,QAAA,KAAK,KAAK,GAAA,CAAA;KAGf,mBAAA,QAAA;KACA,YAES,MAAA,WAAA,GAAA,EAFA,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,EAAC,YAAA,GAAgB,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ,CAAA,CAAA,EAAA,GAAA;6BACjD,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;;IAIlB,mBAAA,eAAA;IACA,YAaa,YAAA;KAZV,SAAK,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,MAAM,EAAE;KACjD,cAAW,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,WAAW,EAAE;KAC5D,eAAY,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,YAAY,EAAE;KAC9D,SAAK,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,MAAM,EAAE;KACjD,cAAW,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,WAAW,EAAE;KAL/D,WAAA;;4BAYO,CAAA,eALL,mBAKK,MAAA,EALA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,UAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAGW,UAAA,MAAA,WAHwB,QAAA,KAAK,WAAtB,OAAO,UAAK;8DAA2B,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS,EAAA,GAAA,CAAA,CAC7D,MAAM,UAAU,UAAA,UAAA,GAAjC,YAA4E,aAAA;;OAAlC,MAAM;OAAQ,OAAO,QAAA,QAAK;sDACpE,YAAyF,mBAAA;;OAAzE,MAAM;OAAQ,cAAY,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS;OAAI,OAAO,QAAA,QAAK;;;;;;8BAH9C,SAAA,KAAQ,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region src/components/
|
|
1
|
+
import { NavItem } from "../../types/nav.js";
|
|
2
|
+
//#region src/components/nav/nav-sub.vue.d.ts
|
|
3
3
|
type __VLS_Props = {
|
|
4
|
-
|
|
4
|
+
item: NavItem;
|
|
5
5
|
parentKey: string;
|
|
6
6
|
depth: number;
|
|
7
7
|
};
|
|
@@ -9,4 +9,4 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
9
9
|
declare const _default: typeof __VLS_export;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { _default };
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=nav-sub.vue.d.ts.map
|
|
@@ -1,36 +1,33 @@
|
|
|
1
1
|
import _sfc_main$1 from "../scroll/scroll.js";
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import _sfc_main$
|
|
6
|
-
import _sfc_main$
|
|
7
|
-
import
|
|
2
|
+
import { NavDIKey } from "./di.js";
|
|
3
|
+
import { walkNavWithPath } from "./walk-nav-path.js";
|
|
4
|
+
import { collectNavBranchPaths } from "./helper.js";
|
|
5
|
+
import _sfc_main$2 from "./nav-item-collapsed.js";
|
|
6
|
+
import _sfc_main$3 from "./nav-item.js";
|
|
7
|
+
import _sfc_main$4 from "./nav-sub-collapsed.js";
|
|
8
|
+
import _sfc_main$5 from "./nav-sub.js";
|
|
8
9
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, defineComponent, normalizeClass, openBlock, provide, renderList, shallowReactive, unref, watch, withCtx } from "vue";
|
|
9
10
|
import { useFallbackProps } from "@veltra/compositions";
|
|
10
11
|
import { ExpandTransition, bem } from "@veltra/utils";
|
|
11
|
-
//#region src/components/
|
|
12
|
+
//#region src/components/nav/nav.vue
|
|
12
13
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
13
|
-
name: "
|
|
14
|
-
__name: "
|
|
14
|
+
name: "Nav",
|
|
15
|
+
__name: "nav",
|
|
15
16
|
props: {
|
|
16
17
|
currentPath: {},
|
|
17
18
|
collapsed: {
|
|
18
19
|
type: Boolean,
|
|
19
20
|
default: false
|
|
20
21
|
},
|
|
21
|
-
uniqueOpened: {
|
|
22
|
-
type: Boolean,
|
|
23
|
-
default: false
|
|
24
|
-
},
|
|
25
22
|
menus: {}
|
|
26
23
|
},
|
|
27
24
|
emits: ["item-click"],
|
|
28
|
-
setup(__props, { emit: __emit }) {
|
|
25
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
29
26
|
const props = __props;
|
|
30
27
|
const emit = __emit;
|
|
31
|
-
const cls = bem("
|
|
32
|
-
const collapsedCls = bem("collapsed-
|
|
33
|
-
const
|
|
28
|
+
const cls = bem("nav");
|
|
29
|
+
const collapsedCls = bem("collapsed-nav");
|
|
30
|
+
const navCls = computed(() => {
|
|
34
31
|
return props.collapsed ? collapsedCls : cls;
|
|
35
32
|
});
|
|
36
33
|
const expandTransition = new ExpandTransition({
|
|
@@ -43,7 +40,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
43
40
|
watch([() => props.currentPath, () => props.menus], ([currentPath, menus]) => {
|
|
44
41
|
if (!currentPath || !menus) return;
|
|
45
42
|
menus.forEach((menu) => {
|
|
46
|
-
|
|
43
|
+
walkNavWithPath(menu, (node, nodePath) => {
|
|
47
44
|
if (node.path === currentPath) {
|
|
48
45
|
nodePath.slice(0, -1).forEach((path) => {
|
|
49
46
|
expandedPath.add(path.path);
|
|
@@ -53,43 +50,55 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
53
50
|
});
|
|
54
51
|
});
|
|
55
52
|
}, { immediate: true });
|
|
56
|
-
provide(
|
|
53
|
+
provide(NavDIKey, {
|
|
57
54
|
cls,
|
|
58
55
|
collapsedCls,
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
navProps: props,
|
|
57
|
+
navEmit: emit,
|
|
61
58
|
expandedPath,
|
|
62
59
|
size,
|
|
63
60
|
expandTransition
|
|
64
61
|
});
|
|
62
|
+
function expandAll() {
|
|
63
|
+
collectNavBranchPaths(props.menus).forEach((path) => {
|
|
64
|
+
expandedPath.add(path);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function collapseAll() {
|
|
68
|
+
expandedPath.clear();
|
|
69
|
+
}
|
|
70
|
+
__expose({
|
|
71
|
+
expandAll,
|
|
72
|
+
collapseAll
|
|
73
|
+
});
|
|
65
74
|
return (_ctx, _cache) => {
|
|
66
75
|
return openBlock(), createBlock(unref(_sfc_main$1), {
|
|
67
76
|
tag: "ul",
|
|
68
|
-
class: normalizeClass([
|
|
69
|
-
"container-class":
|
|
77
|
+
class: normalizeClass([navCls.value.b, navCls.value.m(unref(size))]),
|
|
78
|
+
"container-class": navCls.value.e("container")
|
|
70
79
|
}, {
|
|
71
|
-
default: withCtx(() => [createCommentVNode(" 常规 "), !__props.collapsed ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.menus, (
|
|
72
|
-
return openBlock(), createElementBlock(Fragment, { key: index }, [
|
|
80
|
+
default: withCtx(() => [createCommentVNode(" 常规 "), !__props.collapsed ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.menus, (item, index) => {
|
|
81
|
+
return openBlock(), createElementBlock(Fragment, { key: index }, [item.children?.length ? (openBlock(), createBlock(_sfc_main$5, {
|
|
73
82
|
key: 0,
|
|
74
|
-
|
|
83
|
+
item,
|
|
75
84
|
"parent-key": String(index),
|
|
76
85
|
depth: 0
|
|
77
|
-
}, null, 8, ["
|
|
78
|
-
|
|
86
|
+
}, null, 8, ["item", "parent-key"])) : (openBlock(), createBlock(_sfc_main$3, {
|
|
87
|
+
item,
|
|
79
88
|
key: index,
|
|
80
89
|
depth: 0
|
|
81
|
-
}, null, 8, ["
|
|
82
|
-
}), 128)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 折叠 "), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.menus, (
|
|
83
|
-
return openBlock(), createElementBlock(Fragment, { key: index }, [
|
|
90
|
+
}, null, 8, ["item"]))], 64);
|
|
91
|
+
}), 128)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 折叠 "), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.menus, (item, index) => {
|
|
92
|
+
return openBlock(), createElementBlock(Fragment, { key: index }, [item.children?.length ? (openBlock(), createBlock(_sfc_main$4, {
|
|
84
93
|
key: 0,
|
|
85
|
-
|
|
94
|
+
item,
|
|
86
95
|
"parent-key": String(index),
|
|
87
96
|
depth: 0
|
|
88
|
-
}, null, 8, ["
|
|
89
|
-
|
|
97
|
+
}, null, 8, ["item", "parent-key"])) : (openBlock(), createBlock(_sfc_main$2, {
|
|
98
|
+
item,
|
|
90
99
|
key: index,
|
|
91
100
|
depth: 0
|
|
92
|
-
}, null, 8, ["
|
|
101
|
+
}, null, 8, ["item"]))], 64);
|
|
93
102
|
}), 128))], 64))]),
|
|
94
103
|
_: 1
|
|
95
104
|
}, 8, ["class", "container-class"]);
|
|
@@ -99,4 +108,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
99
108
|
//#endregion
|
|
100
109
|
export { _sfc_main as default };
|
|
101
110
|
|
|
102
|
-
//# sourceMappingURL=
|
|
111
|
+
//# sourceMappingURL=nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav.js","names":[],"sources":["../../../src/components/nav/nav.vue"],"sourcesContent":["<template>\n <u-scroll tag=\"ul\" :class=\"[navCls.b, navCls.m(size)]\" :container-class=\"navCls.e('container')\">\n <!-- 常规 -->\n <template v-if=\"!collapsed\">\n <template v-for=\"(item, index) of menus\" :key=\"index\">\n <UNavSub v-if=\"item.children?.length\" :item=\"item\" :parent-key=\"String(index)\" :depth=\"0\" />\n <UNavItem v-else :item=\"item\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n\n <!-- 折叠 -->\n <template v-else>\n <template v-for=\"(item, index) of menus\" :key=\"index\">\n <UNavSubCollapsed\n v-if=\"item.children?.length\"\n :item=\"item\"\n :parent-key=\"String(index)\"\n :depth=\"0\"\n />\n <UNavItemCollapsed v-else :item=\"item\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport type { ComponentSize } from '@veltra/utils'\nimport { computed, provide, shallowReactive, watch } from 'vue'\n\nimport type { NavEmits, NavProps } from '../../types/nav'\nimport { UScroll } from '../scroll'\nimport { NavDIKey } from './di'\nimport { collectNavBranchPaths } from './helper'\nimport UNavItemCollapsed from './nav-item-collapsed.vue'\nimport UNavItem from './nav-item.vue'\nimport UNavSubCollapsed from './nav-sub-collapsed.vue'\nimport UNavSub from './nav-sub.vue'\nimport { walkNavWithPath } from './walk-nav-path'\n\ndefineOptions({ name: 'Nav' })\n\nconst props = withDefaults(defineProps<NavProps>(), { collapsed: false })\n\nconst emit = defineEmits<NavEmits>()\n\nconst cls = bem('nav')\nconst collapsedCls = bem('collapsed-nav')\n\nconst navCls = computed(() => {\n return props.collapsed ? collapsedCls : cls\n})\n\nconst expandTransition = new ExpandTransition({\n enterTransition:\n 'height 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-top 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-bottom 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.18s cubic-bezier(0.4, 0, 0.2, 1)',\n leaveTransition:\n 'height 0.2s cubic-bezier(0.4, 0, 1, 1), padding-top 0.2s cubic-bezier(0.4, 0, 1, 1), padding-bottom 0.2s cubic-bezier(0.4, 0, 1, 1), opacity 0.12s cubic-bezier(0.4, 0, 1, 1)',\n opacity: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst expandedPath = shallowReactive(new Set<string>())\n\nwatch(\n [() => props.currentPath, () => props.menus],\n ([currentPath, menus]) => {\n if (!currentPath || !menus) return\n menus.forEach((menu) => {\n walkNavWithPath(menu, (node, nodePath) => {\n if (node.path === currentPath) {\n nodePath.slice(0, -1).forEach((path) => {\n expandedPath.add(path.path)\n })\n return false\n }\n })\n })\n },\n { immediate: true }\n)\n\nprovide(NavDIKey, {\n cls,\n collapsedCls,\n navProps: props,\n navEmit: emit,\n expandedPath,\n size,\n expandTransition\n})\n\nfunction expandAll() {\n collectNavBranchPaths(props.menus).forEach((path) => {\n expandedPath.add(path)\n })\n}\n\nfunction collapseAll() {\n expandedPath.clear()\n}\n\ndefineExpose({ expandAll, collapseAll })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,KAAK;EACrB,MAAM,eAAe,IAAI,eAAe;EAExC,MAAM,SAAS,eAAe;GAC5B,OAAO,MAAM,YAAY,eAAe;EAC1C,CAAC;EAED,MAAM,mBAAmB,IAAI,iBAAiB;GAC5C,iBACE;GACF,iBACE;GACF,SAAS;EACX,CAAC;EAED,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,eAAe,gCAAgB,IAAI,IAAY,CAAC;EAEtD,MACE,OAAO,MAAM,mBAAmB,MAAM,KAAK,IAC1C,CAAC,aAAa,WAAW;GACxB,IAAI,CAAC,eAAe,CAAC,OAAO;GAC5B,MAAM,SAAS,SAAS;IACtB,gBAAgB,OAAO,MAAM,aAAa;KACxC,IAAI,KAAK,SAAS,aAAa;MAC7B,SAAS,MAAM,GAAG,EAAE,EAAE,SAAS,SAAS;OACtC,aAAa,IAAI,KAAK,IAAI;MAC5B,CAAC;MACD,OAAO;KACT;IACF,CAAC;GACH,CAAC;EACH,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,QAAQ,UAAU;GAChB;GACA;GACA,UAAU;GACV,SAAS;GACT;GACA;GACA;EACF,CAAC;EAED,SAAS,YAAY;GACnB,sBAAsB,MAAM,KAAK,EAAE,SAAS,SAAS;IACnD,aAAa,IAAI,IAAI;GACvB,CAAC;EACH;EAEA,SAAS,cAAc;GACrB,aAAa,MAAM;EACrB;EAEA,SAAa;GAAE;GAAW;EAAY,CAAC;;uBAvGrC,YAqBW,MAAA,WAAA,GAAA;IArBD,KAAI;IAAM,OAAK,eAAA,CAAG,OAAA,MAAO,GAAG,OAAA,MAAO,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;IAAK,mBAAiB,OAAA,MAAO,EAAC,WAAA;;2BACpE,CAAX,mBAAA,MAAA,GAAA,CACiB,QAAA,aAAA,UAAA,IAAA,GACf,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,WAHuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CACnC,KAAK,UAAU,UAAA,UAAA,GAA9B,YAA4F,aAAA;;MAA/C;MAAO,cAAY,OAAO,KAAK;MAAI,OAAO;0DACvF,YAAwD,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO;;8BAKvD,mBAUW,UAAA,EAAA,KAAA,EAAA,GAAA,CAXX,mBAAA,MAAA,IAAA,UAAA,IAAA,GAEE,mBAQW,UAAA,MAAA,WARuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CAE1C,KAAK,UAAU,UAAA,UAAA,GADvB,YAKE,aAAA;;MAHO;MACN,cAAY,OAAO,KAAK;MACxB,OAAO;0DAEV,YAAiE,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NavItem, NavProps } from "../../types/nav.js";
|
|
2
|
+
//#region src/components/nav/nav.vue.d.ts
|
|
3
|
+
declare function expandAll(): void;
|
|
4
|
+
declare function collapseAll(): void;
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<NavProps, {
|
|
6
|
+
expandAll: typeof expandAll;
|
|
7
|
+
collapseAll: typeof collapseAll;
|
|
8
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
9
|
+
"item-click": (item: NavItem) => any;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<NavProps> & Readonly<{
|
|
11
|
+
"onItem-click"?: ((item: NavItem) => any) | undefined;
|
|
12
|
+
}>, {
|
|
13
|
+
collapsed: boolean;
|
|
14
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
declare const _default: typeof __VLS_export;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { _default };
|
|
18
|
+
//# sourceMappingURL=nav.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|