@ditari/bsui 5.0.8 → 5.0.10

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.
Files changed (28) hide show
  1. package/dist/cjs/components/date/RangePicker.vue2.cjs +53 -24
  2. package/dist/cjs/components/date/RangePicker.vue2.cjs.map +1 -1
  3. package/dist/cjs/components/layout/components/layout/ThemeApp.vue2.cjs +40 -16
  4. package/dist/cjs/components/layout/components/layout/ThemeApp.vue2.cjs.map +1 -1
  5. package/dist/cjs/components/layout/components/menu/Menu.cjs +11 -8
  6. package/dist/cjs/components/layout/components/menu/Menu.cjs.map +1 -1
  7. package/dist/cjs/components/layout/components/settings/SettingDrawer.cjs +11 -3
  8. package/dist/cjs/components/layout/components/settings/SettingDrawer.cjs.map +1 -1
  9. package/dist/cjs/components/tab/Tab.vue2.cjs +0 -1
  10. package/dist/cjs/components/tab/Tab.vue2.cjs.map +1 -1
  11. package/dist/esm/components/date/RangePicker.vue2.mjs +53 -24
  12. package/dist/esm/components/date/RangePicker.vue2.mjs.map +1 -1
  13. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs +40 -16
  14. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs.map +1 -1
  15. package/dist/esm/components/layout/components/menu/Menu.mjs +11 -8
  16. package/dist/esm/components/layout/components/menu/Menu.mjs.map +1 -1
  17. package/dist/esm/components/layout/components/settings/SettingDrawer.mjs +11 -3
  18. package/dist/esm/components/layout/components/settings/SettingDrawer.mjs.map +1 -1
  19. package/dist/esm/components/tab/Tab.vue2.mjs +0 -1
  20. package/dist/esm/components/tab/Tab.vue2.mjs.map +1 -1
  21. package/dist/types/components/date/RangePicker.vue.d.ts +9 -6
  22. package/dist/types/components/date/RangePicker.vue.d.ts.map +1 -1
  23. package/dist/types/components/layout/components/layout/ThemeApp.vue.d.ts +17 -2
  24. package/dist/types/components/layout/components/layout/ThemeApp.vue.d.ts.map +1 -1
  25. package/dist/types/components/layout/components/menu/Menu.d.ts.map +1 -1
  26. package/dist/types/components/layout/components/settings/SettingDrawer.d.ts.map +1 -1
  27. package/dist/types/components/tab/Tab.vue.d.ts.map +1 -1
  28. package/package.json +3 -3
@@ -7,8 +7,6 @@ var dayjs_min = require('../../_virtual/dayjs.min.cjs');
7
7
 
8
8
  "use strict";
9
9
  var __defProp = Object.defineProperty;
10
- var __defProps = Object.defineProperties;
11
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
12
10
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
13
11
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14
12
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -24,28 +22,57 @@ var __spreadValues = (a, b) => {
24
22
  }
25
23
  return a;
26
24
  };
27
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
28
25
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
29
26
  __name: "RangePicker",
30
27
  props: {
31
28
  value: { type: Object, required: true, default: () => ({}) },
32
- startField: { type: String, required: false, default: "startTime" },
33
- endField: { type: String, required: false, default: "endTime" },
29
+ startField: { type: [String, Array], required: false, default: "startTime" },
30
+ endField: { type: [String, Array], required: false, default: "endTime" },
34
31
  format: { type: String, required: false, default: "YYYY-MM-DD" }
35
32
  },
36
33
  emits: ["update:value", "change"],
37
34
  setup(__props, { emit: __emit }) {
35
+ const normalizePath = (field) => {
36
+ return Array.isArray(field) ? field : [field];
37
+ };
38
+ const getNestedValue = (obj, field) => {
39
+ const path = normalizePath(field);
40
+ let current = obj;
41
+ for (const key of path) {
42
+ if (current && typeof current === "object" && key in current) {
43
+ current = current[key];
44
+ } else {
45
+ return void 0;
46
+ }
47
+ }
48
+ return current;
49
+ };
50
+ const setNestedValue = (obj, field, value) => {
51
+ const path = normalizePath(field);
52
+ const newObj = __spreadValues({}, obj);
53
+ let current = newObj;
54
+ for (let i = 0; i < path.length - 1; i++) {
55
+ const key = path[i];
56
+ if (!(key in current) || typeof current[key] !== "object" || current[key] === null) {
57
+ current[key] = {};
58
+ } else {
59
+ current[key] = __spreadValues({}, current[key]);
60
+ }
61
+ current = current[key];
62
+ }
63
+ current[path[path.length - 1]] = value;
64
+ return newObj;
65
+ };
38
66
  const props = __props;
39
67
  const emits = __emit;
40
68
  const innerValue = vue.ref(null);
41
69
  vue.watch(
42
70
  () => props.value,
43
71
  (newVal) => {
44
- if (newVal[props.startField] && newVal[props.endField]) {
45
- innerValue.value = [
46
- dayjs_min.default(newVal[props.startField]),
47
- dayjs_min.default(newVal[props.endField])
48
- ];
72
+ const start = getNestedValue(newVal, props.startField);
73
+ const end = getNestedValue(newVal, props.endField);
74
+ if (start && end) {
75
+ innerValue.value = [dayjs_min.default(start), dayjs_min.default(end)];
49
76
  } else {
50
77
  innerValue.value = null;
51
78
  }
@@ -53,24 +80,26 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
53
80
  { immediate: true, deep: true }
54
81
  );
55
82
  const handleChange = (dates) => {
83
+ var _a, _b;
84
+ let updatedValue = __spreadValues({}, props.value);
56
85
  if (dates && dates.length === 2) {
57
86
  const [startTime, endTime] = dates;
58
- const formattedValue = __spreadProps(__spreadValues({}, props.value), {
59
- // 保留原对象的所有属性
60
- [props.startField]: startTime ? startTime.format(props.format) : null,
61
- [props.endField]: endTime ? endTime.format(props.format) : null
62
- });
63
- emits("update:value", formattedValue);
64
- emits("change", formattedValue);
87
+ updatedValue = setNestedValue(
88
+ updatedValue,
89
+ props.startField,
90
+ (_a = startTime == null ? void 0 : startTime.format(props.format)) != null ? _a : null
91
+ );
92
+ updatedValue = setNestedValue(
93
+ updatedValue,
94
+ props.endField,
95
+ (_b = endTime == null ? void 0 : endTime.format(props.format)) != null ? _b : null
96
+ );
65
97
  } else {
66
- const formattedValue = __spreadProps(__spreadValues({}, props.value), {
67
- // 保留原对象的所有属性
68
- [props.startField]: null,
69
- [props.endField]: null
70
- });
71
- emits("update:value", formattedValue);
72
- emits("change", formattedValue);
98
+ updatedValue = setNestedValue(updatedValue, props.startField, null);
99
+ updatedValue = setNestedValue(updatedValue, props.endField, null);
73
100
  }
101
+ emits("update:value", updatedValue);
102
+ emits("change", updatedValue);
74
103
  };
75
104
  return (_ctx, _cache) => {
76
105
  const _component_a_range_picker = vue.resolveComponent("a-range-picker");
@@ -1 +1 @@
1
- {"version":3,"file":"RangePicker.vue2.cjs","sources":["../../../../src/components/date/RangePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, watch } from \"vue\";\r\n\r\nimport type { RangeValue } from \"ant-design-vue/es/vc-picker/interface\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport dayjs from \"dayjs\";\r\n\r\n// 定义 props 类型\r\ninterface Props {\r\n value: Record<string, unknown>; // 使用 any 以兼容任意字段\r\n startField?: string;\r\n endField?: string;\r\n format?: string;\r\n}\r\n\r\nconst props = defineProps({\n value: { type: Object, required: true, default: () => ({}) },\n startField: { type: String, required: false, default: \"startTime\" },\n endField: { type: String, required: false, default: \"endTime\" },\n format: { type: String, required: false, default: \"YYYY-MM-DD\" }\n});\r\n\r\n// 定义 emits 类型\r\nconst emits = defineEmits([\"update:value\", \"change\"]);\r\n\r\n// 定义 innerValue 的类型为 RangeValue<Dayjs>\r\nconst innerValue = ref<RangeValue<Dayjs>>(null);\r\n\r\n// 监听外部 value 变化,更新内部值\r\nwatch(\r\n () => props.value,\r\n newVal => {\r\n if (newVal[props.startField] && newVal[props.endField]) {\r\n innerValue.value = [\r\n dayjs(newVal[props.startField] as string),\r\n dayjs(newVal[props.endField] as string)\r\n ];\r\n } else {\r\n innerValue.value = null;\r\n }\r\n },\r\n { immediate: true, deep: true }\r\n);\r\n\r\n// 处理日期变化\r\nconst handleChange = (dates: RangeValue<Dayjs>) => {\r\n if (dates && dates.length === 2) {\r\n const [startTime, endTime] = dates;\r\n\r\n // 创建一个新对象,保留原 params 的其他属性\r\n const formattedValue = {\r\n ...props.value, // 保留原对象的所有属性\r\n [props.startField]: startTime ? startTime.format(props.format) : null,\r\n [props.endField]: endTime ? endTime.format(props.format) : null\r\n };\r\n\r\n emits(\"update:value\", formattedValue);\r\n emits(\"change\", formattedValue);\r\n } else {\r\n // 如果日期为空,则清空 startField 和 endField\r\n const formattedValue = {\r\n ...props.value, // 保留原对象的所有属性\r\n [props.startField]: null,\r\n [props.endField]: null\r\n };\r\n\r\n emits(\"update:value\", formattedValue);\r\n emits(\"change\", formattedValue);\r\n }\r\n};\r\n</script>\r\n\r\n<template>\r\n <a-range-picker\r\n style=\"width: 100%\"\r\n v-model:value=\"innerValue\"\r\n :placeholder=\"['开始时间', '结束时间']\"\r\n @change=\"handleChange\"\r\n />\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["ref","watch","dayjs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAGd,IAAM,MAAA,UAAA,GAAaA,QAAuB,IAAI,CAAA;AAG9C,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,KAAA;AAAA,MACZ,CAAU,MAAA,KAAA;AACR,QAAA,IAAI,OAAO,KAAM,CAAA,UAAU,KAAK,MAAO,CAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AACtD,UAAA,UAAA,CAAW,KAAQ,GAAA;AAAA,YACjBC,iBAAM,CAAA,MAAA,CAAO,KAAM,CAAA,UAAU,CAAW,CAAA;AAAA,YACxCA,iBAAM,CAAA,MAAA,CAAO,KAAM,CAAA,QAAQ,CAAW;AAAA,WACxC;AAAA,SACK,MAAA;AACL,UAAA,UAAA,CAAW,KAAQ,GAAA,IAAA;AAAA;AACrB,OACF;AAAA,MACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK;AAAA,KAChC;AAGA,IAAM,MAAA,YAAA,GAAe,CAAC,KAA6B,KAAA;AACjD,MAAI,IAAA,KAAA,IAAS,KAAM,CAAA,MAAA,KAAW,CAAG,EAAA;AAC/B,QAAM,MAAA,CAAC,SAAW,EAAA,OAAO,CAAI,GAAA,KAAA;AAG7B,QAAM,MAAA,cAAA,GAAiB,aAClB,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAM,KADY,CAAA,EAAA;AAAA;AAAA,UAErB,CAAC,MAAM,UAAU,GAAG,YAAY,SAAU,CAAA,MAAA,CAAO,KAAM,CAAA,MAAM,CAAI,GAAA,IAAA;AAAA,UACjE,CAAC,MAAM,QAAQ,GAAG,UAAU,OAAQ,CAAA,MAAA,CAAO,KAAM,CAAA,MAAM,CAAI,GAAA;AAAA,SAC7D,CAAA;AAEA,QAAA,KAAA,CAAM,gBAAgB,cAAc,CAAA;AACpC,QAAA,KAAA,CAAM,UAAU,cAAc,CAAA;AAAA,OACzB,MAAA;AAEL,QAAM,MAAA,cAAA,GAAiB,aAClB,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAM,KADY,CAAA,EAAA;AAAA;AAAA,UAErB,CAAC,KAAM,CAAA,UAAU,GAAG,IAAA;AAAA,UACpB,CAAC,KAAM,CAAA,QAAQ,GAAG;AAAA,SACpB,CAAA;AAEA,QAAA,KAAA,CAAM,gBAAgB,cAAc,CAAA;AACpC,QAAA,KAAA,CAAM,UAAU,cAAc,CAAA;AAAA;AAChC,KACF;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"RangePicker.vue2.cjs","sources":["../../../../src/components/date/RangePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, watch } from \"vue\";\r\n\r\nimport type { RangeValue } from \"ant-design-vue/es/vc-picker/interface\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport dayjs from \"dayjs\";\r\n\r\n// 工具函数:规范化路径\r\nconst normalizePath = (field: string | string[]): string[] => {\r\n return Array.isArray(field) ? field : [field];\r\n};\r\n\r\n// 工具函数:获取嵌套值\r\nconst getNestedValue = <T extends Record<string, unknown>>(\r\n obj: T,\r\n field: string | string[]\r\n): string | null | undefined => {\r\n const path = normalizePath(field);\r\n let current: unknown = obj;\r\n\r\n for (const key of path) {\r\n if (current && typeof current === \"object\" && key in current) {\r\n current = (current as Record<string, unknown>)[key];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return current as string | null | undefined;\r\n};\r\n\r\n// 工具函数:设置嵌套值\r\nconst setNestedValue = <T extends Record<string, unknown>>(\r\n obj: T,\r\n field: string | string[],\r\n value: string | null\r\n): T => {\r\n const path = normalizePath(field);\r\n const newObj = { ...obj };\r\n let current: Record<string, unknown> = newObj;\r\n\r\n for (let i = 0; i < path.length - 1; i++) {\r\n const key = path[i];\r\n if (\r\n !(key in current) ||\r\n typeof current[key] !== \"object\" ||\r\n current[key] === null\r\n ) {\r\n current[key] = {};\r\n } else {\r\n current[key] = { ...current[key] };\r\n }\r\n current = current[key] as Record<string, unknown>;\r\n }\r\n\r\n current[path[path.length - 1]] = value;\r\n return newObj as T;\r\n};\r\n\r\n// 定义 props 类型\r\ninterface Props {\r\n value: Record<string, unknown>;\r\n startField?: string | string[];\r\n endField?: string | string[];\r\n format?: string;\r\n}\r\n\r\nconst props = defineProps({\n value: { type: Object, required: true, default: () => ({}) },\n startField: { type: [String, Array], required: false, default: \"startTime\" },\n endField: { type: [String, Array], required: false, default: \"endTime\" },\n format: { type: String, required: false, default: \"YYYY-MM-DD\" }\n});\r\n\r\n// 定义 emits 类型\r\nconst emits = defineEmits([\"update:value\", \"change\"]);\r\n\r\n// 内部值,用于日期选择器\r\nconst innerValue = ref<RangeValue<Dayjs>>(null);\r\n\r\n// 监听外部 value 变化,同步内部值\r\nwatch(\r\n () => props.value,\r\n newVal => {\r\n const start = getNestedValue(newVal, props.startField);\r\n const end = getNestedValue(newVal, props.endField);\r\n\r\n if (start && end) {\r\n innerValue.value = [dayjs(start), dayjs(end)];\r\n } else {\r\n innerValue.value = null;\r\n }\r\n },\r\n { immediate: true, deep: true }\r\n);\r\n\r\n// 处理日期变化\r\nconst handleChange = (dates: RangeValue<Dayjs>) => {\r\n let updatedValue = { ...props.value };\r\n\r\n if (dates && dates.length === 2) {\r\n const [startTime, endTime] = dates;\r\n updatedValue = setNestedValue(\r\n updatedValue,\r\n props.startField,\r\n startTime?.format(props.format) ?? null\r\n );\r\n updatedValue = setNestedValue(\r\n updatedValue,\r\n props.endField,\r\n endTime?.format(props.format) ?? null\r\n );\r\n } else {\r\n updatedValue = setNestedValue(updatedValue, props.startField, null);\r\n updatedValue = setNestedValue(updatedValue, props.endField, null);\r\n }\r\n\r\n emits(\"update:value\", updatedValue);\r\n emits(\"change\", updatedValue);\r\n};\r\n</script>\r\n\r\n<template>\r\n <a-range-picker\r\n style=\"width: 100%\"\r\n v-model:value=\"innerValue\"\r\n :placeholder=\"['开始时间', '结束时间']\"\r\n @change=\"handleChange\"\r\n />\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["ref","watch","dayjs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAM,MAAA,aAAA,GAAgB,CAAC,KAAuC,KAAA;AAC5D,MAAA,OAAO,MAAM,OAAQ,CAAA,KAAK,CAAI,GAAA,KAAA,GAAQ,CAAC,KAAK,CAAA;AAAA,KAC9C;AAGA,IAAM,MAAA,cAAA,GAAiB,CACrB,GAAA,EACA,KAC8B,KAAA;AAC9B,MAAM,MAAA,IAAA,GAAO,cAAc,KAAK,CAAA;AAChC,MAAA,IAAI,OAAmB,GAAA,GAAA;AAEvB,MAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,QAAA,IAAI,OAAW,IAAA,OAAO,OAAY,KAAA,QAAA,IAAY,OAAO,OAAS,EAAA;AAC5D,UAAA,OAAA,GAAW,QAAoC,GAAG,CAAA;AAAA,SAC7C,MAAA;AACL,UAAO,OAAA,KAAA,CAAA;AAAA;AACT;AAEF,MAAO,OAAA,OAAA;AAAA,KACT;AAGA,IAAA,MAAM,cAAiB,GAAA,CACrB,GACA,EAAA,KAAA,EACA,KACM,KAAA;AACN,MAAM,MAAA,IAAA,GAAO,cAAc,KAAK,CAAA;AAChC,MAAA,MAAM,SAAS,cAAK,CAAA,EAAA,EAAA,GAAA,CAAA;AACpB,MAAA,IAAI,OAAmC,GAAA,MAAA;AAEvC,MAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,IAAK,CAAA,MAAA,GAAS,GAAG,CAAK,EAAA,EAAA;AACxC,QAAM,MAAA,GAAA,GAAM,KAAK,CAAC,CAAA;AAClB,QACE,IAAA,EAAE,GAAO,IAAA,OAAA,CAAA,IACT,OAAO,OAAA,CAAQ,GAAG,CAAA,KAAM,QACxB,IAAA,OAAA,CAAQ,GAAG,CAAA,KAAM,IACjB,EAAA;AACA,UAAQ,OAAA,CAAA,GAAG,IAAI,EAAC;AAAA,SACX,MAAA;AACL,UAAA,OAAA,CAAQ,GAAG,CAAA,GAAI,cAAK,CAAA,EAAA,EAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAAA;AAEjC,QAAA,OAAA,GAAU,QAAQ,GAAG,CAAA;AAAA;AAGvB,MAAA,OAAA,CAAQ,IAAK,CAAA,IAAA,CAAK,MAAS,GAAA,CAAC,CAAC,CAAI,GAAA,KAAA;AACjC,MAAO,OAAA,MAAA;AAAA,KACT;AAUA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAGd,IAAM,MAAA,UAAA,GAAaA,QAAuB,IAAI,CAAA;AAG9C,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,KAAA;AAAA,MACZ,CAAU,MAAA,KAAA;AACR,QAAA,MAAM,KAAQ,GAAA,cAAA,CAAe,MAAQ,EAAA,KAAA,CAAM,UAAU,CAAA;AACrD,QAAA,MAAM,GAAM,GAAA,cAAA,CAAe,MAAQ,EAAA,KAAA,CAAM,QAAQ,CAAA;AAEjD,QAAA,IAAI,SAAS,GAAK,EAAA;AAChB,UAAA,UAAA,CAAW,QAAQ,CAACC,iBAAA,CAAM,KAAK,CAAG,EAAAA,iBAAA,CAAM,GAAG,CAAC,CAAA;AAAA,SACvC,MAAA;AACL,UAAA,UAAA,CAAW,KAAQ,GAAA,IAAA;AAAA;AACrB,OACF;AAAA,MACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK;AAAA,KAChC;AAGA,IAAM,MAAA,YAAA,GAAe,CAAC,KAA6B,KAAA;;AACjD,MAAI,IAAA,YAAA,GAAe,mBAAK,KAAM,CAAA,KAAA,CAAA;AAE9B,MAAI,IAAA,KAAA,IAAS,KAAM,CAAA,MAAA,KAAW,CAAG,EAAA;AAC/B,QAAM,MAAA,CAAC,SAAW,EAAA,OAAO,CAAI,GAAA,KAAA;AAC7B,QAAe,YAAA,GAAA,cAAA;AAAA,UACb,YAAA;AAAA,UACA,KAAM,CAAA,UAAA;AAAA,UAAA,CACN,EAAW,GAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,MAAA,CAAO,KAAM,CAAA,MAAA,CAAA,KAAxB,IAAmC,GAAA,EAAA,GAAA;AAAA,SACrC;AACA,QAAe,YAAA,GAAA,cAAA;AAAA,UACb,YAAA;AAAA,UACA,KAAM,CAAA,QAAA;AAAA,UAAA,CACN,EAAS,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,MAAA,CAAO,KAAM,CAAA,MAAA,CAAA,KAAtB,IAAiC,GAAA,EAAA,GAAA;AAAA,SACnC;AAAA,OACK,MAAA;AACL,QAAA,YAAA,GAAe,cAAe,CAAA,YAAA,EAAc,KAAM,CAAA,UAAA,EAAY,IAAI,CAAA;AAClE,QAAA,YAAA,GAAe,cAAe,CAAA,YAAA,EAAc,KAAM,CAAA,QAAA,EAAU,IAAI,CAAA;AAAA;AAGlE,MAAA,KAAA,CAAM,gBAAgB,YAAY,CAAA;AAClC,MAAA,KAAA,CAAM,UAAU,YAAY,CAAA;AAAA,KAC9B;;;;;;;;;;;;;;;;"}
@@ -10,31 +10,55 @@ var store = require('@ditari/store');
10
10
  "use strict";
11
11
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
12
12
  __name: "ThemeApp",
13
+ props: {
14
+ themeJson: { type: Object, required: false, default: () => ({}) }
15
+ },
13
16
  setup(__props) {
17
+ const props = __props;
14
18
  const { appTheme } = useTheme();
15
19
  function useTheme() {
16
- const { modeConfig } = pinia.storeToRefs(store.useAppStore());
20
+ const { modeConfig, isCompact } = pinia.storeToRefs(store.useAppStore());
17
21
  const appTheme2 = vue.ref({});
18
22
  vue.watch(
19
23
  () => modeConfig.value.mode,
20
- (val) => {
21
- if (val === "os") {
22
- const isDarkMode = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
23
- if (isDarkMode) {
24
- appTheme2.value.algorithm = antDesignVue.theme.darkAlgorithm;
25
- } else {
26
- appTheme2.value.algorithm = antDesignVue.theme.defaultAlgorithm;
27
- }
28
- } else if (val === "light") {
29
- appTheme2.value.algorithm = antDesignVue.theme.defaultAlgorithm;
30
- } else if (val === "dark") {
31
- appTheme2.value.algorithm = antDesignVue.theme.darkAlgorithm;
32
- } else {
33
- appTheme2.value.algorithm = antDesignVue.theme.defaultAlgorithm;
34
- }
24
+ () => {
25
+ handleTheme();
35
26
  },
36
27
  { immediate: true }
37
28
  );
29
+ vue.watch(
30
+ () => isCompact.value,
31
+ () => {
32
+ handleTheme();
33
+ }
34
+ );
35
+ function handleTheme() {
36
+ const isDarkMode = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
37
+ switch (modeConfig.value.mode) {
38
+ case "light":
39
+ if (isCompact.value) {
40
+ appTheme2.value.algorithm = antDesignVue.theme.compactAlgorithm;
41
+ appTheme2.value.token = {};
42
+ } else {
43
+ appTheme2.value.algorithm = antDesignVue.theme.defaultAlgorithm;
44
+ appTheme2.value.token = {};
45
+ }
46
+ break;
47
+ case "dark":
48
+ if (isCompact.value) {
49
+ appTheme2.value.token = props.themeJson;
50
+ } else {
51
+ appTheme2.value.algorithm = antDesignVue.theme.darkAlgorithm;
52
+ appTheme2.value.token = {};
53
+ }
54
+ break;
55
+ case "os":
56
+ if (isCompact.value && isDarkMode) {
57
+ appTheme2.value.token = props.themeJson;
58
+ }
59
+ break;
60
+ }
61
+ }
38
62
  return {
39
63
  appTheme: appTheme2
40
64
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeApp.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Ref, ref, watch } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore } from \"@ditari/store\";\r\n\r\nconst { appTheme } = useTheme();\r\n\r\nfunction useTheme(): { appTheme: Ref<unknown> } {\r\n const { modeConfig } = storeToRefs(useAppStore());\r\n const appTheme = ref<Record<string, unknown>>({});\r\n\r\n watch(\r\n () => modeConfig.value.mode,\r\n (val: string) => {\r\n if (val === \"os\") {\r\n const isDarkMode =\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n if (isDarkMode) {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n }\r\n } else if (val === \"light\") {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n } else if (val === \"dark\") {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n }\r\n },\r\n { immediate: true }\r\n );\r\n\r\n return {\r\n appTheme\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-config-provider :theme=\"appTheme\">\r\n <slot></slot>\r\n </a-config-provider>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["storeToRefs","useAppStore","appTheme","ref","watch","theme"],"mappings":";;;;;;;;;;;;;AAOA,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,QAAS,EAAA;AAE9B,IAAA,SAAS,QAAuC,GAAA;AAC9C,MAAA,MAAM,EAAE,UAAA,EAAe,GAAAA,iBAAA,CAAYC,mBAAa,CAAA;AAChD,MAAMC,MAAAA,SAAAA,GAAWC,OAA6B,CAAA,EAAE,CAAA;AAEhD,MAAAC,SAAA;AAAA,QACE,MAAM,WAAW,KAAM,CAAA,IAAA;AAAA,QACvB,CAAC,GAAgB,KAAA;AACf,UAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,YAAA,MAAM,aACJ,MAAO,CAAA,UAAA,IACP,MAAO,CAAA,UAAA,CAAW,8BAA8B,CAAE,CAAA,OAAA;AACpD,YAAA,IAAI,UAAY,EAAA;AACd,cAAAF,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,aAAA;AAAA,aAC5B,MAAA;AACL,cAAAH,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,gBAAA;AAAA;AACnC,WACF,MAAA,IAAW,QAAQ,OAAS,EAAA;AAC1B,YAAAH,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,gBAAA;AAAA,WACnC,MAAA,IAAW,QAAQ,MAAQ,EAAA;AACzB,YAAAH,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,aAAA;AAAA,WAC5B,MAAA;AACL,YAAAH,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,gBAAA;AAAA;AACnC,SACF;AAAA,QACA,EAAE,WAAW,IAAK;AAAA,OACpB;AAEA,MAAO,OAAA;AAAA,QACL,QAAAH,EAAAA;AAAA,OACF;AAAA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ThemeApp.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Ref, ref, watch } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore } from \"@ditari/store\";\r\n\r\nconst props = defineProps({\n themeJson: { type: Object, required: false, default: () => ({}) }\n});\r\n\r\nconst { appTheme } = useTheme();\r\n\r\nfunction useTheme(): { appTheme: Ref<unknown> } {\r\n const { modeConfig, isCompact } = storeToRefs(useAppStore());\r\n const appTheme = ref<Record<string, unknown>>({});\r\n\r\n watch(\r\n () => modeConfig.value.mode,\r\n () => {\r\n handleTheme();\r\n },\r\n { immediate: true }\r\n );\r\n\r\n watch(\r\n () => isCompact.value,\r\n () => {\r\n handleTheme();\r\n }\r\n );\r\n\r\n function handleTheme() {\r\n const isDarkMode =\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n switch (modeConfig.value.mode) {\r\n case \"light\":\r\n if (isCompact.value) {\r\n appTheme.value.algorithm = theme.compactAlgorithm;\r\n appTheme.value.token = {};\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"dark\":\r\n if (isCompact.value) {\r\n appTheme.value.token = props.themeJson;\r\n } else {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"os\":\r\n if (isCompact.value && isDarkMode) {\r\n appTheme.value.token = props.themeJson;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n appTheme\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-config-provider :theme=\"appTheme\">\r\n <slot></slot>\r\n </a-config-provider>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["storeToRefs","useAppStore","appTheme","ref","watch","theme"],"mappings":";;;;;;;;;;;;;;;;AAOA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,QAAS,EAAA;AAE9B,IAAA,SAAS,QAAuC,GAAA;AAC9C,MAAA,MAAM,EAAE,UAAY,EAAA,SAAA,EAAc,GAAAA,iBAAA,CAAYC,mBAAa,CAAA;AAC3D,MAAMC,MAAAA,SAAAA,GAAWC,OAA6B,CAAA,EAAE,CAAA;AAEhD,MAAAC,SAAA;AAAA,QACE,MAAM,WAAW,KAAM,CAAA,IAAA;AAAA,QACvB,MAAM;AACJ,UAAY,WAAA,EAAA;AAAA,SACd;AAAA,QACA,EAAE,WAAW,IAAK;AAAA,OACpB;AAEA,MAAAA,SAAA;AAAA,QACE,MAAM,SAAU,CAAA,KAAA;AAAA,QAChB,MAAM;AACJ,UAAY,WAAA,EAAA;AAAA;AACd,OACF;AAEA,MAAA,SAAS,WAAc,GAAA;AACrB,QAAA,MAAM,aACJ,MAAO,CAAA,UAAA,IACP,MAAO,CAAA,UAAA,CAAW,8BAA8B,CAAE,CAAA,OAAA;AACpD,QAAQ,QAAA,UAAA,CAAW,MAAM,IAAM;AAAA,UAC7B,KAAK,OAAA;AACH,YAAA,IAAI,UAAU,KAAO,EAAA;AACnB,cAAAF,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,gBAAA;AACjC,cAAAH,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,EAAC;AAAA,aACnB,MAAA;AACL,cAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,gBAAA;AACjC,cAAAH,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,EAAC;AAAA;AAE1B,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,IAAI,UAAU,KAAO,EAAA;AACnB,cAAAA,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,KAAM,CAAA,SAAA;AAAA,aACxB,MAAA;AACL,cAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAYG,kBAAM,CAAA,aAAA;AACjC,cAAAH,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,EAAC;AAAA;AAE1B,YAAA;AAAA,UACF,KAAK,IAAA;AACH,YAAI,IAAA,SAAA,CAAU,SAAS,UAAY,EAAA;AACjC,cAAAA,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,KAAM,CAAA,SAAA;AAAA;AAE/B,YAAA;AAAA;AACJ;AAGF,MAAO,OAAA;AAAA,QACL,QAAAA,EAAAA;AAAA,OACF;AAAA;;;;;;;;;;;;;;;;"}
@@ -107,7 +107,6 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
107
107
  }
108
108
  });
109
109
  const _findMatchedMenuKey = (path, menuItems, parentKey = "") => {
110
- var _a;
111
110
  for (const item of menuItems) {
112
111
  if (item.key === path) {
113
112
  return {
@@ -121,13 +120,17 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
121
120
  return result;
122
121
  }
123
122
  }
124
- const match = path.match(/^\/[^/]+/);
125
- const basePath = match ? match[0] : "";
126
- if ((_a = item.key) == null ? void 0 : _a.startsWith(basePath)) {
127
- return {
128
- matchedKey: item.key,
129
- parentKey
130
- };
123
+ if (path.startsWith(item.key)) {
124
+ if (!item.children || item.children.length === 0) {
125
+ return {
126
+ matchedKey: item.key,
127
+ parentKey
128
+ };
129
+ }
130
+ const result = _findMatchedMenuKey(path, item.children, item.key);
131
+ if (result) {
132
+ return result;
133
+ }
131
134
  }
132
135
  }
133
136
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.cjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore, useMenuStore, useNoStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n setup() {\r\n const { layout, modeConfig } = storeToRefs(useAppStore());\r\n const { menuList } = storeToRefs(useNoStore());\r\n const { menuWrapperStyle } = useStyle();\r\n const { openKeys, selectedKeys, onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const { openKeys, selectedKeys, data } = storeToRefs(useMenuStore());\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some((item: string) => item === path);\r\n if (!flag) {\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (rs) {\r\n if (!layout.value.collapsed) {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n selectedKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const path = selectedKeys.value[0];\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n // 匹配菜单项的函数(支持嵌套 children)\r\n const _findMatchedMenuKey = (\r\n path: string,\r\n menuItems: { key: string; children: [] }[],\r\n parentKey: string = \"\"\r\n ): { matchedKey: string; parentKey: string } | null => {\r\n // 遍历菜单项\r\n for (const item of menuItems) {\r\n // 完全匹配\r\n if (item.key === path) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n\r\n // 如果当前菜单项有 children,递归查找\r\n if (item.children && item.children.length > 0) {\r\n const result = _findMatchedMenuKey(path, item.children, item.key);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // 匹配以 basePath 开头的菜单项\r\n const match = path.match(/^\\/[^/]+/); // 匹配以 / 开头,后面不包含 / 的部分\r\n const basePath = match ? match[0] : \"\"; // 提取基础路径,如 /user\r\n if (item.key?.startsWith(basePath)) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n }\r\n\r\n // 如果没有找到匹配的菜单项,返回 null\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath\r\n }: {\r\n item: string;\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [key];\r\n\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n if (route.path !== key) {\r\n router.push(key).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","layout","modeConfig","storeToRefs","useAppStore","menuList","useNoStore","menuWrapperStyle","useStyle","openKeys","selectedKeys","onClick","useMenu","computed","css","value","mode","data","useMenuStore","route","useRoute","router","useRouter","watch","fullPath","path","flag","some","item","rs","_findMatchedMenuKey","collapsed","parentKey","matchedKey","val","menuItems","key","children","length","result","match","basePath","startsWith","keyPath","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.cjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore, useMenuStore, useNoStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n setup() {\r\n const { layout, modeConfig } = storeToRefs(useAppStore());\r\n const { menuList } = storeToRefs(useNoStore());\r\n const { menuWrapperStyle } = useStyle();\r\n const { openKeys, selectedKeys, onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const { openKeys, selectedKeys, data } = storeToRefs(useMenuStore());\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some((item: string) => item === path);\r\n if (!flag) {\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (rs) {\r\n if (!layout.value.collapsed) {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n selectedKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const path = selectedKeys.value[0];\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n const _findMatchedMenuKey = (\r\n path: string,\r\n menuItems: { key: string; children?: never[] }[],\r\n parentKey: string = \"\"\r\n ): { matchedKey: string; parentKey: string } | null => {\r\n // 遍历菜单项\r\n for (const item of menuItems) {\r\n // 完全匹配\r\n if (item.key === path) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n\r\n // 如果当前菜单项有 children,递归查找\r\n if (item.children && item.children.length > 0) {\r\n const result = _findMatchedMenuKey(path, item.children, item.key);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // 匹配路径前缀(确保只匹配最深层的菜单项)\r\n if (path.startsWith(item.key)) {\r\n // 如果路径以该菜单项的 key 开头,且该菜单项没有子菜单,直接返回匹配的菜单\r\n if (!item.children || item.children.length === 0) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n // 如果是父菜单且有子菜单,继续递归寻找匹配的子菜单\r\n const result = _findMatchedMenuKey(path, item.children, item.key);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n // 如果没有找到匹配的菜单项,返回 null\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath\r\n }: {\r\n item: string;\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [key];\r\n\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n if (route.path !== key) {\r\n router.push(key).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","layout","modeConfig","storeToRefs","useAppStore","menuList","useNoStore","menuWrapperStyle","useStyle","openKeys","selectedKeys","onClick","useMenu","computed","css","value","mode","data","useMenuStore","route","useRoute","router","useRouter","watch","fullPath","path","flag","some","item","rs","_findMatchedMenuKey","collapsed","parentKey","matchedKey","val","menuItems","key","children","length","result","startsWith","keyPath","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
@@ -29,7 +29,8 @@ var SettingDrawer = /* @__PURE__ */ vue.defineComponent({
29
29
  } = useToken();
30
30
  const store$1 = store.useAppStore();
31
31
  const {
32
- modeConfig
32
+ modeConfig,
33
+ isCompact
33
34
  } = pinia.storeToRefs(store$1);
34
35
  const {
35
36
  btnStyle,
@@ -97,8 +98,15 @@ var SettingDrawer = /* @__PURE__ */ vue.defineComponent({
97
98
  default: () => [_slot]
98
99
  })]
99
100
  }), vue.createVNode(vue.resolveComponent("a-form-item"), {
100
- "label": "\u6A21\u5F0F"
101
- }, null)]
101
+ "label": "\u7D27\u51D1"
102
+ }, {
103
+ default: () => [vue.createVNode(vue.resolveComponent("a-switch"), {
104
+ "checked": isCompact.value,
105
+ "onUpdate:checked": ($event) => isCompact.value = $event,
106
+ "checked-children": "\u5F00",
107
+ "un-checked-children": "\u5173"
108
+ }, null)]
109
+ })]
102
110
  })]
103
111
  })]);
104
112
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SettingDrawer.cjs","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"sourcesContent":["import { computed, type ComputedRef, defineComponent, ref } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { CloseOutlined, SettingOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport BlockCheckbox from \"./BlockCheckbox.vue\";\r\n\r\nexport default defineComponent({\r\n components: {\r\n BlockCheckbox\r\n },\r\n setup() {\r\n const open = ref(false);\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n const store = useAppStore();\r\n const { modeConfig } = storeToRefs(store);\r\n\r\n const { btnStyle, closeBtnStyle, dividerStyle, settingDrawerStyle } =\r\n useStyle();\r\n\r\n function useStyle(): {\r\n btnStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n dividerStyle: ComputedRef<string>;\r\n settingDrawerStyle: ComputedRef<string>;\r\n } {\r\n const settingDrawerStyle = computed(() => css``);\r\n const btnStyle = computed(\r\n () => css`\r\n background-color: ${token.value.colorPrimary};\r\n border-end-start-radius: ${token?.value.borderRadius}px;\r\n border-start-start-radius: ${token?.value.borderRadius}px;\r\n `\r\n );\r\n\r\n const closeBtnStyle = computed(\r\n () => css`\r\n ${btnStyle.value};\r\n position: absolute;\r\n top: 240px;\r\n right: 378px;\r\n `\r\n );\r\n\r\n const dividerStyle = computed(\r\n () => `\r\n border-color: #7cb305;\r\n `\r\n );\r\n\r\n return {\r\n btnStyle,\r\n closeBtnStyle,\r\n dividerStyle,\r\n settingDrawerStyle\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={settingDrawerStyle.value}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${btnStyle.value}`}\r\n onClick={() => (open.value = true)}\r\n >\r\n <SettingOutlined class={\"icon\"} />\r\n </div>\r\n <a-drawer v-model:open={open.value} bodyStyle={{ padding: 0 }}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${closeBtnStyle.value}`}\r\n onClick={() => (open.value = false)}\r\n >\r\n <CloseOutlined class={\"icon\"} />\r\n </div>\r\n\r\n <a-form>\r\n <a-form-item label={\"模式\"}>\r\n <a-radio-group\r\n v-model:value={modeConfig.value.mode}\r\n button-style=\"solid\"\r\n >\r\n {modeConfig.value.list.map(item => (\r\n <a-radio-button value={item.value}>\r\n {item.label}\r\n </a-radio-button>\r\n ))}\r\n </a-radio-group>\r\n </a-form-item>\r\n <a-form-item label={\"模式\"}></a-form-item>\r\n </a-form>\r\n </a-drawer>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","components","BlockCheckbox","setup","open","ref","useToken","theme","token","store","useAppStore","modeConfig","storeToRefs","btnStyle","closeBtnStyle","dividerStyle","settingDrawerStyle","useStyle","computed","css","value","colorPrimary","borderRadius","_slot","_createVNode","onClick","SettingOutlined","_resolveComponent","$event","padding","default","CloseOutlined","mode","list","map","item","label"],"mappings":"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"}
1
+ {"version":3,"file":"SettingDrawer.cjs","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"sourcesContent":["import { computed, type ComputedRef, defineComponent, ref } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { CloseOutlined, SettingOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport BlockCheckbox from \"./BlockCheckbox.vue\";\r\n\r\nexport default defineComponent({\r\n components: {\r\n BlockCheckbox\r\n },\r\n setup() {\r\n const open = ref(false);\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n const store = useAppStore();\r\n const { modeConfig, isCompact } = storeToRefs(store);\r\n\r\n const { btnStyle, closeBtnStyle, dividerStyle, settingDrawerStyle } =\r\n useStyle();\r\n\r\n function useStyle(): {\r\n btnStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n dividerStyle: ComputedRef<string>;\r\n settingDrawerStyle: ComputedRef<string>;\r\n } {\r\n const settingDrawerStyle = computed(() => css``);\r\n const btnStyle = computed(\r\n () => css`\r\n background-color: ${token.value.colorPrimary};\r\n border-end-start-radius: ${token?.value.borderRadius}px;\r\n border-start-start-radius: ${token?.value.borderRadius}px;\r\n `\r\n );\r\n\r\n const closeBtnStyle = computed(\r\n () => css`\r\n ${btnStyle.value};\r\n position: absolute;\r\n top: 240px;\r\n right: 378px;\r\n `\r\n );\r\n\r\n const dividerStyle = computed(\r\n () => `\r\n border-color: #7cb305;\r\n `\r\n );\r\n\r\n return {\r\n btnStyle,\r\n closeBtnStyle,\r\n dividerStyle,\r\n settingDrawerStyle\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={settingDrawerStyle.value}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${btnStyle.value}`}\r\n onClick={() => (open.value = true)}\r\n >\r\n <SettingOutlined class={\"icon\"} />\r\n </div>\r\n <a-drawer v-model:open={open.value} bodyStyle={{ padding: 0 }}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${closeBtnStyle.value}`}\r\n onClick={() => (open.value = false)}\r\n >\r\n <CloseOutlined class={\"icon\"} />\r\n </div>\r\n <a-form>\r\n <a-form-item label={\"模式\"}>\r\n <a-radio-group\r\n v-model:value={modeConfig.value.mode}\r\n button-style=\"solid\"\r\n >\r\n {modeConfig.value.list.map(item => (\r\n <a-radio-button value={item.value}>\r\n {item.label}\r\n </a-radio-button>\r\n ))}\r\n </a-radio-group>\r\n </a-form-item>\r\n <a-form-item label={\"紧凑\"}>\r\n <a-switch\r\n v-model:checked={isCompact.value}\r\n checked-children=\"开\"\r\n un-checked-children=\"关\"\r\n ></a-switch>\r\n </a-form-item>\r\n </a-form>\r\n </a-drawer>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","components","BlockCheckbox","setup","open","ref","useToken","theme","token","store","useAppStore","modeConfig","isCompact","storeToRefs","btnStyle","closeBtnStyle","dividerStyle","settingDrawerStyle","useStyle","computed","css","value","colorPrimary","borderRadius","_slot","_createVNode","onClick","SettingOutlined","_resolveComponent","$event","padding","default","CloseOutlined","mode","list","map","item","label"],"mappings":";;;;;;;;;;;;;;AASgD,SAAAA,QAAAC,CAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAAA,KAAA,UAAAC,IAAAA,MAAAA,CAAAC,SAAAC,CAAAA,QAAAA,CAAAC,IAAAJ,CAAAA,CAAA,CAAAK,KAAAA,iBAAAA,IAAAA,CAAAA,WAAAA,CAAAL,CAAA,CAAA;AAAA;AAEhD,oCAA+BM,mBAAA,CAAA;AAAA,EAC7BC,UAAY,EAAA;AAAA,mBACVC;AAAAA,GACF;AAAA,EACAC,KAAQ,GAAA;AACN,IAAMC,MAAAA,IAAAA,GAAOC,QAAI,KAAK,CAAA;AACtB,IAAM,MAAA;AAAA,MAAEC;AAAAA,KAAaC,GAAAA,kBAAAA;AACrB,IAAM,MAAA;AAAA,MAAEC;AAAAA,QAA+CF,QAAS,EAAA;AAChE,IAAA,MAAMG,UAAQC,iBAAY,EAAA;AAC1B,IAAM,MAAA;AAAA,MAAEC,UAAAA;AAAAA,MAAYC;AAAAA,KAAU,GAAIC,kBAAYJ,OAAK,CAAA;AAEnD,IAAM,MAAA;AAAA,MAAEK,QAAAA;AAAAA,MAAUC,aAAAA;AAAAA,MAAeC,YAAAA;AAAAA,MAAcC;AAAAA,QAC7CC,QAAS,EAAA;AAEX,IAAA,SAASA,QAKP,GAAA;AACA,MAAMD,MAAAA,mBAAAA,GAAqBE,YAAS,CAAA,MAAMC,OAAK,CAAA,CAAA,CAAA;AAC/C,MAAMN,MAAAA,SAAAA,GAAWK,aACf,MAAMC,OAAAA;AAAAA,4BACgBZ,EAAAA,KAAAA,CAAMa,MAAMC,YAAY,CAAA;AAAA,mCACjBd,EAAAA,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAOa,MAAME,YAAY,CAAA;AAAA,qCACvBf,EAAAA,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAOa,MAAME,YAAY,CAAA;AAAA,QAE1D,CAAA,CAAA;AAEA,MAAMR,MAAAA,cAAAA,GAAgBI,aACpB,MAAMC,OAAAA;AAAAA,UAAAA,EACFN,UAASO,KAAK,CAAA;AAAA;AAAA;AAAA;AAAA,QAKpB,CAAA,CAAA;AAEA,MAAML,MAAAA,aAAAA,GAAeG,aACnB,MAAM;AAAA;AAAA,MAGR,CAAA,CAAA;AAEA,MAAO,OAAA;AAAA,QACLL,QAAAA,EAAAA,SAAAA;AAAAA,QACAC,aAAAA,EAAAA,cAAAA;AAAAA,QACAC,YAAAA,EAAAA,aAAAA;AAAAA,QACAC,kBAAAA,EAAAA;AAAAA,OACF;AAAA;AAGF,IAAA,OAAO,MAAA;AAAA,MAAAO,IAAAA,KAAAA;AAAA,MAAA,OAAAC,gBAAA,KAAA,EAAA;AAAA,QAAA,SACOR,kBAAmBI,CAAAA;AAAAA,OAAK,EAAA,CAAAI,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAEzB,CAAiCX,8BAAAA,EAAAA,QAAAA,CAASO,KAAK,CAAA,CAAA;AAAA,QAAE,SAAA,EAC/CK,MAAOtB,IAAAA,CAAKiB,KAAQ,GAAA;AAAA,OAAK,EAAAI,CAAAA,eAAAA,CAAAE,wBAAA,EAAA;AAAA,QAAA,OAEV,EAAA;AAAA,OAAM,EAAAF,IAAAA,CAAAA,CAAAA,GAAAA,eAAAG,CAAAA,oBAAAA,CAAA,UAAA,CAAA,EAAA;AAAA,QAAA,QAERxB,IAAKiB,CAAAA,KAAAA;AAAAA,QAAK,eAAA,EAAAQ,CAAVzB,MAAAA,KAAAA,IAAAA,CAAKiB,KAAKQ,GAAAA,MAAAA;AAAAA,QAAA,WAAa,EAAA;AAAA,UAAEC,OAAS,EAAA;AAAA;AAAE,OAAC,EAAA;AAAA,QAAAC,OAAAA,EAAAA,MAAA,CAAAN,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAElD,CAAkCV,+BAAAA,EAAAA,aAAAA,CAAcM,KAAK,CAAA,CAAA;AAAA,UAAE,SAAA,EACrDK,MAAOtB,IAAAA,CAAKiB,KAAQ,GAAA;AAAA,SAAM,EAAAI,CAAAA,eAAAA,CAAAO,sBAAA,EAAA;AAAA,UAAA,OAEb,EAAA;AAAA,SAAM,EAAAP,IAAAA,CAAAA,CAAAA,GAAAA,eAAAG,CAAAA,oBAAAA,CAAA,QAAA,CAAA,EAAA,IAAA,EAAA;AAAA,UAAAG,SAAAA,MAAAN,CAAAA,eAAAG,CAAAA,oBAAAA,CAAA,aAAA,CAAA,EAAA;AAAA,YAAA,OAGR,EAAA;AAAA,WAAI,EAAA;AAAA,YAAAG,SAAAA,MAAAN,CAAAA,eAAAG,CAAAA,oBAAAA,CAAA,eAAA,CAAA,EAAA;AAAA,cAAA,OAAA,EAELjB,WAAWU,KAAMY,CAAAA,IAAAA;AAAAA,cAAI,gBAAAJ,EAAAA,CAAAA,MAAAA,KAArBlB,UAAWU,CAAAA,KAAAA,CAAMY,IAAIJ,GAAAA,MAAAA;AAAAA,cAAA,cAAA,EAAA;AAAA,aAAA,EAAApC,OAAA+B,CAAAA,KAAAA,GAGnCb,UAAWU,CAAAA,KAAAA,CAAMa,IAAKC,CAAAA,GAAAA,CAAIC,CAAIX,IAAAA,KAAAA,eAAAA,CAAAG,oBAAA,CAAA,gBAAA,CAAA,EAAA;AAAA,cAAA,SACNQ,IAAKf,CAAAA;AAAAA,aAAK,EAAA;AAAA,cAAAU,OAAAA,EAAAA,MAC9BK,CAAAA,IAAAA,CAAKC,KAAK;AAAA,aAEd,CAAA,CAAC,CAAA,GAAAb,KAAA,GAAA;AAAA,cAAAO,OAAAA,EAAAA,MAAA,CAAAP,KAAA;AAAA,aAAA,CAAA;AAAA,WAAAC,CAAAA,EAAAA,eAAAG,CAAAA,oBAAAA,CAAA,aAAA,CAAA,EAAA;AAAA,YAAA,OAGc,EAAA;AAAA,WAAI,EAAA;AAAA,YAAAG,SAAAA,MAAAN,CAAAA,eAAAG,CAAAA,oBAAAA,CAAA,UAAA,CAAA,EAAA;AAAA,cAAA,WAEHhB,SAAUS,CAAAA,KAAAA;AAAAA,cAAK,kBAAA,EAAAQ,CAAfjB,MAAAA,KAAAA,SAAAA,CAAUS,KAAKQ,GAAAA,MAAAA;AAAAA,cAAA,kBAAA,EAAA,QAAA;AAAA,cAAA,qBAAA,EAAA;AAAA,aAAA,EAAA,IAAA,CAAA;AAAA,WAAA,CAAA;AAAA,SAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA;AAUhD,CAAC,CAAA;;;;"}
@@ -24,7 +24,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
24
24
  function useStyle() {
25
25
  const { useToken } = antDesignVue.theme;
26
26
  const { token } = useToken();
27
- console.log(JSON.stringify(token.value));
28
27
  const activeTabColor = vue.computed(() => token.value.colorBgLayout);
29
28
  const splitColor = vue.computed(() => token.value.colorBorderSecondary);
30
29
  const tabsNavStyle2 = vue.computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue2.cjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport Search from \"./Search\";\r\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();\r\n\r\nconst { activeKey, list, onChange, onClose } = useTab();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n console.log(JSON.stringify(token.value));\r\n\r\n const activeTabColor = computed(() => token.value.colorBgLayout);\r\n const splitColor = computed(() => token.value.colorBorderSecondary);\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(item => item.fullPath === key)[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = ($event: Event, key: string | undefined) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div class=\"tab-hover-bg\" :class=\"tabHoverBgStyle\"></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div class=\"tab-item\">{{ item.meta?.title || \"无标题\" }}</div>\r\n <div class=\"tab-close\">\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["theme","computed","tabsNavStyle","css","tabHoverBgStyle","closeBtnStyle","useRoute","useRouter","store","useNavTabStore","list","activeKey","storeToRefs","watch","onChange","onClose"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.vue2.cjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport Search from \"./Search\";\r\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();\r\n\r\nconst { activeKey, list, onChange, onClose } = useTab();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n\r\n const activeTabColor = computed(() => token.value.colorBgLayout);\r\n const splitColor = computed(() => token.value.colorBorderSecondary);\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(item => item.fullPath === key)[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = ($event: Event, key: string | undefined) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div class=\"tab-hover-bg\" :class=\"tabHoverBgStyle\"></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div class=\"tab-item\">{{ item.meta?.title || \"无标题\" }}</div>\r\n <div class=\"tab-close\">\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["theme","computed","tabsNavStyle","css","tabHoverBgStyle","closeBtnStyle","useRoute","useRouter","store","useNavTabStore","list","activeKey","storeToRefs","watch","onChange","onClose"],"mappings":"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"}
@@ -3,8 +3,6 @@ import dayjs from '../../_virtual/dayjs.min.mjs';
3
3
 
4
4
  "use strict";
5
5
  var __defProp = Object.defineProperty;
6
- var __defProps = Object.defineProperties;
7
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
6
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
8
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -20,28 +18,57 @@ var __spreadValues = (a, b) => {
20
18
  }
21
19
  return a;
22
20
  };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
21
  var _sfc_main = /* @__PURE__ */ defineComponent({
25
22
  __name: "RangePicker",
26
23
  props: {
27
24
  value: { type: Object, required: true, default: () => ({}) },
28
- startField: { type: String, required: false, default: "startTime" },
29
- endField: { type: String, required: false, default: "endTime" },
25
+ startField: { type: [String, Array], required: false, default: "startTime" },
26
+ endField: { type: [String, Array], required: false, default: "endTime" },
30
27
  format: { type: String, required: false, default: "YYYY-MM-DD" }
31
28
  },
32
29
  emits: ["update:value", "change"],
33
30
  setup(__props, { emit: __emit }) {
31
+ const normalizePath = (field) => {
32
+ return Array.isArray(field) ? field : [field];
33
+ };
34
+ const getNestedValue = (obj, field) => {
35
+ const path = normalizePath(field);
36
+ let current = obj;
37
+ for (const key of path) {
38
+ if (current && typeof current === "object" && key in current) {
39
+ current = current[key];
40
+ } else {
41
+ return void 0;
42
+ }
43
+ }
44
+ return current;
45
+ };
46
+ const setNestedValue = (obj, field, value) => {
47
+ const path = normalizePath(field);
48
+ const newObj = __spreadValues({}, obj);
49
+ let current = newObj;
50
+ for (let i = 0; i < path.length - 1; i++) {
51
+ const key = path[i];
52
+ if (!(key in current) || typeof current[key] !== "object" || current[key] === null) {
53
+ current[key] = {};
54
+ } else {
55
+ current[key] = __spreadValues({}, current[key]);
56
+ }
57
+ current = current[key];
58
+ }
59
+ current[path[path.length - 1]] = value;
60
+ return newObj;
61
+ };
34
62
  const props = __props;
35
63
  const emits = __emit;
36
64
  const innerValue = ref(null);
37
65
  watch(
38
66
  () => props.value,
39
67
  (newVal) => {
40
- if (newVal[props.startField] && newVal[props.endField]) {
41
- innerValue.value = [
42
- dayjs(newVal[props.startField]),
43
- dayjs(newVal[props.endField])
44
- ];
68
+ const start = getNestedValue(newVal, props.startField);
69
+ const end = getNestedValue(newVal, props.endField);
70
+ if (start && end) {
71
+ innerValue.value = [dayjs(start), dayjs(end)];
45
72
  } else {
46
73
  innerValue.value = null;
47
74
  }
@@ -49,24 +76,26 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
49
76
  { immediate: true, deep: true }
50
77
  );
51
78
  const handleChange = (dates) => {
79
+ var _a, _b;
80
+ let updatedValue = __spreadValues({}, props.value);
52
81
  if (dates && dates.length === 2) {
53
82
  const [startTime, endTime] = dates;
54
- const formattedValue = __spreadProps(__spreadValues({}, props.value), {
55
- // 保留原对象的所有属性
56
- [props.startField]: startTime ? startTime.format(props.format) : null,
57
- [props.endField]: endTime ? endTime.format(props.format) : null
58
- });
59
- emits("update:value", formattedValue);
60
- emits("change", formattedValue);
83
+ updatedValue = setNestedValue(
84
+ updatedValue,
85
+ props.startField,
86
+ (_a = startTime == null ? void 0 : startTime.format(props.format)) != null ? _a : null
87
+ );
88
+ updatedValue = setNestedValue(
89
+ updatedValue,
90
+ props.endField,
91
+ (_b = endTime == null ? void 0 : endTime.format(props.format)) != null ? _b : null
92
+ );
61
93
  } else {
62
- const formattedValue = __spreadProps(__spreadValues({}, props.value), {
63
- // 保留原对象的所有属性
64
- [props.startField]: null,
65
- [props.endField]: null
66
- });
67
- emits("update:value", formattedValue);
68
- emits("change", formattedValue);
94
+ updatedValue = setNestedValue(updatedValue, props.startField, null);
95
+ updatedValue = setNestedValue(updatedValue, props.endField, null);
69
96
  }
97
+ emits("update:value", updatedValue);
98
+ emits("change", updatedValue);
70
99
  };
71
100
  return (_ctx, _cache) => {
72
101
  const _component_a_range_picker = resolveComponent("a-range-picker");
@@ -1 +1 @@
1
- {"version":3,"file":"RangePicker.vue2.mjs","sources":["../../../../src/components/date/RangePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, watch } from \"vue\";\r\n\r\nimport type { RangeValue } from \"ant-design-vue/es/vc-picker/interface\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport dayjs from \"dayjs\";\r\n\r\n// 定义 props 类型\r\ninterface Props {\r\n value: Record<string, unknown>; // 使用 any 以兼容任意字段\r\n startField?: string;\r\n endField?: string;\r\n format?: string;\r\n}\r\n\r\nconst props = defineProps({\n value: { type: Object, required: true, default: () => ({}) },\n startField: { type: String, required: false, default: \"startTime\" },\n endField: { type: String, required: false, default: \"endTime\" },\n format: { type: String, required: false, default: \"YYYY-MM-DD\" }\n});\r\n\r\n// 定义 emits 类型\r\nconst emits = defineEmits([\"update:value\", \"change\"]);\r\n\r\n// 定义 innerValue 的类型为 RangeValue<Dayjs>\r\nconst innerValue = ref<RangeValue<Dayjs>>(null);\r\n\r\n// 监听外部 value 变化,更新内部值\r\nwatch(\r\n () => props.value,\r\n newVal => {\r\n if (newVal[props.startField] && newVal[props.endField]) {\r\n innerValue.value = [\r\n dayjs(newVal[props.startField] as string),\r\n dayjs(newVal[props.endField] as string)\r\n ];\r\n } else {\r\n innerValue.value = null;\r\n }\r\n },\r\n { immediate: true, deep: true }\r\n);\r\n\r\n// 处理日期变化\r\nconst handleChange = (dates: RangeValue<Dayjs>) => {\r\n if (dates && dates.length === 2) {\r\n const [startTime, endTime] = dates;\r\n\r\n // 创建一个新对象,保留原 params 的其他属性\r\n const formattedValue = {\r\n ...props.value, // 保留原对象的所有属性\r\n [props.startField]: startTime ? startTime.format(props.format) : null,\r\n [props.endField]: endTime ? endTime.format(props.format) : null\r\n };\r\n\r\n emits(\"update:value\", formattedValue);\r\n emits(\"change\", formattedValue);\r\n } else {\r\n // 如果日期为空,则清空 startField 和 endField\r\n const formattedValue = {\r\n ...props.value, // 保留原对象的所有属性\r\n [props.startField]: null,\r\n [props.endField]: null\r\n };\r\n\r\n emits(\"update:value\", formattedValue);\r\n emits(\"change\", formattedValue);\r\n }\r\n};\r\n</script>\r\n\r\n<template>\r\n <a-range-picker\r\n style=\"width: 100%\"\r\n v-model:value=\"innerValue\"\r\n :placeholder=\"['开始时间', '结束时间']\"\r\n @change=\"handleChange\"\r\n />\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAGd,IAAM,MAAA,UAAA,GAAa,IAAuB,IAAI,CAAA;AAG9C,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,KAAA;AAAA,MACZ,CAAU,MAAA,KAAA;AACR,QAAA,IAAI,OAAO,KAAM,CAAA,UAAU,KAAK,MAAO,CAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AACtD,UAAA,UAAA,CAAW,KAAQ,GAAA;AAAA,YACjB,KAAM,CAAA,MAAA,CAAO,KAAM,CAAA,UAAU,CAAW,CAAA;AAAA,YACxC,KAAM,CAAA,MAAA,CAAO,KAAM,CAAA,QAAQ,CAAW;AAAA,WACxC;AAAA,SACK,MAAA;AACL,UAAA,UAAA,CAAW,KAAQ,GAAA,IAAA;AAAA;AACrB,OACF;AAAA,MACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK;AAAA,KAChC;AAGA,IAAM,MAAA,YAAA,GAAe,CAAC,KAA6B,KAAA;AACjD,MAAI,IAAA,KAAA,IAAS,KAAM,CAAA,MAAA,KAAW,CAAG,EAAA;AAC/B,QAAM,MAAA,CAAC,SAAW,EAAA,OAAO,CAAI,GAAA,KAAA;AAG7B,QAAM,MAAA,cAAA,GAAiB,aAClB,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAM,KADY,CAAA,EAAA;AAAA;AAAA,UAErB,CAAC,MAAM,UAAU,GAAG,YAAY,SAAU,CAAA,MAAA,CAAO,KAAM,CAAA,MAAM,CAAI,GAAA,IAAA;AAAA,UACjE,CAAC,MAAM,QAAQ,GAAG,UAAU,OAAQ,CAAA,MAAA,CAAO,KAAM,CAAA,MAAM,CAAI,GAAA;AAAA,SAC7D,CAAA;AAEA,QAAA,KAAA,CAAM,gBAAgB,cAAc,CAAA;AACpC,QAAA,KAAA,CAAM,UAAU,cAAc,CAAA;AAAA,OACzB,MAAA;AAEL,QAAM,MAAA,cAAA,GAAiB,aAClB,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAM,KADY,CAAA,EAAA;AAAA;AAAA,UAErB,CAAC,KAAM,CAAA,UAAU,GAAG,IAAA;AAAA,UACpB,CAAC,KAAM,CAAA,QAAQ,GAAG;AAAA,SACpB,CAAA;AAEA,QAAA,KAAA,CAAM,gBAAgB,cAAc,CAAA;AACpC,QAAA,KAAA,CAAM,UAAU,cAAc,CAAA;AAAA;AAChC,KACF;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"RangePicker.vue2.mjs","sources":["../../../../src/components/date/RangePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, watch } from \"vue\";\r\n\r\nimport type { RangeValue } from \"ant-design-vue/es/vc-picker/interface\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport dayjs from \"dayjs\";\r\n\r\n// 工具函数:规范化路径\r\nconst normalizePath = (field: string | string[]): string[] => {\r\n return Array.isArray(field) ? field : [field];\r\n};\r\n\r\n// 工具函数:获取嵌套值\r\nconst getNestedValue = <T extends Record<string, unknown>>(\r\n obj: T,\r\n field: string | string[]\r\n): string | null | undefined => {\r\n const path = normalizePath(field);\r\n let current: unknown = obj;\r\n\r\n for (const key of path) {\r\n if (current && typeof current === \"object\" && key in current) {\r\n current = (current as Record<string, unknown>)[key];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return current as string | null | undefined;\r\n};\r\n\r\n// 工具函数:设置嵌套值\r\nconst setNestedValue = <T extends Record<string, unknown>>(\r\n obj: T,\r\n field: string | string[],\r\n value: string | null\r\n): T => {\r\n const path = normalizePath(field);\r\n const newObj = { ...obj };\r\n let current: Record<string, unknown> = newObj;\r\n\r\n for (let i = 0; i < path.length - 1; i++) {\r\n const key = path[i];\r\n if (\r\n !(key in current) ||\r\n typeof current[key] !== \"object\" ||\r\n current[key] === null\r\n ) {\r\n current[key] = {};\r\n } else {\r\n current[key] = { ...current[key] };\r\n }\r\n current = current[key] as Record<string, unknown>;\r\n }\r\n\r\n current[path[path.length - 1]] = value;\r\n return newObj as T;\r\n};\r\n\r\n// 定义 props 类型\r\ninterface Props {\r\n value: Record<string, unknown>;\r\n startField?: string | string[];\r\n endField?: string | string[];\r\n format?: string;\r\n}\r\n\r\nconst props = defineProps({\n value: { type: Object, required: true, default: () => ({}) },\n startField: { type: [String, Array], required: false, default: \"startTime\" },\n endField: { type: [String, Array], required: false, default: \"endTime\" },\n format: { type: String, required: false, default: \"YYYY-MM-DD\" }\n});\r\n\r\n// 定义 emits 类型\r\nconst emits = defineEmits([\"update:value\", \"change\"]);\r\n\r\n// 内部值,用于日期选择器\r\nconst innerValue = ref<RangeValue<Dayjs>>(null);\r\n\r\n// 监听外部 value 变化,同步内部值\r\nwatch(\r\n () => props.value,\r\n newVal => {\r\n const start = getNestedValue(newVal, props.startField);\r\n const end = getNestedValue(newVal, props.endField);\r\n\r\n if (start && end) {\r\n innerValue.value = [dayjs(start), dayjs(end)];\r\n } else {\r\n innerValue.value = null;\r\n }\r\n },\r\n { immediate: true, deep: true }\r\n);\r\n\r\n// 处理日期变化\r\nconst handleChange = (dates: RangeValue<Dayjs>) => {\r\n let updatedValue = { ...props.value };\r\n\r\n if (dates && dates.length === 2) {\r\n const [startTime, endTime] = dates;\r\n updatedValue = setNestedValue(\r\n updatedValue,\r\n props.startField,\r\n startTime?.format(props.format) ?? null\r\n );\r\n updatedValue = setNestedValue(\r\n updatedValue,\r\n props.endField,\r\n endTime?.format(props.format) ?? null\r\n );\r\n } else {\r\n updatedValue = setNestedValue(updatedValue, props.startField, null);\r\n updatedValue = setNestedValue(updatedValue, props.endField, null);\r\n }\r\n\r\n emits(\"update:value\", updatedValue);\r\n emits(\"change\", updatedValue);\r\n};\r\n</script>\r\n\r\n<template>\r\n <a-range-picker\r\n style=\"width: 100%\"\r\n v-model:value=\"innerValue\"\r\n :placeholder=\"['开始时间', '结束时间']\"\r\n @change=\"handleChange\"\r\n />\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":[],"mappings":"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"}
@@ -6,31 +6,55 @@ import { useAppStore } from '@ditari/store';
6
6
  "use strict";
7
7
  var _sfc_main = /* @__PURE__ */ defineComponent({
8
8
  __name: "ThemeApp",
9
+ props: {
10
+ themeJson: { type: Object, required: false, default: () => ({}) }
11
+ },
9
12
  setup(__props) {
13
+ const props = __props;
10
14
  const { appTheme } = useTheme();
11
15
  function useTheme() {
12
- const { modeConfig } = storeToRefs(useAppStore());
16
+ const { modeConfig, isCompact } = storeToRefs(useAppStore());
13
17
  const appTheme2 = ref({});
14
18
  watch(
15
19
  () => modeConfig.value.mode,
16
- (val) => {
17
- if (val === "os") {
18
- const isDarkMode = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
19
- if (isDarkMode) {
20
- appTheme2.value.algorithm = theme.darkAlgorithm;
21
- } else {
22
- appTheme2.value.algorithm = theme.defaultAlgorithm;
23
- }
24
- } else if (val === "light") {
25
- appTheme2.value.algorithm = theme.defaultAlgorithm;
26
- } else if (val === "dark") {
27
- appTheme2.value.algorithm = theme.darkAlgorithm;
28
- } else {
29
- appTheme2.value.algorithm = theme.defaultAlgorithm;
30
- }
20
+ () => {
21
+ handleTheme();
31
22
  },
32
23
  { immediate: true }
33
24
  );
25
+ watch(
26
+ () => isCompact.value,
27
+ () => {
28
+ handleTheme();
29
+ }
30
+ );
31
+ function handleTheme() {
32
+ const isDarkMode = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
33
+ switch (modeConfig.value.mode) {
34
+ case "light":
35
+ if (isCompact.value) {
36
+ appTheme2.value.algorithm = theme.compactAlgorithm;
37
+ appTheme2.value.token = {};
38
+ } else {
39
+ appTheme2.value.algorithm = theme.defaultAlgorithm;
40
+ appTheme2.value.token = {};
41
+ }
42
+ break;
43
+ case "dark":
44
+ if (isCompact.value) {
45
+ appTheme2.value.token = props.themeJson;
46
+ } else {
47
+ appTheme2.value.algorithm = theme.darkAlgorithm;
48
+ appTheme2.value.token = {};
49
+ }
50
+ break;
51
+ case "os":
52
+ if (isCompact.value && isDarkMode) {
53
+ appTheme2.value.token = props.themeJson;
54
+ }
55
+ break;
56
+ }
57
+ }
34
58
  return {
35
59
  appTheme: appTheme2
36
60
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeApp.vue2.mjs","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Ref, ref, watch } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore } from \"@ditari/store\";\r\n\r\nconst { appTheme } = useTheme();\r\n\r\nfunction useTheme(): { appTheme: Ref<unknown> } {\r\n const { modeConfig } = storeToRefs(useAppStore());\r\n const appTheme = ref<Record<string, unknown>>({});\r\n\r\n watch(\r\n () => modeConfig.value.mode,\r\n (val: string) => {\r\n if (val === \"os\") {\r\n const isDarkMode =\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n if (isDarkMode) {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n }\r\n } else if (val === \"light\") {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n } else if (val === \"dark\") {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n }\r\n },\r\n { immediate: true }\r\n );\r\n\r\n return {\r\n appTheme\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-config-provider :theme=\"appTheme\">\r\n <slot></slot>\r\n </a-config-provider>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["appTheme"],"mappings":";;;;;;;;;AAOA,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,QAAS,EAAA;AAE9B,IAAA,SAAS,QAAuC,GAAA;AAC9C,MAAA,MAAM,EAAE,UAAA,EAAe,GAAA,WAAA,CAAY,aAAa,CAAA;AAChD,MAAMA,MAAAA,SAAAA,GAAW,GAA6B,CAAA,EAAE,CAAA;AAEhD,MAAA,KAAA;AAAA,QACE,MAAM,WAAW,KAAM,CAAA,IAAA;AAAA,QACvB,CAAC,GAAgB,KAAA;AACf,UAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,YAAA,MAAM,aACJ,MAAO,CAAA,UAAA,IACP,MAAO,CAAA,UAAA,CAAW,8BAA8B,CAAE,CAAA,OAAA;AACpD,YAAA,IAAI,UAAY,EAAA;AACd,cAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,aAAA;AAAA,aAC5B,MAAA;AACL,cAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,gBAAA;AAAA;AACnC,WACF,MAAA,IAAW,QAAQ,OAAS,EAAA;AAC1B,YAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,gBAAA;AAAA,WACnC,MAAA,IAAW,QAAQ,MAAQ,EAAA;AACzB,YAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,aAAA;AAAA,WAC5B,MAAA;AACL,YAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,gBAAA;AAAA;AACnC,SACF;AAAA,QACA,EAAE,WAAW,IAAK;AAAA,OACpB;AAEA,MAAO,OAAA;AAAA,QACL,QAAAA,EAAAA;AAAA,OACF;AAAA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ThemeApp.vue2.mjs","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Ref, ref, watch } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore } from \"@ditari/store\";\r\n\r\nconst props = defineProps({\n themeJson: { type: Object, required: false, default: () => ({}) }\n});\r\n\r\nconst { appTheme } = useTheme();\r\n\r\nfunction useTheme(): { appTheme: Ref<unknown> } {\r\n const { modeConfig, isCompact } = storeToRefs(useAppStore());\r\n const appTheme = ref<Record<string, unknown>>({});\r\n\r\n watch(\r\n () => modeConfig.value.mode,\r\n () => {\r\n handleTheme();\r\n },\r\n { immediate: true }\r\n );\r\n\r\n watch(\r\n () => isCompact.value,\r\n () => {\r\n handleTheme();\r\n }\r\n );\r\n\r\n function handleTheme() {\r\n const isDarkMode =\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n switch (modeConfig.value.mode) {\r\n case \"light\":\r\n if (isCompact.value) {\r\n appTheme.value.algorithm = theme.compactAlgorithm;\r\n appTheme.value.token = {};\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"dark\":\r\n if (isCompact.value) {\r\n appTheme.value.token = props.themeJson;\r\n } else {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"os\":\r\n if (isCompact.value && isDarkMode) {\r\n appTheme.value.token = props.themeJson;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n appTheme\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-config-provider :theme=\"appTheme\">\r\n <slot></slot>\r\n </a-config-provider>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["appTheme"],"mappings":";;;;;;;;;;;;AAOA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,QAAS,EAAA;AAE9B,IAAA,SAAS,QAAuC,GAAA;AAC9C,MAAA,MAAM,EAAE,UAAY,EAAA,SAAA,EAAc,GAAA,WAAA,CAAY,aAAa,CAAA;AAC3D,MAAMA,MAAAA,SAAAA,GAAW,GAA6B,CAAA,EAAE,CAAA;AAEhD,MAAA,KAAA;AAAA,QACE,MAAM,WAAW,KAAM,CAAA,IAAA;AAAA,QACvB,MAAM;AACJ,UAAY,WAAA,EAAA;AAAA,SACd;AAAA,QACA,EAAE,WAAW,IAAK;AAAA,OACpB;AAEA,MAAA,KAAA;AAAA,QACE,MAAM,SAAU,CAAA,KAAA;AAAA,QAChB,MAAM;AACJ,UAAY,WAAA,EAAA;AAAA;AACd,OACF;AAEA,MAAA,SAAS,WAAc,GAAA;AACrB,QAAA,MAAM,aACJ,MAAO,CAAA,UAAA,IACP,MAAO,CAAA,UAAA,CAAW,8BAA8B,CAAE,CAAA,OAAA;AACpD,QAAQ,QAAA,UAAA,CAAW,MAAM,IAAM;AAAA,UAC7B,KAAK,OAAA;AACH,YAAA,IAAI,UAAU,KAAO,EAAA;AACnB,cAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,gBAAA;AACjC,cAAAA,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,EAAC;AAAA,aACnB,MAAA;AACL,cAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,gBAAA;AACjC,cAAAA,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,EAAC;AAAA;AAE1B,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,IAAI,UAAU,KAAO,EAAA;AACnB,cAAAA,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,KAAM,CAAA,SAAA;AAAA,aACxB,MAAA;AACL,cAAAA,SAAAA,CAAS,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,aAAA;AACjC,cAAAA,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,EAAC;AAAA;AAE1B,YAAA;AAAA,UACF,KAAK,IAAA;AACH,YAAI,IAAA,SAAA,CAAU,SAAS,UAAY,EAAA;AACjC,cAAAA,SAAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,KAAM,CAAA,SAAA;AAAA;AAE/B,YAAA;AAAA;AACJ;AAGF,MAAO,OAAA;AAAA,QACL,QAAAA,EAAAA;AAAA,OACF;AAAA;;;;;;;;;;;;;;;;"}
@@ -103,7 +103,6 @@ var Menu = /* @__PURE__ */ defineComponent({
103
103
  }
104
104
  });
105
105
  const _findMatchedMenuKey = (path, menuItems, parentKey = "") => {
106
- var _a;
107
106
  for (const item of menuItems) {
108
107
  if (item.key === path) {
109
108
  return {
@@ -117,13 +116,17 @@ var Menu = /* @__PURE__ */ defineComponent({
117
116
  return result;
118
117
  }
119
118
  }
120
- const match = path.match(/^\/[^/]+/);
121
- const basePath = match ? match[0] : "";
122
- if ((_a = item.key) == null ? void 0 : _a.startsWith(basePath)) {
123
- return {
124
- matchedKey: item.key,
125
- parentKey
126
- };
119
+ if (path.startsWith(item.key)) {
120
+ if (!item.children || item.children.length === 0) {
121
+ return {
122
+ matchedKey: item.key,
123
+ parentKey
124
+ };
125
+ }
126
+ const result = _findMatchedMenuKey(path, item.children, item.key);
127
+ if (result) {
128
+ return result;
129
+ }
127
130
  }
128
131
  }
129
132
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.mjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore, useMenuStore, useNoStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n setup() {\r\n const { layout, modeConfig } = storeToRefs(useAppStore());\r\n const { menuList } = storeToRefs(useNoStore());\r\n const { menuWrapperStyle } = useStyle();\r\n const { openKeys, selectedKeys, onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const { openKeys, selectedKeys, data } = storeToRefs(useMenuStore());\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some((item: string) => item === path);\r\n if (!flag) {\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (rs) {\r\n if (!layout.value.collapsed) {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n selectedKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const path = selectedKeys.value[0];\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n // 匹配菜单项的函数(支持嵌套 children)\r\n const _findMatchedMenuKey = (\r\n path: string,\r\n menuItems: { key: string; children: [] }[],\r\n parentKey: string = \"\"\r\n ): { matchedKey: string; parentKey: string } | null => {\r\n // 遍历菜单项\r\n for (const item of menuItems) {\r\n // 完全匹配\r\n if (item.key === path) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n\r\n // 如果当前菜单项有 children,递归查找\r\n if (item.children && item.children.length > 0) {\r\n const result = _findMatchedMenuKey(path, item.children, item.key);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // 匹配以 basePath 开头的菜单项\r\n const match = path.match(/^\\/[^/]+/); // 匹配以 / 开头,后面不包含 / 的部分\r\n const basePath = match ? match[0] : \"\"; // 提取基础路径,如 /user\r\n if (item.key?.startsWith(basePath)) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n }\r\n\r\n // 如果没有找到匹配的菜单项,返回 null\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath\r\n }: {\r\n item: string;\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [key];\r\n\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n if (route.path !== key) {\r\n router.push(key).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","setup","layout","modeConfig","storeToRefs","useAppStore","menuList","useNoStore","menuWrapperStyle","useStyle","openKeys","selectedKeys","onClick","useMenu","computed","css","value","mode","data","useMenuStore","route","useRoute","router","useRouter","watch","fullPath","path","flag","some","item","rs","_findMatchedMenuKey","collapsed","parentKey","matchedKey","val","menuItems","key","children","length","result","match","basePath","startsWith","keyPath","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.mjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore, useMenuStore, useNoStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n setup() {\r\n const { layout, modeConfig } = storeToRefs(useAppStore());\r\n const { menuList } = storeToRefs(useNoStore());\r\n const { menuWrapperStyle } = useStyle();\r\n const { openKeys, selectedKeys, onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const { openKeys, selectedKeys, data } = storeToRefs(useMenuStore());\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some((item: string) => item === path);\r\n if (!flag) {\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (rs) {\r\n if (!layout.value.collapsed) {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n selectedKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const path = selectedKeys.value[0];\r\n const rs = _findMatchedMenuKey(path, data.value as never);\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n const _findMatchedMenuKey = (\r\n path: string,\r\n menuItems: { key: string; children?: never[] }[],\r\n parentKey: string = \"\"\r\n ): { matchedKey: string; parentKey: string } | null => {\r\n // 遍历菜单项\r\n for (const item of menuItems) {\r\n // 完全匹配\r\n if (item.key === path) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n\r\n // 如果当前菜单项有 children,递归查找\r\n if (item.children && item.children.length > 0) {\r\n const result = _findMatchedMenuKey(path, item.children, item.key);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // 匹配路径前缀(确保只匹配最深层的菜单项)\r\n if (path.startsWith(item.key)) {\r\n // 如果路径以该菜单项的 key 开头,且该菜单项没有子菜单,直接返回匹配的菜单\r\n if (!item.children || item.children.length === 0) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n // 如果是父菜单且有子菜单,继续递归寻找匹配的子菜单\r\n const result = _findMatchedMenuKey(path, item.children, item.key);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n // 如果没有找到匹配的菜单项,返回 null\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath\r\n }: {\r\n item: string;\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [key];\r\n\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n if (route.path !== key) {\r\n router.push(key).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","setup","layout","modeConfig","storeToRefs","useAppStore","menuList","useNoStore","menuWrapperStyle","useStyle","openKeys","selectedKeys","onClick","useMenu","computed","css","value","mode","data","useMenuStore","route","useRoute","router","useRouter","watch","fullPath","path","flag","some","item","rs","_findMatchedMenuKey","collapsed","parentKey","matchedKey","val","menuItems","key","children","length","result","startsWith","keyPath","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
@@ -25,7 +25,8 @@ var SettingDrawer = /* @__PURE__ */ defineComponent({
25
25
  } = useToken();
26
26
  const store = useAppStore();
27
27
  const {
28
- modeConfig
28
+ modeConfig,
29
+ isCompact
29
30
  } = storeToRefs(store);
30
31
  const {
31
32
  btnStyle,
@@ -93,8 +94,15 @@ var SettingDrawer = /* @__PURE__ */ defineComponent({
93
94
  default: () => [_slot]
94
95
  })]
95
96
  }), createVNode(resolveComponent("a-form-item"), {
96
- "label": "\u6A21\u5F0F"
97
- }, null)]
97
+ "label": "\u7D27\u51D1"
98
+ }, {
99
+ default: () => [createVNode(resolveComponent("a-switch"), {
100
+ "checked": isCompact.value,
101
+ "onUpdate:checked": ($event) => isCompact.value = $event,
102
+ "checked-children": "\u5F00",
103
+ "un-checked-children": "\u5173"
104
+ }, null)]
105
+ })]
98
106
  })]
99
107
  })]);
100
108
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SettingDrawer.mjs","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"sourcesContent":["import { computed, type ComputedRef, defineComponent, ref } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { CloseOutlined, SettingOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport BlockCheckbox from \"./BlockCheckbox.vue\";\r\n\r\nexport default defineComponent({\r\n components: {\r\n BlockCheckbox\r\n },\r\n setup() {\r\n const open = ref(false);\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n const store = useAppStore();\r\n const { modeConfig } = storeToRefs(store);\r\n\r\n const { btnStyle, closeBtnStyle, dividerStyle, settingDrawerStyle } =\r\n useStyle();\r\n\r\n function useStyle(): {\r\n btnStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n dividerStyle: ComputedRef<string>;\r\n settingDrawerStyle: ComputedRef<string>;\r\n } {\r\n const settingDrawerStyle = computed(() => css``);\r\n const btnStyle = computed(\r\n () => css`\r\n background-color: ${token.value.colorPrimary};\r\n border-end-start-radius: ${token?.value.borderRadius}px;\r\n border-start-start-radius: ${token?.value.borderRadius}px;\r\n `\r\n );\r\n\r\n const closeBtnStyle = computed(\r\n () => css`\r\n ${btnStyle.value};\r\n position: absolute;\r\n top: 240px;\r\n right: 378px;\r\n `\r\n );\r\n\r\n const dividerStyle = computed(\r\n () => `\r\n border-color: #7cb305;\r\n `\r\n );\r\n\r\n return {\r\n btnStyle,\r\n closeBtnStyle,\r\n dividerStyle,\r\n settingDrawerStyle\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={settingDrawerStyle.value}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${btnStyle.value}`}\r\n onClick={() => (open.value = true)}\r\n >\r\n <SettingOutlined class={\"icon\"} />\r\n </div>\r\n <a-drawer v-model:open={open.value} bodyStyle={{ padding: 0 }}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${closeBtnStyle.value}`}\r\n onClick={() => (open.value = false)}\r\n >\r\n <CloseOutlined class={\"icon\"} />\r\n </div>\r\n\r\n <a-form>\r\n <a-form-item label={\"模式\"}>\r\n <a-radio-group\r\n v-model:value={modeConfig.value.mode}\r\n button-style=\"solid\"\r\n >\r\n {modeConfig.value.list.map(item => (\r\n <a-radio-button value={item.value}>\r\n {item.label}\r\n </a-radio-button>\r\n ))}\r\n </a-radio-group>\r\n </a-form-item>\r\n <a-form-item label={\"模式\"}></a-form-item>\r\n </a-form>\r\n </a-drawer>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","components","BlockCheckbox","setup","open","ref","useToken","theme","token","store","useAppStore","modeConfig","storeToRefs","btnStyle","closeBtnStyle","dividerStyle","settingDrawerStyle","useStyle","computed","css","value","colorPrimary","borderRadius","_slot","_createVNode","onClick","SettingOutlined","_resolveComponent","$event","padding","default","CloseOutlined","mode","list","map","item","label"],"mappings":"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"}
1
+ {"version":3,"file":"SettingDrawer.mjs","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"sourcesContent":["import { computed, type ComputedRef, defineComponent, ref } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { CloseOutlined, SettingOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport BlockCheckbox from \"./BlockCheckbox.vue\";\r\n\r\nexport default defineComponent({\r\n components: {\r\n BlockCheckbox\r\n },\r\n setup() {\r\n const open = ref(false);\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n const store = useAppStore();\r\n const { modeConfig, isCompact } = storeToRefs(store);\r\n\r\n const { btnStyle, closeBtnStyle, dividerStyle, settingDrawerStyle } =\r\n useStyle();\r\n\r\n function useStyle(): {\r\n btnStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n dividerStyle: ComputedRef<string>;\r\n settingDrawerStyle: ComputedRef<string>;\r\n } {\r\n const settingDrawerStyle = computed(() => css``);\r\n const btnStyle = computed(\r\n () => css`\r\n background-color: ${token.value.colorPrimary};\r\n border-end-start-radius: ${token?.value.borderRadius}px;\r\n border-start-start-radius: ${token?.value.borderRadius}px;\r\n `\r\n );\r\n\r\n const closeBtnStyle = computed(\r\n () => css`\r\n ${btnStyle.value};\r\n position: absolute;\r\n top: 240px;\r\n right: 378px;\r\n `\r\n );\r\n\r\n const dividerStyle = computed(\r\n () => `\r\n border-color: #7cb305;\r\n `\r\n );\r\n\r\n return {\r\n btnStyle,\r\n closeBtnStyle,\r\n dividerStyle,\r\n settingDrawerStyle\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={settingDrawerStyle.value}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${btnStyle.value}`}\r\n onClick={() => (open.value = true)}\r\n >\r\n <SettingOutlined class={\"icon\"} />\r\n </div>\r\n <a-drawer v-model:open={open.value} bodyStyle={{ padding: 0 }}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${closeBtnStyle.value}`}\r\n onClick={() => (open.value = false)}\r\n >\r\n <CloseOutlined class={\"icon\"} />\r\n </div>\r\n <a-form>\r\n <a-form-item label={\"模式\"}>\r\n <a-radio-group\r\n v-model:value={modeConfig.value.mode}\r\n button-style=\"solid\"\r\n >\r\n {modeConfig.value.list.map(item => (\r\n <a-radio-button value={item.value}>\r\n {item.label}\r\n </a-radio-button>\r\n ))}\r\n </a-radio-group>\r\n </a-form-item>\r\n <a-form-item label={\"紧凑\"}>\r\n <a-switch\r\n v-model:checked={isCompact.value}\r\n checked-children=\"开\"\r\n un-checked-children=\"关\"\r\n ></a-switch>\r\n </a-form-item>\r\n </a-form>\r\n </a-drawer>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","components","BlockCheckbox","setup","open","ref","useToken","theme","token","store","useAppStore","modeConfig","isCompact","storeToRefs","btnStyle","closeBtnStyle","dividerStyle","settingDrawerStyle","useStyle","computed","css","value","colorPrimary","borderRadius","_slot","_createVNode","onClick","SettingOutlined","_resolveComponent","$event","padding","default","CloseOutlined","mode","list","map","item","label"],"mappings":"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"}
@@ -20,7 +20,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
20
20
  function useStyle() {
21
21
  const { useToken } = theme;
22
22
  const { token } = useToken();
23
- console.log(JSON.stringify(token.value));
24
23
  const activeTabColor = computed(() => token.value.colorBgLayout);
25
24
  const splitColor = computed(() => token.value.colorBorderSecondary);
26
25
  const tabsNavStyle2 = computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue2.mjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport Search from \"./Search\";\r\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();\r\n\r\nconst { activeKey, list, onChange, onClose } = useTab();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n console.log(JSON.stringify(token.value));\r\n\r\n const activeTabColor = computed(() => token.value.colorBgLayout);\r\n const splitColor = computed(() => token.value.colorBorderSecondary);\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(item => item.fullPath === key)[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = ($event: Event, key: string | undefined) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div class=\"tab-hover-bg\" :class=\"tabHoverBgStyle\"></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div class=\"tab-item\">{{ item.meta?.title || \"无标题\" }}</div>\r\n <div class=\"tab-close\">\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["tabsNavStyle","tabHoverBgStyle","closeBtnStyle","list","activeKey","onChange","onClose"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.vue2.mjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport Search from \"./Search\";\r\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();\r\n\r\nconst { activeKey, list, onChange, onClose } = useTab();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n\r\n const activeTabColor = computed(() => token.value.colorBgLayout);\r\n const splitColor = computed(() => token.value.colorBorderSecondary);\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(item => item.fullPath === key)[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = ($event: Event, key: string | undefined) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div class=\"tab-hover-bg\" :class=\"tabHoverBgStyle\"></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div class=\"tab-item\">{{ item.meta?.title || \"无标题\" }}</div>\r\n <div class=\"tab-close\">\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["tabsNavStyle","tabHoverBgStyle","closeBtnStyle","list","activeKey","onChange","onClose"],"mappings":"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"}
@@ -8,12 +8,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
8
8
  default: () => {};
9
9
  };
10
10
  startField: {
11
- type: StringConstructor;
11
+ type: (StringConstructor | ArrayConstructor)[];
12
12
  required: false;
13
13
  default: string;
14
14
  };
15
15
  endField: {
16
- type: StringConstructor;
16
+ type: (StringConstructor | ArrayConstructor)[];
17
17
  required: false;
18
18
  default: string;
19
19
  };
@@ -23,6 +23,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
23
23
  default: string;
24
24
  };
25
25
  }>, {
26
+ normalizePath: (field: string | string[]) => string[];
27
+ getNestedValue: <T extends Record<string, unknown>>(obj: T, field: string | string[]) => string | null | undefined;
28
+ setNestedValue: <T extends Record<string, unknown>>(obj: T, field: string | string[], value: string | null) => T;
26
29
  props: any;
27
30
  emits: (event: "update:value" | "change", ...args: any[]) => void;
28
31
  innerValue: import("vue").Ref<[{
@@ -266,12 +269,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
266
269
  default: () => {};
267
270
  };
268
271
  startField: {
269
- type: StringConstructor;
272
+ type: (StringConstructor | ArrayConstructor)[];
270
273
  required: false;
271
274
  default: string;
272
275
  };
273
276
  endField: {
274
- type: StringConstructor;
277
+ type: (StringConstructor | ArrayConstructor)[];
275
278
  required: false;
276
279
  default: string;
277
280
  };
@@ -285,8 +288,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
285
288
  onChange?: ((...args: any[]) => any) | undefined;
286
289
  }>, {
287
290
  value: Record<string, any>;
288
- startField: string;
289
- endField: string;
291
+ startField: string | unknown[];
292
+ endField: string | unknown[];
290
293
  format: string;
291
294
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
292
295
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"RangePicker.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/date/RangePicker.vue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,MAAM,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA+CG,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AApC9C,wBAmEE"}
1
+ {"version":3,"file":"RangePicker.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/date/RangePicker.vue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,MAAM,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;2BAsBI,MAAM,GAAG,MAAM,EAAE,KAAG,MAAM,EAAE;qBAKlC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAClD,CAAC,SACC,MAAM,GAAG,MAAM,EAAE,KACvB,MAAM,GAAG,IAAI,GAAG,SAAS;qBAeJ,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAClD,CAAC,SACC,MAAM,GAAG,MAAM,EAAE,SACjB,MAAM,GAAG,IAAI,KACnB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAiDyB,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAvF9C,wBAoHE"}
@@ -1,9 +1,24 @@
1
1
  import { Ref } from "vue";
2
- declare const _default: import("vue").DefineComponent<{}, {
2
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
+ themeJson: {
4
+ type: ObjectConstructor;
5
+ required: false;
6
+ default: () => {};
7
+ };
8
+ }>, {
9
+ props: any;
3
10
  appTheme: Ref<unknown, unknown>;
4
11
  useTheme: () => {
5
12
  appTheme: Ref<unknown>;
6
13
  };
7
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
14
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ themeJson: {
16
+ type: ObjectConstructor;
17
+ required: false;
18
+ default: () => {};
19
+ };
20
+ }>> & Readonly<{}>, {
21
+ themeJson: Record<string, any>;
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
8
23
  export default _default;
9
24
  //# sourceMappingURL=ThemeApp.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeApp.vue.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;;;oBAajB;QAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KAAE;;AAN/C,wBA2CE"}
1
+ {"version":3,"file":"ThemeApp.vue.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;;;;;;;;;;oBAkBjB;QAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KAAE;;;;;;;;;;AAX/C,wBAsEE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"names":[],"mappings":";AAOA,wBA4JG"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"names":[],"mappings":";AAOA,wBAiKG"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingDrawer.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,WAAW,EAAwB,MAAM,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWvE,wBAuFG"}
1
+ {"version":3,"file":"SettingDrawer.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,WAAW,EAAwB,MAAM,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWvE,wBA4FG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/tab/Tab.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,WAAW,EAAS,MAAM,KAAK,CAAC;;;;;;;oBA6F/B,MAAM;sBAQJ,KAAK,OAAO,MAAM,GAAG,SAAS;oBAjFpC;QACnB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KACpC;;;;wBAqEwB,MAAM;0BAQJ,KAAK,OAAO,MAAM,GAAG,SAAS;;;;;AAzFzD,wBAmHE"}
1
+ {"version":3,"file":"Tab.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/tab/Tab.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,WAAW,EAAS,MAAM,KAAK,CAAC;;;;;;;oBA4F/B,MAAM;sBAQJ,KAAK,OAAO,MAAM,GAAG,SAAS;oBAhFpC;QACnB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KACpC;;;;wBAoEwB,MAAM;0BAQJ,KAAK,OAAO,MAAM,GAAG,SAAS;;;;;AAxFzD,wBAkHE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "5.0.8",
3
+ "version": "5.0.10",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -39,8 +39,8 @@
39
39
  "vue": "^3.5.13",
40
40
  "vue-request": "^2.0.4",
41
41
  "vue-router": "^4.5.0",
42
- "@ditari/store": "^5.0.5",
43
- "@ditari/core": "^5.0.5"
42
+ "@ditari/store": "^5.0.6",
43
+ "@ditari/core": "^5.0.6"
44
44
  },
45
45
  "peerDependencies": {}
46
46
  }