@ditari/bsui 5.1.26 → 5.1.28

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.
@@ -105,8 +105,6 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
105
105
  slots,
106
106
  attrs
107
107
  }) {
108
- const selectedRowKeys = vue.ref(props.keys || []);
109
- const selectedKeySet = vue.computed(() => new Set(selectedRowKeys.value));
110
108
  const {
111
109
  columns,
112
110
  data,
@@ -115,17 +113,26 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
115
113
  const {
116
114
  tableSlots
117
115
  } = useSlots();
118
- const {
119
- paginationConfig,
120
- onPaginationChange
121
- } = usePagination();
122
116
  const {
123
117
  tableRef,
124
118
  tableHeight,
125
119
  antTableBodyRef
126
120
  } = useHeight();
121
+ const tableKey = vue.ref(0);
122
+ const {
123
+ rowSelection,
124
+ clearSelection
125
+ } = useRowSelection();
127
126
  const customRowFn = useCustomRow();
128
- const rowSelection = useRowSelection();
127
+ const {
128
+ paginationConfig,
129
+ onPaginationChange
130
+ } = usePagination();
131
+ const scrollConfig = vue.computed(() => ({
132
+ y: tableHeight.value,
133
+ x: "100%",
134
+ scrollToFirstRowOnChange: true
135
+ }));
129
136
  vue.onMounted(() => {
130
137
  });
131
138
  function useProps() {
@@ -200,6 +207,15 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
200
207
  }, {
201
208
  immediate: true
202
209
  });
210
+ vue.watch(tableKey, () => {
211
+ if (props.height > 0) {
212
+ vue.nextTick(() => {
213
+ requestAnimationFrame(() => {
214
+ _tableBodyHeight(props.height);
215
+ });
216
+ });
217
+ }
218
+ });
203
219
  function _tableBodyHeight(height) {
204
220
  var _a, _b, _c;
205
221
  const tableEl = (_a = tableRef2.value) == null ? void 0 : _a.$el;
@@ -233,7 +249,6 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
233
249
  const paginationConfig2 = vue.computed(() => {
234
250
  return __spreadValues(__spreadValues({
235
251
  position: ["bottomCenter"],
236
- // 符合类型的分页位置
237
252
  total: 0
238
253
  }, defaultPaginationProps), pagination.value);
239
254
  });
@@ -243,11 +258,13 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
243
258
  keepSelected
244
259
  } = props.config;
245
260
  changePagination == null ? void 0 : changePagination(page, pageSize);
246
- antTableBodyRef.value.scrollTop = 0;
261
+ if (antTableBodyRef.value) {
262
+ antTableBodyRef.value.scrollTop = 0;
263
+ }
247
264
  if (selection === "S" || !keepSelected) {
248
- if (selectedRowKeys.value.length > 0) {
249
- selectedRowKeys.value = [];
250
- emit("update:keys", selectedRowKeys.value);
265
+ const cleared = clearSelection();
266
+ if (cleared) {
267
+ tableKey.value++;
251
268
  }
252
269
  }
253
270
  };
@@ -259,6 +276,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
259
276
  function useCustomRow() {
260
277
  return (record, index) => {
261
278
  let clickTimeout = 0;
279
+ let isHandling = false;
262
280
  const {
263
281
  rowKey,
264
282
  config: {
@@ -269,23 +287,21 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
269
287
  } = {}
270
288
  } = props;
271
289
  const id = record[rowKey];
272
- const onClick = () => {
290
+ const handleSelection = (event) => {
273
291
  var _a;
274
292
  const checkEnable = getCheckboxProps === void 0 ? false : (_a = getCheckboxProps(record)) == null ? void 0 : _a.disabled;
275
293
  if (selection === "N" || checkEnable) {
276
294
  return;
277
295
  }
278
- const haveState = selectedKeySet.value.has(id);
279
- if (haveState) {
280
- selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== id);
281
- } else {
282
- if (selection === "S") {
283
- selectedRowKeys.value = [id];
284
- } else {
285
- selectedRowKeys.value = [...selectedRowKeys.value, 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();
286
303
  }
287
304
  }
288
- emit("update:keys", selectedRowKeys.value);
289
305
  };
290
306
  function activeRowBackground(event) {
291
307
  const {
@@ -304,14 +320,16 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
304
320
  }
305
321
  return {
306
322
  onClick: (event) => {
323
+ if (isHandling) return;
307
324
  clearTimeout(clickTimeout);
308
325
  clickTimeout = window.setTimeout(() => {
326
+ isHandling = true;
309
327
  activeRowBackground(event);
310
- onClick();
328
+ handleSelection(event);
311
329
  click == null ? void 0 : click(record, index);
330
+ isHandling = false;
312
331
  }, 200);
313
332
  },
314
- // 点击行
315
333
  onDblclick: () => {
316
334
  clearTimeout(clickTimeout);
317
335
  dbClick == null ? void 0 : dbClick(record, index);
@@ -320,57 +338,82 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
320
338
  };
321
339
  }
322
340
  function useRowSelection() {
323
- const onSelect = (record, selected) => {
324
- var _a;
325
- const data2 = record;
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) => {
326
353
  const {
327
- rowKey
354
+ rowKey,
355
+ config
328
356
  } = props;
329
- const selection = (_a = props.config) == null ? void 0 : _a.selection;
330
- if (selection === "S") {
331
- selectedRowKeys.value = selected ? [data2[rowKey]] : [];
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];
332
361
  } else {
333
- selectedRowKeys.value = selected ? [...selectedRowKeys.value, data2[rowKey]] : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
362
+ _selectedKeys = rowKeys;
334
363
  }
335
- emit("update:keys", selectedRowKeys.value);
364
+ emit("update:keys", _selectedKeys);
336
365
  };
337
- const onSelectAll = (selected, selectedRows, changeRows) => {
366
+ const onSingleSelect = (record, selected) => {
367
+ const data2 = record;
338
368
  const {
339
369
  rowKey
340
370
  } = props;
341
- const _ids = changeRows.map((record) => record[rowKey]);
342
- const idSet = new Set(_ids);
343
- selectedRowKeys.value = selected ? [...selectedRowKeys.value, ..._ids] : selectedRowKeys.value.filter((key) => !idSet.has(key));
344
- emit("update:keys", selectedRowKeys.value);
371
+ controlledKeys.value = selected ? [data2[rowKey]] : [];
372
+ _selectedKeys = [...controlledKeys.value];
373
+ emit("update:keys", controlledKeys.value);
345
374
  };
346
375
  vue.watch(() => props.keys, (val) => {
347
- if (isArrayEqual(val, selectedRowKeys.value)) return;
348
- selectedRowKeys.value = val;
376
+ if (isArrayEqual(val, _selectedKeys)) return;
377
+ _selectedKeys = [...val];
378
+ controlledKeys.value = [...val];
349
379
  }, {
350
380
  deep: true,
351
381
  immediate: true
352
382
  });
353
- return vue.computed(() => {
383
+ const rowSelection2 = vue.computed(() => {
354
384
  const {
355
385
  config
356
386
  } = props;
357
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,
392
+ fixed: true,
393
+ columnTitle: "\u9009\u62E9",
394
+ columnWidth: 60,
395
+ getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
396
+ };
397
+ }
358
398
  return {
359
- selectedRowKeys: selectedRowKeys.value,
360
- onSelect,
361
- onSelectAll,
399
+ onChange: onMultiChange,
362
400
  fixed: true,
363
- columnTitle: (config == null ? void 0 : config.selection) === "S" ? "\u9009\u62E9" : null,
364
- columnWidth: (config == null ? void 0 : config.selection) === "S" ? 60 : 40,
401
+ columnWidth: 40,
365
402
  getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
366
403
  };
367
404
  });
405
+ return {
406
+ rowSelection: rowSelection2,
407
+ clearSelection: clearSelection2
408
+ };
368
409
  }
369
410
  return () => vue.createVNode(antDesignVue.Flex, {
370
411
  "vertical": true,
371
412
  "ref": tableRef
372
413
  }, {
373
- default: () => [vue.createVNode(antDesignVue.Table, vue.mergeProps(attrs, {
414
+ default: () => [vue.createVNode(antDesignVue.Table, vue.mergeProps({
415
+ "key": tableKey.value
416
+ }, attrs, {
374
417
  "loading": props.loading,
375
418
  "size": props.size,
376
419
  "bordered": props.bordered,
@@ -380,11 +423,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
380
423
  "customRow": customRowFn,
381
424
  "pagination": false,
382
425
  "rowKey": props.rowKey,
383
- "scroll": {
384
- y: tableHeight.value,
385
- x: "100%",
386
- scrollToFirstRowOnChange: true
387
- }
426
+ "scroll": scrollConfig.value
388
427
  }), tableSlots), pagination.value && vue.createVNode("div", {
389
428
  "class": [paginationStyle, "d-pagination"]
390
429
  }, [vue.createVNode(antDesignVue.Pagination, {
@@ -1 +1 @@
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 // 保存选中的唯一id\n const selectedRowKeys = ref<Key[]>(props.keys || []);\n // O(1) 查找集合,避免 .some() / .includes() 的 O(n) 开销\n const selectedKeySet = computed(\n () => new Set(selectedRowKeys.value)\n );\n\n const { columns, data, pagination } = useProps();\n const { tableSlots } = useSlots();\n const { paginationConfig, onPaginationChange } =\n usePagination();\n const { tableRef, tableHeight, antTableBodyRef } =\n useHeight();\n\n // 【优化1】customRow 只创建一次稳定引用,避免每次渲染重新生成导致全表行重渲染\n const customRowFn = useCustomRow();\n const rowSelection = useRowSelection();\n\n onMounted(() => {});\n\n /**\n * props计算属性处理\n */\n function useProps() {\n // 定义计算属性\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 // 只有外部传入了对应的插槽,才定义该属性\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 // --- 重点修改这里 ---\n // 只有当 slots.title 存在时,tableSlots 才有 title 属性\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 // 表格body对象\n const antTableBodyRef = ref<HTMLElement>();\n\n watch(\n () => props.height,\n val => {\n if (val > 0) {\n // 使用 nextTick + requestAnimationFrame 确保 DOM 完全渲染\n nextTick(() => {\n requestAnimationFrame(() => {\n _tableBodyHeight(val);\n });\n });\n }\n },\n {\n immediate: true\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 // 表头高度 - 增加空值检查\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 // 分页 - 增加空值检查\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 // 总结行 - 增加空值检查\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 // 计算最终高度,确保不为负数\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 // 设置body高度\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 // 切换分页的时候,表体滚动到顶部\n antTableBodyRef.value!.scrollTop = 0;\n\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\n // 清空历史选中数据\n if (selection === \"S\" || !keepSelected) {\n // 只有selectedRowKeys被清空时,这里才触发update;\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\n if (selectedRowKeys.value.length > 0) {\n selectedRowKeys.value = [];\n emit(\"update:keys\", selectedRowKeys.value);\n }\n }\n };\n\n return {\n paginationConfig,\n onPaginationChange\n };\n }\n\n function useCustomRow() {\n return (record: never, index: number) => {\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\n let clickTimeout: number = 0;\n const {\n rowKey,\n config: {\n click,\n dbClick,\n selection,\n getCheckboxProps\n } = {} as Config\n } = props;\n\n // 当前点击行的唯一ID,通过rowKey从record中取值\n const id = record[rowKey];\n\n /**\n * 处理单击事件业务\n * @param record 当前点击行数据\n */\n const onClick = () => {\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\n // 否则checkEnable为false\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record)?.disabled;\n\n if (selection === \"N\" || checkEnable) {\n return;\n }\n // 【优化3】使用 Set O(1) 查找替代 .some() O(n)\n const haveState = selectedKeySet.value.has(id);\n if (haveState) {\n selectedRowKeys.value =\n selectedRowKeys.value.filter(\n (key: Key) => key !== id\n );\n } else {\n if (selection === \"S\") {\n selectedRowKeys.value = [id];\n } else {\n selectedRowKeys.value = [\n ...selectedRowKeys.value,\n id\n ];\n }\n }\n emit(\"update:keys\", selectedRowKeys.value);\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 clearTimeout(clickTimeout);\n clickTimeout = window.setTimeout(() => {\n // 处理背景激活逻辑\n activeRowBackground(event);\n // 处理单击事件业务\n onClick();\n // 回传数据 自定义单击后的业务\n click?.(record, index);\n }, 200);\n }, // 点击行\n onDblclick: () => {\n clearTimeout(clickTimeout);\n // 回传数据 自定义单击后的业务\n dbClick?.(record, index);\n }\n };\n };\n }\n\n function useRowSelection() {\n const onSelect: SelectionSelectFn<unknown> = (\n record,\n selected\n ) => {\n const data = record as Record<string, never>;\n const { rowKey } = props;\n const selection = props.config?.selection;\n if (selection === \"S\") {\n selectedRowKeys.value = selected\n ? [data[rowKey]]\n : [];\n } else {\n selectedRowKeys.value = selected\n ? [...selectedRowKeys.value, data[rowKey]]\n : selectedRowKeys.value.filter(\n (key: Key) => key !== data[rowKey]\n );\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n const onSelectAll = (\n selected: boolean,\n selectedRows: unknown[],\n changeRows: unknown[]\n ) => {\n const { rowKey } = props;\n // 【优化3】使用 Set 提升 changeRows 的查找性能\n const _ids: Key[] = changeRows.map(\n (record: unknown) =>\n (record as { [key: string]: never })[rowKey]\n );\n const idSet = new Set(_ids);\n selectedRowKeys.value = selected\n ? [...selectedRowKeys.value, ..._ids]\n : selectedRowKeys.value.filter(\n (key: Key) => !idSet.has(key as never)\n );\n\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n // 【优化2】监听父组件手动改变keys,值相同时不赋值,避免双重响应式更新\n watch(\n () => props.keys,\n val => {\n if (isArrayEqual(val, selectedRowKeys.value))\n return;\n selectedRowKeys.value = val;\n },\n {\n deep: true,\n immediate: true\n }\n );\n\n // 【优化4】使用 computed 替代 ref,selectedRowKeys 变化时自动更新,\n // 保持 onSelect/onSelectAll 引用稳定,避免全表重渲染\n return computed<\n TableRowSelection<unknown> | undefined\n >(() => {\n const { config } = props;\n if (config?.selection === \"N\") return undefined;\n return {\n selectedRowKeys: selectedRowKeys.value,\n onSelect,\n onSelectAll,\n fixed: true,\n columnTitle:\n config?.selection === \"S\" ? \"选择\" : null,\n columnWidth: config?.selection === \"S\" ? 60 : 40,\n getCheckboxProps:\n config?.getCheckboxProps as never\n };\n });\n }\n\n return () => (\n <Flex vertical={true} ref={tableRef}>\n <Table\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={{\n y: tableHeight.value,\n x: \"100%\",\n scrollToFirstRowOnChange: true\n }}\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","selectedRowKeys","ref","selectedKeySet","computed","Set","value","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","customRowFn","useCustomRow","rowSelection","useRowSelection","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","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","has","filter","key","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","onSelectAll","selectedRows","changeRows","_ids","map","idSet","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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"}
@@ -101,8 +101,6 @@ const DTable = /* @__PURE__ */ defineComponent({
101
101
  slots,
102
102
  attrs
103
103
  }) {
104
- const selectedRowKeys = ref(props.keys || []);
105
- const selectedKeySet = computed(() => new Set(selectedRowKeys.value));
106
104
  const {
107
105
  columns,
108
106
  data,
@@ -111,17 +109,26 @@ const DTable = /* @__PURE__ */ defineComponent({
111
109
  const {
112
110
  tableSlots
113
111
  } = useSlots();
114
- const {
115
- paginationConfig,
116
- onPaginationChange
117
- } = usePagination();
118
112
  const {
119
113
  tableRef,
120
114
  tableHeight,
121
115
  antTableBodyRef
122
116
  } = useHeight();
117
+ const tableKey = ref(0);
118
+ const {
119
+ rowSelection,
120
+ clearSelection
121
+ } = useRowSelection();
123
122
  const customRowFn = useCustomRow();
124
- const rowSelection = useRowSelection();
123
+ const {
124
+ paginationConfig,
125
+ onPaginationChange
126
+ } = usePagination();
127
+ const scrollConfig = computed(() => ({
128
+ y: tableHeight.value,
129
+ x: "100%",
130
+ scrollToFirstRowOnChange: true
131
+ }));
125
132
  onMounted(() => {
126
133
  });
127
134
  function useProps() {
@@ -196,6 +203,15 @@ const DTable = /* @__PURE__ */ defineComponent({
196
203
  }, {
197
204
  immediate: true
198
205
  });
206
+ watch(tableKey, () => {
207
+ if (props.height > 0) {
208
+ nextTick(() => {
209
+ requestAnimationFrame(() => {
210
+ _tableBodyHeight(props.height);
211
+ });
212
+ });
213
+ }
214
+ });
199
215
  function _tableBodyHeight(height) {
200
216
  var _a, _b, _c;
201
217
  const tableEl = (_a = tableRef2.value) == null ? void 0 : _a.$el;
@@ -229,7 +245,6 @@ const DTable = /* @__PURE__ */ defineComponent({
229
245
  const paginationConfig2 = computed(() => {
230
246
  return __spreadValues(__spreadValues({
231
247
  position: ["bottomCenter"],
232
- // 符合类型的分页位置
233
248
  total: 0
234
249
  }, defaultPaginationProps), pagination.value);
235
250
  });
@@ -239,11 +254,13 @@ const DTable = /* @__PURE__ */ defineComponent({
239
254
  keepSelected
240
255
  } = props.config;
241
256
  changePagination == null ? void 0 : changePagination(page, pageSize);
242
- antTableBodyRef.value.scrollTop = 0;
257
+ if (antTableBodyRef.value) {
258
+ antTableBodyRef.value.scrollTop = 0;
259
+ }
243
260
  if (selection === "S" || !keepSelected) {
244
- if (selectedRowKeys.value.length > 0) {
245
- selectedRowKeys.value = [];
246
- emit("update:keys", selectedRowKeys.value);
261
+ const cleared = clearSelection();
262
+ if (cleared) {
263
+ tableKey.value++;
247
264
  }
248
265
  }
249
266
  };
@@ -255,6 +272,7 @@ const DTable = /* @__PURE__ */ defineComponent({
255
272
  function useCustomRow() {
256
273
  return (record, index) => {
257
274
  let clickTimeout = 0;
275
+ let isHandling = false;
258
276
  const {
259
277
  rowKey,
260
278
  config: {
@@ -265,23 +283,21 @@ const DTable = /* @__PURE__ */ defineComponent({
265
283
  } = {}
266
284
  } = props;
267
285
  const id = record[rowKey];
268
- const onClick = () => {
286
+ const handleSelection = (event) => {
269
287
  var _a;
270
288
  const checkEnable = getCheckboxProps === void 0 ? false : (_a = getCheckboxProps(record)) == null ? void 0 : _a.disabled;
271
289
  if (selection === "N" || checkEnable) {
272
290
  return;
273
291
  }
274
- const haveState = selectedKeySet.value.has(id);
275
- if (haveState) {
276
- selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== id);
277
- } else {
278
- if (selection === "S") {
279
- selectedRowKeys.value = [id];
280
- } else {
281
- selectedRowKeys.value = [...selectedRowKeys.value, 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();
282
299
  }
283
300
  }
284
- emit("update:keys", selectedRowKeys.value);
285
301
  };
286
302
  function activeRowBackground(event) {
287
303
  const {
@@ -300,14 +316,16 @@ const DTable = /* @__PURE__ */ defineComponent({
300
316
  }
301
317
  return {
302
318
  onClick: (event) => {
319
+ if (isHandling) return;
303
320
  clearTimeout(clickTimeout);
304
321
  clickTimeout = window.setTimeout(() => {
322
+ isHandling = true;
305
323
  activeRowBackground(event);
306
- onClick();
324
+ handleSelection(event);
307
325
  click == null ? void 0 : click(record, index);
326
+ isHandling = false;
308
327
  }, 200);
309
328
  },
310
- // 点击行
311
329
  onDblclick: () => {
312
330
  clearTimeout(clickTimeout);
313
331
  dbClick == null ? void 0 : dbClick(record, index);
@@ -316,57 +334,82 @@ const DTable = /* @__PURE__ */ defineComponent({
316
334
  };
317
335
  }
318
336
  function useRowSelection() {
319
- const onSelect = (record, selected) => {
320
- var _a;
321
- const data2 = record;
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) => {
322
349
  const {
323
- rowKey
350
+ rowKey,
351
+ config
324
352
  } = props;
325
- const selection = (_a = props.config) == null ? void 0 : _a.selection;
326
- if (selection === "S") {
327
- selectedRowKeys.value = selected ? [data2[rowKey]] : [];
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];
328
357
  } else {
329
- selectedRowKeys.value = selected ? [...selectedRowKeys.value, data2[rowKey]] : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
358
+ _selectedKeys = rowKeys;
330
359
  }
331
- emit("update:keys", selectedRowKeys.value);
360
+ emit("update:keys", _selectedKeys);
332
361
  };
333
- const onSelectAll = (selected, selectedRows, changeRows) => {
362
+ const onSingleSelect = (record, selected) => {
363
+ const data2 = record;
334
364
  const {
335
365
  rowKey
336
366
  } = props;
337
- const _ids = changeRows.map((record) => record[rowKey]);
338
- const idSet = new Set(_ids);
339
- selectedRowKeys.value = selected ? [...selectedRowKeys.value, ..._ids] : selectedRowKeys.value.filter((key) => !idSet.has(key));
340
- emit("update:keys", selectedRowKeys.value);
367
+ controlledKeys.value = selected ? [data2[rowKey]] : [];
368
+ _selectedKeys = [...controlledKeys.value];
369
+ emit("update:keys", controlledKeys.value);
341
370
  };
342
371
  watch(() => props.keys, (val) => {
343
- if (isArrayEqual(val, selectedRowKeys.value)) return;
344
- selectedRowKeys.value = val;
372
+ if (isArrayEqual(val, _selectedKeys)) return;
373
+ _selectedKeys = [...val];
374
+ controlledKeys.value = [...val];
345
375
  }, {
346
376
  deep: true,
347
377
  immediate: true
348
378
  });
349
- return computed(() => {
379
+ const rowSelection2 = computed(() => {
350
380
  const {
351
381
  config
352
382
  } = props;
353
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,
388
+ fixed: true,
389
+ columnTitle: "\u9009\u62E9",
390
+ columnWidth: 60,
391
+ getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
392
+ };
393
+ }
354
394
  return {
355
- selectedRowKeys: selectedRowKeys.value,
356
- onSelect,
357
- onSelectAll,
395
+ onChange: onMultiChange,
358
396
  fixed: true,
359
- columnTitle: (config == null ? void 0 : config.selection) === "S" ? "\u9009\u62E9" : null,
360
- columnWidth: (config == null ? void 0 : config.selection) === "S" ? 60 : 40,
397
+ columnWidth: 40,
361
398
  getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
362
399
  };
363
400
  });
401
+ return {
402
+ rowSelection: rowSelection2,
403
+ clearSelection: clearSelection2
404
+ };
364
405
  }
365
406
  return () => createVNode(Flex, {
366
407
  "vertical": true,
367
408
  "ref": tableRef
368
409
  }, {
369
- default: () => [createVNode(Table, mergeProps(attrs, {
410
+ default: () => [createVNode(Table, mergeProps({
411
+ "key": tableKey.value
412
+ }, attrs, {
370
413
  "loading": props.loading,
371
414
  "size": props.size,
372
415
  "bordered": props.bordered,
@@ -376,11 +419,7 @@ const DTable = /* @__PURE__ */ defineComponent({
376
419
  "customRow": customRowFn,
377
420
  "pagination": false,
378
421
  "rowKey": props.rowKey,
379
- "scroll": {
380
- y: tableHeight.value,
381
- x: "100%",
382
- scrollToFirstRowOnChange: true
383
- }
422
+ "scroll": scrollConfig.value
384
423
  }), tableSlots), pagination.value && createVNode("div", {
385
424
  "class": [paginationStyle, "d-pagination"]
386
425
  }, [createVNode(Pagination, {
@@ -1 +1 @@
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 // 保存选中的唯一id\n const selectedRowKeys = ref<Key[]>(props.keys || []);\n // O(1) 查找集合,避免 .some() / .includes() 的 O(n) 开销\n const selectedKeySet = computed(\n () => new Set(selectedRowKeys.value)\n );\n\n const { columns, data, pagination } = useProps();\n const { tableSlots } = useSlots();\n const { paginationConfig, onPaginationChange } =\n usePagination();\n const { tableRef, tableHeight, antTableBodyRef } =\n useHeight();\n\n // 【优化1】customRow 只创建一次稳定引用,避免每次渲染重新生成导致全表行重渲染\n const customRowFn = useCustomRow();\n const rowSelection = useRowSelection();\n\n onMounted(() => {});\n\n /**\n * props计算属性处理\n */\n function useProps() {\n // 定义计算属性\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 // 只有外部传入了对应的插槽,才定义该属性\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 // --- 重点修改这里 ---\n // 只有当 slots.title 存在时,tableSlots 才有 title 属性\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 // 表格body对象\n const antTableBodyRef = ref<HTMLElement>();\n\n watch(\n () => props.height,\n val => {\n if (val > 0) {\n // 使用 nextTick + requestAnimationFrame 确保 DOM 完全渲染\n nextTick(() => {\n requestAnimationFrame(() => {\n _tableBodyHeight(val);\n });\n });\n }\n },\n {\n immediate: true\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 // 表头高度 - 增加空值检查\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 // 分页 - 增加空值检查\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 // 总结行 - 增加空值检查\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 // 计算最终高度,确保不为负数\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 // 设置body高度\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 // 切换分页的时候,表体滚动到顶部\n antTableBodyRef.value!.scrollTop = 0;\n\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\n // 清空历史选中数据\n if (selection === \"S\" || !keepSelected) {\n // 只有selectedRowKeys被清空时,这里才触发update;\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\n if (selectedRowKeys.value.length > 0) {\n selectedRowKeys.value = [];\n emit(\"update:keys\", selectedRowKeys.value);\n }\n }\n };\n\n return {\n paginationConfig,\n onPaginationChange\n };\n }\n\n function useCustomRow() {\n return (record: never, index: number) => {\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\n let clickTimeout: number = 0;\n const {\n rowKey,\n config: {\n click,\n dbClick,\n selection,\n getCheckboxProps\n } = {} as Config\n } = props;\n\n // 当前点击行的唯一ID,通过rowKey从record中取值\n const id = record[rowKey];\n\n /**\n * 处理单击事件业务\n * @param record 当前点击行数据\n */\n const onClick = () => {\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\n // 否则checkEnable为false\n const checkEnable =\n getCheckboxProps === undefined\n ? false\n : getCheckboxProps(record)?.disabled;\n\n if (selection === \"N\" || checkEnable) {\n return;\n }\n // 【优化3】使用 Set O(1) 查找替代 .some() O(n)\n const haveState = selectedKeySet.value.has(id);\n if (haveState) {\n selectedRowKeys.value =\n selectedRowKeys.value.filter(\n (key: Key) => key !== id\n );\n } else {\n if (selection === \"S\") {\n selectedRowKeys.value = [id];\n } else {\n selectedRowKeys.value = [\n ...selectedRowKeys.value,\n id\n ];\n }\n }\n emit(\"update:keys\", selectedRowKeys.value);\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 clearTimeout(clickTimeout);\n clickTimeout = window.setTimeout(() => {\n // 处理背景激活逻辑\n activeRowBackground(event);\n // 处理单击事件业务\n onClick();\n // 回传数据 自定义单击后的业务\n click?.(record, index);\n }, 200);\n }, // 点击行\n onDblclick: () => {\n clearTimeout(clickTimeout);\n // 回传数据 自定义单击后的业务\n dbClick?.(record, index);\n }\n };\n };\n }\n\n function useRowSelection() {\n const onSelect: SelectionSelectFn<unknown> = (\n record,\n selected\n ) => {\n const data = record as Record<string, never>;\n const { rowKey } = props;\n const selection = props.config?.selection;\n if (selection === \"S\") {\n selectedRowKeys.value = selected\n ? [data[rowKey]]\n : [];\n } else {\n selectedRowKeys.value = selected\n ? [...selectedRowKeys.value, data[rowKey]]\n : selectedRowKeys.value.filter(\n (key: Key) => key !== data[rowKey]\n );\n }\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n const onSelectAll = (\n selected: boolean,\n selectedRows: unknown[],\n changeRows: unknown[]\n ) => {\n const { rowKey } = props;\n // 【优化3】使用 Set 提升 changeRows 的查找性能\n const _ids: Key[] = changeRows.map(\n (record: unknown) =>\n (record as { [key: string]: never })[rowKey]\n );\n const idSet = new Set(_ids);\n selectedRowKeys.value = selected\n ? [...selectedRowKeys.value, ..._ids]\n : selectedRowKeys.value.filter(\n (key: Key) => !idSet.has(key as never)\n );\n\n emit(\"update:keys\", selectedRowKeys.value);\n };\n\n // 【优化2】监听父组件手动改变keys,值相同时不赋值,避免双重响应式更新\n watch(\n () => props.keys,\n val => {\n if (isArrayEqual(val, selectedRowKeys.value))\n return;\n selectedRowKeys.value = val;\n },\n {\n deep: true,\n immediate: true\n }\n );\n\n // 【优化4】使用 computed 替代 ref,selectedRowKeys 变化时自动更新,\n // 保持 onSelect/onSelectAll 引用稳定,避免全表重渲染\n return computed<\n TableRowSelection<unknown> | undefined\n >(() => {\n const { config } = props;\n if (config?.selection === \"N\") return undefined;\n return {\n selectedRowKeys: selectedRowKeys.value,\n onSelect,\n onSelectAll,\n fixed: true,\n columnTitle:\n config?.selection === \"S\" ? \"选择\" : null,\n columnWidth: config?.selection === \"S\" ? 60 : 40,\n getCheckboxProps:\n config?.getCheckboxProps as never\n };\n });\n }\n\n return () => (\n <Flex vertical={true} ref={tableRef}>\n <Table\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={{\n y: tableHeight.value,\n x: \"100%\",\n scrollToFirstRowOnChange: true\n }}\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","selectedRowKeys","ref","selectedKeySet","computed","Set","value","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","customRowFn","useCustomRow","rowSelection","useRowSelection","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","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","has","filter","key","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","onSelectAll","selectedRows","changeRows","_ids","map","idSet","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqEO,MAAMA,aAAaA,OAAqB;AAAA,EAC7CC,MAAAA,EAAQ;AAAA,IAAEC,IAAAA,EAAMC,MAAAA;AAAAA,IAAQC,OAAAA,EAAS;AAAA,GAAE;AAAA,EACnCC,IAAAA,EAAM;AAAA,IAAEH,IAAAA,EAAMI,KAAAA;AAAAA,IAAwBF,OAAAA,EAASA,MAAM;AAAA,GAAG;AAAA;AAAA,EACxDG,OAAAA,EAAS;AAAA,IAAEL,IAAAA,EAAMM,OAAAA;AAAAA,IAASJ,OAAAA,EAAS;AAAA,GAAM;AAAA,EACzCK,MAAAA,EAAQ;AAAA,IAAEP,IAAAA,EAAMQ,MAAAA;AAAAA,IAAQN,OAAAA,EAAS;AAAA,GAAK;AAAA,EACtCO,QAAAA,EAAU;AAAA,IAAET,IAAAA,EAAMM,OAAAA;AAAAA,IAASJ,OAAAA,EAAS;AAAA,GAAM;AAAA,EAC1CQ,IAAAA,EAAM;AAAA,IACJV,IAAAA,EAAMQ,MAAAA;AAAAA,IACNN,OAAAA,EAAS;AAAA,GACX;AAAA,EACAS,IAAAA,EAAM;AAAA,IACJX,IAAAA,EAAMI,KAAAA;AAAAA,IACNF,OAAAA,EAASA,MAAM;AAAA,GACjB;AAAA,EACAU,MAAAA,EAAQ;AAAA,IACNZ,IAAAA,EAAMa,MAAAA;AAAAA,IACNC,QAAAA,EAAU;AAAA;AAEd,CAAA;AAOA,MAAMC,sBAAAA,GAA0C;AAAA,EAC9CC,eAAAA,EAAiB,EAAA;AAAA,EACjBC,QAAAA,EAAU,KAAA;AAAA,EACVC,gBAAAA,EAAkB,KAAA;AAAA,EAClBC,QAAAA,EAAU,EAAA;AAAA,EACVC,iBAAiB,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAAA,EAC9CC,UAAAA,EAAY,KAAA;AAAA,EACZC,aAAAA,EAAe,KAAA;AAAA,EACfC,eAAAA,EAAiB,IAAA;AAAA,EACjBC,eAAAA,EAAiB,IAAA;AAAA;AAAA,EACjBC,SAAAA,EAAWC,CAAAA,KAAAA,KAAS,CAAA,aAAA,EAAMA,KAAK,CAAA,mBAAA,CAAA;AAAA,EAC/BC,MAAAA,EAAQ,KAAA;AAAA,EACRjB,IAAAA,EAAM,SAAA;AAAA,EACNgB,KAAAA,EAAO;AACT,CAAA;AAGA,MAAME,aAAAA,GAAwB;AAAA,EAC5BC,SAAS,EAAA;AAAA,EACTC,UAAAA,EAAYC,KAAAA,CAAAA;AAAAA,EACZC,gBAAAA,EAAkBjB,sBAAAA;AAAAA,EAClBkB,cAAAA,EAAgB,EAAA;AAAA,EAChBC,SAAAA,EAAW,GAAA;AAAA,EACXC,YAAAA,EAAc;AAChB,CAAA;AAEA,MAAMC,eAAAA,GAAkBC,GAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAAAA;AAOxB,SAASC,YAAAA,CAAaC,GAAUC,CAAAA,EAAmB;AACjD,EAAA,IAAID,CAAAA,CAAEE,MAAAA,KAAWD,CAAAA,CAAEC,MAAAA,EAAQ,OAAO,KAAA;AAClC,EAAA,KAAA,IAASC,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIH,CAAAA,CAAEE,QAAQC,CAAAA,EAAAA,EAAK;AACjC,IAAA,IAAIH,EAAEG,CAAC,CAAA,KAAMF,CAAAA,CAAEE,CAAC,GAAG,OAAO,KAAA;AAAA,EAC5B;AACA,EAAA,OAAO,IAAA;AACT;AAGA,MAAMC,yBAASC,eAAAA,CAAgB;AAAA,EAC7BC,IAAAA,EAAM,QAAA;AAAA,EACNC,OAAOhD,UAAAA,EAAW;AAAA;AAAA,EAClBiD,KAAAA,EAAO,CAAC,aAAa,CAAA;AAAA,EACrBC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,IAAAA;AAAAA,IAAMC,KAAAA;AAAAA,IAAOC;AAAAA,GAAM,EAAG;AAEnC,IAAA,MAAMC,eAAAA,GAAkBC,GAAAA,CAAWP,KAAAA,CAAMnC,IAAAA,IAAQ,EAAE,CAAA;AAEnD,IAAA,MAAM2C,iBAAiBC,QAAAA,CACrB,MAAM,IAAIC,GAAAA,CAAIJ,eAAAA,CAAgBK,KAAK,CACrC,CAAA;AAEA,IAAA,MAAM;AAAA,MAAE5B,OAAAA;AAAAA,MAAS1B,IAAAA;AAAAA,MAAM2B;AAAAA,QAAe4B,QAAAA,EAAS;AAC/C,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAeC,QAAAA,EAAS;AAChC,IAAA,MAAM;AAAA,MAAE5B,gBAAAA;AAAAA,MAAkB6B;AAAAA,QACxBC,aAAAA,EAAc;AAChB,IAAA,MAAM;AAAA,MAAEC,QAAAA;AAAAA,MAAUC,WAAAA;AAAAA,MAAaC;AAAAA,QAC7BC,SAAAA,EAAU;AAGZ,IAAA,MAAMC,cAAcC,YAAAA,EAAa;AACjC,IAAA,MAAMC,eAAeC,eAAAA,EAAgB;AAErCC,IAAAA,SAAAA,CAAU,MAAM;AAAA,IAAC,CAAC,CAAA;AAKlB,IAAA,SAASb,QAAAA,GAAW;AAElB,MAAA,MAAMc,OAAAA,GAAUjB,SAAS,MACvBkB,KAAAA,CAAM,EAAC,EAAG7C,aAAAA,EAAekB,KAAAA,CAAMlC,MAAM,CACvC,CAAA;AACA,MAAA,MAAMiB,QAAAA,GAAU0B,QAAAA,CAAS,MAAMiB,OAAAA,CAAQf,MAAM5B,OAAO,CAAA;AACpD,MAAA,MAAM1B,QAAOoD,QAAAA,CAAS,MAAMT,KAAAA,CAAM3C,IAAAA,IAAQ,EAAE,CAAA;AAC5C,MAAA,MAAM2B,cAAayB,QAAAA,CACjB,MAAMiB,OAAAA,CAAQf,KAAAA,CAAM3B,cAAc,KACpC,CAAA;AAEA,MAAA,OAAO;AAAA,QACLD,OAAAA,EAAAA,QAAAA;AAAAA,QACA1B,IAAAA,EAAAA,KAAAA;AAAAA,QACA2B,UAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAKA,IAAA,SAAS8B,QAAAA,GAAW;AAClB,MAAA,MAAMD,cAAkB,EAAC;AAGzB,MAAA,IAAIT,KAAAA,CAAMwB,QAAAA,EACRf,WAAAA,CAAWe,WAAYC,CAAAA,MAAAA;AA9L/B,QAAA,IAAA,EAAA;AA+LUzB,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMwB,aAANxB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAiByB,MAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AACrB,MAAA,IAAIzB,KAAAA,CAAM0B,UAAAA,EACRjB,WAAAA,CAAWiB,aAAcD,CAAAA,MAAAA;AAjMjC,QAAA,IAAA,EAAA;AAkMUzB,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM0B,eAAN1B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAmByB,MAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AAEvB,MAAA,IAAIzB,KAAAA,CAAM2B,iBAAAA,EACRlB,WAAAA,CAAWkB,oBAAqBF,CAAAA,MAAAA;AArMxC,QAAA,IAAA,EAAA;AAsMUzB,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM2B,sBAAN3B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAA0ByB,MAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AAC9B,MAAA,IAAIzB,KAAAA,CAAM4B,UAAAA,EACRnB,WAAAA,CAAWmB,aAAcH,CAAAA,MAAAA;AAxMjC,QAAA,IAAA,EAAA;AAyMUzB,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM4B,eAAN5B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAmByB,MAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AACvB,MAAA,IAAIzB,KAAAA,CAAM6B,OAAAA,EACRpB,WAAAA,CAAWoB,UAAU,MAAA;AA3M7B,QAAA,IAAA,EAAA;AA2MmC7B,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM6B,OAAAA,KAAN7B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AAE7B,MAAA,IAAIA,KAAAA,CAAM8B,oBAAAA,EACRrB,WAAAA,CAAWqB,uBAAwBL,CAAAA,MAAAA;AA9M3C,QAAA,IAAA,EAAA;AA+MUzB,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM8B,yBAAN9B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAA6ByB,MAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AACjC,MAAA,IAAIzB,KAAAA,CAAM+B,gBAAAA,EACRtB,WAAAA,CAAWsB,mBAAoBN,CAAAA,MAAAA;AAjNvC,QAAA,IAAA,EAAA;AAkNUzB,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM+B,qBAAN/B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,EAAyByB,MAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AAI7B,MAAA,IAAIzB,KAAAA,CAAMgC,KAAAA,EACRvB,WAAAA,CAAWuB,QAAQ,MAAA;AAvN3B,QAAA,IAAA,EAAA;AAuNiChC,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMgC,KAAAA,KAANhC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AAC3B,MAAA,IAAIA,KAAAA,CAAMiC,MAAAA,EACRxB,WAAAA,CAAWwB,SAAS,MAAA;AAzN5B,QAAA,IAAA,EAAA;AAyNkCjC,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMiC,MAAAA,KAANjC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AAC5B,MAAA,IAAIA,KAAAA,CAAMkC,SAAAA,EACRzB,WAAAA,CAAWyB,YAAY,MAAA;AA3N/B,QAAA,IAAA,EAAA;AA2NqClC,QAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMkC,SAAAA,KAANlC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,MAAAA,CAAAA;AAE/B,MAAA,OAAO;AAAA,QACLS,UAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAEA,IAAA,SAASO,SAAAA,GAAY;AACnB,MAAA,MAAMH,YAAWV,GAAAA,EAAI;AACrB,MAAA,MAAMW,YAAAA,GAAcX,IAAI,CAAC,CAAA;AAGzB,MAAA,MAAMY,mBAAkBZ,GAAAA,EAAiB;AAEzCgC,MAAAA,KAAAA,CACE,MAAMvC,KAAAA,CAAM/C,MAAAA,EACZuF,CAAAA,GAAAA,KAAO;AACL,QAAA,IAAIA,MAAM,CAAA,EAAG;AAEXC,UAAAA,QAAAA,CAAS,MAAM;AACbC,YAAAA,qBAAAA,CAAsB,MAAM;AAC1BC,cAAAA,gBAAAA,CAAiBH,GAAG,CAAA;AAAA,YACtB,CAAC,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,QACH;AAAA,MACF,CAAA,EACA;AAAA,QACEI,SAAAA,EAAW;AAAA,OAEf,CAAA;AAEA,MAAA,SAASD,iBAAiB1F,MAAAA,EAAgB;AA1PhD,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA2PQ,QAAA,MAAM4F,OAAAA,GAAAA,CAAU5B,EAAAA,GAAAA,SAAAA,CAASN,KAAAA,KAATM,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAgB6B,GAAAA;AAGhC,QAAA,IAAI,CAACD,OAAAA,EAAS;AAGd,QAAA,MAAME,QAAAA,GAAWF,OAAAA,CAAQG,sBAAAA,CACvB,kBACF,EAAE,CAAC,CAAA;AACH,QAAA,MAAMC,YAAAA,GAAeF,QAAAA,GACjBG,YAAAA,CAAaH,QAAQ,CAAA,GACrB,CAAA;AAGJ,QAAA,MAAMI,YAAAA,GAAeN,OAAAA,CAAQG,sBAAAA,CAC3B,cACF,EAAE,CAAC,CAAA;AACH,QAAA,IAAII,gBAAAA,GAAmB,CAAA;AACvB,QAAA,IAAID,YAAAA,EAAc;AAChBA,UAAAA,YAAAA,CAAaE,MAAMC,YAAAA,GAAe,GAAA;AAClCF,UAAAA,gBAAAA,GAAAA,CACEF,EAAAA,GAAAA,YAAAA,CAAaC,YAAY,CAAA,KAAzBD,IAAAA,GAAAA,EAAAA,GAA8B,CAAA;AAAA,QAClC;AAGA,QAAA,MAAMK,SAAAA,GAAYV,OAAAA,CAAQG,sBAAAA,CACxB,mBACF,EAAE,CAAC,CAAA;AACH,QAAA,MAAMQ,gBAAgBD,SAAAA,GAAAA,CACjBL,EAAAA,GAAAA,YAAAA,CAAaK,SAAS,CAAA,KAAtBL,YAA2B,CAAA,GAC5B,CAAA;AAGJhC,QAAAA,YAAAA,CAAYP,QAAQ8C,IAAAA,CAAKC,GAAAA,CACvB,GACAzG,MAAAA,GACEmG,gBAAAA,GACAH,eACAO,aACJ,CAAA;AAEArC,QAAAA,iBAAgBR,KAAAA,GACdkC,OAAAA,CAAQG,sBAAAA,CACN,gBACF,EAAE,CAAC,CAAA;AAEL,QAAA,IAAI7B,iBAAgBR,KAAAA,EAAO;AAEzBQ,UAAAA,gBAAAA,CAAgBR,KAAAA,CAAM0C,KAAAA,CAAMpG,MAAAA,GAC1BiE,aAAYP,KAAAA,GAAQ,IAAA;AAAA,QACxB;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACLM,QAAAA,EAAAA,SAAAA;AAAAA,QACAC,WAAAA,EAAAA,YAAAA;AAAAA,QACAC,eAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAEA,IAAA,SAASH,aAAAA,GAAgB;AACvB,MAAA,MAAM;AAAA,QAAE2C;AAAAA,UAAqB3D,KAAAA,CAAMlC,MAAAA;AACnC,MAAA,MAAMoB,iBAAAA,GACJuB,SAAgC,MAAM;AACpC,QAAA,OAAO,cAAA,CAAA,cAAA,CAAA;AAAA,UACLmD,QAAAA,EAAU,CAAC,cAAc,CAAA;AAAA;AAAA,UACzBhF,KAAAA,EAAO;AAAA,SAAA,EACJX,yBACAe,UAAAA,CAAW2B,KAAAA,CAAAA;AAAAA,MAElB,CAAC,CAAA;AAEH,MAAA,MAAMI,mBAAAA,GAAqBA,CACzB8C,IAAAA,EACAxF,QAAAA,KACG;AACH,QAAA,MAAM;AAAA,UAAEe,SAAAA;AAAAA,UAAWC;AAAAA,YAAiBW,KAAAA,CAAMlC,MAAAA;AAC1C6F,QAAAA,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAAmBE,IAAAA,EAAMxF,QAAAA,CAAAA;AAEzB8C,QAAAA,eAAAA,CAAgBR,MAAOmD,SAAAA,GAAY,CAAA;AAInC,QAAA,IAAI1E,SAAAA,KAAc,GAAA,IAAO,CAACC,YAAAA,EAAc;AAGtC,UAAA,IAAIiB,eAAAA,CAAgBK,KAAAA,CAAMhB,MAAAA,GAAS,CAAA,EAAG;AACpCW,YAAAA,eAAAA,CAAgBK,QAAQ,EAAA;AACxBR,YAAAA,IAAAA,CAAK,aAAA,EAAeG,gBAAgBK,KAAK,CAAA;AAAA,UAC3C;AAAA,QACF;AAAA,MACF,CAAA;AAEA,MAAA,OAAO;AAAA,QACLzB,gBAAAA,EAAAA,iBAAAA;AAAAA,QACA6B,kBAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAEA,IAAA,SAASO,YAAAA,GAAe;AACtB,MAAA,OAAO,CAACyC,QAAeC,KAAAA,KAAkB;AAEvC,QAAA,IAAIC,YAAAA,GAAuB,CAAA;AAC3B,QAAA,MAAM;AAAA,UACJxG,MAAAA;AAAAA,UACAK,MAAAA,EAAQ;AAAA,YACNoG,KAAAA;AAAAA,YACAC,OAAAA;AAAAA,YACA/E,SAAAA;AAAAA,YACAgF;AAAAA,cACE;AAAC,SACP,GAAIpE,KAAAA;AAGJ,QAAA,MAAMqE,EAAAA,GAAKN,OAAOtG,MAAM,CAAA;AAMxB,QAAA,MAAM6G,UAAUA,MAAM;AAnX9B,UAAA,IAAA,EAAA;AAsXU,UAAA,MAAMC,cACJH,gBAAAA,KAAqBnF,KAAAA,CAAAA,GACjB,SACAmF,EAAAA,GAAAA,gBAAAA,CAAiBL,MAAM,MAAvBK,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAA0BjG,QAAAA;AAEhC,UAAA,IAAIiB,SAAAA,KAAc,OAAOmF,WAAAA,EAAa;AACpC,YAAA;AAAA,UACF;AAEA,UAAA,MAAMC,SAAAA,GAAYhE,cAAAA,CAAeG,KAAAA,CAAM8D,GAAAA,CAAIJ,EAAE,CAAA;AAC7C,UAAA,IAAIG,SAAAA,EAAW;AACblE,YAAAA,eAAAA,CAAgBK,QACdL,eAAAA,CAAgBK,KAAAA,CAAM+D,MAAAA,CACnBC,CAAAA,GAAAA,KAAaA,QAAQN,EACxB,CAAA;AAAA,UACJ,CAAA,MAAO;AACL,YAAA,IAAIjF,cAAc,GAAA,EAAK;AACrBkB,cAAAA,eAAAA,CAAgBK,KAAAA,GAAQ,CAAC0D,EAAE,CAAA;AAAA,YAC7B,CAAA,MAAO;AACL/D,cAAAA,eAAAA,CAAgBK,KAAAA,GAAQ,CACtB,GAAGL,eAAAA,CAAgBK,OACnB0D,EAAE,CAAA;AAAA,YAEN;AAAA,UACF;AACAlE,UAAAA,IAAAA,CAAK,aAAA,EAAeG,gBAAgBK,KAAK,CAAA;AAAA,QAC3C,CAAA;AAEA,QAAA,SAASiE,oBAAoBC,KAAAA,EAAc;AACzC,UAAA,MAAM;AAAA,YAAE1F;AAAAA,cAAmBa,KAAAA,CAAMlC,MAAAA;AACjC,UAAA,IAAI,CAACqB,cAAAA,EAAgB;AACrB,UAAA,MAAM2F,QAAQD,KAAAA,CAAME,MAAAA;AACpB,UAAA,IAAID,iBAAiBE,WAAAA,EAAa;AAChC,YAAA,MAAMC,gBACJH,KAAAA,CAAMI,UAAAA;AACR,YAAA,IACED,aAAAA,IACAA,aAAAA,CAAcE,SAAAA,CAAUC,QAAAA,CACtBjG,cACF,CAAA,EACA;AACA8F,cAAAA,aAAAA,CAAcE,SAAAA,CAAUE,OACtBlG,cACF,CAAA;AAAA,YACF,CAAA,MAAO;AACL8F,cAAAA,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAeE,UAAUG,GAAAA,CAAInG,cAAAA,CAAAA;AAAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAEA,QAAA,OAAO;AAAA,UACLmF,SAAUO,CAAAA,KAAAA,KAAiB;AACzBU,YAAAA,YAAAA,CAAatB,YAAY,CAAA;AACzBA,YAAAA,YAAAA,GAAeuB,MAAAA,CAAOC,WAAW,MAAM;AAErCb,cAAAA,mBAAAA,CAAoBC,KAAK,CAAA;AAEzBP,cAAAA,OAAAA,EAAQ;AAERJ,cAAAA,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAQH,MAAAA,EAAQC,KAAAA,CAAAA;AAAAA,YAClB,GAAG,GAAG,CAAA;AAAA,UACR,CAAA;AAAA;AAAA,UACA0B,YAAYA,MAAM;AAChBH,YAAAA,YAAAA,CAAatB,YAAY,CAAA;AAEzBE,YAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAUJ,MAAAA,EAAQC,KAAAA,CAAAA;AAAAA,UACpB;AAAA,SACF;AAAA,MACF,CAAA;AAAA,IACF;AAEA,IAAA,SAASxC,eAAAA,GAAkB;AACzB,MAAA,MAAMmE,QAAAA,GAAuCA,CAC3C5B,MAAAA,EACA6B,QAAAA,KACG;AAjcX,QAAA,IAAA,EAAA;AAkcQ,QAAA,MAAMvI,KAAAA,GAAO0G,MAAAA;AACb,QAAA,MAAM;AAAA,UAAEtG;AAAAA,SAAO,GAAIuC,KAAAA;AACnB,QAAA,MAAMZ,SAAAA,GAAAA,CAAYY,EAAAA,GAAAA,KAAAA,CAAMlC,MAAAA,KAANkC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAcZ,SAAAA;AAChC,QAAA,IAAIA,cAAc,GAAA,EAAK;AACrBkB,UAAAA,eAAAA,CAAgBK,QAAQiF,QAAAA,GACpB,CAACvI,MAAKI,MAAM,CAAC,IACb,EAAA;AAAA,QACN,CAAA,MAAO;AACL6C,UAAAA,eAAAA,CAAgBK,QAAQiF,QAAAA,GACpB,CAAC,GAAGtF,eAAAA,CAAgBK,OAAOtD,KAAAA,CAAKI,MAAM,CAAC,CAAA,GACvC6C,gBAAgBK,KAAAA,CAAM+D,MAAAA,CACnBC,SAAaA,GAAAA,KAAQtH,KAAAA,CAAKI,MAAM,CACnC,CAAA;AAAA,QACN;AACA0C,QAAAA,IAAAA,CAAK,aAAA,EAAeG,gBAAgBK,KAAK,CAAA;AAAA,MAC3C,CAAA;AAEA,MAAA,MAAMkF,WAAAA,GAAcA,CAClBD,QAAAA,EACAE,YAAAA,EACAC,UAAAA,KACG;AACH,QAAA,MAAM;AAAA,UAAEtI;AAAAA,SAAO,GAAIuC,KAAAA;AAEnB,QAAA,MAAMgG,OAAcD,UAAAA,CAAWE,GAAAA,CAC5BlC,CAAAA,MAAAA,KACEA,MAAAA,CAAoCtG,MAAM,CAC/C,CAAA;AACA,QAAA,MAAMyI,KAAAA,GAAQ,IAAIxF,GAAAA,CAAIsF,IAAI,CAAA;AAC1B1F,QAAAA,eAAAA,CAAgBK,QAAQiF,QAAAA,GACpB,CAAC,GAAGtF,eAAAA,CAAgBK,OAAO,GAAGqF,IAAI,CAAA,GAClC1F,eAAAA,CAAgBK,MAAM+D,MAAAA,CACnBC,CAAAA,GAAAA,KAAa,CAACuB,KAAAA,CAAMzB,GAAAA,CAAIE,GAAY,CACvC,CAAA;AAEJxE,QAAAA,IAAAA,CAAK,aAAA,EAAeG,gBAAgBK,KAAK,CAAA;AAAA,MAC3C,CAAA;AAGA4B,MAAAA,KAAAA,CACE,MAAMvC,KAAAA,CAAMnC,IAAAA,EACZ2E,CAAAA,GAAAA,KAAO;AACL,QAAA,IAAIhD,YAAAA,CAAagD,GAAAA,EAAKlC,eAAAA,CAAgBK,KAAK,CAAA,EACzC;AACFL,QAAAA,eAAAA,CAAgBK,KAAAA,GAAQ6B,GAAAA;AAAAA,MAC1B,CAAA,EACA;AAAA,QACE2D,IAAAA,EAAM,IAAA;AAAA,QACNvD,SAAAA,EAAW;AAAA,OAEf,CAAA;AAIA,MAAA,OAAOnC,SAEL,MAAM;AACN,QAAA,MAAM;AAAA,UAAE3C;AAAAA,SAAO,GAAIkC,KAAAA;AACnB,QAAA,IAAA,CAAIlC,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAQsB,SAAAA,MAAc,GAAA,EAAK,OAAOH,KAAAA,CAAAA;AACtC,QAAA,OAAO;AAAA,UACLqB,iBAAiBA,eAAAA,CAAgBK,KAAAA;AAAAA,UACjCgF,QAAAA;AAAAA,UACAE,WAAAA;AAAAA,UACAO,KAAAA,EAAO,IAAA;AAAA,UACPC,WAAAA,EAAAA,CACEvI,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAQsB,SAAAA,MAAc,GAAA,GAAM,cAAA,GAAO,IAAA;AAAA,UACrCkH,WAAAA,EAAAA,CAAaxI,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAQsB,SAAAA,MAAc,GAAA,GAAM,EAAA,GAAK,EAAA;AAAA,UAC9CgF,kBACEtG,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAQsG;AAAAA,SACZ;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,MAAAmC,YAAAC,IAAAA,EAAA;AAAA,MAAA,UAAA,EACW,IAAA;AAAA,MAAI,KAAA,EAAOvF;AAAAA,KAAQ,EAAA;AAAA,MAAA7D,SAAAA,MAAA,CAAAmJ,WAAAA,CAAAE,KAAAA,EAAAC,WAE3BrG,KAAAA,EAAK;AAAA,QAAA,WACAL,KAAAA,CAAMzC,OAAAA;AAAAA,QAAO,QAChByC,KAAAA,CAAMpC,IAAAA;AAAAA,QAAI,YACNoC,KAAAA,CAAMrC,QAAAA;AAAAA,QAAQ,cACZN,IAAAA,CAAKsD,KAAAA;AAAAA,QAAK,WACb5B,OAAAA,CAAQ4B,KAAAA;AAAAA,QAAK,gBACRY,YAAAA,CAAaZ,KAAAA;AAAAA,QAAK,WAAA,EACrBU,WAAAA;AAAAA,QAAW,YAAA,EACV,KAAA;AAAA,QAAK,UACTrB,KAAAA,CAAMvC,MAAAA;AAAAA,QAAM,QAAA,EAEZ;AAAA,UACNkJ,GAAGzF,WAAAA,CAAYP,KAAAA;AAAAA,UACfiG,CAAAA,EAAG,MAAA;AAAA,UACHC,wBAAAA,EAA0B;AAAA;AAC5B,OAAC,CAAA,EALQhG,UAAU,GAOpB7B,UAAAA,CAAW2B,KAAAA,IAAK4F,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACH,CAACjH,eAAAA,EAAiB,cAAc;AAAA,OAAC,EAAA,CAAAiH,WAAAA,CAAAO,UAAAA,EAAA;AAAA,QAAA,SAAA,EAIrC5H,iBAAiByB,KAAAA,CAAMoG,OAAAA;AAAAA,QAAO,kBAAA,EAAAC,CAAAA,MAAAA,KAA9B9H,gBAAAA,CAAiByB,KAAAA,CAAMoG,OAAAA,GAAOC,MAAAA;AAAAA,QAAA,UAAA,EAG9B9H,iBAAiByB,KAAAA,CAAMtC,QAAAA;AAAAA,QAAQ,mBAAA,EAAA2I,CAAAA,MAAAA,KAA/B9H,gBAAAA,CAAiByB,KAAAA,CAAMtC,QAAAA,GAAQ2I,MAAAA;AAAAA,QAAA,OAAA,EAE1B9H,iBAAiByB,KAAAA,CAAM/B,KAAAA;AAAAA,QAAK,YACzBoB,KAAAA,CAAMzC,OAAAA;AAAAA,QAAO,mBAAA,EAAA,IAAA;AAAA,QAAA,MAAA,EAEjB,SAAA;AAAA,QAAS,qBAAA,EAEb2B,iBAAiByB,KAAAA,CAAMvC,gBAAAA;AAAAA,QAAgB,mBAAA,EAGvCc,iBAAiByB,KAAAA,CAAMlC,eAAAA;AAAAA,QAAe,mBAAA,EAGtCS,iBAAiByB,KAAAA,CAAMzC,eAAAA;AAAAA,QAAe,mBAAA,EAGtCgB,iBAAiByB,KAAAA,CAAMrC,eAAAA;AAAAA,QAAe,YAAA,EAGtCY,iBAAiByB,KAAAA,CAAMhC,SAAAA;AAAAA,QAAS,UAAA,EAExBoC,kBAAAA;AAAAA,QAAkB,eAAA,EACb;AAAA,OAAI,EAAA,IAAA,CAAA,CAAA,CAI1B;AAAA,KAAA,CAAA;AAAA,EAGP;AACF,CAAC;AAEM,MAAMmC,eACX+D,CAAAA,IAAAA,KACW;AACX,EAAA,IAAI,CAACA,MAAM,OAAO,CAAA;AAElB,EAAA,MAAMC,IAAAA,GAAO,CACX,YAAA,EACA,eAAA,EACA,cACA,eAAA,EACA,aAAA,EACA,kBACA,QAAQ,CAAA;AAEV,EAAA,MAAM7D,KAAAA,GAAQ8D,iBAAiBF,IAAI,CAAA;AACnC,EAAA,OAAOC,IAAAA,CACJjB,GAAAA,CAAImB,CAAAA,CAAAA,KAAKC,QAAAA,CAAShE,MAAMiE,gBAAAA,CAAiBF,CAAC,CAAA,EAAG,EAAE,KAAK,CAAC,CAAA,CACrDG,MAAAA,CAAO,CAACC,MAAMC,GAAAA,KAAQ;AACrB,IAAA,OAAOD,IAAAA,GAAOC,GAAAA;AAAAA,EAChB,GAAG,CAAC,CAAA;AACR;;;;"}
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":"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;;;;;;;;;;;;;;;;;4EAqfhC,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.26",
3
+ "version": "5.1.28",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"