Commit 1214b7c32c425750a4d0202a9b235eb9e45a6f47

Authored by 无木
1 parent c8204042

fix(table): `cellFormat` support `Map`

close: #1031
src/components/Table/src/hooks/useColumns.ts
1 1 import type { BasicColumn, BasicTableProps, CellFormat, GetColumnsParams } from '../types/table';
2 2 import type { PaginationProps } from '../types/pagination';
3 3 import type { ComputedRef } from 'vue';
4   -import { unref, Ref, computed, watch, ref, toRaw } from 'vue';
  4 +import { computed, Ref, ref, toRaw, unref, watch } from 'vue';
5 5 import { renderEditCell } from '../components/editable';
6 6 import { usePermission } from '/@/hooks/web/usePermission';
7 7 import { useI18n } from '/@/hooks/web/useI18n';
8   -import { isBoolean, isArray, isString, isObject, isFunction } from '/@/utils/is';
9   -import { isEqual, cloneDeep } from 'lodash-es';
  8 +import { isArray, isBoolean, isFunction, isMap, isString } from '/@/utils/is';
  9 +import { cloneDeep, isEqual } from 'lodash-es';
10 10 import { formatToDate } from '/@/utils/dateUtil';
11   -import { DEFAULT_ALIGN, PAGE_SIZE, INDEX_COLUMN_FLAG, ACTION_COLUMN_FLAG } from '../const';
  11 +import { ACTION_COLUMN_FLAG, DEFAULT_ALIGN, INDEX_COLUMN_FLAG, PAGE_SIZE } from '../const';
12 12  
13 13 function handleItem(item: BasicColumn, ellipsis: boolean) {
14 14 const { key, dataIndex, children } = item;
... ... @@ -287,11 +287,9 @@ function sortFixedColumn(columns: BasicColumn[]) {
287 287 }
288 288 defColumns.push(column);
289 289 }
290   - const resultColumns = [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter(
  290 + return [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter(
291 291 (item) => !item.defaultHidden
292 292 );
293   -
294   - return resultColumns;
295 293 }
296 294  
297 295 // format cell
... ... @@ -317,8 +315,8 @@ export function formatCell(text: string, format: CellFormat, record: Recordable,
317 315 return formatToDate(text, dateFormat);
318 316 }
319 317  
320   - // enum
321   - if (isObject(format) && Reflect.has(format, 'size')) {
  318 + // Map
  319 + if (isMap(format)) {
322 320 return format.get(text);
323 321 }
324 322 } catch (error) {
... ...
src/utils/is.ts
... ... @@ -84,6 +84,10 @@ export function isElement(val: unknown): val is Element {
84 84 return isObject(val) && !!val.tagName;
85 85 }
86 86  
  87 +export function isMap(val: unknown): val is Map {
  88 + return is(val, 'Map');
  89 +}
  90 +
87 91 export const isServer = typeof window === 'undefined';
88 92  
89 93 export const isClient = !isServer;
... ...