Merge branch 'fork/xingyu4j/antdv-next'

This commit is contained in:
Jin Mao
2026-05-19 14:14:28 +08:00
168 changed files with 4489 additions and 4284 deletions

View File

@@ -66,6 +66,7 @@ function findPlaceholderPos(doc: ProseMirrorNode, blobUrl: string): number {
found = offset;
return false;
}
return true;
});
return found;
}

View File

@@ -1,3 +1,4 @@
/* eslint-disable unicorn/no-nested-ternary */
import type { VxeGridProps as VxeTableGridProps } from 'vxe-table';
import type {
@@ -182,13 +183,11 @@ export function useViewedRow<T = any>(
options: ViewedRowOptions<T> & { keyField: string },
) {
// ========== 解析持久化配置 ==========
let persistOpts: null | ViewedRowPersistOptions = null;
if (options.persist) {
persistOpts =
typeof options.persist === 'string'
? { key: options.persist, type: 'localStorage' }
: options.persist;
}
const persistOpts: null | ViewedRowPersistOptions = options.persist
? typeof options.persist === 'string'
? { key: options.persist, type: 'localStorage' }
: options.persist
: null;
const adapter = createStorageAdapter(options.persist);
const maxSize = persistOpts?.maxSize ?? 100;
@@ -521,12 +520,12 @@ export function applyViewedRowOptions(
};
// 拦截 CellOperation columns
let actionCodes: string[] = [];
if (!isBoolean(viewedRowConfig) && viewedRowConfig.actionCodes) {
actionCodes = Array.isArray(viewedRowConfig.actionCodes)
? viewedRowConfig.actionCodes
: [viewedRowConfig.actionCodes];
}
const actionCodes =
!isBoolean(viewedRowConfig) && viewedRowConfig.actionCodes
? Array.isArray(viewedRowConfig.actionCodes)
? viewedRowConfig.actionCodes
: [viewedRowConfig.actionCodes]
: [];
if (actionCodes.length > 0 && Array.isArray(mergedOptions.columns)) {
mergedOptions.columns = wrapColumnsForViewedRow(

View File

@@ -50,24 +50,18 @@ describe('requestClient', () => {
it('should handle network errors', async () => {
mock.onGet('/test/error').networkError();
try {
await requestClient.get('/test/error');
expect(true).toBe(false);
} catch (error: any) {
expect(error.isAxiosError).toBe(true);
expect(error.message).toBe('Network Error');
}
await expect(requestClient.get('/test/error')).rejects.toMatchObject({
isAxiosError: true,
message: 'Network Error',
});
});
it('should handle timeout', async () => {
mock.onGet('/test/timeout').timeout();
try {
await requestClient.get('/test/timeout');
expect(true).toBe(false);
} catch (error: any) {
expect(error.isAxiosError).toBe(true);
expect(error.code).toBe('ECONNABORTED');
}
await expect(requestClient.get('/test/timeout')).rejects.toMatchObject({
isAxiosError: true,
code: 'ECONNABORTED',
});
});
it('should successfully upload a file', async () => {
@@ -92,7 +86,7 @@ describe('requestClient', () => {
mock.onGet('/test/download').reply(200, mockFileContent);
const res = await requestClient.download('/test/download');
const res = await requestClient.download<any>('/test/download');
expect(res.data).toBeInstanceOf(Blob);
});