fix(z-index): avoid obscuring the pop-up and upgrade antd to v5.12.8 (#3337)

* fix(z-index): avoid obscuring the pop-up

* test: optimize

* chore: fix build

* test: fix errors
This commit is contained in:
Zeke Zhang 2024-01-06 18:32:25 +08:00 committed by GitHub
parent 05078faf1a
commit d85aaa36e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 193 additions and 170 deletions

View File

@ -47,7 +47,8 @@
"react-router": "^6.11.2",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"nwsapi": "2.2.7"
"nwsapi": "2.2.7",
"antd": "5.12.8"
},
"config": {
"ghooks": {

View File

@ -61,11 +61,3 @@ body a:active {
.ant-btn-link:active {
color: var(--colorPrimaryTextActive);
}
/* fix https://nocobase.height.app/T-2838 */
/* fix https://nocobase.height.app/T-2797 */
/* fix https://nocobase.height.app/T-2868 */
/* antd 组件的层级有问题,有的弹窗是 1000 有的是 1200会导致弹窗被覆盖的问题。弹窗这里应该使用同一个值是比较合理的 */
.ant-modal-wrap, .ant-modal-mask, .ant-drawer {
z-index: 1150 !important;
}

View File

@ -29,7 +29,7 @@
"@nocobase/sdk": "0.18.0-alpha.9",
"@nocobase/utils": "0.18.0-alpha.9",
"ahooks": "^3.7.2",
"antd": "^5.12.2",
"antd": "^5.12.8",
"antd-style": "3.4.5",
"axios": "^0.26.1",
"classnames": "^2.3.1",

View File

@ -1,4 +1,4 @@
import { ButtonProps } from 'antd';
import type { ButtonProps } from 'antd';
import { SchemaInitializerItemType, SchemaInitializerItemTypeWithoutName, SchemaInitializerOptions } from './types';
export class SchemaInitializer<P1 = ButtonProps, P2 = {}> {

View File

@ -1,5 +1,4 @@
import { MappingAlgorithm } from 'antd-style';
import { OverrideToken } from 'antd/es/theme/interface';
import type { ThemeConfig as _ThemeConfig } from 'antd';
import { AliasToken } from 'antd/es/theme/internal';
export interface CustomToken extends AliasToken {
@ -26,11 +25,7 @@ export interface CustomToken extends AliasToken {
colorBorderSettingsHover: string;
}
export interface ThemeConfig {
export interface ThemeConfig extends _ThemeConfig {
name?: string;
token?: Partial<CustomToken>;
components?: OverrideToken;
algorithm?: MappingAlgorithm | MappingAlgorithm[];
hashed?: boolean;
inherit?: boolean;
}

View File

@ -98,9 +98,13 @@ test.describe('configure columns', () => {
await page.getByRole('menuitem', { name: 'One to one (has one)' }).first().click();
await page.getByRole('menuitem', { name: 'Many to one' }).first().click();
await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch')).toBeChecked();
await expect(page.getByRole('menuitem', { name: 'One to one (belongs to)' }).getByRole('switch')).toBeChecked();
await expect(page.getByRole('menuitem', { name: 'One to one (has one)' }).getByRole('switch')).toBeChecked();
await expect(page.getByRole('menuitem', { name: 'Many to one' }).getByRole('switch')).toBeChecked();
await expect(
page.getByRole('menuitem', { name: 'One to one (belongs to)' }).first().getByRole('switch'),
).toBeChecked();
await expect(
page.getByRole('menuitem', { name: 'One to one (has one)' }).first().getByRole('switch'),
).toBeChecked();
await expect(page.getByRole('menuitem', { name: 'Many to one' }).first().getByRole('switch')).toBeChecked();
await page.mouse.move(300, 0);
await expect(page.getByRole('button', { name: 'ID', exact: true })).toBeVisible();
await expect(page.getByRole('button', { name: 'One to one (belongs to)', exact: true })).toBeVisible();
@ -114,9 +118,13 @@ test.describe('configure columns', () => {
await page.getByRole('menuitem', { name: 'One to one (has one)' }).first().click();
await page.getByRole('menuitem', { name: 'Many to one' }).first().click();
await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch')).not.toBeChecked();
await expect(page.getByRole('menuitem', { name: 'One to one (belongs to)' }).getByRole('switch')).not.toBeChecked();
await expect(page.getByRole('menuitem', { name: 'One to one (has one)' }).getByRole('switch')).not.toBeChecked();
await expect(page.getByRole('menuitem', { name: 'Many to one' }).getByRole('switch')).not.toBeChecked();
await expect(
page.getByRole('menuitem', { name: 'One to one (belongs to)' }).first().getByRole('switch'),
).not.toBeChecked();
await expect(
page.getByRole('menuitem', { name: 'One to one (has one)' }).first().getByRole('switch'),
).not.toBeChecked();
await expect(page.getByRole('menuitem', { name: 'Many to one' }).first().getByRole('switch')).not.toBeChecked();
await page.mouse.move(300, 0);
await expect(page.getByRole('button', { name: 'ID', exact: true })).not.toBeVisible();
await expect(page.getByRole('button', { name: 'One to one (belongs to)', exact: true })).not.toBeVisible();

View File

@ -14,24 +14,6 @@ describe('ColorSelect', () => {
expect(screen.getByText('Volcano')).toBeInTheDocument();
expect(screen.getByText('Orange')).toBeInTheDocument();
expect(screen.getByText('Gold')).toBeInTheDocument();
expect(screen.getByText('Lime')).toBeInTheDocument();
expect(screen.getByText('Green')).toBeInTheDocument();
expect(screen.getByText('Cyan')).toBeInTheDocument();
expect(screen.getByText('Blue')).toBeInTheDocument();
expect(screen.getByText('Geek blue')).toBeInTheDocument();
expect(screen.getByText('Purple')).toBeInTheDocument();
expect(screen.getByText('Default')).toBeInTheDocument();
// select red
fireEvent.click(screen.getByText('Red'));
expect(screen.getAllByText('Red').length).toBe(3);

View File

@ -6,7 +6,7 @@ import { Modal, ModalProps, ThemeConfig } from 'antd';
import React, { Fragment, useLayoutEffect, useRef, useState } from 'react';
import { createPortal } from 'react-dom';
import { GlobalThemeProvider } from '../../../global-theme';
import { createPortalProvider, createPortalRoot, loading, usePrefixCls } from '../__builtins__';
import { createPortalProvider, createPortalRoot, loading, usePrefixCls, useToken } from '../__builtins__';
type FormDialogRenderer = React.ReactElement | ((form: Form) => React.ReactElement);
@ -87,27 +87,35 @@ export function FormDialog(title: any, id: any, renderer?: any, theme?: any): IF
return (
<GlobalThemeProvider theme={theme}>
<Observer>
{() => (
<Modal
{...modal}
open={open}
confirmLoading={form.submitting}
onCancel={(e) => {
if (modal?.onCancel?.(e) !== false) {
reject?.();
}
}}
onOk={async (e) => {
if (modal?.onOk?.(e) !== false) {
resolve?.();
}
}}
>
<FormProvider form={form}>
<DialogContent />
</FormProvider>
</Modal>
)}
{() => {
// eslint-disable-next-line react-hooks/rules-of-hooks
const { token } = useToken();
return (
<Modal
// fix https://nocobase.height.app/T-2797
// fix https://nocobase.height.app/T-2838
zIndex={token.zIndexPopupBase + 1000}
{...modal}
open={open}
confirmLoading={form.submitting}
onCancel={(e) => {
if (modal?.onCancel?.(e) !== false) {
reject?.();
}
}}
onOk={async (e) => {
if (modal?.onOk?.(e) !== false) {
resolve?.();
}
}}
>
<FormProvider form={form}>
<DialogContent />
</FormProvider>
</Modal>
);
}}
</Observer>
</GlobalThemeProvider>
);

View File

@ -1,7 +1,7 @@
import { SchemaInitializer, gridRowColWrap } from '@nocobase/client';
import { useCustomBulkEditFormItemInitializerFields } from './utils';
export const BulkEditFormItemInitializers = new SchemaInitializer({
export const BulkEditFormItemInitializers: SchemaInitializer = new SchemaInitializer({
name: 'BulkEditFormItemInitializers',
wrap: gridRowColWrap,
icon: 'SettingOutlined',

View File

@ -1,6 +1,6 @@
import { SchemaInitializer, gridRowColWrap } from '@nocobase/client';
export const CreateFormBulkEditBlockInitializers = new SchemaInitializer({
export const CreateFormBulkEditBlockInitializers: SchemaInitializer = new SchemaInitializer({
name: 'CreateFormBulkEditBlockInitializers',
wrap: gridRowColWrap,
title: '{{t("Add block")}}',

View File

@ -1,7 +1,7 @@
import { SchemaInitializer } from '@nocobase/client';
// 操作记录表格操作配置
export const auditLogsTableActionInitializers = new SchemaInitializer({
export const auditLogsTableActionInitializers: SchemaInitializer = new SchemaInitializer({
name: 'AuditLogsTableActionInitializers',
title: "{{t('Configure actions')}}",
icon: 'SettingOutlined',

View File

@ -44,7 +44,7 @@ const AssociatedFields = () => {
return <SchemaInitializerChildren>{schema}</SchemaInitializerChildren>;
};
export const auditLogsTableColumnInitializers = new SchemaInitializer({
export const auditLogsTableColumnInitializers: SchemaInitializer = new SchemaInitializer({
name: 'AuditLogsTableColumnInitializers',
insertPosition: 'beforeEnd',
icon: 'SettingOutlined',

View File

@ -2,7 +2,7 @@ import { SchemaInitializer, useCollection } from '@nocobase/client';
import { generateNTemplate } from '../../../locale';
// 日历的操作配置
export const CalendarActionInitializers = new SchemaInitializer({
export const CalendarActionInitializers: SchemaInitializer = new SchemaInitializer({
title: generateNTemplate('Configure actions'),
icon: 'SettingOutlined',
name: 'CalendarActionInitializers',

View File

@ -2,7 +2,7 @@ import { SchemaInitializer, useCollection } from '@nocobase/client';
import { generateNTemplate } from '../../../locale';
// 表单的操作配置
export const CalendarFormActionInitializers = new SchemaInitializer({
export const CalendarFormActionInitializers: SchemaInitializer = new SchemaInitializer({
title: generateNTemplate('Configure actions'),
name: 'CalendarFormActionInitializers',
icon: 'SettingOutlined',

View File

@ -45,7 +45,11 @@ test.describe('form item & create form', () => {
.hover();
},
expectEditable: async () => {
await expect(page.getByRole('button', { name: 'plus Upload' })).toBeVisible();
await expect(
page
.getByLabel('block-item-CollectionField-general-form-general.attachment-attachment')
.locator('.ant-upload-select'),
).toBeVisible();
},
expectReadonly: async () => {
await expect(page.getByRole('button', { name: 'plus Upload' })).not.toBeVisible();

View File

@ -1,4 +1,4 @@
import { LineChartOutlined, BarChartOutlined } from '@ant-design/icons';
import { BarChartOutlined, LineChartOutlined } from '@ant-design/icons';
import { uid } from '@formily/shared';
import {
DataBlockInitializer,
@ -11,8 +11,8 @@ import {
} from '@nocobase/client';
import React, { useContext } from 'react';
import { ChartConfigContext } from '../configure';
import { lang } from '../locale';
import { FilterBlockInitializer } from '../filter';
import { lang } from '../locale';
const ChartInitializer = () => {
const { setVisible, setCurrent } = useContext(ChartConfigContext);
@ -46,7 +46,7 @@ const ChartInitializer = () => {
);
};
export const chartInitializers = new SchemaInitializer({
export const chartInitializers: SchemaInitializer = new SchemaInitializer({
name: 'ChartInitializers',
icon: 'PlusOutlined',
title: '{{t("Add block")}}',

View File

@ -1,3 +1,4 @@
import { DownOutlined } from '@ant-design/icons';
import { useForm } from '@formily/react';
import {
Action,
@ -9,9 +10,8 @@ import {
} from '@nocobase/client';
import React, { useContext } from 'react';
import { useChartFilter } from '../hooks/filter';
import { ChartFilterContext } from './FilterProvider';
import { useChartsTranslation } from '../locale';
import { DownOutlined } from '@ant-design/icons';
import { ChartFilterContext } from './FilterProvider';
export const useChartFilterActionProps = () => {
const { filter } = useChartFilter();
@ -124,7 +124,7 @@ const ChartFilterCollapseInitializer = (props) => {
return <ActionInitializer {...props} schema={schema} />;
};
export const chartFilterActionInitializers = new SchemaInitializer({
export const chartFilterActionInitializers: SchemaInitializer = new SchemaInitializer({
name: 'ChartFilterActionInitializers',
'data-testid': 'configure-actions-button-of-chart-filter',
title: '{{t("Configure actions")}}',

View File

@ -1,3 +1,8 @@
import { css, cx } from '@emotion/css';
import { FormItem, FormLayout } from '@formily/antd-v5';
import { Field, onFieldValueChange } from '@formily/core';
import { Schema, SchemaOptionsContext, observer, useField, useFieldSchema, useForm } from '@formily/react';
import { uid } from '@formily/shared';
import {
ACLCollectionFieldProvider,
BlockItem,
@ -13,19 +18,13 @@ import {
useGlobalTheme,
useSchemaInitializerItem,
} from '@nocobase/client';
import React, { memo, useCallback, useContext, useMemo } from 'react';
import { lang, useChartsTranslation } from '../locale';
import { Schema, SchemaOptionsContext, observer, useField, useFieldSchema, useForm } from '@formily/react';
import { useMemoizedFn } from 'ahooks';
import { FormLayout, FormItem } from '@formily/antd-v5';
import { uid } from '@formily/shared';
import { useChartData, useChartFilter, useChartFilterSourceFields, useFieldComponents } from '../hooks/filter';
import { Alert, Typography } from 'antd';
import { getPropsSchemaByComponent } from './utils';
import { Field, onFieldValueChange } from '@formily/core';
import { css, cx } from '@emotion/css';
import { ConfigProvider } from 'antd';
import { Alert, ConfigProvider, Typography } from 'antd';
import React, { memo, useCallback, useContext, useMemo } from 'react';
import { ErrorBoundary } from 'react-error-boundary';
import { useChartData, useChartFilter, useChartFilterSourceFields, useFieldComponents } from '../hooks/filter';
import { lang, useChartsTranslation } from '../locale';
import { getPropsSchemaByComponent } from './utils';
const { Paragraph, Text } = Typography;
const FieldComponentProps: React.FC = observer((props) => {
@ -216,7 +215,7 @@ export const ChartFilterCustomItemInitializer: React.FC<{
return <SchemaInitializerItem {...itemConfig} {...props} onClick={handleClick} />;
});
export const chartFilterItemInitializers = new SchemaInitializer({
export const chartFilterItemInitializers: SchemaInitializer = new SchemaInitializer({
name: 'ChartFilterItemInitializers',
'data-testid': 'configure-fields-button-of-chart-filter-item',
wrap: gridRowColWrap,

View File

@ -1,7 +1,7 @@
import { useFieldSchema } from '@formily/react';
import { useCollection, SchemaInitializer } from '@nocobase/client';
import { SchemaInitializer, useCollection } from '@nocobase/client';
export const GanttActionInitializers = new SchemaInitializer({
export const GanttActionInitializers: SchemaInitializer = new SchemaInitializer({
name: 'GanttActionInitializers',
title: "{{t('Configure actions')}}",
icon: 'SettingOutlined',

View File

@ -9,6 +9,7 @@ import { cx } from '@emotion/css';
import { SchemaOptionsContext } from '@formily/react';
import {
APIClientProvider,
ApplicationContext,
CollectionCategroriesContext,
CollectionCategroriesProvider,
CollectionManagerContext,
@ -19,12 +20,11 @@ import {
Select,
collection,
useAPIClient,
useApp,
useCollectionManager,
useCompile,
useCurrentAppInfo,
useGlobalTheme,
useApp,
ApplicationContext,
} from '@nocobase/client';
import { App, Button, ConfigProvider, Layout, Spin, Switch, Tooltip } from 'antd';
import dagre from 'dagre';
@ -42,6 +42,7 @@ import { SelectCollectionsAction } from './components/SelectCollectionsAction';
import { SimpleNodeView } from './components/ViewNode';
import useStyles from './style';
import {
cleanGraphContainer,
formatData,
getChildrenCollections,
getDiffEdge,
@ -49,7 +50,6 @@ import {
getInheritCollections,
getPopupContainer,
useGCMTranslation,
cleanGraphContainer,
} from './utils';
const { drop, groupBy, last, maxBy, minBy, take, uniq } = lodash;
@ -501,7 +501,7 @@ export const GraphDrawPage = React.memo(() => {
interfaces={ctx.interfaces}
>
{/* TODO: 因为画布中的卡片是一次性注册进 Graph 的,这里的 theme 是存在闭包里的,因此当主题动态变更时,并不会触发卡片的重新渲染 */}
<ConfigProvider theme={theme}>
<ConfigProvider theme={theme as any}>
<div style={{ height: 'auto' }}>
<App>
<ApplicationContext.Provider value={app}>

View File

@ -1,20 +1,20 @@
import { MenuOutlined } from '@ant-design/icons';
import { ISchema, useFieldSchema } from '@formily/react';
import { uid } from '@formily/shared';
import {
SchemaInitializer,
SchemaInitializerOpenModeSchemaItems,
createDesignable,
useAPIClient,
useAssociatedFormItemInitializerFields,
useDesignable,
useFormItemInitializerFields,
useGetAriaLabelOfDesigner,
useSchemaInitializerRender,
} from '@nocobase/client';
import { Space } from 'antd';
import React from 'react';
import { useTranslation } from 'react-i18next';
import {
useAPIClient,
useSchemaInitializerRender,
SchemaInitializer,
createDesignable,
useDesignable,
useAssociatedFormItemInitializerFields,
useFormItemInitializerFields,
SchemaInitializerOpenModeSchemaItems,
useGetAriaLabelOfDesigner,
} from '@nocobase/client';
const gridRowColWrap = (schema: ISchema) => {
schema['x-read-pretty'] = true;
@ -60,7 +60,7 @@ export const KanbanCardDesigner = () => {
);
};
export const kanbanCardInitializers = new SchemaInitializer({
export const kanbanCardInitializers: SchemaInitializer = new SchemaInitializer({
name: 'KanbanCardInitializers',
wrap: gridRowColWrap,
useInsert() {

View File

@ -1,6 +1,6 @@
import { useCollection, SchemaInitializer } from '@nocobase/client';
import { SchemaInitializer, useCollection } from '@nocobase/client';
export const kanbanActionInitializers = new SchemaInitializer({
export const kanbanActionInitializers: SchemaInitializer = new SchemaInitializer({
name: 'KanbanActionInitializers',
title: "{{t('Configure actions')}}",
icon: 'SettingOutlined',

View File

@ -1,7 +1,7 @@
import { SchemaInitializer, useCollection } from '@nocobase/client';
// 表格操作配置
export const mapActionInitializers = new SchemaInitializer({
export const mapActionInitializers: SchemaInitializer = new SchemaInitializer({
name: 'MapActionInitializers',
title: "{{t('Configure actions')}}",
icon: 'SettingOutlined',

View File

@ -1,7 +1,7 @@
import { SchemaInitializer, gridRowColWrap } from '@nocobase/client';
import { generateNTemplate } from '../../../locale';
export const mBlockInitializers = new SchemaInitializer({
export const mBlockInitializers: SchemaInitializer = new SchemaInitializer({
name: 'MBlockInitializers',
title: '{{t("Add block")}}',
icon: 'PlusOutlined',

View File

@ -9,6 +9,7 @@ import {
css,
interfacesProperties,
useCompile,
useToken,
} from '@nocobase/client';
import { error } from '@nocobase/utils/client';
import { Button, Select } from 'antd';
@ -216,11 +217,13 @@ export function RuleConfigForm() {
const index = ArrayTable.useIndex();
const { type, options } = values.patterns[index];
const ruleType = RuleTypes[type];
const { token } = useToken();
return ruleType?.fieldset ? (
<Button
type="link"
onClick={() => {
FormDrawer(compile(ruleType.title), () => {
// fix https://nocobase.height.app/T-2868
FormDrawer({ title: compile(ruleType.title), zIndex: token.zIndexPopupBase + 1000 }, () => {
return (
<FormLayout layout="vertical">
<SchemaComponentOptions scope={schemaOptions.scope} components={schemaOptions.components}>

View File

@ -1,7 +1,7 @@
import { SchemaInitializer, gridRowColWrap } from '@nocobase/client';
import { NAMESPACE } from '../../locale';
export const snapshotBlockInitializers = new SchemaInitializer({
export const snapshotBlockInitializers: SchemaInitializer = new SchemaInitializer({
name: 'SnapshotBlockInitializers',
wrap: gridRowColWrap,
title: `{{t("Add block", { ns: "${NAMESPACE}" })}}`,

View File

@ -1,4 +1,4 @@
import type { ThemeConfig } from 'antd/es/config-provider/context';
import type { ThemeConfig } from '@nocobase/client';
import type { ReactElement } from 'react';
export type Theme = {

View File

@ -1,7 +1,7 @@
import { CaretRightOutlined, ExpandOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import type { ThemeConfig } from '@nocobase/client';
import { StablePopover } from '@nocobase/client';
import { Button, Checkbox, Collapse, ConfigProvider, Switch, Tooltip, Typography } from 'antd';
import type { ThemeConfig } from 'antd/es/config-provider/context';
import seed from 'antd/es/theme/themes/seed';
import classNames from 'classnames';
import type { FC } from 'react';

View File

@ -1,6 +1,6 @@
import type { ThemeConfig as Config } from '@nocobase/client';
import type { ReactElement } from 'react';
export type ThemeConfig = Config & { name?: string };
export type ThemeConfig = Config;
export interface ThemeItem {
id: number;

View File

@ -1,8 +1,8 @@
import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
import { FormLayout } from '@formily/antd-v5';
import { createForm } from '@formily/core';
import { FormProvider, ISchema, Schema, useFieldSchema, useForm } from '@formily/react';
import { Alert, Button, Modal, Space } from 'antd';
import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import {
@ -33,15 +33,15 @@ import {
useSchemaInitializerItem,
useSchemaOptionsContext,
} from '@nocobase/client';
import { Registry, lodash } from '@nocobase/utils/client';
import WorkflowPlugin, {
useAvailableUpstreams,
useNodeContext,
useFlowContext,
JOB_STATUS,
useAvailableUpstreams,
useFlowContext,
useNodeContext,
useTrigger,
useWorkflowVariableOptions,
} from '@nocobase/plugin-workflow/client';
import { Registry, lodash } from '@nocobase/utils/client';
import { NAMESPACE, useLang } from '../../locale';
import { DetailsBlockProvider } from './DetailsBlockProvider';
@ -122,7 +122,7 @@ function SimpleDesigner() {
);
}
export const addBlockButton = new SchemaInitializer({
export const addBlockButton: SchemaInitializer = new SchemaInitializer({
name: 'AddBlockButton',
wrap: gridRowColWrap,
title: '{{t("Add block")}}',
@ -364,7 +364,7 @@ function ActionInitializer() {
);
}
export const addActionButton = new SchemaInitializer({
export const addActionButton: SchemaInitializer = new SchemaInitializer({
name: 'AddActionButton',
title: '{{t("Configure actions")}}',
items: [

View File

@ -1,9 +1,9 @@
import React, { useContext, useMemo, useState } from 'react';
import lodash from 'lodash';
import { ArrayTable } from '@formily/antd-v5';
import { Field, createForm } from '@formily/core';
import { useField, useFieldSchema, useForm } from '@formily/react';
import lodash from 'lodash';
import {
ActionContextProvider,
@ -22,12 +22,12 @@ import {
useSchemaInitializer,
useSchemaInitializerItem,
} from '@nocobase/client';
import { merge, uid } from '@nocobase/utils/client';
import { JOB_STATUS } from '@nocobase/plugin-workflow/client';
import { merge, uid } from '@nocobase/utils/client';
import { NAMESPACE, useLang } from '../../../locale';
import { ManualFormType } from '../SchemaConfig';
import { findSchema } from '../utils';
import { NAMESPACE, useLang } from '../../../locale';
function CustomFormBlockProvider(props) {
const [fields, setCollectionFields] = useState(props.collection?.fields ?? []);
@ -320,7 +320,7 @@ const CustomItemsComponent = (props) => {
);
};
export const addCustomFormField = new SchemaInitializer({
export const addCustomFormField: SchemaInitializer = new SchemaInitializer({
name: 'AddCustomFormField',
wrap: gridRowColWrap,
insertPosition: 'beforeEnd',

117
yarn.lock
View File

@ -152,7 +152,14 @@
dependencies:
"@ctrl/tinycolor" "^3.4.0"
"@ant-design/cssinjs@^1", "@ant-design/cssinjs@^1.11.1", "@ant-design/cssinjs@^1.18.1", "@ant-design/cssinjs@^1.3.1":
"@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==
dependencies:
"@ctrl/tinycolor" "^3.6.1"
"@ant-design/cssinjs@^1", "@ant-design/cssinjs@^1.11.1", "@ant-design/cssinjs@^1.3.1":
version "1.18.1"
resolved "https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-1.18.1.tgz#ebb0aa28c751ce2203f149554d4a09b2c09174c0"
integrity sha512-1JURAPrsjK1GwpqByTq3bJ7nF7lbMKDZpehqeR2n8/IR5O58/W1U4VcOeaw5ZyTHri3tEMcom7dyP2tvxpW54g==
@ -165,6 +172,19 @@
rc-util "^5.35.0"
stylis "^4.0.13"
"@ant-design/cssinjs@^1.18.2":
version "1.18.2"
resolved "https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-1.18.2.tgz#d993a64c1d0bf51f4a9d662ddc8ed8426977b5c3"
integrity sha512-514V9rjLaFYb3v4s55/8bg2E6fb81b99s3crDZf4nSwtiDLLXs8axnIph+q2TVkY2hbJPZOn/cVsVcnLkzFy7w==
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.0.13"
"@ant-design/icons-svg@^4.2.1", "@ant-design/icons-svg@^4.3.0":
version "4.3.1"
resolved "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz#4b2f65a17d4d32b526baa6414aca2117382bf8da"
@ -2109,13 +2129,20 @@
dependencies:
regenerator-runtime "^0.14.0"
"@babel/runtime@^7", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.3", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.4", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
"@babel/runtime@^7", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.3", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.23.6"
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d"
integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==
dependencies:
regenerator-runtime "^0.14.0"
"@babel/runtime@^7.23.6":
version "7.23.7"
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.7.tgz#dd7c88deeb218a0f8bd34d5db1aa242e0f203193"
integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==
dependencies:
regenerator-runtime "^0.14.0"
"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3":
version "7.22.15"
resolved "https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
@ -4616,15 +4643,15 @@
resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@rc-component/color-picker@~1.4.1":
version "1.4.1"
resolved "https://registry.npmmirror.com/@rc-component/color-picker/-/color-picker-1.4.1.tgz#dcab0b660e9c4ed63a7582db68ed4a77c862cb93"
integrity sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==
"@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==
dependencies:
"@babel/runtime" "^7.10.1"
"@ctrl/tinycolor" "^3.6.0"
"@babel/runtime" "^7.23.6"
"@ctrl/tinycolor" "^3.6.1"
classnames "^2.2.6"
rc-util "^5.30.0"
rc-util "^5.38.1"
"@rc-component/context@^1.4.0":
version "1.4.0"
@ -7722,24 +7749,23 @@ antd-token-previewer@^2.0.0-alpha.6:
use-debouncy "~4.3.0"
vanilla-jsoneditor "^0.16.1"
antd@5.x, antd@^5.12.2, antd@^5.5.1:
version "5.12.2"
resolved "https://registry.npmmirror.com/antd/-/antd-5.12.2.tgz#85ede9a9ee810c8c77bb8952ddcf4349bdabd29a"
integrity sha512-lJ4pdBRboN2Tl5hXTqgxUjGIercB2YIK7Z8fVDushgrJ55RhywJjvcQVnBmuxcSPuWEF2Yu8SNBVAnaV4EqzWA==
antd@5.12.8, antd@5.x, antd@^5.12.8, antd@^5.5.1:
version "5.12.8"
resolved "https://registry.npmmirror.com/antd/-/antd-5.12.8.tgz#94fea825e9bae535af7adf70417fa1f0dadc4c98"
integrity sha512-R2CRcB+aaVZurb3J0IKpBRWq5kW4CLcSqDF58/QBsqYdzK7XjSvM8+eF3rWVRUDbSJfGmyW7I80ywNRYpW1+vA==
dependencies:
"@ant-design/colors" "^7.0.0"
"@ant-design/cssinjs" "^1.18.1"
"@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"
"@babel/runtime" "^7.23.4"
"@ctrl/tinycolor" "^3.6.1"
"@rc-component/color-picker" "~1.4.1"
"@rc-component/color-picker" "~1.5.1"
"@rc-component/mutate-observer" "^1.1.0"
"@rc-component/tour" "~1.11.1"
"@rc-component/trigger" "^1.18.2"
classnames "^2.3.2"
classnames "^2.5.1"
copy-to-clipboard "^3.3.3"
dayjs "^1.11.1"
dayjs "^1.11.10"
qrcode.react "^3.1.0"
rc-cascader "~3.20.0"
rc-checkbox "~3.1.0"
@ -7749,13 +7775,13 @@ antd@5.x, antd@^5.12.2, antd@^5.5.1:
rc-dropdown "~4.1.0"
rc-field-form "~1.41.0"
rc-image "~7.5.1"
rc-input "~1.3.6"
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.3"
rc-pagination "~4.0.4"
rc-picker "~3.14.6"
rc-progress "~3.5.1"
rc-rate "~2.12.0"
@ -7765,13 +7791,13 @@ antd@5.x, antd@^5.12.2, antd@^5.5.1:
rc-slider "~10.5.0"
rc-steps "~6.0.1"
rc-switch "~4.1.0"
rc-table "~7.36.0"
rc-table "~7.36.1"
rc-tabs "~12.14.1"
rc-textarea "~1.5.3"
rc-tooltip "~6.1.2"
rc-tooltip "~6.1.3"
rc-tree "~5.8.2"
rc-tree-select "~5.15.0"
rc-upload "~4.3.5"
rc-upload "~4.5.2"
rc-util "^5.38.1"
scroll-into-view-if-needed "^3.1.0"
throttle-debounce "^5.0.0"
@ -9409,6 +9435,11 @@ classnames@2.3.2, classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnam
resolved "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
classnames@^2.5.1:
version "2.5.1"
resolved "https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
clean-css@^5.2.2:
version "5.3.3"
resolved "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd"
@ -10586,7 +10617,7 @@ csstype@3.1.2:
resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
csstype@^3.0.2, csstype@^3.0.8:
csstype@^3.0.2, csstype@^3.0.8, csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
@ -10989,7 +11020,7 @@ dateformat@^3.0.0:
resolved "https://registry.npmmirror.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
dayjs@^1.11.1, dayjs@^1.11.10, dayjs@^1.11.7, dayjs@^1.11.8, dayjs@^1.11.9, dayjs@^1.9.1, dayjs@~1.11.5:
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==
@ -21044,7 +21075,7 @@ rc-input-number@~8.4.0:
rc-input "~1.3.5"
rc-util "^5.28.0"
rc-input@~1.3.5, rc-input@~1.3.6:
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==
@ -21107,10 +21138,10 @@ rc-overflow@^1.0.0, rc-overflow@^1.3.1:
rc-resize-observer "^1.0.0"
rc-util "^5.37.0"
rc-pagination@~4.0.3:
version "4.0.3"
resolved "https://registry.npmmirror.com/rc-pagination/-/rc-pagination-4.0.3.tgz#6d35314e8e24468cd2c3e8c00dab89c515a85d08"
integrity sha512-s1MNwyU83AgycikYckRdpmkN+4ZZuul0E0YdDp7dMgcjg/d2fak767ZIbLP4Q5YPPla7NDorfVFTvGQAPj6jXA==
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==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.3.2"
@ -21217,10 +21248,10 @@ rc-switch@~4.1.0:
classnames "^2.2.1"
rc-util "^5.30.0"
rc-table@~7.36.0:
version "7.36.0"
resolved "https://registry.npmmirror.com/rc-table/-/rc-table-7.36.0.tgz#95e50805392b6a723105c3eb77eefb1e14ba1ced"
integrity sha512-3xVcdCC5OLeOOhaCg+5Lps2oPreM/GWXmUXWTSX4p6vF7F76ABM4dfPpMJ9Dnf5yGRyh+8pe7FRyhRVnWw2H/w==
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==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/context" "^1.4.0"
@ -21266,10 +21297,10 @@ rc-textarea@~1.5.0, rc-textarea@~1.5.3:
rc-resize-observer "^1.0.0"
rc-util "^5.27.0"
rc-tooltip@~6.1.2:
version "6.1.2"
resolved "https://registry.npmmirror.com/rc-tooltip/-/rc-tooltip-6.1.2.tgz#33923ecfb2cf24347975093cbd0b048ab33c9567"
integrity sha512-89zwvybvCxGJu3+gGF8w5AXd4HHk6hIN7K0vZbkzjilVaEAIWPqc1fcyeUeP71n3VCcw7pTL9LyFupFbrx8gHw==
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==
dependencies:
"@babel/runtime" "^7.11.2"
"@rc-component/trigger" "^1.18.0"
@ -21330,10 +21361,10 @@ rc-trigger@^5.0.4:
rc-motion "^2.0.0"
rc-util "^5.19.2"
rc-upload@~4.3.5:
version "4.3.5"
resolved "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.3.5.tgz#12fc69b2af74d08646a104828831bcaf44076eda"
integrity sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA==
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==
dependencies:
"@babel/runtime" "^7.18.3"
classnames "^2.2.5"