chore: upgrade ant design to 5.24.2 (#6343)

* chore: upgrade ant design to 5.24.2

* chore: fix errors after upgrade ant design

* fix: ts errors

* fix: ts error

* fix: ts error

* chore: keep original code format

* chore: revert format changes

* chore: keep code format

* fix: unit tests error after upgrade ant design

* fix: style issues for variable inputs

* fix: inbox style issue

* fix: some buttons not showing in drawer

* chore: fix formily antd version

* fix: incorrect details block pagination style [skip ci]

* fix: incorrect cron style after upgrade ant design [skip ci]

* fix: unit tests errors after upgrading ant design

* fix: update unit tests for collection select and color picker components

* fix: e2e tests errors

* fix: e2e tests failing

* fix: tests error

* fix: e2e test cases

* fix: some e2e tests failing

* fix: e2e testing errors

* fix: e2e build failing

* fix: update yarn.lock to avoid comment ci timeout

* Revert "fix: update yarn.lock to avoid comment ci timeout"

This reverts commit 6f117f57a0fd1d605de7ef18022c5c3e658e24af.

* chore: comment ci timeout

* chore: e2e

* fix: workflow approval e2e testing

* fix: e2e stable for some tests
This commit is contained in:
gchust 2025-03-12 08:46:38 +08:00 committed by GitHub
parent c2786c1bee
commit 62f10d9c97
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
95 changed files with 674 additions and 496 deletions

View File

@ -52,7 +52,9 @@
"react": "^18.0.0",
"react-dom": "^18.0.0",
"nwsapi": "2.2.7",
"antd": "5.12.8",
"antd": "5.24.2",
"@formily/antd-v5": "1.2.3",
"dayjs": "1.11.13",
"@ant-design/icons": "^5.6.1"
},
"config": {
@ -93,4 +95,4 @@
"yarn": "1.22.19"
},
"dependencies": {}
}
}

View File

@ -17,7 +17,7 @@
"@dnd-kit/modifiers": "^6.0.0",
"@dnd-kit/sortable": "^6.0.0",
"@emotion/css": "^11.7.1",
"@formily/antd-v5": "1.1.9",
"@formily/antd-v5": "1.2.3",
"@formily/core": "^2.2.27",
"@formily/grid": "^2.2.27",
"@formily/json-schema": "^2.2.27",
@ -31,7 +31,7 @@
"@nocobase/sdk": "1.7.0-alpha.1",
"@nocobase/utils": "1.7.0-alpha.1",
"ahooks": "^3.7.2",
"antd": "5.12.8",
"antd": "5.24.2",
"antd-style": "3.7.1",
"axios": "^1.7.0",
"bignumber.js": "^9.1.2",

View File

@ -7,7 +7,7 @@
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import { Checkbox, message, Table } from 'antd';
import { Checkbox, message, Table, TableProps } from 'antd';
import { omit } from 'lodash';
import React, { createContext, useContext, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
@ -139,7 +139,7 @@ export const SettingsCenterConfigure = () => {
return <Checkbox checked={checked} onChange={() => handleChange(checked, record)} />;
},
},
]}
] as TableProps['columns']}
dataSource={settings
.filter((v) => {
return v.isTopLevel !== false;

View File

@ -7,7 +7,7 @@
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import { Checkbox, message, Table } from 'antd';
import { Checkbox, message, Table, TableProps } from 'antd';
import { uniq } from 'lodash';
import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
@ -149,12 +149,12 @@ export const MenuConfigure = () => {
{t('Accessible')}
</>
),
render: (_, schema) => {
render: (_, schema: { uid: string }) => {
const checked = uids.includes(schema.uid);
return <Checkbox checked={checked} onChange={() => handleChange(checked, schema)} />;
},
},
]}
] as TableProps['columns']}
dataSource={translateTitle(items)}
/>
);

View File

@ -10,7 +10,7 @@
import { FormItem, FormLayout } from '@formily/antd-v5';
import { ArrayField } from '@formily/core';
import { connect, useField, useForm } from '@formily/react';
import { Checkbox, Table, Tag } from 'antd';
import { Checkbox, Table, Tag, TableProps } from 'antd';
import { isEmpty } from 'lodash';
import React, { createContext } from 'react';
import { useTranslation } from 'react-i18next';
@ -146,7 +146,7 @@ export const RolesResourcesActions = connect((props) => {
/>
),
},
]}
] as TableProps['columns']}
dataSource={availableActions?.map((item) => {
let enabled = false;
let scope = null;
@ -222,7 +222,7 @@ export const RolesResourcesActions = connect((props) => {
),
};
}),
]}
] as TableProps['columns']}
/>
</FormItem>
</FormLayout>

View File

@ -9,7 +9,7 @@
import { ArrayField } from '@formily/core';
import { connect, useField } from '@formily/react';
import { Checkbox, Select, Table, Tag } from 'antd';
import { Checkbox, Select, Table, Tag, TableProps } from 'antd';
import React from 'react';
import { useTranslation } from 'react-i18next';
import { useCompile } from '../..';
@ -110,7 +110,7 @@ export const StrategyActions = connect((props) => {
/>
),
},
]}
] as TableProps['columns']}
dataSource={availableActions?.map((item) => {
let scope = 'all';
let enabled = false;

View File

@ -1153,6 +1153,7 @@ export const useDetailsPaginationProps = () => {
current: ctx.service?.data?.meta?.page || 1,
pageSize: 1,
showSizeChanger: false,
align: 'center',
async onChange(page) {
const params = ctx.service?.params?.[0];
ctx.service.run({ ...params, page });
@ -1178,6 +1179,7 @@ export const useDetailsPaginationProps = () => {
total: count,
pageSize: 1,
showSizeChanger: false,
align: 'center',
async onChange(page) {
const params = ctx.service?.params?.[0];
ctx.service.run({ ...params, page });

View File

@ -25,6 +25,7 @@ import { useCollectionManager_deprecated } from '../hooks';
import useDialect from '../hooks/useDialect';
import * as components from './components';
import { useFieldInterfaceOptions } from './interfaces';
import { ItemType, MenuItemType } from 'antd/es/menu/interface';
const getSchema = (schema: CollectionFieldInterface, record: any, compile) => {
if (!schema) {
@ -231,7 +232,7 @@ export const AddFieldAction = (props) => {
}, [getTemplate, record]);
const items = useMemo<MenuProps['items']>(() => {
return getFieldOptions()
.map((option) => {
.map((option): ItemType & { title: string; children?: ItemType[] } => {
if (option?.children?.length === 0) {
return null;
}

View File

@ -96,7 +96,7 @@ export const PresetFields = observer(
rowSelection={{
type: 'checkbox',
selectedRowKeys,
getCheckboxProps: (record) => ({
getCheckboxProps: (record: { name: string }) => ({
name: record.name,
disabled: props?.disabled || props?.presetFieldsDisabledIncludes?.includes?.(record.name),
}),

View File

@ -29,7 +29,8 @@ const defaultTheme: ThemeConfig = {
// 动画相关
motionUnit: 0.03,
motion: !process.env.__E2E__,
// ant design 升级到5.24.2后Modal.confirm在E2E中如果关闭动画会出现ant-modal-mask不销毁的问题
// motion: !process.env.__E2E__,
},
};

View File

@ -28,7 +28,7 @@ test.describe('bulk-destroy', () => {
// 3. 点击批量删除按钮Table 显示无数据
await page.getByLabel('action-Action-Delete-destroy-').click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
await expect(page.getByLabel('block-item-CardItem-general-').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-general-').getByText('No data').last()).toBeVisible();
});
test('Secondary confirmation', async ({ page, mockPage, mockRecords }) => {
@ -45,6 +45,7 @@ test.describe('bulk-destroy', () => {
await page.getByLabel('designer-schema-settings-Action-actionSettings:bulkDelete-general').hover();
await page.getByRole('menuitem', { name: 'Secondary confirmation' }).click();
await page.getByLabel('Enable secondary confirmation').uncheck();
await expect(page.getByRole('button', { name: 'OK' })).toHaveCount(1);
await page.getByRole('button', { name: 'OK' }).click();
await page.mouse.move(500, 0);
@ -53,6 +54,6 @@ test.describe('bulk-destroy', () => {
// 3. 点击批量删除按钮Table 显示无数据
await page.getByLabel('action-Action-Delete-destroy-').click();
await expect(page.getByLabel('block-item-CardItem-general-').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-general-').getByText('No data').last()).toBeVisible();
});
});

View File

@ -28,6 +28,9 @@ test.describe('Link', () => {
// 2. config the Link button
await page.getByLabel('action-Action.Link-Link-customize:link-users-table-0').hover();
await expect(
page.getByRole('button', { name: 'designer-schema-settings-Action.Link-actionSettings:link-users' }),
).toHaveCount(1);
await page.getByRole('button', { name: 'designer-schema-settings-Action.Link-actionSettings:link-users' }).hover();
await page.getByRole('menuitem', { name: 'Edit link' }).click();
await page

View File

@ -29,6 +29,7 @@ test('basic', async ({ page, mockPage, mockRecord }) => {
await expect(page.getByRole('tooltip').getByText('Disassociate')).toBeVisible();
await page.getByLabel('block-item-CardItem-cc-table').hover();
await page.getByRole('menuitem', { name: 'Associate' }).waitFor({ state: 'detached' });
await page.getByLabel('schema-initializer-ActionBar-table:configureActions-cc').hover();
await page.getByRole('menuitem', { name: 'Associate' }).click();
//点击 associate 出现弹窗

View File

@ -18,7 +18,7 @@ test('basic', async ({ page, mockPage, mockRecord }) => {
await page.getByLabel('action-Action.Link-Edit record-update-collection1-table-0').click();
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Table right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'manyToMany' }).click();
// 2. Table 中显示 Role UID 字段

View File

@ -12,6 +12,7 @@ import { oneEmptyTableWithUsers } from './templatesOfBug';
const deleteButton = async (page: Page, name: string) => {
await page.getByRole('button', { name }).hover();
await page.getByRole('menuitem', { name: 'Delete' }).waitFor({ state: 'detached' });
await page.getByRole('button', { name }).getByLabel('designer-schema-settings-').hover();
await page.getByRole('menuitem', { name: 'Delete' }).click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
@ -31,6 +32,7 @@ test.describe('where multi data details block can be added', () => {
// 1. 打开弹窗,通过 Associated records 添加一个详情区块
await page.getByLabel('action-Action.Link-View').click();
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Associated records right' }).waitFor({ state: 'detached' });
await page.getByRole('menuitem', { name: 'Details right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records right' }).hover();
await page.getByRole('menuitem', { name: 'Roles' }).click();
@ -41,6 +43,7 @@ test.describe('where multi data details block can be added', () => {
await expect(page.getByLabel('block-item-CollectionField-').getByText('admin')).toBeVisible();
// 2. 打开弹窗,通过 Other records 添加一个详情区块
await page.getByRole('menuitem', { name: 'Details right' }).waitFor({ state: 'detached' });
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Details right' }).hover();
await page.getByRole('menuitem', { name: 'Other records right' }).hover();
@ -116,6 +119,7 @@ test.describe('configure actions', () => {
await page.getByText('Delete').click();
await page.mouse.move(300, 0);
await expect(page.getByRole('button', { name: 'Edit' })).toHaveCount(1);
await expect(page.getByRole('button', { name: 'Edit' })).toBeVisible();
await expect(page.getByRole('button', { name: 'Delete' })).toBeVisible();

View File

@ -76,6 +76,7 @@ test.describe('actions schema settings', () => {
await expectSettingsMenu({
page,
showMenu: async () => {
await expect(page.getByRole('button', { name: 'Edit' })).toHaveCount(1);
await page.getByRole('button', { name: 'Edit' }).hover();
await page.getByRole('button', { name: 'designer-schema-settings-Action' }).hover();
},

View File

@ -50,10 +50,10 @@ test.describe('setDataLoadingModeSettingsItem', () => {
await page.getByRole('button', { name: 'OK', exact: true }).click();
// 所有区块应该显示 No data
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-details').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-list').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-BlockItem-users-').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data').last()).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-details').getByText('No data').last()).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-list').getByText('No data').last()).toBeVisible();
await expect(page.getByLabel('block-item-BlockItem-users-').getByText('No data').last()).toBeVisible();
// 3. 在筛选表单中数据一个筛选条件,点击筛选按钮,区块内应该显示数据
await page.getByLabel('block-item-CollectionField-').getByRole('textbox').click();
@ -67,10 +67,10 @@ test.describe('setDataLoadingModeSettingsItem', () => {
// 4. 点击筛选表单的 Reset 按钮,区块内应该显示 No data
await page.getByLabel('action-Action-Reset to empty-users-').click();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-details').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-list').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-BlockItem-users-').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data').last()).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-details').getByText('No data').last()).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-list').getByText('No data').last()).toBeVisible();
await expect(page.getByLabel('block-item-BlockItem-users-').getByText('No data').last()).toBeVisible();
});
test('When the data block has data scope settings and dataLoadingMode is manual, data should not be displayed after the first page load', async ({
@ -78,7 +78,7 @@ test.describe('setDataLoadingModeSettingsItem', () => {
mockPage,
}) => {
await mockPage(TableBlockWithDataScope).goto();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data').last()).toBeVisible();
// 此时点击 filter 按钮,应该还是没数据,因为表单没有值
await page.getByLabel('action-Action-Filter-submit-').click({
@ -87,7 +87,7 @@ test.describe('setDataLoadingModeSettingsItem', () => {
y: 10,
},
});
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data').last()).toBeVisible();
// 点击 Reset 按钮,也是一样
await page.getByLabel('action-Action-Reset-users-').click({
@ -96,6 +96,6 @@ test.describe('setDataLoadingModeSettingsItem', () => {
y: 10,
},
});
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data').last()).toBeVisible();
});
});

View File

@ -69,7 +69,7 @@ test.describe('where single data details block can be added', () => {
// 3.通过 Associated records 创建一个详情区块
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Details right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'manyToOne' }).hover();
await page.getByRole('menuitem', { name: 'Blank block' }).click();
await page.mouse.move(300, 0);
@ -82,7 +82,7 @@ test.describe('where single data details block can be added', () => {
// 4.通过 Associated records 创建一个详情区块,使用模板
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Details right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'manyToOne' }).hover();
await page.getByRole('menuitem', { name: 'Duplicate template' }).hover();
await page.getByRole('menuitem', { name: 'example_Details (Fields only)' }).click();

View File

@ -60,10 +60,10 @@ test.describe('configure fields', () => {
await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch')).toBeChecked();
// add association fields
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await page.getByRole('menuitem', { name: 'Nickname' }).click();
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await expect(page.getByRole('menuitem', { name: 'Nickname' }).getByRole('switch')).toBeChecked();
await page.mouse.move(300, 0);
@ -72,13 +72,14 @@ test.describe('configure fields', () => {
// delete fields
await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover();
await expect(page.getByRole('menuitem', { name: 'ID', exact: true })).toHaveCount(1);
await page.getByRole('menuitem', { name: 'ID', exact: true }).click();
await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch')).not.toBeChecked();
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await page.getByRole('menuitem', { name: 'Nickname' }).click();
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await expect(page.getByRole('menuitem', { name: 'Nickname' }).getByRole('switch')).not.toBeChecked();
await page.mouse.move(300, 0);
@ -119,6 +120,7 @@ test.describe('configure actions', () => {
// add button
await page.getByRole('menuitem', { name: 'Submit' }).click();
await page.mouse.move(300, 0);
await expect(page.getByRole('button', { name: 'Submit' })).toHaveCount(1);
await expect(page.getByRole('button', { name: 'Submit' })).toBeVisible();
// delete button

View File

@ -279,7 +279,7 @@ test.describe('set default value', () => {
await page.getByRole('button', { name: 'OK', exact: true }).click();
// 2. 设置的 abcd 应该立即显示在 Nickname 字段的输入框中
await expect(page.getByLabel('block-item-CollectionField-').getByRole('textbox')).toHaveValue('abcd');
await expect(page.getByLabel('block-item-CollectionField-').getByRole('textbox').last()).toHaveValue('abcd');
});
test('Current popup record', async ({ page, mockPage }) => {

View File

@ -248,7 +248,7 @@ test.describe('creation form block schema settings', () => {
// 重新选择一下数据,字段值才会被填充
// TODO: 保存后,数据应该直接被填充上
await page.getByLabel('icon-close-select').click();
await page.getByLabel('icon-close-select').last().click();
await page.getByTestId('select-object-single').click();
await page.getByRole('option', { name: '2' }).click();

View File

@ -128,9 +128,14 @@ test.describe('linkage rules', () => {
// 增加一条规则:当 number 字段的值等于 123 时
await page.getByRole('button', { name: 'plus Add linkage rule' }).click();
await page.locator('.ant-collapse-header').nth(1).getByRole('img', { name: 'right' }).click();
await page.locator('.ant-collapse-header .ant-collapse-expand-icon').nth(1).click();
await page.getByLabel('Linkage rules').getByRole('tabpanel').getByText('Add condition', { exact: true }).click();
await page
.getByLabel('Linkage rules')
.getByRole('tabpanel')
.getByText('Add condition', { exact: true })
.last()
.click();
await page.getByRole('button', { name: 'Select field' }).click();
await page.getByRole('menuitemcheckbox', { name: 'number' }).click();
await page.getByLabel('Linkage rules').getByRole('spinbutton').click();
@ -146,19 +151,19 @@ test.describe('linkage rules', () => {
// action: 为 longText 字段赋上常量值
await page.getByLabel('Linkage rules').getByRole('tabpanel').getByText('Add property').click();
await page.getByRole('button', { name: 'Select field' }).click();
await page.getByRole('tree').getByText('longText').click();
await page.getByRole('tree').getByText('longText').last().click();
await page.getByRole('button', { name: 'action', exact: true }).click();
await page.getByRole('option', { name: 'Value', exact: true }).click();
await page.getByRole('option', { name: 'Value', exact: true }).last().click();
await page.getByLabel('dynamic-component-linkage-rules').getByRole('textbox').fill('456');
// action: 为 integer 字段附上一个表达式,使其值等于 number 字段的值
await page.getByLabel('Linkage rules').getByRole('tabpanel').getByText('Add property').click();
await page.getByRole('button', { name: 'Select field' }).click();
await page.getByRole('tree').getByText('integer').click();
await page.getByRole('tree').getByText('integer').last().click();
await page.getByRole('button', { name: 'action', exact: true }).click();
await page.getByRole('option', { name: 'Value', exact: true }).click();
await page.getByTestId('select-linkage-value-type').nth(1).click();
await page.getByRole('option', { name: 'Value', exact: true }).last().click();
await page.getByTestId('select-linkage-value-type').last().click();
await page.getByText('Expression').click();
await page.getByText('xSelect a variable').click();

View File

@ -33,6 +33,7 @@ test.describe('bulk edit form', () => {
await expect(page.getByLabel('block-item-BulkEditField-').getByText('*')).toBeVisible();
// 3. 输入值,点击提交
await expect(page.getByLabel('block-item-BulkEditField-').getByRole('textbox')).toHaveCount(1);
await page.getByLabel('block-item-BulkEditField-').getByRole('textbox').fill('123');
await page.getByRole('button', { name: 'Submit' }).click();
@ -65,6 +66,7 @@ test.describe('bulk edit form', () => {
await expect(page.getByLabel('block-item-BulkEditField-').getByText('*')).toBeVisible();
// 4. 点击提交按钮,应该提示一个错误
await expect(page.getByRole('button', { name: 'Submit' })).toHaveCount(1);
await page.getByRole('button', { name: 'Submit' }).click();
await expect(page.getByLabel('block-item-BulkEditField-').getByText('The field value is required')).toBeVisible();

View File

@ -34,6 +34,7 @@ test.describe('deprecated variables', () => {
// 表达式输入框也是一样
await page.getByText('xSelect a variable').click();
await expect(page.getByRole('menuitemcheckbox', { name: 'Current record right' })).toHaveCount(1);
await page.getByRole('menuitemcheckbox', { name: 'Current record right' }).hover({ position: { x: 40, y: 12 } });
await expect(page.getByRole('tooltip', { name: 'This variable has been deprecated' })).toBeVisible();
await expect(page.getByRole('menuitemcheckbox', { name: 'Current record right' })).toHaveClass(
@ -45,6 +46,7 @@ test.describe('deprecated variables', () => {
// 3. 当设置为其它变量后,再次打开,变量列表中的弃用变量不再显示
await page.locator('button').filter({ hasText: /^x$/ }).click();
await expect(page.getByRole('menuitemcheckbox', { name: 'Current form right' })).toHaveCount(1);
await page.getByRole('menuitemcheckbox', { name: 'Current form right' }).click();
await page.getByRole('menuitemcheckbox', { name: 'Nickname' }).click();
await expect(page.getByLabel('variable-tag').getByText('Current form / Nickname')).toBeVisible();

View File

@ -18,6 +18,7 @@ import {
import { T3825 } from './templatesOfBug';
const clickOption = async (page: Page, optionName: string) => {
await page.getByLabel('block-item-CardItem-general-form').hover();
await page.getByRole('menuitem', { name: optionName }).waitFor({ state: 'detached' });
await page.getByLabel('designer-schema-settings-CardItem-FormV2.Designer-general').hover();
await page.getByRole('menuitem', { name: optionName }).click();
};

View File

@ -13,6 +13,7 @@ import { oneGridCardWithInheritFields } from './templatesOfBug';
const deleteButton = async (page: Page, name: string) => {
await page.getByRole('button', { name }).hover();
await page.getByRole('menuitem', { name: 'Delete' }).waitFor({ state: 'detached' });
await page.getByRole('button', { name }).getByLabel('designer-schema-settings-').hover();
await page.getByRole('menuitem', { name: 'Delete' }).click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
@ -47,6 +48,7 @@ test.describe('where grid card block can be added', () => {
// 2. 通过 Other records 创建一个列表区块
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Other records right' }).waitFor({ state: 'detached' });
await page.getByRole('menuitem', { name: 'Grid Card right' }).hover();
await page.getByRole('menuitem', { name: 'Other records right' }).hover();
await page.getByRole('menuitem', { name: 'Users' }).click();
@ -151,10 +153,10 @@ test.describe('configure fields', () => {
// add association fields
await page.mouse.wheel(0, 300);
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await page.getByRole('menuitem', { name: 'Nickname' }).click();
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await expect(page.getByRole('menuitem', { name: 'Nickname' }).getByRole('switch')).toBeChecked();
await page.mouse.move(300, 0);
@ -165,14 +167,14 @@ test.describe('configure fields', () => {
// delete fields
await formItemInitializer.hover();
await page.getByRole('menuitem', { name: 'ID', exact: true }).click();
await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch')).not.toBeChecked();
await page.getByRole('menuitem', { name: 'ID', exact: true }).first().click();
await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch').first()).not.toBeChecked();
await page.mouse.wheel(0, 300);
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await page.getByRole('menuitem', { name: 'Nickname' }).click();
await page.getByRole('menuitem', { name: 'Many to one' }).nth(1).hover();
await page.getByRole('menuitem', { name: 'Many to one right' }).hover();
await expect(page.getByRole('menuitem', { name: 'Nickname' }).getByRole('switch')).not.toBeChecked();
await page.mouse.move(300, 0);
@ -185,7 +187,7 @@ test.describe('configure fields', () => {
// add markdown
await formItemInitializer.hover();
await page.getByRole('menuitem', { name: 'ID', exact: true }).hover();
await page.getByRole('menuitem', { name: 'ID', exact: true }).first().hover();
await page.mouse.wheel(0, 300);
await page.getByRole('menuitem', { name: 'Add Markdown' }).click();

View File

@ -18,6 +18,7 @@ test.describe('grid card block schema settings', () => {
page,
showMenu: async () => {
await page.getByLabel('block-item-BlockItem-general-grid-card').hover();
await page.waitForTimeout(1000);
await page.getByLabel('designer-schema-settings-BlockItem-GridCard.Designer-general').hover();
},
supportedOptions: [

View File

@ -12,6 +12,7 @@ import { oneEmptyTableWithUsers } from '../../details-multi/__e2e__/templatesOfB
const deleteButton = async (page: Page, name: string) => {
await page.getByRole('button', { name }).hover();
await page.getByRole('menuitem', { name: 'Delete' }).waitFor({ state: 'detached' });
await page.getByRole('button', { name }).getByLabel('designer-schema-settings-').hover();
await page.getByRole('menuitem', { name: 'Delete' }).click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
@ -71,6 +72,9 @@ test.describe('configure global actions', () => {
await page.getByRole('menuitem', { name: 'Refresh' }).click();
await page.mouse.move(300, 0);
await expect(page.getByRole('button', { name: 'Filter' })).toHaveCount(1);
await expect(page.getByRole('button', { name: 'Add new' })).toHaveCount(1);
await expect(page.getByRole('button', { name: 'Refresh' })).toHaveCount(1);
await expect(page.getByRole('button', { name: 'Filter' })).toBeVisible();
await expect(page.getByRole('button', { name: 'Add new' })).toBeVisible();
await expect(page.getByRole('button', { name: 'Refresh' })).toBeVisible();

View File

@ -90,7 +90,7 @@ test.describe('configure actions column', () => {
// 列宽度默认为 100
await expectActionsColumnWidth(100);
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-settings-TableV2.Column-fieldSettings:TableColumn-users').hover();
await page.getByRole('menuitem', { name: 'Column width' }).click();

View File

@ -25,6 +25,7 @@ test.describe('hide column', () => {
// 2. Sub table: hide column
await page.getByRole('button', { name: 'Role name' }).hover();
await page.getByRole('menuitem', { name: 'Hide column question-circle' }).waitFor({ state: 'detached' });
await page
.getByRole('button', { name: 'designer-schema-settings-TableV2.Column-fieldSettings:TableColumn-roles' })
.hover();

View File

@ -295,19 +295,19 @@ test.describe('configure actions column', () => {
await nocoPage.goto();
// add view & Edit & Delete & Duplicate ------------------------------------------------------------
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-initializer-TableV2.Column-TableV2.ActionColumnDesigner-').hover();
await page.getByRole('menuitem', { name: 'View' }).click();
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-initializer-TableV2.Column-TableV2.ActionColumnDesigner-').hover();
await page.getByRole('menuitem', { name: 'Edit' }).click();
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-initializer-TableV2.Column-TableV2.ActionColumnDesigner-').hover();
await page.getByRole('menuitem', { name: 'Delete' }).click();
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-initializer-TableV2.Column-TableV2.ActionColumnDesigner-').hover();
await page.getByRole('menuitem', { name: 'Duplicate' }).click();
@ -330,11 +330,11 @@ test.describe('configure actions column', () => {
await expect(page.getByLabel('action-Action.Link-Duplicate-duplicate-t_unp4scqamw9-table-0')).not.toBeVisible();
// add custom action ------------------------------------------------------------
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-initializer-TableV2.Column-TableV2.ActionColumnDesigner-').hover();
await page.getByRole('menuitem', { name: 'Popup' }).click();
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-initializer-TableV2.Column-TableV2.ActionColumnDesigner-').hover();
await page.getByRole('menuitem', { name: 'Update record' }).click();
@ -351,7 +351,7 @@ test.describe('configure actions column', () => {
// 列宽度默认为 100
await expect(page.getByRole('columnheader', { name: 'Actions', exact: true })).toHaveJSProperty('offsetWidth', 100);
await page.getByText('Actions', { exact: true }).hover();
await page.getByText('Actions', { exact: true }).hover({ force: true });
await page.getByLabel('designer-schema-settings-TableV2.Column-TableV2.ActionColumnDesigner-').hover();
await page.getByRole('menuitem', { name: 'Column width' }).click();

View File

@ -12,6 +12,7 @@ import { T3686, T4005 } from './templatesOfBug';
const deleteButton = async (page: Page, name: string) => {
await page.getByRole('button', { name }).hover();
await page.getByRole('menuitem', { name: 'Delete' }).waitFor({ state: 'detached' });
await page.getByRole('button', { name }).getByLabel('designer-schema-settings-').hover();
await page.getByRole('menuitem', { name: 'Delete' }).click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
@ -37,7 +38,8 @@ test.describe('where table block can be added', () => {
// 添加当前表关系区块
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Table right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'childAssociationField' }).waitFor({ state: 'detached' });
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'childAssociationField' }).click();
await page
.getByTestId('drawer-Action.Container-childCollection-View record')
@ -46,9 +48,10 @@ test.describe('where table block can be added', () => {
await page.getByRole('menuitem', { name: 'childTargetText' }).click();
// 添加父表关系区块
await page.getByRole('menuitem', { name: 'Table right' }).waitFor({ state: 'detached' });
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Table right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'parentAssociationField' }).click();
await page.getByLabel('schema-initializer-TableV2-table:configureColumns-parentTargetCollection').hover();
await page.getByRole('menuitem', { name: 'parentTargetText' }).click();

View File

@ -87,7 +87,7 @@ test.describe('actions schema settings', () => {
// 切换为 dialog
await page.getByRole('menuitem', { name: 'Open mode' }).click();
await page.getByRole('option', { name: 'Dialog' }).click();
await page.getByRole('option', { name: 'Dialog' }).last().click();
await page.getByRole('button', { name: 'Add new' }).click();
await expect(page.getByTestId('modal-Action.Container-general-Add record')).toBeVisible();
@ -97,7 +97,7 @@ test.describe('actions schema settings', () => {
await page.getByLabel('action-Action-Add new-create-').hover();
await page.getByRole('button', { name: 'designer-schema-settings-Action-Action.Designer-general' }).hover();
await page.getByRole('menuitem', { name: 'Open mode Dialog' }).click();
await page.getByRole('option', { name: 'Page' }).click();
await page.getByRole('option', { name: 'Page' }).last().click();
// 点击按钮后会跳转到一个页面
await page.getByLabel('action-Action-Add new-create-').click();
@ -116,7 +116,7 @@ test.describe('actions schema settings', () => {
// 创建一条数据后返回,列表中应该有这条数据
await page.getByTestId('select-single').click();
await page.getByRole('option', { name: 'option3' }).click();
await page.getByRole('option', { name: 'option3' }).last().click();
// 提交后会自动返回
await page.getByLabel('action-Action-Submit-submit-').click();
@ -136,7 +136,7 @@ test.describe('actions schema settings', () => {
// 切换为 small
await page.getByRole('menuitem', { name: 'Popup size' }).click();
await page.getByRole('option', { name: 'Small' }).click();
await page.getByRole('option', { name: 'Small' }).last().click();
await page.getByRole('button', { name: 'Add new' }).click();
const drawerWidth =
@ -148,7 +148,7 @@ test.describe('actions schema settings', () => {
// 切换为 large
await showMenu(page);
await page.getByRole('menuitem', { name: 'Popup size' }).click();
await page.getByRole('option', { name: 'Large' }).click();
await page.getByRole('option', { name: 'Large' }).last().click();
await page.getByRole('button', { name: 'Add new' }).click();
const drawerWidth2 =
@ -325,7 +325,7 @@ test.describe('actions schema settings', () => {
await page.getByText('Add property').click();
await page.getByLabel('block-item-ArrayCollapse-general').click();
await page.getByTestId('select-linkage-properties').click();
await page.getByRole('option', { name: 'Disabled' }).click();
await page.getByRole('option', { name: 'Disabled' }).last().click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
await expect(page.getByLabel('action-Action.Link-View record-view-general-table-0')).toHaveAttribute(
@ -336,10 +336,10 @@ test.describe('actions schema settings', () => {
// 设置第二组规则 --------------------------------------------------------------------------
await openLinkageRules();
await page.getByRole('button', { name: 'plus Add linkage rule' }).click();
await page.locator('.ant-collapse-header').nth(1).getByRole('img', { name: 'right' }).click();
await page.locator('.ant-collapse-header .ant-collapse-expand-icon').nth(1).click();
// 添加一个条件ID 等于 1
await page.getByRole('tabpanel').getByText('Add condition', { exact: true }).click();
await page.getByRole('tabpanel').getByText('Add condition', { exact: true }).last().click();
await page.getByRole('button', { name: 'Select field' }).click();
await page.getByRole('menuitemcheckbox', { name: 'ID', exact: true }).click();
await page.getByRole('spinbutton').click();
@ -348,7 +348,7 @@ test.describe('actions schema settings', () => {
// action: 使按钮可用
await page.getByRole('tabpanel').getByText('Add property').click();
await page.locator('.ant-select', { hasText: 'action' }).click();
await page.getByRole('option', { name: 'Enabled' }).click();
await page.getByRole('option', { name: 'Enabled' }).last().click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
// 后面的 action 会覆盖前面的
@ -533,7 +533,7 @@ test.describe('actions schema settings', () => {
await page.getByLabel('action-Action.Link-View').hover();
await page.getByLabel('designer-schema-settings-Action.Link-actionSettings:view-users').hover();
await page.getByRole('menuitem', { name: 'Open mode Drawer' }).click();
await page.getByRole('option', { name: 'Page' }).click();
await page.getByRole('option', { name: 'Page' }).last().click();
// 跳转到子页面后,其内容应该和弹窗中的内容一致
await page.getByLabel('action-Action.Link-View').click();
@ -706,7 +706,7 @@ test.describe('actions schema settings', () => {
.getByRole('button', { name: 'designer-schema-settings-Action.Link-actionSettings:view-roles' })
.hover();
await page.getByRole('menuitem', { name: 'Open mode Drawer' }).click();
await page.getByRole('option', { name: 'Page' }).click();
await page.getByRole('option', { name: 'Page' }).last().click();
// 点击按钮跳转到子页面
await page.getByLabel('action-Action.Link-View role-view-roles-table-admin').click();
@ -955,7 +955,7 @@ test.describe('actions schema settings', () => {
await page.getByLabel('action-Action.Link-Add child-').hover();
await page.getByLabel('designer-schema-settings-Action.Link-actionSettings:addChild-treeCollection').hover();
await page.getByRole('menuitem', { name: 'Open mode Drawer' }).click();
await page.getByRole('option', { name: 'Page' }).click();
await page.getByRole('option', { name: 'Page' }).last().click();
// open popup with page mode
await page.getByLabel('action-Action.Link-Add child-').click();
@ -994,7 +994,7 @@ test.describe('table column schema settings', () => {
// 1. 关系字段下拉框中应该有数据
await page.locator('.nb-sub-table-addNew').click();
await page.getByTestId('select-object-multiple').click();
await expect(page.getByRole('option', { name: record1.singleLineText, exact: true })).toBeVisible();
await expect(page.getByRole('option', { name: record1.singleLineText, exact: true }).last()).toBeVisible();
// 2. 为该关系字段设置一个数据范围后,下拉框中应该有一个匹配项
await page.getByRole('button', { name: 'manyToMany1', exact: true }).hover();
@ -1009,7 +1009,7 @@ test.describe('table column schema settings', () => {
await page.reload();
await page.locator('.nb-sub-table-addNew').click();
await page.getByTestId('select-object-multiple').click();
await expect(page.getByRole('option', { name: record1.singleLineText, exact: true })).toBeVisible();
await expect(page.getByRole('option', { name: record1.singleLineText, exact: true }).last()).toBeVisible();
});
test('fixed column', async ({ page, mockPage }) => {

View File

@ -35,7 +35,11 @@ test.describe('where filter block can be added', () => {
// 3. 与 Table、Details、List、GridCard 等区块建立连接
const connectByForm = async (name: string) => {
await page
.getByLabel('designer-schema-settings-CardItem-blockSettings:filterForm-users')
.waitFor({ state: 'hidden' });
await page.getByLabel('block-item-CardItem-users-filter-form').hover();
await page.getByRole('menuitem', { name: 'Connect data blocks right' }).waitFor({ state: 'detached' });
await page.getByLabel('designer-schema-settings-CardItem-blockSettings:filterForm-users').hover();
await page.getByRole('menuitem', { name: 'Connect data blocks right' }).hover();
await page.getByRole('menuitem', { name }).click();
@ -43,6 +47,7 @@ test.describe('where filter block can be added', () => {
const connectByCollapse = async (name: string) => {
await page.mouse.move(-500, 0);
await page.getByLabel('block-item-CardItem-users-filter-collapse').hover();
await page.getByRole('menuitem', { name: 'Connect data blocks right' }).waitFor({ state: 'detached' });
await page.getByLabel('designer-schema-settings-CardItem-blockSettings:filterCollapse-users').hover();
await page.getByRole('menuitem', { name: 'Connect data blocks right' }).hover();
await page.getByRole('menuitem', { name }).click();
@ -150,7 +155,9 @@ test.describe('where filter block can be added', () => {
}
// 2. 测试用表单筛选其它区块
await page.getByRole('menuitem', { name: 'Form right' }).waitFor({ state: 'detached' });
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Users' }).waitFor({ state: 'detached' });
await page.getByRole('menuitem', { name: 'Form right' }).hover();
await page.getByRole('menuitem', { name: 'Users' }).click();
await page.getByLabel('schema-initializer-Grid-filterForm:configureFields-users').hover();

View File

@ -46,7 +46,7 @@ test.describe('collapse schema settings', () => {
await page.getByRole('menuitem', { name: 'General' }).click();
// 点击一个选项,进行筛选
await page.getByRole('button', { name: 'right singleSelect search' }).click();
await page.getByRole('button', { name: 'collapsed singleSelect search' }).click();
await page.getByLabel('block-item-CardItem-general-filter-collapse').getByText('Option1').click();
// 注意:在本地运行时,由于运行结束后不会清空之前创建的数据,所以在第一次运行之后,下面会报错。如果遇到这种情况,可以先不管

View File

@ -126,7 +126,7 @@ test.describe('filter form', () => {
y: 10,
},
});
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data').last()).toBeVisible();
// 4. 此时点击 Reset 按钮,应该只显示一条数据,因为会把 nickname 的值重置为 {{$user.nickname}}
await page.getByLabel('action-Action-Reset-users-').click({
@ -152,6 +152,6 @@ test.describe('filter form', () => {
y: 10,
},
});
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data')).toBeVisible();
await expect(page.getByLabel('block-item-CardItem-users-table').getByText('No data').last()).toBeVisible();
});
});

View File

@ -53,7 +53,7 @@ test.describe('AssociationSelect ', () => {
.getByLabel('block-item-CollectionField-test-form-test.b-b')
.getByTestId('select-object-multiple')
.click();
await expect(page.getByText('No data')).toBeVisible();
await expect(page.getByText('No data').last()).toBeVisible();
// 2. 当给字段 a 选择一个值后,字段 b 的下拉列表中会显示符合条件的值
await page

View File

@ -34,6 +34,6 @@ test.describe('data scope of component Select', () => {
await page.getByTestId('select-object-multiple').click();
await expect(page.getByRole('option', { name: 'admin' })).toBeHidden();
await expect(page.getByRole('option', { name: 'member' })).toBeHidden();
await expect(page.getByText('No data')).toBeVisible();
await expect(page.getByText('No data').last()).toBeVisible();
});
});

View File

@ -63,9 +63,11 @@ test.describe('page schema settings', () => {
await page.getByLabel('block-item-Input-Tab name').getByRole('textbox').fill('new tab');
// 选择一个图标
await page.getByRole('button', { name: 'Select icon' }).click();
await expect(page.getByLabel('account-book').locator('svg')).toHaveCount(1);
await page.getByLabel('account-book').locator('svg').click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
await expect(page.getByText('new tab')).toBeVisible();
await expect(page.getByLabel('account-book').locator('svg')).toHaveCount(1);
await expect(page.getByLabel('account-book').locator('svg')).toBeVisible();
});
});
@ -92,10 +94,12 @@ test.describe('tabs schema settings', () => {
await page.getByLabel('block-item-Input-Tab name').getByRole('textbox').click();
await page.getByLabel('block-item-Input-Tab name').getByRole('textbox').fill('new name of page tab');
await page.getByRole('button', { name: 'Select icon' }).click();
await expect(page.getByLabel('account-book').locator('svg')).toHaveCount(1);
await page.getByLabel('account-book').locator('svg').click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
await expect(page.getByText('new name of page tab')).toBeVisible();
await expect(page.getByLabel('account-book').locator('svg')).toHaveCount(1);
await expect(page.getByLabel('account-book').locator('svg')).toBeVisible();
});

View File

@ -55,7 +55,7 @@ test.describe('add blocks to the popup', () => {
// 通过 Association records 创建一个关系区块
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Details right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'Roles' }).click();
await page.getByLabel('schema-initializer-Grid-details:configureFields-roles').hover();
await page.getByRole('menuitem', { name: 'Role UID' }).click();
@ -87,7 +87,7 @@ test.describe('add blocks to the popup', () => {
// 通过 Association records 创建关系区块
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Table right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'manyToMany' }).click();
await page.mouse.move(-300, 0);
await page
@ -135,7 +135,7 @@ test.describe('add blocks to the popup', () => {
// 通过 Association records 创建一个关系区块
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Table right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'Roles' }).click();
await page
.getByTestId('drawer-Action.Container-users-View record')

View File

@ -124,10 +124,13 @@ test.describe('where to open a popup and what can be added to it', () => {
async function addBlock(names: string[]) {
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.waitForTimeout(500);
for (let i = 0; i < names.length - 1; i++) {
const name = names[i];
await page.getByRole('menuitem', { name }).hover();
await page.waitForTimeout(500);
}
await expect(page.getByRole('menuitem', { name: names[names.length - 1] })).toHaveCount(1);
await page.getByRole('menuitem', { name: names[names.length - 1] }).click();
await page.mouse.move(300, 0);
}
@ -206,13 +209,14 @@ test.describe('where to open a popup and what can be added to it', () => {
await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover();
await page.getByRole('menuitem', { name: 'Details' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'Many to one' }).click();
await page.mouse.move(300, 0);
await expect(page.getByLabel('block-item-CardItem-users-')).toBeVisible();
await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover();
await page.getByRole('menuitem', { name: 'Table right' }).hover();
await expect(page.getByRole('menuitem', { name: 'Associated records' })).toHaveCount(1);
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'One to many' }).click();
await page.mouse.move(300, 0);
@ -272,13 +276,14 @@ test.describe('where to open a popup and what can be added to it', () => {
await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover();
await page.getByRole('menuitem', { name: 'Details' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'Many to one' }).click();
await page.mouse.move(300, 0);
await expect(page.getByLabel('block-item-CardItem-users-')).toBeVisible();
await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover();
await page.getByRole('menuitem', { name: 'Table right' }).hover();
await expect(page.getByRole('menuitem', { name: 'Associated records' })).toHaveCount(1);
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'One to many' }).click();
await page.mouse.move(300, 0);

View File

@ -44,6 +44,7 @@ test.describe('tabs schema settings', () => {
await page.getByRole('button', { name: 'OK', exact: true }).click();
await expect(page.getByText('Add new with new name')).toBeVisible();
await expect(page.getByLabel('account-book').locator('svg')).toHaveCount(1);
await expect(page.getByLabel('account-book').locator('svg')).toBeVisible();
});

View File

@ -55,6 +55,7 @@ test.describe('variable: parent object', () => {
// 1. Use "Current form" and "Parent object" variables in nested subforms and subtables
await page.getByLabel('block-item-CollectionField-collection1-form-collection1.m2m1-m2m1').hover();
await page.getByRole('menuitem', { name: 'Linkage rules' }).waitFor({ state: 'detached' });
await page
.getByLabel('designer-schema-settings-CollectionField-fieldSettings:FormItem-collection1-collection1.m2m1', {
exact: true,

View File

@ -10,7 +10,7 @@
export * from './PluginManagerLink';
import { PageHeader } from '@ant-design/pro-layout';
import { useDebounce } from 'ahooks';
import { Button, Col, Divider, Input, List, Modal, Result, Row, Space, Spin, Table, Tabs } from 'antd';
import { Button, Col, Divider, Input, List, Modal, Result, Row, Space, Spin, Table, Tabs, TableProps } from 'antd';
import _ from 'lodash';
import React, { useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
@ -145,7 +145,7 @@ function BulkEnableButton({ plugins = [] }) {
width: 300,
ellipsis: true,
},
]}
] as TableProps['columns']}
dataSource={items}
/>
</Modal>

View File

@ -18,7 +18,7 @@ export function useSetAriaLabelForDrawer(visible: boolean) {
if (visible) {
// 因为 Action 是点击后渲染内容,所以需要延迟一下
setTimeout(() => {
const wrappers = [...document.querySelectorAll('.ant-drawer-wrapper-body')];
const wrappers = [...document.querySelectorAll('.ant-drawer-body')];
const masks = [...document.querySelectorAll('.ant-drawer-mask')];
// 如果存在多个 mask最后一个 mask 为当前打开的 maskwrapper 也是同理
const currentMask = masks[masks.length - 1];

View File

@ -7,12 +7,13 @@
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import { CloseCircleFilled } from '@ant-design/icons';
import { CloseCircleFilled, DownOutlined } from '@ant-design/icons';
import { Tag, TreeSelect } from 'antd';
import type { DefaultOptionType, TreeSelectProps } from 'rc-tree-select/es/TreeSelect';
import type { TreeSelectProps } from 'rc-tree-select/es/TreeSelect';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { CollectionFieldOptions_deprecated, parseCollectionName, useApp, useCompile } from '../../..';
import { DefaultOptionType } from 'antd/es/select';
export type AppendsTreeSelectProps = {
value: string[] | string;
@ -261,6 +262,7 @@ export const AppendsTreeSelect: React.FC<TreeSelectProps & AppendsTreeSelectProp
treeData={treeData}
loadData={loadData}
{...restProps}
suffixIcon={<DownOutlined />}
/>
);
};

View File

@ -116,6 +116,7 @@ export const Cascader = withDynamicSchemaProps(
<AntdCascader
loading={loading}
{...others}
multiple={others.multiple}
options={field.dataSource}
loadData={loadData}
changeOnSelect={isBoolean(changeOnSelectLast) ? !changeOnSelectLast : changeOnSelect}

View File

@ -45,16 +45,16 @@ describe('CollectionSelect', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
>
<div
aria-label="block-item-demo title"
class="nb-block-item nb-form-item css-1elzyjx ant-nb-block-item css-dev-only-do-not-override-1gopndx"
class="nb-block-item nb-form-item css-1elzyjx ant-nb-block-item css-dev-only-do-not-override-1rquknz"
role="button"
>
<div
class="css-1yh5po ant-formily-item ant-formily-item-layout-horizontal ant-formily-item-feedback-layout-loose ant-formily-item-label-align-right ant-formily-item-control-align-left css-dev-only-do-not-override-1gopndx"
class="css-1yh5po ant-formily-item ant-formily-item-layout-horizontal ant-formily-item-feedback-layout-loose ant-formily-item-label-align-right ant-formily-item-control-align-left css-dev-only-do-not-override-1rquknz"
>
<div
class="ant-formily-item-label"
@ -84,7 +84,7 @@ describe('CollectionSelect', () => {
class="ant-formily-item-control-content-component"
>
<div
class="ant-select css-dev-only-do-not-override-1gopndx ant-select-focused ant-select-single ant-select-show-arrow ant-select-show-search"
class="ant-select ant-select-outlined css-dev-only-do-not-override-1rquknz ant-select-focused ant-select-single ant-select-show-arrow ant-select-show-search"
data-testid="select-collection"
role="button"
>
@ -98,27 +98,31 @@ describe('CollectionSelect', () => {
class="ant-select-selector"
>
<span
class="ant-select-selection-search"
class="ant-select-selection-wrap"
>
<input
aria-autocomplete="list"
aria-controls="rc_select_TEST_OR_SSR_list"
aria-expanded="false"
aria-haspopup="listbox"
aria-owns="rc_select_TEST_OR_SSR_list"
autocomplete="off"
class="ant-select-selection-search-input"
id="rc_select_TEST_OR_SSR"
role="button"
type="search"
value=""
/>
</span>
<span
class="ant-select-selection-item"
title="Users"
>
Users
<span
class="ant-select-selection-search"
>
<input
aria-autocomplete="list"
aria-controls="rc_select_TEST_OR_SSR_list"
aria-expanded="false"
aria-haspopup="listbox"
aria-owns="rc_select_TEST_OR_SSR_list"
autocomplete="off"
class="ant-select-selection-search-input"
id="rc_select_TEST_OR_SSR"
role="button"
type="search"
value=""
/>
</span>
<span
class="ant-select-selection-item"
title="Users"
>
Users
</span>
</span>
</div>
<span
@ -182,16 +186,16 @@ describe('CollectionSelect', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
>
<div
aria-label="block-item-demo title"
class="nb-block-item nb-form-item css-1elzyjx ant-nb-block-item css-dev-only-do-not-override-1gopndx"
class="nb-block-item nb-form-item css-1elzyjx ant-nb-block-item css-dev-only-do-not-override-1rquknz"
role="button"
>
<div
class="css-1yh5po ant-formily-item ant-formily-item-layout-horizontal ant-formily-item-feedback-layout-loose ant-formily-item-label-align-right ant-formily-item-control-align-left css-dev-only-do-not-override-1gopndx"
class="css-1yh5po ant-formily-item ant-formily-item-layout-horizontal ant-formily-item-feedback-layout-loose ant-formily-item-label-align-right ant-formily-item-control-align-left css-dev-only-do-not-override-1rquknz"
>
<div
class="ant-formily-item-label"
@ -222,7 +226,7 @@ describe('CollectionSelect', () => {
>
<div>
<span
class="ant-tag css-dev-only-do-not-override-1gopndx"
class="ant-tag css-dev-only-do-not-override-1rquknz"
>
Users
</span>

View File

@ -26,7 +26,7 @@ describe('ColorPicker', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
>
<div
@ -35,7 +35,8 @@ describe('ColorPicker', () => {
style="display: inline-block;"
>
<div
class="ant-color-picker-trigger css-dev-only-do-not-override-1gopndx"
aria-describedby="test-id"
class="ant-color-picker-trigger css-dev-only-do-not-override-1rquknz"
>
<div
class="ant-color-picker-color-block"
@ -90,7 +91,7 @@ describe('ColorPicker', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
>
<div
@ -99,7 +100,8 @@ describe('ColorPicker', () => {
role="button"
>
<div
class="ant-color-picker-trigger ant-color-picker-sm css-dev-only-do-not-override-1gopndx ant-color-picker-trigger-disabled"
aria-describedby="test-id"
class="ant-color-picker-trigger ant-color-picker-sm css-dev-only-do-not-override-1rquknz ant-color-picker-trigger-disabled"
>
<div
class="ant-color-picker-color-block"

View File

@ -39,6 +39,10 @@ const Input = (props: CronProps) => {
> .react-js-cron-select {
margin: 0 0.5em 0 0;
.ant-select-selection-overflow {
align-items: center;
flex: initial;
}
}
}
}

View File

@ -7,43 +7,27 @@
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import { connect, mapProps, mapReadPretty, useField, useFieldSchema, observer } from '@formily/react';
import { DatePicker as AntdDatePicker, DatePickerProps as AntdDatePickerProps, Space, Select } from 'antd';
import { RangePickerProps } from 'antd/es/date-picker';
import { connect, mapProps, mapReadPretty, useField, useFieldSchema } from '@formily/react';
import { DatePicker as AntdDatePicker, Space, Select } from 'antd';
import dayjs from 'dayjs';
import React, { useState, useEffect, useRef } from 'react';
import { getPickerFormat, getDateTimeFormat } from '@nocobase/utils/client';
import { useTranslation } from 'react-i18next';
import { ReadPretty, ReadPrettyComposed } from './ReadPretty';
import { ReadPretty } from './ReadPretty';
import { getDateRanges, mapDatePicker, mapRangePicker, inferPickerType, isMobile } from './util';
import { useCompile } from '../../';
import { useVariables, useLocalVariables, isVariable } from '../../../variables';
import { autorun } from '@formily/reactive';
import { log10 } from 'mathjs';
interface IDatePickerProps {
utc?: boolean;
}
type ComposedDatePicker = React.FC<AntdDatePickerProps> & {
ReadPretty?: ReadPrettyComposed['DatePicker'];
RangePicker?: ComposedRangePicker;
FilterWithPicker?: any;
};
type ComposedRangePicker = React.FC<RangePickerProps> & {
ReadPretty?: ReadPrettyComposed['DateRangePicker'];
};
const DatePickerContext = React.createContext<IDatePickerProps>({ utc: true });
export const useDatePickerContext = () => React.useContext(DatePickerContext);
export const DatePickerProvider = DatePickerContext.Provider;
const InternalDatePicker: ComposedDatePicker = connect(
AntdDatePicker,
mapProps(mapDatePicker()),
mapReadPretty(ReadPretty.DatePicker),
);
const InternalDatePicker = connect(AntdDatePicker, mapProps(mapDatePicker()), mapReadPretty(ReadPretty.DatePicker));
const InternalRangePicker = connect(
AntdDatePicker.RangePicker,
@ -51,7 +35,7 @@ const InternalRangePicker = connect(
mapReadPretty(ReadPretty.DateRangePicker),
);
export const DatePicker: ComposedDatePicker = (props: any) => {
export const DatePicker = (props: any) => {
const { utc = true } = useDatePickerContext();
const value = Array.isArray(props.value) ? props.value[0] : props.value;
const { parseVariable } = useVariables() || {};

View File

@ -15,6 +15,6 @@ describe('Details', () => {
it('should render correctly', () => {
render(<App1 />);
expect(screen.getByText('No data')).toBeInTheDocument();
expect(screen.getAllByText('No data')).toHaveLength(2);
});
});

View File

@ -56,7 +56,7 @@ describe('IconPicker', () => {
await userEvent.clear(searchInput);
await userEvent.type(searchInput, 'abcd');
await waitFor(() => {
expect(screen.getByText('No data')).toBeInTheDocument();
expect(screen.getAllByText('No data')).toHaveLength(2);
});
});
});

View File

@ -21,12 +21,12 @@ describe('Pagination', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
>
<div>
<ul
class="ant-pagination css-dev-only-do-not-override-1gopndx"
class="ant-pagination css-dev-only-do-not-override-1rquknz"
>
<li
aria-disabled="true"
@ -131,7 +131,7 @@ describe('Pagination', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
/>
</div>

View File

@ -14,7 +14,9 @@ import { TimePicker as AntdTimePicker } from 'antd';
import { TimePickerProps as AntdTimePickerProps, TimeRangePickerProps } from 'antd/es/time-picker';
import { ReadPretty } from './ReadPretty';
type ComposedTimePicker = React.FC<AntdTimePickerProps> & {
type ComposedTimePicker = React.ForwardRefExoticComponent<
React.PropsWithoutRef<Partial<AntdTimePickerProps>> & React.RefAttributes<unknown>
> & {
RangePicker?: React.FC<TimeRangePickerProps>;
ReadPretty?: React.FC<any>;
};

View File

@ -20,21 +20,20 @@ describe('UnixTimestamp', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
>
<div
class="ant-picker css-dev-only-do-not-override-1gopndx"
class="ant-picker ant-picker-outlined css-dev-only-do-not-override-1rquknz"
>
<div
class="ant-picker-input"
>
<input
aria-invalid="false"
autocomplete="off"
placeholder="Select date"
readonly=""
size="12"
title=""
value=""
/>
<span
@ -77,7 +76,7 @@ describe('UnixTimestamp', () => {
expect(container).toMatchInlineSnapshot(`
<div>
<div
class="css-dev-only-do-not-override-1gopndx ant-app"
class="css-dev-only-do-not-override-1rquknz ant-app"
style="height: 100%;"
>
<div

View File

@ -432,7 +432,7 @@ export function Input(props: VariableInputProps) {
role="button"
aria-label="variable-tag"
style={{ overflow: 'hidden' }}
className={cx('ant-input', { 'ant-input-disabled': disabled }, hashId)}
className={cx('ant-input ant-input-outlined', { 'ant-input-disabled': disabled }, hashId)}
>
<Tag color="blue">
{variableText.map((item, index) => {

View File

@ -453,7 +453,7 @@ export function TextArea(props) {
style={style}
className={cx(
hashId,
'ant-input',
'ant-input ant-input-outlined',
{ 'ant-input-disabled': disabled },
// NOTE: `pre-wrap` here for avoid the `&nbsp;` (\x160) issue when paste content, we need normal space (\x32).
css`

View File

@ -65,7 +65,7 @@ export const ValueDynamicComponent = (props: ValueDynamicComponentProps) => {
[mode, setValue],
);
const expressStyle = useMemo(() => {
return { minWidth: 150, maxWidth: 430, fontSize: 13 };
return { minWidth: 150, maxWidth: 430, fontSize: 13, display: 'inline-block', verticalAlign: 'middle' };
}, []);
const handleChangeOfExpress = useCallback(
(value) => {
@ -116,14 +116,14 @@ export const ValueDynamicComponent = (props: ValueDynamicComponentProps) => {
scope={compatScope}
style={textAreaStyle}
/>
<>
<div>
<span style={{ marginLeft: '.25em' }} className={'ant-formily-item-extra'}>
{t('Syntax references')}:
</span>
<a href="https://formulajs.info/functions/" target="_blank" rel="noreferrer">
Formula.js
</a>
</>
</div>
</div>
),
};

View File

@ -593,6 +593,7 @@ export const SchemaSettingsCascaderItem: FC<SchemaSettingsCascaderItemProps> = (
options={options}
style={{ textAlign: 'right', minWidth: 100 }}
{...props}
multiple={props.multiple}
/>
</div>
</SchemaSettingsItem>

View File

@ -8,7 +8,7 @@
*/
import { error } from '@nocobase/utils/client';
import { ItemType } from 'antd/es/menu/hooks/useItems';
import { ItemType } from 'antd/es/menu/interface';
import React, { createContext, useCallback, useContext, useMemo, useRef } from 'react';
type menuItemsKey =

View File

@ -16,6 +16,9 @@ import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { DropdownVisibleContext, usePlugin, useToken } from '..';
import { useCurrentAppInfo } from '../appInfo/CurrentAppInfoProvider';
import { MenuItemType, MenuDividerType } from 'antd/es/menu/interface';
type SettingsMenuItemType = MenuItemType | MenuDividerType;
/**
* @note If you want to change here, Note the Setting block on the mobile side
@ -30,7 +33,7 @@ const SettingsMenu: React.FC<{
// 是否是简体中文
const isSimplifiedChinese = data?.data?.lang === 'zh-CN';
const items = [
const items: SettingsMenuItemType[] = [
{
key: 'nocobase',
disabled: true,

View File

@ -28,7 +28,7 @@
"@types/react-dom": "^18.0.0",
"react-router-dom": "6.28.1",
"react-router": "6.28.1",
"antd": "5.12.8",
"antd": "5.24.2",
"rollup": "4.24.0"
},
"dependencies": {

View File

@ -1395,6 +1395,7 @@ export async function expectSettingsMenu({
}: ExpectSettingsMenuParams) {
await page.waitForTimeout(100);
await showMenu();
await page.waitForTimeout(2000);
for (const option of supportedOptions) {
await expect(page.getByRole('menuitem', { name: option, exact: option === 'Edit' })).toBeVisible();
}

View File

@ -134,7 +134,7 @@ test('plugin settings permissions', async ({ page, mockPage, mockRole, updateRol
await mockPage().goto();
//新建角色并切换到新角色
const roleData = await mockRole({
snippets: ['pm', 'pm.*', '!pm.auth.authenticators', '!pm.collection-manager', '!pm.collection-manager.collections'],
snippets: ['pm', 'pm.*', '!pm.data-source-manager*'],
});
await page.evaluate((roleData) => {
window.localStorage.setItem('NOCOBASE_ROLE', roleData.name);
@ -145,16 +145,15 @@ test('plugin settings permissions', async ({ page, mockPage, mockRole, updateRol
await expect(page.getByLabel('auth')).not.toBeVisible();
await expect(page.getByLabel('collection-manager')).not.toBeVisible();
await page.getByRole('link', { name: 'Users & Permissions' }).click();
await expect(page.getByRole('menuitem', { name: 'login Authentication' })).not.toBeVisible();
await expect(page.getByRole('menuitem', { name: 'database Collection manager' })).not.toBeVisible();
await expect(page.getByRole('menuitem', { name: 'Data sources' })).not.toBeVisible();
await updateRole({
name: roleData.name,
snippets: ['pm', 'pm.*', 'pm.auth.authenticators'],
snippets: ['pm', 'pm.*'],
});
await page.reload();
await page.getByTestId('plugin-settings-button').hover();
await expect(page.getByRole('link', { name: 'Users & Permissions' })).toBeVisible();
await expect(page.getByRole('link', { name: 'Authentication' })).toBeVisible();
await page.getByRole('link', { name: 'Users & Permissions' }).click();
await expect(page.getByRole('menuitem', { name: 'login Authentication' })).toBeVisible();
await expect(page.getByRole('menuitem', { name: 'Data sources' })).toBeVisible();
});

View File

@ -18,7 +18,7 @@ import {
useRequest,
} from '@nocobase/client';
import { useMemoizedFn } from 'ahooks';
import { Checkbox, message, Table } from 'antd';
import { Checkbox, message, Table, TableProps } from 'antd';
import { uniq } from 'lodash';
import React, { createContext, FC, useContext, useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
@ -310,7 +310,7 @@ export const MenuPermissions: React.FC<{
return <Checkbox checked={checked} onChange={() => handleChange(checked, schema)} />;
},
},
]}
] as TableProps['columns']}
dataSource={translateTitle(items, t, compile)}
/>
</>

View File

@ -7,8 +7,8 @@
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import { useAPIClient, useApp, useCompile, useCollectionRecord, useRequest } from '@nocobase/client';
import { Checkbox, message, Table } from 'antd';
import { useAPIClient, useApp, useCompile, useRequest } from '@nocobase/client';
import { Checkbox, message, Table, TableProps } from 'antd';
import React, { useContext, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { flatMap } from 'lodash';
@ -150,7 +150,7 @@ export const PluginPermissions: React.FC<{
return <Checkbox checked={checked} onChange={() => handleChange(checked, record)} />;
},
},
]}
] as TableProps['columns']}
dataSource={settings
.filter((v) => {
return v.isTopLevel !== false;

View File

@ -10,14 +10,8 @@
import { FormItem, FormLayout } from '@formily/antd-v5';
import { ArrayField } from '@formily/core';
import { connect, useField, useForm } from '@formily/react';
import {
useCollectionManager,
useCollectionManager_deprecated,
useCompile,
useCollectionRecord,
useRecord,
} from '@nocobase/client';
import { Checkbox, Table, Tag } from 'antd';
import { useCollectionManager_deprecated, useCompile, useRecord } from '@nocobase/client';
import { Checkbox, Table, Tag, TableProps } from 'antd';
import { isEmpty } from 'lodash';
import React, { createContext } from 'react';
import { useTranslation } from 'react-i18next';
@ -153,7 +147,7 @@ export const RolesResourcesActions = connect((props) => {
/>
),
},
]}
] as TableProps['columns']}
dataSource={availableActions?.map((item) => {
let enabled = false;
let scope = null;
@ -229,7 +223,7 @@ export const RolesResourcesActions = connect((props) => {
),
};
}),
]}
] as TableProps['columns']}
/>
</FormItem>
</FormLayout>

View File

@ -9,7 +9,7 @@
import { ArrayField } from '@formily/core';
import { connect, useField } from '@formily/react';
import { Checkbox, Select, Table, Tag } from 'antd';
import { Checkbox, Select, Table, Tag, TableProps } from 'antd';
import React from 'react';
import { useTranslation } from 'react-i18next';
import { useCompile } from '@nocobase/client';
@ -110,7 +110,7 @@ export const StrategyActions = connect((props) => {
/>
),
},
]}
] as TableProps['columns']}
dataSource={availableActions?.map((item) => {
let scope = 'all';
let enabled = false;

View File

@ -34,8 +34,9 @@ test.describe('bulk edit action setting', () => {
await page.getByLabel('block-item-BulkEditField-general-form-general.singleLineText').click();
await page.getByText('Clear').click();
await page.getByLabel('block-item-BulkEditField-general-form-general.startDatetime').click();
await page.getByRole('option', { name: 'Remains the same' }).locator('div').click();
await page.getByRole('option', { name: 'Remains the same' }).locator('div').last().click();
await page.getByLabel('block-item-BulkEditField-general-form-general.percent').click();
await expect(page.getByRole('option', { name: 'Changed to' }).locator('div')).toHaveCount(1);
await page.getByRole('option', { name: 'Changed to' }).locator('div').click();
await page.getByRole('spinbutton').click();
await page.getByRole('spinbutton').fill('0');

View File

@ -21,7 +21,7 @@ test.describe('popup of duplicate', () => {
await page.getByLabel('drawer-Action.Container-users-Duplicate-mask').click();
// click other tab, then open the bulk edit drawer, the Add block in drawer should be visible
await page.getByText('new tab').click();
await page.getByText('new tab').last().click();
await page.getByLabel('action-Action.Link-Duplicate').click();
await expect(page.getByLabel('block-item-Markdown.Void-').getByText('Duplicate markdown 2.')).toBeVisible();
});

View File

@ -10,7 +10,22 @@
import { InboxOutlined, PlusOutlined, ReloadOutlined, UploadOutlined } from '@ant-design/icons';
import { FormItem } from '@formily/antd-v5';
import { Checkbox, DatePicker, useAPIClient, useCompile } from '@nocobase/client';
import { Alert, App, Button, Card, Divider, Modal, Space, Spin, Table, Tabs, Upload, UploadProps, message } from 'antd';
import {
Alert,
App,
Button,
Card,
Divider,
Modal,
Space,
Spin,
Table,
Tabs,
Upload,
UploadProps,
message,
TableProps,
} from 'antd';
import { saveAs } from 'file-saver';
import React, { useEffect, useMemo, useState } from 'react';
import { useDuplicatorTranslation } from './locale';
@ -88,14 +103,14 @@ const LearnMore: any = (props: { collectionsData?: any; isBackup?: boolean }) =>
const handleCancel = () => {
setIsModalOpen(false);
};
const columns = [
const columns: TableProps['columns'] = [
{
title: t('Collection'),
dataIndex: 'collection',
key: 'collection',
render: (_, data) => {
const title = compile(data.title);
const name = data.name
const name = data.name;
return name === title ? title : (
<div>
{data.name}
@ -469,7 +484,7 @@ export const BackupAndRestoreList = () => {
</Space>
),
},
]}
] as TableProps['columns']}
/>
</Card>
</div>

View File

@ -33,7 +33,7 @@ test.describe('where can be added', () => {
await page.getByLabel('action-Action.Link-View-view-').first().click();
await page.getByLabel('schema-initializer-Grid-popup').hover();
await page.getByRole('menuitem', { name: 'Calendar right' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).hover();
await page.getByRole('menuitem', { name: 'Associated records' }).last().hover();
await page.getByRole('menuitem', { name: 'manyToMany' }).click();
await page.getByLabel('block-item-Select-Title field').getByTestId('select-single').click();

View File

@ -62,12 +62,12 @@ test.describe('form item & edit form', () => {
expectEditable: async () => {
// 默认情况下显示颜色选择框
await page.getByLabel('color-picker-normal').hover();
await expect(page.getByRole('button', { name: 'right Recommended', exact: true })).toBeVisible();
await expect(page.getByRole('button', { name: 'expanded Recommended', exact: true })).toBeVisible();
},
expectReadonly: async () => {
// 只读模式下,不会显示颜色弹窗
await page.getByLabel('color-picker-normal').hover();
await expect(page.getByRole('button', { name: 'right Recommended', exact: true })).not.toBeVisible();
await expect(page.getByRole('button', { name: 'expanded Recommended', exact: true })).not.toBeVisible();
},
expectEasyReading: async () => {
await expect(page.getByLabel('color-picker-read-pretty')).toBeVisible();

View File

@ -47,12 +47,12 @@ test.describe('form item & create form', () => {
expectEditable: async () => {
// 默认情况下显示颜色选择框
await page.getByLabel('color-picker-normal').hover();
await expect(page.getByRole('button', { name: 'right Recommended', exact: true })).toBeVisible();
await expect(page.getByRole('button', { name: 'expanded Recommended', exact: true })).toBeVisible();
},
expectReadonly: async () => {
// 只读模式下,不会显示颜色弹窗
await page.getByLabel('color-picker-normal').hover();
await expect(page.getByRole('button', { name: 'right Recommended', exact: true })).not.toBeVisible();
await expect(page.getByRole('button', { name: 'expanded Recommended', exact: true })).not.toBeVisible();
},
expectEasyReading: async () => {
await expect(page.getByLabel('color-picker-read-pretty')).toBeVisible();

View File

@ -42,7 +42,7 @@ export async function testEditDescription(page: Page) {
await page.getByLabel('block-item-Input.TextArea-').getByRole('textbox').click();
await page.getByLabel('block-item-Input.TextArea-').getByRole('textbox').fill('testing edit description');
await page.getByRole('button', { name: 'OK', exact: true }).click();
await expect(page.getByText('testing edit description')).toBeVisible();
await expect(page.getByText('testing edit description').last()).toBeVisible();
}
export async function testRequired(page: Page) {

View File

@ -267,7 +267,7 @@ const AddFieldAction = (props) => {
}
if (record.template === 'view') {
return {
type: 'group',
type: 'group' as const,
label: compile(option.label),
title: compile(option.label),
key: option.label,
@ -284,7 +284,7 @@ const AddFieldAction = (props) => {
};
}
return {
type: 'group',
type: 'group' as const,
label: compile(option.label),
title: compile(option.label),
key: option.label,

View File

@ -10,7 +10,7 @@
import { FormItem, FormLayout } from '@formily/antd-v5';
import { ArrayField } from '@formily/core';
import { connect, useField } from '@formily/react';
import { Checkbox, Table, Tag } from 'antd';
import { Checkbox, Table, Tag, TableProps } from 'antd';
import { isEmpty } from 'lodash';
import React, { createContext, useContext } from 'react';
import { useTranslation } from 'react-i18next';
@ -142,7 +142,7 @@ export const RolesResourcesActions = connect((props) => {
/>
),
},
]}
] as TableProps['columns']}
dataSource={availableActions?.map((item) => {
let enabled = false;
let scope = null;
@ -217,7 +217,7 @@ export const RolesResourcesActions = connect((props) => {
),
};
}),
]}
] as TableProps['columns']}
/>
</FormItem>
</FormLayout>

View File

@ -14,6 +14,7 @@ import React from 'react';
import { useTranslation } from 'react-i18next';
import { useCompile } from '@nocobase/client';
import { useAvailableActions } from './DataSourceTable';
import { TableProps } from 'antd/es/table';
const toScopes = (value) => {
if (!value) {
@ -109,7 +110,7 @@ export const StrategyActions = connect((props) => {
/>
),
},
]}
] as TableProps['columns']}
dataSource={availableActions?.map((item) => {
let scope = 'all';
let enabled = false;

View File

@ -17,16 +17,16 @@ test('BlockInitializers should add gantt block', async ({ page, mockPage, mockCo
await page.getByRole('menuitem', { name: 'Gantt right' }).click();
await page.getByRole('menuitem', { name: 'General' }).click();
await page.getByLabel('block-item-Select-Title field').click();
await page.getByRole('option', { name: 'Single line text2' }).click();
await page.getByRole('option', { name: 'Single line text2' }).last().click();
await page.getByLabel('block-item-Select-Start date field').click();
await page.getByRole('option', { name: 'Start date time2' }).click();
await page.getByLabel('block-item-Select-End date field').click();
await page.getByRole('option', { name: 'End date time2' }).click();
await page.getByRole('option', { name: 'End date time2' }).last().click();
await page.getByLabel('block-item-Select-Progress field').click();
await page.getByRole('option', { name: 'Percent2' }).click();
await page.getByRole('option', { name: 'Percent2' }).last().click();
await page.getByLabel('block-item-Select-Time scale').click();
await page.getByRole('option', { name: 'Day', exact: true }).click();
await page.getByRole('button', { name: 'OK', exact: true }).click();
await page.getByRole('option', { name: 'Day', exact: true }).last().click();
await page.getByRole('button', { name: 'OK', exact: true }).last().click();
await expect(page.getByLabel('block-item-gantt')).toBeVisible();
});

View File

@ -13,7 +13,7 @@ import { uid } from '@formily/shared';
import { SchemaComponent, useAPIClient, useCompile, useRequest } from '@nocobase/client';
import { RolesManagerContext } from '@nocobase/plugin-acl/client';
import { useMemoizedFn } from 'ahooks';
import { Checkbox, message, Table } from 'antd';
import { Checkbox, message, Table, TableProps } from 'antd';
import _, { uniq } from 'lodash';
import React, { useContext, useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
@ -258,7 +258,7 @@ export const MenuPermissions: React.FC<{
return <Checkbox checked={checked} onChange={() => handleChange(checked, schema)} />;
},
},
]}
] as TableProps['columns']}
dataSource={translateTitle(items, t, compile)}
/>
</>

View File

@ -40,6 +40,7 @@ test.describe('mobile permissions', () => {
await createNewPage('root', page);
// expect: the new page should be visible
await expect(page.getByLabel('block-item-MobileTabBar.Page').filter({ hasText: 'root' })).toHaveCount(1);
await expect(page.getByLabel('block-item-MobileTabBar.Page').filter({ hasText: 'root' })).toBeVisible();
// change the user's role to admin
@ -65,6 +66,7 @@ test.describe('mobile permissions', () => {
await page.getByRole('button', { name: 'Submit' }).click();
// expect: the new page should be visible
await expect(page.getByLabel('block-item-MobileTabBar.Page').filter({ hasText: 'admin' })).toHaveCount(1);
await expect(page.getByLabel('block-item-MobileTabBar.Page').filter({ hasText: 'admin' })).toBeVisible();
// change the user's role to admin, and then change the menu permission

View File

@ -365,7 +365,7 @@ export const TableTransfer = connect((props) => {
dataSource={addedDataSource.dataSource}
// dataSource={collections.filter((collection) => !selected.includes(collection.name))}
scroll={{ y: 'calc(100vh - 260px)' }}
onRow={({ name }) => ({
onRow={({ name }: { name: string }) => ({
onClick: () => {
const removing = findRemovable(name);
const change = () => {

View File

@ -18,7 +18,7 @@
import React, { useEffect, useCallback } from 'react';
import { reaction } from '@formily/reactive';
import { Badge, Button, ConfigProvider, Drawer, Tooltip, notification } from 'antd';
import { Badge, Button, ConfigProvider, Drawer, Tooltip, notification, theme } from 'antd';
import { CloseOutlined } from '@ant-design/icons';
import { createStyles } from 'antd-style';
import { Icon } from '@nocobase/client';
@ -51,6 +51,7 @@ const InnerInbox = (props) => {
const { styles } = useStyles();
const ctx = useCurrentUserContext();
const currUserId = ctx.data?.data?.id;
const { token } = theme.useToken();
useEffect(() => {
updateUnreadMsgsCount();
@ -88,12 +89,7 @@ const InnerInbox = (props) => {
document.removeEventListener('visibilitychange', onVisibilityChange);
};
}, []);
const DrawerTitle = <div style={{ padding: '0' }}>{t('Message')}</div>;
const CloseIcon = (
<div style={{ marginLeft: '15px' }}>
<CloseOutlined />
</div>
);
const DrawerTitle = <div style={{ padding: '0', paddingLeft: token.padding }}>{t('Message')}</div>;
useEffect(() => {
const dispose = reaction(
() => liveSSEObs.value,
@ -145,11 +141,15 @@ const InnerInbox = (props) => {
<Drawer
title={DrawerTitle}
open={inboxVisible.value}
closeIcon={CloseIcon}
width={900}
onClose={() => {
inboxVisible.value = false;
}}
styles={{
header: {
paddingLeft: token.paddingMD,
},
}}
>
<InboxContent />
</Drawer>

View File

@ -15,7 +15,6 @@
"@formily/react": "2.x",
"@formily/shared": "2.x",
"antd": "5.x",
"rc-tree-select": "5.20.0",
"react": "18.x",
"react-i18next": "^11.15.1"
},
@ -30,4 +29,4 @@
"keywords": [
"Collection fields"
]
}
}

View File

@ -8,7 +8,7 @@
*/
import { CloseOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Dropdown, Menu } from 'antd';
import { Button, Dropdown, Menu, MenuProps } from 'antd';
import classNames from 'classnames';
import type { FC, ReactNode } from 'react';
import React, { useMemo } from 'react';
@ -208,7 +208,7 @@ const ThemeSelect: FC<ThemeSelectProps> = (props) => {
<Dropdown
placement="bottomRight"
trigger={['click']}
overlay={<Menu items={dropdownItems} />}
overlay={<Menu items={dropdownItems as MenuProps['items']} />}
overlayClassName={classNames('previewer-theme-select-dropdown', hashId)}
>
<Button type="primary" shape="circle" className="previewer-theme-select-add-btn" icon={<PlusOutlined />} />

View File

@ -18,7 +18,7 @@ const initialTargetKeys = mockData.filter((item) => +item.key > 10).map((item) =
const Demo = () => {
const [targetKeys, setTargetKeys] = useState(initialTargetKeys);
const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
const [selectedKeys, setSelectedKeys] = useState<React.Key[]>([]);
const onScroll = () => {};
return (
<Transfer

View File

@ -25,7 +25,7 @@ const initialTargetKeys = mockData.filter((item) => +item.key > 10).map((item) =
const Demo = () => {
const [targetKeys, setTargetKeys] = useState(initialTargetKeys);
const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
const [selectedKeys, setSelectedKeys] = useState<React.Key[]>([]);
const onScroll = () => {};
return (
<Transfer

View File

@ -17,7 +17,7 @@ const initialTargetKeys = mockData.filter((item) => +item.key > 10).map((item) =
const Demo = () => {
const [targetKeys, setTargetKeys] = useState(initialTargetKeys);
const [selectedKeys, setSelectedKeys] = useState<string[]>(['1', '2']);
const [selectedKeys, setSelectedKeys] = useState<React.Key[]>(['1', '2']);
const onScroll = () => {};
return (
<Transfer

View File

@ -25,7 +25,7 @@ const initialTargetKeys = mockData.filter((item) => +item.key > 10).map((item) =
const Demo = () => {
const [targetKeys, setTargetKeys] = useState(initialTargetKeys);
const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
const [selectedKeys, setSelectedKeys] = useState<React.Key[]>([]);
const onScroll = () => {};
return (
<Transfer

View File

@ -605,7 +605,7 @@ const TokenContent: FC<ColorTokenContentProps> = ({
activeKey={activeGroup}
expandIcon={({ isActive }) => <CaretRightOutlined rotate={isActive ? 450 : 360} style={{ fontSize: 12 }} />}
onChange={(key) => {
onActiveGroupChange(key as string);
onActiveGroupChange(key as unknown as string);
}}
>
{category.groups.map((group, index) => {

View File

@ -30,6 +30,7 @@ import { RadioWithTooltip } from './components';
import { uid } from '@nocobase/utils/client';
import { Button, Dropdown } from 'antd';
import { PlusOutlined } from '@ant-design/icons';
import { MenuItemGroupType } from 'antd/es/menu/interface';
interface AddButtonProps {
upstream;
@ -49,7 +50,7 @@ export function AddButton(props: AddButtonProps) {
const groups = useMemo(() => {
return groupOptions
.map((group) => {
.map((group): MenuItemGroupType => {
const groupInstructions = instructionList.filter(
(item) =>
item.group === group.key &&

View File

@ -560,6 +560,7 @@ test('Collection event add data trigger, determine trigger node integer variable
`Trigger variables / Trigger data / ${triggerNodeFieldDisplayName}`,
);
await page.getByLabel('variable-button').nth(1).click();
await expect(page.getByRole('menuitemcheckbox', { name: 'Node result' })).toHaveCount(1);
await page.getByRole('menuitemcheckbox', { name: 'Node result' }).click();
await page.getByRole('menuitemcheckbox', { name: preQueryRecordNodeTitle }).click();
await page.getByRole('menuitemcheckbox', { name: triggerNodeFieldDisplayName }).click();

View File

@ -191,6 +191,8 @@ test('Collection event add data trigger, filter single line text field is trigge
await page.getByLabel('variable-button').click();
await page.getByRole('menuitemcheckbox', { name: 'Trigger variables' }).click();
await page.getByRole('menuitemcheckbox', { name: 'Trigger data' }).click();
await page.getByRole('menuitemcheckbox', { name: 'Trigger variables' }).click();
await page.getByRole('menuitemcheckbox', { name: 'Trigger data' }).click();
await page.getByRole('menuitemcheckbox', { name: triggerNodeFieldDisplayName }).click();
await expect(page.getByLabel('block-item-Filter-workflows-Filter').getByLabel('variable-tag')).toHaveText(
`Trigger variables / Trigger data / ${triggerNodeFieldDisplayName}`,

635
yarn.lock
View File

@ -210,14 +210,23 @@
dependencies:
"@ctrl/tinycolor" "^3.4.0"
"@ant-design/colors@^7.0.2":
version "7.0.2"
resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-7.0.2.tgz#c5c753a467ce8d86ba7ca4736d2c01f599bb5492"
integrity sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==
"@ant-design/colors@^7.2.0":
version "7.2.0"
resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-7.2.0.tgz#80d7325d20463f09c7839d28da630043dd5c263a"
integrity sha512-bjTObSnZ9C/O8MB/B4OUtd/q9COomuJAR2SYfhxLyHvCKn4EKwCN3e+fWGMo7H5InAyV0wL17jdE9ALrdOW/6A==
dependencies:
"@ctrl/tinycolor" "^3.6.1"
"@ant-design/fast-color" "^2.0.6"
"@ant-design/cssinjs@^1", "@ant-design/cssinjs@^1.11.1", "@ant-design/cssinjs@^1.18.2", "@ant-design/cssinjs@^1.21.1", "@ant-design/cssinjs@^1.3.1":
"@ant-design/cssinjs-utils@^1.1.3":
version "1.1.3"
resolved "https://registry.npmmirror.com/@ant-design/cssinjs-utils/-/cssinjs-utils-1.1.3.tgz#5dd79126057920a6992d57b38dd84e2c0b707977"
integrity sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==
dependencies:
"@ant-design/cssinjs" "^1.21.0"
"@babel/runtime" "^7.23.2"
rc-util "^5.38.0"
"@ant-design/cssinjs@^1", "@ant-design/cssinjs@^1.11.1", "@ant-design/cssinjs@^1.21.1", "@ant-design/cssinjs@^1.3.1":
version "1.21.1"
resolved "https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-1.21.1.tgz#7320813c5f747e0cde52c388eff5198d78d57230"
integrity sha512-tyWnlK+XH7Bumd0byfbCiZNK43HEubMoCcu9VxwsAwiHdHTgWa+tMN0/yvxa+e8EzuFP1WdUNNPclRpVtD33lg==
@ -230,6 +239,26 @@
rc-util "^5.35.0"
stylis "^4.3.3"
"@ant-design/cssinjs@^1.21.0", "@ant-design/cssinjs@^1.23.0":
version "1.23.0"
resolved "https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-1.23.0.tgz#492efba9b15d64f42a4cb5d568cab0607d0c2b16"
integrity sha512-7GAg9bD/iC9ikWatU9ym+P9ugJhi/WbsTWzcKN6T4gU0aehsprtke1UAaaSxxkjjmkJb3llet/rbUSLPgwlY4w==
dependencies:
"@babel/runtime" "^7.11.1"
"@emotion/hash" "^0.8.0"
"@emotion/unitless" "^0.7.5"
classnames "^2.3.1"
csstype "^3.1.3"
rc-util "^5.35.0"
stylis "^4.3.4"
"@ant-design/fast-color@^2.0.6":
version "2.0.6"
resolved "https://registry.npmmirror.com/@ant-design/fast-color/-/fast-color-2.0.6.tgz#ab4d4455c1542c9017d367c2fa8ca3e4215d0ba2"
integrity sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==
dependencies:
"@babel/runtime" "^7.24.7"
"@ant-design/icons-svg@^4.2.1":
version "4.3.1"
resolved "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz#4b2f65a17d4d32b526baa6414aca2117382bf8da"
@ -240,7 +269,7 @@
resolved "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz#ed2be7fb4d82ac7e1d45a54a5b06d6cecf8be6f6"
integrity sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==
"@ant-design/icons@5.x", "@ant-design/icons@^5.0.0", "@ant-design/icons@^5.1.3", "@ant-design/icons@^5.1.4", "@ant-design/icons@^5.2.5", "@ant-design/icons@^5.2.6", "@ant-design/icons@^5.6.1", "@ant-design/icons@^5.x":
"@ant-design/icons@5.x", "@ant-design/icons@^5.0.0", "@ant-design/icons@^5.1.3", "@ant-design/icons@^5.1.4", "@ant-design/icons@^5.2.5", "@ant-design/icons@^5.6.1", "@ant-design/icons@^5.x":
version "5.6.1"
resolved "https://registry.npmmirror.com/@ant-design/icons/-/icons-5.6.1.tgz#7290fcdc3d96ff3fca793ed399053cd29ad5dbd3"
integrity sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==
@ -311,10 +340,10 @@
safe-stable-stringify "^2.4.3"
swr "^2.0.0"
"@ant-design/react-slick@~1.0.2":
version "1.0.2"
resolved "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz#241bb412aeacf7ff5d50c61fa5db66773fde6b56"
integrity sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==
"@ant-design/react-slick@~1.1.2":
version "1.1.2"
resolved "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-1.1.2.tgz#f84ce3e4d0dc941f02b16f1d1d6d7a371ffbb4f1"
integrity sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==
dependencies:
"@babel/runtime" "^7.10.4"
classnames "^2.2.5"
@ -3341,7 +3370,7 @@
dependencies:
regenerator-runtime "^0.14.0"
"@babel/runtime@^7.24.8":
"@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0":
version "7.26.9"
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.9.tgz#aa4c6facc65b9cb3f87d75125ffd47781b475433"
integrity sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==
@ -4166,7 +4195,7 @@
resolved "https://registry.npmmirror.com/@csstools/utilities/-/utilities-1.0.0.tgz#42f3c213f2fb929324d465684ab9f46a0febd4bb"
integrity sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg==
"@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.6.0", "@ctrl/tinycolor@^3.6.1":
"@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.6.0":
version "3.6.1"
resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31"
integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==
@ -5142,29 +5171,10 @@
intl-messageformat "10.5.8"
tslib "^2.4.0"
"@formily/antd-v5@1.1.9", "@formily/antd-v5@1.x":
version "1.1.9"
resolved "https://registry.npmmirror.com/@formily/antd-v5/-/antd-v5-1.1.9.tgz#bdfedb1ec98f48d372cad9ab1faceff6b4e3e2f6"
integrity sha512-Gw0wx6zERLJS8GvmTizV6UPNyxNrg2svbV1Dr38jwsw+dkEef7ZANNERfEpsl2TvCEDl4W3QVFNPws5woLGl8g==
dependencies:
"@ant-design/cssinjs" "^1.3.1"
"@ant-design/icons" "^5.0.0"
"@dnd-kit/core" "^6.0.0"
"@dnd-kit/sortable" "^7.0.0"
"@formily/core" "^2.2.0"
"@formily/grid" "^2.2.0"
"@formily/json-schema" "^2.2.0"
"@formily/react" "^2.2.0"
"@formily/reactive" "^2.2.0"
"@formily/reactive-react" "^2.2.0"
"@formily/shared" "^2.2.0"
classnames "^2.2.6"
react-sticky-box "^1.0.2"
"@formily/antd-v5@^1.x":
version "1.2.2"
resolved "https://registry.npmmirror.com/@formily/antd-v5/-/antd-v5-1.2.2.tgz#7c26871bd120585f7ffcde042bc23f095fe530a0"
integrity sha512-vlEL8gme9dp9fJ70Cpo+iY3+YGZyd6uTMoAmRiGg0jug+g+CLbten3GGe7vEuxWvOiHkV4s6XkS2SpmyNMjvjA==
"@formily/antd-v5@1.2.3", "@formily/antd-v5@1.x", "@formily/antd-v5@^1.x":
version "1.2.3"
resolved "https://registry.npmmirror.com/@formily/antd-v5/-/antd-v5-1.2.3.tgz#4766bf13bec49cb74683234d043664072e8428c0"
integrity sha512-QH9x1vNyMtXGuWAkZ8z0qu7akpp8NoOLsM3onKMPAdvSEHBbZDbc6xtdODSmOuhRtzcN0rjXf29oumyidaoeFQ==
dependencies:
"@ant-design/cssinjs" "^1.3.1"
"@ant-design/icons" "^5.0.0"
@ -6972,13 +6982,20 @@
resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@rc-component/color-picker@~1.5.1":
version "1.5.1"
resolved "https://registry.npmmirror.com/@rc-component/color-picker/-/color-picker-1.5.1.tgz#5d41a10f96aab8eb020999bd397fb4419431814c"
integrity sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==
"@rc-component/async-validator@^5.0.3":
version "5.0.4"
resolved "https://registry.npmmirror.com/@rc-component/async-validator/-/async-validator-5.0.4.tgz#5291ad92f00a14b6766fc81735c234277f83e948"
integrity sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==
dependencies:
"@babel/runtime" "^7.24.4"
"@rc-component/color-picker@~2.0.1":
version "2.0.1"
resolved "https://registry.npmmirror.com/@rc-component/color-picker/-/color-picker-2.0.1.tgz#6b9b96152466a9d4475cbe72b40b594bfda164be"
integrity sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==
dependencies:
"@ant-design/fast-color" "^2.0.6"
"@babel/runtime" "^7.23.6"
"@ctrl/tinycolor" "^3.6.1"
classnames "^2.2.6"
rc-util "^5.38.1"
@ -7015,18 +7032,27 @@
classnames "^2.3.2"
rc-util "^5.24.4"
"@rc-component/tour@~1.11.1":
version "1.11.1"
resolved "https://registry.npmmirror.com/@rc-component/tour/-/tour-1.11.1.tgz#bb47af908fb6fcaf395402901a1fb505ef8fb1e6"
integrity sha512-c9Lw3/oVinj5D64Rsp8aDLOXcgdViE+hq7bj0Qoo8fTuQEh9sSpUw5OZcum943JkjeIE4hLcc5FD4a5ANtMJ4w==
"@rc-component/qrcode@~1.0.0":
version "1.0.0"
resolved "https://registry.npmmirror.com/@rc-component/qrcode/-/qrcode-1.0.0.tgz#48a8de5eb11d0e65926f1377c4b1ef4c888997f5"
integrity sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==
dependencies:
"@babel/runtime" "^7.24.7"
classnames "^2.3.2"
rc-util "^5.38.0"
"@rc-component/tour@~1.15.1":
version "1.15.1"
resolved "https://registry.npmmirror.com/@rc-component/tour/-/tour-1.15.1.tgz#9b79808254185fc19e964172d99e25e8c6800ded"
integrity sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==
dependencies:
"@babel/runtime" "^7.18.0"
"@rc-component/portal" "^1.0.0-9"
"@rc-component/trigger" "^1.3.6"
"@rc-component/trigger" "^2.0.0"
classnames "^2.3.2"
rc-util "^5.24.4"
"@rc-component/trigger@^1.17.0", "@rc-component/trigger@^1.18.0", "@rc-component/trigger@^1.18.2", "@rc-component/trigger@^1.3.6", "@rc-component/trigger@^1.5.0", "@rc-component/trigger@^1.7.0":
"@rc-component/trigger@^1.17.0", "@rc-component/trigger@^1.7.0":
version "1.18.2"
resolved "https://registry.npmmirror.com/@rc-component/trigger/-/trigger-1.18.2.tgz#dc52c4c66fa8aaccaf0710498f2429fc05454e3b"
integrity sha512-jRLYgFgjLEPq3MvS87fIhcfuywFSRDaDrYw1FLku7Cm4esszvzTbA0JBsyacAyLrK9rF3TiHFcvoEDMzoD3CTA==
@ -7038,6 +7064,18 @@
rc-resize-observer "^1.3.1"
rc-util "^5.38.0"
"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.2.6":
version "2.2.6"
resolved "https://registry.npmmirror.com/@rc-component/trigger/-/trigger-2.2.6.tgz#bfe6602313b3fadd659687746511f813299d5ea4"
integrity sha512-/9zuTnWwhQ3S3WT1T8BubuFTT46kvnXgaERR9f4BTKyn61/wpf/BvbImzYBubzJibU707FxwbKszLlHjcLiv1Q==
dependencies:
"@babel/runtime" "^7.23.2"
"@rc-component/portal" "^1.1.0"
classnames "^2.3.2"
rc-motion "^2.0.0"
rc-resize-observer "^1.3.1"
rc-util "^5.44.0"
"@rc-component/trigger@^2.1.1":
version "2.1.1"
resolved "https://registry.npmmirror.com/@rc-component/trigger/-/trigger-2.1.1.tgz#47973f1156ba63810c913eb46cbaedeba913874b"
@ -11021,58 +11059,60 @@ antd-token-previewer@^2.0.0-alpha.6:
use-debouncy "~4.3.0"
vanilla-jsoneditor "^0.16.1"
antd@5.12.8, antd@5.x, antd@^5.5.1, antd@^5.x:
version "5.12.8"
resolved "https://registry.npmmirror.com/antd/-/antd-5.12.8.tgz#94fea825e9bae535af7adf70417fa1f0dadc4c98"
integrity sha512-R2CRcB+aaVZurb3J0IKpBRWq5kW4CLcSqDF58/QBsqYdzK7XjSvM8+eF3rWVRUDbSJfGmyW7I80ywNRYpW1+vA==
antd@5.24.2, antd@5.x, antd@^5.5.1, antd@^5.x:
version "5.24.2"
resolved "https://registry.npmmirror.com/antd/-/antd-5.24.2.tgz#df28583b68279821096234920584dadea6f9b283"
integrity sha512-7Z9HsE3ZIK3sE/WuUqii3w7Gl1IJuRL21sDUTtkN95JS5KhRYP8ISv7m/HxsJ3Mn/yxgojBCgLPJ212+Dn+aPw==
dependencies:
"@ant-design/colors" "^7.0.2"
"@ant-design/cssinjs" "^1.18.2"
"@ant-design/icons" "^5.2.6"
"@ant-design/react-slick" "~1.0.2"
"@ctrl/tinycolor" "^3.6.1"
"@rc-component/color-picker" "~1.5.1"
"@ant-design/colors" "^7.2.0"
"@ant-design/cssinjs" "^1.23.0"
"@ant-design/cssinjs-utils" "^1.1.3"
"@ant-design/fast-color" "^2.0.6"
"@ant-design/icons" "^5.6.1"
"@ant-design/react-slick" "~1.1.2"
"@babel/runtime" "^7.26.0"
"@rc-component/color-picker" "~2.0.1"
"@rc-component/mutate-observer" "^1.1.0"
"@rc-component/tour" "~1.11.1"
"@rc-component/trigger" "^1.18.2"
"@rc-component/qrcode" "~1.0.0"
"@rc-component/tour" "~1.15.1"
"@rc-component/trigger" "^2.2.6"
classnames "^2.5.1"
copy-to-clipboard "^3.3.3"
dayjs "^1.11.10"
qrcode.react "^3.1.0"
rc-cascader "~3.20.0"
rc-checkbox "~3.1.0"
rc-collapse "~3.7.2"
rc-dialog "~9.3.4"
rc-drawer "~6.5.2"
rc-dropdown "~4.1.0"
rc-field-form "~1.41.0"
rc-image "~7.5.1"
rc-input "~1.3.11"
rc-input-number "~8.4.0"
rc-mentions "~2.9.1"
rc-menu "~9.12.4"
rc-motion "^2.9.0"
rc-notification "~5.3.0"
rc-pagination "~4.0.4"
rc-picker "~3.14.6"
rc-progress "~3.5.1"
rc-rate "~2.12.0"
rc-resize-observer "^1.4.0"
rc-segmented "~2.2.2"
rc-select "~14.10.0"
rc-slider "~10.5.0"
dayjs "^1.11.11"
rc-cascader "~3.33.0"
rc-checkbox "~3.5.0"
rc-collapse "~3.9.0"
rc-dialog "~9.6.0"
rc-drawer "~7.2.0"
rc-dropdown "~4.2.1"
rc-field-form "~2.7.0"
rc-image "~7.11.0"
rc-input "~1.7.2"
rc-input-number "~9.4.0"
rc-mentions "~2.19.1"
rc-menu "~9.16.1"
rc-motion "^2.9.5"
rc-notification "~5.6.3"
rc-pagination "~5.1.0"
rc-picker "~4.11.2"
rc-progress "~4.0.0"
rc-rate "~2.13.1"
rc-resize-observer "^1.4.3"
rc-segmented "~2.7.0"
rc-select "~14.16.6"
rc-slider "~11.1.8"
rc-steps "~6.0.1"
rc-switch "~4.1.0"
rc-table "~7.36.1"
rc-tabs "~12.14.1"
rc-textarea "~1.5.3"
rc-tooltip "~6.1.3"
rc-tree "~5.8.2"
rc-tree-select "~5.15.0"
rc-upload "~4.5.2"
rc-util "^5.38.1"
rc-table "~7.50.3"
rc-tabs "~15.5.1"
rc-textarea "~1.9.0"
rc-tooltip "~6.4.0"
rc-tree "~5.13.0"
rc-tree-select "~5.27.0"
rc-upload "~4.8.1"
rc-util "^5.44.4"
scroll-into-view-if-needed "^3.1.0"
throttle-debounce "^5.0.0"
throttle-debounce "^5.0.2"
any-promise@^1.0.0, any-promise@^1.3.0:
version "1.3.0"
@ -11375,11 +11415,6 @@ array-sort@^1.0.0:
get-value "^2.0.6"
kind-of "^5.0.2"
array-tree-filter@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190"
integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==
array-union@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
@ -14869,26 +14904,11 @@ dayjs-timezone-iana-plugin@=0.1.0:
resolved "https://registry.npmmirror.com/dayjs-timezone-iana-plugin/-/dayjs-timezone-iana-plugin-0.1.0.tgz#216613f6ec80106ab8be025cf5935018c901e997"
integrity sha512-xc8cIZmi4oKr2nfu41I/FDWZKa8n8YaRMxSz9MrpXTNo8c6ZsjZuIoy5RPNmLXPqntFuITWI8obB7lUA+CdzGQ==
dayjs@1.11.13, dayjs@^1.8.34:
dayjs@1.11.13, dayjs@=1.11.11, dayjs@^1.11.10, dayjs@^1.11.11, dayjs@^1.11.7, dayjs@^1.11.8, dayjs@^1.11.9, dayjs@^1.8.34, dayjs@^1.9.1, dayjs@~1.11.5, dayjs@~1.8.24:
version "1.11.13"
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
dayjs@=1.11.11:
version "1.11.11"
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e"
integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==
dayjs@^1.11.10, dayjs@^1.11.7, dayjs@^1.11.8, dayjs@^1.11.9, dayjs@^1.9.1, dayjs@~1.11.5:
version "1.11.10"
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0"
integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
dayjs@~1.8.24:
version "1.8.36"
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.8.36.tgz#be36e248467afabf8f5a86bae0de0cdceecced50"
integrity sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==
debounce-fn@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7"
@ -26656,10 +26676,14 @@ q@^1.1.2, q@^1.5.1:
resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
qrcode.react@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8"
integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==
qrcode@^1.5.4:
version "1.5.4"
resolved "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz#5cb81d86eb57c675febb08cf007fff963405da88"
integrity sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==
dependencies:
dijkstrajs "^1.0.1"
pngjs "^5.0.0"
yargs "^15.3.1"
qrcode@^1.5.4:
version "1.5.4"
@ -26834,41 +26858,40 @@ rbush@^3.0.1:
dependencies:
quickselect "^2.0.0"
rc-cascader@~3.20.0:
version "3.20.0"
resolved "https://registry.npmmirror.com/rc-cascader/-/rc-cascader-3.20.0.tgz#b270f9d84ed83417ee7309ef5e56e415f1586076"
integrity sha512-lkT9EEwOcYdjZ/jvhLoXGzprK1sijT3/Tp4BLxQQcHDZkkOzzwYQC9HgmKoJz0K7CukMfgvO9KqHeBdgE+pELw==
rc-cascader@~3.33.0:
version "3.33.1"
resolved "https://registry.npmmirror.com/rc-cascader/-/rc-cascader-3.33.1.tgz#19e01462ef5ef51b723c1f562c7b9cde4691e7ee"
integrity sha512-Kyl4EJ7ZfCBuidmZVieegcbFw0RcU5bHHSbtEdmuLYd0fYHCAiYKZ6zon7fWAVyC6rWWOOib0XKdTSf7ElC9rg==
dependencies:
"@babel/runtime" "^7.12.5"
array-tree-filter "^2.1.0"
"@babel/runtime" "^7.25.7"
classnames "^2.3.1"
rc-select "~14.10.0"
rc-tree "~5.8.1"
rc-util "^5.37.0"
rc-select "~14.16.2"
rc-tree "~5.13.0"
rc-util "^5.43.0"
rc-checkbox@~3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/rc-checkbox/-/rc-checkbox-3.1.0.tgz#6be0d9d8de2cc96fb5e37f9036a1c3e360d0a42d"
integrity sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==
rc-checkbox@~3.5.0:
version "3.5.0"
resolved "https://registry.npmmirror.com/rc-checkbox/-/rc-checkbox-3.5.0.tgz#3ae2441e3a321774d390f76539e706864fcf5ff0"
integrity sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.3.2"
rc-util "^5.25.2"
rc-collapse@~3.7.2:
version "3.7.2"
resolved "https://registry.npmmirror.com/rc-collapse/-/rc-collapse-3.7.2.tgz#d11538ff9c705a5c988d9a4dfcc051a919692fe3"
integrity sha512-ZRw6ipDyOnfLFySxAiCMdbHtb5ePAsB9mT17PA6y1mRD/W6KHRaZeb5qK/X9xDV1CqgyxMpzw0VdS74PCcUk4A==
rc-collapse@~3.9.0:
version "3.9.0"
resolved "https://registry.npmmirror.com/rc-collapse/-/rc-collapse-3.9.0.tgz#972404ce7724e1c9d1d2476543e1175404a36806"
integrity sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "2.x"
rc-motion "^2.3.4"
rc-util "^5.27.0"
rc-dialog@~9.3.4:
version "9.3.4"
resolved "https://registry.npmmirror.com/rc-dialog/-/rc-dialog-9.3.4.tgz#e0decb3d4a0dbe36524a67ed2f8fe2daa4b7b73c"
integrity sha512-975X3018GhR+EjZFbxA2Z57SX5rnu0G0/OxFgMMvZK4/hQWEm3MHaNvP4wXpxYDoJsp+xUvVW+GB9CMMCm81jA==
rc-dialog@~9.6.0:
version "9.6.0"
resolved "https://registry.npmmirror.com/rc-dialog/-/rc-dialog-9.6.0.tgz#dc7a255c6ad1cb56021c3a61c7de86ee88c7c371"
integrity sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/portal" "^1.0.0-8"
@ -26876,7 +26899,7 @@ rc-dialog@~9.3.4:
rc-motion "^2.3.0"
rc-util "^5.21.0"
rc-drawer@^6.1.2, rc-drawer@~6.5.2:
rc-drawer@^6.1.2:
version "6.5.2"
resolved "https://registry.npmmirror.com/rc-drawer/-/rc-drawer-6.5.2.tgz#49c1f279261992f6d4653d32a03b14acd436d610"
integrity sha512-QckxAnQNdhh4vtmKN0ZwDf3iakO83W9eZcSKWYYTDv4qcD2fHhRAZJJ/OE6v2ZlQ2kSqCJX5gYssF4HJFvsEPQ==
@ -26887,6 +26910,17 @@ rc-drawer@^6.1.2, rc-drawer@~6.5.2:
rc-motion "^2.6.1"
rc-util "^5.36.0"
rc-drawer@~7.2.0:
version "7.2.0"
resolved "https://registry.npmmirror.com/rc-drawer/-/rc-drawer-7.2.0.tgz#8d7de2f1fd52f3ac5a25f54afbb8ac14c62e5663"
integrity sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==
dependencies:
"@babel/runtime" "^7.23.9"
"@rc-component/portal" "^1.1.1"
classnames "^2.2.6"
rc-motion "^2.6.1"
rc-util "^5.38.1"
rc-dropdown@~4.1.0:
version "4.1.0"
resolved "https://registry.npmmirror.com/rc-dropdown/-/rc-dropdown-4.1.0.tgz#418a68939631520de80d0865d02b440eeeb4168e"
@ -26897,6 +26931,16 @@ rc-dropdown@~4.1.0:
classnames "^2.2.6"
rc-util "^5.17.0"
rc-dropdown@~4.2.0, rc-dropdown@~4.2.1:
version "4.2.1"
resolved "https://registry.npmmirror.com/rc-dropdown/-/rc-dropdown-4.2.1.tgz#44729eb2a4272e0353d31ac060da21e606accb1c"
integrity sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==
dependencies:
"@babel/runtime" "^7.18.3"
"@rc-component/trigger" "^2.0.0"
classnames "^2.2.6"
rc-util "^5.44.1"
rc-field-form@^1.34.2:
version "1.44.0"
resolved "https://registry.npmmirror.com/rc-field-form/-/rc-field-form-1.44.0.tgz#a66548790fbcee8c5432e9f2efcd1b46b090984b"
@ -26906,61 +26950,61 @@ rc-field-form@^1.34.2:
async-validator "^4.1.0"
rc-util "^5.32.2"
rc-field-form@~1.41.0:
version "1.41.0"
resolved "https://registry.npmmirror.com/rc-field-form/-/rc-field-form-1.41.0.tgz#660ed8691fdabbc1e5b1ee6b5e0e4f534b295cf0"
integrity sha512-k9AS0wmxfJfusWDP/YXWTpteDNaQ4isJx9UKxx4/e8Dub4spFeZ54/EuN2sYrMRID/+hUznPgVZeg+Gf7XSYCw==
rc-field-form@~2.7.0:
version "2.7.0"
resolved "https://registry.npmmirror.com/rc-field-form/-/rc-field-form-2.7.0.tgz#22413e793f35bfc1f35b0ec462774d7277f5a399"
integrity sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==
dependencies:
"@babel/runtime" "^7.18.0"
async-validator "^4.1.0"
"@rc-component/async-validator" "^5.0.3"
rc-util "^5.32.2"
rc-image@~7.5.1:
version "7.5.1"
resolved "https://registry.npmmirror.com/rc-image/-/rc-image-7.5.1.tgz#39a93354e14fe3e5eaafd9c9464e8fe3c6c171a0"
integrity sha512-Z9loECh92SQp0nSipc0MBuf5+yVC05H/pzC+Nf8xw1BKDFUJzUeehYBjaWlxly8VGBZJcTHYri61Fz9ng1G3Ag==
rc-image@~7.11.0:
version "7.11.0"
resolved "https://registry.npmmirror.com/rc-image/-/rc-image-7.11.0.tgz#18c77ea557a6fdbe26856c688a9aace1505c0e77"
integrity sha512-aZkTEZXqeqfPZtnSdNUnKQA0N/3MbgR7nUnZ+/4MfSFWPFHZau4p5r5ShaI0KPEMnNjv4kijSCFq/9wtJpwykw==
dependencies:
"@babel/runtime" "^7.11.2"
"@rc-component/portal" "^1.0.2"
classnames "^2.2.6"
rc-dialog "~9.3.4"
rc-dialog "~9.6.0"
rc-motion "^2.6.2"
rc-util "^5.34.1"
rc-input-number@~8.4.0:
version "8.4.0"
resolved "https://registry.npmmirror.com/rc-input-number/-/rc-input-number-8.4.0.tgz#f0d0caa2ce3a4e37f062556f9cb4c08c8c23322d"
integrity sha512-B6rziPOLRmeP7kcS5qbdC5hXvvDHYKV4vUxmahevYx2E6crS2bRi0xLDjhJ0E1HtOWo8rTmaE2EBJAkTCZOLdA==
rc-input-number@~9.4.0:
version "9.4.0"
resolved "https://registry.npmmirror.com/rc-input-number/-/rc-input-number-9.4.0.tgz#65caf04f1b6d05f47e141b1f5f484724c1f7fd5a"
integrity sha512-Tiy4DcXcFXAf9wDhN8aUAyMeCLHJUHA/VA/t7Hj8ZEx5ETvxG7MArDOSE6psbiSCo+vJPm4E3fGN710ITVn6GA==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/mini-decimal" "^1.0.1"
classnames "^2.2.5"
rc-input "~1.3.5"
rc-util "^5.28.0"
rc-input "~1.7.1"
rc-util "^5.40.1"
rc-input@~1.3.11, rc-input@~1.3.5:
version "1.3.11"
resolved "https://registry.npmmirror.com/rc-input/-/rc-input-1.3.11.tgz#08f25d6d65b418dc9001e8f36432fe323bde37fa"
integrity sha512-jhH7QP5rILanSHCGSUkdoFE5DEtpv8FIseYhuYkOZzUBeiVAiwM3q26YqZ6xBB0QFEZ/yUAgms4xW4iuub3xFQ==
rc-input@~1.7.1, rc-input@~1.7.2:
version "1.7.3"
resolved "https://registry.npmmirror.com/rc-input/-/rc-input-1.7.3.tgz#cb334a17b93ce985bceb243b4c111a5ed641e0e3"
integrity sha512-A5w4egJq8+4JzlQ55FfQjDnPvOaAbzwC3VLOAdOytyek3TboSOP9qxN+Gifup+shVXfvecBLBbWBpWxmk02SWQ==
dependencies:
"@babel/runtime" "^7.11.1"
classnames "^2.2.1"
rc-util "^5.18.1"
rc-mentions@~2.9.1:
version "2.9.1"
resolved "https://registry.npmmirror.com/rc-mentions/-/rc-mentions-2.9.1.tgz#cfe55913fd5bc156ef9814f38c1a2ceefee032ce"
integrity sha512-cZuElWr/5Ws0PXx1uxobxfYh4mqUw2FitfabR62YnWgm+WAfDyXZXqZg5DxXW+M1cgVvntrQgDDd9LrihrXzew==
rc-mentions@~2.19.1:
version "2.19.1"
resolved "https://registry.npmmirror.com/rc-mentions/-/rc-mentions-2.19.1.tgz#3fd0dd0bf3dd63afdb6a21750cbae81f3824b9c4"
integrity sha512-KK3bAc/bPFI993J3necmaMXD2reZTzytZdlTvkeBbp50IGH1BDPDvxLdHDUrpQx2b2TGaVJsn+86BvYa03kGqA==
dependencies:
"@babel/runtime" "^7.22.5"
"@rc-component/trigger" "^1.5.0"
"@rc-component/trigger" "^2.0.0"
classnames "^2.2.6"
rc-input "~1.3.5"
rc-menu "~9.12.0"
rc-textarea "~1.5.0"
rc-input "~1.7.1"
rc-menu "~9.16.0"
rc-textarea "~1.9.0"
rc-util "^5.34.1"
rc-menu@~9.12.0, rc-menu@~9.12.4:
rc-menu@~9.12.0:
version "9.12.4"
resolved "https://registry.npmmirror.com/rc-menu/-/rc-menu-9.12.4.tgz#4959b5eeb780be7ff52aac31952b35efca46b9a3"
integrity sha512-t2NcvPLV1mFJzw4F21ojOoRVofK2rWhpKPx69q2raUsiHPDP6DDevsBILEYdsIegqBeSXoWs2bf6CueBKg3BFg==
@ -26972,6 +27016,18 @@ rc-menu@~9.12.0, rc-menu@~9.12.4:
rc-overflow "^1.3.1"
rc-util "^5.27.0"
rc-menu@~9.16.0, rc-menu@~9.16.1:
version "9.16.1"
resolved "https://registry.npmmirror.com/rc-menu/-/rc-menu-9.16.1.tgz#9df1168e41d87dc7164c582173e1a1d32011899f"
integrity sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/trigger" "^2.0.0"
classnames "2.x"
rc-motion "^2.4.3"
rc-overflow "^1.3.1"
rc-util "^5.27.0"
rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.7.3, rc-motion@^2.9.0:
version "2.9.0"
resolved "https://registry.npmmirror.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710"
@ -26981,10 +27037,19 @@ rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motio
classnames "^2.2.1"
rc-util "^5.21.0"
rc-notification@~5.3.0:
version "5.3.0"
resolved "https://registry.npmmirror.com/rc-notification/-/rc-notification-5.3.0.tgz#e31c86fe2350598ade8cff383babd1befa7a94fe"
integrity sha512-WCf0uCOkZ3HGfF0p1H4Sgt7aWfipxORWTPp7o6prA3vxwtWhtug3GfpYls1pnBp4WA+j8vGIi5c2/hQRpGzPcQ==
rc-motion@^2.9.5:
version "2.9.5"
resolved "https://registry.npmmirror.com/rc-motion/-/rc-motion-2.9.5.tgz#12c6ead4fd355f94f00de9bb4f15df576d677e0c"
integrity sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==
dependencies:
"@babel/runtime" "^7.11.1"
classnames "^2.2.1"
rc-util "^5.44.0"
rc-notification@~5.6.3:
version "5.6.3"
resolved "https://registry.npmmirror.com/rc-notification/-/rc-notification-5.6.3.tgz#5aca122b7e2fb73ae4ba77238a90e6e8c9c12b8d"
integrity sha512-42szwnn8VYQoT6GnjO00i1iwqV9D1TTMvxObWsuLwgl0TsOokzhkYiufdtQBsJMFjJravS1hfDKVMHLKLcPE4g==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "2.x"
@ -27001,38 +27066,50 @@ rc-overflow@^1.3.1:
rc-resize-observer "^1.0.0"
rc-util "^5.37.0"
rc-pagination@~4.0.4:
version "4.0.4"
resolved "https://registry.npmmirror.com/rc-pagination/-/rc-pagination-4.0.4.tgz#ea401388ae86eac17ed5b41212d487f12b65b773"
integrity sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==
rc-overflow@^1.3.2:
version "1.4.1"
resolved "https://registry.npmmirror.com/rc-overflow/-/rc-overflow-1.4.1.tgz#e1bcf0375979c24cffa2d87bf83a19ded5fcdf45"
integrity sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw==
dependencies:
"@babel/runtime" "^7.11.1"
classnames "^2.2.1"
rc-resize-observer "^1.0.0"
rc-util "^5.37.0"
rc-pagination@~5.1.0:
version "5.1.0"
resolved "https://registry.npmmirror.com/rc-pagination/-/rc-pagination-5.1.0.tgz#a6e63a2c5db29e62f991282eb18a2d3ee725ba8b"
integrity sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.3.2"
rc-util "^5.38.0"
rc-picker@~3.14.6:
version "3.14.6"
resolved "https://registry.npmmirror.com/rc-picker/-/rc-picker-3.14.6.tgz#60fc34f9883272e10f6c593fa6d82e7e7a70781b"
integrity sha512-AdKKW0AqMwZsKvIpwUWDUnpuGKZVrbxVTZTNjcO+pViGkjC1EBcjMgxVe8tomOEaIHJL5Gd13vS8Rr3zzxWmag==
rc-picker@~4.11.2:
version "4.11.3"
resolved "https://registry.npmmirror.com/rc-picker/-/rc-picker-4.11.3.tgz#7e7e3ad83aa461c284b8391c697492d1c34d2cb8"
integrity sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/trigger" "^1.5.0"
"@babel/runtime" "^7.24.7"
"@rc-component/trigger" "^2.0.0"
classnames "^2.2.1"
rc-util "^5.30.0"
rc-overflow "^1.3.2"
rc-resize-observer "^1.4.0"
rc-util "^5.43.0"
rc-progress@~3.5.1:
version "3.5.1"
resolved "https://registry.npmmirror.com/rc-progress/-/rc-progress-3.5.1.tgz#a3cdfd2fe04eb5c3d43fa1c69e7dd70c73b102ae"
integrity sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==
rc-progress@~4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/rc-progress/-/rc-progress-4.0.0.tgz#5382147d9add33d3a5fbd264001373df6440e126"
integrity sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.2.6"
rc-util "^5.16.1"
rc-rate@~2.12.0:
version "2.12.0"
resolved "https://registry.npmmirror.com/rc-rate/-/rc-rate-2.12.0.tgz#0182deffed3b009cdcc61660da8746c39ed91ed5"
integrity sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==
rc-rate@~2.13.1:
version "2.13.1"
resolved "https://registry.npmmirror.com/rc-rate/-/rc-rate-2.13.1.tgz#29af7a3d4768362e9d4388f955a8b6389526b7fd"
integrity sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.2.5"
@ -27048,15 +27125,15 @@ rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1,
rc-util "^5.38.0"
resize-observer-polyfill "^1.5.1"
rc-segmented@~2.2.2:
version "2.2.2"
resolved "https://registry.npmmirror.com/rc-segmented/-/rc-segmented-2.2.2.tgz#a34f12ce6c0975fc3042ae7656bcd18e1744798e"
integrity sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==
rc-resize-observer@^1.4.3:
version "1.4.3"
resolved "https://registry.npmmirror.com/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz#4fd41fa561ba51362b5155a07c35d7c89a1ea569"
integrity sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==
dependencies:
"@babel/runtime" "^7.11.1"
"@babel/runtime" "^7.20.7"
classnames "^2.2.1"
rc-motion "^2.4.4"
rc-util "^5.17.0"
rc-util "^5.44.1"
resize-observer-polyfill "^1.5.1"
rc-segmented@~2.4.1:
version "2.4.1"
@ -27068,23 +27145,20 @@ rc-segmented@~2.4.1:
rc-motion "^2.4.4"
rc-util "^5.17.0"
rc-select@~14.10.0:
version "14.10.0"
resolved "https://registry.npmmirror.com/rc-select/-/rc-select-14.10.0.tgz#5f60e61ed7c9a83c8591616b1174a1c4ab2de0cd"
integrity sha512-TsIJTYafTTapCA32LLNpx/AD6ntepR1TG8jEVx35NiAAWCPymhUfuca8kRcUNd3WIGVMDcMKn9kkphoxEz+6Ag==
rc-segmented@~2.7.0:
version "2.7.0"
resolved "https://registry.npmmirror.com/rc-segmented/-/rc-segmented-2.7.0.tgz#f56c2044abf8f03958b3a9a9d32987f10dcc4fc4"
integrity sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/trigger" "^1.5.0"
classnames "2.x"
rc-motion "^2.0.1"
rc-overflow "^1.3.1"
rc-util "^5.16.1"
rc-virtual-list "^3.5.2"
"@babel/runtime" "^7.11.1"
classnames "^2.2.1"
rc-motion "^2.4.4"
rc-util "^5.17.0"
rc-select@~14.13.0:
version "14.13.3"
resolved "https://registry.npmmirror.com/rc-select/-/rc-select-14.13.3.tgz#51d62d68464874fdbbb976fb0462b81ab8043817"
integrity sha512-AMEfdE40RhlqahMGN3Q7OKVd1txNph0zIn2Xpvn0ZJiUYafCsqoGv+Rj6v1umgm8ZOEAJ3LefnkznAYNMMzACg==
rc-select@~14.16.2, rc-select@~14.16.6:
version "14.16.6"
resolved "https://registry.npmmirror.com/rc-select/-/rc-select-14.16.6.tgz#1c57a9aa97248b3fd9a830d9bf5df6e9d2ad2c69"
integrity sha512-YPMtRPqfZWOm2XGTbx5/YVr1HT0vn//8QS77At0Gjb3Lv+Lbut0IORJPKLWu1hQ3u4GsA0SrDzs7nI8JG7Zmyg==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/trigger" "^2.1.1"
@ -27094,14 +27168,14 @@ rc-select@~14.13.0:
rc-util "^5.16.1"
rc-virtual-list "^3.5.2"
rc-slider@~10.5.0:
version "10.5.0"
resolved "https://registry.npmmirror.com/rc-slider/-/rc-slider-10.5.0.tgz#1bd4853d114cb3403b67c485125887adb6a2a117"
integrity sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==
rc-slider@~11.1.8:
version "11.1.8"
resolved "https://registry.npmmirror.com/rc-slider/-/rc-slider-11.1.8.tgz#cf3b30dacac8f98d44f7685f733f6f7da146fc06"
integrity sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.2.5"
rc-util "^5.27.0"
rc-util "^5.36.0"
rc-steps@~6.0.1:
version "6.0.1"
@ -27121,17 +27195,17 @@ rc-switch@~4.1.0:
classnames "^2.2.1"
rc-util "^5.30.0"
rc-table@~7.36.1:
version "7.36.1"
resolved "https://registry.npmmirror.com/rc-table/-/rc-table-7.36.1.tgz#4a1a6d7e9797d553845bfa62571720cc613ecc94"
integrity sha512-9qMxEm/3Y8ukdW8I8ZvmhX0QImfNKzH0JEUlSbyaUlsYTB+/tQEbfaB8YkG4sHVZ1io4pxqK/BXoZYqebi/TIQ==
rc-table@~7.50.3:
version "7.50.3"
resolved "https://registry.npmmirror.com/rc-table/-/rc-table-7.50.3.tgz#3016084e34cd834965eb3fa6a1b30a14926b7706"
integrity sha512-Z4/zNCzjv7f/XzPRecb+vJU0DJKdsYt4YRkDzNl4G05m7JmxrKGYC2KqN1Ew6jw2zJq7cxVv3z39qyZOHMuf7A==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/context" "^1.4.0"
classnames "^2.2.5"
rc-resize-observer "^1.1.0"
rc-util "^5.37.0"
rc-virtual-list "^3.11.1"
rc-util "^5.44.3"
rc-virtual-list "^3.14.2"
rc-tabs@^12.10.0:
version "12.15.0"
@ -27146,62 +27220,52 @@ rc-tabs@^12.10.0:
rc-resize-observer "^1.0.0"
rc-util "^5.34.1"
rc-tabs@~12.14.1:
version "12.14.1"
resolved "https://registry.npmmirror.com/rc-tabs/-/rc-tabs-12.14.1.tgz#1fe4c0bd54550c216f9612b76eff7fbe750f4d2b"
integrity sha512-1xlE7JQNYxD5RwBsM7jf2xSdUrkmTSDFLFEm2gqAgnsRlOGydEzXXNAVTOT6QcgM1G/gCm+AgG+FYPUGb4Hs4g==
rc-tabs@~15.5.1:
version "15.5.1"
resolved "https://registry.npmmirror.com/rc-tabs/-/rc-tabs-15.5.1.tgz#9460ae1fd75e2a217e30e596c26425a661a2a4c6"
integrity sha512-yiWivLAjEo5d1v2xlseB2dQocsOhkoVSfo1krS8v8r+02K+TBUjSjXIf7dgyVSxp6wRIPv5pMi5hanNUlQMgUA==
dependencies:
"@babel/runtime" "^7.11.2"
classnames "2.x"
rc-dropdown "~4.1.0"
rc-menu "~9.12.0"
rc-dropdown "~4.2.0"
rc-menu "~9.16.0"
rc-motion "^2.6.2"
rc-resize-observer "^1.0.0"
rc-util "^5.34.1"
rc-textarea@~1.5.0, rc-textarea@~1.5.3:
version "1.5.3"
resolved "https://registry.npmmirror.com/rc-textarea/-/rc-textarea-1.5.3.tgz#513e837d308584996c05f540f4f58645a3a8c89a"
integrity sha512-oH682ghHx++stFNYrosPRBfwsypywrTXpaD0/5Z8MPkUOnyOQUaY9ueL9tMu6BP1LfsuYQ1VLpg5OtshViLNgA==
rc-textarea@~1.9.0:
version "1.9.0"
resolved "https://registry.npmmirror.com/rc-textarea/-/rc-textarea-1.9.0.tgz#d807194ebef90f25f0b9501cddf5e8f2968d598a"
integrity sha512-dQW/Bc/MriPBTugj2Kx9PMS5eXCCGn2cxoIaichjbNvOiARlaHdI99j4DTxLl/V8+PIfW06uFy7kjfUIDDKyxQ==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.2.1"
rc-input "~1.3.5"
rc-input "~1.7.1"
rc-resize-observer "^1.0.0"
rc-util "^5.27.0"
rc-tooltip@~6.1.3:
version "6.1.3"
resolved "https://registry.npmmirror.com/rc-tooltip/-/rc-tooltip-6.1.3.tgz#83b97004a1ab918ed4936bbf089bc754254efd1b"
integrity sha512-HMSbSs5oieZ7XddtINUddBLSVgsnlaSb3bZrzzGWjXa7/B7nNedmsuz72s7EWFEro9mNa7RyF3gOXKYqvJiTcQ==
rc-tooltip@~6.4.0:
version "6.4.0"
resolved "https://registry.npmmirror.com/rc-tooltip/-/rc-tooltip-6.4.0.tgz#e832ed0392872025e59928cfc1ad9045656467fd"
integrity sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g==
dependencies:
"@babel/runtime" "^7.11.2"
"@rc-component/trigger" "^1.18.0"
"@rc-component/trigger" "^2.0.0"
classnames "^2.3.1"
rc-util "^5.44.3"
rc-tree-select@5.20.0:
version "5.20.0"
resolved "https://registry.npmmirror.com/rc-tree-select/-/rc-tree-select-5.20.0.tgz#b8f9f5ea08c673c77131a514e1f7d2b2e516449d"
integrity sha512-zFtkHx5/6PnXSi3oSbBSFbIPiJJQdpSU3qz/joLe75URgvxmTHi989O8MtMgpwyZwrCMOJpGi6L1uy+13uzZPw==
rc-tree-select@~5.27.0:
version "5.27.0"
resolved "https://registry.npmmirror.com/rc-tree-select/-/rc-tree-select-5.27.0.tgz#3daa62972ae80846dac96bf4776d1a9dc9c7c4c6"
integrity sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww==
dependencies:
"@babel/runtime" "^7.10.1"
"@babel/runtime" "^7.25.7"
classnames "2.x"
rc-select "~14.13.0"
rc-tree "~5.8.1"
rc-util "^5.16.1"
rc-select "~14.16.2"
rc-tree "~5.13.0"
rc-util "^5.43.0"
rc-tree-select@~5.15.0:
version "5.15.0"
resolved "https://registry.npmmirror.com/rc-tree-select/-/rc-tree-select-5.15.0.tgz#8591f1dd28b043dde6fa1ca30c7acb198b160a42"
integrity sha512-YJHfdO6azFnR0/JuNBZLDptGE4/RGfVeHAafUIYcm2T3RBkL1O8aVqiHvwIyLzdK59ry0NLrByd+3TkfpRM+9Q==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "2.x"
rc-select "~14.10.0"
rc-tree "~5.8.1"
rc-util "^5.16.1"
rc-tree@^5.7.9, rc-tree@~5.8.1, rc-tree@~5.8.2:
rc-tree@^5.7.9:
version "5.8.2"
resolved "https://registry.npmmirror.com/rc-tree/-/rc-tree-5.8.2.tgz#ed3a3f7c56597bbeab3303407a9e1739bbf15621"
integrity sha512-xH/fcgLHWTLmrSuNphU8XAqV7CdaOQgm4KywlLGNoTMhDAcNR3GVNP6cZzb0GrKmIZ9yae+QLot/cAgUdPRMzg==
@ -27212,16 +27276,27 @@ rc-tree@^5.7.9, rc-tree@~5.8.1, rc-tree@~5.8.2:
rc-util "^5.16.1"
rc-virtual-list "^3.5.1"
rc-upload@~4.5.2:
version "4.5.2"
resolved "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.5.2.tgz#ea493fbaaf57d9369ee954b20e1d8bc35c818a1a"
integrity sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==
rc-tree@~5.13.0:
version "5.13.1"
resolved "https://registry.npmmirror.com/rc-tree/-/rc-tree-5.13.1.tgz#f36a33a94a1282f4b09685216c01487089748910"
integrity sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "2.x"
rc-motion "^2.0.1"
rc-util "^5.16.1"
rc-virtual-list "^3.5.1"
rc-upload@~4.8.1:
version "4.8.1"
resolved "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.8.1.tgz#ac55f2bc101b95b52a6e47f3c18f0f55b54e16d2"
integrity sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==
dependencies:
"@babel/runtime" "^7.18.3"
classnames "^2.2.5"
rc-util "^5.2.0"
rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.21.5, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.0, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1:
rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.21.5, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.0, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1:
version "5.38.1"
resolved "https://registry.npmmirror.com/rc-util/-/rc-util-5.38.1.tgz#4915503b89855f5c5cd9afd4c72a7a17568777bb"
integrity sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==
@ -27229,7 +27304,25 @@ rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.
"@babel/runtime" "^7.18.3"
react-is "^18.2.0"
rc-virtual-list@^3.11.1, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2:
rc-util@^5.40.1, rc-util@^5.43.0, rc-util@^5.44.0, rc-util@^5.44.1, rc-util@^5.44.3, rc-util@^5.44.4:
version "5.44.4"
resolved "https://registry.npmmirror.com/rc-util/-/rc-util-5.44.4.tgz#89ee9037683cca01cd60f1a6bbda761457dd6ba5"
integrity sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==
dependencies:
"@babel/runtime" "^7.18.3"
react-is "^18.2.0"
rc-virtual-list@^3.14.2:
version "3.18.3"
resolved "https://registry.npmmirror.com/rc-virtual-list/-/rc-virtual-list-3.18.3.tgz#2433851632b79a65dd1693db18d41a73f62168f0"
integrity sha512-s1/bZQY2uwnmgXYeXxJkk2cSTz1cdUPDCrxAq/y1WQM115HilFFIvLi+JVFfkD4xCq3TZxGM17FQH4NLesWfwg==
dependencies:
"@babel/runtime" "^7.20.0"
classnames "^2.2.6"
rc-resize-observer "^1.0.0"
rc-util "^5.36.0"
rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2:
version "3.11.3"
resolved "https://registry.npmmirror.com/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz#77d4e12e20c1ba314b43c0e37e118296674c5401"
integrity sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q==
@ -30181,6 +30274,11 @@ stylis@^4.3.3:
resolved "https://registry.npmmirror.com/stylis/-/stylis-4.3.4.tgz#ca5c6c4a35c4784e4e93a2a24dc4e9fa075250a4"
integrity sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==
stylis@^4.3.4:
version "4.3.6"
resolved "https://registry.npmmirror.com/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320"
integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==
sucrase@^3.35.0:
version "3.35.0"
resolved "https://registry.npmmirror.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263"
@ -30640,6 +30738,11 @@ throttle-debounce@^5.0.0:
resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933"
integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==
throttle-debounce@^5.0.2:
version "5.0.2"
resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz#ec5549d84e053f043c9fd0f2a6dd892ff84456b1"
integrity sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==
through2-filter@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"