@ditari/bsui 5.0.9 → 5.0.11

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 (31) 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/settings/SettingDrawer.cjs +11 -3
  6. package/dist/cjs/components/layout/components/settings/SettingDrawer.cjs.map +1 -1
  7. package/dist/cjs/components/tab/Search.cjs +1 -0
  8. package/dist/cjs/components/tab/Search.cjs.map +1 -1
  9. package/dist/cjs/components/table/Table.cjs +5 -4
  10. package/dist/cjs/components/table/Table.cjs.map +1 -1
  11. package/dist/css/components/layout/components/settings/style/index.css +1 -1
  12. package/dist/css/index.css +1 -1
  13. package/dist/esm/components/date/RangePicker.vue2.mjs +53 -24
  14. package/dist/esm/components/date/RangePicker.vue2.mjs.map +1 -1
  15. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs +40 -16
  16. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.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/Search.mjs +1 -0
  20. package/dist/esm/components/tab/Search.mjs.map +1 -1
  21. package/dist/esm/components/table/Table.mjs +6 -5
  22. package/dist/esm/components/table/Table.mjs.map +1 -1
  23. package/dist/style/layout/components/settings/style/index.scss +1 -1
  24. package/dist/types/components/date/RangePicker.vue.d.ts +9 -6
  25. package/dist/types/components/date/RangePicker.vue.d.ts.map +1 -1
  26. package/dist/types/components/layout/components/layout/ThemeApp.vue.d.ts +17 -2
  27. package/dist/types/components/layout/components/layout/ThemeApp.vue.d.ts.map +1 -1
  28. package/dist/types/components/layout/components/settings/SettingDrawer.d.ts.map +1 -1
  29. package/dist/types/components/tab/Search.d.ts.map +1 -1
  30. package/dist/types/components/table/Table.d.ts.map +1 -1
  31. 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;;;;;;;;;;;;;;;;"}
@@ -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":"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"}
@@ -135,6 +135,7 @@ var Search = /* @__PURE__ */ vue.defineComponent({
135
135
  .hostname {
136
136
  max-width: 180px;
137
137
  overflow: hidden;
138
+ white-space: nowrap;
138
139
  }
139
140
 
140
141
  .split {
@@ -1 +1 @@
1
- {"version":3,"file":"Search.cjs","sources":["../../../../src/components/tab/Search.tsx"],"sourcesContent":["import { computed, ComputedRef, defineComponent, h, ref, watch } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { useMagicKeys, useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport {\r\n CloseOutlined,\r\n DownOutlined,\r\n SearchOutlined,\r\n UnorderedListOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport { type NavTabsState, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport dayjs from \"dayjs\";\r\n\r\nexport default defineComponent({\r\n name: \"Search\",\r\n setup() {\r\n const router = useRouter();\r\n\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n\r\n const { getList, deleteTabs } = useNavTabStore();\r\n // 用来监听 Ctrl + Shift + S\r\n const keys = useMagicKeys();\r\n const shiftCtrlA = keys[\"Shift+Ctrl+S\"];\r\n const open = ref(false);\r\n const { y } = useWindowScroll();\r\n\r\n const navTabList = computed(() => {\r\n return getList!.sort((a, b) => (b.openTime || 0) - (a.openTime || 0));\r\n });\r\n\r\n watch(shiftCtrlA, v => {\r\n if (v) {\r\n open.value = !open.value;\r\n }\r\n });\r\n watch(\r\n () => y.value,\r\n val => {\r\n if (val > 0) {\r\n open.value = false;\r\n }\r\n }\r\n );\r\n\r\n const onCloseTab = (path: string) => {\r\n deleteTabs(path);\r\n };\r\n\r\n const searchStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n border-bottom: 1px solid ${token.value.colorBorder};\r\n `\r\n );\r\n\r\n const searchListStyle = computed(\r\n () => css`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 400px;\r\n overflow-y: overlay;\r\n user-select: none;\r\n\r\n /* 整个滚动条 */\r\n\r\n ::-webkit-scrollbar {\r\n width: 4px; /* 垂直滚动条的宽度 */\r\n height: 4px; /* 水平滚动条的高度 */\r\n }\r\n\r\n /* 滚动条轨道 */\r\n\r\n ::-webkit-scrollbar-track {\r\n background: transparent; /* 轨道背景色 */\r\n border-radius: 0; /* 轨道圆角 */\r\n }\r\n\r\n /* 滚动条滑块 */\r\n\r\n ::-webkit-scrollbar-thumb {\r\n //background: #888; /* 滑块背景色 */\r\n // border-radius: 6px; /* 滑块圆角 */\r\n border: 3px solid ${token.value.colorPrimaryBorder}; /* 滑块边框 */\r\n }\r\n\r\n /* 滚动条滑块悬停效果 */\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background: red; /* 滑块悬停背景色 */\r\n }\r\n\r\n .search-title {\r\n position: sticky;\r\n top: 0;\r\n padding: 10px;\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 10px;\r\n width: 400px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n .close-wrapper {\r\n display: block;\r\n }\r\n }\r\n\r\n .icon {\r\n width: 42px;\r\n height: 42px;\r\n border-radius: 10px;\r\n background-color: ${token.value.colorPrimary};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .content {\r\n padding-left: 10px;\r\n\r\n .time-ago {\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n\r\n .hostname {\r\n max-width: 180px;\r\n overflow: hidden;\r\n }\r\n\r\n .split {\r\n width: 4px;\r\n height: 4px;\r\n display: inline-block;\r\n background-color: ${token.value.colorPrimary};\r\n border-radius: 10px;\r\n margin: 0 6px;\r\n }\r\n }\r\n }\r\n\r\n .close-wrapper {\r\n display: none;\r\n flex: 1;\r\n text-align: right;\r\n\r\n .close-btn {\r\n display: inline-block;\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n // background-color: ${token.value.colorBgLayout};\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n function timeAgo(providedTime: number) {\r\n const now = dayjs();\r\n const diffInSeconds = now.diff(providedTime, \"second\"); // 计算时间差(秒)\r\n const diffInMinutes = now.diff(providedTime, \"minute\"); // 计算时间差(分钟)\r\n const diffInHours = now.diff(providedTime, \"hour\"); // 计算时间差(小时)\r\n\r\n if (diffInMinutes < 1) {\r\n return `${diffInSeconds} 秒前`;\r\n } else if (diffInHours < 1) {\r\n return `${diffInMinutes} 分钟前`;\r\n } else {\r\n return `${diffInHours} 小时前`;\r\n }\r\n }\r\n\r\n const onJump = (item: NavTabsState) => {\r\n if (item.fullPath) {\r\n router.push(item.fullPath);\r\n }\r\n open.value = false;\r\n };\r\n\r\n return () => (\r\n <div>\r\n <a-popover\r\n v-model:open={open.value}\r\n placement={\"bottomRight\"}\r\n trigger={\"click\"}\r\n overlayClassName={\"search-popover-wrapper\"}\r\n >\r\n {{\r\n default: () => (\r\n <div>\r\n <a-button\r\n style={{ borderRadius: \"10px\" }}\r\n icon={h(DownOutlined)}\r\n title={\"搜索标签页\"}\r\n />\r\n </div>\r\n ),\r\n content: () => (\r\n <>\r\n <div class={searchStyle.value}>\r\n <a-input placeholder={\"搜索标签页\"} bordered={false}>\r\n {{\r\n prefix: () => <SearchOutlined />,\r\n suffix: () => (\r\n <span style={{ color: \"rgba(0, 0, 0, 0.45)\" }}>\r\n Ctrl+Shift+S\r\n </span>\r\n )\r\n }}\r\n </a-input>\r\n </div>\r\n <div class={searchListStyle.value}>\r\n <span class={\"search-title\"}>打开的标签页</span>\r\n <ul>\r\n {navTabList.value.map(item => (\r\n <li onClick={() => onJump(item)}>\r\n <div class={\"icon\"}>\r\n <UnorderedListOutlined />\r\n </div>\r\n <div class={\"content\"}>\r\n <div class={\"title\"}>{item.meta?.title}</div>\r\n <div class={\"time-ago\"}>\r\n <span class={\"hostname\"}>\r\n {window.location.hostname + \"\" + item.path}\r\n </span>\r\n <span class={\"split\"}></span>\r\n <span class={\"time\"}>\r\n {timeAgo(item.openTime ?? 0)}\r\n </span>\r\n </div>\r\n </div>\r\n <div class={\"close-wrapper\"}>\r\n <span\r\n class={\"close-btn\"}\r\n onClick={() => onCloseTab(item.fullPath || \"\")}\r\n >\r\n <CloseOutlined />\r\n </span>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n }}\r\n </a-popover>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","router","useRouter","useToken","theme","token","getList","deleteTabs","useNavTabStore","keys","useMagicKeys","shiftCtrlA","open","ref","y","useWindowScroll","navTabList","computed","sort","a","b","openTime","watch","v","value","val","onCloseTab","path","searchStyle","css","colorBorder","searchListStyle","colorPrimaryBorder","colorBgLayout","colorPrimary","timeAgo","providedTime","now","dayjs","diffInSeconds","diff","diffInMinutes","diffInHours","onJump","item","fullPath","push","_createVNode","_resolveComponent","$event","default","borderRadius","h","DownOutlined","content","_Fragment","prefix","SearchOutlined","suffix","color","_createTextVNode","map","onClick","UnorderedListOutlined","meta","title","window","location","hostname","CloseOutlined"],"mappings":"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"}
1
+ {"version":3,"file":"Search.cjs","sources":["../../../../src/components/tab/Search.tsx"],"sourcesContent":["import { computed, ComputedRef, defineComponent, h, ref, watch } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { useMagicKeys, useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport {\r\n CloseOutlined,\r\n DownOutlined,\r\n SearchOutlined,\r\n UnorderedListOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport { type NavTabsState, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport dayjs from \"dayjs\";\r\n\r\nexport default defineComponent({\r\n name: \"Search\",\r\n setup() {\r\n const router = useRouter();\r\n\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n\r\n const { getList, deleteTabs } = useNavTabStore();\r\n // 用来监听 Ctrl + Shift + S\r\n const keys = useMagicKeys();\r\n const shiftCtrlA = keys[\"Shift+Ctrl+S\"];\r\n const open = ref(false);\r\n const { y } = useWindowScroll();\r\n\r\n const navTabList = computed(() => {\r\n return getList!.sort((a, b) => (b.openTime || 0) - (a.openTime || 0));\r\n });\r\n\r\n watch(shiftCtrlA, v => {\r\n if (v) {\r\n open.value = !open.value;\r\n }\r\n });\r\n watch(\r\n () => y.value,\r\n val => {\r\n if (val > 0) {\r\n open.value = false;\r\n }\r\n }\r\n );\r\n\r\n const onCloseTab = (path: string) => {\r\n deleteTabs(path);\r\n };\r\n\r\n const searchStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n border-bottom: 1px solid ${token.value.colorBorder};\r\n `\r\n );\r\n\r\n const searchListStyle = computed(\r\n () => css`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 400px;\r\n overflow-y: overlay;\r\n user-select: none;\r\n\r\n /* 整个滚动条 */\r\n\r\n ::-webkit-scrollbar {\r\n width: 4px; /* 垂直滚动条的宽度 */\r\n height: 4px; /* 水平滚动条的高度 */\r\n }\r\n\r\n /* 滚动条轨道 */\r\n\r\n ::-webkit-scrollbar-track {\r\n background: transparent; /* 轨道背景色 */\r\n border-radius: 0; /* 轨道圆角 */\r\n }\r\n\r\n /* 滚动条滑块 */\r\n\r\n ::-webkit-scrollbar-thumb {\r\n //background: #888; /* 滑块背景色 */\r\n // border-radius: 6px; /* 滑块圆角 */\r\n border: 3px solid ${token.value.colorPrimaryBorder}; /* 滑块边框 */\r\n }\r\n\r\n /* 滚动条滑块悬停效果 */\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background: red; /* 滑块悬停背景色 */\r\n }\r\n\r\n .search-title {\r\n position: sticky;\r\n top: 0;\r\n padding: 10px;\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 10px;\r\n width: 400px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n .close-wrapper {\r\n display: block;\r\n }\r\n }\r\n\r\n .icon {\r\n width: 42px;\r\n height: 42px;\r\n border-radius: 10px;\r\n background-color: ${token.value.colorPrimary};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .content {\r\n padding-left: 10px;\r\n\r\n .time-ago {\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n\r\n .hostname {\r\n max-width: 180px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n .split {\r\n width: 4px;\r\n height: 4px;\r\n display: inline-block;\r\n background-color: ${token.value.colorPrimary};\r\n border-radius: 10px;\r\n margin: 0 6px;\r\n }\r\n }\r\n }\r\n\r\n .close-wrapper {\r\n display: none;\r\n flex: 1;\r\n text-align: right;\r\n\r\n .close-btn {\r\n display: inline-block;\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n // background-color: ${token.value.colorBgLayout};\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n function timeAgo(providedTime: number) {\r\n const now = dayjs();\r\n const diffInSeconds = now.diff(providedTime, \"second\"); // 计算时间差(秒)\r\n const diffInMinutes = now.diff(providedTime, \"minute\"); // 计算时间差(分钟)\r\n const diffInHours = now.diff(providedTime, \"hour\"); // 计算时间差(小时)\r\n\r\n if (diffInMinutes < 1) {\r\n return `${diffInSeconds} 秒前`;\r\n } else if (diffInHours < 1) {\r\n return `${diffInMinutes} 分钟前`;\r\n } else {\r\n return `${diffInHours} 小时前`;\r\n }\r\n }\r\n\r\n const onJump = (item: NavTabsState) => {\r\n if (item.fullPath) {\r\n router.push(item.fullPath);\r\n }\r\n open.value = false;\r\n };\r\n\r\n return () => (\r\n <div>\r\n <a-popover\r\n v-model:open={open.value}\r\n placement={\"bottomRight\"}\r\n trigger={\"click\"}\r\n overlayClassName={\"search-popover-wrapper\"}\r\n >\r\n {{\r\n default: () => (\r\n <div>\r\n <a-button\r\n style={{ borderRadius: \"10px\" }}\r\n icon={h(DownOutlined)}\r\n title={\"搜索标签页\"}\r\n />\r\n </div>\r\n ),\r\n content: () => (\r\n <>\r\n <div class={searchStyle.value}>\r\n <a-input placeholder={\"搜索标签页\"} bordered={false}>\r\n {{\r\n prefix: () => <SearchOutlined />,\r\n suffix: () => (\r\n <span style={{ color: \"rgba(0, 0, 0, 0.45)\" }}>\r\n Ctrl+Shift+S\r\n </span>\r\n )\r\n }}\r\n </a-input>\r\n </div>\r\n <div class={searchListStyle.value}>\r\n <span class={\"search-title\"}>打开的标签页</span>\r\n <ul>\r\n {navTabList.value.map(item => (\r\n <li onClick={() => onJump(item)}>\r\n <div class={\"icon\"}>\r\n <UnorderedListOutlined />\r\n </div>\r\n <div class={\"content\"}>\r\n <div class={\"title\"}>{item.meta?.title}</div>\r\n <div class={\"time-ago\"}>\r\n <span class={\"hostname\"}>\r\n {window.location.hostname + \"\" + item.path}\r\n </span>\r\n <span class={\"split\"}></span>\r\n <span class={\"time\"}>\r\n {timeAgo(item.openTime ?? 0)}\r\n </span>\r\n </div>\r\n </div>\r\n <div class={\"close-wrapper\"}>\r\n <span\r\n class={\"close-btn\"}\r\n onClick={() => onCloseTab(item.fullPath || \"\")}\r\n >\r\n <CloseOutlined />\r\n </span>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n }}\r\n </a-popover>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","router","useRouter","useToken","theme","token","getList","deleteTabs","useNavTabStore","keys","useMagicKeys","shiftCtrlA","open","ref","y","useWindowScroll","navTabList","computed","sort","a","b","openTime","watch","v","value","val","onCloseTab","path","searchStyle","css","colorBorder","searchListStyle","colorPrimaryBorder","colorBgLayout","colorPrimary","timeAgo","providedTime","now","dayjs","diffInSeconds","diff","diffInMinutes","diffInHours","onJump","item","fullPath","push","_createVNode","_resolveComponent","$event","default","borderRadius","h","DownOutlined","content","_Fragment","prefix","SearchOutlined","suffix","color","_createTextVNode","map","onClick","UnorderedListOutlined","meta","title","window","location","hostname","CloseOutlined"],"mappings":"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"}
@@ -95,7 +95,8 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
95
95
  emits: ["update:keys"],
96
96
  setup(props, {
97
97
  emit,
98
- slots
98
+ slots,
99
+ attrs
99
100
  }) {
100
101
  const selectedRowKeys = vue.ref(props.keys || []);
101
102
  const {
@@ -334,7 +335,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
334
335
  "vertical": true,
335
336
  "ref": tableRef
336
337
  }, {
337
- default: () => [vue.createVNode(antDesignVue.Table, {
338
+ default: () => [vue.createVNode(antDesignVue.Table, vue.mergeProps(attrs, {
338
339
  "loading": props.loading,
339
340
  "size": props.size,
340
341
  "bordered": props.bordered,
@@ -349,9 +350,9 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
349
350
  x: "100%",
350
351
  scrollToFirstRowOnChange: true
351
352
  }
352
- }, tableSlots), vue.createVNode("div", {
353
+ }), tableSlots), pagination.value && vue.createVNode("div", {
353
354
  "class": [paginationStyle, "d-pagination"]
354
- }, [pagination && vue.createVNode(antDesignVue.Pagination, {
355
+ }, [vue.createVNode(antDesignVue.Pagination, {
355
356
  "current": paginationConfig.value.current,
356
357
  "onUpdate:current": ($event) => paginationConfig.value.current = $event,
357
358
  "pageSize": paginationConfig.value.pageSize,
@@ -1 +1 @@
1
- {"version":3,"file":"Table.cjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType = \"small\" | \"middle\" | \"large\" | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (current: number, size: number) => void;\r\n // 单击\r\n click?: (record: Record<string, unknown>, index: number) => void;\r\n // 双击\r\n dbClick?: (record: Record<string, unknown>, index: number) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (record: unknown) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: { type: String as PropType<SizeType>, default: \"small\" },\r\n keys: { type: Array as PropType<Key[]>, default: () => [] },\r\n config: { type: Object as PropType<Config<T>>, required: true }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } = usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } = useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() => merge({}, defaultConfig, props.config));\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(() => _config.value.pagination || false);\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: (params: unknown) => slots.bodyCell?.(params),\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\"ant-table-header\")[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight = useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight = useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height - paginationHeight - headerHeight - summaryHeight;\r\n\r\n antTableBodyRef.value = tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height = tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig = computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (page: number, pageSize: number) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: { click, dbClick, selection, getCheckboxProps } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value = selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement = curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(activeRowClass)\r\n ) {\r\n parentElement.classList.remove(activeRowClass);\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<TableRowSelection<unknown> | undefined>(\r\n undefined\r\n );\r\n\r\n const { rowKey, config: { getCheckboxProps, selection } = {} } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (record, selected) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected ? [data[rowKey]] : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter((key: Key) => key !== data[rowKey]);\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onChange = (rowKeys: Key[], selectedRows: unknown[]) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<string, never>[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record => (record as Record<string, unknown>)[rowKey] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter((key: Key) => !selectedRowKeys.value.includes(key))\r\n )\r\n : selectedRowKeys.value.filter((key: Key) => !_ids.includes(key));\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onChange,\r\n fixed: true,\r\n columnTitle: selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {pagination && (\r\n <Pagination\r\n v-model:current={paginationConfig.value.current}\r\n v-model:pageSize={paginationConfig.value.pageSize}\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={paginationConfig.value.hideOnSinglePage}\r\n show-quick-jumper={paginationConfig.value.showQuickJumper}\r\n default-page-size={paginationConfig.value.defaultPageSize}\r\n page-size-options={paginationConfig.value.pageSizeOptions}\r\n show-total={paginationConfig.value.showTotal}\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n )}\r\n </div>\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onChange","rowKeys","selectedRows","_ids","map","includes","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
1
+ {"version":3,"file":"Table.cjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType = \"small\" | \"middle\" | \"large\" | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (current: number, size: number) => void;\r\n // 单击\r\n click?: (record: Record<string, unknown>, index: number) => void;\r\n // 双击\r\n dbClick?: (record: Record<string, unknown>, index: number) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (record: unknown) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: { type: String as PropType<SizeType>, default: \"small\" },\r\n keys: { type: Array as PropType<Key[]>, default: () => [] },\r\n config: { type: Object as PropType<Config<T>>, required: true }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } = usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } = useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() => merge({}, defaultConfig, props.config));\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(() => _config.value.pagination || false);\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: (params: unknown) => slots.bodyCell?.(params),\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\"ant-table-header\")[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight = useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight = useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height - paginationHeight - headerHeight - summaryHeight;\r\n\r\n antTableBodyRef.value = tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height = tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig = computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (page: number, pageSize: number) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: { click, dbClick, selection, getCheckboxProps } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value = selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement = curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(activeRowClass)\r\n ) {\r\n parentElement.classList.remove(activeRowClass);\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<TableRowSelection<unknown> | undefined>(\r\n undefined\r\n );\r\n\r\n const { rowKey, config: { getCheckboxProps, selection } = {} } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (record, selected) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected ? [data[rowKey]] : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter((key: Key) => key !== data[rowKey]);\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onChange = (rowKeys: Key[], selectedRows: unknown[]) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<string, never>[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record => (record as Record<string, unknown>)[rowKey] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter((key: Key) => !selectedRowKeys.value.includes(key))\r\n )\r\n : selectedRowKeys.value.filter((key: Key) => !_ids.includes(key));\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onChange,\r\n fixed: true,\r\n columnTitle: selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={paginationConfig.value.current}\r\n v-model:pageSize={paginationConfig.value.pageSize}\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={paginationConfig.value.hideOnSinglePage}\r\n show-quick-jumper={paginationConfig.value.showQuickJumper}\r\n default-page-size={paginationConfig.value.defaultPageSize}\r\n page-size-options={paginationConfig.value.pageSizeOptions}\r\n show-total={paginationConfig.value.showTotal}\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onChange","rowKeys","selectedRows","_ids","map","includes","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
@@ -1 +1 @@
1
- .ant-pro-drawer-setting-handle{position:fixed;inset-block-start:240px;inset-inline-end:0;z-index:1;display:flex;align-items:center;justify-content:center;width:48px;height:48px;font-size:16px;text-align:center;backdrop-filter:saturate(180%) blur(20px);cursor:pointer;pointer-events:auto}.ant-pro-drawer-setting-handle .icon{color:#fff}.ant-pro-drawer-setting-handle-icon-dark{color:#e5e0d8}.ant-pro-drawer-setting-theme-color{margin-top:16px;overflow:hidden}.ant-pro-drawer-setting-theme-color-block{float:left;width:20px;height:20px;margin-top:8px;margin-right:8px;font-weight:700;display:flex;color:#fff;align-items:center;justify-content:center;border-radius:2px;cursor:pointer}.ant-pro-drawer-setting-block-checkbox{display:flex;min-height:42px}.ant-pro-drawer-setting-block-checkbox-selectIcon{position:absolute;right:6px;bottom:4px;font-weight:700;font-size:14px;pointer-events:none}.ant-pro-drawer-setting-block-checkbox-item{position:relative;width:44px;height:36px;margin-right:16px;overflow:hidden;background-color:#f0f2f5;border-radius:4px;box-shadow:0 1px 2.5px 0 rgba(0,0,0,.18);cursor:pointer}.ant-pro-drawer-setting-block-checkbox-item::before{position:absolute;top:0;left:0;width:33%;height:100%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item::after{position:absolute;top:0;left:0;width:100%;height:25%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-dark{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-dark::before{background-color:rgba(0,21,41,.65);content:""}.ant-pro-drawer-setting-block-checkbox-item-dark::after{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-light::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-light::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-inverted::before,.ant-pro-drawer-setting-block-checkbox-item-side::before{z-index:1;background-color:#001529;content:""}.ant-pro-drawer-setting-block-checkbox-item-inverted::after,.ant-pro-drawer-setting-block-checkbox-item-side::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-top::before{background-color:rgba(0,0,0,0);content:""}.ant-pro-drawer-setting-block-checkbox-item-top::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-item-mix::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-mix::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-theme-item{background:#2a2c2c;box-shadow:rgba(13,13,13,.18) 0px 1px 2.5px 0px}.ant-pro-drawer-setting-block-checkbox-theme-item-light::before,.ant-pro-drawer-setting-block-checkbox-theme-item-light::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-dark::before,.ant-pro-drawer-setting-block-checkbox-theme-item-dark::after{background-color:rgba(15,28,41,.65)}.ant-pro-drawer-setting-block-checkbox-theme-item-side::before,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::before{background-color:#0f1c29}.ant-pro-drawer-setting-block-checkbox-theme-item-side::after,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-mix::before{background-color:#242525}
1
+ .ant-pro-drawer-setting-handle{position:fixed;inset-block-start:240px;inset-inline-end:0;z-index:10;display:flex;align-items:center;justify-content:center;width:48px;height:48px;font-size:16px;text-align:center;backdrop-filter:saturate(180%) blur(20px);cursor:pointer;pointer-events:auto}.ant-pro-drawer-setting-handle .icon{color:#fff}.ant-pro-drawer-setting-handle-icon-dark{color:#e5e0d8}.ant-pro-drawer-setting-theme-color{margin-top:16px;overflow:hidden}.ant-pro-drawer-setting-theme-color-block{float:left;width:20px;height:20px;margin-top:8px;margin-right:8px;font-weight:700;display:flex;color:#fff;align-items:center;justify-content:center;border-radius:2px;cursor:pointer}.ant-pro-drawer-setting-block-checkbox{display:flex;min-height:42px}.ant-pro-drawer-setting-block-checkbox-selectIcon{position:absolute;right:6px;bottom:4px;font-weight:700;font-size:14px;pointer-events:none}.ant-pro-drawer-setting-block-checkbox-item{position:relative;width:44px;height:36px;margin-right:16px;overflow:hidden;background-color:#f0f2f5;border-radius:4px;box-shadow:0 1px 2.5px 0 rgba(0,0,0,.18);cursor:pointer}.ant-pro-drawer-setting-block-checkbox-item::before{position:absolute;top:0;left:0;width:33%;height:100%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item::after{position:absolute;top:0;left:0;width:100%;height:25%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-dark{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-dark::before{background-color:rgba(0,21,41,.65);content:""}.ant-pro-drawer-setting-block-checkbox-item-dark::after{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-light::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-light::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-inverted::before,.ant-pro-drawer-setting-block-checkbox-item-side::before{z-index:1;background-color:#001529;content:""}.ant-pro-drawer-setting-block-checkbox-item-inverted::after,.ant-pro-drawer-setting-block-checkbox-item-side::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-top::before{background-color:rgba(0,0,0,0);content:""}.ant-pro-drawer-setting-block-checkbox-item-top::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-item-mix::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-mix::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-theme-item{background:#2a2c2c;box-shadow:rgba(13,13,13,.18) 0px 1px 2.5px 0px}.ant-pro-drawer-setting-block-checkbox-theme-item-light::before,.ant-pro-drawer-setting-block-checkbox-theme-item-light::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-dark::before,.ant-pro-drawer-setting-block-checkbox-theme-item-dark::after{background-color:rgba(15,28,41,.65)}.ant-pro-drawer-setting-block-checkbox-theme-item-side::before,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::before{background-color:#0f1c29}.ant-pro-drawer-setting-block-checkbox-theme-item-side::after,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-mix::before{background-color:#242525}