Browse Source

style: 优化 vxe-table 类型组织结构,将 viewed-row 功能域相关类型进行模块化拆分,由全局类型声明调整为功能目录内聚管理,避免公共 types 文件持续膨胀。 (#8204)

pull/8207/head
layhuts 1 week ago
committed by GitHub
parent
commit
fbf0cebf4b
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      packages/effects/plugins/src/vxe-table/api.ts
  2. 83
      packages/effects/plugins/src/vxe-table/types.ts
  3. 2
      packages/effects/plugins/src/vxe-table/use-vxe-grid.vue
  4. 8
      packages/effects/plugins/src/vxe-table/viewed-row/index.ts
  5. 84
      packages/effects/plugins/src/vxe-table/viewed-row/types.ts
  6. 0
      packages/effects/plugins/src/vxe-table/viewed-row/use-viewed-row.ts

2
packages/effects/plugins/src/vxe-table/api.ts

@ -7,7 +7,7 @@ import type {
} from '@vben-core/form-ui';
import type { VxeGridProps } from './types';
import type { ViewedRowHelper } from './use-viewed-row';
import type { ViewedRowHelper } from './viewed-row';
import { toRaw } from 'vue';

83
packages/effects/plugins/src/vxe-table/types.ts

@ -2,7 +2,6 @@ import type {
VxeGridListeners,
VxeGridPropTypes,
VxeGridProps as VxeTableGridProps,
VxeTablePropTypes,
VxeUIExport,
} from 'vxe-table';
@ -17,6 +16,7 @@ import type {
} from '@vben-core/form-ui';
import type { VxeGridApi } from './api';
import type { ViewedRowOptions } from './viewed-row';
import { useVbenForm } from '@vben-core/form-ui';
@ -43,87 +43,6 @@ export interface SeparatorOptions {
backgroundColor?: string;
}
/**
*
* APIIndexedDB wrapper
*/
export interface ViewedRowStorageAdapter {
/** 读取所有已查看的 key 列表 */
getKeys(): Promise<Array<number | string>>;
/** 移除所有已查看数据 */
removeKeys(): Promise<void>;
/** 持久化已查看的 key 列表 */
setKeys(keys: Array<number | string>): Promise<void>;
}
/**
*
*/
interface ViewedRowPersistBase {
/** 持久化数据的存活时间(毫秒) */
ttl?: number;
/** 最大缓存数量,超出时淘汰最早标记的 key(FIFO),默认 100 */
maxSize?: number;
}
/**
* type
*
* - 'memory'
* - 'localStorage' 使 localStorage key
* - 'sessionStorage' 使 sessionStorage key
* - 'indexedDB' 使 IndexedDB key
* - 'custom' storage
*/
export type ViewedRowPersistOptions =
| ({
/** IndexedDB 数据库名称,默认 'viewed-table-db' */
dbName?: string;
/** IndexedDB 数据库版本,默认 1 */
dbVersion?: number;
/** 存储 key / prefix(必传) */
key: string;
/** IndexedDB 对象存储名称,默认 'viewed-table-row' */
storeName?: string;
type: 'indexedDB';
} & ViewedRowPersistBase)
| ({
/** 存储 key(必传) */
key: string;
type: 'localStorage' | 'sessionStorage';
} & ViewedRowPersistBase)
| ({
/** 自定义存储适配器(必传) */
storage: ViewedRowStorageAdapter;
type: 'custom';
} & ViewedRowPersistBase)
| (ViewedRowPersistBase & {
type: 'memory';
});
/**
* row设置
*/
export interface ViewedRowOptions<T = any> {
/** 点击 CellOperation 中匹配的 code 时,自动将该行标记为已读 */
actionCodes?: string | string[];
/** 行唯一标识字段,默认取 gridOptions.rowConfig.keyField,最终兜底 'id' */
keyField?: string;
/** 已查看的行key列表 */
viewedKeys?: Array<number | string> | Ref<Array<number | string>>;
/**
*
* - string使 localStorage storage key
* - object
* - memory
*/
persist?: string | ViewedRowPersistOptions;
rowClassName?: VxeTablePropTypes.RowClassName<T>;
rowStyle?: VxeTablePropTypes.RowStyle<T>;
}
export interface VxeGridProps<
T extends Record<string, any> = any,
D extends BaseFormComponentType = BaseFormComponentType,

2
packages/effects/plugins/src/vxe-table/use-vxe-grid.vue

@ -44,7 +44,7 @@ import { VxeGrid, VxeUI } from 'vxe-table';
import { extendProxyOptions } from './extends';
import { useTableForm } from './init';
import { applyViewedRowOptions, useViewedRow } from './use-viewed-row';
import { applyViewedRowOptions, useViewedRow } from './viewed-row';
import 'vxe-table/styles/cssvar.scss';
import 'vxe-pc-ui/styles/cssvar.scss';

8
packages/effects/plugins/src/vxe-table/viewed-row/index.ts

@ -0,0 +1,8 @@
export type {
ViewedRowOptions,
ViewedRowPersistOptions,
ViewedRowStorageAdapter,
} from './types';
export { applyViewedRowOptions, useViewedRow } from './use-viewed-row';
export type { ViewedRowHelper } from './use-viewed-row';

84
packages/effects/plugins/src/vxe-table/viewed-row/types.ts

@ -0,0 +1,84 @@
import type { VxeTablePropTypes } from 'vxe-table';
import type { Ref } from 'vue';
/**
*
* APIIndexedDB wrapper
*/
export interface ViewedRowStorageAdapter {
/** 读取所有已查看的 key 列表 */
getKeys(): Promise<Array<number | string>>;
/** 移除所有已查看数据 */
removeKeys(): Promise<void>;
/** 持久化已查看的 key 列表 */
setKeys(keys: Array<number | string>): Promise<void>;
}
/**
*
*/
interface ViewedRowPersistBase {
/** 持久化数据的存活时间(毫秒) */
ttl?: number;
/** 最大缓存数量,超出时淘汰最早标记的 key(FIFO),默认 100 */
maxSize?: number;
}
/**
* type
*
* - 'memory'
* - 'localStorage' 使 localStorage key
* - 'sessionStorage' 使 sessionStorage key
* - 'indexedDB' 使 IndexedDB key
* - 'custom' storage
*/
export type ViewedRowPersistOptions =
| ({
/** IndexedDB 数据库名称,默认 'viewed-table-db' */
dbName?: string;
/** IndexedDB 数据库版本,默认 1 */
dbVersion?: number;
/** 存储 key / prefix(必传) */
key: string;
/** IndexedDB 对象存储名称,默认 'viewed-table-row' */
storeName?: string;
type: 'indexedDB';
} & ViewedRowPersistBase)
| ({
/** 存储 key(必传) */
key: string;
type: 'localStorage' | 'sessionStorage';
} & ViewedRowPersistBase)
| ({
/** 自定义存储适配器(必传) */
storage: ViewedRowStorageAdapter;
type: 'custom';
} & ViewedRowPersistBase)
| (ViewedRowPersistBase & {
type: 'memory';
});
/**
* row设置
*/
export interface ViewedRowOptions<T = any> {
/** 点击 CellOperation 中匹配的 code 时,自动将该行标记为已读 */
actionCodes?: string | string[];
/** 行唯一标识字段,默认取 gridOptions.rowConfig.keyField,最终兜底 'id' */
keyField?: string;
/** 已查看的行key列表 */
viewedKeys?: Array<number | string> | Ref<Array<number | string>>;
/**
*
* - string使 localStorage storage key
* - object
* - memory
*/
persist?: string | ViewedRowPersistOptions;
rowClassName?: VxeTablePropTypes.RowClassName<T>;
rowStyle?: VxeTablePropTypes.RowStyle<T>;
}

0
packages/effects/plugins/src/vxe-table/use-viewed-row.ts → packages/effects/plugins/src/vxe-table/viewed-row/use-viewed-row.ts

Loading…
Cancel
Save