Commit 1214b7c32c425750a4d0202a9b235eb9e45a6f47

Authored by 无木
1 parent c8204042

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

close: #1031
src/components/Table/src/hooks/useColumns.ts
1 import type { BasicColumn, BasicTableProps, CellFormat, GetColumnsParams } from '../types/table'; 1 import type { BasicColumn, BasicTableProps, CellFormat, GetColumnsParams } from '../types/table';
2 import type { PaginationProps } from '../types/pagination'; 2 import type { PaginationProps } from '../types/pagination';
3 import type { ComputedRef } from 'vue'; 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 import { renderEditCell } from '../components/editable'; 5 import { renderEditCell } from '../components/editable';
6 import { usePermission } from '/@/hooks/web/usePermission'; 6 import { usePermission } from '/@/hooks/web/usePermission';
7 import { useI18n } from '/@/hooks/web/useI18n'; 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 import { formatToDate } from '/@/utils/dateUtil'; 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 function handleItem(item: BasicColumn, ellipsis: boolean) { 13 function handleItem(item: BasicColumn, ellipsis: boolean) {
14 const { key, dataIndex, children } = item; 14 const { key, dataIndex, children } = item;
@@ -287,11 +287,9 @@ function sortFixedColumn(columns: BasicColumn[]) { @@ -287,11 +287,9 @@ function sortFixedColumn(columns: BasicColumn[]) {
287 } 287 }
288 defColumns.push(column); 288 defColumns.push(column);
289 } 289 }
290 - const resultColumns = [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter( 290 + return [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter(
291 (item) => !item.defaultHidden 291 (item) => !item.defaultHidden
292 ); 292 );
293 -  
294 - return resultColumns;  
295 } 293 }
296 294
297 // format cell 295 // format cell
@@ -317,8 +315,8 @@ export function formatCell(text: string, format: CellFormat, record: Recordable, @@ -317,8 +315,8 @@ export function formatCell(text: string, format: CellFormat, record: Recordable,
317 return formatToDate(text, dateFormat); 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 return format.get(text); 320 return format.get(text);
323 } 321 }
324 } catch (error) { 322 } catch (error) {
src/utils/is.ts
@@ -84,6 +84,10 @@ export function isElement(val: unknown): val is Element { @@ -84,6 +84,10 @@ export function isElement(val: unknown): val is Element {
84 return isObject(val) && !!val.tagName; 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 export const isServer = typeof window === 'undefined'; 91 export const isServer = typeof window === 'undefined';
88 92
89 export const isClient = !isServer; 93 export const isClient = !isServer;