@ditari/bsui 5.1.25 → 5.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,14 +51,16 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues
51
51
  if (!isShow(item)) {
52
52
  return false;
53
53
  }
54
- const visibleIndex = visibleButtons.value.findIndex((v) => v.title === item.title);
54
+ const visibleIndex = visibleButtons.value.findIndex(
55
+ (v) => v.title === item.title
56
+ );
55
57
  return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;
56
58
  };
57
59
  return (_ctx, _cache) => {
58
60
  const _component_a_divider = vue.resolveComponent("a-divider");
59
61
  return vue.openBlock(), vue.createElementBlock("div", {
60
62
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
61
- }, ["stop"]))
63
+ }, ["stop", "self"]))
62
64
  }, [
63
65
  (vue.openBlock(true), vue.createElementBlock(
64
66
  vue.Fragment,
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBar.vue2.cjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n import { computed, isVNode, type VNode } from \"vue\";\r\n\r\n defineOptions({\r\n name: \"DActionBar\"\r\n });\r\n\r\n interface ButtonItem {\r\n title: string | VNode;\r\n status?: boolean | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n }\r\n\r\n // 2. 普通的 Props 声明\r\n const props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n /**\r\n * 判断按钮是否显示\r\n */\r\n const isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n };\r\n\r\n /**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\n const visibleButtons = computed(() => {\r\n const groups: ButtonItem[] = props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n });\r\n\r\n /**\r\n * 判断分隔线状态\r\n */\r\n const showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex((v: ButtonItem) => v.title === item.title);\r\n return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;\r\n };\r\n</script>\r\n\r\n<template>\r\n <div @click.stop>\r\n <template v-for=\"(item, index) in actions || buttonGroups || []\" :key=\"index\">\r\n <a v-if=\"isShow(item)\" @click.stop=\"(item.onClick || item.onEvent)?.(record)\">\r\n <template v-if=\"isVNode(item.title)\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["computed","_createElementBlock","_openBlock","_Fragment","_withModifiers","isVNode","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeE,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiBA,aAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GAAuB,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AACrE,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK,KAAK,CAAA;AAC7F,MAAA,OAAO,YAAA,KAAiB,CAAA,CAAA,IAAM,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAC7E,CAAA;;;8BAIAC,sBAAA,CAgBM,KAAA,EAAA;AAAA,QAhBA,OAAA,8CAAD,MAAA;AAAA,QAAA,CAAA,EAAW,CAAA,MAAA,CAAA,CAAA;AAAA;SACdC,aAAA,CAAA,IAAA,CAAA,EAAAD,sBAAA;AAAA,UAcWE,YAAA;AAAA;yBAduB,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBAA0C,KAAA,EAAK;AAAA,cAAA;AAAA,gBACjE,OAAO,IAAI,CAAA,qBAApBF,uBAOI,GAAA,EAAA;AAAA;kBAPoB,OAAA,EAAKG,iBAAA,CAAA,CAAA,MAAA,KAAA;;AAAQ,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA,EAAM,CAAA,MAAA,CAAA;AAAA;kBACzDC,WAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,qBAChCC,eAAA,CAA+CC,2BAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,+DAEvCN,sBAAA;AAAA,oBAEWE,YAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNK,mBAAA;AAAA,wBAAAC,mBAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,qBADxBH,gBAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ActionBar.vue2.cjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, isVNode, type VNode } from \"vue\";\r\n\r\ndefineOptions({\r\n name: \"DActionBar\"\r\n});\r\n\r\ninterface ButtonItem {\r\n title: string | VNode;\r\n status?:\r\n | boolean\r\n | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n}\r\n\r\n// 2. 普通的 Props 声明\r\nconst props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n/**\r\n * 判断按钮是否显示\r\n */\r\nconst isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n};\r\n\r\n/**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\nconst visibleButtons = computed(() => {\r\n const groups: ButtonItem[] =\r\n props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n});\r\n\r\n/**\r\n * 判断分隔线状态\r\n */\r\nconst showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex(\r\n (v: ButtonItem) => v.title === item.title\r\n );\r\n return (\r\n visibleIndex !== -1 &&\r\n visibleIndex < visibleButtons.value.length - 1\r\n );\r\n};\r\n</script>\r\n\r\n<template>\r\n <div @click.stop.self>\r\n <template\r\n v-for=\"(item, index) in actions || buttonGroups || []\"\r\n :key=\"index\"\r\n >\r\n <a\r\n v-if=\"isShow(item)\"\r\n @click.stop=\"\r\n (item.onClick || item.onEvent)?.(record)\r\n \"\r\n >\r\n <template v-if=\"isVNode(item.title)\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["computed","_createElementBlock","_openBlock","_Fragment","_withModifiers","isVNode","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiBA,aAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GACJ,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AAC1C,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA;AAAA,QACxC,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK;AAAA,OACtC;AACA,MAAA,OACE,YAAA,KAAiB,CAAA,CAAA,IACjB,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAEjD,CAAA;;;8BAIEC,sBAAA,CAwBM,KAAA,EAAA;AAAA,QAxBA,OAAA,8CAAD,MAAA;AAAA,QAAA,CAAA,EAAgB,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA;AAAA;SACnBC,aAAA,CAAA,IAAA,CAAA,EAAAD,sBAAA;AAAA,UAsBWE,YAAA;AAAA;yBArBe,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBACb,KAAA,EAAK;AAAA,cAAA;AAAA,gBAGH,OAAO,IAAI,CAAA,qBADnBF,uBAYI,GAAA,EAAA;AAAA;kBAVD,OAAA,EAAKG,iBAAA,CAAA,CAAA,MAAA,KAAA;;AAAoB,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA;;kBAI1CC,WAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,qBAChCC,eAAA,CAA+CC,2BAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,+DAEvCN,sBAAA;AAAA,oBAEWE,YAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNK,mBAAA;AAAA,wBAAAC,mBAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,qBADxBH,gBAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
@@ -88,6 +88,13 @@ const paginationStyle = css.css`
88
88
  justify-content: center;
89
89
  padding-top: 6px;
90
90
  `;
91
+ function isArrayEqual(a, b) {
92
+ if (a.length !== b.length) return false;
93
+ for (let i = 0; i < a.length; i++) {
94
+ if (a[i] !== b[i]) return false;
95
+ }
96
+ return true;
97
+ }
91
98
  const DTable = /* @__PURE__ */ vue.defineComponent({
92
99
  name: "DTable",
93
100
  props: tableProps(),
@@ -98,7 +105,6 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
98
105
  slots,
99
106
  attrs
100
107
  }) {
101
- const selectedRowKeys = vue.ref(props.keys || []);
102
108
  const {
103
109
  columns,
104
110
  data,
@@ -107,16 +113,26 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
107
113
  const {
108
114
  tableSlots
109
115
  } = useSlots();
110
- const {
111
- paginationConfig,
112
- onPaginationChange
113
- } = usePagination();
114
116
  const {
115
117
  tableRef,
116
118
  tableHeight,
117
119
  antTableBodyRef
118
120
  } = useHeight();
119
- const rowSelection = useRowSelection();
121
+ const tableKey = vue.ref(0);
122
+ const {
123
+ rowSelection,
124
+ clearSelection
125
+ } = useRowSelection();
126
+ const customRowFn = useCustomRow();
127
+ const {
128
+ paginationConfig,
129
+ onPaginationChange
130
+ } = usePagination();
131
+ const scrollConfig = vue.computed(() => ({
132
+ y: tableHeight.value,
133
+ x: "100%",
134
+ scrollToFirstRowOnChange: true
135
+ }));
120
136
  vue.onMounted(() => {
121
137
  });
122
138
  function useProps() {
@@ -191,6 +207,15 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
191
207
  }, {
192
208
  immediate: true
193
209
  });
210
+ vue.watch(tableKey, () => {
211
+ if (props.height > 0) {
212
+ vue.nextTick(() => {
213
+ requestAnimationFrame(() => {
214
+ _tableBodyHeight(props.height);
215
+ });
216
+ });
217
+ }
218
+ });
194
219
  function _tableBodyHeight(height) {
195
220
  var _a, _b, _c;
196
221
  const tableEl = (_a = tableRef2.value) == null ? void 0 : _a.$el;
@@ -224,7 +249,6 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
224
249
  const paginationConfig2 = vue.computed(() => {
225
250
  return __spreadValues(__spreadValues({
226
251
  position: ["bottomCenter"],
227
- // 符合类型的分页位置
228
252
  total: 0
229
253
  }, defaultPaginationProps), pagination.value);
230
254
  });
@@ -234,11 +258,13 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
234
258
  keepSelected
235
259
  } = props.config;
236
260
  changePagination == null ? void 0 : changePagination(page, pageSize);
237
- antTableBodyRef.value.scrollTop = 0;
261
+ if (antTableBodyRef.value) {
262
+ antTableBodyRef.value.scrollTop = 0;
263
+ }
238
264
  if (selection === "S" || !keepSelected) {
239
- if (selectedRowKeys.value.length > 0) {
240
- selectedRowKeys.value = [];
241
- emit("update:keys", selectedRowKeys.value);
265
+ const cleared = clearSelection();
266
+ if (cleared) {
267
+ tableKey.value++;
242
268
  }
243
269
  }
244
270
  };
@@ -250,6 +276,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
250
276
  function useCustomRow() {
251
277
  return (record, index) => {
252
278
  let clickTimeout = 0;
279
+ let isHandling = false;
253
280
  const {
254
281
  rowKey,
255
282
  config: {
@@ -260,24 +287,21 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
260
287
  } = {}
261
288
  } = props;
262
289
  const id = record[rowKey];
263
- const onClick = () => {
290
+ const handleSelection = (event) => {
264
291
  var _a;
265
292
  const checkEnable = getCheckboxProps === void 0 ? false : (_a = getCheckboxProps(record)) == null ? void 0 : _a.disabled;
266
293
  if (selection === "N" || checkEnable) {
267
294
  return;
268
295
  }
269
- const haveState = selectedRowKeys.value.some((key) => key === id);
270
- if (haveState) {
271
- selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== id);
272
- } else {
273
- if (selection === "S") {
274
- selectedRowKeys.value = [];
275
- selectedRowKeys.value.push(id);
276
- } else {
277
- selectedRowKeys.value.push(id);
296
+ const target = event.target;
297
+ if (target.closest(".ant-checkbox-wrapper") || target.closest(".ant-checkbox")) return;
298
+ const row = target.closest("tr");
299
+ if (row) {
300
+ const checkbox = row.querySelector(".ant-checkbox-input");
301
+ if (checkbox && !checkbox.disabled) {
302
+ checkbox.click();
278
303
  }
279
304
  }
280
- emit("update:keys", selectedRowKeys.value);
281
305
  };
282
306
  function activeRowBackground(event) {
283
307
  const {
@@ -296,14 +320,16 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
296
320
  }
297
321
  return {
298
322
  onClick: (event) => {
323
+ if (isHandling) return;
299
324
  clearTimeout(clickTimeout);
300
325
  clickTimeout = window.setTimeout(() => {
326
+ isHandling = true;
301
327
  activeRowBackground(event);
302
- onClick();
328
+ handleSelection(event);
303
329
  click == null ? void 0 : click(record, index);
330
+ isHandling = false;
304
331
  }, 200);
305
332
  },
306
- // 点击行
307
333
  onDblclick: () => {
308
334
  clearTimeout(clickTimeout);
309
335
  dbClick == null ? void 0 : dbClick(record, index);
@@ -312,83 +338,92 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
312
338
  };
313
339
  }
314
340
  function useRowSelection() {
315
- const rowSelection2 = vue.ref(void 0);
316
- const {
317
- rowKey,
318
- config: {
319
- getCheckboxProps,
320
- selection
321
- } = {}
322
- } = props;
323
- const onSelect = (record, selected) => {
324
- const data2 = record;
325
- if (selection === "S") {
326
- selectedRowKeys.value = [];
327
- selectedRowKeys.value = selected ? [data2[rowKey]] : [];
341
+ let _selectedKeys = [...props.keys || []];
342
+ const controlledKeys = vue.ref([...props.keys || []]);
343
+ function clearSelection2() {
344
+ const had = _selectedKeys.length > 0;
345
+ _selectedKeys = [];
346
+ controlledKeys.value = [];
347
+ if (had) {
348
+ emit("update:keys", []);
349
+ }
350
+ return had;
351
+ }
352
+ const onMultiChange = (rowKeys) => {
353
+ const {
354
+ rowKey,
355
+ config
356
+ } = props;
357
+ if (config == null ? void 0 : config.keepSelected) {
358
+ const currentPageKeySet = new Set(props.data.map((r) => r[rowKey]));
359
+ const otherPageKeys = _selectedKeys.filter((k) => !currentPageKeySet.has(k));
360
+ _selectedKeys = [...otherPageKeys, ...rowKeys];
328
361
  } else {
329
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(data2[rowKey]) : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
362
+ _selectedKeys = rowKeys;
330
363
  }
331
- emit("update:keys", selectedRowKeys.value);
332
- };
333
- const onSelectAll = (selected, selectedRows, changeRows) => {
334
- const _ids = changeRows.map((record) => record[rowKey]);
335
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(_ids) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
336
- emit("update:keys", selectedRowKeys.value);
364
+ emit("update:keys", _selectedKeys);
337
365
  };
338
- const onChange = (rowKeys, selectedRows) => {
339
- const data2 = selectedRows;
340
- const selected = data2.length !== 0;
341
- const _ids = props.data.map((record) => record[rowKey]);
342
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(rowKeys.filter((key) => !selectedRowKeys.value.includes(key))) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
343
- emit("update:keys", selectedRowKeys.value);
366
+ const onSingleSelect = (record, selected) => {
367
+ const data2 = record;
368
+ const {
369
+ rowKey
370
+ } = props;
371
+ controlledKeys.value = selected ? [data2[rowKey]] : [];
372
+ _selectedKeys = [...controlledKeys.value];
373
+ emit("update:keys", controlledKeys.value);
344
374
  };
345
375
  vue.watch(() => props.keys, (val) => {
346
- selectedRowKeys.value = val;
376
+ if (isArrayEqual(val, _selectedKeys)) return;
377
+ _selectedKeys = [...val];
378
+ controlledKeys.value = [...val];
347
379
  }, {
348
380
  deep: true,
349
381
  immediate: true
350
382
  });
351
- vue.watch(() => {
352
- var _a;
353
- return (_a = props.config) == null ? void 0 : _a.selection;
354
- }, (val) => {
355
- if (val !== "N") {
356
- rowSelection2.value = {
357
- selectedRowKeys,
358
- onSelect,
359
- onSelectAll,
383
+ const rowSelection2 = vue.computed(() => {
384
+ const {
385
+ config
386
+ } = props;
387
+ if ((config == null ? void 0 : config.selection) === "N") return void 0;
388
+ if ((config == null ? void 0 : config.selection) === "S") {
389
+ return {
390
+ selectedRowKeys: controlledKeys.value,
391
+ onSelect: onSingleSelect,
360
392
  fixed: true,
361
- columnTitle: selection === "S" ? "\u9009\u62E9" : null,
362
- columnWidth: selection === "S" ? 60 : 40,
363
- getCheckboxProps
393
+ columnTitle: "\u9009\u62E9",
394
+ columnWidth: 60,
395
+ getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
364
396
  };
365
- } else {
366
- rowSelection2.value = void 0;
367
397
  }
368
- }, {
369
- immediate: true
398
+ return {
399
+ onChange: onMultiChange,
400
+ fixed: true,
401
+ columnWidth: 40,
402
+ getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
403
+ };
370
404
  });
371
- return rowSelection2;
405
+ return {
406
+ rowSelection: rowSelection2,
407
+ clearSelection: clearSelection2
408
+ };
372
409
  }
373
410
  return () => vue.createVNode(antDesignVue.Flex, {
374
411
  "vertical": true,
375
412
  "ref": tableRef
376
413
  }, {
377
- default: () => [vue.createVNode(antDesignVue.Table, vue.mergeProps(attrs, {
414
+ default: () => [vue.createVNode(antDesignVue.Table, vue.mergeProps({
415
+ "key": tableKey.value
416
+ }, attrs, {
378
417
  "loading": props.loading,
379
418
  "size": props.size,
380
419
  "bordered": props.bordered,
381
420
  "dataSource": data.value,
382
421
  "columns": columns.value,
383
422
  "rowSelection": rowSelection.value,
384
- "customRow": useCustomRow(),
423
+ "customRow": customRowFn,
385
424
  "pagination": false,
386
425
  "rowKey": props.rowKey,
387
- "scroll": {
388
- y: tableHeight.value,
389
- x: "100%",
390
- scrollToFirstRowOnChange: true
391
- }
426
+ "scroll": scrollConfig.value
392
427
  }), tableSlots), pagination.value && vue.createVNode("div", {
393
428
  "class": [paginationStyle, "d-pagination"]
394
429
  }, [vue.createVNode(antDesignVue.Pagination, {
@@ -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-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | 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?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => 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: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\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 } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n 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(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\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 /**\r\n * 插槽处理\r\n * 假设 slots 已经在外部作用域定义(如 setup(props, { slots }))\r\n */\r\n function useSlots() {\r\n const tableSlots: any = {};\r\n\r\n // 只有外部传入了对应的插槽,才定义该属性\r\n if (slots.bodyCell)\r\n tableSlots.bodyCell = (params: any) =>\r\n slots.bodyCell?.(params);\r\n if (slots.headerCell)\r\n tableSlots.headerCell = (params: any) =>\r\n slots.headerCell?.(params);\r\n\r\n if (slots.expandedRowRender)\r\n tableSlots.expandedRowRender = (params: any) =>\r\n slots.expandedRowRender?.(params);\r\n if (slots.expandIcon)\r\n tableSlots.expandIcon = (params: any) =>\r\n slots.expandIcon?.(params);\r\n if (slots.summary)\r\n tableSlots.summary = () => slots.summary?.();\r\n\r\n if (slots.customFilterDropdown)\r\n tableSlots.customFilterDropdown = (params: any) =>\r\n slots.customFilterDropdown?.(params);\r\n if (slots.customFilterIcon)\r\n tableSlots.customFilterIcon = (params: any) =>\r\n slots.customFilterIcon?.(params);\r\n\r\n // --- 重点修改这里 ---\r\n // 只有当 slots.title 存在时,tableSlots 才有 title 属性\r\n if (slots.title)\r\n tableSlots.title = () => slots.title?.();\r\n if (slots.footer)\r\n tableSlots.footer = () => slots.footer?.();\r\n if (slots.emptyText)\r\n tableSlots.emptyText = () => slots.emptyText?.();\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\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 + requestAnimationFrame 确保 DOM 完全渲染\r\n nextTick(() => {\r\n requestAnimationFrame(() => {\r\n _tableBodyHeight(val);\r\n });\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 const tableEl = tableRef.value?.$el as\r\n | HTMLElement\r\n | undefined;\r\n if (!tableEl) return;\r\n\r\n // 表头高度 - 增加空值检查\r\n const headerEl = tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0] as HTMLElement | undefined;\r\n const headerHeight = headerEl\r\n ? useEleHeight(headerEl)\r\n : 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 =\r\n useEleHeight(paginationEl) ?? 0;\r\n }\r\n\r\n // 总结行 - 增加空值检查\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n const summaryHeight = summaryEl\r\n ? (useEleHeight(summaryEl) ?? 0)\r\n : 0;\r\n\r\n // 计算最终高度,确保不为负数\r\n tableHeight.value = Math.max(\r\n 0,\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight\r\n );\r\n\r\n antTableBodyRef.value =\r\n 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 =\r\n tableHeight.value + \"px\";\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 =\r\n 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 = (\r\n page: number,\r\n pageSize: number\r\n ) => {\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: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} 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 =\r\n 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 =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\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<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\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 =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] 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(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (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 deep: true,\r\n immediate: true\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 onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n 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={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\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={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\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 = (\r\n node: Element | undefined | null\r\n): number => {\r\n if (!node) return 0;\r\n\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) || 0)\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n }, 0);\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","headerCell","expandedRowRender","expandIcon","summary","customFilterDropdown","customFilterIcon","title","footer","emptyText","watch","val","nextTick","requestAnimationFrame","_tableBodyHeight","immediate","tableEl","$el","headerEl","getElementsByClassName","headerHeight","useEleHeight","paginationEl","paginationHeight","style","marginBottom","summaryEl","summaryHeight","Math","max","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","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","deep","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
+ {"version":3,"file":"Table.cjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n nextTick,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { type ExtractPropTypes, type PropType } from \"vue\";\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\nimport { type TablePaginationConfig } from \"ant-design-vue\";\n\nimport { type PaginationProps } from \"./interface\";\nimport { css } from \"@emotion/css\";\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\nimport type {\n SelectionSelectFn,\n TableRowSelection\n} from \"ant-design-vue/es/table/interface\";\nimport { merge } from \"lodash-es\";\n\nexport type Key = string | number;\nexport type SizeType =\n | \"small\"\n | \"middle\"\n | \"large\"\n | undefined;\n\n// 定义分页\ninterface Page {\n total: number;\n current: number;\n pageSize: number;\n}\n\n// 定义表格配置接口,支持泛型\ninterface Config<T = unknown> {\n columns: ColumnsType<T>;\n // 分页\n pagination?: Page | undefined;\n // 分页配置\n paginationConfig?: PaginationProps;\n changePagination?: (\n current: number,\n size: number\n ) => void;\n // 单击\n click?: (\n record: Record<string, unknown>,\n index: number\n ) => void;\n // 双击\n dbClick?: (\n record: Record<string, unknown>,\n index: number\n ) => void;\n // 选择框的默认属性配置\n getCheckboxProps?: (\n record: unknown\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\n // 点击行号激活的class\n activeRowClass?: string;\n // 复选框方式\n selection?: string;\n // 切换分页是否保留选中的ID\n keepSelected?: boolean;\n}\n\n// 定义 Props 类型,支持泛型\nexport const tableProps = <T = unknown,>() => ({\n height: { type: Number, default: 0 },\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\n loading: { type: Boolean, default: false },\n rowKey: { type: String, default: \"id\" },\n bordered: { type: Boolean, default: false },\n size: {\n type: String as PropType<SizeType>,\n default: \"small\"\n },\n keys: {\n type: Array as PropType<Key[]>,\n default: () => []\n },\n config: {\n type: Object as PropType<Config<T>>,\n required: true\n }\n});\n\nexport type TableProps = Partial<\n ExtractPropTypes<ReturnType<typeof tableProps>>\n>;\n\n// 分页组件默认配置\nconst defaultPaginationProps: PaginationProps = {\n defaultPageSize: 20,\n disabled: false,\n hideOnSinglePage: false,\n pageSize: 20,\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\n responsive: false,\n showLessItems: false,\n showQuickJumper: true,\n showSizeChanger: true, // 默认展示切换器\n showTotal: total => `总共 ${total} 条数据`,\n simple: false,\n size: \"default\",\n total: 0\n};\n\n// 表格默认配置\nconst defaultConfig: Config = {\n columns: [],\n pagination: undefined,\n paginationConfig: defaultPaginationProps,\n activeRowClass: \"\",\n selection: \"N\",\n keepSelected: false\n};\n\nconst paginationStyle = css`\n display: flex;\n justify-content: center;\n padding-top: 6px;\n`;\n\n// 用于比较两个数组是否内容相同\nfunction isArrayEqual(a: Key[], b: Key[]): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n// 定义泛型组件\nconst DTable = defineComponent({\n name: \"DTable\",\n props: tableProps(), // 初始泛型设置为 `unknown`\n emits: [\"update:keys\"],\n setup(props, { emit, slots, attrs }) {\n const { columns, data, pagination } = useProps();\n const { tableSlots } = useSlots();\n const { tableRef, tableHeight, antTableBodyRef } =\n useHeight();\n\n // 用于分页切换时强制重置 a-table 内部 checkbox 状态\n const tableKey = ref(0);\n\n const { rowSelection, clearSelection } =\n useRowSelection();\n const customRowFn = useCustomRow();\n const { paginationConfig, onPaginationChange } =\n usePagination();\n\n const scrollConfig = computed(() => ({\n y: tableHeight.value,\n x: \"100%\" as const,\n scrollToFirstRowOnChange: true\n }));\n\n onMounted(() => {});\n\n /**\n * props计算属性处理\n */\n function useProps() {\n const _config = computed(() =>\n merge({}, defaultConfig, props.config)\n );\n const columns = computed(() => _config.value.columns);\n const data = computed(() => props.data || []);\n const pagination = computed(\n () => _config.value.pagination || false\n );\n\n return {\n columns,\n data,\n pagination\n };\n }\n\n /**\n * 插槽处理\n */\n function useSlots() {\n const tableSlots: any = {};\n\n if (slots.bodyCell)\n tableSlots.bodyCell = (params: any) =>\n slots.bodyCell?.(params);\n if (slots.headerCell)\n tableSlots.headerCell = (params: any) =>\n slots.headerCell?.(params);\n\n if (slots.expandedRowRender)\n tableSlots.expandedRowRender = (params: any) =>\n slots.expandedRowRender?.(params);\n if (slots.expandIcon)\n tableSlots.expandIcon = (params: any) =>\n slots.expandIcon?.(params);\n if (slots.summary)\n tableSlots.summary = () => slots.summary?.();\n\n if (slots.customFilterDropdown)\n tableSlots.customFilterDropdown = (params: any) =>\n slots.customFilterDropdown?.(params);\n if (slots.customFilterIcon)\n tableSlots.customFilterIcon = (params: any) =>\n slots.customFilterIcon?.(params);\n\n if (slots.title)\n tableSlots.title = () => slots.title?.();\n if (slots.footer)\n tableSlots.footer = () => slots.footer?.();\n if (slots.emptyText)\n tableSlots.emptyText = () => slots.emptyText?.();\n\n return {\n tableSlots\n };\n }\n\n function useHeight() {\n const tableRef = ref();\n const tableHeight = ref(0);\n\n const antTableBodyRef = ref<HTMLElement>();\n\n watch(\n () => props.height,\n val => {\n if (val > 0) {\n nextTick(() => {\n requestAnimationFrame(() => {\n _tableBodyHeight(val);\n });\n });\n }\n },\n {\n immediate: true\n }\n );\n\n // 分页切换 tableKey 后需要重新计算高度\n watch(tableKey, () => {\n if (props.height > 0) {\n nextTick(() => {\n requestAnimationFrame(() => {\n _tableBodyHeight(props.height);\n });\n });\n }\n });\n\n function _tableBodyHeight(height: number) {\n const tableEl = tableRef.value?.$el as\n | HTMLElement\n | undefined;\n if (!tableEl) return;\n\n const headerEl = tableEl.getElementsByClassName(\n \"ant-table-header\"\n )[0] as HTMLElement | undefined;\n const headerHeight = headerEl\n ? useEleHeight(headerEl)\n : 0;\n\n const paginationEl = tableEl.getElementsByClassName(\n \"d-pagination\"\n )[0] as HTMLElement | undefined;\n let paginationHeight = 0;\n if (paginationEl) {\n paginationEl.style.marginBottom = \"0\";\n paginationHeight =\n useEleHeight(paginationEl) ?? 0;\n }\n\n const summaryEl = tableEl.getElementsByClassName(\n \"ant-table-summary\"\n )[0] as HTMLElement | undefined;\n const summaryHeight = summaryEl\n ? (useEleHeight(summaryEl) ?? 0)\n : 0;\n\n tableHeight.value = Math.max(\n 0,\n height -\n paginationHeight -\n headerHeight -\n summaryHeight\n );\n\n antTableBodyRef.value =\n tableEl.getElementsByClassName(\n \"ant-table-body\"\n )[0] as HTMLElement;\n\n if (antTableBodyRef.value) {\n antTableBodyRef.value.style.height =\n tableHeight.value + \"px\";\n }\n }\n\n return {\n tableRef,\n tableHeight,\n antTableBodyRef\n };\n }\n\n function usePagination() {\n const { changePagination } = props.config!;\n const paginationConfig =\n computed<TablePaginationConfig>(() => {\n return {\n position: [\"bottomCenter\"],\n total: 0,\n ...defaultPaginationProps,\n ...pagination.value\n };\n });\n\n const onPaginationChange = (\n page: number,\n pageSize: number\n ) => {\n const { selection, keepSelected } = props.config!;\n changePagination?.(page, pageSize);\n if (antTableBodyRef.value) {\n antTableBodyRef.value.scrollTop = 0;\n }\n\n if (selection === \"S\" || !keepSelected) {\n const cleared = clearSelection();\n // 非受控模式下,需要通过 tableKey 强制重置 a-table 内部 checkbox 状态\n if (cleared) {\n tableKey.value++;\n }\n }\n };\n\n return {\n paginationConfig,\n onPaginationChange\n };\n }\n\n function useCustomRow() {\n return (record: never, index: number) => {\n let clickTimeout: number = 0;\n // 防止 checkbox.click() 冒泡触发 onClick 二次处理\n let isHandling = false;\n\n const {\n rowKey,\n config: {\n click,\n dbClick,\n selection,\n getCheckboxProps\n } = {} as Config\n } = props;\n\n const id = record[rowKey];\n\n const handleSelection = (event: Event) => {\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record)?.disabled;\n\n if (selection === \"N\" || checkEnable) {\n return;\n }\n\n // 点击的已经是 checkbox 区域,由 a-table 自己处理\n const target = event.target as HTMLElement;\n if (\n target.closest(\".ant-checkbox-wrapper\") ||\n target.closest(\".ant-checkbox\")\n )\n return;\n\n // 找到当前行的 checkbox 并点击,触发 a-table 内部状态更新\n const row = target.closest(\"tr\");\n if (row) {\n const checkbox = row.querySelector(\n \".ant-checkbox-input\"\n ) as HTMLInputElement;\n if (checkbox && !checkbox.disabled) {\n checkbox.click();\n }\n }\n };\n\n function activeRowBackground(event: Event) {\n const { activeRowClass } = props.config!;\n if (!activeRowClass) return;\n const curEl = event.target;\n if (curEl instanceof HTMLElement) {\n const parentElement =\n curEl.parentNode as HTMLElement;\n if (\n parentElement &&\n parentElement.classList.contains(\n activeRowClass\n )\n ) {\n parentElement.classList.remove(\n activeRowClass\n );\n } else {\n parentElement?.classList.add(activeRowClass);\n }\n }\n }\n\n return {\n onClick: (event: Event) => {\n // 跳过由 checkbox.click() 冒泡上来的事件\n if (isHandling) return;\n clearTimeout(clickTimeout);\n clickTimeout = window.setTimeout(() => {\n isHandling = true;\n activeRowBackground(event);\n handleSelection(event);\n click?.(record, index);\n isHandling = false;\n }, 200);\n },\n onDblclick: () => {\n clearTimeout(clickTimeout);\n dbClick?.(record, index);\n }\n };\n };\n }\n\n function useRowSelection() {\n // ---- 内部选中状态 ----\n // 非受控模式下用于跟踪选中数据(非响应式,不触发 a-table 重渲染)\n let _selectedKeys: Key[] = [...(props.keys || [])];\n // 受控模式下用于单选(需要响应式驱动 checkbox 状态)\n const controlledKeys = ref<Key[]>([\n ...(props.keys || [])\n ]);\n\n /**\n * 清空选中状态,返回是否有数据被清除\n */\n function clearSelection(): boolean {\n const had = _selectedKeys.length > 0;\n _selectedKeys = [];\n controlledKeys.value = [];\n if (had) {\n emit(\"update:keys\", []);\n }\n return had;\n }\n\n /**\n * 多选 - 非受控模式\n * 不传 selectedRowKeys,a-table 自己管理 checkbox 视觉状态,\n * 勾选时不会触发整表重渲染\n */\n const onMultiChange = (rowKeys: Key[]) => {\n const { rowKey, config } = props;\n if (config?.keepSelected) {\n // keepSelected: 合并其他页的选中数据\n const currentPageKeySet = new Set(\n props.data.map(\n r =>\n (r as Record<string, unknown>)[\n rowKey\n ] as Key\n )\n );\n const otherPageKeys = _selectedKeys.filter(\n k => !currentPageKeySet.has(k)\n );\n _selectedKeys = [\n ...otherPageKeys,\n ...rowKeys\n ];\n } else {\n _selectedKeys = rowKeys;\n }\n emit(\"update:keys\", _selectedKeys);\n };\n\n /**\n * 单选 - 受控模式\n * 单选只有 0/1 条选中,重渲染开销小,用受控模式保证正确性\n */\n const onSingleSelect: SelectionSelectFn<\n unknown\n > = (record, selected) => {\n const data = record as Record<string, never>;\n const { rowKey } = props;\n controlledKeys.value = selected\n ? [data[rowKey]]\n : [];\n _selectedKeys = [...controlledKeys.value];\n emit(\"update:keys\", controlledKeys.value);\n };\n\n // 监听父组件手动改变 keys\n watch(\n () => props.keys,\n val => {\n if (isArrayEqual(val, _selectedKeys)) return;\n _selectedKeys = [...val];\n controlledKeys.value = [...val];\n },\n {\n deep: true,\n immediate: true\n }\n );\n\n const rowSelection = computed<\n TableRowSelection<unknown> | undefined\n >(() => {\n const { config } = props;\n if (config?.selection === \"N\") return undefined;\n\n // 单选 - 受控模式\n if (config?.selection === \"S\") {\n return {\n selectedRowKeys: controlledKeys.value,\n onSelect: onSingleSelect,\n fixed: true,\n columnTitle: \"选择\",\n columnWidth: 60,\n getCheckboxProps:\n config?.getCheckboxProps as never\n };\n }\n\n // 多选 - 非受控模式(不传 selectedRowKeys)\n // a-table 自己管理 checkbox 状态,勾选时不会触发整表重渲染\n return {\n onChange: onMultiChange,\n fixed: true,\n columnWidth: 40,\n getCheckboxProps:\n config?.getCheckboxProps as never\n };\n });\n\n return { rowSelection, clearSelection };\n }\n\n return () => (\n <Flex vertical={true} ref={tableRef}>\n <Table\n key={tableKey.value}\n {...attrs}\n loading={props.loading}\n size={props.size}\n bordered={props.bordered}\n dataSource={data.value}\n columns={columns.value}\n rowSelection={rowSelection.value}\n customRow={customRowFn as never}\n pagination={false}\n rowKey={props.rowKey}\n v-slots={tableSlots}\n scroll={scrollConfig.value}\n />\n {pagination.value && (\n <div class={[paginationStyle, \"d-pagination\"]}>\n {\n <Pagination\n v-model:current={\n paginationConfig.value.current\n }\n v-model:pageSize={\n paginationConfig.value.pageSize\n }\n total={paginationConfig.value.total}\n disabled={props.loading}\n show-size-changer\n size={\"default\"}\n hide-on-single-page={\n paginationConfig.value.hideOnSinglePage\n }\n show-quick-jumper={\n paginationConfig.value.showQuickJumper\n }\n default-page-size={\n paginationConfig.value.defaultPageSize\n }\n page-size-options={\n paginationConfig.value.pageSizeOptions\n }\n show-total={\n paginationConfig.value.showTotal\n }\n onChange={onPaginationChange}\n showLessItems={true}\n ></Pagination>\n }\n </div>\n )}\n </Flex>\n );\n }\n});\n\nexport const useEleHeight = (\n node: Element | undefined | null\n): number => {\n if (!node) return 0;\n\n const list = [\n \"margin-top\",\n \"margin-bottom\",\n \"border-top\",\n \"border-bottom\",\n \"padding-top\",\n \"padding-bottom\",\n \"height\"\n ];\n const style = getComputedStyle(node);\n return list\n .map(k => parseInt(style.getPropertyValue(k), 10) || 0)\n .reduce((prev, cur) => {\n return prev + cur;\n }, 0);\n};\n\nexport default DTable;\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","isArrayEqual","a","b","length","i","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","useProps","tableSlots","useSlots","tableRef","tableHeight","antTableBodyRef","useHeight","tableKey","ref","rowSelection","clearSelection","useRowSelection","customRowFn","useCustomRow","onPaginationChange","usePagination","scrollConfig","computed","y","value","x","scrollToFirstRowOnChange","onMounted","_config","merge","bodyCell","params","headerCell","expandedRowRender","expandIcon","summary","customFilterDropdown","customFilterIcon","title","footer","emptyText","watch","val","nextTick","requestAnimationFrame","_tableBodyHeight","immediate","tableEl","$el","headerEl","getElementsByClassName","headerHeight","useEleHeight","paginationEl","paginationHeight","style","marginBottom","summaryEl","summaryHeight","Math","max","changePagination","position","page","scrollTop","cleared","record","index","clickTimeout","isHandling","click","dbClick","getCheckboxProps","id","handleSelection","event","checkEnable","target","closest","row","checkbox","querySelector","activeRowBackground","curEl","HTMLElement","parentElement","parentNode","classList","contains","remove","add","onClick","clearTimeout","window","setTimeout","onDblclick","_selectedKeys","controlledKeys","had","onMultiChange","rowKeys","currentPageKeySet","Set","map","r","otherPageKeys","filter","k","has","onSingleSelect","selected","deep","selectedRowKeys","onSelect","fixed","columnTitle","columnWidth","onChange","_createVNode","Flex","Table","_mergeProps","Pagination","current","$event","node","list","getComputedStyle","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
@@ -47,14 +47,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({},
47
47
  if (!isShow(item)) {
48
48
  return false;
49
49
  }
50
- const visibleIndex = visibleButtons.value.findIndex((v) => v.title === item.title);
50
+ const visibleIndex = visibleButtons.value.findIndex(
51
+ (v) => v.title === item.title
52
+ );
51
53
  return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;
52
54
  };
53
55
  return (_ctx, _cache) => {
54
56
  const _component_a_divider = resolveComponent("a-divider");
55
57
  return openBlock(), createElementBlock("div", {
56
58
  onClick: _cache[0] || (_cache[0] = withModifiers(() => {
57
- }, ["stop"]))
59
+ }, ["stop", "self"]))
58
60
  }, [
59
61
  (openBlock(true), createElementBlock(
60
62
  Fragment,
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBar.vue2.mjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n import { computed, isVNode, type VNode } from \"vue\";\r\n\r\n defineOptions({\r\n name: \"DActionBar\"\r\n });\r\n\r\n interface ButtonItem {\r\n title: string | VNode;\r\n status?: boolean | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n }\r\n\r\n // 2. 普通的 Props 声明\r\n const props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n /**\r\n * 判断按钮是否显示\r\n */\r\n const isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n };\r\n\r\n /**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\n const visibleButtons = computed(() => {\r\n const groups: ButtonItem[] = props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n });\r\n\r\n /**\r\n * 判断分隔线状态\r\n */\r\n const showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex((v: ButtonItem) => v.title === item.title);\r\n return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;\r\n };\r\n</script>\r\n\r\n<template>\r\n <div @click.stop>\r\n <template v-for=\"(item, index) in actions || buttonGroups || []\" :key=\"index\">\r\n <a v-if=\"isShow(item)\" @click.stop=\"(item.onClick || item.onEvent)?.(record)\">\r\n <template v-if=\"isVNode(item.title)\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["_createElementBlock","_openBlock","_Fragment","_withModifiers","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeE,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiB,SAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GAAuB,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AACrE,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK,KAAK,CAAA;AAC7F,MAAA,OAAO,YAAA,KAAiB,CAAA,CAAA,IAAM,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAC7E,CAAA;;;0BAIAA,kBAAA,CAgBM,KAAA,EAAA;AAAA,QAhBA,OAAA,0CAAD,MAAA;AAAA,QAAA,CAAA,EAAW,CAAA,MAAA,CAAA,CAAA;AAAA;SACdC,SAAA,CAAA,IAAA,CAAA,EAAAD,kBAAA;AAAA,UAcWE,QAAA;AAAA;qBAduB,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBAA0C,KAAA,EAAK;AAAA,cAAA;AAAA,gBACjE,OAAO,IAAI,CAAA,iBAApBF,mBAOI,GAAA,EAAA;AAAA;kBAPoB,OAAA,EAAKG,aAAA,CAAA,CAAA,MAAA,KAAA;;AAAQ,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA,EAAM,CAAA,MAAA,CAAA;AAAA;kBACzD,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,iBAChCC,WAAA,CAA+CC,uBAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,2DAEvCL,kBAAA;AAAA,oBAEWE,QAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNI,eAAA;AAAA,wBAAAC,eAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,iBADxBH,YAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ActionBar.vue2.mjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, isVNode, type VNode } from \"vue\";\r\n\r\ndefineOptions({\r\n name: \"DActionBar\"\r\n});\r\n\r\ninterface ButtonItem {\r\n title: string | VNode;\r\n status?:\r\n | boolean\r\n | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n}\r\n\r\n// 2. 普通的 Props 声明\r\nconst props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n/**\r\n * 判断按钮是否显示\r\n */\r\nconst isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n};\r\n\r\n/**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\nconst visibleButtons = computed(() => {\r\n const groups: ButtonItem[] =\r\n props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n});\r\n\r\n/**\r\n * 判断分隔线状态\r\n */\r\nconst showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex(\r\n (v: ButtonItem) => v.title === item.title\r\n );\r\n return (\r\n visibleIndex !== -1 &&\r\n visibleIndex < visibleButtons.value.length - 1\r\n );\r\n};\r\n</script>\r\n\r\n<template>\r\n <div @click.stop.self>\r\n <template\r\n v-for=\"(item, index) in actions || buttonGroups || []\"\r\n :key=\"index\"\r\n >\r\n <a\r\n v-if=\"isShow(item)\"\r\n @click.stop=\"\r\n (item.onClick || item.onEvent)?.(record)\r\n \"\r\n >\r\n <template v-if=\"isVNode(item.title)\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["_createElementBlock","_openBlock","_Fragment","_withModifiers","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiB,SAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GACJ,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AAC1C,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA;AAAA,QACxC,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK;AAAA,OACtC;AACA,MAAA,OACE,YAAA,KAAiB,CAAA,CAAA,IACjB,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAEjD,CAAA;;;0BAIEA,kBAAA,CAwBM,KAAA,EAAA;AAAA,QAxBA,OAAA,0CAAD,MAAA;AAAA,QAAA,CAAA,EAAgB,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA;AAAA;SACnBC,SAAA,CAAA,IAAA,CAAA,EAAAD,kBAAA;AAAA,UAsBWE,QAAA;AAAA;qBArBe,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBACb,KAAA,EAAK;AAAA,cAAA;AAAA,gBAGH,OAAO,IAAI,CAAA,iBADnBF,mBAYI,GAAA,EAAA;AAAA;kBAVD,OAAA,EAAKG,aAAA,CAAA,CAAA,MAAA,KAAA;;AAAoB,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA;;kBAI1C,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,iBAChCC,WAAA,CAA+CC,uBAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,2DAEvCL,kBAAA;AAAA,oBAEWE,QAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNI,eAAA;AAAA,wBAAAC,eAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,iBADxBH,YAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, onMounted, computed, watch, nextTick, createVNode, mergeProps } from 'vue';
1
+ import { defineComponent, ref, computed, onMounted, watch, nextTick, createVNode, mergeProps } from 'vue';
2
2
  import { Flex, Table, Pagination } from 'ant-design-vue';
3
3
  import { css } from '@emotion/css';
4
4
  import { merge } from 'lodash-es';
@@ -84,6 +84,13 @@ const paginationStyle = css`
84
84
  justify-content: center;
85
85
  padding-top: 6px;
86
86
  `;
87
+ function isArrayEqual(a, b) {
88
+ if (a.length !== b.length) return false;
89
+ for (let i = 0; i < a.length; i++) {
90
+ if (a[i] !== b[i]) return false;
91
+ }
92
+ return true;
93
+ }
87
94
  const DTable = /* @__PURE__ */ defineComponent({
88
95
  name: "DTable",
89
96
  props: tableProps(),
@@ -94,7 +101,6 @@ const DTable = /* @__PURE__ */ defineComponent({
94
101
  slots,
95
102
  attrs
96
103
  }) {
97
- const selectedRowKeys = ref(props.keys || []);
98
104
  const {
99
105
  columns,
100
106
  data,
@@ -103,16 +109,26 @@ const DTable = /* @__PURE__ */ defineComponent({
103
109
  const {
104
110
  tableSlots
105
111
  } = useSlots();
106
- const {
107
- paginationConfig,
108
- onPaginationChange
109
- } = usePagination();
110
112
  const {
111
113
  tableRef,
112
114
  tableHeight,
113
115
  antTableBodyRef
114
116
  } = useHeight();
115
- const rowSelection = useRowSelection();
117
+ const tableKey = ref(0);
118
+ const {
119
+ rowSelection,
120
+ clearSelection
121
+ } = useRowSelection();
122
+ const customRowFn = useCustomRow();
123
+ const {
124
+ paginationConfig,
125
+ onPaginationChange
126
+ } = usePagination();
127
+ const scrollConfig = computed(() => ({
128
+ y: tableHeight.value,
129
+ x: "100%",
130
+ scrollToFirstRowOnChange: true
131
+ }));
116
132
  onMounted(() => {
117
133
  });
118
134
  function useProps() {
@@ -187,6 +203,15 @@ const DTable = /* @__PURE__ */ defineComponent({
187
203
  }, {
188
204
  immediate: true
189
205
  });
206
+ watch(tableKey, () => {
207
+ if (props.height > 0) {
208
+ nextTick(() => {
209
+ requestAnimationFrame(() => {
210
+ _tableBodyHeight(props.height);
211
+ });
212
+ });
213
+ }
214
+ });
190
215
  function _tableBodyHeight(height) {
191
216
  var _a, _b, _c;
192
217
  const tableEl = (_a = tableRef2.value) == null ? void 0 : _a.$el;
@@ -220,7 +245,6 @@ const DTable = /* @__PURE__ */ defineComponent({
220
245
  const paginationConfig2 = computed(() => {
221
246
  return __spreadValues(__spreadValues({
222
247
  position: ["bottomCenter"],
223
- // 符合类型的分页位置
224
248
  total: 0
225
249
  }, defaultPaginationProps), pagination.value);
226
250
  });
@@ -230,11 +254,13 @@ const DTable = /* @__PURE__ */ defineComponent({
230
254
  keepSelected
231
255
  } = props.config;
232
256
  changePagination == null ? void 0 : changePagination(page, pageSize);
233
- antTableBodyRef.value.scrollTop = 0;
257
+ if (antTableBodyRef.value) {
258
+ antTableBodyRef.value.scrollTop = 0;
259
+ }
234
260
  if (selection === "S" || !keepSelected) {
235
- if (selectedRowKeys.value.length > 0) {
236
- selectedRowKeys.value = [];
237
- emit("update:keys", selectedRowKeys.value);
261
+ const cleared = clearSelection();
262
+ if (cleared) {
263
+ tableKey.value++;
238
264
  }
239
265
  }
240
266
  };
@@ -246,6 +272,7 @@ const DTable = /* @__PURE__ */ defineComponent({
246
272
  function useCustomRow() {
247
273
  return (record, index) => {
248
274
  let clickTimeout = 0;
275
+ let isHandling = false;
249
276
  const {
250
277
  rowKey,
251
278
  config: {
@@ -256,24 +283,21 @@ const DTable = /* @__PURE__ */ defineComponent({
256
283
  } = {}
257
284
  } = props;
258
285
  const id = record[rowKey];
259
- const onClick = () => {
286
+ const handleSelection = (event) => {
260
287
  var _a;
261
288
  const checkEnable = getCheckboxProps === void 0 ? false : (_a = getCheckboxProps(record)) == null ? void 0 : _a.disabled;
262
289
  if (selection === "N" || checkEnable) {
263
290
  return;
264
291
  }
265
- const haveState = selectedRowKeys.value.some((key) => key === id);
266
- if (haveState) {
267
- selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== id);
268
- } else {
269
- if (selection === "S") {
270
- selectedRowKeys.value = [];
271
- selectedRowKeys.value.push(id);
272
- } else {
273
- selectedRowKeys.value.push(id);
292
+ const target = event.target;
293
+ if (target.closest(".ant-checkbox-wrapper") || target.closest(".ant-checkbox")) return;
294
+ const row = target.closest("tr");
295
+ if (row) {
296
+ const checkbox = row.querySelector(".ant-checkbox-input");
297
+ if (checkbox && !checkbox.disabled) {
298
+ checkbox.click();
274
299
  }
275
300
  }
276
- emit("update:keys", selectedRowKeys.value);
277
301
  };
278
302
  function activeRowBackground(event) {
279
303
  const {
@@ -292,14 +316,16 @@ const DTable = /* @__PURE__ */ defineComponent({
292
316
  }
293
317
  return {
294
318
  onClick: (event) => {
319
+ if (isHandling) return;
295
320
  clearTimeout(clickTimeout);
296
321
  clickTimeout = window.setTimeout(() => {
322
+ isHandling = true;
297
323
  activeRowBackground(event);
298
- onClick();
324
+ handleSelection(event);
299
325
  click == null ? void 0 : click(record, index);
326
+ isHandling = false;
300
327
  }, 200);
301
328
  },
302
- // 点击行
303
329
  onDblclick: () => {
304
330
  clearTimeout(clickTimeout);
305
331
  dbClick == null ? void 0 : dbClick(record, index);
@@ -308,83 +334,92 @@ const DTable = /* @__PURE__ */ defineComponent({
308
334
  };
309
335
  }
310
336
  function useRowSelection() {
311
- const rowSelection2 = ref(void 0);
312
- const {
313
- rowKey,
314
- config: {
315
- getCheckboxProps,
316
- selection
317
- } = {}
318
- } = props;
319
- const onSelect = (record, selected) => {
320
- const data2 = record;
321
- if (selection === "S") {
322
- selectedRowKeys.value = [];
323
- selectedRowKeys.value = selected ? [data2[rowKey]] : [];
337
+ let _selectedKeys = [...props.keys || []];
338
+ const controlledKeys = ref([...props.keys || []]);
339
+ function clearSelection2() {
340
+ const had = _selectedKeys.length > 0;
341
+ _selectedKeys = [];
342
+ controlledKeys.value = [];
343
+ if (had) {
344
+ emit("update:keys", []);
345
+ }
346
+ return had;
347
+ }
348
+ const onMultiChange = (rowKeys) => {
349
+ const {
350
+ rowKey,
351
+ config
352
+ } = props;
353
+ if (config == null ? void 0 : config.keepSelected) {
354
+ const currentPageKeySet = new Set(props.data.map((r) => r[rowKey]));
355
+ const otherPageKeys = _selectedKeys.filter((k) => !currentPageKeySet.has(k));
356
+ _selectedKeys = [...otherPageKeys, ...rowKeys];
324
357
  } else {
325
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(data2[rowKey]) : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
358
+ _selectedKeys = rowKeys;
326
359
  }
327
- emit("update:keys", selectedRowKeys.value);
328
- };
329
- const onSelectAll = (selected, selectedRows, changeRows) => {
330
- const _ids = changeRows.map((record) => record[rowKey]);
331
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(_ids) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
332
- emit("update:keys", selectedRowKeys.value);
360
+ emit("update:keys", _selectedKeys);
333
361
  };
334
- const onChange = (rowKeys, selectedRows) => {
335
- const data2 = selectedRows;
336
- const selected = data2.length !== 0;
337
- const _ids = props.data.map((record) => record[rowKey]);
338
- selectedRowKeys.value = selected ? selectedRowKeys.value.concat(rowKeys.filter((key) => !selectedRowKeys.value.includes(key))) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
339
- emit("update:keys", selectedRowKeys.value);
362
+ const onSingleSelect = (record, selected) => {
363
+ const data2 = record;
364
+ const {
365
+ rowKey
366
+ } = props;
367
+ controlledKeys.value = selected ? [data2[rowKey]] : [];
368
+ _selectedKeys = [...controlledKeys.value];
369
+ emit("update:keys", controlledKeys.value);
340
370
  };
341
371
  watch(() => props.keys, (val) => {
342
- selectedRowKeys.value = val;
372
+ if (isArrayEqual(val, _selectedKeys)) return;
373
+ _selectedKeys = [...val];
374
+ controlledKeys.value = [...val];
343
375
  }, {
344
376
  deep: true,
345
377
  immediate: true
346
378
  });
347
- watch(() => {
348
- var _a;
349
- return (_a = props.config) == null ? void 0 : _a.selection;
350
- }, (val) => {
351
- if (val !== "N") {
352
- rowSelection2.value = {
353
- selectedRowKeys,
354
- onSelect,
355
- onSelectAll,
379
+ const rowSelection2 = computed(() => {
380
+ const {
381
+ config
382
+ } = props;
383
+ if ((config == null ? void 0 : config.selection) === "N") return void 0;
384
+ if ((config == null ? void 0 : config.selection) === "S") {
385
+ return {
386
+ selectedRowKeys: controlledKeys.value,
387
+ onSelect: onSingleSelect,
356
388
  fixed: true,
357
- columnTitle: selection === "S" ? "\u9009\u62E9" : null,
358
- columnWidth: selection === "S" ? 60 : 40,
359
- getCheckboxProps
389
+ columnTitle: "\u9009\u62E9",
390
+ columnWidth: 60,
391
+ getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
360
392
  };
361
- } else {
362
- rowSelection2.value = void 0;
363
393
  }
364
- }, {
365
- immediate: true
394
+ return {
395
+ onChange: onMultiChange,
396
+ fixed: true,
397
+ columnWidth: 40,
398
+ getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
399
+ };
366
400
  });
367
- return rowSelection2;
401
+ return {
402
+ rowSelection: rowSelection2,
403
+ clearSelection: clearSelection2
404
+ };
368
405
  }
369
406
  return () => createVNode(Flex, {
370
407
  "vertical": true,
371
408
  "ref": tableRef
372
409
  }, {
373
- default: () => [createVNode(Table, mergeProps(attrs, {
410
+ default: () => [createVNode(Table, mergeProps({
411
+ "key": tableKey.value
412
+ }, attrs, {
374
413
  "loading": props.loading,
375
414
  "size": props.size,
376
415
  "bordered": props.bordered,
377
416
  "dataSource": data.value,
378
417
  "columns": columns.value,
379
418
  "rowSelection": rowSelection.value,
380
- "customRow": useCustomRow(),
419
+ "customRow": customRowFn,
381
420
  "pagination": false,
382
421
  "rowKey": props.rowKey,
383
- "scroll": {
384
- y: tableHeight.value,
385
- x: "100%",
386
- scrollToFirstRowOnChange: true
387
- }
422
+ "scroll": scrollConfig.value
388
423
  }), tableSlots), pagination.value && createVNode("div", {
389
424
  "class": [paginationStyle, "d-pagination"]
390
425
  }, [createVNode(Pagination, {
@@ -1 +1 @@
1
- {"version":3,"file":"Table.mjs","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-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | 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?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => 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: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\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 } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n 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(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\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 /**\r\n * 插槽处理\r\n * 假设 slots 已经在外部作用域定义(如 setup(props, { slots }))\r\n */\r\n function useSlots() {\r\n const tableSlots: any = {};\r\n\r\n // 只有外部传入了对应的插槽,才定义该属性\r\n if (slots.bodyCell)\r\n tableSlots.bodyCell = (params: any) =>\r\n slots.bodyCell?.(params);\r\n if (slots.headerCell)\r\n tableSlots.headerCell = (params: any) =>\r\n slots.headerCell?.(params);\r\n\r\n if (slots.expandedRowRender)\r\n tableSlots.expandedRowRender = (params: any) =>\r\n slots.expandedRowRender?.(params);\r\n if (slots.expandIcon)\r\n tableSlots.expandIcon = (params: any) =>\r\n slots.expandIcon?.(params);\r\n if (slots.summary)\r\n tableSlots.summary = () => slots.summary?.();\r\n\r\n if (slots.customFilterDropdown)\r\n tableSlots.customFilterDropdown = (params: any) =>\r\n slots.customFilterDropdown?.(params);\r\n if (slots.customFilterIcon)\r\n tableSlots.customFilterIcon = (params: any) =>\r\n slots.customFilterIcon?.(params);\r\n\r\n // --- 重点修改这里 ---\r\n // 只有当 slots.title 存在时,tableSlots 才有 title 属性\r\n if (slots.title)\r\n tableSlots.title = () => slots.title?.();\r\n if (slots.footer)\r\n tableSlots.footer = () => slots.footer?.();\r\n if (slots.emptyText)\r\n tableSlots.emptyText = () => slots.emptyText?.();\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\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 + requestAnimationFrame 确保 DOM 完全渲染\r\n nextTick(() => {\r\n requestAnimationFrame(() => {\r\n _tableBodyHeight(val);\r\n });\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 const tableEl = tableRef.value?.$el as\r\n | HTMLElement\r\n | undefined;\r\n if (!tableEl) return;\r\n\r\n // 表头高度 - 增加空值检查\r\n const headerEl = tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0] as HTMLElement | undefined;\r\n const headerHeight = headerEl\r\n ? useEleHeight(headerEl)\r\n : 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 =\r\n useEleHeight(paginationEl) ?? 0;\r\n }\r\n\r\n // 总结行 - 增加空值检查\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n const summaryHeight = summaryEl\r\n ? (useEleHeight(summaryEl) ?? 0)\r\n : 0;\r\n\r\n // 计算最终高度,确保不为负数\r\n tableHeight.value = Math.max(\r\n 0,\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight\r\n );\r\n\r\n antTableBodyRef.value =\r\n 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 =\r\n tableHeight.value + \"px\";\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 =\r\n 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 = (\r\n page: number,\r\n pageSize: number\r\n ) => {\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: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} 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 =\r\n 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 =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\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<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\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 =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] 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(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (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 deep: true,\r\n immediate: true\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 onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n 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={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\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={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\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 = (\r\n node: Element | undefined | null\r\n): number => {\r\n if (!node) return 0;\r\n\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) || 0)\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n }, 0);\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","headerCell","expandedRowRender","expandIcon","summary","customFilterDropdown","customFilterIcon","title","footer","emptyText","watch","val","nextTick","requestAnimationFrame","_tableBodyHeight","immediate","tableEl","$el","headerEl","getElementsByClassName","headerHeight","useEleHeight","paginationEl","paginationHeight","style","marginBottom","summaryEl","summaryHeight","Math","max","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","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","deep","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
+ {"version":3,"file":"Table.mjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n nextTick,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { type ExtractPropTypes, type PropType } from \"vue\";\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\nimport { type TablePaginationConfig } from \"ant-design-vue\";\n\nimport { type PaginationProps } from \"./interface\";\nimport { css } from \"@emotion/css\";\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\nimport type {\n SelectionSelectFn,\n TableRowSelection\n} from \"ant-design-vue/es/table/interface\";\nimport { merge } from \"lodash-es\";\n\nexport type Key = string | number;\nexport type SizeType =\n | \"small\"\n | \"middle\"\n | \"large\"\n | undefined;\n\n// 定义分页\ninterface Page {\n total: number;\n current: number;\n pageSize: number;\n}\n\n// 定义表格配置接口,支持泛型\ninterface Config<T = unknown> {\n columns: ColumnsType<T>;\n // 分页\n pagination?: Page | undefined;\n // 分页配置\n paginationConfig?: PaginationProps;\n changePagination?: (\n current: number,\n size: number\n ) => void;\n // 单击\n click?: (\n record: Record<string, unknown>,\n index: number\n ) => void;\n // 双击\n dbClick?: (\n record: Record<string, unknown>,\n index: number\n ) => void;\n // 选择框的默认属性配置\n getCheckboxProps?: (\n record: unknown\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\n // 点击行号激活的class\n activeRowClass?: string;\n // 复选框方式\n selection?: string;\n // 切换分页是否保留选中的ID\n keepSelected?: boolean;\n}\n\n// 定义 Props 类型,支持泛型\nexport const tableProps = <T = unknown,>() => ({\n height: { type: Number, default: 0 },\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\n loading: { type: Boolean, default: false },\n rowKey: { type: String, default: \"id\" },\n bordered: { type: Boolean, default: false },\n size: {\n type: String as PropType<SizeType>,\n default: \"small\"\n },\n keys: {\n type: Array as PropType<Key[]>,\n default: () => []\n },\n config: {\n type: Object as PropType<Config<T>>,\n required: true\n }\n});\n\nexport type TableProps = Partial<\n ExtractPropTypes<ReturnType<typeof tableProps>>\n>;\n\n// 分页组件默认配置\nconst defaultPaginationProps: PaginationProps = {\n defaultPageSize: 20,\n disabled: false,\n hideOnSinglePage: false,\n pageSize: 20,\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\n responsive: false,\n showLessItems: false,\n showQuickJumper: true,\n showSizeChanger: true, // 默认展示切换器\n showTotal: total => `总共 ${total} 条数据`,\n simple: false,\n size: \"default\",\n total: 0\n};\n\n// 表格默认配置\nconst defaultConfig: Config = {\n columns: [],\n pagination: undefined,\n paginationConfig: defaultPaginationProps,\n activeRowClass: \"\",\n selection: \"N\",\n keepSelected: false\n};\n\nconst paginationStyle = css`\n display: flex;\n justify-content: center;\n padding-top: 6px;\n`;\n\n// 用于比较两个数组是否内容相同\nfunction isArrayEqual(a: Key[], b: Key[]): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n// 定义泛型组件\nconst DTable = defineComponent({\n name: \"DTable\",\n props: tableProps(), // 初始泛型设置为 `unknown`\n emits: [\"update:keys\"],\n setup(props, { emit, slots, attrs }) {\n const { columns, data, pagination } = useProps();\n const { tableSlots } = useSlots();\n const { tableRef, tableHeight, antTableBodyRef } =\n useHeight();\n\n // 用于分页切换时强制重置 a-table 内部 checkbox 状态\n const tableKey = ref(0);\n\n const { rowSelection, clearSelection } =\n useRowSelection();\n const customRowFn = useCustomRow();\n const { paginationConfig, onPaginationChange } =\n usePagination();\n\n const scrollConfig = computed(() => ({\n y: tableHeight.value,\n x: \"100%\" as const,\n scrollToFirstRowOnChange: true\n }));\n\n onMounted(() => {});\n\n /**\n * props计算属性处理\n */\n function useProps() {\n const _config = computed(() =>\n merge({}, defaultConfig, props.config)\n );\n const columns = computed(() => _config.value.columns);\n const data = computed(() => props.data || []);\n const pagination = computed(\n () => _config.value.pagination || false\n );\n\n return {\n columns,\n data,\n pagination\n };\n }\n\n /**\n * 插槽处理\n */\n function useSlots() {\n const tableSlots: any = {};\n\n if (slots.bodyCell)\n tableSlots.bodyCell = (params: any) =>\n slots.bodyCell?.(params);\n if (slots.headerCell)\n tableSlots.headerCell = (params: any) =>\n slots.headerCell?.(params);\n\n if (slots.expandedRowRender)\n tableSlots.expandedRowRender = (params: any) =>\n slots.expandedRowRender?.(params);\n if (slots.expandIcon)\n tableSlots.expandIcon = (params: any) =>\n slots.expandIcon?.(params);\n if (slots.summary)\n tableSlots.summary = () => slots.summary?.();\n\n if (slots.customFilterDropdown)\n tableSlots.customFilterDropdown = (params: any) =>\n slots.customFilterDropdown?.(params);\n if (slots.customFilterIcon)\n tableSlots.customFilterIcon = (params: any) =>\n slots.customFilterIcon?.(params);\n\n if (slots.title)\n tableSlots.title = () => slots.title?.();\n if (slots.footer)\n tableSlots.footer = () => slots.footer?.();\n if (slots.emptyText)\n tableSlots.emptyText = () => slots.emptyText?.();\n\n return {\n tableSlots\n };\n }\n\n function useHeight() {\n const tableRef = ref();\n const tableHeight = ref(0);\n\n const antTableBodyRef = ref<HTMLElement>();\n\n watch(\n () => props.height,\n val => {\n if (val > 0) {\n nextTick(() => {\n requestAnimationFrame(() => {\n _tableBodyHeight(val);\n });\n });\n }\n },\n {\n immediate: true\n }\n );\n\n // 分页切换 tableKey 后需要重新计算高度\n watch(tableKey, () => {\n if (props.height > 0) {\n nextTick(() => {\n requestAnimationFrame(() => {\n _tableBodyHeight(props.height);\n });\n });\n }\n });\n\n function _tableBodyHeight(height: number) {\n const tableEl = tableRef.value?.$el as\n | HTMLElement\n | undefined;\n if (!tableEl) return;\n\n const headerEl = tableEl.getElementsByClassName(\n \"ant-table-header\"\n )[0] as HTMLElement | undefined;\n const headerHeight = headerEl\n ? useEleHeight(headerEl)\n : 0;\n\n const paginationEl = tableEl.getElementsByClassName(\n \"d-pagination\"\n )[0] as HTMLElement | undefined;\n let paginationHeight = 0;\n if (paginationEl) {\n paginationEl.style.marginBottom = \"0\";\n paginationHeight =\n useEleHeight(paginationEl) ?? 0;\n }\n\n const summaryEl = tableEl.getElementsByClassName(\n \"ant-table-summary\"\n )[0] as HTMLElement | undefined;\n const summaryHeight = summaryEl\n ? (useEleHeight(summaryEl) ?? 0)\n : 0;\n\n tableHeight.value = Math.max(\n 0,\n height -\n paginationHeight -\n headerHeight -\n summaryHeight\n );\n\n antTableBodyRef.value =\n tableEl.getElementsByClassName(\n \"ant-table-body\"\n )[0] as HTMLElement;\n\n if (antTableBodyRef.value) {\n antTableBodyRef.value.style.height =\n tableHeight.value + \"px\";\n }\n }\n\n return {\n tableRef,\n tableHeight,\n antTableBodyRef\n };\n }\n\n function usePagination() {\n const { changePagination } = props.config!;\n const paginationConfig =\n computed<TablePaginationConfig>(() => {\n return {\n position: [\"bottomCenter\"],\n total: 0,\n ...defaultPaginationProps,\n ...pagination.value\n };\n });\n\n const onPaginationChange = (\n page: number,\n pageSize: number\n ) => {\n const { selection, keepSelected } = props.config!;\n changePagination?.(page, pageSize);\n if (antTableBodyRef.value) {\n antTableBodyRef.value.scrollTop = 0;\n }\n\n if (selection === \"S\" || !keepSelected) {\n const cleared = clearSelection();\n // 非受控模式下,需要通过 tableKey 强制重置 a-table 内部 checkbox 状态\n if (cleared) {\n tableKey.value++;\n }\n }\n };\n\n return {\n paginationConfig,\n onPaginationChange\n };\n }\n\n function useCustomRow() {\n return (record: never, index: number) => {\n let clickTimeout: number = 0;\n // 防止 checkbox.click() 冒泡触发 onClick 二次处理\n let isHandling = false;\n\n const {\n rowKey,\n config: {\n click,\n dbClick,\n selection,\n getCheckboxProps\n } = {} as Config\n } = props;\n\n const id = record[rowKey];\n\n const handleSelection = (event: Event) => {\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record)?.disabled;\n\n if (selection === \"N\" || checkEnable) {\n return;\n }\n\n // 点击的已经是 checkbox 区域,由 a-table 自己处理\n const target = event.target as HTMLElement;\n if (\n target.closest(\".ant-checkbox-wrapper\") ||\n target.closest(\".ant-checkbox\")\n )\n return;\n\n // 找到当前行的 checkbox 并点击,触发 a-table 内部状态更新\n const row = target.closest(\"tr\");\n if (row) {\n const checkbox = row.querySelector(\n \".ant-checkbox-input\"\n ) as HTMLInputElement;\n if (checkbox && !checkbox.disabled) {\n checkbox.click();\n }\n }\n };\n\n function activeRowBackground(event: Event) {\n const { activeRowClass } = props.config!;\n if (!activeRowClass) return;\n const curEl = event.target;\n if (curEl instanceof HTMLElement) {\n const parentElement =\n curEl.parentNode as HTMLElement;\n if (\n parentElement &&\n parentElement.classList.contains(\n activeRowClass\n )\n ) {\n parentElement.classList.remove(\n activeRowClass\n );\n } else {\n parentElement?.classList.add(activeRowClass);\n }\n }\n }\n\n return {\n onClick: (event: Event) => {\n // 跳过由 checkbox.click() 冒泡上来的事件\n if (isHandling) return;\n clearTimeout(clickTimeout);\n clickTimeout = window.setTimeout(() => {\n isHandling = true;\n activeRowBackground(event);\n handleSelection(event);\n click?.(record, index);\n isHandling = false;\n }, 200);\n },\n onDblclick: () => {\n clearTimeout(clickTimeout);\n dbClick?.(record, index);\n }\n };\n };\n }\n\n function useRowSelection() {\n // ---- 内部选中状态 ----\n // 非受控模式下用于跟踪选中数据(非响应式,不触发 a-table 重渲染)\n let _selectedKeys: Key[] = [...(props.keys || [])];\n // 受控模式下用于单选(需要响应式驱动 checkbox 状态)\n const controlledKeys = ref<Key[]>([\n ...(props.keys || [])\n ]);\n\n /**\n * 清空选中状态,返回是否有数据被清除\n */\n function clearSelection(): boolean {\n const had = _selectedKeys.length > 0;\n _selectedKeys = [];\n controlledKeys.value = [];\n if (had) {\n emit(\"update:keys\", []);\n }\n return had;\n }\n\n /**\n * 多选 - 非受控模式\n * 不传 selectedRowKeys,a-table 自己管理 checkbox 视觉状态,\n * 勾选时不会触发整表重渲染\n */\n const onMultiChange = (rowKeys: Key[]) => {\n const { rowKey, config } = props;\n if (config?.keepSelected) {\n // keepSelected: 合并其他页的选中数据\n const currentPageKeySet = new Set(\n props.data.map(\n r =>\n (r as Record<string, unknown>)[\n rowKey\n ] as Key\n )\n );\n const otherPageKeys = _selectedKeys.filter(\n k => !currentPageKeySet.has(k)\n );\n _selectedKeys = [\n ...otherPageKeys,\n ...rowKeys\n ];\n } else {\n _selectedKeys = rowKeys;\n }\n emit(\"update:keys\", _selectedKeys);\n };\n\n /**\n * 单选 - 受控模式\n * 单选只有 0/1 条选中,重渲染开销小,用受控模式保证正确性\n */\n const onSingleSelect: SelectionSelectFn<\n unknown\n > = (record, selected) => {\n const data = record as Record<string, never>;\n const { rowKey } = props;\n controlledKeys.value = selected\n ? [data[rowKey]]\n : [];\n _selectedKeys = [...controlledKeys.value];\n emit(\"update:keys\", controlledKeys.value);\n };\n\n // 监听父组件手动改变 keys\n watch(\n () => props.keys,\n val => {\n if (isArrayEqual(val, _selectedKeys)) return;\n _selectedKeys = [...val];\n controlledKeys.value = [...val];\n },\n {\n deep: true,\n immediate: true\n }\n );\n\n const rowSelection = computed<\n TableRowSelection<unknown> | undefined\n >(() => {\n const { config } = props;\n if (config?.selection === \"N\") return undefined;\n\n // 单选 - 受控模式\n if (config?.selection === \"S\") {\n return {\n selectedRowKeys: controlledKeys.value,\n onSelect: onSingleSelect,\n fixed: true,\n columnTitle: \"选择\",\n columnWidth: 60,\n getCheckboxProps:\n config?.getCheckboxProps as never\n };\n }\n\n // 多选 - 非受控模式(不传 selectedRowKeys)\n // a-table 自己管理 checkbox 状态,勾选时不会触发整表重渲染\n return {\n onChange: onMultiChange,\n fixed: true,\n columnWidth: 40,\n getCheckboxProps:\n config?.getCheckboxProps as never\n };\n });\n\n return { rowSelection, clearSelection };\n }\n\n return () => (\n <Flex vertical={true} ref={tableRef}>\n <Table\n key={tableKey.value}\n {...attrs}\n loading={props.loading}\n size={props.size}\n bordered={props.bordered}\n dataSource={data.value}\n columns={columns.value}\n rowSelection={rowSelection.value}\n customRow={customRowFn as never}\n pagination={false}\n rowKey={props.rowKey}\n v-slots={tableSlots}\n scroll={scrollConfig.value}\n />\n {pagination.value && (\n <div class={[paginationStyle, \"d-pagination\"]}>\n {\n <Pagination\n v-model:current={\n paginationConfig.value.current\n }\n v-model:pageSize={\n paginationConfig.value.pageSize\n }\n total={paginationConfig.value.total}\n disabled={props.loading}\n show-size-changer\n size={\"default\"}\n hide-on-single-page={\n paginationConfig.value.hideOnSinglePage\n }\n show-quick-jumper={\n paginationConfig.value.showQuickJumper\n }\n default-page-size={\n paginationConfig.value.defaultPageSize\n }\n page-size-options={\n paginationConfig.value.pageSizeOptions\n }\n show-total={\n paginationConfig.value.showTotal\n }\n onChange={onPaginationChange}\n showLessItems={true}\n ></Pagination>\n }\n </div>\n )}\n </Flex>\n );\n }\n});\n\nexport const useEleHeight = (\n node: Element | undefined | null\n): number => {\n if (!node) return 0;\n\n const list = [\n \"margin-top\",\n \"margin-bottom\",\n \"border-top\",\n \"border-bottom\",\n \"padding-top\",\n \"padding-bottom\",\n \"height\"\n ];\n const style = getComputedStyle(node);\n return list\n .map(k => parseInt(style.getPropertyValue(k), 10) || 0)\n .reduce((prev, cur) => {\n return prev + cur;\n }, 0);\n};\n\nexport default DTable;\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","isArrayEqual","a","b","length","i","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","useProps","tableSlots","useSlots","tableRef","tableHeight","antTableBodyRef","useHeight","tableKey","ref","rowSelection","clearSelection","useRowSelection","customRowFn","useCustomRow","onPaginationChange","usePagination","scrollConfig","computed","y","value","x","scrollToFirstRowOnChange","onMounted","_config","merge","bodyCell","params","headerCell","expandedRowRender","expandIcon","summary","customFilterDropdown","customFilterIcon","title","footer","emptyText","watch","val","nextTick","requestAnimationFrame","_tableBodyHeight","immediate","tableEl","$el","headerEl","getElementsByClassName","headerHeight","useEleHeight","paginationEl","paginationHeight","style","marginBottom","summaryEl","summaryHeight","Math","max","changePagination","position","page","scrollTop","cleared","record","index","clickTimeout","isHandling","click","dbClick","getCheckboxProps","id","handleSelection","event","checkEnable","target","closest","row","checkbox","querySelector","activeRowBackground","curEl","HTMLElement","parentElement","parentNode","classList","contains","remove","add","onClick","clearTimeout","window","setTimeout","onDblclick","_selectedKeys","controlledKeys","had","onMultiChange","rowKeys","currentPageKeySet","Set","map","r","otherPageKeys","filter","k","has","onSingleSelect","selected","deep","selectedRowKeys","onSelect","fixed","columnTitle","columnWidth","onChange","_createVNode","Flex","Table","_mergeProps","Pagination","current","$event","node","list","getComputedStyle","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBar.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/action-bar/ActionBar.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AAElD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACxD;;;;;;;;;;;;;;;;mBAuBqB,UAAU,KAAG,OAAO;;wBAkBf,UAAU,KAAG,OAAO;;;;;;;;;;;;;;;;AArCjD,wBAoDE"}
1
+ {"version":3,"file":"ActionBar.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/action-bar/ActionBar.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AAEpD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,MAAM,CAAC,EACH,OAAO,GACP,CAAC,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACxD;;;;;;;;;;;;;;;;mBAuBqB,UAAU,KAAG,OAAO;;wBAmBf,UAAU,KAAG,OAAO;;;;;;;;;;;;;;;;AAtC/C,wBA0DE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAI3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAO3D,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAGd,UAAU,IAAI;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,UAAU,MAAM,CAAC,CAAC,GAAG,OAAO;IAC1B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAExB,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAE9B,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,gBAAgB,CAAC,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,KACT,IAAI,CAAC;IAEV,KAAK,CAAC,EAAE,CACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;IAEV,OAAO,CAAC,EAAE,CACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;IAEV,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,OAAO,KACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAEzC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAGD,eAAO,MAAM,UAAU,GAAI,CAAC;;;;;;cAEH,QAAQ,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;cAKlB,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;cAId,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;CAGrC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,gBAAgB,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAChD,CAAC;AAoCF,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;cAnDQ,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAJd,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;4EAgiBhC,CAAC;AAEH,eAAO,MAAM,YAAY,SACjB,OAAO,GAAG,SAAS,GAAG,IAAI,KAC/B,MAkBF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAI3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAO3D,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAGd,UAAU,IAAI;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,UAAU,MAAM,CAAC,CAAC,GAAG,OAAO;IAC1B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAExB,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAE9B,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,gBAAgB,CAAC,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,KACT,IAAI,CAAC;IAEV,KAAK,CAAC,EAAE,CACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;IAEV,OAAO,CAAC,EAAE,CACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;IAEV,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,OAAO,KACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAEzC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAGD,eAAO,MAAM,UAAU,GAAI,CAAC;;;;;;cAEH,QAAQ,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;cAKlB,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;cAId,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;CAGrC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,gBAAgB,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAChD,CAAC;AA6CF,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;cA5DQ,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAJd,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;4EAmhBhC,CAAC;AAEH,eAAO,MAAM,YAAY,SACjB,OAAO,GAAG,SAAS,GAAG,IAAI,KAC/B,MAkBF,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "5.1.25",
3
+ "version": "5.1.27",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"