@ditari/bsui 1.1.54 → 1.1.55

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ditari/bsui
2
2
 
3
+ ## 1.1.55
4
+
5
+ ### Patch Changes
6
+
7
+ - 1. 多标签子路由激活问题修复
8
+
3
9
  ## 1.1.54
4
10
 
5
11
  ### Patch Changes
@@ -35,7 +35,11 @@ declare const _default: import("vue").DefineComponent<{}, {
35
35
  activeKey: string;
36
36
  }>) => string;
37
37
  }, {
38
- setActiveKey(key: string): void;
38
+ setActiveKey(key: string): void; /**
39
+ * 关闭标签
40
+ * @param $event
41
+ * @param targetKey
42
+ */
39
43
  save(route: import("vue-router").RouteLocationNormalized): void;
40
44
  deleteTabs(key: string): void;
41
45
  setNavTitle(title: string, path: string): void;
@@ -46,14 +46,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
46
46
  keepAliveStore.save(route);
47
47
  }
48
48
  const onClick = (key) => {
49
- if (key !== route.path) {
50
- const rs = navTabs.value.filter((item) => item.path === key)[0];
51
- router.push({
52
- path: rs.path,
53
- query: rs.query,
54
- params: rs.params,
55
- fullPath: rs.fullPath
56
- });
49
+ if (key !== route.fullPath) {
50
+ const rs = navTabs.value.filter((item) => item.fullPath === key)[0];
51
+ router.push(rs);
57
52
  }
58
53
  };
59
54
  const onClose = ($event, key) => {
@@ -89,7 +84,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
89
84
  return vue.openBlock(), vue.createBlock(
90
85
  _component_a_tab_pane,
91
86
  {
92
- key: item.path
87
+ key: item.fullPath
93
88
  },
94
89
  {
95
90
  tab: vue.withCtx(() => [
@@ -1 +1 @@
1
- {"version":3,"file":"NavTabs.vue2.cjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useNavTabsStore, useKeepAliveStore } from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst { activeKey } = storeToRefs(navStore);\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n//当前被激活的标签 通过选中的菜单得到\nwatch(\n () => route.fullPath,\n (val) => {\n setNavTabs();\n activeKey.value = val;\n },\n {\n immediate: true\n }\n);\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 存储路由缓存\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param nav\n */\nconst onClick = (key: string) => {\n if (key !== route.path) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item: any) => item.path === key)[0];\n // 打开路由\n router.push({\n path: rs.path,\n query: rs.query,\n params: rs.params,\n fullPath: rs.fullPath\n } as any);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n //const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n // if (rs.name) {\n // keepAliveStore.deleteKeepAlive(rs.name);\n // }\n};\n\n/**\n * 是否显示标签关闭按钮函数\n * @param item\n * 根据item和当前 navTabs 长度来判断是否要隐藏关闭标签按钮\n */\nconst closeStatus = (item: any) => {\n // 如果meta有设置keepOpen或者当前打开的标签只有一个的话不显示关闭按钮\n if (item.meta?.keepOpen) {\n return false;\n } else {\n // 如果只有一个标签,则隐藏关闭按钮\n return navTabs.value.length !== 1;\n }\n};\n</script>\n<template>\n <div :class=\"baseClassName\">\n <a-tabs v-model:activeKey=\"activeKey\" type=\"card\" @tabClick=\"onClick\">\n <a-tab-pane v-for=\"item in navTabs\" :key=\"item.path\">\n <template #tab>\n <div class=\"tab-dividers\"></div>\n <div class=\"tab-item\" :class=\"{ active: activeKey === item.fullPath }\">\n {{ item.meta.title }}\n </div>\n <div v-if=\"closeStatus(item)\" class=\"tab-close\">\n <CloseOutlined @click=\"onClose($event, item.fullPath)\" />\n </div>\n </template>\n </a-tab-pane>\n </a-tabs>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":["useRoute","useRouter","useNavTabsStore","useKeepAliveStore","storeToRefs","prefixName","computed","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAaA,IAAA,MAAM,QAAQA,kBAAS,EAAA,CAAA;AACvB,IAAA,MAAM,SAASC,mBAAU,EAAA,CAAA;AAEzB,IAAA,MAAM,WAAWC,qBAAgB,EAAA,CAAA;AACjC,IAAA,MAAM,iBAAiBC,uBAAkB,EAAA,CAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAc,GAAAC,iBAAA,CAAY,QAAQ,CAAA,CAAA;AAE1C,IAAM,MAAA,aAAA,GAAgB,GAAGC,gBAAU,CAAA,IAAA,CAAA,CAAA;AAGnC,IAAA,MAAM,OAAsB,GAAAC,YAAA,CAAS,MAAM,QAAA,CAAS,OAAO,CAAA,CAAA;AAE3D,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,QAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAW,UAAA,EAAA,CAAA;AACX,QAAA,SAAA,CAAU,KAAQ,GAAA,GAAA,CAAA;AAAA,OACpB;AAAA,MACA;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,OACb;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,EAAA,CAAA;AAGX,IAAA,SAAS,UAAa,GAAA;AAEpB,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAEnB,MAAA,cAAA,CAAe,KAAK,KAAK,CAAA,CAAA;AAAA,KAC3B;AAMA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAI,IAAA,GAAA,KAAQ,MAAM,IAAM,EAAA;AAEtB,QAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,SAAc,IAAK,CAAA,IAAA,KAAS,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA;AAEnE,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,MAAM,EAAG,CAAA,IAAA;AAAA,UACT,OAAO,EAAG,CAAA,KAAA;AAAA,UACV,QAAQ,EAAG,CAAA,MAAA;AAAA,UACX,UAAU,EAAG,CAAA,QAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACV;AAAA,KACF,CAAA;AAOA,IAAM,MAAA,OAAA,GAAU,CAAC,MAAA,EAAa,GAAgB,KAAA;AAG5C,MAAA,MAAA,CAAO,eAAgB,EAAA,CAAA;AAEvB,MAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEvB,MAAO,MAAA,CAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,CAAC,EAAE,QAAQ,CAAA,CAAA;AAAA,KAM9D,CAAA;AAOA,IAAM,MAAA,WAAA,GAAc,CAAC,IAAc,KAAA;;AAEjC,MAAI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,QAAU,EAAA;AACvB,QAAO,OAAA,KAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAO,OAAA,OAAA,CAAQ,MAAM,MAAW,KAAA,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NavTabs.vue2.cjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useNavTabsStore, useKeepAliveStore } from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst { activeKey } = storeToRefs(navStore);\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n//当前被激活的标签 通过选中的菜单得到\nwatch(\n () => route.fullPath,\n (val) => {\n setNavTabs();\n activeKey.value = val;\n },\n {\n immediate: true\n }\n);\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 存储路由缓存\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param key\n */\nconst onClick = (key: string) => {\n if (key !== route.fullPath) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item) => item.fullPath === key)[0];\n router.push(rs);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n //const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n // if (rs.name) {\n // keepAliveStore.deleteKeepAlive(rs.name);\n // }\n};\n\n/**\n * 是否显示标签关闭按钮函数\n * @param item\n * 根据item和当前 navTabs 长度来判断是否要隐藏关闭标签按钮\n */\nconst closeStatus = (item: any) => {\n // 如果meta有设置keepOpen或者当前打开的标签只有一个的话不显示关闭按钮\n if (item.meta?.keepOpen) {\n return false;\n } else {\n // 如果只有一个标签,则隐藏关闭按钮\n return navTabs.value.length !== 1;\n }\n};\n</script>\n<template>\n <div :class=\"baseClassName\">\n <a-tabs v-model:activeKey=\"activeKey\" type=\"card\" @tabClick=\"onClick\">\n <a-tab-pane v-for=\"item in navTabs\" :key=\"item.fullPath\">\n <template #tab>\n <div class=\"tab-dividers\"></div>\n <div\n class=\"tab-item\"\n :class=\"{ active: activeKey === item.fullPath }\"\n >\n {{ item.meta.title }}\n </div>\n <div v-if=\"closeStatus(item)\" class=\"tab-close\">\n <CloseOutlined @click=\"onClose($event, item.fullPath)\" />\n </div>\n </template>\n </a-tab-pane>\n </a-tabs>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":["useRoute","useRouter","useNavTabsStore","useKeepAliveStore","storeToRefs","prefixName","computed","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAaA,IAAA,MAAM,QAAQA,kBAAS,EAAA,CAAA;AACvB,IAAA,MAAM,SAASC,mBAAU,EAAA,CAAA;AAEzB,IAAA,MAAM,WAAWC,qBAAgB,EAAA,CAAA;AACjC,IAAA,MAAM,iBAAiBC,uBAAkB,EAAA,CAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAc,GAAAC,iBAAA,CAAY,QAAQ,CAAA,CAAA;AAE1C,IAAM,MAAA,aAAA,GAAgB,GAAGC,gBAAU,CAAA,IAAA,CAAA,CAAA;AAGnC,IAAA,MAAM,OAAsB,GAAAC,YAAA,CAAS,MAAM,QAAA,CAAS,OAAO,CAAA,CAAA;AAE3D,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,QAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAW,UAAA,EAAA,CAAA;AACX,QAAA,SAAA,CAAU,KAAQ,GAAA,GAAA,CAAA;AAAA,OACpB;AAAA,MACA;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,OACb;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,EAAA,CAAA;AAGX,IAAA,SAAS,UAAa,GAAA;AAEpB,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAEnB,MAAA,cAAA,CAAe,KAAK,KAAK,CAAA,CAAA;AAAA,KAC3B;AAMA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAI,IAAA,GAAA,KAAQ,MAAM,QAAU,EAAA;AAE1B,QAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,SAAS,IAAK,CAAA,QAAA,KAAa,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA;AAClE,QAAA,MAAA,CAAO,KAAK,EAAE,CAAA,CAAA;AAAA,OAChB;AAAA,KACF,CAAA;AAOA,IAAM,MAAA,OAAA,GAAU,CAAC,MAAA,EAAa,GAAgB,KAAA;AAG5C,MAAA,MAAA,CAAO,eAAgB,EAAA,CAAA;AAEvB,MAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEvB,MAAO,MAAA,CAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,CAAC,EAAE,QAAQ,CAAA,CAAA;AAAA,KAM9D,CAAA;AAOA,IAAM,MAAA,WAAA,GAAc,CAAC,IAAc,KAAA;;AAEjC,MAAI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,QAAU,EAAA;AACvB,QAAO,OAAA,KAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAO,OAAA,OAAA,CAAQ,MAAM,MAAW,KAAA,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -35,7 +35,11 @@ declare const _default: import("vue").DefineComponent<{}, {
35
35
  activeKey: string;
36
36
  }>) => string;
37
37
  }, {
38
- setActiveKey(key: string): void;
38
+ setActiveKey(key: string): void; /**
39
+ * 关闭标签
40
+ * @param $event
41
+ * @param targetKey
42
+ */
39
43
  save(route: import("vue-router").RouteLocationNormalized): void;
40
44
  deleteTabs(key: string): void;
41
45
  setNavTitle(title: string, path: string): void;
@@ -42,14 +42,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
42
42
  keepAliveStore.save(route);
43
43
  }
44
44
  const onClick = (key) => {
45
- if (key !== route.path) {
46
- const rs = navTabs.value.filter((item) => item.path === key)[0];
47
- router.push({
48
- path: rs.path,
49
- query: rs.query,
50
- params: rs.params,
51
- fullPath: rs.fullPath
52
- });
45
+ if (key !== route.fullPath) {
46
+ const rs = navTabs.value.filter((item) => item.fullPath === key)[0];
47
+ router.push(rs);
53
48
  }
54
49
  };
55
50
  const onClose = ($event, key) => {
@@ -85,7 +80,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
85
80
  return openBlock(), createBlock(
86
81
  _component_a_tab_pane,
87
82
  {
88
- key: item.path
83
+ key: item.fullPath
89
84
  },
90
85
  {
91
86
  tab: withCtx(() => [
@@ -1 +1 @@
1
- {"version":3,"file":"NavTabs.vue2.mjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useNavTabsStore, useKeepAliveStore } from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst { activeKey } = storeToRefs(navStore);\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n//当前被激活的标签 通过选中的菜单得到\nwatch(\n () => route.fullPath,\n (val) => {\n setNavTabs();\n activeKey.value = val;\n },\n {\n immediate: true\n }\n);\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 存储路由缓存\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param nav\n */\nconst onClick = (key: string) => {\n if (key !== route.path) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item: any) => item.path === key)[0];\n // 打开路由\n router.push({\n path: rs.path,\n query: rs.query,\n params: rs.params,\n fullPath: rs.fullPath\n } as any);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n //const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n // if (rs.name) {\n // keepAliveStore.deleteKeepAlive(rs.name);\n // }\n};\n\n/**\n * 是否显示标签关闭按钮函数\n * @param item\n * 根据item和当前 navTabs 长度来判断是否要隐藏关闭标签按钮\n */\nconst closeStatus = (item: any) => {\n // 如果meta有设置keepOpen或者当前打开的标签只有一个的话不显示关闭按钮\n if (item.meta?.keepOpen) {\n return false;\n } else {\n // 如果只有一个标签,则隐藏关闭按钮\n return navTabs.value.length !== 1;\n }\n};\n</script>\n<template>\n <div :class=\"baseClassName\">\n <a-tabs v-model:activeKey=\"activeKey\" type=\"card\" @tabClick=\"onClick\">\n <a-tab-pane v-for=\"item in navTabs\" :key=\"item.path\">\n <template #tab>\n <div class=\"tab-dividers\"></div>\n <div class=\"tab-item\" :class=\"{ active: activeKey === item.fullPath }\">\n {{ item.meta.title }}\n </div>\n <div v-if=\"closeStatus(item)\" class=\"tab-close\">\n <CloseOutlined @click=\"onClose($event, item.fullPath)\" />\n </div>\n </template>\n </a-tab-pane>\n </a-tabs>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AAEzB,IAAA,MAAM,WAAW,eAAgB,EAAA,CAAA;AACjC,IAAA,MAAM,iBAAiB,iBAAkB,EAAA,CAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAc,GAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AAE1C,IAAM,MAAA,aAAA,GAAgB,GAAG,UAAU,CAAA,IAAA,CAAA,CAAA;AAGnC,IAAA,MAAM,OAAsB,GAAA,QAAA,CAAS,MAAM,QAAA,CAAS,OAAO,CAAA,CAAA;AAE3D,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,QAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAW,UAAA,EAAA,CAAA;AACX,QAAA,SAAA,CAAU,KAAQ,GAAA,GAAA,CAAA;AAAA,OACpB;AAAA,MACA;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,OACb;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,EAAA,CAAA;AAGX,IAAA,SAAS,UAAa,GAAA;AAEpB,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAEnB,MAAA,cAAA,CAAe,KAAK,KAAK,CAAA,CAAA;AAAA,KAC3B;AAMA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAI,IAAA,GAAA,KAAQ,MAAM,IAAM,EAAA;AAEtB,QAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,SAAc,IAAK,CAAA,IAAA,KAAS,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA;AAEnE,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,MAAM,EAAG,CAAA,IAAA;AAAA,UACT,OAAO,EAAG,CAAA,KAAA;AAAA,UACV,QAAQ,EAAG,CAAA,MAAA;AAAA,UACX,UAAU,EAAG,CAAA,QAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACV;AAAA,KACF,CAAA;AAOA,IAAM,MAAA,OAAA,GAAU,CAAC,MAAA,EAAa,GAAgB,KAAA;AAG5C,MAAA,MAAA,CAAO,eAAgB,EAAA,CAAA;AAEvB,MAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEvB,MAAO,MAAA,CAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,CAAC,EAAE,QAAQ,CAAA,CAAA;AAAA,KAM9D,CAAA;AAOA,IAAM,MAAA,WAAA,GAAc,CAAC,IAAc,KAAA;;AAEjC,MAAI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,QAAU,EAAA;AACvB,QAAO,OAAA,KAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAO,OAAA,OAAA,CAAQ,MAAM,MAAW,KAAA,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NavTabs.vue2.mjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useNavTabsStore, useKeepAliveStore } from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst { activeKey } = storeToRefs(navStore);\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n//当前被激活的标签 通过选中的菜单得到\nwatch(\n () => route.fullPath,\n (val) => {\n setNavTabs();\n activeKey.value = val;\n },\n {\n immediate: true\n }\n);\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 存储路由缓存\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param key\n */\nconst onClick = (key: string) => {\n if (key !== route.fullPath) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item) => item.fullPath === key)[0];\n router.push(rs);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n //const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n // if (rs.name) {\n // keepAliveStore.deleteKeepAlive(rs.name);\n // }\n};\n\n/**\n * 是否显示标签关闭按钮函数\n * @param item\n * 根据item和当前 navTabs 长度来判断是否要隐藏关闭标签按钮\n */\nconst closeStatus = (item: any) => {\n // 如果meta有设置keepOpen或者当前打开的标签只有一个的话不显示关闭按钮\n if (item.meta?.keepOpen) {\n return false;\n } else {\n // 如果只有一个标签,则隐藏关闭按钮\n return navTabs.value.length !== 1;\n }\n};\n</script>\n<template>\n <div :class=\"baseClassName\">\n <a-tabs v-model:activeKey=\"activeKey\" type=\"card\" @tabClick=\"onClick\">\n <a-tab-pane v-for=\"item in navTabs\" :key=\"item.fullPath\">\n <template #tab>\n <div class=\"tab-dividers\"></div>\n <div\n class=\"tab-item\"\n :class=\"{ active: activeKey === item.fullPath }\"\n >\n {{ item.meta.title }}\n </div>\n <div v-if=\"closeStatus(item)\" class=\"tab-close\">\n <CloseOutlined @click=\"onClose($event, item.fullPath)\" />\n </div>\n </template>\n </a-tab-pane>\n </a-tabs>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AAEzB,IAAA,MAAM,WAAW,eAAgB,EAAA,CAAA;AACjC,IAAA,MAAM,iBAAiB,iBAAkB,EAAA,CAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAc,GAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AAE1C,IAAM,MAAA,aAAA,GAAgB,GAAG,UAAU,CAAA,IAAA,CAAA,CAAA;AAGnC,IAAA,MAAM,OAAsB,GAAA,QAAA,CAAS,MAAM,QAAA,CAAS,OAAO,CAAA,CAAA;AAE3D,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,QAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAW,UAAA,EAAA,CAAA;AACX,QAAA,SAAA,CAAU,KAAQ,GAAA,GAAA,CAAA;AAAA,OACpB;AAAA,MACA;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,OACb;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,EAAA,CAAA;AAGX,IAAA,SAAS,UAAa,GAAA;AAEpB,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAEnB,MAAA,cAAA,CAAe,KAAK,KAAK,CAAA,CAAA;AAAA,KAC3B;AAMA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAI,IAAA,GAAA,KAAQ,MAAM,QAAU,EAAA;AAE1B,QAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,SAAS,IAAK,CAAA,QAAA,KAAa,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA;AAClE,QAAA,MAAA,CAAO,KAAK,EAAE,CAAA,CAAA;AAAA,OAChB;AAAA,KACF,CAAA;AAOA,IAAM,MAAA,OAAA,GAAU,CAAC,MAAA,EAAa,GAAgB,KAAA;AAG5C,MAAA,MAAA,CAAO,eAAgB,EAAA,CAAA;AAEvB,MAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEvB,MAAO,MAAA,CAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,CAAC,EAAE,QAAQ,CAAA,CAAA;AAAA,KAM9D,CAAA;AAOA,IAAM,MAAA,WAAA,GAAc,CAAC,IAAc,KAAA;;AAEjC,MAAI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,QAAU,EAAA;AACvB,QAAO,OAAA,KAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAO,OAAA,OAAA,CAAQ,MAAM,MAAW,KAAA,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "1.1.54",
3
+ "version": "1.1.55",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "",