@ditari/bsui 5.1.28 → 5.1.29

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.
@@ -88,13 +88,6 @@ const paginationStyle = css.css`
88
88
  justify-content: center;
89
89
  padding-top: 6px;
90
90
  `;
91
- function isArrayEqual(a, b) {
92
- if (a.length !== b.length) return false;
93
- for (let i = 0; i < a.length; i++) {
94
- if (a[i] !== b[i]) return false;
95
- }
96
- return true;
97
- }
98
91
  const DTable = /* @__PURE__ */ vue.defineComponent({
99
92
  name: "DTable",
100
93
  props: tableProps(),
@@ -105,6 +98,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
105
98
  slots,
106
99
  attrs
107
100
  }) {
101
+ const selectedRowKeys = vue.ref(props.keys || []);
108
102
  const {
109
103
  columns,
110
104
  data,
@@ -113,26 +107,16 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
113
107
  const {
114
108
  tableSlots
115
109
  } = useSlots();
110
+ const {
111
+ paginationConfig,
112
+ onPaginationChange
113
+ } = usePagination();
116
114
  const {
117
115
  tableRef,
118
116
  tableHeight,
119
117
  antTableBodyRef
120
118
  } = useHeight();
121
- const tableKey = vue.ref(0);
122
- const {
123
- rowSelection,
124
- clearSelection
125
- } = useRowSelection();
126
- const customRowFn = useCustomRow();
127
- const {
128
- paginationConfig,
129
- onPaginationChange
130
- } = usePagination();
131
- const scrollConfig = vue.computed(() => ({
132
- y: tableHeight.value,
133
- x: "100%",
134
- scrollToFirstRowOnChange: true
135
- }));
119
+ const rowSelection = useRowSelection();
136
120
  vue.onMounted(() => {
137
121
  });
138
122
  function useProps() {
@@ -207,15 +191,6 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
207
191
  }, {
208
192
  immediate: true
209
193
  });
210
- vue.watch(tableKey, () => {
211
- if (props.height > 0) {
212
- vue.nextTick(() => {
213
- requestAnimationFrame(() => {
214
- _tableBodyHeight(props.height);
215
- });
216
- });
217
- }
218
- });
219
194
  function _tableBodyHeight(height) {
220
195
  var _a, _b, _c;
221
196
  const tableEl = (_a = tableRef2.value) == null ? void 0 : _a.$el;
@@ -249,6 +224,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
249
224
  const paginationConfig2 = vue.computed(() => {
250
225
  return __spreadValues(__spreadValues({
251
226
  position: ["bottomCenter"],
227
+ // 符合类型的分页位置
252
228
  total: 0
253
229
  }, defaultPaginationProps), pagination.value);
254
230
  });
@@ -258,13 +234,11 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
258
234
  keepSelected
259
235
  } = props.config;
260
236
  changePagination == null ? void 0 : changePagination(page, pageSize);
261
- if (antTableBodyRef.value) {
262
- antTableBodyRef.value.scrollTop = 0;
263
- }
237
+ antTableBodyRef.value.scrollTop = 0;
264
238
  if (selection === "S" || !keepSelected) {
265
- const cleared = clearSelection();
266
- if (cleared) {
267
- tableKey.value++;
239
+ if (selectedRowKeys.value.length > 0) {
240
+ selectedRowKeys.value = [];
241
+ emit("update:keys", selectedRowKeys.value);
268
242
  }
269
243
  }
270
244
  };
@@ -276,7 +250,6 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
276
250
  function useCustomRow() {
277
251
  return (record, index) => {
278
252
  let clickTimeout = 0;
279
- let isHandling = false;
280
253
  const {
281
254
  rowKey,
282
255
  config: {
@@ -287,21 +260,24 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
287
260
  } = {}
288
261
  } = props;
289
262
  const id = record[rowKey];
290
- const handleSelection = (event) => {
263
+ const onClick = () => {
291
264
  var _a;
292
265
  const checkEnable = getCheckboxProps === void 0 ? false : (_a = getCheckboxProps(record)) == null ? void 0 : _a.disabled;
293
266
  if (selection === "N" || checkEnable) {
294
267
  return;
295
268
  }
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();
269
+ const haveState = selectedRowKeys.value.some((key) => key === id);
270
+ if (haveState) {
271
+ selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== id);
272
+ } else {
273
+ if (selection === "S") {
274
+ selectedRowKeys.value = [];
275
+ selectedRowKeys.value.push(id);
276
+ } else {
277
+ selectedRowKeys.value.push(id);
303
278
  }
304
279
  }
280
+ emit("update:keys", selectedRowKeys.value);
305
281
  };
306
282
  function activeRowBackground(event) {
307
283
  const {
@@ -320,16 +296,14 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
320
296
  }
321
297
  return {
322
298
  onClick: (event) => {
323
- if (isHandling) return;
324
299
  clearTimeout(clickTimeout);
325
300
  clickTimeout = window.setTimeout(() => {
326
- isHandling = true;
327
301
  activeRowBackground(event);
328
- handleSelection(event);
302
+ onClick();
329
303
  click == null ? void 0 : click(record, index);
330
- isHandling = false;
331
304
  }, 200);
332
305
  },
306
+ // 点击行
333
307
  onDblclick: () => {
334
308
  clearTimeout(clickTimeout);
335
309
  dbClick == null ? void 0 : dbClick(record, index);
@@ -338,92 +312,83 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
338
312
  };
339
313
  }
340
314
  function useRowSelection() {
341
- let _selectedKeys = [...props.keys || []];
342
- const controlledKeys = vue.ref([...props.keys || []]);
343
- function clearSelection2() {
344
- const had = _selectedKeys.length > 0;
345
- _selectedKeys = [];
346
- controlledKeys.value = [];
347
- if (had) {
348
- emit("update:keys", []);
349
- }
350
- return had;
351
- }
352
- const onMultiChange = (rowKeys) => {
353
- const {
354
- rowKey,
355
- config
356
- } = props;
357
- if (config == null ? void 0 : config.keepSelected) {
358
- const currentPageKeySet = new Set(props.data.map((r) => r[rowKey]));
359
- const otherPageKeys = _selectedKeys.filter((k) => !currentPageKeySet.has(k));
360
- _selectedKeys = [...otherPageKeys, ...rowKeys];
315
+ const rowSelection2 = vue.ref(void 0);
316
+ const {
317
+ rowKey,
318
+ config: {
319
+ getCheckboxProps,
320
+ selection
321
+ } = {}
322
+ } = props;
323
+ const onSelect = (record, selected) => {
324
+ const data2 = record;
325
+ if (selection === "S") {
326
+ selectedRowKeys.value = [];
327
+ selectedRowKeys.value = selected ? [data2[rowKey]] : [];
361
328
  } else {
362
- _selectedKeys = rowKeys;
329
+ selectedRowKeys.value = selected ? selectedRowKeys.value.concat(data2[rowKey]) : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
363
330
  }
364
- emit("update:keys", _selectedKeys);
331
+ emit("update:keys", selectedRowKeys.value);
365
332
  };
366
- const onSingleSelect = (record, selected) => {
367
- const data2 = record;
368
- const {
369
- rowKey
370
- } = props;
371
- controlledKeys.value = selected ? [data2[rowKey]] : [];
372
- _selectedKeys = [...controlledKeys.value];
373
- emit("update:keys", controlledKeys.value);
333
+ const onSelectAll = (selected, selectedRows, changeRows) => {
334
+ const _ids = changeRows.map((record) => record[rowKey]);
335
+ selectedRowKeys.value = selected ? selectedRowKeys.value.concat(_ids) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
336
+ emit("update:keys", selectedRowKeys.value);
337
+ };
338
+ const onChange = (rowKeys, selectedRows) => {
339
+ const data2 = selectedRows;
340
+ const selected = data2.length !== 0;
341
+ const _ids = props.data.map((record) => record[rowKey]);
342
+ selectedRowKeys.value = selected ? selectedRowKeys.value.concat(rowKeys.filter((key) => !selectedRowKeys.value.includes(key))) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
343
+ emit("update:keys", selectedRowKeys.value);
374
344
  };
375
345
  vue.watch(() => props.keys, (val) => {
376
- if (isArrayEqual(val, _selectedKeys)) return;
377
- _selectedKeys = [...val];
378
- controlledKeys.value = [...val];
346
+ selectedRowKeys.value = val;
379
347
  }, {
380
348
  deep: true,
381
349
  immediate: true
382
350
  });
383
- const rowSelection2 = vue.computed(() => {
384
- const {
385
- config
386
- } = props;
387
- if ((config == null ? void 0 : config.selection) === "N") return void 0;
388
- if ((config == null ? void 0 : config.selection) === "S") {
389
- return {
390
- selectedRowKeys: controlledKeys.value,
391
- onSelect: onSingleSelect,
351
+ vue.watch(() => {
352
+ var _a;
353
+ return (_a = props.config) == null ? void 0 : _a.selection;
354
+ }, (val) => {
355
+ if (val !== "N") {
356
+ rowSelection2.value = {
357
+ selectedRowKeys,
358
+ onSelect,
359
+ onSelectAll,
392
360
  fixed: true,
393
- columnTitle: "\u9009\u62E9",
394
- columnWidth: 60,
395
- getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
361
+ columnTitle: selection === "S" ? "\u9009\u62E9" : null,
362
+ columnWidth: selection === "S" ? 60 : 40,
363
+ getCheckboxProps
396
364
  };
365
+ } else {
366
+ rowSelection2.value = void 0;
397
367
  }
398
- return {
399
- onChange: onMultiChange,
400
- fixed: true,
401
- columnWidth: 40,
402
- getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
403
- };
368
+ }, {
369
+ immediate: true
404
370
  });
405
- return {
406
- rowSelection: rowSelection2,
407
- clearSelection: clearSelection2
408
- };
371
+ return rowSelection2;
409
372
  }
410
373
  return () => vue.createVNode(antDesignVue.Flex, {
411
374
  "vertical": true,
412
375
  "ref": tableRef
413
376
  }, {
414
- default: () => [vue.createVNode(antDesignVue.Table, vue.mergeProps({
415
- "key": tableKey.value
416
- }, attrs, {
377
+ default: () => [vue.createVNode(antDesignVue.Table, vue.mergeProps(attrs, {
417
378
  "loading": props.loading,
418
379
  "size": props.size,
419
380
  "bordered": props.bordered,
420
381
  "dataSource": data.value,
421
382
  "columns": columns.value,
422
383
  "rowSelection": rowSelection.value,
423
- "customRow": customRowFn,
384
+ "customRow": useCustomRow(),
424
385
  "pagination": false,
425
386
  "rowKey": props.rowKey,
426
- "scroll": scrollConfig.value
387
+ "scroll": {
388
+ y: tableHeight.value,
389
+ x: "100%",
390
+ scrollToFirstRowOnChange: true
391
+ }
427
392
  }), tableSlots), pagination.value && vue.createVNode("div", {
428
393
  "class": [paginationStyle, "d-pagination"]
429
394
  }, [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 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
+ {"version":3,"file":"Table.cjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n /**\r\n * 插槽处理\r\n * 假设 slots 已经在外部作用域定义(如 setup(props, { slots }))\r\n */\r\n function useSlots() {\r\n const tableSlots: any = {};\r\n\r\n // 只有外部传入了对应的插槽,才定义该属性\r\n if (slots.bodyCell)\r\n tableSlots.bodyCell = (params: any) =>\r\n slots.bodyCell?.(params);\r\n if (slots.headerCell)\r\n tableSlots.headerCell = (params: any) =>\r\n slots.headerCell?.(params);\r\n\r\n if (slots.expandedRowRender)\r\n tableSlots.expandedRowRender = (params: any) =>\r\n slots.expandedRowRender?.(params);\r\n if (slots.expandIcon)\r\n tableSlots.expandIcon = (params: any) =>\r\n slots.expandIcon?.(params);\r\n if (slots.summary)\r\n tableSlots.summary = () => slots.summary?.();\r\n\r\n if (slots.customFilterDropdown)\r\n tableSlots.customFilterDropdown = (params: any) =>\r\n slots.customFilterDropdown?.(params);\r\n if (slots.customFilterIcon)\r\n tableSlots.customFilterIcon = (params: any) =>\r\n slots.customFilterIcon?.(params);\r\n\r\n // --- 重点修改这里 ---\r\n // 只有当 slots.title 存在时,tableSlots 才有 title 属性\r\n if (slots.title)\r\n tableSlots.title = () => slots.title?.();\r\n if (slots.footer)\r\n tableSlots.footer = () => slots.footer?.();\r\n if (slots.emptyText)\r\n tableSlots.emptyText = () => slots.emptyText?.();\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val > 0) {\r\n // 使用 nextTick + requestAnimationFrame 确保 DOM 完全渲染\r\n nextTick(() => {\r\n requestAnimationFrame(() => {\r\n _tableBodyHeight(val);\r\n });\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n const tableEl = tableRef.value?.$el as\r\n | HTMLElement\r\n | undefined;\r\n if (!tableEl) return;\r\n\r\n // 表头高度 - 增加空值检查\r\n const headerEl = tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0] as HTMLElement | undefined;\r\n const headerHeight = headerEl\r\n ? useEleHeight(headerEl)\r\n : 0;\r\n\r\n // 分页 - 增加空值检查\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl) ?? 0;\r\n }\r\n\r\n // 总结行 - 增加空值检查\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n const summaryHeight = summaryEl\r\n ? (useEleHeight(summaryEl) ?? 0)\r\n : 0;\r\n\r\n // 计算最终高度,确保不为负数\r\n tableHeight.value = Math.max(\r\n 0,\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight\r\n );\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (\r\n node: Element | undefined | null\r\n): number => {\r\n if (!node) return 0;\r\n\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10) || 0)\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n }, 0);\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","headerCell","expandedRowRender","expandIcon","summary","customFilterDropdown","customFilterIcon","title","footer","emptyText","watch","val","nextTick","requestAnimationFrame","_tableBodyHeight","immediate","tableEl","$el","headerEl","getElementsByClassName","headerHeight","useEleHeight","paginationEl","paginationHeight","style","marginBottom","summaryEl","summaryHeight","Math","max","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, onMounted, watch, nextTick, createVNode, mergeProps } from 'vue';
1
+ import { defineComponent, ref, onMounted, computed, watch, nextTick, createVNode, mergeProps } from 'vue';
2
2
  import { Flex, Table, Pagination } from 'ant-design-vue';
3
3
  import { css } from '@emotion/css';
4
4
  import { merge } from 'lodash-es';
@@ -84,13 +84,6 @@ const paginationStyle = css`
84
84
  justify-content: center;
85
85
  padding-top: 6px;
86
86
  `;
87
- function isArrayEqual(a, b) {
88
- if (a.length !== b.length) return false;
89
- for (let i = 0; i < a.length; i++) {
90
- if (a[i] !== b[i]) return false;
91
- }
92
- return true;
93
- }
94
87
  const DTable = /* @__PURE__ */ defineComponent({
95
88
  name: "DTable",
96
89
  props: tableProps(),
@@ -101,6 +94,7 @@ const DTable = /* @__PURE__ */ defineComponent({
101
94
  slots,
102
95
  attrs
103
96
  }) {
97
+ const selectedRowKeys = ref(props.keys || []);
104
98
  const {
105
99
  columns,
106
100
  data,
@@ -109,26 +103,16 @@ const DTable = /* @__PURE__ */ defineComponent({
109
103
  const {
110
104
  tableSlots
111
105
  } = useSlots();
106
+ const {
107
+ paginationConfig,
108
+ onPaginationChange
109
+ } = usePagination();
112
110
  const {
113
111
  tableRef,
114
112
  tableHeight,
115
113
  antTableBodyRef
116
114
  } = useHeight();
117
- const tableKey = ref(0);
118
- const {
119
- rowSelection,
120
- clearSelection
121
- } = useRowSelection();
122
- const customRowFn = useCustomRow();
123
- const {
124
- paginationConfig,
125
- onPaginationChange
126
- } = usePagination();
127
- const scrollConfig = computed(() => ({
128
- y: tableHeight.value,
129
- x: "100%",
130
- scrollToFirstRowOnChange: true
131
- }));
115
+ const rowSelection = useRowSelection();
132
116
  onMounted(() => {
133
117
  });
134
118
  function useProps() {
@@ -203,15 +187,6 @@ const DTable = /* @__PURE__ */ defineComponent({
203
187
  }, {
204
188
  immediate: true
205
189
  });
206
- watch(tableKey, () => {
207
- if (props.height > 0) {
208
- nextTick(() => {
209
- requestAnimationFrame(() => {
210
- _tableBodyHeight(props.height);
211
- });
212
- });
213
- }
214
- });
215
190
  function _tableBodyHeight(height) {
216
191
  var _a, _b, _c;
217
192
  const tableEl = (_a = tableRef2.value) == null ? void 0 : _a.$el;
@@ -245,6 +220,7 @@ const DTable = /* @__PURE__ */ defineComponent({
245
220
  const paginationConfig2 = computed(() => {
246
221
  return __spreadValues(__spreadValues({
247
222
  position: ["bottomCenter"],
223
+ // 符合类型的分页位置
248
224
  total: 0
249
225
  }, defaultPaginationProps), pagination.value);
250
226
  });
@@ -254,13 +230,11 @@ const DTable = /* @__PURE__ */ defineComponent({
254
230
  keepSelected
255
231
  } = props.config;
256
232
  changePagination == null ? void 0 : changePagination(page, pageSize);
257
- if (antTableBodyRef.value) {
258
- antTableBodyRef.value.scrollTop = 0;
259
- }
233
+ antTableBodyRef.value.scrollTop = 0;
260
234
  if (selection === "S" || !keepSelected) {
261
- const cleared = clearSelection();
262
- if (cleared) {
263
- tableKey.value++;
235
+ if (selectedRowKeys.value.length > 0) {
236
+ selectedRowKeys.value = [];
237
+ emit("update:keys", selectedRowKeys.value);
264
238
  }
265
239
  }
266
240
  };
@@ -272,7 +246,6 @@ const DTable = /* @__PURE__ */ defineComponent({
272
246
  function useCustomRow() {
273
247
  return (record, index) => {
274
248
  let clickTimeout = 0;
275
- let isHandling = false;
276
249
  const {
277
250
  rowKey,
278
251
  config: {
@@ -283,21 +256,24 @@ const DTable = /* @__PURE__ */ defineComponent({
283
256
  } = {}
284
257
  } = props;
285
258
  const id = record[rowKey];
286
- const handleSelection = (event) => {
259
+ const onClick = () => {
287
260
  var _a;
288
261
  const checkEnable = getCheckboxProps === void 0 ? false : (_a = getCheckboxProps(record)) == null ? void 0 : _a.disabled;
289
262
  if (selection === "N" || checkEnable) {
290
263
  return;
291
264
  }
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();
265
+ const haveState = selectedRowKeys.value.some((key) => key === id);
266
+ if (haveState) {
267
+ selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== id);
268
+ } else {
269
+ if (selection === "S") {
270
+ selectedRowKeys.value = [];
271
+ selectedRowKeys.value.push(id);
272
+ } else {
273
+ selectedRowKeys.value.push(id);
299
274
  }
300
275
  }
276
+ emit("update:keys", selectedRowKeys.value);
301
277
  };
302
278
  function activeRowBackground(event) {
303
279
  const {
@@ -316,16 +292,14 @@ const DTable = /* @__PURE__ */ defineComponent({
316
292
  }
317
293
  return {
318
294
  onClick: (event) => {
319
- if (isHandling) return;
320
295
  clearTimeout(clickTimeout);
321
296
  clickTimeout = window.setTimeout(() => {
322
- isHandling = true;
323
297
  activeRowBackground(event);
324
- handleSelection(event);
298
+ onClick();
325
299
  click == null ? void 0 : click(record, index);
326
- isHandling = false;
327
300
  }, 200);
328
301
  },
302
+ // 点击行
329
303
  onDblclick: () => {
330
304
  clearTimeout(clickTimeout);
331
305
  dbClick == null ? void 0 : dbClick(record, index);
@@ -334,92 +308,83 @@ const DTable = /* @__PURE__ */ defineComponent({
334
308
  };
335
309
  }
336
310
  function useRowSelection() {
337
- let _selectedKeys = [...props.keys || []];
338
- const controlledKeys = ref([...props.keys || []]);
339
- function clearSelection2() {
340
- const had = _selectedKeys.length > 0;
341
- _selectedKeys = [];
342
- controlledKeys.value = [];
343
- if (had) {
344
- emit("update:keys", []);
345
- }
346
- return had;
347
- }
348
- const onMultiChange = (rowKeys) => {
349
- const {
350
- rowKey,
351
- config
352
- } = props;
353
- if (config == null ? void 0 : config.keepSelected) {
354
- const currentPageKeySet = new Set(props.data.map((r) => r[rowKey]));
355
- const otherPageKeys = _selectedKeys.filter((k) => !currentPageKeySet.has(k));
356
- _selectedKeys = [...otherPageKeys, ...rowKeys];
311
+ const rowSelection2 = ref(void 0);
312
+ const {
313
+ rowKey,
314
+ config: {
315
+ getCheckboxProps,
316
+ selection
317
+ } = {}
318
+ } = props;
319
+ const onSelect = (record, selected) => {
320
+ const data2 = record;
321
+ if (selection === "S") {
322
+ selectedRowKeys.value = [];
323
+ selectedRowKeys.value = selected ? [data2[rowKey]] : [];
357
324
  } else {
358
- _selectedKeys = rowKeys;
325
+ selectedRowKeys.value = selected ? selectedRowKeys.value.concat(data2[rowKey]) : selectedRowKeys.value.filter((key) => key !== data2[rowKey]);
359
326
  }
360
- emit("update:keys", _selectedKeys);
327
+ emit("update:keys", selectedRowKeys.value);
361
328
  };
362
- const onSingleSelect = (record, selected) => {
363
- const data2 = record;
364
- const {
365
- rowKey
366
- } = props;
367
- controlledKeys.value = selected ? [data2[rowKey]] : [];
368
- _selectedKeys = [...controlledKeys.value];
369
- emit("update:keys", controlledKeys.value);
329
+ const onSelectAll = (selected, selectedRows, changeRows) => {
330
+ const _ids = changeRows.map((record) => record[rowKey]);
331
+ selectedRowKeys.value = selected ? selectedRowKeys.value.concat(_ids) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
332
+ emit("update:keys", selectedRowKeys.value);
333
+ };
334
+ const onChange = (rowKeys, selectedRows) => {
335
+ const data2 = selectedRows;
336
+ const selected = data2.length !== 0;
337
+ const _ids = props.data.map((record) => record[rowKey]);
338
+ selectedRowKeys.value = selected ? selectedRowKeys.value.concat(rowKeys.filter((key) => !selectedRowKeys.value.includes(key))) : selectedRowKeys.value.filter((key) => !_ids.includes(key));
339
+ emit("update:keys", selectedRowKeys.value);
370
340
  };
371
341
  watch(() => props.keys, (val) => {
372
- if (isArrayEqual(val, _selectedKeys)) return;
373
- _selectedKeys = [...val];
374
- controlledKeys.value = [...val];
342
+ selectedRowKeys.value = val;
375
343
  }, {
376
344
  deep: true,
377
345
  immediate: true
378
346
  });
379
- const rowSelection2 = computed(() => {
380
- const {
381
- config
382
- } = props;
383
- if ((config == null ? void 0 : config.selection) === "N") return void 0;
384
- if ((config == null ? void 0 : config.selection) === "S") {
385
- return {
386
- selectedRowKeys: controlledKeys.value,
387
- onSelect: onSingleSelect,
347
+ watch(() => {
348
+ var _a;
349
+ return (_a = props.config) == null ? void 0 : _a.selection;
350
+ }, (val) => {
351
+ if (val !== "N") {
352
+ rowSelection2.value = {
353
+ selectedRowKeys,
354
+ onSelect,
355
+ onSelectAll,
388
356
  fixed: true,
389
- columnTitle: "\u9009\u62E9",
390
- columnWidth: 60,
391
- getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
357
+ columnTitle: selection === "S" ? "\u9009\u62E9" : null,
358
+ columnWidth: selection === "S" ? 60 : 40,
359
+ getCheckboxProps
392
360
  };
361
+ } else {
362
+ rowSelection2.value = void 0;
393
363
  }
394
- return {
395
- onChange: onMultiChange,
396
- fixed: true,
397
- columnWidth: 40,
398
- getCheckboxProps: config == null ? void 0 : config.getCheckboxProps
399
- };
364
+ }, {
365
+ immediate: true
400
366
  });
401
- return {
402
- rowSelection: rowSelection2,
403
- clearSelection: clearSelection2
404
- };
367
+ return rowSelection2;
405
368
  }
406
369
  return () => createVNode(Flex, {
407
370
  "vertical": true,
408
371
  "ref": tableRef
409
372
  }, {
410
- default: () => [createVNode(Table, mergeProps({
411
- "key": tableKey.value
412
- }, attrs, {
373
+ default: () => [createVNode(Table, mergeProps(attrs, {
413
374
  "loading": props.loading,
414
375
  "size": props.size,
415
376
  "bordered": props.bordered,
416
377
  "dataSource": data.value,
417
378
  "columns": columns.value,
418
379
  "rowSelection": rowSelection.value,
419
- "customRow": customRowFn,
380
+ "customRow": useCustomRow(),
420
381
  "pagination": false,
421
382
  "rowKey": props.rowKey,
422
- "scroll": scrollConfig.value
383
+ "scroll": {
384
+ y: tableHeight.value,
385
+ x: "100%",
386
+ scrollToFirstRowOnChange: true
387
+ }
423
388
  }), tableSlots), pagination.value && createVNode("div", {
424
389
  "class": [paginationStyle, "d-pagination"]
425
390
  }, [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 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
+ {"version":3,"file":"Table.mjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n /**\r\n * 插槽处理\r\n * 假设 slots 已经在外部作用域定义(如 setup(props, { slots }))\r\n */\r\n function useSlots() {\r\n const tableSlots: any = {};\r\n\r\n // 只有外部传入了对应的插槽,才定义该属性\r\n if (slots.bodyCell)\r\n tableSlots.bodyCell = (params: any) =>\r\n slots.bodyCell?.(params);\r\n if (slots.headerCell)\r\n tableSlots.headerCell = (params: any) =>\r\n slots.headerCell?.(params);\r\n\r\n if (slots.expandedRowRender)\r\n tableSlots.expandedRowRender = (params: any) =>\r\n slots.expandedRowRender?.(params);\r\n if (slots.expandIcon)\r\n tableSlots.expandIcon = (params: any) =>\r\n slots.expandIcon?.(params);\r\n if (slots.summary)\r\n tableSlots.summary = () => slots.summary?.();\r\n\r\n if (slots.customFilterDropdown)\r\n tableSlots.customFilterDropdown = (params: any) =>\r\n slots.customFilterDropdown?.(params);\r\n if (slots.customFilterIcon)\r\n tableSlots.customFilterIcon = (params: any) =>\r\n slots.customFilterIcon?.(params);\r\n\r\n // --- 重点修改这里 ---\r\n // 只有当 slots.title 存在时,tableSlots 才有 title 属性\r\n if (slots.title)\r\n tableSlots.title = () => slots.title?.();\r\n if (slots.footer)\r\n tableSlots.footer = () => slots.footer?.();\r\n if (slots.emptyText)\r\n tableSlots.emptyText = () => slots.emptyText?.();\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val > 0) {\r\n // 使用 nextTick + requestAnimationFrame 确保 DOM 完全渲染\r\n nextTick(() => {\r\n requestAnimationFrame(() => {\r\n _tableBodyHeight(val);\r\n });\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n const tableEl = tableRef.value?.$el as\r\n | HTMLElement\r\n | undefined;\r\n if (!tableEl) return;\r\n\r\n // 表头高度 - 增加空值检查\r\n const headerEl = tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0] as HTMLElement | undefined;\r\n const headerHeight = headerEl\r\n ? useEleHeight(headerEl)\r\n : 0;\r\n\r\n // 分页 - 增加空值检查\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl) ?? 0;\r\n }\r\n\r\n // 总结行 - 增加空值检查\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n const summaryHeight = summaryEl\r\n ? (useEleHeight(summaryEl) ?? 0)\r\n : 0;\r\n\r\n // 计算最终高度,确保不为负数\r\n tableHeight.value = Math.max(\r\n 0,\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight\r\n );\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (\r\n node: Element | undefined | null\r\n): number => {\r\n if (!node) return 0;\r\n\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10) || 0)\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n }, 0);\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","headerCell","expandedRowRender","expandIcon","summary","customFilterDropdown","customFilterIcon","title","footer","emptyText","watch","val","nextTick","requestAnimationFrame","_tableBodyHeight","immediate","tableEl","$el","headerEl","getElementsByClassName","headerHeight","useEleHeight","paginationEl","paginationHeight","style","marginBottom","summaryEl","summaryHeight","Math","max","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
@@ -1 +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;;;;;;;;;;;;;;;;;4EAmhBhC,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;AAoCF,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;cAnDQ,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAJd,QAAQ,CAAC,QAAQ,CAAC;;;;cAInB,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;4EAgiBhC,CAAC;AAEH,eAAO,MAAM,YAAY,SACjB,OAAO,GAAG,SAAS,GAAG,IAAI,KAC/B,MAkBF,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "5.1.28",
3
+ "version": "5.1.29",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"