From 51de34251a9c03d36da4b3d9b785b1a9166f5a19 Mon Sep 17 00:00:00 2001 From: Zeke Zhang <958414905@qq.com> Date: Thu, 14 Mar 2024 14:13:11 +0800 Subject: [PATCH] refactor(SchemaInitializers): unify naming style (#3604) * refactor(SchemaSettings): unify naming style * refactor(SchemaInitializers): unify naming stle * refactor: replace CreateFormBlockInitializers to blockInitializers:createForm * refactor: replace to blockInitializers:customizeCreateForm * refactor: replace block intializers name * refactor: replace action initializers name * refactor: replace field initializers name * style: fix hover style for column action (T-3297) * refactor: revert some codes * chore: update comment * chore: replace iframeBlockSchemaSettings to blockSettings:iframe * chore: delete pro-packages * feat: add CompatibleSchemaInitializer * test: add unit tests * chore: add @internal for CompatibleSchemaInitializer * chore: block * chore: field * chore: ations * fix: build * chore: typo * fix: fix unit tests * test: fix e2e * chore: remove igone * refactor: page:addBlock * refactor: popup:addNew:addBlock * fix: fix max call stack * refactor: popup:addRecord:addBlock * refactor: remove blockInitializers:recordForm * refactor: popup:tableSelector:addBlock * refactor: popup:view:addBlock * refactor: popup:bulkEdit:addBlock & charts:addBlock * refactor: mobilePage:addBlock * refactor: popup:snapshot:addBlock * refactor: popup:workflowManual:configureUserInterface:addBlock * fix: avoid crashing * chore: optimize * refactor: popup:common:addBlock * refactor: workflowManual:popup:configureUserInterface:addBlock * refactor: details:configureFields * refactor: form:configureFields * refactor: table:configureColumns * refactor: filterForm:configureFields * refactor: associationFilterInitializer * refactor: assignFieldValuesForm:configureFields * refactor: bulkEditForm:configureFields * refactor: auditLogsTable:configureColumns * refactor: chartFilterForm:configureFields * refactor: kanban:configureItemFields * refactor: workflowManual:customForm:configureFields * refactor: detailsWithPaging:configureActions * refactor: details:configureActions * refactor: createForm:configureActions * refactor: editForm:configureActions * refactor: gridCard:configureActions * refactor: gridCard:configureItemActions * refactor: list:configureActions * refactor: list:configureItemActions * refactor: table:configureItemActions * refactor: table:configureActions * refactor: filterForm:configureActions * refactor: subTable:configureActions * refactor: bulkEditForm:configureActions * refactor: auditLogsTable:configureItemActions * refactor: auditLogsTable:configureActions * refactor: calendar:configureActions * refactor: chartFilterForm:configureActions * refactor: gantt:configureActions * refactor: kanban:configureActions * refactor: map:configureActions * refactor: workflowManual:form:configureActions * feat: use 'createForm:configureActions' in page * feat: use 'details:configureActions' in Calendar * feat: register deleteEvent initializer in calendar plugin * fix: fix delete event action * test: fix e2e * test: fix e2e * chore: only run workflow's e2e * Revert "chore: only run workflow's e2e" This reverts commit 9e5b4af41e40e8d616007a5ab97291fb2370d88a. * fix: use isInitializersSame to fix some case --- .../CompatibleSchemaInitializer.test.ts | 66 ++ .../__tests__/SchemaInitializer.test.ts | 74 +++ .../CompatibleSchemaInitializer.tsx | 99 +++ .../application/schema-initializer/index.ts | 1 + .../src/collection-manager/demos/demo5.tsx | 4 +- .../interfaces/properties/index.ts | 2 +- .../collection-manager/interfaces/subTable.ts | 4 +- .../add-child/CreateChildInitializer.tsx | 2 +- .../add-new/CreateActionInitializer.tsx | 2 +- .../add-new/createFormBlockInitializers.tsx | 43 +- .../CustomizeAddRecordActionInitializer.tsx | 4 +- .../customizeCreateFormBlockInitializers.tsx | 44 +- .../submit/updateSubmitActionSettings.tsx | 5 +- .../PopupActionInitializer.tsx | 4 +- .../RecordFormBlockInitializers.tsx | 3 + .../UpdateActionInitializer.tsx | 2 +- .../view-edit-popup/ViewActionInitializer.tsx | 2 +- .../DetailsActionInitializers.tsx | 51 +- .../details-multi/DetailsBlockInitializer.tsx | 2 +- .../__e2e__/schemaInitializer.test.ts | 8 +- .../__e2e__/schemaSettings.test.ts | 2 +- .../ReadPrettyFormActionInitializers.tsx | 94 ++- .../ReadPrettyFormItemInitializers.tsx | 56 +- .../RecordReadPrettyFormBlockInitializer.tsx | 2 +- .../__e2e__/schemaInitializer.test.ts | 8 +- .../form/CreateFormBlockInitializer.tsx | 4 +- .../form/RecordFormBlockInitializer.tsx | 4 +- .../__e2e__/form-create/dragAndDrop.test.ts | 2 +- .../lazyLoadAssociationFields.test.ts | 2 +- .../form-create/schemaInitializer.test.ts | 14 +- .../form-create/schemaSettings.test.ts | 36 +- .../__e2e__/form-create/templatesOfBug.ts | 164 +++-- .../form-edit/schemaInitializer.test.ts | 2 +- .../form/createFormActionInitializers.tsx | 54 +- .../form/formActionInitializers.tsx | 8 +- .../data-blocks/form/formItemInitializers.tsx | 45 +- .../form/updateFormActionInitializers.tsx | 65 +- .../grid-card/GridCardActionInitializers.tsx | 90 ++- .../__e2e__/schemaInitializer.test.ts | 16 +- .../gridCardItemActionInitializers.tsx | 108 +++- .../list/ListActionInitializers.tsx | 95 ++- .../list/__e2e__/schemaInitializer.test.ts | 16 +- .../list/listItemActionInitializers.tsx | 108 +++- .../__e2e__/schemaInitializer.test.ts | 8 +- .../table-selector/__e2e__/utils.ts | 2 +- .../table/TableActionColumnInitializers.tsx | 173 +++++- .../table/TableActionInitializers.tsx | 128 +++- .../table/TableColumnInitializers.tsx | 72 ++- .../table/__e2e__/dragAndDrop.test.ts | 2 +- .../table/__e2e__/schemaInitializer.test.ts | 10 +- .../table/__e2e__/schemaSettings.test.ts | 16 +- .../table/__e2e__/templatesOfBug.ts | 30 +- .../__e2e__/schemaInitializer.test.ts | 2 +- .../filterCollapseItemInitializer.tsx | 85 ++- .../form/FilterFormActionInitializers.tsx | 43 +- .../form/__e2e__/schemaInitializer.test.ts | 8 +- .../form/__e2e__/schemaSettings.test.ts | 2 +- .../form/filterFormItemInitializers.tsx | 42 +- .../__e2e__/schemaInitializer.test.ts | 2 +- .../dialog/__e2e__/schemaInitializer.test.ts | 22 +- .../modules/dialog/__e2e__/templatesOfBug.ts | 48 +- .../Picker/TableSelectorInitializers.tsx | 91 ++- .../client/src/modules/menu/PageMenuItem.tsx | 4 +- .../src/modules/menu/menuItemInitializer.tsx | 26 +- .../src/modules/page/BlockInitializers.tsx | 80 ++- .../page/__e2e__/schemaSettings.test.ts | 4 +- .../antd/action/Action.Designer.tsx | 10 +- .../antd/action/demos/demo6.tsx | 4 +- .../antd/association-field/schema.ts | 12 +- .../ActionBarAssociationFilterAction.tsx | 5 + .../AssociationFilter.Initializer.tsx | 5 +- .../association-filter/AssociationFilter.tsx | 2 + .../antd/form-item/FormItem.Settings.tsx | 3 + .../antd/form-v2/Form.Settings.tsx | 9 + .../antd/form/Form.Settings.tsx | 3 + .../antd/grid/demos/demo3.tsx | 4 +- .../antd/menu/Menu.Designer.tsx | 2 +- .../antd/page/Page.Settings.tsx | 3 + .../src/schema-component/antd/page/Page.tsx | 2 +- .../antd/page/PageTab.Settings.tsx | 3 + .../buttons/CustomFormItemInitializers.tsx | 31 +- .../buttons/RecordBlockInitializers.tsx | 98 ++- .../buttons/SubTableActionInitializers.tsx | 46 +- .../buttons/TabPaneInitializers.tsx | 17 +- .../src/schema-initializer/demos/basic.tsx | 6 +- .../schema-initializer/demos/build-type.tsx | 4 +- .../demos/custom-button.tsx | 4 +- .../demos/custom-items-component.tsx | 4 +- .../demos/dynamic-visible-children.tsx | 4 +- .../demos/insert-schema-action.tsx | 4 +- .../demos/insert-schema-basic.tsx | 4 +- .../demos/insert-schema-form-item.tsx | 4 +- .../schema-initializer/demos/nested-items.tsx | 6 +- .../client/src/schema-initializer/index.ts | 125 +++- .../RecordAssociationFormBlockInitializer.tsx | 4 +- ...dPrettyAssociationFormBlockInitializer.tsx | 2 +- .../items/SelectActionInitializer.tsx | 4 +- .../items/SubmitActionInitializer.tsx | 2 +- .../items/TableActionColumnInitializer.tsx | 2 +- .../client/src/schema-initializer/utils.ts | 40 +- .../src/schema-settings/demos/demo3.tsx | 4 +- packages/core/test/src/e2e/e2eUtils.ts | 4 +- packages/core/test/src/e2e/templatesOfPage.ts | 562 +++++++++--------- .../plugin-acl/src/client/__e2e__/utils.ts | 40 +- .../src/client/BulkEditActionInitializer.tsx | 2 +- .../src/client/BulkEditBlockInitializers.tsx | 43 +- .../client/BulkEditFormActionInitializers.tsx | 34 +- .../client/BulkEditFormItemInitializers.tsx | 46 +- .../CreateFormBulkEditBlockInitializer.tsx | 6 +- .../client/__e2e__/schemaInitailizer.test.ts | 4 +- .../src/client/__e2e__/schemaSettings.test.ts | 6 +- .../src/client/__e2e__/utils.ts | 20 +- .../src/client/index.tsx | 28 +- .../client/__e2e__/schemaInitailizer.test.ts | 4 +- .../src/client/__e2e__/schemaSettings.test.ts | 2 +- .../src/client/__e2e__/utils.ts | 18 +- .../src/client/index.tsx | 6 +- .../src/client/DuplicateActionInitializer.tsx | 2 +- .../client/__e2e__/schemaInitailizer.test.ts | 2 +- .../src/client/__e2e__/schemaSettings.test.ts | 6 +- .../src/client/__e2e__/utils.ts | 20 +- .../src/client/index.ts | 6 +- .../client/__e2e__/schemaInitailizer.test.ts | 4 +- .../src/client/__e2e__/utils.ts | 36 +- .../plugin-action-print/src/client/index.tsx | 6 +- .../src/client/AuditLogsBlockInitializer.tsx | 6 +- .../AuditLogsViewActionInitializer.tsx | 2 +- .../src/client/deplicated/AuditLogs.tsx | 2 +- .../plugin-audit-logs/src/client/index.ts | 22 +- .../AuditLogsTableActionColumnInitializer.tsx | 2 +- ...AuditLogsTableActionColumnInitializers.tsx | 78 ++- .../AuditLogsTableActionInitializers.tsx | 46 +- .../AuditLogsTableColumnInitializers.tsx | 54 +- .../src/client/calendar/DeleteEvent.tsx | 2 +- .../plugin-calendar/src/client/index.tsx | 17 +- .../CalendarActionInitializers.tsx | 97 ++- .../CalendarFormActionInitializers.tsx | 39 +- .../src/client/schema-initializer/utils.ts | 8 +- .../plugin-charts/src/client/index.tsx | 4 +- .../attachment/schemaInitializer.test.ts | 6 +- .../belongsTo/schemaInitializer.test.ts | 6 +- .../fields/checkbox/schemaInitializer.test.ts | 6 +- .../collection/schemaInitializer.test.ts | 6 +- .../fields/color/schemaInitializer.test.ts | 6 +- .../createdAt/schemaInitializer.test.ts | 6 +- .../fields/datetime/schemaInitializer.test.ts | 6 +- .../fields/manyToMany/schemaSettings.test.ts | 4 +- .../src/client/__e2e__/utils.ts | 2 +- .../src/client/__e2e__/schemaSettings.test.ts | 2 +- .../client/block/ChartBlockInitializer.tsx | 37 +- .../filter/FilterActionInitializers.tsx | 53 +- .../client/filter/FilterBlockInitializer.tsx | 4 +- .../client/filter/FilterItemInitializers.tsx | 57 +- .../src/client/index.tsx | 22 +- .../src/client/utils.ts | 4 +- .../plugin-export/src/client/index.ts | 4 +- .../plugin-file-manager/src/client/index.tsx | 2 +- .../src/client/GanttActionInitializers.tsx | 156 ++++- .../src/client/__e2e__/drag.test.ts | 2 +- .../client/__e2e__/schemaInitailizer.test.ts | 8 +- .../src/client/__e2e__/schemaSettings.test.ts | 8 +- .../plugin-gantt/src/client/__e2e__/utils.ts | 10 +- .../plugin-gantt/src/client/index.tsx | 7 +- .../plugin-gantt/src/client/utils.tsx | 10 +- .../src/client/IframeBlockInitializer.tsx | 2 +- .../plugin-iframe-block/src/client/index.ts | 9 +- .../src/client/schemaSettings.ts | 146 ++++- .../plugin-import/src/client/index.ts | 4 +- .../src/client/Kanban.Card.Designer.tsx | 87 ++- .../src/client/KanbanActionInitializers.tsx | 52 +- .../client/__e2e__/schemaInitailizer.test.ts | 16 +- .../plugin-kanban/src/client/__e2e__/utils.ts | 6 +- .../plugin-kanban/src/client/index.tsx | 14 +- .../plugin-kanban/src/client/utils.ts | 4 +- .../client/block/MapActionInitializers.tsx | 80 ++- .../plugin-map/src/client/block/utils.ts | 4 +- .../@nocobase/plugin-map/src/client/index.tsx | 10 +- .../src/client/core/schema/common/page.ts | 2 +- .../schema/components/page/Page.Designer.tsx | 2 +- .../schema/initializers/BlockInitializers.ts | 79 ++- .../plugin-mobile-client/src/client/index.tsx | 3 +- .../plugin-mobile-client/src/server/plugin.ts | 2 +- .../plugin-mobile-client/src/server/routes.ts | 2 +- .../plugin-sample-hello/src/client/index.tsx | 4 +- .../SnapshotBlockInitializers.tsx | 46 +- .../SnapshotBlockInitializersDetailItem.tsx | 6 +- .../src/client/index.tsx | 6 +- .../src/client/interface.ts | 2 +- .../src/server/__tests__/fixtures/data.ts | 107 ++-- .../src/client/__e2e__/configuration.test.ts | 16 +- .../src/client/index.ts | 2 +- .../client/__e2e__/createRecordForm.test.ts | 121 ++-- .../client/__e2e__/customFormBlocks.test.ts | 197 ++++-- .../src/client/__e2e__/datablocks.test.ts | 60 +- .../client/__e2e__/updateRecordForm.test.ts | 94 ++- .../src/client/__e2e__/workflowTodo.test.ts | 14 +- .../src/client/index.ts | 16 +- .../instruction/FormBlockInitializer.tsx | 2 +- .../src/client/instruction/SchemaConfig.tsx | 120 +++- .../src/client/instruction/forms/custom.tsx | 22 +- .../src/e2e/e2ePageObjectModel.ts | 4 +- .../calculationNode/formulaEngine.test.ts | 6 +- .../calculationNode/mathEngine.test.ts | 6 +- .../components/CollectionBlockInitializer.tsx | 2 +- .../20230411034722-manual-multi-form.ts | 4 +- .../20230612021134-manual-collection-block.ts | 2 +- 206 files changed, 4605 insertions(+), 1297 deletions(-) create mode 100644 packages/core/client/src/application/__tests__/CompatibleSchemaInitializer.test.ts create mode 100644 packages/core/client/src/application/__tests__/SchemaInitializer.test.ts create mode 100644 packages/core/client/src/application/schema-initializer/CompatibleSchemaInitializer.tsx diff --git a/packages/core/client/src/application/__tests__/CompatibleSchemaInitializer.test.ts b/packages/core/client/src/application/__tests__/CompatibleSchemaInitializer.test.ts new file mode 100644 index 000000000..2c16ec081 --- /dev/null +++ b/packages/core/client/src/application/__tests__/CompatibleSchemaInitializer.test.ts @@ -0,0 +1,66 @@ +import { CompatibleSchemaInitializer, isInitializersSame } from '../schema-initializer/CompatibleSchemaInitializer'; + +describe('CompatibleSchemaInitializer', () => { + it('should synchronize add operations between instances', () => { + const first = new CompatibleSchemaInitializer({ type: 'item', items: [], name: 'firstSchema' }); + const second = new CompatibleSchemaInitializer({ type: 'item', items: [], name: 'secondSchema' }, first); + first.add('item1', { type: 'item', test: true }); + expect(second.items).toContainEqual({ type: 'item', name: 'item1', test: true }); + expect(first.items).toContainEqual({ type: 'item', name: 'item1', test: true }); + }); + + it('should synchronize remove operations between instances', () => { + const first = new CompatibleSchemaInitializer({ + type: 'item', + items: [{ type: 'item', name: 'toRemove', test: true }], + name: 'firstSchema', + }); + const second = new CompatibleSchemaInitializer( + { type: 'item', items: [{ type: 'item', name: 'toRemove', test: true }], name: 'secondSchema' }, + first, + ); + first.remove('toRemove'); + expect(first.items).not.toContainEqual({ type: 'item', name: 'toRemove', test: true }); + expect(second.items).not.toContainEqual({ type: 'item', name: 'toRemove', test: true }); + }); +}); + +describe('isInitializersSame', () => { + test('should return true for matching old and new names directly', () => { + expect(isInitializersSame('page:addBlock', 'page:addBlock')).toBeTruthy(); + }); + + test('should return true for an old name matching a new name via the mapping', () => { + expect(isInitializersSame('BlockInitializers', 'page:addBlock')).toBeTruthy(); + }); + + test('should return false when old name does not match and is not found in mapping', () => { + expect(isInitializersSame('NonExistentInitializer', 'page:addBlock')).toBeFalsy(); + }); + + test('should handle case where old name is in the map but does not match the new name', () => { + expect(isInitializersSame('BlockInitializers', 'mobilePage:addBlock')).toBeFalsy(); + }); + + test('should return true for complex name structures that match through the mapping', () => { + expect(isInitializersSame('CreateFormBlockInitializers', 'popup:addNew:addBlock')).toBeTruthy(); + }); + + test('should return false for complex name structures that do not match any new name', () => { + expect(isInitializersSame('CreateFormBlockInitializers', 'nonExistentAction')).toBeFalsy(); + }); + + test('should return true for new names that match directly and are not in the mapping', () => { + expect(isInitializersSame('unmappedNewInitializer:action', 'unmappedNewInitializer:action')).toBeTruthy(); + }); + + test('should return false for old names trying to match to unrelated new names', () => { + expect(isInitializersSame('BlockInitializers', 'unrelatedNewInitializer:action')).toBeFalsy(); + }); + + test('should handle empty strings', () => { + expect(isInitializersSame('', '')).toBeTruthy(); + expect(isInitializersSame('', 'page:addBlock')).toBeFalsy(); + expect(isInitializersSame('BlockInitializers', '')).toBeFalsy(); + }); +}); diff --git a/packages/core/client/src/application/__tests__/SchemaInitializer.test.ts b/packages/core/client/src/application/__tests__/SchemaInitializer.test.ts new file mode 100644 index 000000000..b1591be89 --- /dev/null +++ b/packages/core/client/src/application/__tests__/SchemaInitializer.test.ts @@ -0,0 +1,74 @@ +import { SchemaInitializer } from '../schema-initializer/SchemaInitializer'; + +describe('SchemaInitializer', () => { + it('should initialize with default items when no options provided', () => { + const schema = new SchemaInitializer({ name: 'schema0' }); + expect(schema.items).toEqual([]); + }); + + it('should initialize with provided items', () => { + const schema = new SchemaInitializer({ type: 'item', items: [{ name: 'test', type: 'item' }], name: 'schema1' }); + expect(schema.items).toEqual([{ type: 'item', name: 'test' }]); + }); + + it('should add item with unique name', () => { + const schema = new SchemaInitializer({ items: [], name: 'schema2' }); + schema.add('item1', { type: 'item', test: true }); + expect(schema.items).toContainEqual({ type: 'item', name: 'item1', test: true }); + }); + + it('should replace item with same name', () => { + const schema = new SchemaInitializer({ + type: 'item', + items: [{ type: 'item', name: 'item1', test: false }], + name: 'schema3', + }); + schema.add('item1', { type: 'item', test: true }); + expect(schema.items).toContainEqual({ type: 'item', name: 'item1', test: true }); + expect(schema.items.length).toBe(1); + }); + + it('should add children to the specified parent item', () => { + const schema = new SchemaInitializer({ + type: 'item', + items: [{ type: 'item', name: 'parent', children: [] }], + name: 'schema4', + }); + schema.add('parent.child', { type: 'item', test: true }); + expect(schema.get('parent').children).toContainEqual({ type: 'item', name: 'child', test: true }); + }); + + it('should get the item by nested name', () => { + const schema = new SchemaInitializer({ + type: 'item', + items: [{ type: 'item', name: 'parent', children: [{ type: 'item', name: 'child', test: true }] }], + name: 'schema5', + }); + expect(schema.get('parent.child')).toEqual({ type: 'item', name: 'child', test: true }); + }); + + it('should return undefined for non-existent item', () => { + const schema = new SchemaInitializer({ type: 'item', items: [], name: 'schema6' }); + expect(schema.get('nonexistent')).toBeUndefined(); + }); + + it('should remove the specified item', () => { + const schema = new SchemaInitializer({ + type: 'item', + items: [{ type: 'item', name: 'toRemove', test: true }], + name: 'schema7', + }); + schema.remove('toRemove'); + expect(schema.items).not.toContainEqual({ type: 'item', name: 'toRemove', test: true }); + }); + + it('should remove the specified nested item', () => { + const schema = new SchemaInitializer({ + type: 'item', + items: [{ type: 'item', name: 'parent', children: [{ type: 'item', name: 'toRemove', test: true }] }], + name: 'schema8', + }); + schema.remove('parent.toRemove'); + expect(schema.get('parent').children).not.toContainEqual({ type: 'item', name: 'toRemove', test: true }); + }); +}); diff --git a/packages/core/client/src/application/schema-initializer/CompatibleSchemaInitializer.tsx b/packages/core/client/src/application/schema-initializer/CompatibleSchemaInitializer.tsx new file mode 100644 index 000000000..8f3570bb6 --- /dev/null +++ b/packages/core/client/src/application/schema-initializer/CompatibleSchemaInitializer.tsx @@ -0,0 +1,99 @@ +import { SchemaInitializer } from './SchemaInitializer'; + +/** + * @internal + * + * 因为需要把 SchemaInitializer 的 name 统一为一致的命名风格,统一之后新创建的 Schema 将 + * 使用新的命名风格,而旧的 Schema 仍然使用旧的命名风格,这样会导致一些问题。所以需要有一个方法 + * 可以确保旧版的 name 也可以正常工作,直到旧的 Schema 被移除。该类就是用来兼容旧 name 的: + * + * 1. 在新版实例中通过接收旧版 name 的实例,在新版实例变更后,同步变更旧版实例; + * 2. 在旧版实例中也接收新版 name 的实例,当旧版实例变更后,同步变更新版实例,这样可以保证在插件中即使不把旧版改成新版也能正常运行; + */ +export class CompatibleSchemaInitializer extends SchemaInitializer { + /** + * 需要同步变更的另一个实例 + */ + otherInstance: CompatibleSchemaInitializer = null; + + constructor(options: any, otherInstance?: CompatibleSchemaInitializer) { + super(options); + if (otherInstance) { + this.otherInstance = otherInstance; + otherInstance.otherInstance = this; + } + } + + add(name: string, item: any) { + if (super.get(name)) return; + + super.add(name, item); + if (this.otherInstance) { + this.otherInstance.add(name, item); + } + } + + remove(nestedName: string): void { + if (!super.get(nestedName)) return; + + super.remove(nestedName); + if (this.otherInstance) { + this.otherInstance.remove(nestedName); + } + } +} + +const oldToNewNameMap = { + BlockInitializers: 'page:addBlock', + MBlockInitializers: 'mobilePage:addBlock', + CreateFormBlockInitializers: 'popup:addNew:addBlock', + CusomeizeCreateFormBlockInitializers: 'popup:addRecord:addBlock', + RecordBlockInitializers: 'popup:common:addBlock', + BulkEditBlockInitializers: 'popup:bulkEdit:addBlock', + TableColumnInitializers: 'table:configureColumns', + TableActionColumnInitializers: 'table:configureItemActions', + TableActionInitializers: 'table:configureActions', + SubTableActionInitializers: 'subTable:configureActions', + FormItemInitializers: 'form:configureFields', + CreateFormActionInitializers: 'createForm:configureActions', + UpdateFormActionInitializers: 'editForm:configureActions', + ReadPrettyFormItemInitializers: 'details:configureFields', + DetailsActionInitializers: 'detailsWithPaging:configureActions', + ReadPrettyFormActionInitializers: 'details:configureActions', + KanbanCardInitializers: 'kanban:configureItemFields', + KanbanActionInitializers: 'kanban:configureActions', + GridCardActionInitializers: 'gridCard:configureActions', + GridCardItemActionInitializers: 'gridCard:configureItemActions', + ListActionInitializers: 'list:configureActions', + ListItemActionInitializers: 'list:configureItemActions', + CalendarActionInitializers: 'calendar:configureActions', + GanttActionInitializers: 'gantt:configureActions', + MapActionInitializers: 'map:configureActions', + TableSelectorInitializers: 'popup:tableSelector:addBlock', + ChartInitializers: 'charts:addBlock', + ChartFilterItemInitializers: 'chartFilterForm:configureFields', + ChartFilterActionInitializers: 'chartFilterForm:configureActions', + AssociationFilterInitializers: 'filterCollapse:configureFields', + FilterFormItemInitializers: 'filterForm:configureFields', + FilterFormActionInitializers: 'filterForm:configureActions', + CustomFormItemInitializers: 'assignFieldValuesForm:configureFields', + BulkEditFormItemInitializers: 'bulkEditForm:configureFields', + BulkEditFormActionInitializers: 'bulkEditForm:configureActions', + AuditLogsTableColumnInitializers: 'auditLogsTable:configureColumns', + AuditLogsTableActionColumnInitializers: 'auditLogsTable:configureItemActions', + AuditLogsTableActionInitializers: 'auditLogsTable:configureActions', + SnapshotBlockInitializers: 'popup:snapshot:addBlock', + AddBlockButton: 'workflowManual:popup:configureUserInterface:addBlock', + AddCustomFormField: 'workflowManual:customForm:configureFields', + AddActionButton: 'workflowManual:form:configureActions', +}; + +/** + * 由于旧版的 schema 的 x-initializer 的值是旧的命名风格,当其与新的命名比较时就存在问题, + * 这里通过将新版命名转换为旧版命名再进行比较,已解决这个问题。 + * @param oldOrNewName x-initializer 的值 + * @param newName 新的命名 + */ +export function isInitializersSame(oldOrNewName: string, newName: string) { + return oldOrNewName === newName || oldToNewNameMap[oldOrNewName] === newName; +} diff --git a/packages/core/client/src/application/schema-initializer/index.ts b/packages/core/client/src/application/schema-initializer/index.ts index d39c13e67..9bb2efd08 100644 --- a/packages/core/client/src/application/schema-initializer/index.ts +++ b/packages/core/client/src/application/schema-initializer/index.ts @@ -4,4 +4,5 @@ export * from './types'; export * from './context'; export * from './components'; export * from './SchemaInitializer'; +export * from './CompatibleSchemaInitializer'; export * from './SchemaInitializerManager'; diff --git a/packages/core/client/src/collection-manager/demos/demo5.tsx b/packages/core/client/src/collection-manager/demos/demo5.tsx index b04edbb77..bddfbbcad 100644 --- a/packages/core/client/src/collection-manager/demos/demo5.tsx +++ b/packages/core/client/src/collection-manager/demos/demo5.tsx @@ -40,7 +40,7 @@ const schema: ISchema = { type: 'void', 'x-component': Grid, 'x-read-pretty': true, - 'x-initializer': 'AddFieldButton', + 'x-initializer': 'addFieldButton', 'x-uid': uid(), properties: {}, }, @@ -124,7 +124,7 @@ const FormItemInitializer = () => { }; const addFieldButton = new SchemaInitializer({ - name: 'AddFieldButton', + name: 'addFieldButton', // 正常情况下这个值为 false,通过点击页面左上角的设计按钮切换,这里为了显示设置为 true designable: true, // 按钮标题标题 diff --git a/packages/core/client/src/collection-manager/interfaces/properties/index.ts b/packages/core/client/src/collection-manager/interfaces/properties/index.ts index e7f24b38f..2ee0485df 100644 --- a/packages/core/client/src/collection-manager/interfaces/properties/index.ts +++ b/packages/core/client/src/collection-manager/interfaces/properties/index.ts @@ -398,7 +398,7 @@ export const recordPickerViewer = { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/collection-manager/interfaces/subTable.ts b/packages/core/client/src/collection-manager/interfaces/subTable.ts index e67cec4cc..3000836cb 100644 --- a/packages/core/client/src/collection-manager/interfaces/subTable.ts +++ b/packages/core/client/src/collection-manager/interfaces/subTable.ts @@ -42,13 +42,13 @@ export class SubTableFieldInterface extends CollectionFieldInterface { properties: { actions: { type: 'void', - 'x-initializer': 'SubTableActionInitializers', + 'x-initializer': 'subTable:configureActions', 'x-component': 'TableField.ActionBar', 'x-component-props': {}, }, [field.name]: { type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowSelection: { diff --git a/packages/core/client/src/modules/actions/add-child/CreateChildInitializer.tsx b/packages/core/client/src/modules/actions/add-child/CreateChildInitializer.tsx index 9c82a52b5..a5673e802 100644 --- a/packages/core/client/src/modules/actions/add-child/CreateChildInitializer.tsx +++ b/packages/core/client/src/modules/actions/add-child/CreateChildInitializer.tsx @@ -41,7 +41,7 @@ export const CreateChildInitializer = (props) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/modules/actions/add-new/CreateActionInitializer.tsx b/packages/core/client/src/modules/actions/add-new/CreateActionInitializer.tsx index ad3eb2383..39faabb53 100644 --- a/packages/core/client/src/modules/actions/add-new/CreateActionInitializer.tsx +++ b/packages/core/client/src/modules/actions/add-new/CreateActionInitializer.tsx @@ -43,7 +43,7 @@ export const CreateActionInitializer = () => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/modules/actions/add-new/createFormBlockInitializers.tsx b/packages/core/client/src/modules/actions/add-new/createFormBlockInitializers.tsx index 17da54b81..4cb926553 100644 --- a/packages/core/client/src/modules/actions/add-new/createFormBlockInitializers.tsx +++ b/packages/core/client/src/modules/actions/add-new/createFormBlockInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../application/schema-initializer/CompatibleSchemaInitializer'; import { gridRowColWrap } from '../../../schema-initializer/utils'; -export const createFormBlockInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const createFormBlockInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'CreateFormBlockInitializers', wrap: gridRowColWrap, title: '{{t("Add block")}}', @@ -33,3 +36,39 @@ export const createFormBlockInitializers = new SchemaInitializer({ }, ], }); + +export const createFormBlockInitializers = new CompatibleSchemaInitializer( + { + name: 'popup:addNew:addBlock', + wrap: gridRowColWrap, + title: '{{t("Add block")}}', + icon: 'PlusOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Data blocks")}}', + name: 'dataBlocks', + children: [ + { + name: 'form', + title: '{{t("Form")}}', + Component: 'CreateFormBlockInitializer', + }, + ], + }, + { + type: 'itemGroup', + title: '{{t("Other blocks")}}', + name: 'otherBlocks', + children: [ + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + ], + }, + ], + }, + createFormBlockInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/actions/add-record/CustomizeAddRecordActionInitializer.tsx b/packages/core/client/src/modules/actions/add-record/CustomizeAddRecordActionInitializer.tsx index 765424a8f..106e24f19 100644 --- a/packages/core/client/src/modules/actions/add-record/CustomizeAddRecordActionInitializer.tsx +++ b/packages/core/client/src/modules/actions/add-record/CustomizeAddRecordActionInitializer.tsx @@ -29,7 +29,7 @@ export const CustomizeAddRecordActionInitializer = () => { 'x-component-props': {}, 'x-initializer': 'TabPaneInitializersForCreateFormBlock', 'x-initializer-props': { - gridInitializer: 'CusomeizeCreateFormBlockInitializers', + gridInitializer: 'popup:addRecord:addBlock', }, properties: { tab1: { @@ -42,7 +42,7 @@ export const CustomizeAddRecordActionInitializer = () => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CusomeizeCreateFormBlockInitializers', + 'x-initializer': 'popup:addRecord:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/modules/actions/add-record/customizeCreateFormBlockInitializers.tsx b/packages/core/client/src/modules/actions/add-record/customizeCreateFormBlockInitializers.tsx index ba20a66ad..f98ddeef9 100644 --- a/packages/core/client/src/modules/actions/add-record/customizeCreateFormBlockInitializers.tsx +++ b/packages/core/client/src/modules/actions/add-record/customizeCreateFormBlockInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../application/schema-initializer/CompatibleSchemaInitializer'; import { gridRowColWrap } from '../../../schema-initializer/utils'; -export const customizeCreateFormBlockInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const customizeCreateFormBlockInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'CusomeizeCreateFormBlockInitializers', wrap: gridRowColWrap, title: '{{t("Add block")}}', @@ -34,3 +37,40 @@ export const customizeCreateFormBlockInitializers = new SchemaInitializer({ }, ], }); + +export const customizeCreateFormBlockInitializers = new CompatibleSchemaInitializer( + { + name: 'popup:addRecord:addBlock', + wrap: gridRowColWrap, + title: '{{t("Add block")}}', + icon: 'PlusOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Data blocks")}}', + name: 'dataBlocks', + children: [ + { + name: 'form', + title: '{{t("Form")}}', + Component: 'FormBlockInitializer', + isCusomeizeCreate: true, + }, + ], + }, + { + type: 'itemGroup', + title: '{{t("Other blocks")}}', + name: 'otherBlocks', + children: [ + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + ], + }, + ], + }, + customizeCreateFormBlockInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/actions/submit/updateSubmitActionSettings.tsx b/packages/core/client/src/modules/actions/submit/updateSubmitActionSettings.tsx index f10e286d6..c1adee749 100644 --- a/packages/core/client/src/modules/actions/submit/updateSubmitActionSettings.tsx +++ b/packages/core/client/src/modules/actions/submit/updateSubmitActionSettings.tsx @@ -1,6 +1,6 @@ import { useFieldSchema } from '@formily/react'; import { isValid } from '@formily/shared'; -import { useSchemaToolbar } from '../../../application'; +import { isInitializersSame, useSchemaToolbar } from '../../../application'; import { SchemaSettings } from '../../../application/schema-settings/SchemaSettings'; import { ButtonEditor, @@ -45,7 +45,6 @@ export const updateSubmitActionSettings = new SchemaSettings({ ], }); -// TODO: 0.20 发版之前后移除 export const submitActionSettings = new SchemaSettings({ name: 'actionSettings:submit', items: [ @@ -76,7 +75,7 @@ export const submitActionSettings = new SchemaSettings({ const fieldSchema = useFieldSchema(); return ( fieldSchema['x-action'] === 'submit' && - fieldSchema.parent?.['x-initializer'] === 'CreateFormActionInitializers' + isInitializersSame(fieldSchema.parent?.['x-initializer'], 'createForm:configureActions') ); }, }, diff --git a/packages/core/client/src/modules/actions/view-edit-popup/PopupActionInitializer.tsx b/packages/core/client/src/modules/actions/view-edit-popup/PopupActionInitializer.tsx index 4d4149586..06ae9a4ff 100644 --- a/packages/core/client/src/modules/actions/view-edit-popup/PopupActionInitializer.tsx +++ b/packages/core/client/src/modules/actions/view-edit-popup/PopupActionInitializer.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { BlockInitializer } from '../../../schema-initializer/items'; import { useSchemaInitializerItem } from '../../../application'; +import { BlockInitializer } from '../../../schema-initializer/items'; export const PopupActionInitializer = (props) => { const schema = { @@ -38,7 +38,7 @@ export const PopupActionInitializer = (props) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/modules/actions/view-edit-popup/RecordFormBlockInitializers.tsx b/packages/core/client/src/modules/actions/view-edit-popup/RecordFormBlockInitializers.tsx index 034f9ffec..b338cdfc4 100644 --- a/packages/core/client/src/modules/actions/view-edit-popup/RecordFormBlockInitializers.tsx +++ b/packages/core/client/src/modules/actions/view-edit-popup/RecordFormBlockInitializers.tsx @@ -1,6 +1,9 @@ import { SchemaInitializer } from '../../../application/schema-initializer/SchemaInitializer'; import { gridRowColWrap } from '../../../schema-initializer/utils'; +/** + * @deprecated + */ export const recordFormBlockInitializers = new SchemaInitializer({ name: 'RecordFormBlockInitializers', title: '{{ t("Add block") }}', diff --git a/packages/core/client/src/modules/actions/view-edit-popup/UpdateActionInitializer.tsx b/packages/core/client/src/modules/actions/view-edit-popup/UpdateActionInitializer.tsx index 2ab32a4d9..c7a1c5487 100644 --- a/packages/core/client/src/modules/actions/view-edit-popup/UpdateActionInitializer.tsx +++ b/packages/core/client/src/modules/actions/view-edit-popup/UpdateActionInitializer.tsx @@ -39,7 +39,7 @@ export const UpdateActionInitializer = (props) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/modules/actions/view-edit-popup/ViewActionInitializer.tsx b/packages/core/client/src/modules/actions/view-edit-popup/ViewActionInitializer.tsx index c091def8d..e564ac00e 100644 --- a/packages/core/client/src/modules/actions/view-edit-popup/ViewActionInitializer.tsx +++ b/packages/core/client/src/modules/actions/view-edit-popup/ViewActionInitializer.tsx @@ -38,7 +38,7 @@ export const ViewActionInitializer = (props) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsActionInitializers.tsx index 0e8da5417..15ace51a0 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsActionInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; -// 表单的操作配置 -export const detailsActionInitializers = new SchemaInitializer({ +/** + * @deprecated + * 表单的操作配置 + */ +export const detailsActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'DetailsActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -49,3 +52,45 @@ export const detailsActionInitializers = new SchemaInitializer({ }, ], }); + +export const detailsActionInitializers = new CompatibleSchemaInitializer( + { + name: 'detailsWithPaging:configureActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + title: '{{t("Enable actions")}}', + name: 'enableActions', + children: [ + { + name: 'edit', + title: '{{t("Edit")}}', + Component: 'UpdateActionInitializer', + schema: { + 'x-component': 'Action', + 'x-decorator': 'ACLActionProvider', + 'x-component-props': { + type: 'primary', + }, + }, + }, + { + name: 'delete', + title: '{{t("Delete")}}', + Component: 'DestroyActionInitializer', + schema: { + 'x-component': 'Action', + 'x-decorator': 'ACLActionProvider', + }, + }, + ], + }, + ], + }, + detailsActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsBlockInitializer.tsx b/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsBlockInitializer.tsx index 42c0684a5..ae075be78 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsBlockInitializer.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/details-multi/DetailsBlockInitializer.tsx @@ -23,7 +23,7 @@ export const DetailsBlockInitializer = () => { actionInitializers: (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql' && - 'DetailsActionInitializers', + 'detailsWithPaging:configureActions', settings: 'blockSettings:multiDataDetails', }); insert(schema); diff --git a/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaInitializer.test.ts index d3bd9cf36..bfaa5c77d 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaInitializer.test.ts @@ -3,7 +3,7 @@ import { createBlockInPage, expect, oneEmptyDetailsBlock, test } from '@nocobase test.describe('where multi data details block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'Details'); await expect(page.getByLabel('block-item-CardItem-users-details')).toBeVisible(); }); @@ -13,7 +13,7 @@ test.describe('configure fields', () => { test('display collection fields & display association fields & add text', async ({ page, mockPage }) => { await mockPage(oneEmptyDetailsBlock).goto(); - const formItemInitializer = page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general'); + const formItemInitializer = page.getByLabel('schema-initializer-Grid-details:configureFields-general'); // add fields await formItemInitializer.hover(); @@ -63,7 +63,7 @@ test.describe('configure actions', () => { test('edit & delete & duplicate', async ({ page, mockPage }) => { await mockPage(oneEmptyDetailsBlock).goto(); - await page.getByLabel('schema-initializer-ActionBar-DetailsActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-detailsWithPaging:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Edit' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -75,7 +75,7 @@ test.describe('configure actions', () => { await expect(page.getByRole('button', { name: 'Delete' })).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-DetailsActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-detailsWithPaging:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Edit' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); diff --git a/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts b/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts index 01f300347..2ba21a02d 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts @@ -33,7 +33,7 @@ test.describe('actions schema settings', () => { await mockPage(oneEmptyDetailsBlock).goto(); // 创建 Edit & Delete 两个按钮 - await page.getByLabel('schema-initializer-ActionBar-DetailsActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-detailsWithPaging:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Edit' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); await page.mouse.move(0, 300); diff --git a/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormActionInitializers.tsx index 98da59cb3..f2dbe5404 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormActionInitializers.tsx @@ -1,12 +1,16 @@ -import { useCollection_deprecated } from '../../../..'; -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { useCollection_deprecated } from '../../../../collection-manager/hooks/useCollection_deprecated'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; const useVisibleCollection = () => { const collection = useCollection_deprecated(); return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; }; -// 表单的操作配置 -export const readPrettyFormActionInitializers = new SchemaInitializer({ + +/** + * @deprecated + * 表单的操作配置 + */ +export const readPrettyFormActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'ReadPrettyFormActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -84,3 +88,85 @@ export const readPrettyFormActionInitializers = new SchemaInitializer({ }, ], }); + +export const readPrettyFormActionInitializers = new CompatibleSchemaInitializer( + { + name: 'details:configureActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + name: 'enableActions', + title: '{{t("Enable actions")}}', + children: [ + { + title: '{{t("Edit")}}', + name: 'edit', + Component: 'UpdateActionInitializer', + schema: { + 'x-component': 'Action', + 'x-decorator': 'ACLActionProvider', + 'x-component-props': { + type: 'primary', + }, + }, + useVisible: useVisibleCollection, + }, + { + title: '{{t("Delete")}}', + name: 'delete', + Component: 'DestroyActionInitializer', + schema: { + 'x-component': 'Action', + 'x-decorator': 'ACLActionProvider', + }, + useVisible: useVisibleCollection, + }, + ], + }, + { + name: 'divider', + type: 'divider', + }, + { + type: 'subMenu', + name: 'customize', + title: '{{t("Customize")}}', + children: [ + { + name: 'popup', + title: '{{t("Popup")}}', + Component: 'PopupActionInitializer', + useComponentProps() { + return { + 'x-component': 'Action', + }; + }, + }, + { + name: 'updateRecord', + title: '{{t("Update record")}}', + Component: 'UpdateRecordActionInitializer', + useComponentProps() { + return { + 'x-component': 'Action', + }; + }, + visible: useVisibleCollection, + }, + { + name: 'customRequest', + title: '{{t("Custom request")}}', + Component: 'CustomRequestInitializer', + useVisible: useVisibleCollection, + }, + ], + }, + ], + }, + readPrettyFormActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormItemInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormItemInitializers.tsx index 0f0f2b677..9efcdcf26 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormItemInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/details-single/ReadPrettyFormItemInitializers.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { SchemaInitializerChildren } from '../../../../application'; -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; import { useCompile } from '../../../../schema-component'; import { gridRowColWrap, @@ -9,6 +8,7 @@ import { useFormItemInitializerFields, useInheritsFormItemInitializerFields, } from '../../../../schema-initializer/utils'; +import { SchemaInitializerChildren } from '../../../../application/schema-initializer/components/SchemaInitializerChildren'; const ParentCollectionFields = () => { const inheritFields = useInheritsFormItemInitializerFields(); @@ -45,7 +45,10 @@ const AssociatedFields = () => { return {schema}; }; -export const readPrettyFormItemInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const readPrettyFormItemInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'ReadPrettyFormItemInitializers', wrap: gridRowColWrap, icon: 'SettingOutlined', @@ -88,3 +91,50 @@ export const readPrettyFormItemInitializers = new SchemaInitializer({ }, ], }); + +export const readPrettyFormItemInitializers = new CompatibleSchemaInitializer( + { + name: 'details:configureFields', + wrap: gridRowColWrap, + icon: 'SettingOutlined', + title: '{{t("Configure fields")}}', + items: [ + { + type: 'itemGroup', + name: 'displayFields', + title: '{{t("Display fields")}}', + useChildren: useFormItemInitializerFields, + }, + { + name: 'parentCollectionFields', + Component: ParentCollectionFields, + }, + { + name: 'associationFields', + Component: AssociatedFields, + }, + { + name: 'divider', + type: 'divider', + }, + { + name: 'addText', + title: '{{t("Add text")}}', + Component: 'BlockItemInitializer', + schema: { + type: 'void', + 'x-editable': false, + 'x-decorator': 'FormItem', + // 'x-designer': 'Markdown.Void.Designer', + 'x-toolbar': 'BlockSchemaToolbar', + 'x-settings': 'blockSettings:markdown', + 'x-component': 'Markdown.Void', + 'x-component-props': { + content: '{{t("This is a demo text, **supports Markdown syntax**.")}}', + }, + }, + }, + ], + }, + readPrettyFormItemInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/details-single/RecordReadPrettyFormBlockInitializer.tsx b/packages/core/client/src/modules/blocks/data-blocks/details-single/RecordReadPrettyFormBlockInitializer.tsx index 39eae3464..946574ee1 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/details-single/RecordReadPrettyFormBlockInitializer.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/details-single/RecordReadPrettyFormBlockInitializer.tsx @@ -26,7 +26,7 @@ export const RecordReadPrettyFormBlockInitializer = () => { const association = useBlockAssociationContext(); const { block } = useBlockRequestContext(); const actionInitializers = - block !== 'TableField' ? itemConfig.actionInitializers || 'ReadPrettyFormActionInitializers' : null; + block !== 'TableField' ? itemConfig.actionInitializers || 'details:configureActions' : null; return ( { await nocoPage.goto(); await page.getByLabel('action-Action.Link-View-view-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'Details' }).click(); await page.mouse.move(300, 0); @@ -22,7 +22,7 @@ test.describe('configure actions', () => { await nocoPage.goto(); await page.getByLabel('action-Action.Link-View-view-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'Details' }).click(); await page.mouse.move(300, 0); @@ -61,14 +61,14 @@ test.describe('configure actions', () => { test.describe('configure fields', () => {}); async function createAction(page: Page, name: string) { - await page.getByLabel('schema-initializer-ActionBar-ReadPrettyFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-details:configureActions-general').hover(); await page.getByRole('menuitem', { name: name }).click(); await expect(page.getByRole('menuitem', { name: name }).getByRole('switch')).toBeChecked(); await page.mouse.move(300, 0); } async function createCustomAction(page: Page, name: string) { - await page.getByLabel('schema-initializer-ActionBar-ReadPrettyFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-details:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Customize' }).hover(); await page.getByRole('menuitem', { name: name }).click(); await page.mouse.move(0, 400); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/CreateFormBlockInitializer.tsx b/packages/core/client/src/modules/blocks/data-blocks/form/CreateFormBlockInitializer.tsx index 1793c2961..68614c002 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/CreateFormBlockInitializer.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/form/CreateFormBlockInitializer.tsx @@ -24,7 +24,7 @@ export const CreateFormBlockInitializer = () => { const s = await getTemplateSchemaByMode(item); if (item.template.componentName === 'FormItem') { const blockSchema = createFormBlockSchema({ - actionInitializers: 'CreateFormActionInitializers', + actionInitializers: 'createForm:configureActions', association, dataSource: collection.dataSource, collection: collection.name, @@ -41,7 +41,7 @@ export const CreateFormBlockInitializer = () => { } else { insert( createFormBlockSchema({ - actionInitializers: 'CreateFormActionInitializers', + actionInitializers: 'createForm:configureActions', association, dataSource: collection.dataSource, collection: collection.name, diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/RecordFormBlockInitializer.tsx b/packages/core/client/src/modules/blocks/data-blocks/form/RecordFormBlockInitializer.tsx index 245fb6c0c..3fa04e006 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/RecordFormBlockInitializer.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/form/RecordFormBlockInitializer.tsx @@ -29,7 +29,7 @@ export const RecordFormBlockInitializer = () => { action: 'get', useSourceId: '{{ useSourceIdFromParentRecord }}', useParams: '{{ useParamsFromRecord }}', - actionInitializers: 'UpdateFormActionInitializers', + actionInitializers: 'editForm:configureActions', template: s, settings: 'blockSettings:editForm', }); @@ -49,7 +49,7 @@ export const RecordFormBlockInitializer = () => { action: 'get', useSourceId: '{{ useSourceIdFromParentRecord }}', useParams: '{{ useParamsFromRecord }}', - actionInitializers: 'UpdateFormActionInitializers', + actionInitializers: 'editForm:configureActions', settings: 'blockSettings:editForm', }), ); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/dragAndDrop.test.ts b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/dragAndDrop.test.ts index d1c87ff93..f78366e74 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/dragAndDrop.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/dragAndDrop.test.ts @@ -2,7 +2,7 @@ import { expect, oneFormBlockBasedOnUsers, test } from '@nocobase/test/e2e'; test('fields', async ({ page, mockPage }) => { await mockPage(oneFormBlockBasedOnUsers).goto(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-users').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-users').hover(); await page.getByRole('menuitem', { name: 'Nickname' }).click(); await page.getByRole('menuitem', { name: 'Username' }).click(); await page.getByRole('menuitem', { name: 'Email' }).click(); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/lazyLoadAssociationFields.test.ts b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/lazyLoadAssociationFields.test.ts index 05a5bf367..c21837c22 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/lazyLoadAssociationFields.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/lazyLoadAssociationFields.test.ts @@ -282,7 +282,7 @@ test.describe('association fields', () => { await expect(page.getByLabel('Member')).toBeHidden(); await expect(page.getByLabel('Root')).toBeVisible(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-users').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-users').hover(); await page.getByRole('menuitem', { name: 'Nickname' }).click(); await page.mouse.move(200, 0); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaInitializer.test.ts index fb9b93f30..d7b9b99be 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaInitializer.test.ts @@ -6,7 +6,7 @@ test.describe('where creation form block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'Form'); await expect(page.getByLabel('block-item-CardItem-users-form')).toBeVisible(); }); @@ -17,7 +17,7 @@ test.describe('configure fields', () => { await mockPage(oneEmptyForm).goto(); // collection fields - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); await page.getByRole('menuitem', { name: 'ID', exact: true }).click(); await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch')).toBeChecked(); @@ -33,7 +33,7 @@ test.describe('configure fields', () => { await expect(page.getByLabel('block-item-CollectionField-general-form-general.manyToOne.nickname')).toBeVisible(); // delete fields - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); await page.getByRole('menuitem', { name: 'ID', exact: true }).click(); await expect(page.getByRole('menuitem', { name: 'ID', exact: true }).getByRole('switch')).not.toBeChecked(); @@ -50,7 +50,7 @@ test.describe('configure fields', () => { ).not.toBeVisible(); // add text - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); await page.getByRole('menuitem', { name: 'Text' }).click(); await expect(page.getByLabel('block-item-Markdown.Void-general-form')).toBeVisible(); }); @@ -62,7 +62,7 @@ test.describe('configure actions', () => { test('submit', async ({ page, mockPage }) => { await mockPage(oneEmptyForm).goto(); - await page.getByLabel('schema-initializer-ActionBar-FormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-createForm:configureActions-general').hover(); // add button await page.getByRole('menuitem', { name: 'Submit' }).click(); @@ -72,7 +72,7 @@ test.describe('configure actions', () => { await expect(page.getByRole('button', { name: 'Submit' })).toBeVisible(); // delete button - await page.getByLabel('schema-initializer-ActionBar-FormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-createForm:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Submit' }).click(); await expect(page.getByRole('menuitem', { name: 'Submit' }).getByRole('switch')).not.toBeChecked(); @@ -137,7 +137,7 @@ test.describe('configure actions', () => { test('customize: save record', async ({ page, mockPage }) => { await mockPage(oneEmptyForm).goto(); - await page.getByLabel('schema-initializer-ActionBar-FormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-createForm:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Customize' }).hover(); await page.getByRole('menuitem', { name: 'Save record' }).click(); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts index 7f8a5acd7..cb311d787 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts @@ -350,7 +350,7 @@ test.describe('creation form block schema settings', () => { await expect(page.getByRole('menuitem', { name: 'Convert reference to duplicate' })).toBeVisible(); // 创建区块的时候,可以选择刚才保存的模板 -------------------------------------------------- - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'form Form right' }).first().hover(); await page.getByRole('menuitem', { name: 'General right' }).hover(); @@ -359,7 +359,7 @@ test.describe('creation form block schema settings', () => { await page.getByRole('menuitem', { name: 'new_form_template (Fields only)' }).click(); // Reference template - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'form Form right' }).first().hover(); await page.getByRole('menuitem', { name: 'General right' }).hover(); await page.getByRole('menuitem', { name: 'General right' }).click(); @@ -549,7 +549,7 @@ test.describe('creation form block schema settings', () => { .hover(); await page.mouse.move(100, 0); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-users').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-users').hover(); await page.getByRole('menuitem', { name: 'Nickname' }).click(); await page.getByRole('menuitem', { name: 'Username' }).click(); @@ -622,7 +622,7 @@ test.describe('creation form block schema settings', () => { .hover(); await page.mouse.move(100, 0); - await page.getByLabel('schema-initializer-AssociationField.SubTable-TableColumnInitializers-users').hover(); + await page.getByLabel('schema-initializer-AssociationField.SubTable-table:configureColumns-users').hover(); await page.getByRole('menuitem', { name: 'Nickname' }).click(); await page.getByRole('menuitem', { name: 'Username' }).click(); @@ -719,7 +719,7 @@ test.describe('creation form block schema settings', () => { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { gdj0ceke8ac: { _isJSONSchemaObject: true, @@ -764,7 +764,7 @@ test.describe('creation form block schema settings', () => { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { gnw25oyqe56: { _isJSONSchemaObject: true, @@ -810,7 +810,7 @@ test.describe('creation form block schema settings', () => { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -879,7 +879,7 @@ test.describe('creation form block schema settings', () => { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { ibb0kjq3kyl: { _isJSONSchemaObject: true, @@ -919,7 +919,7 @@ test.describe('creation form block schema settings', () => { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -980,7 +980,7 @@ test.describe('creation form block schema settings', () => { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', 'x-uid': 'w224zhqyair', 'x-async': false, 'x-index': 1, @@ -1014,7 +1014,7 @@ test.describe('creation form block schema settings', () => { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -1033,7 +1033,7 @@ test.describe('creation form block schema settings', () => { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -1094,7 +1094,7 @@ test.describe('creation form block schema settings', () => { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': 's49vs6v3qs0', 'x-async': false, 'x-index': 1, @@ -1160,7 +1160,7 @@ test.describe('creation form block schema settings', () => { 'x-index': 1, }, }).goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); //使用复制模板 await page.getByRole('menuitem', { name: 'form Form' }).first().hover(); await page.getByRole('menuitem', { name: 'Users' }).hover(); @@ -1171,25 +1171,25 @@ test.describe('creation form block schema settings', () => { //在新建操作中使用引用模板 await page.getByLabel('action-Action-Add new-create-users-table').click(); - await page.getByLabel('schema-initializer-Grid-CreateFormBlockInitializers-users').hover(); + await page.getByLabel('schema-initializer-Grid-popup:addNew:addBlock-users').hover(); await page.getByRole('menuitem', { name: 'form Form' }).first().hover(); await page.getByRole('menuitem', { name: 'Reference template' }).hover(); await page.getByRole('menuitem', { name: 'Users_Form (Fields only)' }).first().click(); await page.mouse.move(300, 0); - await page.getByLabel('schema-initializer-Grid-CreateFormBlockInitializers-users').hover(); + await page.getByLabel('schema-initializer-Grid-popup:addNew:addBlock-users').hover(); await expect(page.locator('.ant-drawer').getByLabel('block-item-CardItem-users-form')).toBeVisible(); await page.locator('.ant-drawer-mask').click(); //在编辑操作中使用引用模板 await page.getByLabel('action-Action.Link-Edit-update-users-table-0').click(); - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-users').click(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-users').click(); await page.getByRole('menuitem', { name: 'form Form' }).first().hover(); await page.getByRole('menuitem', { name: 'Reference template' }).hover(); await page.getByRole('menuitem', { name: 'Users_Form (Fields only)' }).first().click(); await page.mouse.move(300, 0); //修改引用模板 - await page.locator('.ant-drawer').getByLabel('schema-initializer-Grid-FormItemInitializers-users').hover(); + await page.locator('.ant-drawer').getByLabel('schema-initializer-Grid-form:configureFields-users').hover(); await page.getByRole('menuitem', { name: 'Phone' }).click(); await page.locator('.ant-drawer-mask').click(); //复制模板不同步,引用模板同步 diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/templatesOfBug.ts b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/templatesOfBug.ts index 03cae11ff..41afc0d6d 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/templatesOfBug.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/templatesOfBug.ts @@ -12,7 +12,7 @@ export const T2165 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { psn8ekavlq6: { _isJSONSchemaObject: true, @@ -58,7 +58,7 @@ export const T2165 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-linkage-rules': [ { condition: { @@ -235,7 +235,7 @@ export const T2165 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -291,7 +291,7 @@ export const T2174 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { ppgwx2drpng: { @@ -335,7 +335,7 @@ export const T2174 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -350,7 +350,7 @@ export const T2174 = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -370,7 +370,7 @@ export const T2174 = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-index': 1, properties: { actions: { @@ -438,7 +438,7 @@ export const T2174 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-index': 1, properties: { g8w7wq09bgo: { @@ -492,7 +492,7 @@ export const T2174 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-index': 1, properties: { s3hhb0ohnv1: { @@ -543,7 +543,7 @@ export const T2174 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -722,7 +722,7 @@ export const T2174 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-index': 1, 'x-uid': 'roog7uz0d2o', 'x-async': false, @@ -888,7 +888,7 @@ export const T2614: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { vv0l8wohslb: { _isJSONSchemaObject: true, @@ -928,7 +928,7 @@ export const T2614: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -943,7 +943,7 @@ export const T2614: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -962,7 +962,7 @@ export const T2614: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -1024,7 +1024,7 @@ export const T2614: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { qbl84fadyr0: { _isJSONSchemaObject: true, @@ -1069,8 +1069,7 @@ export const T2614: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -1086,8 +1085,7 @@ export const T2614: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { i39cn9ve66b: { _isJSONSchemaObject: true, @@ -1128,7 +1126,7 @@ export const T2614: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { e5kqdzyj562: { _isJSONSchemaObject: @@ -1355,7 +1353,7 @@ export const T2614: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { z79dioevb4n: { _isJSONSchemaObject: true, @@ -1403,7 +1401,7 @@ export const T2614: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { j9egu0k0tkq: { _isJSONSchemaObject: true, @@ -1444,7 +1442,7 @@ export const T2614: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { esgv9d2n3jl: { _isJSONSchemaObject: @@ -1581,7 +1579,7 @@ export const T2614: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -1724,7 +1722,7 @@ export const T2993: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { vv0l8wohslb: { @@ -1768,7 +1766,7 @@ export const T2993: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -1830,7 +1828,7 @@ export const T2993: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { kvyqrrxvggn: { _isJSONSchemaObject: true, @@ -1875,7 +1873,7 @@ export const T2993: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { itg7al9oxaw: { _isJSONSchemaObject: true, @@ -1917,7 +1915,7 @@ export const T2993: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { um4p1ariq2x: { _isJSONSchemaObject: true, @@ -2017,7 +2015,7 @@ export const T2993: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { uscd5l8tu2t: { @@ -2136,7 +2134,7 @@ export const T2993: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -2201,7 +2199,7 @@ export const T2993: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -2221,7 +2219,7 @@ export const T2993: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-index': 1, properties: { actions: { @@ -2311,7 +2309,7 @@ export const T2615: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '1valv0kj8vs': { _isJSONSchemaObject: true, @@ -2351,7 +2349,7 @@ export const T2615: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -2412,7 +2410,7 @@ export const T2615: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { '8ei3tsaojf6': { _isJSONSchemaObject: true, @@ -2457,7 +2455,7 @@ export const T2615: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { i7cb2o172ey: { _isJSONSchemaObject: true, @@ -2546,7 +2544,7 @@ export const T2615: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -2612,7 +2610,7 @@ export const T2615: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -2631,7 +2629,7 @@ export const T2615: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -2693,7 +2691,7 @@ export const T2615: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { l79xm6sfjst: { _isJSONSchemaObject: true, @@ -2741,7 +2739,7 @@ export const T2615: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '7eayo28dgzo': { _isJSONSchemaObject: true, @@ -2830,7 +2828,7 @@ export const T2615: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -2936,7 +2934,7 @@ export const T2615: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { nlnfd9hnl53: { _isJSONSchemaObject: true, @@ -2981,8 +2979,7 @@ export const T2615: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -2998,8 +2995,7 @@ export const T2615: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { j9mxulol74m: { _isJSONSchemaObject: true, @@ -3215,7 +3211,7 @@ export const T2845: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { '1valv0kj8vs': { @@ -3259,7 +3255,7 @@ export const T2845: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -3325,7 +3321,7 @@ export const T2845: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', 'x-index': 1, properties: { '8ei3tsaojf6': { @@ -3375,7 +3371,7 @@ export const T2845: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-index': 1, properties: { i7cb2o172ey: { @@ -3463,7 +3459,7 @@ export const T2845: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { '3wg2gga1tgx': { _isJSONSchemaObject: true, @@ -3564,7 +3560,7 @@ export const T2845: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'fen65isdi05', 'x-async': @@ -3650,7 +3646,7 @@ export const T2845: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', properties: { dksoesw9cnq: { _isJSONSchemaObject: @@ -3728,7 +3724,7 @@ export const T2845: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', 'x-uid': 'slesgjv4uxx', 'x-async': @@ -3743,7 +3739,7 @@ export const T2845: PageConfig = { '2.0', type: 'void', 'x-initializer': - 'UpdateFormActionInitializers', + 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': @@ -3824,7 +3820,7 @@ export const T2845: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -3880,7 +3876,7 @@ export const T2845: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -3900,7 +3896,7 @@ export const T2845: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-index': 1, properties: { actions: { @@ -3967,7 +3963,7 @@ export const T2845: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-index': 1, properties: { l79xm6sfjst: { @@ -4020,7 +4016,7 @@ export const T2845: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-index': 1, properties: { '7eayo28dgzo': { @@ -4107,7 +4103,7 @@ export const T2845: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { ddo3fvkz6hw: { _isJSONSchemaObject: @@ -4235,7 +4231,7 @@ export const T2845: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -4336,7 +4332,7 @@ export const T2845: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-index': 1, properties: { nlnfd9hnl53: { @@ -4386,8 +4382,7 @@ export const T2845: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -4403,8 +4398,7 @@ export const T2845: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', 'x-index': 2, properties: { j9mxulol74m: { @@ -4491,7 +4485,7 @@ export const T2845: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { c5mcb8foh05: { _isJSONSchemaObject: @@ -4697,7 +4691,7 @@ export const T2200 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { ai6ojrzwkiv: { _isJSONSchemaObject: true, @@ -4737,7 +4731,7 @@ export const T2200 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -4752,7 +4746,7 @@ export const T2200 = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -4771,7 +4765,7 @@ export const T2200 = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -4832,7 +4826,7 @@ export const T2200 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { dv88ljcl0qw: { _isJSONSchemaObject: true, @@ -4880,7 +4874,7 @@ export const T2200 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '3i87cpmv87x': { _isJSONSchemaObject: true, @@ -4926,7 +4920,7 @@ export const T2200 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -5039,7 +5033,7 @@ export const T3106: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { cxk2aa058lc: { @@ -5089,7 +5083,7 @@ export const T3106: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-index': 1, properties: { wbvuzjzl83g: { @@ -5123,7 +5117,7 @@ export const T3106: PageConfig = { version: '2.0', type: 'void', 'x-component': 'AssociationField.SubTable', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-initializer-props': { action: false, }, @@ -5187,7 +5181,7 @@ export const T3106: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -5259,7 +5253,7 @@ export const T3251: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { xovhjqo0uig: { _isJSONSchemaObject: true, @@ -5305,7 +5299,7 @@ export const T3251: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-linkage-rules': [ { condition: { @@ -5448,7 +5442,7 @@ export const T3251: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaInitializer.test.ts index f81394c78..e24468c88 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaInitializer.test.ts @@ -7,7 +7,7 @@ test.describe('where edit form block can be added', () => { await nocoPage.goto(); await page.getByLabel('action-Action.Link-Edit-update-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByText('Form').first().click(); await page.mouse.move(300, 0); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/createFormActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/form/createFormActionInitializers.tsx index 87b57abbe..4696bec0d 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/createFormActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/form/createFormActionInitializers.tsx @@ -1,6 +1,9 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; -export const createFormActionInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const createFormActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'CreateFormActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -43,3 +46,50 @@ export const createFormActionInitializers = new SchemaInitializer({ }, ], }); + +export const createFormActionInitializers = new CompatibleSchemaInitializer( + { + name: 'createForm:configureActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Enable actions")}}', + name: 'enableActions', + children: [ + { + name: 'submit', + title: '{{t("Submit")}}', + Component: 'CreateSubmitActionInitializer', + schema: { + 'x-action-settings': {}, + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + }, + { + type: 'subMenu', + title: '{{t("Customize")}}', + name: 'customize', + children: [ + { + name: 'saveRecord', + title: '{{t("Save record")}}', + Component: 'SaveRecordActionInitializer', + }, + { + name: 'customRequest', + title: '{{t("Custom request")}}', + Component: 'CustomRequestInitializer', + }, + ], + }, + ], + }, + createFormActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/formActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/form/formActionInitializers.tsx index a16659f4a..8ff127252 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/formActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/form/formActionInitializers.tsx @@ -1,7 +1,9 @@ -import { SchemaInitializerItemType } from '../../../../application'; import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; -// 表单的操作配置 +/** + * @deprecated + * 表单的操作配置 + */ export const formActionInitializers = new SchemaInitializer({ name: 'FormActionInitializers', title: '{{t("Configure actions")}}', @@ -27,7 +29,7 @@ export const formActionInitializers = new SchemaInitializer({ type: 'divider', }, { - name: 'custom', + name: 'customize', type: 'subMenu', title: '{{t("Customize")}}', children: [ diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/formItemInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/form/formItemInitializers.tsx index 63f3c6bed..633ab1db0 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/formItemInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/form/formItemInitializers.tsx @@ -1,10 +1,12 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; import { gridRowColWrap, useFormItemInitializerFields } from '../../../../schema-initializer/utils'; import { ParentCollectionFields, AssociatedFields } from '../../../../schema-initializer/buttons/FormItemInitializers'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; -// 表单里配置字段 - -export const formItemInitializers = new SchemaInitializer({ +/** + * @deprecated + * 表单里配置字段 + */ +export const formItemInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'FormItemInitializers', wrap: gridRowColWrap, icon: 'SettingOutlined', @@ -35,3 +37,38 @@ export const formItemInitializers = new SchemaInitializer({ }, ], }); + +export const formItemInitializers = new CompatibleSchemaInitializer( + { + name: 'form:configureFields', + wrap: gridRowColWrap, + icon: 'SettingOutlined', + title: '{{t("Configure fields")}}', + items: [ + { + type: 'itemGroup', + name: 'displayFields', + title: '{{t("Display fields")}}', + useChildren: useFormItemInitializerFields, + }, + { + name: 'parentCollectionFields', + Component: ParentCollectionFields, + }, + { + name: 'associationFields', + Component: AssociatedFields, + }, + { + name: 'divider', + type: 'divider', + }, + { + name: 'addText', + title: '{{t("Add text")}}', + Component: 'MarkdownFormItemInitializer', + }, + ], + }, + formItemInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/updateFormActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/form/updateFormActionInitializers.tsx index 56aaa47fc..46bf31630 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/updateFormActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/form/updateFormActionInitializers.tsx @@ -1,6 +1,9 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; -export const updateFormActionInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const updateFormActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'UpdateFormActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -54,3 +57,61 @@ export const updateFormActionInitializers = new SchemaInitializer({ }, ], }); + +export const updateFormActionInitializers = new CompatibleSchemaInitializer( + { + name: 'editForm:configureActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Enable actions")}}', + name: 'enableActions', + children: [ + { + name: 'submit', + title: '{{t("Submit")}}', + Component: 'UpdateSubmitActionInitializer', + schema: { + 'x-action-settings': {}, + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + }, + { + type: 'subMenu', + title: '{{t("Customize")}}', + name: 'customize', + children: [ + { + name: 'popup', + title: '{{t("Popup")}}', + Component: 'PopupActionInitializer', + useComponentProps() { + return { + 'x-component': 'Action', + }; + }, + }, + { + name: 'saveRecord', + title: '{{t("Save record")}}', + Component: 'SaveRecordActionInitializer', + }, + { + type: 'item', + name: 'customRequest', + title: '{{t("Custom request")}}', + Component: 'CustomRequestInitializer', + }, + ], + }, + ], + }, + updateFormActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/grid-card/GridCardActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/grid-card/GridCardActionInitializers.tsx index 67ae9874a..5b143528a 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/grid-card/GridCardActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/grid-card/GridCardActionInitializers.tsx @@ -1,8 +1,10 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; import { useCollection_deprecated } from '../../../../collection-manager'; -// 表单的操作配置 -export const gridCardActionInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const gridCardActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'GridCardActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -80,3 +82,85 @@ export const gridCardActionInitializers = new SchemaInitializer({ }, ], }); + +export const gridCardActionInitializers = new CompatibleSchemaInitializer( + { + name: 'gridCard:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + title: "{{t('Enable actions')}}", + name: 'enableActions', + children: [ + { + name: 'filter', + title: "{{t('Filter')}}", + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'left', + }, + }, + { + name: 'addNew', + title: "{{t('Add new')}}", + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'file', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + { + name: 'refresh', + title: "{{t('Refresh')}}", + Component: 'RefreshActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + { + name: 'import', + title: "{{t('Import')}}", + Component: 'ImportActionInitializer', + schema: { + 'x-align': 'right', + 'x-acl-action': 'importXlsx', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + name: 'export', + title: "{{t('Export')}}", + Component: 'ExportActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + }, + ], + }, + ], + }, + gridCardActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaInitializer.test.ts index 8570f5539..8357c3a51 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaInitializer.test.ts @@ -4,7 +4,7 @@ test.describe('where grid card block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'Grid Card'); await expect(page.getByLabel('block-item-BlockItem-users-grid-card')).toBeVisible(); }); @@ -16,7 +16,7 @@ test.describe('configure global actions', () => { test('filter & add new & refresh', async ({ page, mockPage }) => { await mockPage(oneEmptyGridCardBlock).goto(); - await page.getByLabel('schema-initializer-ActionBar-GridCardActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-gridCard:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Refresh' }).click(); @@ -31,7 +31,7 @@ test.describe('configure global actions', () => { await expect(page.getByRole('button', { name: 'Refresh' })).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-GridCardActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-gridCard:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Refresh' }).click(); @@ -53,7 +53,7 @@ test.describe('configure item actions', () => { await mockRecord('general'); await nocoPage.goto(); - await page.getByLabel('schema-initializer-ActionBar-GridCardItemActionInitializers-general').first().hover(); + await page.getByLabel('schema-initializer-ActionBar-gridCard:configureItemActions-general').first().hover(); await page.getByRole('menuitem', { name: 'View' }).click(); await page.getByRole('menuitem', { name: 'Edit' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -68,7 +68,7 @@ test.describe('configure item actions', () => { await expect(page.getByLabel('action-Action.Link-Delete-destroy-general-grid-card').first()).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-GridCardItemActionInitializers-general').first().hover(); + await page.getByLabel('schema-initializer-ActionBar-gridCard:configureItemActions-general').first().hover(); await page.getByRole('menuitem', { name: 'View' }).click(); await page.getByRole('menuitem', { name: 'Edit' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -88,7 +88,7 @@ test.describe('configure item actions', () => { await mockRecord('general'); await nocoPage.goto(); - await page.getByLabel('schema-initializer-ActionBar-GridCardItemActionInitializers-general').first().hover(); + await page.getByLabel('schema-initializer-ActionBar-gridCard:configureItemActions-general').first().hover(); await page.getByRole('menuitem', { name: 'Customize' }).hover(); await page.getByRole('menuitem', { name: 'Popup' }).click(); await page.getByRole('menuitem', { name: 'Update record' }).click(); @@ -107,9 +107,7 @@ test.describe('configure fields', () => { await mockRecord('general'); await nocoPage.goto(); - const formItemInitializer = page - .getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general') - .first(); + const formItemInitializer = page.getByLabel('schema-initializer-Grid-details:configureFields-general').first(); await formItemInitializer.hover(); await page.getByRole('menuitem', { name: 'ID', exact: true }).click(); diff --git a/packages/core/client/src/modules/blocks/data-blocks/grid-card/gridCardItemActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/grid-card/gridCardItemActionInitializers.tsx index 3118ebe22..8418ffd6e 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/grid-card/gridCardItemActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/grid-card/gridCardItemActionInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; import { useCollection_deprecated } from '../../../../collection-manager'; -export const gridCardItemActionInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const gridCardItemActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'GridCardItemActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -98,3 +101,104 @@ export const gridCardItemActionInitializers = new SchemaInitializer({ }, ], }); + +export const gridCardItemActionInitializers = new CompatibleSchemaInitializer( + { + name: 'gridCard:configureItemActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Enable actions")}}', + name: 'enable-actions', + children: [ + { + name: 'view', + title: '{{t("View")}}', + Component: 'ViewActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'view', + 'x-decorator': 'ACLActionProvider', + 'x-align': 'left', + }, + }, + { + name: 'edit', + title: '{{t("Edit")}}', + Component: 'UpdateActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'update', + 'x-decorator': 'ACLActionProvider', + 'x-align': 'left', + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + name: 'delete', + title: '{{t("Delete")}}', + Component: 'DestroyActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'destroy', + 'x-decorator': 'ACLActionProvider', + 'x-align': 'left', + }, + useVisible() { + const collection = useCollection_deprecated(); + return collection.template !== 'sql'; + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + }, + { + type: 'subMenu', + title: '{{t("Customize")}}', + name: 'customize', + children: [ + { + name: 'popup', + title: '{{t("Popup")}}', + Component: 'PopupActionInitializer', + useComponentProps() { + return { + 'x-component': 'Action.Link', + }; + }, + }, + { + name: 'update-record', + title: '{{t("Update record")}}', + Component: 'UpdateRecordActionInitializer', + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + name: 'customRequest', + title: '{{t("Custom request")}}', + Component: 'CustomRequestInitializer', + schema: { + 'x-action': 'customize:table:request', + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + ], + }, + ], + }, + gridCardItemActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/list/ListActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/list/ListActionInitializers.tsx index ab4e0bbdc..ab7caa761 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/list/ListActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/list/ListActionInitializers.tsx @@ -1,8 +1,11 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; import { useCollection_deprecated } from '../../../../collection-manager'; -// 表单的操作配置 -export const listActionInitializers = new SchemaInitializer({ +/** + * @deprecated + * 表单的操作配置 + */ +export const listActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'ListActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -84,3 +87,89 @@ export const listActionInitializers = new SchemaInitializer({ }, ], }); + +export const listActionInitializers = new CompatibleSchemaInitializer( + { + name: 'list:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + name: 'enableActions', + title: "{{t('Enable actions')}}", + children: [ + { + name: 'filter', + title: "{{t('Filter')}}", + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'left', + }, + }, + { + name: 'addNew', + title: "{{t('Add new')}}", + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return ( + (collection.template !== 'view' || collection?.writableView) && + collection.template !== 'file' && + collection.template !== 'sql' + ); + }, + }, + { + name: 'refresh', + title: "{{t('Refresh')}}", + Component: 'RefreshActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + { + name: 'import', + title: "{{t('Import')}}", + Component: 'ImportActionInitializer', + schema: { + 'x-align': 'right', + 'x-acl-action': 'importXlsx', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + name: 'export', + title: "{{t('Export')}}", + Component: 'ExportActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + }, + ], + }, + ], + }, + listActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts index 38798576d..e1c6e7293 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts @@ -4,7 +4,7 @@ test.describe('where list block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'List'); await expect(page.getByLabel('block-item-CardItem-users-list')).toBeVisible(); }); @@ -14,7 +14,7 @@ test.describe('configure global actions', () => { test('filter & add new & refresh', async ({ page, mockPage }) => { await mockPage(oneEmptyListBlock).goto(); - await page.getByLabel('schema-initializer-ActionBar-ListActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-list:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Refresh' }).click(); @@ -29,7 +29,7 @@ test.describe('configure global actions', () => { await expect(page.getByRole('button', { name: 'Refresh' })).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-ListActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-list:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Refresh' }).click(); @@ -51,7 +51,7 @@ test.describe('configure item actions', () => { await mockRecord('general'); await nocoPage.goto(); - await page.getByLabel('schema-initializer-ActionBar-ListItemActionInitializers-general').first().hover(); + await page.getByLabel('schema-initializer-ActionBar-list:configureItemActions-general').first().hover(); await page.getByRole('menuitem', { name: 'View' }).click(); await page.getByRole('menuitem', { name: 'Edit' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -66,7 +66,7 @@ test.describe('configure item actions', () => { await expect(page.getByLabel('action-Action.Link-Delete-destroy-general-list').first()).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-ListItemActionInitializers-general').first().hover(); + await page.getByLabel('schema-initializer-ActionBar-list:configureItemActions-general').first().hover(); await page.getByRole('menuitem', { name: 'View' }).click(); await page.getByRole('menuitem', { name: 'Edit' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -86,7 +86,7 @@ test.describe('configure item actions', () => { await mockRecord('general'); await nocoPage.goto(); - await page.getByLabel('schema-initializer-ActionBar-ListItemActionInitializers-general').first().hover(); + await page.getByLabel('schema-initializer-ActionBar-list:configureItemActions-general').first().hover(); await page.getByRole('menuitem', { name: 'Customize' }).hover(); await page.getByRole('menuitem', { name: 'Popup' }).click(); await page.getByRole('menuitem', { name: 'Update record' }).click(); @@ -105,9 +105,7 @@ test.describe('configure fields', () => { await mockRecord('general'); await nocoPage.goto(); - const formItemInitializer = page - .getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general') - .first(); + const formItemInitializer = page.getByLabel('schema-initializer-Grid-details:configureFields-general').first(); // add fields await formItemInitializer.hover(); diff --git a/packages/core/client/src/modules/blocks/data-blocks/list/listItemActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/list/listItemActionInitializers.tsx index 063c4f60c..845836879 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/list/listItemActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/list/listItemActionInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; import { useCollection_deprecated } from '../../../../collection-manager'; -export const listItemActionInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const listItemActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'ListItemActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -98,3 +101,104 @@ export const listItemActionInitializers = new SchemaInitializer({ }, ], }); + +export const listItemActionInitializers = new CompatibleSchemaInitializer( + { + name: 'list:configureItemActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + items: [ + { + type: 'itemGroup', + name: 'enableActions', + title: '{{t("Enable actions")}}', + children: [ + { + name: 'view', + title: '{{t("View")}}', + Component: 'ViewActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'view', + 'x-decorator': 'ACLActionProvider', + 'x-align': 'left', + }, + }, + { + name: 'edit', + title: '{{t("Edit")}}', + Component: 'UpdateActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'update', + 'x-decorator': 'ACLActionProvider', + 'x-align': 'left', + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + name: 'delete', + title: '{{t("Delete")}}', + Component: 'DestroyActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'destroy', + 'x-decorator': 'ACLActionProvider', + 'x-align': 'left', + }, + useVisible() { + const collection = useCollection_deprecated(); + return collection.template !== 'sql'; + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + }, + { + type: 'subMenu', + title: '{{t("Customize")}}', + name: 'customize', + children: [ + { + name: 'popup', + title: '{{t("Popup")}}', + Component: 'PopupActionInitializer', + useComponentProps() { + return { + 'x-component': 'Action.Link', + }; + }, + }, + { + name: 'updateRecord', + title: '{{t("Update record")}}', + Component: 'UpdateRecordActionInitializer', + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + name: 'customRequest', + title: '{{t("Custom request")}}', + Component: 'CustomRequestInitializer', + schema: { + 'x-action': 'customize:table:request', + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + ], + }, + ], + }, + listItemActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/schemaInitializer.test.ts index 282531176..32bd72dce 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/schemaInitializer.test.ts @@ -20,7 +20,7 @@ test.describe('configure actions', () => { await createTable({ page, mockPage, fieldName: 'manyToOne' }); // add buttons - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-users').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-users').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -38,7 +38,7 @@ test.describe('configure actions', () => { await expect(page.getByRole('button', { name: 'Refresh' })).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-users').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-users').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -59,7 +59,7 @@ test.describe('configure actions', () => { test('customize: bulk update', async ({ page, mockPage }) => { await createTable({ page, mockPage, fieldName: 'manyToOne' }); - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-users').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-users').hover(); await page.getByRole('menuitem', { name: 'Customize' }).hover(); await page.getByRole('menuitem', { name: 'Bulk update' }).click(); @@ -99,6 +99,6 @@ test.describe('configure actions column', () => { }); async function createActionColumn(page: Page) { - await page.getByLabel('schema-initializer-TableV2.Selector-TableColumnInitializers-users').hover(); + await page.getByLabel('schema-initializer-TableV2.Selector-table:configureColumns-users').hover(); await page.getByRole('menuitem', { name: 'Action column' }).click(); } diff --git a/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/utils.ts b/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/utils.ts index 6b4424ad4..574ee0121 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/utils.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/table-selector/__e2e__/utils.ts @@ -18,7 +18,7 @@ export async function createTable({ .click(); // create a table block - await page.getByLabel('schema-initializer-Grid-TableSelectorInitializers-users').hover(); + await page.getByLabel('schema-initializer-Grid-popup:tableSelector:addBlock-users').hover(); await page.getByRole('menuitem', { name: 'form Table' }).click(); await page.mouse.move(300, 0); } diff --git a/packages/core/client/src/modules/blocks/data-blocks/table/TableActionColumnInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/table/TableActionColumnInitializers.tsx index 5262b2e86..0fe2fa090 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table/TableActionColumnInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/table/TableActionColumnInitializers.tsx @@ -4,11 +4,13 @@ import _ from 'lodash'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { useAPIClient } from '../../../../api-client'; -import { SchemaInitializerActionModal, SchemaInitializerItem, useSchemaInitializer } from '../../../../application'; -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; import { useCollection_deprecated } from '../../../../collection-manager'; import { createDesignable, useDesignable } from '../../../../schema-component'; import { useGetAriaLabelOfDesigner } from '../../../../schema-settings/hooks/useGetAriaLabelOfDesigner'; +import { SchemaInitializerActionModal } from '../../../../application/schema-initializer/components/SchemaInitializerActionModal'; +import { useSchemaInitializer } from '../../../../application/schema-initializer/context'; +import { SchemaInitializerItem } from '../../../../application/schema-initializer/components/SchemaInitializerItem'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; export const Resizable = () => { const { t } = useTranslation(); @@ -63,7 +65,10 @@ export const Resizable = () => { ); }; -export const tableActionColumnInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const tableActionColumnInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'TableActionColumnInitializers', insertPosition: 'beforeEnd', useInsert: function useInsert() { @@ -221,3 +226,165 @@ export const tableActionColumnInitializers = new SchemaInitializer({ }, ], }); + +export const tableActionColumnInitializers = new CompatibleSchemaInitializer( + { + name: 'table:configureItemActions', + insertPosition: 'beforeEnd', + useInsert: function useInsert() { + const { refresh } = useDesignable(); + const fieldSchema = useFieldSchema(); + const api = useAPIClient(); + const { t } = useTranslation(); + + return function insert(schema) { + const spaceSchema = fieldSchema.reduceProperties((buf, schema) => { + if (schema['x-component'] === 'Space') { + return schema; + } + return buf; + }, null); + if (!spaceSchema) { + return; + } + _.set(schema, 'x-designer-props.linkageAction', true); + const dn = createDesignable({ + t, + api, + refresh, + current: spaceSchema, + }); + dn.loadAPIClientEvents(); + dn.insertBeforeEnd(schema); + }; + }, + Component: (props: any) => { + const { getAriaLabel } = useGetAriaLabelOfDesigner(); + return ( + + ); + }, + items: [ + { + type: 'itemGroup', + name: 'actions', + title: '{{t("Enable actions")}}', + children: [ + { + type: 'item', + title: '{{t("View")}}', + name: 'view', + Component: 'ViewActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'view', + 'x-decorator': 'ACLActionProvider', + }, + }, + { + type: 'item', + name: 'edit', + title: '{{t("Edit")}}', + Component: 'UpdateActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'update', + 'x-decorator': 'ACLActionProvider', + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + type: 'item', + title: '{{t("Delete")}}', + name: 'delete', + Component: 'DestroyActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'destroy', + 'x-decorator': 'ACLActionProvider', + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + type: 'item', + title: '{{t("Add child")}}', + name: 'addChildren', + Component: 'CreateChildInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'create', + 'x-decorator': 'ACLActionProvider', + }, + useVisible() { + const fieldSchema = useFieldSchema(); + const collection = useCollection_deprecated(); + const { treeTable } = fieldSchema?.parent?.parent['x-decorator-props'] || {}; + return collection.tree && treeTable !== false; + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + }, + { + type: 'subMenu', + title: '{{t("Customize")}}', + name: 'customize', + children: [ + { + type: 'item', + title: '{{t("Popup")}}', + name: 'popup', + Component: 'PopupActionInitializer', + }, + { + type: 'item', + title: '{{t("Update record")}}', + name: 'updateRecord', + Component: 'UpdateRecordActionInitializer', + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + { + name: 'customRequest', + title: '{{t("Custom request")}}', + Component: 'CustomRequestInitializer', + schema: { + 'x-action': 'customize:table:request', + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + ], + }, + { + name: 'divider2', + type: 'divider', + }, + { + type: 'item', + name: 'columnWidth', + title: 't("Column width")', + Component: Resizable, + }, + ], + }, + tableActionColumnInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/table/TableActionInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/table/TableActionInitializers.tsx index c4028aedd..512679908 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table/TableActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/table/TableActionInitializers.tsx @@ -1,9 +1,12 @@ import { useFieldSchema } from '@formily/react'; -import { useCollection_deprecated } from '../../../..'; -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; +import { useCollection_deprecated } from '../../../../collection-manager/hooks/useCollection_deprecated'; -// 表格操作配置 -export const tableActionInitializers = new SchemaInitializer({ +/** + * @deprecated + * 表格操作配置 + */ +export const tableActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'TableActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -116,3 +119,120 @@ export const tableActionInitializers = new SchemaInitializer({ }, ], }); + +export const tableActionInitializers = new CompatibleSchemaInitializer( + { + name: 'table:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + name: 'enableActions', + title: "{{t('Enable actions')}}", + children: [ + { + type: 'item', + name: 'filter', + title: "{{t('Filter')}}", + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'left', + }, + }, + { + type: 'item', + title: "{{t('Add new')}}", + name: 'addNew', + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'file', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + { + type: 'item', + title: "{{t('Delete')}}", + name: 'delete', + Component: 'BulkDestroyActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + }, + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + { + type: 'item', + title: "{{t('Refresh')}}", + name: 'refresh', + Component: 'RefreshActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + { + name: 'toggle', + title: "{{t('Expand/Collapse')}}", + Component: 'ExpandableActionInitializer', + schema: { + 'x-align': 'right', + }, + useVisible() { + const schema = useFieldSchema(); + const collection = useCollection_deprecated(); + const { treeTable } = schema?.parent?.['x-decorator-props'] || {}; + return collection.tree && treeTable !== false; + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + { + type: 'subMenu', + name: 'customize', + title: '{{t("Customize")}}', + children: [ + { + type: 'item', + title: '{{t("Add record")}}', + name: 'addRecord', + Component: 'CustomizeAddRecordActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action': 'create', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + }, + ], + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + ], + }, + tableActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/table/TableColumnInitializers.tsx b/packages/core/client/src/modules/blocks/data-blocks/table/TableColumnInitializers.tsx index c892e4c06..dcc8d31e4 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table/TableColumnInitializers.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/table/TableColumnInitializers.tsx @@ -1,14 +1,14 @@ import { useFieldSchema } from '@formily/react'; import React, { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { SchemaInitializerChildren } from '../../../../application'; -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; import { useCompile } from '../../../../schema-component'; import { useAssociatedTableColumnInitializerFields, useInheritsTableColumnInitializerFields, useTableColumnInitializerFields, } from '../../../../schema-initializer/utils'; +import { SchemaInitializerChildren } from '../../../../application/schema-initializer/components/SchemaInitializerChildren'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; // 表格列配置 const ParentCollectionFields = () => { @@ -47,7 +47,10 @@ const AssociatedFields = () => { return {schema}; }; -export const tableColumnInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const tableColumnInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'TableColumnInitializers', insertPosition: 'beforeEnd', icon: 'SettingOutlined', @@ -106,3 +109,66 @@ export const tableColumnInitializers = new SchemaInitializer({ }, ], }); + +export const tableColumnInitializers = new CompatibleSchemaInitializer( + { + name: 'table:configureColumns', + insertPosition: 'beforeEnd', + icon: 'SettingOutlined', + title: '{{t("Configure columns")}}', + wrap: (s, { isInSubTable }) => { + if (s['x-action-column']) { + return s; + } + return { + type: 'void', + 'x-decorator': 'TableV2.Column.Decorator', + // 'x-designer': 'TableV2.Column.Designer', + 'x-toolbar': 'TableColumnSchemaToolbar', + 'x-settings': 'fieldSettings:TableColumn', + 'x-component': 'TableV2.Column', + properties: { + [s.name]: { + ...s, + }, + }, + }; + }, + items: [ + { + name: 'displayFields', + type: 'itemGroup', + title: '{{t("Display fields")}}', + // children: DisplayFields, + useChildren: useTableColumnInitializerFields, + }, + { + name: 'parentCollectionFields', + Component: ParentCollectionFields, + }, + { + name: 'associationFields', + Component: AssociatedFields, + }, + { + name: 'divider', + type: 'divider', + useVisible() { + const fieldSchema = useFieldSchema(); + return fieldSchema['x-component'] !== 'AssociationField.SubTable'; + }, + }, + { + type: 'item', + name: 'add', + title: '{{t("Action column")}}', + Component: 'TableActionColumnInitializer', + useVisible() { + const fieldSchema = useFieldSchema(); + return fieldSchema['x-component'] !== 'AssociationField.SubTable'; + }, + }, + ], + }, + tableColumnInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/dragAndDrop.test.ts b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/dragAndDrop.test.ts index de2b93435..8ee143670 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/dragAndDrop.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/dragAndDrop.test.ts @@ -2,7 +2,7 @@ import { expect, oneEmptyTableBlockBasedOnUsers, test } from '@nocobase/test/e2e test('actions', async ({ page, mockPage }) => { await mockPage(oneEmptyTableBlockBasedOnUsers).goto(); - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-users').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-users').hover(); //添加按钮 await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); diff --git a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts index 786d750b0..6cd112846 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts @@ -4,7 +4,7 @@ test.describe('where table block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'Table'); await expect(page.getByLabel('block-item-CardItem-users-table')).toBeVisible(); }); @@ -17,7 +17,7 @@ test.describe('configure actions', () => { await mockPage(oneEmptyTable).goto(); // add buttons - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-t_unp4scqamw9').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-t_unp4scqamw9').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -35,7 +35,7 @@ test.describe('configure actions', () => { await expect(page.getByRole('button', { name: 'Refresh' })).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-t_unp4scqamw9').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-t_unp4scqamw9').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); @@ -56,7 +56,7 @@ test.describe('configure actions', () => { test('customize: add record', async ({ page, mockPage }) => { await mockPage(oneEmptyTable).goto(); - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-t_unp4scqamw9').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-t_unp4scqamw9').hover(); await page.getByRole('menuitem', { name: 'Customize' }).hover(); await page.getByRole('menuitem', { name: 'add record' }).click(); @@ -70,7 +70,7 @@ test.describe('configure columns', () => { test.describe.configure({ retries: process.env.CI ? 4 : 0 }); test('action column & display collection fields & display association fields', async ({ page, mockPage }) => { await mockPage(oneEmptyTable).goto(); - const configureColumnButton = page.getByLabel('schema-initializer-TableV2-TableColumnInitializers-t_unp4scqamw9'); + const configureColumnButton = page.getByLabel('schema-initializer-TableV2-table:configureColumns-t_unp4scqamw9'); // Action column ------------------------------------------------------------- // 1. 点击开关,可以开启和关闭 Action column diff --git a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts index 983295906..6a5072a21 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts @@ -101,7 +101,7 @@ test.describe('table block schema settings', () => { ).toBeChecked(); await expect(page.getByRole('menuitem', { name: 'Set default sorting rules' })).toBeHidden(); // 显示出来 email 和 ID - await page.getByLabel('schema-initializer-TableV2-TableColumnInitializers-general').hover(); + await page.getByLabel('schema-initializer-TableV2-table:configureColumns-general').hover(); await page.getByRole('menuitem', { name: 'email' }).click(); await page.getByRole('menuitem', { name: 'ID', exact: true }).click(); await page.getByLabel('schema-initializer-TableV2-').click(); @@ -141,7 +141,7 @@ test.describe('table block schema settings', () => { } async function createColumnItem(page: Page, fieldName: string) { - await page.getByLabel('schema-initializer-TableV2-TableColumnInitializers-general').hover(); + await page.getByLabel('schema-initializer-TableV2-table:configureColumns-general').hover(); await page.getByRole('menuitem', { name: fieldName, exact: true }).click(); await page.mouse.move(300, 0); } @@ -213,7 +213,7 @@ test.describe('table block schema settings', () => { await page.getByRole('button', { name: 'OK', exact: true }).click(); // 显示出来 email 和 ID - await page.getByLabel('schema-initializer-TableV2-TableColumnInitializers-general').hover(); + await page.getByLabel('schema-initializer-TableV2-table:configureColumns-general').hover(); await page.getByRole('menuitem', { name: 'email' }).click(); await page.getByRole('menuitem', { name: 'ID', exact: true }).click(); await page.mouse.move(300, 0); @@ -567,7 +567,7 @@ test.describe('actions schema settings', () => { test.describe('popup', () => { const addSomeCustomActions = async (page: Page) => { // 先删除掉之前的 actions - await page.getByRole('button', { name: 'Actions' }).hover(); + await page.getByRole('button', { name: 'Actions', exact: true }).hover(); await page.getByLabel('designer-schema-settings-TableV2.Column-TableV2.ActionColumnDesigner-general').hover(); await page.getByRole('menuitem', { name: 'View' }).click(); await page.getByRole('menuitem', { name: 'Edit' }).click(); @@ -624,7 +624,7 @@ test.describe('actions schema settings', () => { test.describe('update record', () => { const addSomeCustomActions = async (page: Page) => { // 先删除掉之前的 actions - await page.getByRole('button', { name: 'Actions' }).hover(); + await page.getByRole('button', { name: 'Actions', exact: true }).hover(); await page.getByLabel('designer-schema-settings-TableV2.Column-TableV2.ActionColumnDesigner-general').hover(); await page.getByRole('menuitem', { name: 'View' }).click(); await page.getByRole('menuitem', { name: 'Edit' }).click(); @@ -677,13 +677,13 @@ test.describe('actions schema settings', () => { // 添加一行数据 // TODO: 使用 mockRecord 为 tree 表添加一行数据无效 - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-treeCollection').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-treeCollection').hover(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-CreateFormBlockInitializers-treeCollection').hover(); + await page.getByLabel('schema-initializer-Grid-popup:addNew:addBlock-treeCollection').hover(); await page.getByRole('menuitem', { name: 'form Form' }).click(); await page.mouse.move(300, 0); - await page.getByLabel('schema-initializer-ActionBar-CreateFormActionInitializers-treeCollection').hover(); + await page.getByLabel('schema-initializer-ActionBar-createForm:configureActions-treeCollection').hover(); await page.getByRole('menuitem', { name: 'Submit' }).click(); await page.mouse.move(300, 0); await page.getByRole('button', { name: 'Submit' }).click(); diff --git a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/templatesOfBug.ts b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/templatesOfBug.ts index 213b21f58..0e544064f 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/templatesOfBug.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/table/__e2e__/templatesOfBug.ts @@ -10,7 +10,7 @@ export const T2183 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '1n5r9s23amo': { _isJSONSchemaObject: true, @@ -50,7 +50,7 @@ export const T2183 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -87,7 +87,7 @@ export const T2183 = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -106,7 +106,7 @@ export const T2183 = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -169,7 +169,7 @@ export const T2186 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '0r1mwh6fgdj': { _isJSONSchemaObject: true, @@ -209,7 +209,7 @@ export const T2186 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -246,7 +246,7 @@ export const T2186 = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -265,7 +265,7 @@ export const T2186 = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -328,7 +328,7 @@ export const T2187 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { zp24b63pujf: { _isJSONSchemaObject: true, @@ -368,7 +368,7 @@ export const T2187 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -383,7 +383,7 @@ export const T2187 = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -402,7 +402,7 @@ export const T2187 = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -468,7 +468,7 @@ export const T2187 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { qvyfk3a9a2g: { _isJSONSchemaObject: true, @@ -513,7 +513,7 @@ export const T2187 = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { h191s1ni4am: { _isJSONSchemaObject: true, @@ -573,7 +573,7 @@ export const T2187 = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', diff --git a/packages/core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaInitializer.test.ts index e2e5f2679..41a8022e0 100644 --- a/packages/core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaInitializer.test.ts @@ -4,7 +4,7 @@ test.describe('where collapse block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'Collapse'); await expect(page.getByLabel('block-item-CardItem-users-filter-collapse')).toBeVisible(); }); diff --git a/packages/core/client/src/modules/blocks/filter-blocks/collapse/filterCollapseItemInitializer.tsx b/packages/core/client/src/modules/blocks/filter-blocks/collapse/filterCollapseItemInitializer.tsx index d403f06f8..01ae30774 100644 --- a/packages/core/client/src/modules/blocks/filter-blocks/collapse/filterCollapseItemInitializer.tsx +++ b/packages/core/client/src/modules/blocks/filter-blocks/collapse/filterCollapseItemInitializer.tsx @@ -1,3 +1,4 @@ +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; import { useOptionalFieldList } from '../../../../block-provider/hooks'; import { useCollectionManager_deprecated } from '../../../../collection-manager'; @@ -80,8 +81,10 @@ export const associationFilterFilterBlockInitializer = new SchemaInitializer({ ], }); -export const filterCollapseItemInitializer = new SchemaInitializer({ - // name: 'AssociationFilter.FilterBlockInitializer', +/** + * @deprecated + */ +export const filterCollapseItemInitializer_deprecated = new CompatibleSchemaInitializer({ name: 'AssociationFilterInitializers', style: { marginTop: 16 }, icon: 'SettingOutlined', @@ -155,3 +158,81 @@ export const filterCollapseItemInitializer = new SchemaInitializer({ }, ], }); + +export const filterCollapseItemInitializer = new CompatibleSchemaInitializer( + { + name: 'filterCollapse:configureFields', + style: { marginTop: 16 }, + icon: 'SettingOutlined', + title: '{{t("Configure fields")}}', + items: [ + { + type: 'itemGroup', + name: 'associationFields', + title: '{{t("Association fields")}}', + useChildren() { + const associatedFields = useAssociatedFields(); + const useProps = '{{useAssociationFilterBlockProps}}'; + const cm = useCollectionManager_deprecated(); + const children = associatedFields.map((field) => ({ + name: field.key, + title: field.uiSchema?.title, + Component: 'AssociationFilterDesignerDisplayField', + schema: { + name: field.name, + title: field.uiSchema?.title, + type: 'void', + // 'x-designer': 'AssociationFilter.Item.Designer', + 'x-toolbar': 'CollapseItemSchemaToolbar', + 'x-settings': 'fieldSettings:FilterCollapseItem', + 'x-component': 'AssociationFilter.Item', + 'x-component-props': { + fieldNames: { + label: cm.getCollection(field.target)?.getPrimaryKey() || 'id', + }, + useProps, + }, + properties: {}, + }, + })); + return children; + }, + }, + { + name: 'choicesFields', + type: 'itemGroup', + title: '{{t("Choices fields")}}', + hideIfNoChildren: true, + useChildren() { + const optionalList = useOptionalFieldList(); + const useProps = '{{useAssociationFilterBlockProps}}'; + const optionalChildren = optionalList.map((field) => ({ + name: field.key, + title: field.uiSchema.title, + Component: 'AssociationFilterDesignerDisplayField', + schema: { + name: field.name, + title: field.uiSchema.title, + interface: field.interface, + type: 'void', + // 'x-designer': 'AssociationFilter.Item.Designer', + 'x-toolbar': 'CollapseItemSchemaToolbar', + 'x-settings': 'fieldSettings:FilterCollapseItem', + 'x-component': 'AssociationFilter.Item', + 'x-component-props': { + fieldNames: { + label: field.name, + }, + useProps, + }, + properties: {}, + }, + })); + + return optionalChildren; + }, + }, + ], + }, + filterCollapseItemInitializer_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/filter-blocks/form/FilterFormActionInitializers.tsx b/packages/core/client/src/modules/blocks/filter-blocks/form/FilterFormActionInitializers.tsx index 12be8c91c..dc1f7ec75 100644 --- a/packages/core/client/src/modules/blocks/filter-blocks/form/FilterFormActionInitializers.tsx +++ b/packages/core/client/src/modules/blocks/filter-blocks/form/FilterFormActionInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; -// 表单的操作配置 -export const filterFormActionInitializers = new SchemaInitializer({ +/** + * @deprecated + * 表单的操作配置 + */ +export const filterFormActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'FilterFormActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -31,3 +34,37 @@ export const filterFormActionInitializers = new SchemaInitializer({ }, ], }); + +export const filterFormActionInitializers = new CompatibleSchemaInitializer( + { + name: 'filterForm:configureActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Enable actions")}}', + name: 'enableActions', + children: [ + { + name: 'filter', + title: '{{t("Filter")}}', + Component: 'CreateFilterActionInitializer', + schema: { + 'x-action-settings': {}, + }, + }, + { + name: 'reset', + title: '{{t("Reset")}}', + Component: 'CreateResetActionInitializer', + schema: { + 'x-action-settings': {}, + }, + }, + ], + }, + ], + }, + filterFormActionInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaInitializer.test.ts index 4e6d806c4..3870fa5c2 100644 --- a/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaInitializer.test.ts @@ -4,7 +4,7 @@ test.describe('where filter form block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'Filter form'); await expect(page.getByLabel('block-item-CardItem-users-filter-form')).toBeVisible(); }); @@ -14,7 +14,7 @@ test.describe('configure fields', () => { test('display collection fields & display association fields & add text', async ({ page, mockPage }) => { await mockPage(oneEmptyFilterFormBlock).goto(); - const formItemInitializer = page.getByLabel('schema-initializer-Grid-FilterFormItemInitializers-general'); + const formItemInitializer = page.getByLabel('schema-initializer-Grid-filterForm:configureFields-general'); // add fields await formItemInitializer.hover(); @@ -72,7 +72,7 @@ test.describe('configure actions', () => { test('filter & reset', async ({ page, mockPage }) => { await mockPage(oneEmptyFilterFormBlock).goto(); - await page.getByLabel('schema-initializer-ActionBar-FilterFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-filterForm:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Reset' }).click(); @@ -84,7 +84,7 @@ test.describe('configure actions', () => { await expect(page.getByLabel('action-Action-Reset-general-filter-form')).toBeVisible(); // delete buttons - await page.getByLabel('schema-initializer-ActionBar-FilterFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-filterForm:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Reset' }).click(); diff --git a/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts b/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts index a66625ecb..e022eae3c 100644 --- a/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts +++ b/packages/core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts @@ -81,7 +81,7 @@ test.describe('actions schema settings', () => { await mockPage(oneEmptyFilterFormBlock).goto(); // 创建 Filter & Reset 两个按钮 - await page.getByLabel('schema-initializer-ActionBar-FilterFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-filterForm:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).click(); await page.getByRole('menuitem', { name: 'Reset' }).click(); diff --git a/packages/core/client/src/modules/blocks/filter-blocks/form/filterFormItemInitializers.tsx b/packages/core/client/src/modules/blocks/filter-blocks/form/filterFormItemInitializers.tsx index 0e8206f3e..02ae03aa8 100644 --- a/packages/core/client/src/modules/blocks/filter-blocks/form/filterFormItemInitializers.tsx +++ b/packages/core/client/src/modules/blocks/filter-blocks/form/filterFormItemInitializers.tsx @@ -1,11 +1,14 @@ -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; import { gridRowColWrap, useFilterFormItemInitializerFields } from '../../../../schema-initializer/utils'; import { FilterParentCollectionFields, FilterAssociatedFields, } from '../../../../schema-initializer/buttons/FormItemInitializers'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; -export const filterFormItemInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const filterFormItemInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'FilterFormItemInitializers', wrap: gridRowColWrap, icon: 'SettingOutlined', @@ -36,3 +39,38 @@ export const filterFormItemInitializers = new SchemaInitializer({ }, ], }); + +export const filterFormItemInitializers = new CompatibleSchemaInitializer( + { + name: 'filterForm:configureFields', + wrap: gridRowColWrap, + icon: 'SettingOutlined', + title: '{{t("Configure fields")}}', + items: [ + { + type: 'itemGroup', + name: 'displayFields', + title: '{{t("Display fields")}}', + useChildren: useFilterFormItemInitializerFields, + }, + { + name: 'parentCollectionFields', + Component: FilterParentCollectionFields, + }, + { + name: 'associationFields', + Component: FilterAssociatedFields, + }, + { + name: 'divider', + type: 'divider', + }, + { + title: '{{t("Add text")}}', + Component: 'MarkdownFormItemInitializer', + name: 'addText', + }, + ], + }, + filterFormItemInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaInitializer.test.ts index 7aca90e7b..50365c718 100644 --- a/packages/core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaInitializer.test.ts @@ -4,7 +4,7 @@ test.describe('where markdown block can be added', () => { test('page', async ({ page, mockPage }) => { await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await createBlockInPage(page, 'Markdown'); await expect(page.getByLabel('block-item-Markdown.Void-markdown')).toBeVisible(); }); diff --git a/packages/core/client/src/modules/dialog/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/dialog/__e2e__/schemaInitializer.test.ts index 702785999..47f4e2567 100644 --- a/packages/core/client/src/modules/dialog/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/dialog/__e2e__/schemaInitializer.test.ts @@ -23,7 +23,7 @@ test.describe('where to open a popup and what can be added to it', () => { await expect(page.getByText('test123')).toBeVisible(); // add blocks - await page.getByLabel('schema-initializer-Grid-CreateFormBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:addNew:addBlock-general').hover(); await page.getByText('Form').click(); await page.getByText('Markdown').click(); @@ -48,12 +48,12 @@ test.describe('where to open a popup and what can be added to it', () => { await expect(page.getByText('test7')).toBeVisible(); // add blocks - await page.getByLabel('schema-initializer-Grid-CusomeizeCreateFormBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:addRecord:addBlock-general').hover(); await page.getByText('Form').hover(); await page.getByRole('menuitem', { name: 'Users' }).click(); // add Markdown - await page.getByLabel('schema-initializer-Grid-CusomeizeCreateFormBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:addRecord:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'Markdown' }).click(); await expect(page.getByLabel('block-item-CardItem-users-form')).toBeVisible(); @@ -77,7 +77,7 @@ test.describe('where to open a popup and what can be added to it', () => { await expect(page.getByText('test8')).toBeVisible(); // add blocks - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'Details' }).click(); await page.getByText('Form').first().click(); await page.getByRole('menuitem', { name: 'Markdown' }).click(); @@ -106,13 +106,13 @@ test.describe('where to open a popup and what can be added to it', () => { await page.getByRole('button', { name: 'OK', exact: true }).click(); // add relationship blocks - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'Many to one' }).hover(); await page.getByRole('menuitem', { name: 'Details' }).click(); await page.mouse.move(300, 0); - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'One to many' }).hover(); // 下拉列表中,可选择以下区块进行创建 @@ -141,7 +141,7 @@ test.describe('where to open a popup and what can be added to it', () => { await expect(page.getByText('test1')).toBeVisible(); // add blocks - await page.getByLabel('schema-initializer-Grid-BulkEditBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:bulkEdit:addBlock-general').hover(); await page.getByText('Form').click(); await page.getByRole('menuitem', { name: 'Markdown' }).click(); await page.mouse.move(300, 0); @@ -170,7 +170,7 @@ test.describe('where to open a popup and what can be added to it', () => { await expect(page.getByText('test8')).toBeVisible(); // add blocks - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'Details' }).click(); await page.getByText('Form').first().click(); await page.getByRole('menuitem', { name: 'Markdown' }).click(); @@ -181,14 +181,14 @@ test.describe('where to open a popup and what can be added to it', () => { await expect(page.getByLabel('block-item-Markdown.Void-general-markdown')).toBeVisible(); // add relationship blocks - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'Many to one' }).hover(); await page.getByRole('menuitem', { name: 'Details' }).click(); await page.mouse.move(300, 0); await expect(page.getByLabel('block-item-CardItem-general-').nth(2)).toBeVisible(); - await page.getByLabel('schema-initializer-Grid-RecordBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:common:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'One to many' }).hover(); // 下拉列表中,可选择以下区块进行创建 @@ -225,7 +225,7 @@ test.describe('where to open a popup and what can be added to it', () => { await expect(page.getByLabel('block-item-Markdown.Void-roles-form')).toBeVisible(); async function addBlock(name: string) { - await page.getByLabel('schema-initializer-Grid-TableSelectorInitializers-roles').hover(); + await page.getByLabel('schema-initializer-Grid-popup:tableSelector:addBlock-roles').hover(); await page.getByRole('menuitem', { name }).click(); await page.mouse.move(300, 0); } diff --git a/packages/core/client/src/modules/dialog/__e2e__/templatesOfBug.ts b/packages/core/client/src/modules/dialog/__e2e__/templatesOfBug.ts index ad594799c..f2f1f583c 100644 --- a/packages/core/client/src/modules/dialog/__e2e__/templatesOfBug.ts +++ b/packages/core/client/src/modules/dialog/__e2e__/templatesOfBug.ts @@ -13,7 +13,7 @@ export const T2797: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { '921il71tsii': { @@ -59,7 +59,7 @@ export const T2797: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -74,7 +74,7 @@ export const T2797: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -94,7 +94,7 @@ export const T2797: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-index': 1, properties: { actions: { @@ -161,7 +161,7 @@ export const T2797: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-index': 1, properties: { uq6k35ibdum: { @@ -214,7 +214,7 @@ export const T2797: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-index': 1, 'x-uid': '1d3zru9pi2o', 'x-async': false, @@ -223,7 +223,7 @@ export const T2797: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -286,7 +286,7 @@ export const T2797: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-index': 1, properties: { i7919iug0zf: { @@ -367,7 +367,7 @@ export const T2797: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', 'x-index': 1, 'x-uid': 'k9p2rqt49v1', @@ -382,7 +382,7 @@ export const T2797: PageConfig = { '2.0', type: 'void', 'x-initializer': - 'UpdateFormActionInitializers', + 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': @@ -594,7 +594,7 @@ export const T2838: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { ocvzef7y4nh: { @@ -638,7 +638,7 @@ export const T2838: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -653,7 +653,7 @@ export const T2838: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -673,7 +673,7 @@ export const T2838: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-index': 1, properties: { actions: { @@ -740,7 +740,7 @@ export const T2838: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-index': 1, properties: { w9u8i9nzh10: { @@ -791,8 +791,7 @@ export const T2838: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -856,7 +855,7 @@ export const T2838: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-index': 1, properties: { nclrn6m8w40: { @@ -935,7 +934,7 @@ export const T2838: PageConfig = { '2.0', type: 'void', 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': @@ -1039,7 +1038,7 @@ export const T2838: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-index': 1, properties: { @@ -1133,7 +1132,7 @@ export const T2838: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', 'x-index': 1, properties: { @@ -1222,7 +1221,7 @@ export const T2838: PageConfig = { '2.0', type: 'void', 'x-initializer': - 'UpdateFormActionInitializers', + 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': @@ -1344,7 +1343,7 @@ export const T2838: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'details:configureFields', 'x-index': 2, 'x-uid': '1et421zrsz4', @@ -1400,8 +1399,7 @@ export const T2838: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', 'x-index': 2, 'x-uid': 'j4qxeoy1pqw', 'x-async': false, diff --git a/packages/core/client/src/modules/fields/component/Picker/TableSelectorInitializers.tsx b/packages/core/client/src/modules/fields/component/Picker/TableSelectorInitializers.tsx index 0ad6d3a85..defd4cf93 100644 --- a/packages/core/client/src/modules/fields/component/Picker/TableSelectorInitializers.tsx +++ b/packages/core/client/src/modules/fields/component/Picker/TableSelectorInitializers.tsx @@ -1,8 +1,11 @@ import { useCollection_deprecated } from '../../../..'; -import { SchemaInitializer } from '../../../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../../../application/schema-initializer/CompatibleSchemaInitializer'; import { gridRowColWrap } from '../../../../schema-initializer/utils'; -export const tableSelectorInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const tableSelectorInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'TableSelectorInitializers', wrap: gridRowColWrap, title: '{{t("Add block")}}', @@ -82,3 +85,87 @@ export const tableSelectorInitializers = new SchemaInitializer({ }, ], }); + +export const tableSelectorInitializers = new CompatibleSchemaInitializer( + { + name: 'popup:tableSelector:addBlock', + wrap: gridRowColWrap, + title: '{{t("Add block")}}', + icon: 'PlusOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Selector")}}', + name: 'selector', + children: [ + { + name: 'title', + title: 'Table', + Component: 'TableSelectorInitializer', + }, + ], + }, + { + type: 'itemGroup', + title: '{{t("Filter blocks")}}', + name: 'filterBlocks', + useChildren() { + const { name, dataSource } = useCollection_deprecated(); + return [ + { + name: 'filterFormBlockInTableSelector', + title: '{{t("Form")}}', + Component: 'FilterFormBlockInitializer', + componentProps: { + filterMenuItemChildren() { + return false; + }, + onlyCurrentDataSource: true, + }, + collectionName: name, + dataSource, + }, + { + name: 'filterCollapseBlockInTableSelector', + title: '{{t("Collapse")}}', + Component: 'FilterCollapseBlockInitializer', + componentProps: { + filterMenuItemChildren() { + return false; + }, + onlyCurrentDataSource: true, + }, + collectionName: name, + dataSource, + }, + ]; + }, + }, + { + type: 'itemGroup', + title: '{{t("Other blocks")}}', + name: 'otherBlocks', + children: [ + { + title: '{{t("Add text")}}', + Component: 'BlockItemInitializer', + name: 'addText', + schema: { + type: 'void', + 'x-editable': false, + 'x-decorator': 'BlockItem', + // 'x-designer': 'Markdown.Void.Designer', + 'x-toolbar': 'BlockSchemaToolbar', + 'x-settings': 'blockSettings:markdown', + 'x-component': 'Markdown.Void', + 'x-component-props': { + content: '{{t("This is a demo text, **supports Markdown syntax**.")}}', + }, + }, + }, + ], + }, + ], + }, + tableSelectorInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/menu/PageMenuItem.tsx b/packages/core/client/src/modules/menu/PageMenuItem.tsx index 0c2096d55..494bfcd7b 100644 --- a/packages/core/client/src/modules/menu/PageMenuItem.tsx +++ b/packages/core/client/src/modules/menu/PageMenuItem.tsx @@ -3,9 +3,9 @@ import { SchemaOptionsContext } from '@formily/react'; import { uid } from '@formily/shared'; import React, { useCallback, useContext } from 'react'; import { useTranslation } from 'react-i18next'; -import { FormDialog, SchemaComponent, SchemaComponentOptions } from '../../schema-component'; import { SchemaInitializerItem, useSchemaInitializer } from '../../application'; import { useGlobalTheme } from '../../global-theme'; +import { FormDialog, SchemaComponent, SchemaComponentOptions } from '../../schema-component'; import { useStyles } from '../../schema-component/antd/menu/MenuItemInitializers'; export const PageMenuItem = () => { @@ -75,7 +75,7 @@ export const PageMenuItem = () => { [uid()]: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/modules/menu/menuItemInitializer.tsx b/packages/core/client/src/modules/menu/menuItemInitializer.tsx index b5271258f..d9b94ec34 100644 --- a/packages/core/client/src/modules/menu/menuItemInitializer.tsx +++ b/packages/core/client/src/modules/menu/menuItemInitializer.tsx @@ -3,7 +3,10 @@ import { LinkMenuItem } from './LinkMenuItem'; import { PageMenuItem } from './PageMenuItem'; import { GroupItem } from './GroupItem'; -export const menuItemInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const menuItemInitializer_deprecated = new SchemaInitializer({ name: 'MenuItemInitializers', insertPosition: 'beforeEnd', icon: 'PlusOutlined', @@ -26,3 +29,24 @@ export const menuItemInitializer = new SchemaInitializer({ }, ], }); + +export const menuItemInitializer = new SchemaInitializer({ + name: 'menuInitializers:menuItem', + insertPosition: 'beforeEnd', + icon: 'PlusOutlined', + title: '{{t("Add menu item")}}', + items: [ + { + name: 'group', + Component: GroupItem, + }, + { + name: 'page', + Component: PageMenuItem, + }, + { + name: 'link', + Component: LinkMenuItem, + }, + ], +}); diff --git a/packages/core/client/src/modules/page/BlockInitializers.tsx b/packages/core/client/src/modules/page/BlockInitializers.tsx index e5611365c..d532e63aa 100644 --- a/packages/core/client/src/modules/page/BlockInitializers.tsx +++ b/packages/core/client/src/modules/page/BlockInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../application/schema-initializer/CompatibleSchemaInitializer'; import { gridRowColWrap } from '../../schema-initializer/utils'; -export const blockInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const blockInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'BlockInitializers', title: '{{t("Add block")}}', icon: 'PlusOutlined', @@ -70,3 +73,76 @@ export const blockInitializers = new SchemaInitializer({ }, ], }); + +export const blockInitializers = new CompatibleSchemaInitializer( + { + name: 'page:addBlock', + title: '{{t("Add block")}}', + icon: 'PlusOutlined', + wrap: gridRowColWrap, + items: [ + { + name: 'dataBlocks', + title: '{{t("Data blocks")}}', + type: 'itemGroup', + children: [ + { + name: 'table', + title: '{{t("Table")}}', + Component: 'TableBlockInitializer', + }, + { + name: 'form', + title: '{{t("Form")}}', + Component: 'FormBlockInitializer', + }, + { + name: 'details', + title: '{{t("Details")}}', + Component: 'DetailsBlockInitializer', + }, + { + name: 'list', + title: '{{t("List")}}', + Component: 'ListBlockInitializer', + }, + { + name: 'gridCard', + title: '{{t("Grid Card")}}', + Component: 'GridCardBlockInitializer', + }, + ], + }, + { + name: 'filterBlocks', + title: '{{t("Filter blocks")}}', + type: 'itemGroup', + children: [ + { + name: 'filterForm', + title: '{{t("Form")}}', + Component: 'FilterFormBlockInitializer', + }, + { + name: 'filterCollapse', + title: '{{t("Collapse")}}', + Component: 'FilterCollapseBlockInitializer', + }, + ], + }, + { + name: 'otherBlocks', + type: 'itemGroup', + title: '{{t("Other blocks")}}', + children: [ + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + ], + }, + ], + }, + blockInitializers_deprecated, +); diff --git a/packages/core/client/src/modules/page/__e2e__/schemaSettings.test.ts b/packages/core/client/src/modules/page/__e2e__/schemaSettings.test.ts index 405173e4f..cba11d367 100644 --- a/packages/core/client/src/modules/page/__e2e__/schemaSettings.test.ts +++ b/packages/core/client/src/modules/page/__e2e__/schemaSettings.test.ts @@ -2,7 +2,7 @@ import { Page, expect, test } from '@nocobase/test/e2e'; test.describe('page schema settings', () => { const showMenu = async (page: Page) => { - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByLabel('designer-schema-settings-Page').hover(); }; @@ -68,7 +68,7 @@ test.describe('tabs schema settings', () => { } async function enablePageTabs(page) { - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('button', { name: 'designer-schema-settings-Page' }).hover(); await page.getByRole('menuitem', { name: 'Enable page tabs' }).click(); await page.mouse.move(300, 0); diff --git a/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx b/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx index ce184b1ec..0f26e5bef 100644 --- a/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx +++ b/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx @@ -6,7 +6,7 @@ import { Alert, Flex, ModalProps, Tag } from 'antd'; import React, { useCallback, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { RemoteSelect, useCompile, useDesignable } from '../..'; -import { useApp } from '../../../application'; +import { isInitializersSame, useApp } from '../../../application'; import { usePlugin } from '../../../application/hooks'; import { SchemaSettingOptions, SchemaSettings } from '../../../application/schema-settings'; import { useSchemaToolbar } from '../../../application/schema-toolbar'; @@ -139,7 +139,7 @@ export function AssignedFieldValues() { type: 'void', 'x-uid': uid(), 'x-component': 'Grid', - 'x-initializer': 'CustomFormItemInitializers', + 'x-initializer': 'assignFieldValuesForm:configureFields', }; const tips = { 'customize:update': t( @@ -671,7 +671,7 @@ export const actionSettingsItems: SchemaSettingOptions['items'] = [ const fieldSchema = useFieldSchema(); return ( fieldSchema['x-action'] === 'submit' && - fieldSchema.parent?.['x-initializer'] === 'CreateFormActionInitializers' + isInitializersSame(fieldSchema.parent?.['x-initializer'], 'createForm:configureActions') ); }, }, @@ -745,6 +745,10 @@ export function SecondConFirm() { /> ); } + +/** + * @deprecated + */ export const actionSettings = new SchemaSettings({ name: 'ActionSettings', items: actionSettingsItems, diff --git a/packages/core/client/src/schema-component/antd/action/demos/demo6.tsx b/packages/core/client/src/schema-component/antd/action/demos/demo6.tsx index daf885e29..9f7fc3146 100644 --- a/packages/core/client/src/schema-component/antd/action/demos/demo6.tsx +++ b/packages/core/client/src/schema-component/antd/action/demos/demo6.tsx @@ -13,7 +13,7 @@ import { import React from 'react'; const addActionButton = new SchemaInitializer({ - name: 'AddActionButton', + name: 'addActionButton', designable: true, title: 'Configure actions', style: { @@ -58,7 +58,7 @@ const schema: ISchema = { actions: { type: 'void', 'x-component': 'ActionBar', - 'x-initializer': 'AddActionButton', + 'x-initializer': 'addActionButton', 'x-uid': uid(), properties: { a1: { diff --git a/packages/core/client/src/schema-component/antd/association-field/schema.ts b/packages/core/client/src/schema-component/antd/association-field/schema.ts index 76331ff1e..23ceada49 100644 --- a/packages/core/client/src/schema-component/antd/association-field/schema.ts +++ b/packages/core/client/src/schema-component/antd/association-field/schema.ts @@ -6,7 +6,7 @@ export default { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', }, }, }, @@ -35,7 +35,7 @@ export default { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: {}, }, }, @@ -55,7 +55,7 @@ export default { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', properties: {}, }, footer: { @@ -73,7 +73,7 @@ export default { 'x-component': 'Action', // 'x-designer': 'Action.Designer', 'x-toolbar': 'ActionSchemaToolbar', - 'x-settings': 'actionSettings:updateSubmit', + 'x-settings': 'actionSettings:submit', 'x-component-props': { type: 'primary', htmlType: 'submit', @@ -110,7 +110,7 @@ export default { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, @@ -122,7 +122,7 @@ export default { SubTable: { type: 'void', 'x-component': 'AssociationField.SubTable', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-initializer-props': { action: false, }, diff --git a/packages/core/client/src/schema-component/antd/association-filter/ActionBarAssociationFilterAction.tsx b/packages/core/client/src/schema-component/antd/association-filter/ActionBarAssociationFilterAction.tsx index 35c409265..29443a477 100644 --- a/packages/core/client/src/schema-component/antd/association-filter/ActionBarAssociationFilterAction.tsx +++ b/packages/core/client/src/schema-component/antd/association-filter/ActionBarAssociationFilterAction.tsx @@ -7,6 +7,11 @@ import { useBlockRequestContext } from '../../../block-provider'; import { mergeFilter } from '../../../filter-provider/utils'; import { ActionInitializer } from '../../../schema-initializer/items/ActionInitializer'; +/** + * @deprecated + * @param props + * @returns + */ export const ActionBarAssociationFilterAction = (props) => { const { refresh } = useContext(SchemaComponentContext); const fieldSchema = useFieldSchema(); diff --git a/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Initializer.tsx b/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Initializer.tsx index ba5e77ca2..b99d7f45e 100644 --- a/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Initializer.tsx +++ b/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.Initializer.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializerItemType } from '../../../application'; import { SchemaInitializer } from '../../../application/schema-initializer/SchemaInitializer'; +import { SchemaInitializerItemType } from '../../../application/schema-initializer/types'; import { useAssociatedFields } from '../../../filter-provider/utils'; +/** + * @deprecated + */ export const associationFilterInitializer = new SchemaInitializer({ name: 'AssociationFilter.Initializer', style: { diff --git a/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.tsx b/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.tsx index ba122283e..ce5551cc4 100644 --- a/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.tsx +++ b/packages/core/client/src/schema-component/antd/association-filter/AssociationFilter.tsx @@ -15,6 +15,7 @@ import { Plugin } from '../../../application/Plugin'; import { associationFilterFilterBlockInitializer, filterCollapseItemInitializer, + filterCollapseItemInitializer_deprecated, } from '../../../modules/blocks/filter-blocks/collapse/filterCollapseItemInitializer'; import { associationFilterInitializer } from './AssociationFilter.Initializer'; @@ -104,6 +105,7 @@ AssociationFilter.useAssociationField = () => { export class AssociationFilterPlugin extends Plugin { async load() { this.app.schemaInitializerManager.add(associationFilterFilterBlockInitializer); + this.app.schemaInitializerManager.add(filterCollapseItemInitializer_deprecated); this.app.schemaInitializerManager.add(filterCollapseItemInitializer); this.app.schemaInitializerManager.add(associationFilterInitializer); } diff --git a/packages/core/client/src/schema-component/antd/form-item/FormItem.Settings.tsx b/packages/core/client/src/schema-component/antd/form-item/FormItem.Settings.tsx index 5f669056f..c0f7886c6 100644 --- a/packages/core/client/src/schema-component/antd/form-item/FormItem.Settings.tsx +++ b/packages/core/client/src/schema-component/antd/form-item/FormItem.Settings.tsx @@ -32,6 +32,9 @@ import { getTempFieldState } from '../form-v2/utils'; import { useColorFields } from '../table-v2/Table.Column.Designer'; import { useColumnSchema } from '../../../schema-component/antd/table-v2/Table.Column.Decorator'; +/** + * @deprecated + */ export const formItemSettings = new SchemaSettings({ name: 'FormItemSettings', items: [ diff --git a/packages/core/client/src/schema-component/antd/form-v2/Form.Settings.tsx b/packages/core/client/src/schema-component/antd/form-v2/Form.Settings.tsx index f163e09e8..463fcf5aa 100644 --- a/packages/core/client/src/schema-component/antd/form-v2/Form.Settings.tsx +++ b/packages/core/client/src/schema-component/antd/form-v2/Form.Settings.tsx @@ -17,6 +17,9 @@ import { SchemaSettingsDataScope } from '../../../schema-settings/SchemaSettings import { useDesignable } from '../../hooks'; import { removeNullCondition } from '../filter'; +/** + * @deprecated + */ export const formSettings = new SchemaSettings({ name: 'FormSettings', items: [ @@ -83,6 +86,9 @@ export const formSettings = new SchemaSettings({ ], }); +/** + * @deprecated + */ export const readPrettyFormSettings = new SchemaSettings({ name: 'ReadPrettyFormSettings', items: [ @@ -122,6 +128,9 @@ export const readPrettyFormSettings = new SchemaSettings({ ], }); +/** + * @deprecated + */ export const formDetailsSettings = new SchemaSettings({ name: 'FormDetailsSettings', items: [ diff --git a/packages/core/client/src/schema-component/antd/form/Form.Settings.tsx b/packages/core/client/src/schema-component/antd/form/Form.Settings.tsx index 54b711f5a..de11dd456 100644 --- a/packages/core/client/src/schema-component/antd/form/Form.Settings.tsx +++ b/packages/core/client/src/schema-component/antd/form/Form.Settings.tsx @@ -2,6 +2,9 @@ import { SchemaSettings } from '../../../application/schema-settings'; import { useCollection_deprecated } from '../../../collection-manager'; import { SchemaSettingsTemplate } from '../../../schema-settings/SchemaSettings'; +/** + * @deprecated + */ export const formV1Settings = new SchemaSettings({ name: 'FormV1Settings', items: [ diff --git a/packages/core/client/src/schema-component/antd/grid/demos/demo3.tsx b/packages/core/client/src/schema-component/antd/grid/demos/demo3.tsx index a1219f869..03f6e560c 100644 --- a/packages/core/client/src/schema-component/antd/grid/demos/demo3.tsx +++ b/packages/core/client/src/schema-component/antd/grid/demos/demo3.tsx @@ -30,7 +30,7 @@ const gridRowColWrap = (schema) => { }; export const addBlockButton = new SchemaInitializer({ - name: 'AddBlockButton', + name: 'addBlockButton', title: 'Add block', wrap: gridRowColWrap, items: [ @@ -55,7 +55,7 @@ const schema: ISchema = { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'AddBlockButton', + 'x-initializer': 'addBlockButton', 'x-uid': uid(), properties: {}, }, diff --git a/packages/core/client/src/schema-component/antd/menu/Menu.Designer.tsx b/packages/core/client/src/schema-component/antd/menu/Menu.Designer.tsx index 2e6e72624..9950aa41d 100644 --- a/packages/core/client/src/schema-component/antd/menu/Menu.Designer.tsx +++ b/packages/core/client/src/schema-component/antd/menu/Menu.Designer.tsx @@ -147,7 +147,7 @@ const InsertMenuItems = (props) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: {}, }, }, diff --git a/packages/core/client/src/schema-component/antd/page/Page.Settings.tsx b/packages/core/client/src/schema-component/antd/page/Page.Settings.tsx index 5fdc6c610..4d9576cf9 100644 --- a/packages/core/client/src/schema-component/antd/page/Page.Settings.tsx +++ b/packages/core/client/src/schema-component/antd/page/Page.Settings.tsx @@ -9,6 +9,9 @@ function useNotDisableHeader() { return !fieldSchema['x-component-props']?.disablePageHeader; } +/** + * @deprecated + */ export const pageSettings = new SchemaSettings({ name: 'PageSettings', items: [ diff --git a/packages/core/client/src/schema-component/antd/page/Page.tsx b/packages/core/client/src/schema-component/antd/page/Page.tsx index 136037a98..95133313d 100644 --- a/packages/core/client/src/schema-component/antd/page/Page.tsx +++ b/packages/core/client/src/schema-component/antd/page/Page.tsx @@ -146,7 +146,7 @@ export const Page = (props) => { title, 'x-icon': icon, 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: {}, }); }} diff --git a/packages/core/client/src/schema-component/antd/page/PageTab.Settings.tsx b/packages/core/client/src/schema-component/antd/page/PageTab.Settings.tsx index 029fb4687..8c5ae397c 100644 --- a/packages/core/client/src/schema-component/antd/page/PageTab.Settings.tsx +++ b/packages/core/client/src/schema-component/antd/page/PageTab.Settings.tsx @@ -5,6 +5,9 @@ import { useDesignable } from '../../hooks'; import { useSchemaToolbar } from '../../../application/schema-toolbar'; import { SchemaSettings } from '../../../application/schema-settings/SchemaSettings'; +/** + * @deprecated + */ export const pageTabSettings = new SchemaSettings({ name: 'PageTabSettings', items: [ diff --git a/packages/core/client/src/schema-initializer/buttons/CustomFormItemInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/CustomFormItemInitializers.tsx index 24c1c295a..e224dd872 100644 --- a/packages/core/client/src/schema-initializer/buttons/CustomFormItemInitializers.tsx +++ b/packages/core/client/src/schema-initializer/buttons/CustomFormItemInitializers.tsx @@ -1,9 +1,9 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { SchemaInitializerChildren } from '../../application'; -import { SchemaInitializer } from '../../application/schema-initializer/SchemaInitializer'; import { useCompile } from '../../schema-component'; import { gridRowColWrap, useCustomFormItemInitializerFields, useInheritsFormItemInitializerFields } from '../utils'; +import { SchemaInitializerChildren } from '../../application/schema-initializer/components/SchemaInitializerChildren'; +import { CompatibleSchemaInitializer } from '../../application/schema-initializer/CompatibleSchemaInitializer'; // 表单里配置字段 const ParentCollectionFields = () => { @@ -24,7 +24,10 @@ const ParentCollectionFields = () => { return {res}; }; -export const customFormItemInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const customFormItemInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'CustomFormItemInitializers', wrap: gridRowColWrap, icon: 'SettingOutlined', @@ -42,3 +45,25 @@ export const customFormItemInitializers = new SchemaInitializer({ }, ], }); + +export const customFormItemInitializers = new CompatibleSchemaInitializer( + { + name: 'assignFieldValuesForm:configureFields', + wrap: gridRowColWrap, + icon: 'SettingOutlined', + title: '{{t("Configure fields")}}', + items: [ + { + type: 'itemGroup', + title: '{{t("Configure fields")}}', + name: 'configureFields', + useChildren: useCustomFormItemInitializerFields, + }, + { + name: 'parentCollectionFields', + Component: ParentCollectionFields, + }, + ], + }, + customFormItemInitializers_deprecated, +); diff --git a/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx index 5384c3d5d..141b070fb 100644 --- a/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx +++ b/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx @@ -1,8 +1,8 @@ import { Schema, useFieldSchema } from '@formily/react'; import { useMemo } from 'react'; -import { useCollection_deprecated, useCollectionManager_deprecated } from '../..'; +import { useCollectionManager_deprecated, useCollection_deprecated } from '../..'; import { SchemaInitializerItemType, useSchemaInitializer } from '../../application'; -import { SchemaInitializer } from '../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../application/schema-initializer/CompatibleSchemaInitializer'; import { gridRowColWrap } from '../utils'; const recursiveParent = (schema: Schema) => { @@ -236,7 +236,10 @@ function useRecordBlocks() { return res; } -export const recordBlockInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const recordBlockInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'RecordBlockInitializers', wrap: gridRowColWrap, title: '{{t("Add block")}}', @@ -321,3 +324,92 @@ export const recordBlockInitializers = new SchemaInitializer({ }, ], }); + +export const recordBlockInitializers = new CompatibleSchemaInitializer( + { + name: 'popup:common:addBlock', + wrap: gridRowColWrap, + title: '{{t("Add block")}}', + icon: 'PlusOutlined', + items: [ + { + type: 'itemGroup', + name: 'currentRecordBlocks', + title: '{{t("Current record blocks")}}', + useChildren: useRecordBlocks, + }, + { + name: 'filterBlocks', + title: '{{t("Filter blocks")}}', + type: 'itemGroup', + useVisible() { + const collection = useCollection_deprecated(); + return collection.fields.some((field) => ['hasMany', 'belongsToMany'].includes(field.type)); + }, + children: [ + { + name: 'filterForm', + title: '{{t("Form")}}', + Component: 'FilterFormBlockInitializer', + useComponentProps() { + const collection = useCollection_deprecated(); + const toManyField = useMemo( + () => collection.fields.filter((field) => ['hasMany', 'belongsToMany'].includes(field.type)), + [collection.fields], + ); + + return { + filterMenuItemChildren(collection) { + return toManyField.some((field) => field.target === collection.name); + }, + onlyCurrentDataSource: true, + }; + }, + }, + { + name: 'filterCollapse', + title: '{{t("Collapse")}}', + Component: 'FilterCollapseBlockInitializer', + useComponentProps() { + const collection = useCollection_deprecated(); + const toManyField = useMemo( + () => collection.fields.filter((field) => ['hasMany', 'belongsToMany'].includes(field.type)), + [collection.fields], + ); + + return { + filterMenuItemChildren(collection) { + return toManyField.some((field) => field.target === collection.name); + }, + onlyCurrentDataSource: true, + }; + }, + }, + ], + }, + { + type: 'itemGroup', + name: 'relationshipBlocks', + title: '{{t("Relationship blocks")}}', + useChildren: useRelationFields, + useVisible() { + const res = useRelationFields(); + return res.length > 0; + }, + }, + { + type: 'itemGroup', + name: 'otherBlocks', + title: '{{t("Other blocks")}}', + children: [ + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + ], + }, + ], + }, + recordBlockInitializers_deprecated, +); diff --git a/packages/core/client/src/schema-initializer/buttons/SubTableActionInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/SubTableActionInitializers.tsx index 7068482e7..561f0c205 100644 --- a/packages/core/client/src/schema-initializer/buttons/SubTableActionInitializers.tsx +++ b/packages/core/client/src/schema-initializer/buttons/SubTableActionInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '../../application/schema-initializer/SchemaInitializer'; +import { CompatibleSchemaInitializer } from '../../application/schema-initializer/CompatibleSchemaInitializer'; -// 表格操作配置 -export const subTableActionInitializers = new SchemaInitializer({ +/** + * @deprecated + * 表格操作配置 + */ +export const subTableActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'SubTableActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -34,3 +37,40 @@ export const subTableActionInitializers = new SchemaInitializer({ }, ], }); + +export const subTableActionInitializers = new CompatibleSchemaInitializer( + { + name: 'subTable:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + title: "{{t('Enable actions')}}", + name: 'enableActions', + children: [ + { + name: 'addNew', + title: "{{t('Add new')}}", + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + { + name: 'delete', + title: "{{t('Delete')}}", + Component: 'BulkDestroyActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + ], + }, + ], + }, + subTableActionInitializers_deprecated, +); diff --git a/packages/core/client/src/schema-initializer/buttons/TabPaneInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/TabPaneInitializers.tsx index 2fa3422c6..b0bc396e2 100644 --- a/packages/core/client/src/schema-initializer/buttons/TabPaneInitializers.tsx +++ b/packages/core/client/src/schema-initializer/buttons/TabPaneInitializers.tsx @@ -16,11 +16,11 @@ export const TabPaneInitializers = (props?: any) => { const ctx = useActionContext(); let initializer = gridInitializer; if (!initializer) { - initializer = 'RecordBlockInitializers'; + initializer = 'popup:common:addBlock'; if (isCreate || !record) { - initializer = 'CreateFormBlockInitializers'; + initializer = 'popup:addNew:addBlock'; } else if (isBulkEdit) { - initializer = 'BulkEditBlockInitializers'; + initializer = 'popup:bulkEdit:addBlock'; } } return { @@ -138,18 +138,27 @@ export const TabPaneInitializersForBulkEditFormBlock = (props) => { return ; }; -export const tabPaneInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const tabPaneInitializers_deprecated = new SchemaInitializer({ name: 'TabPaneInitializers', Component: TabPaneInitializers, popover: false, }); +/** + * @deprecated + */ export const tabPaneInitializersForRecordBlock = new SchemaInitializer({ name: 'TabPaneInitializersForCreateFormBlock', Component: TabPaneInitializersForCreateFormBlock, popover: false, }); +/** + * @deprecated + */ export const tabPaneInitializersForBulkEditFormBlock = new SchemaInitializer({ name: 'TabPaneInitializersForBulkEditFormBlock', Component: TabPaneInitializersForBulkEditFormBlock, diff --git a/packages/core/client/src/schema-initializer/demos/basic.tsx b/packages/core/client/src/schema-initializer/demos/basic.tsx index 9153f1f3a..0408a6f0b 100644 --- a/packages/core/client/src/schema-initializer/demos/basic.tsx +++ b/packages/core/client/src/schema-initializer/demos/basic.tsx @@ -8,7 +8,7 @@ import { import React from 'react'; const myInitializer = new SchemaInitializer({ - name: 'MyInitializer', + name: 'myInitializer', // 正常情况下这个值为 false,通过点击页面左上角的设计按钮切换,这里为了显示设置为 true designable: true, // 按钮标题标题 @@ -27,7 +27,7 @@ const myInitializer = new SchemaInitializer({ }); const Root = () => { - const { render } = useSchemaInitializerRender('MyInitializer'); + const { render } = useSchemaInitializerRender('myInitializer'); return
{render()}
; }; @@ -45,7 +45,7 @@ class MyPlugin extends Plugin { class MyPlugin2 extends Plugin { async load() { - const myInitializer = this.app.schemaInitializerManager.get('MyInitializer'); + const myInitializer = this.app.schemaInitializerManager.get('myInitializer'); // 添加或者修改 schema initializer 的 items myInitializer.add('demo3', { diff --git a/packages/core/client/src/schema-initializer/demos/build-type.tsx b/packages/core/client/src/schema-initializer/demos/build-type.tsx index 13b66069d..2bf62f249 100644 --- a/packages/core/client/src/schema-initializer/demos/build-type.tsx +++ b/packages/core/client/src/schema-initializer/demos/build-type.tsx @@ -8,7 +8,7 @@ import { import React from 'react'; const myInitializer = new SchemaInitializer({ - name: 'MyInitializer', + name: 'myInitializer', designable: true, title: 'Button Text', items: [ @@ -61,7 +61,7 @@ const myInitializer = new SchemaInitializer({ }); const Root = () => { - const { render } = useSchemaInitializerRender('MyInitializer'); + const { render } = useSchemaInitializerRender('myInitializer'); return
{render()}
; }; diff --git a/packages/core/client/src/schema-initializer/demos/custom-button.tsx b/packages/core/client/src/schema-initializer/demos/custom-button.tsx index 2c39c5da7..cf69043f7 100644 --- a/packages/core/client/src/schema-initializer/demos/custom-button.tsx +++ b/packages/core/client/src/schema-initializer/demos/custom-button.tsx @@ -4,7 +4,7 @@ import { PlusOutlined } from '@ant-design/icons'; import { Divider, Avatar, AvatarProps } from 'antd'; const myInitializer = new SchemaInitializer({ - name: 'MyInitializer', + name: 'myInitializer', designable: true, // 使用自定义组件代替默认的 Button Component: (props) => ( @@ -25,7 +25,7 @@ const myInitializer = new SchemaInitializer({ }); const Root = () => { - const { exists, render } = useSchemaInitializerRender('MyInitializer'); + const { exists, render } = useSchemaInitializerRender('myInitializer'); if (!exists) return null; return (
diff --git a/packages/core/client/src/schema-initializer/demos/custom-items-component.tsx b/packages/core/client/src/schema-initializer/demos/custom-items-component.tsx index e88355249..00d5588c1 100644 --- a/packages/core/client/src/schema-initializer/demos/custom-items-component.tsx +++ b/packages/core/client/src/schema-initializer/demos/custom-items-component.tsx @@ -38,7 +38,7 @@ const CustomListGridMenu: FC { - const { exists, render } = useSchemaInitializerRender('MyInitializer'); + const { exists, render } = useSchemaInitializerRender('myInitializer'); if (!exists) return null; return (
diff --git a/packages/core/client/src/schema-initializer/demos/dynamic-visible-children.tsx b/packages/core/client/src/schema-initializer/demos/dynamic-visible-children.tsx index 94c04554d..eac229826 100644 --- a/packages/core/client/src/schema-initializer/demos/dynamic-visible-children.tsx +++ b/packages/core/client/src/schema-initializer/demos/dynamic-visible-children.tsx @@ -8,7 +8,7 @@ import { import React from 'react'; const myInitializer = new SchemaInitializer({ - name: 'MyInitializer', + name: 'myInitializer', designable: true, title: 'Button Text', items: [ @@ -59,7 +59,7 @@ const myInitializer = new SchemaInitializer({ }); const Root = () => { - const { render } = useSchemaInitializerRender('MyInitializer'); + const { render } = useSchemaInitializerRender('myInitializer'); return
{render()}
; }; diff --git a/packages/core/client/src/schema-initializer/demos/insert-schema-action.tsx b/packages/core/client/src/schema-initializer/demos/insert-schema-action.tsx index 7a273c084..0ee7db75d 100644 --- a/packages/core/client/src/schema-initializer/demos/insert-schema-action.tsx +++ b/packages/core/client/src/schema-initializer/demos/insert-schema-action.tsx @@ -12,7 +12,7 @@ import { import React from 'react'; const addActionInitializer = new SchemaInitializer({ - name: 'AddAction', + name: 'addAction', title: 'Configure actions', // 插入位置 insertPosition: 'beforeEnd', @@ -65,7 +65,7 @@ const Root = () => { // 指定初始化的按钮组件, // Table、Form、Details、Calendar、Kanban 等等不同区块 // 可以根据情况组装自己的 initializer - 'x-initializer': 'AddAction', + 'x-initializer': 'addAction', properties: { action1: { type: 'void', diff --git a/packages/core/client/src/schema-initializer/demos/insert-schema-basic.tsx b/packages/core/client/src/schema-initializer/demos/insert-schema-basic.tsx index 6da9a5cdc..53f7ee5fb 100644 --- a/packages/core/client/src/schema-initializer/demos/insert-schema-basic.tsx +++ b/packages/core/client/src/schema-initializer/demos/insert-schema-basic.tsx @@ -36,7 +36,7 @@ function Demo() { } const myInitializer = new SchemaInitializer({ - name: 'MyInitializer', + name: 'myInitializer', title: 'Add Block', // 插入位置 insertPosition: 'beforeEnd', @@ -55,7 +55,7 @@ const myInitializer = new SchemaInitializer({ }); const AddBlockButton = observer(() => { - const { render } = useSchemaInitializerRender('MyInitializer'); + const { render } = useSchemaInitializerRender('myInitializer'); return render(); }); diff --git a/packages/core/client/src/schema-initializer/demos/insert-schema-form-item.tsx b/packages/core/client/src/schema-initializer/demos/insert-schema-form-item.tsx index 9368462c9..a7c9c5b55 100644 --- a/packages/core/client/src/schema-initializer/demos/insert-schema-form-item.tsx +++ b/packages/core/client/src/schema-initializer/demos/insert-schema-form-item.tsx @@ -67,7 +67,7 @@ const TextInitializer: FC = () => { }; const addFormItemInitializer = new SchemaInitializer({ - name: 'AddFormItem', + name: 'addFormItem', title: 'Configure actions', insertPosition: 'beforeEnd', items: [ @@ -91,7 +91,7 @@ const addFormItemInitializer = new SchemaInitializer({ }); const Page = (props) => { - const { render } = useSchemaInitializerRender('AddFormItem'); + const { render } = useSchemaInitializerRender('addFormItem'); return (
{props.children} diff --git a/packages/core/client/src/schema-initializer/demos/nested-items.tsx b/packages/core/client/src/schema-initializer/demos/nested-items.tsx index 187eb5fac..0ff86b6a7 100644 --- a/packages/core/client/src/schema-initializer/demos/nested-items.tsx +++ b/packages/core/client/src/schema-initializer/demos/nested-items.tsx @@ -69,7 +69,7 @@ const Demo = () => { }; const myInitializer = new SchemaInitializer({ - name: 'MyInitializer', + name: 'myInitializer', designable: true, title: 'Button Text', items: [ @@ -99,7 +99,7 @@ const myInitializer = new SchemaInitializer({ }); const Root = () => { - const { render } = useSchemaInitializerRender('MyInitializer'); + const { render } = useSchemaInitializerRender('myInitializer'); return
{render()}
; }; @@ -115,7 +115,7 @@ class MyPlugin extends Plugin { class MyPlugin2 extends Plugin { async load() { - const myInitializer = this.app.schemaInitializerManager.get('MyInitializer'); + const myInitializer = this.app.schemaInitializerManager.get('myInitializer'); // 嵌套添加 myInitializer.add('a.a4', { diff --git a/packages/core/client/src/schema-initializer/index.ts b/packages/core/client/src/schema-initializer/index.ts index ee6d1f2ef..cc68d9725 100644 --- a/packages/core/client/src/schema-initializer/index.ts +++ b/packages/core/client/src/schema-initializer/index.ts @@ -1,9 +1,15 @@ import { Plugin } from '../application/Plugin'; import { CreateChildInitializer } from '../modules/actions/add-child/CreateChildInitializer'; import { CreateActionInitializer } from '../modules/actions/add-new/CreateActionInitializer'; -import { createFormBlockInitializers } from '../modules/actions/add-new/createFormBlockInitializers'; +import { + createFormBlockInitializers, + createFormBlockInitializers_deprecated, +} from '../modules/actions/add-new/createFormBlockInitializers'; import { CustomizeAddRecordActionInitializer } from '../modules/actions/add-record/CustomizeAddRecordActionInitializer'; -import { customizeCreateFormBlockInitializers } from '../modules/actions/add-record/customizeCreateFormBlockInitializers'; +import { + customizeCreateFormBlockInitializers, + customizeCreateFormBlockInitializers_deprecated, +} from '../modules/actions/add-record/customizeCreateFormBlockInitializers'; import { BulkDestroyActionInitializer } from '../modules/actions/bulk-destroy/BulkDestroyActionInitializer'; import { DestroyActionInitializer } from '../modules/actions/delete/DestroyActionInitializer'; import { ExpandableActionInitializer } from '../modules/actions/expand-collapse/ExpandableActionInitializer'; @@ -17,47 +23,98 @@ import { PopupActionInitializer } from '../modules/actions/view-edit-popup/Popup import { recordFormBlockInitializers } from '../modules/actions/view-edit-popup/RecordFormBlockInitializers'; import { UpdateActionInitializer } from '../modules/actions/view-edit-popup/UpdateActionInitializer'; import { ViewActionInitializer } from '../modules/actions/view-edit-popup/ViewActionInitializer'; -import { detailsActionInitializers } from '../modules/blocks/data-blocks/details-multi/DetailsActionInitializers'; +import { + detailsActionInitializers, + detailsActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/details-multi/DetailsActionInitializers'; import { DetailsBlockInitializer } from '../modules/blocks/data-blocks/details-multi/DetailsBlockInitializer'; -import { readPrettyFormActionInitializers } from '../modules/blocks/data-blocks/details-single/ReadPrettyFormActionInitializers'; -import { readPrettyFormItemInitializers } from '../modules/blocks/data-blocks/details-single/ReadPrettyFormItemInitializers'; +import { + readPrettyFormActionInitializers, + readPrettyFormActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/details-single/ReadPrettyFormActionInitializers'; +import { + readPrettyFormItemInitializers, + readPrettyFormItemInitializers_deprecated, +} from '../modules/blocks/data-blocks/details-single/ReadPrettyFormItemInitializers'; import { RecordReadPrettyFormBlockInitializer } from '../modules/blocks/data-blocks/details-single/RecordReadPrettyFormBlockInitializer'; import { CreateFormBlockInitializer } from '../modules/blocks/data-blocks/form/CreateFormBlockInitializer'; import { FormBlockInitializer } from '../modules/blocks/data-blocks/form/FormBlockInitializer'; import { RecordFormBlockInitializer } from '../modules/blocks/data-blocks/form/RecordFormBlockInitializer'; -import { createFormActionInitializers } from '../modules/blocks/data-blocks/form/createFormActionInitializers'; +import { + createFormActionInitializers, + createFormActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/form/createFormActionInitializers'; import { formActionInitializers } from '../modules/blocks/data-blocks/form/formActionInitializers'; -import { formItemInitializers } from '../modules/blocks/data-blocks/form/formItemInitializers'; -import { updateFormActionInitializers } from '../modules/blocks/data-blocks/form/updateFormActionInitializers'; -import { gridCardActionInitializers } from '../modules/blocks/data-blocks/grid-card/GridCardActionInitializers'; +import { + formItemInitializers, + formItemInitializers_deprecated, +} from '../modules/blocks/data-blocks/form/formItemInitializers'; +import { + updateFormActionInitializers, + updateFormActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/form/updateFormActionInitializers'; +import { + gridCardActionInitializers, + gridCardActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/grid-card/GridCardActionInitializers'; import { GridCardBlockInitializer } from '../modules/blocks/data-blocks/grid-card/GridCardBlockInitializer'; -import { gridCardItemActionInitializers } from '../modules/blocks/data-blocks/grid-card/gridCardItemActionInitializers'; -import { listActionInitializers } from '../modules/blocks/data-blocks/list/ListActionInitializers'; +import { + gridCardItemActionInitializers, + gridCardItemActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/grid-card/gridCardItemActionInitializers'; +import { + listActionInitializers, + listActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/list/ListActionInitializers'; import { ListBlockInitializer } from '../modules/blocks/data-blocks/list/ListBlockInitializer'; -import { listItemActionInitializers } from '../modules/blocks/data-blocks/list/listItemActionInitializers'; +import { + listItemActionInitializers, + listItemActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/list/listItemActionInitializers'; import { TableSelectorInitializer } from '../modules/blocks/data-blocks/table-selector/TableSelectorInitializer'; -import { tableActionColumnInitializers } from '../modules/blocks/data-blocks/table/TableActionColumnInitializers'; -import { tableActionInitializers } from '../modules/blocks/data-blocks/table/TableActionInitializers'; +import { + tableActionColumnInitializers, + tableActionColumnInitializers_deprecated, +} from '../modules/blocks/data-blocks/table/TableActionColumnInitializers'; +import { + tableActionInitializers, + tableActionInitializers_deprecated, +} from '../modules/blocks/data-blocks/table/TableActionInitializers'; import { TableBlockInitializer } from '../modules/blocks/data-blocks/table/TableBlockInitializer'; -import { tableColumnInitializers } from '../modules/blocks/data-blocks/table/TableColumnInitializers'; +import { + tableColumnInitializers, + tableColumnInitializers_deprecated, +} from '../modules/blocks/data-blocks/table/TableColumnInitializers'; import { FilterCollapseBlockInitializer } from '../modules/blocks/filter-blocks/collapse/FilterCollapseBlockInitializer'; -import { filterFormActionInitializers } from '../modules/blocks/filter-blocks/form/FilterFormActionInitializers'; +import { + filterFormActionInitializers, + filterFormActionInitializers_deprecated, +} from '../modules/blocks/filter-blocks/form/FilterFormActionInitializers'; import { FilterFormBlockInitializer } from '../modules/blocks/filter-blocks/form/FilterFormBlockInitializer'; -import { filterFormItemInitializers } from '../modules/blocks/filter-blocks/form/filterFormItemInitializers'; +import { + filterFormItemInitializers, + filterFormItemInitializers_deprecated, +} from '../modules/blocks/filter-blocks/form/filterFormItemInitializers'; import { MarkdownBlockInitializer } from '../modules/blocks/other-blocks/markdown/MarkdownBlockInitializer'; import { MarkdownFormItemInitializer } from '../modules/blocks/other-blocks/markdown/MarkdownFormItemInitializer'; -import { tableSelectorInitializers } from '../modules/fields/component/Picker/TableSelectorInitializers'; +import { + tableSelectorInitializers, + tableSelectorInitializers_deprecated, +} from '../modules/fields/component/Picker/TableSelectorInitializers'; import { CollectionFieldInitializer } from '../modules/fields/initializer/CollectionFieldInitializer'; import { TableCollectionFieldInitializer } from '../modules/fields/initializer/TableCollectionFieldInitializer'; -import { menuItemInitializer } from '../modules/menu/menuItemInitializer'; -import { blockInitializers } from '../modules/page/BlockInitializers'; +import { menuItemInitializer, menuItemInitializer_deprecated } from '../modules/menu/menuItemInitializer'; +import { blockInitializers, blockInitializers_deprecated } from '../modules/page/BlockInitializers'; import { customFormItemInitializers, + customFormItemInitializers_deprecated, recordBlockInitializers, + recordBlockInitializers_deprecated, subTableActionInitializers, - tabPaneInitializers, + subTableActionInitializers_deprecated, tabPaneInitializersForBulkEditFormBlock, tabPaneInitializersForRecordBlock, + tabPaneInitializers_deprecated, } from './buttons'; import * as initializerComponents from './components'; import * as items from './items'; @@ -118,35 +175,57 @@ export class SchemaInitializerPlugin extends Plugin { RefreshActionInitializer, } as any); + this.app.schemaInitializerManager.add(blockInitializers_deprecated); this.app.schemaInitializerManager.add(blockInitializers); + this.app.schemaInitializerManager.add(tableActionInitializers_deprecated); this.app.schemaInitializerManager.add(tableActionInitializers); + this.app.schemaInitializerManager.add(tableColumnInitializers_deprecated); this.app.schemaInitializerManager.add(tableColumnInitializers); + this.app.schemaInitializerManager.add(tableActionColumnInitializers_deprecated); this.app.schemaInitializerManager.add(tableActionColumnInitializers); + this.app.schemaInitializerManager.add(formItemInitializers_deprecated); this.app.schemaInitializerManager.add(formItemInitializers); this.app.schemaInitializerManager.add(formActionInitializers); + this.app.schemaInitializerManager.add(detailsActionInitializers_deprecated); this.app.schemaInitializerManager.add(detailsActionInitializers); + this.app.schemaInitializerManager.add(readPrettyFormItemInitializers_deprecated); this.app.schemaInitializerManager.add(readPrettyFormItemInitializers); + this.app.schemaInitializerManager.add(readPrettyFormActionInitializers_deprecated); this.app.schemaInitializerManager.add(readPrettyFormActionInitializers); + this.app.schemaInitializerManager.add(createFormBlockInitializers_deprecated); this.app.schemaInitializerManager.add(createFormBlockInitializers); + this.app.schemaInitializerManager.add(customizeCreateFormBlockInitializers_deprecated); this.app.schemaInitializerManager.add(customizeCreateFormBlockInitializers); + this.app.schemaInitializerManager.add(customFormItemInitializers_deprecated); this.app.schemaInitializerManager.add(customFormItemInitializers); + this.app.schemaInitializerManager.add(filterFormActionInitializers_deprecated); this.app.schemaInitializerManager.add(filterFormActionInitializers); + this.app.schemaInitializerManager.add(createFormActionInitializers_deprecated); this.app.schemaInitializerManager.add(createFormActionInitializers); + this.app.schemaInitializerManager.add(updateFormActionInitializers_deprecated); this.app.schemaInitializerManager.add(updateFormActionInitializers); + this.app.schemaInitializerManager.add(filterFormItemInitializers_deprecated); this.app.schemaInitializerManager.add(filterFormItemInitializers); + this.app.schemaInitializerManager.add(gridCardActionInitializers_deprecated); this.app.schemaInitializerManager.add(gridCardActionInitializers); + this.app.schemaInitializerManager.add(gridCardItemActionInitializers_deprecated); this.app.schemaInitializerManager.add(gridCardItemActionInitializers); + this.app.schemaInitializerManager.add(listActionInitializers_deprecated); this.app.schemaInitializerManager.add(listActionInitializers); + this.app.schemaInitializerManager.add(listItemActionInitializers_deprecated); this.app.schemaInitializerManager.add(listItemActionInitializers); + this.app.schemaInitializerManager.add(recordBlockInitializers_deprecated); this.app.schemaInitializerManager.add(recordBlockInitializers); this.app.schemaInitializerManager.add(recordFormBlockInitializers); + this.app.schemaInitializerManager.add(subTableActionInitializers_deprecated); this.app.schemaInitializerManager.add(subTableActionInitializers); + this.app.schemaInitializerManager.add(tableSelectorInitializers_deprecated); this.app.schemaInitializerManager.add(tableSelectorInitializers); - this.app.schemaInitializerManager.add(tabPaneInitializers); + this.app.schemaInitializerManager.add(tabPaneInitializers_deprecated); this.app.schemaInitializerManager.add(tabPaneInitializersForRecordBlock); this.app.schemaInitializerManager.add(tabPaneInitializersForBulkEditFormBlock); - this.app.schemaInitializerManager.add(createFormBlockInitializers); + this.app.schemaInitializerManager.add(menuItemInitializer_deprecated); this.app.schemaInitializerManager.add(menuItemInitializer); } } diff --git a/packages/core/client/src/schema-initializer/items/RecordAssociationFormBlockInitializer.tsx b/packages/core/client/src/schema-initializer/items/RecordAssociationFormBlockInitializer.tsx index 0d22eec64..274f94941 100644 --- a/packages/core/client/src/schema-initializer/items/RecordAssociationFormBlockInitializer.tsx +++ b/packages/core/client/src/schema-initializer/items/RecordAssociationFormBlockInitializer.tsx @@ -23,8 +23,8 @@ export const RecordAssociationFormBlockInitializer = () => { onClick={async ({ item }) => { const action = ['hasOne', 'belongsTo'].includes(field.type) ? 'get' : null; const actionInitializers = ['hasOne', 'belongsTo'].includes(field.type) - ? 'UpdateFormActionInitializers' - : 'CreateFormActionInitializers'; + ? 'editForm:configureActions' + : 'createForm:configureActions'; if (item.template) { const s = await getTemplateSchemaByMode(item); diff --git a/packages/core/client/src/schema-initializer/items/RecordReadPrettyAssociationFormBlockInitializer.tsx b/packages/core/client/src/schema-initializer/items/RecordReadPrettyAssociationFormBlockInitializer.tsx index 503c1c7b2..83b662f17 100644 --- a/packages/core/client/src/schema-initializer/items/RecordReadPrettyAssociationFormBlockInitializer.tsx +++ b/packages/core/client/src/schema-initializer/items/RecordReadPrettyAssociationFormBlockInitializer.tsx @@ -20,7 +20,7 @@ export const RecordReadPrettyAssociationFormBlockInitializer = () => { const resource = `${field.collectionName}.${field.name}`; const { block } = useBlockRequestContext(); - const actionInitializers = block !== 'TableField' ? 'ReadPrettyFormActionInitializers' : null; + const actionInitializers = block !== 'TableField' ? 'details:configureActions' : null; return ( { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', properties: {}, }, footer: { @@ -41,7 +41,7 @@ export const SelectActionInitializer = (props) => { 'x-component': 'Action', // 'x-designer': 'Action.Designer', 'x-toolbar': 'ActionSchemaToolbar', - 'x-settings': 'actionSettings:updateSubmit', + 'x-settings': 'actionSettings:submit', 'x-component-props': { type: 'primary', htmlType: 'submit', diff --git a/packages/core/client/src/schema-initializer/items/SubmitActionInitializer.tsx b/packages/core/client/src/schema-initializer/items/SubmitActionInitializer.tsx index f3f0afb84..c0edbf266 100644 --- a/packages/core/client/src/schema-initializer/items/SubmitActionInitializer.tsx +++ b/packages/core/client/src/schema-initializer/items/SubmitActionInitializer.tsx @@ -9,7 +9,7 @@ export const SubmitActionInitializer = (props) => { 'x-component': 'Action', // 'x-designer': 'Action.Designer', 'x-toolbar': 'ActionSchemaToolbar', - 'x-settings': 'actionSettings:updateSubmit', + 'x-settings': 'actionSettings:submit', 'x-component-props': { type: 'primary', htmlType: 'submit', diff --git a/packages/core/client/src/schema-initializer/items/TableActionColumnInitializer.tsx b/packages/core/client/src/schema-initializer/items/TableActionColumnInitializer.tsx index 604c77935..33d833d6b 100644 --- a/packages/core/client/src/schema-initializer/items/TableActionColumnInitializer.tsx +++ b/packages/core/client/src/schema-initializer/items/TableActionColumnInitializer.tsx @@ -10,7 +10,7 @@ export const TableActionColumnInitializer = () => { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-action-column': 'actions', properties: { [uid()]: { diff --git a/packages/core/client/src/schema-initializer/utils.ts b/packages/core/client/src/schema-initializer/utils.ts index 5640e698b..34411a58e 100644 --- a/packages/core/client/src/schema-initializer/utils.ts +++ b/packages/core/client/src/schema-initializer/utils.ts @@ -857,8 +857,8 @@ export const useCollectionDataSourceItems = ( export const createDetailsBlockSchema = (options) => { const { - formItemInitializers = 'ReadPrettyFormItemInitializers', - actionInitializers = 'DetailsActionInitializers', + formItemInitializers = 'details:configureFields', + actionInitializers = 'detailsWithPaging:configureActions', collection, dataSource, association, @@ -930,9 +930,9 @@ export const createDetailsBlockSchema = (options) => { export const createListBlockSchema = (options) => { const { - formItemInitializers = 'ReadPrettyFormItemInitializers', - actionInitializers = 'ListActionInitializers', - itemActionInitializers = 'ListItemActionInitializers', + formItemInitializers = 'details:configureFields', + actionInitializers = 'list:configureActions', + itemActionInitializers = 'list:configureItemActions', collection, dataSource, association, @@ -1020,9 +1020,9 @@ export const createListBlockSchema = (options) => { export const createGridCardBlockSchema = (options) => { const { - formItemInitializers = 'ReadPrettyFormItemInitializers', - actionInitializers = 'GridCardActionInitializers', - itemActionInitializers = 'GridCardItemActionInitializers', + formItemInitializers = 'details:configureFields', + actionInitializers = 'gridCard:configureActions', + itemActionInitializers = 'gridCard:configureItemActions', collection, association, resource, @@ -1112,8 +1112,8 @@ export const createGridCardBlockSchema = (options) => { }; export const createFormBlockSchema = (options) => { const { - formItemInitializers = 'FormItemInitializers', - actionInitializers = 'FormActionInitializers', + formItemInitializers = 'form:configureFields', + actionInitializers = 'createForm:configureActions', collection, resource, dataSource, @@ -1185,8 +1185,8 @@ export const createFormBlockSchema = (options) => { export const createFilterFormBlockSchema = (options) => { const { - formItemInitializers = 'FilterFormItemInitializers', - actionInitializers = 'FilterFormActionInitializers', + formItemInitializers = 'filterForm:configureFields', + actionInitializers = 'filterForm:configureActions', collection, resource, association, @@ -1250,8 +1250,8 @@ export const createFilterFormBlockSchema = (options) => { export const createReadPrettyFormBlockSchema = (options) => { const { - formItemInitializers = 'ReadPrettyFormItemInitializers', - actionInitializers = 'ReadPrettyFormActionInitializers', + formItemInitializers = 'details:configureFields', + actionInitializers = 'details:configureActions', collection, association, dataSource, @@ -1353,7 +1353,7 @@ export const createTableBlockSchema = (options) => { properties: { actions: { type: 'void', - 'x-initializer': tableActionInitializers ?? 'TableActionInitializers', + 'x-initializer': tableActionInitializers ?? 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -1364,7 +1364,7 @@ export const createTableBlockSchema = (options) => { }, [uid()]: { type: 'array', - 'x-initializer': tableColumnInitializers ?? 'TableColumnInitializers', + 'x-initializer': tableColumnInitializers ?? 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -1381,7 +1381,7 @@ export const createTableBlockSchema = (options) => { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': tableActionColumnInitializers ?? 'TableActionColumnInitializers', + 'x-initializer': tableActionColumnInitializers ?? 'table:configureItemActions', properties: { [uid()]: { type: 'void', @@ -1424,7 +1424,7 @@ export const createCollapseBlockSchema = (options) => { [uid()]: { type: 'void', 'x-action': 'associateFilter', - 'x-initializer': 'AssociationFilterInitializers', + 'x-initializer': 'filterCollapse:configureFields', 'x-component': 'AssociationFilter', properties: {}, }, @@ -1457,7 +1457,7 @@ export const createTableSelectorSchema = (options) => { properties: { [uid()]: { type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -1468,7 +1468,7 @@ export const createTableSelectorSchema = (options) => { }, value: { type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2.Selector', 'x-component-props': { rowSelection: { diff --git a/packages/core/client/src/schema-settings/demos/demo3.tsx b/packages/core/client/src/schema-settings/demos/demo3.tsx index 4a6d52d53..0161c525c 100644 --- a/packages/core/client/src/schema-settings/demos/demo3.tsx +++ b/packages/core/client/src/schema-settings/demos/demo3.tsx @@ -28,7 +28,7 @@ const mySettings = new SchemaSettings({ }); const myInitializer = new SchemaInitializer({ - name: 'MyInitializer', + name: 'myInitializer', // 按钮标题标题 title: 'Button Text', wrap: Grid.wrap, @@ -80,7 +80,7 @@ const HelloPage = () => { name: 'hello', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'MyInitializer', + 'x-initializer': 'myInitializer', }} />
diff --git a/packages/core/test/src/e2e/e2eUtils.ts b/packages/core/test/src/e2e/e2eUtils.ts index b6409575f..1dc9fe9c0 100644 --- a/packages/core/test/src/e2e/e2eUtils.ts +++ b/packages/core/test/src/e2e/e2eUtils.ts @@ -526,7 +526,7 @@ const createPage = async (options?: CreatePageOptions) => { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-uid': uid(), name: gridName, }, @@ -864,7 +864,7 @@ export async function expectInitializerMenu({ showMenu, supportedOptions, page } * @param name */ export const createBlockInPage = async (page: Page, name: string) => { - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); if (name === 'Form') { await page.getByText('Form', { exact: true }).first().hover(); diff --git a/packages/core/test/src/e2e/templatesOfPage.ts b/packages/core/test/src/e2e/templatesOfPage.ts index a87be8b28..1273488fd 100644 --- a/packages/core/test/src/e2e/templatesOfPage.ts +++ b/packages/core/test/src/e2e/templatesOfPage.ts @@ -56,7 +56,7 @@ export const tabPageEmpty: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-uid': 'ir8tvhr1xqi', 'x-async': false, 'x-index': 1, @@ -153,7 +153,7 @@ export const oneEmptyTable: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { fdkznek8n9o: { _isJSONSchemaObject: true, @@ -193,7 +193,7 @@ export const oneEmptyTable: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -208,7 +208,7 @@ export const oneEmptyTable: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -227,7 +227,7 @@ export const oneEmptyTable: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -295,7 +295,7 @@ export const oneEmptyForm: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { cxk2aa058lc: { _isJSONSchemaObject: true, @@ -340,7 +340,7 @@ export const oneEmptyForm: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-uid': 'y6qzidbf0lm', 'x-async': false, 'x-index': 1, @@ -349,7 +349,7 @@ export const oneEmptyForm: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -405,7 +405,7 @@ export const oneEmptyFormWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { ybhtsluv6ay: { _isJSONSchemaObject: true, @@ -450,7 +450,7 @@ export const oneEmptyFormWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-uid': '9gcg27ewld4', 'x-async': false, 'x-index': 1, @@ -459,7 +459,7 @@ export const oneEmptyFormWithActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -571,7 +571,7 @@ export const oneEmptyDetailsBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { cnp4fnntodr: { @@ -619,7 +619,7 @@ export const oneEmptyDetailsBlock: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'DetailsActionInitializers', + 'x-initializer': 'detailsWithPaging:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -635,7 +635,7 @@ export const oneEmptyDetailsBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', 'x-uid': 'sldwwd6jq6g', 'x-async': false, 'x-index': 2, @@ -699,7 +699,7 @@ export const oneEmptyListBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { wpm7v8svnpo: { @@ -738,7 +738,7 @@ export const oneEmptyListBlock: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'ListActionInitializers', + 'x-initializer': 'list:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -773,7 +773,7 @@ export const oneEmptyListBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', 'x-initializer-props': { useProps: '{{ useListItemInitializerProps }}', }, @@ -786,7 +786,7 @@ export const oneEmptyListBlock: PageConfig = { version: '2.0', type: 'void', 'x-align': 'left', - 'x-initializer': 'ListItemActionInitializers', + 'x-initializer': 'list:configureItemActions', 'x-component': 'ActionBar', 'x-component-props': { useProps: '{{ useListActionBarProps }}', @@ -848,7 +848,7 @@ export const oneEmptyGridCardBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { x22u60kld4t: { @@ -890,7 +890,7 @@ export const oneEmptyGridCardBlock: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'GridCardActionInitializers', + 'x-initializer': 'gridCard:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -925,7 +925,7 @@ export const oneEmptyGridCardBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', 'x-initializer-props': { useProps: '{{ useGridCardItemInitializerProps }}', }, @@ -938,7 +938,7 @@ export const oneEmptyGridCardBlock: PageConfig = { version: '2.0', type: 'void', 'x-align': 'left', - 'x-initializer': 'GridCardItemActionInitializers', + 'x-initializer': 'gridCard:configureItemActions', 'x-component': 'ActionBar', 'x-component-props': { useProps: '{{ useGridCardActionBarProps }}', @@ -1000,7 +1000,7 @@ export const oneEmptyFilterFormBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { mk7wdkfacfo: { @@ -1043,7 +1043,7 @@ export const oneEmptyFilterFormBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FilterFormItemInitializers', + 'x-initializer': 'filterForm:configureFields', 'x-uid': 'yls3c6j92ex', 'x-async': false, 'x-index': 1, @@ -1052,7 +1052,7 @@ export const oneEmptyFilterFormBlock: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FilterFormActionInitializers', + 'x-initializer': 'filterForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -1111,7 +1111,7 @@ export const oneEmptyFilterCollapseBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { vnikc8bt477: { @@ -1196,7 +1196,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { '1m4gz110aaw': { @@ -1237,7 +1237,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -1315,7 +1315,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', 'x-uid': 'k0zm3uifn6v', 'x-async': false, 'x-index': 1, @@ -1434,7 +1434,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CusomeizeCreateFormBlockInitializers', + 'x-initializer': 'popup:addRecord:addBlock', 'x-uid': '60wmk833o7b', 'x-async': false, 'x-index': 1, @@ -1468,7 +1468,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -1487,7 +1487,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -1547,7 +1547,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': '1m4fg88bmp6', 'x-async': false, 'x-index': 1, @@ -1621,7 +1621,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': 'zjv8mf85knj', 'x-async': false, 'x-index': 1, @@ -1720,7 +1720,7 @@ export const oneEmptyTableBlockWithActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', 'x-uid': 'vtcnkzcaeec', 'x-async': false, 'x-index': 1, @@ -1804,7 +1804,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { n6xy1x7hh3l: { _isJSONSchemaObject: true, @@ -1844,7 +1844,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -1922,7 +1922,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { '7tcjyx5gipn': { _isJSONSchemaObject: true, @@ -1967,7 +1967,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-uid': '3h8z0005y9o', 'x-async': false, 'x-index': 1, @@ -1976,7 +1976,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -2127,7 +2127,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CusomeizeCreateFormBlockInitializers', + 'x-initializer': 'popup:addRecord:addBlock', properties: { vdhd3r5uw3r: { _isJSONSchemaObject: true, @@ -2173,7 +2173,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-uid': 'kin1do2rmxl', 'x-async': false, 'x-index': 1, @@ -2182,7 +2182,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -2248,7 +2248,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -2267,7 +2267,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -2327,7 +2327,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { tg0zrjeg91v: { _isJSONSchemaObject: true, @@ -2372,8 +2372,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -2389,8 +2388,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', 'x-uid': 'cbavg5h8yd3', 'x-async': false, 'x-index': 2, @@ -2489,7 +2487,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { kvt96oyiaij: { _isJSONSchemaObject: true, @@ -2537,7 +2535,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-uid': 'mlnbbyffhjc', 'x-async': false, 'x-index': 1, @@ -2546,7 +2544,7 @@ export const oneTableBlockWithActionsAndFormBlocks: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -2662,7 +2660,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { '1m4gz110aaw': { @@ -2703,7 +2701,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -2765,7 +2763,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BulkEditBlockInitializers', + 'x-initializer': 'popup:bulkEdit:addBlock', 'x-uid': '3gjmo60w4de', 'x-async': false, 'x-index': 1, @@ -2799,7 +2797,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -2818,7 +2816,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -2884,7 +2882,7 @@ export const oneFormBlockWithRolesFieldBasedUsers: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { f998lh2qg2h: { @@ -2930,7 +2928,7 @@ export const oneFormBlockWithRolesFieldBasedUsers: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '91d8jzkh9r5': { _isJSONSchemaObject: true, @@ -2973,7 +2971,7 @@ export const oneFormBlockWithRolesFieldBasedUsers: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', 'x-uid': 'lzt548tlewj', 'x-async': false, 'x-index': 1, @@ -3044,7 +3042,7 @@ export const oneFormBlockWithRolesFieldBasedUsers: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -3102,7 +3100,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { f3fq1mwccgr: { _isJSONSchemaObject: true, @@ -3147,7 +3145,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '7dnk9dcjavn': { _isJSONSchemaObject: true, @@ -3190,7 +3188,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', 'x-uid': 'dge1apckyd3', 'x-async': false, 'x-index': 1, @@ -3293,7 +3291,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', 'x-uid': 'k6nd50abevi', 'x-async': false, 'x-index': 1, @@ -3396,7 +3394,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', 'x-uid': '2i6td26ppt2', 'x-async': false, 'x-index': 1, @@ -3499,7 +3497,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', 'x-uid': 'zlj99lap4yq', 'x-async': false, 'x-index': 1, @@ -3602,7 +3600,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'TableSelectorInitializers', + 'x-initializer': 'popup:tableSelector:addBlock', 'x-uid': 'ssclmlysxxl', 'x-async': false, 'x-index': 1, @@ -3673,7 +3671,7 @@ export const oneFormBlockWithAllAssociationFieldsAndSelectorMode: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -3733,7 +3731,7 @@ export const oneDetailBlockWithM2oFieldToGeneral: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '40g1gedv1hg': { _isJSONSchemaObject: true, @@ -3780,7 +3778,7 @@ export const oneDetailBlockWithM2oFieldToGeneral: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'DetailsActionInitializers', + 'x-initializer': 'detailsWithPaging:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -3796,7 +3794,7 @@ export const oneDetailBlockWithM2oFieldToGeneral: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { rp7rbwiym41: { _isJSONSchemaObject: true, @@ -3902,7 +3900,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '2i2th7yfrlz': { _isJSONSchemaObject: true, @@ -3942,7 +3940,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -4003,7 +4001,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { '7soqvrflnps': { _isJSONSchemaObject: true, @@ -4048,7 +4046,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { s251k4sz6zy: { _isJSONSchemaObject: true, @@ -4449,7 +4447,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -4537,7 +4535,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -4556,7 +4554,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -4616,7 +4614,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { '1yv7y62q3u0': { _isJSONSchemaObject: true, @@ -4661,8 +4659,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -4719,7 +4716,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'dz4i8jw4kqz', 'x-async': false, 'x-index': 1, @@ -4754,8 +4751,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { kdxsyya4m45: { _isJSONSchemaObject: true, @@ -5255,7 +5251,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { cw6dlprjcwy: { _isJSONSchemaObject: true, @@ -5303,7 +5299,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '9uqlmdu75wk': { _isJSONSchemaObject: true, @@ -5713,7 +5709,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -5871,7 +5867,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { mbtse8e9kap: { _isJSONSchemaObject: true, @@ -5911,7 +5907,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -5926,7 +5922,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -5945,7 +5941,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -6007,7 +6003,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { trny88kf0bk: { _isJSONSchemaObject: true, @@ -6055,7 +6051,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '7mwkv9h74ki': { _isJSONSchemaObject: true, @@ -6090,7 +6086,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag 'x-component': 'AssociationField.SubTable', 'x-initializer': - 'TableColumnInitializers', + 'table:configureColumns', 'x-initializer-props': { action: false, }, @@ -6162,7 +6158,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndBasicFieldsAndSubTable: Pag _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -6280,7 +6276,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { bjxj2sjr36f: { _isJSONSchemaObject: true, @@ -6320,7 +6316,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -6381,7 +6377,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { xgwlijx7tl0: { _isJSONSchemaObject: true, @@ -6426,7 +6422,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '0k83zkmy257': { _isJSONSchemaObject: true, @@ -6661,7 +6657,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -6749,7 +6745,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -6768,7 +6764,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -6830,7 +6826,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { '1xwjbso8iwl': { _isJSONSchemaObject: true, @@ -6875,8 +6871,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -6933,7 +6928,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'wbrtmx39s4q', 'x-async': false, 'x-index': 1, @@ -6968,8 +6963,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { u1uz4vfwcd7: { _isJSONSchemaObject: true, @@ -7294,7 +7288,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { t2x4eztgl9z: { _isJSONSchemaObject: true, @@ -7342,7 +7336,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { lq1mdgniw87: { _isJSONSchemaObject: true, @@ -7577,7 +7571,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndChoicesFields: PageConfig = _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -7717,7 +7711,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { kworhysix0k: { _isJSONSchemaObject: true, @@ -7757,7 +7751,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -7818,7 +7812,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { q5fy0fkcotq: { _isJSONSchemaObject: true, @@ -7863,7 +7857,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { j8pqhlswvky: { _isJSONSchemaObject: true, @@ -7981,7 +7975,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -8069,7 +8063,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -8088,7 +8082,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -8150,7 +8144,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { rqr8ymho8qk: { _isJSONSchemaObject: true, @@ -8195,8 +8189,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -8253,7 +8246,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'nzgpjel7gnt', 'x-async': false, 'x-index': 1, @@ -8288,8 +8281,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { gm9h65g0rrf: { _isJSONSchemaObject: true, @@ -8500,7 +8492,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { i0qbr8outk2: { _isJSONSchemaObject: true, @@ -8548,7 +8540,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { dho8aesxv5r: { _isJSONSchemaObject: true, @@ -8669,7 +8661,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndMediaFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -8809,7 +8801,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '0wtvsmu7fgy': { _isJSONSchemaObject: true, @@ -8849,7 +8841,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -8910,7 +8902,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { '54z7u3t354f': { _isJSONSchemaObject: true, @@ -8955,7 +8947,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '9tn7mmv6q2j': { _isJSONSchemaObject: true, @@ -9036,7 +9028,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -9124,7 +9116,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -9143,7 +9135,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -9205,7 +9197,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { '5oesm2w11p1': { _isJSONSchemaObject: true, @@ -9250,8 +9242,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -9308,7 +9299,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'o61euxh6r2l', 'x-async': false, 'x-index': 1, @@ -9343,8 +9334,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { f88bpjnnp8b: { _isJSONSchemaObject: true, @@ -9517,7 +9507,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { itbs2k3vnwh: { _isJSONSchemaObject: true, @@ -9565,7 +9555,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { nx1dw628ww8: { _isJSONSchemaObject: true, @@ -9648,7 +9638,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndDatetimeFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -9788,7 +9778,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '31trec6eh60': { _isJSONSchemaObject: true, @@ -9828,7 +9818,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -9889,7 +9879,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { '8yo09nilrra': { _isJSONSchemaObject: true, @@ -9934,7 +9924,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '08iltavqcsw': { _isJSONSchemaObject: true, @@ -10122,7 +10112,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -10210,7 +10200,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -10229,7 +10219,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -10291,7 +10281,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { '53lam282m0w': { _isJSONSchemaObject: true, @@ -10336,8 +10326,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -10394,7 +10383,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'vgnlbwsjqbx', 'x-async': false, 'x-index': 1, @@ -10429,8 +10418,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { ee8my5o19ku: { _isJSONSchemaObject: true, @@ -10711,7 +10699,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { ik4xkal0fk3: { _isJSONSchemaObject: true, @@ -10759,7 +10747,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '5rcq2dnzpvl': { _isJSONSchemaObject: true, @@ -10950,7 +10938,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAssociationFields: PageConf _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -11086,7 +11074,7 @@ export const oneFilterFormBlockWithAllAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { oogm3hoka7c: { _isJSONSchemaObject: true, @@ -11128,7 +11116,7 @@ export const oneFilterFormBlockWithAllAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FilterFormItemInitializers', + 'x-initializer': 'filterForm:configureFields', properties: { y5gw4zxp20e: { _isJSONSchemaObject: true, @@ -11349,7 +11337,7 @@ export const oneFilterFormBlockWithAllAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FilterFormActionInitializers', + 'x-initializer': 'filterForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -11413,7 +11401,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { jp9qjk95sgp: { _isJSONSchemaObject: true, @@ -11453,7 +11441,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -11514,7 +11502,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { jykx4mc4tan: { _isJSONSchemaObject: true, @@ -11559,7 +11547,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { o59i5tuhrf9: { _isJSONSchemaObject: true, @@ -11717,7 +11705,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -11805,7 +11793,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -11824,7 +11812,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -11886,7 +11874,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { '1sdc9mt382r': { _isJSONSchemaObject: true, @@ -11931,8 +11919,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -11989,7 +11976,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'hku8pm0hkmc', 'x-async': false, 'x-index': 1, @@ -12024,8 +12011,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { '7243zv6k16f': { _isJSONSchemaObject: true, @@ -12277,7 +12263,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { '873tavkmkob': { _isJSONSchemaObject: true, @@ -12325,7 +12311,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { q4u8z9fymes: { _isJSONSchemaObject: true, @@ -12487,7 +12473,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndAdvancedFields: PageConfig _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -12627,7 +12613,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { epqxqgug6qx: { _isJSONSchemaObject: true, @@ -12667,7 +12653,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -12728,7 +12714,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { zmbofsdker4: { _isJSONSchemaObject: true, @@ -12773,7 +12759,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { f6yjc0sfg5k: { _isJSONSchemaObject: true, @@ -12905,7 +12891,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'i4pbty5jkhr', 'x-async': false, 'x-index': 1, @@ -12997,7 +12983,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'ofz5idx9716', 'x-async': false, 'x-index': 1, @@ -13113,7 +13099,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -13201,7 +13187,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -13220,7 +13206,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -13282,7 +13268,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { '5g4hlzrrkbh': { _isJSONSchemaObject: true, @@ -13327,8 +13313,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -13385,7 +13370,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': '5v2mpey52su', 'x-async': false, 'x-index': 1, @@ -13420,8 +13405,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { qe2nm5ot23c: { _isJSONSchemaObject: true, @@ -13562,7 +13546,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'eno5ymv0s21', 'x-async': false, @@ -13663,7 +13647,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'cpoo628xa2y', 'x-async': false, @@ -13871,7 +13855,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { f4262c4203q: { _isJSONSchemaObject: true, @@ -13919,7 +13903,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { fr6gmmxwxm6: { _isJSONSchemaObject: true, @@ -14060,7 +14044,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'y3qxvvkexzc', 'x-async': false, @@ -14161,7 +14145,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': '8voz33qzsh8', 'x-async': false, @@ -14279,7 +14263,7 @@ export const oneTableBlockWithAddNewAndViewAndEditAndSystemInfoFields: PageConfi _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -14412,7 +14396,7 @@ export const oneEmptyTableWithTreeCollection: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { tt9ipsm1wb7: { _isJSONSchemaObject: true, @@ -14452,7 +14436,7 @@ export const oneEmptyTableWithTreeCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -14467,7 +14451,7 @@ export const oneEmptyTableWithTreeCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -14486,7 +14470,7 @@ export const oneEmptyTableWithTreeCollection: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -14550,7 +14534,7 @@ export const oneEmptyMarkdown: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { eocwxdkmped: { _isJSONSchemaObject: true, @@ -14620,7 +14604,7 @@ export const oneCollapseAndOneTableWithSameCollection: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { xxnsq3r1w5u: { _isJSONSchemaObject: true, @@ -14735,7 +14719,7 @@ export const oneCollapseAndOneTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -14750,7 +14734,7 @@ export const oneCollapseAndOneTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -14844,7 +14828,7 @@ export const oneFormWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { djjvozyzzha: { _isJSONSchemaObject: true, @@ -14889,7 +14873,7 @@ export const oneFormWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { grgso6wba2b: { _isJSONSchemaObject: true, @@ -15015,7 +14999,7 @@ export const oneFormWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -15098,7 +15082,7 @@ export const oneSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { mxqswxl18hb: { _isJSONSchemaObject: true, @@ -15143,7 +15127,7 @@ export const oneSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '6k12v33b6j3': { _isJSONSchemaObject: true, @@ -15183,7 +15167,7 @@ export const oneSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '9c4mwdnt1kf': { _isJSONSchemaObject: true, @@ -15332,7 +15316,7 @@ export const oneSubformWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -15415,7 +15399,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { spt3dncqt6g: { _isJSONSchemaObject: true, @@ -15455,7 +15439,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -15516,7 +15500,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', 'x-uid': 'ezrqm7whaxk', 'x-async': false, 'x-index': 1, @@ -15550,7 +15534,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -15569,7 +15553,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -15631,7 +15615,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { rxh2yo159ct: { _isJSONSchemaObject: true, @@ -15676,8 +15660,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -15693,8 +15676,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { h091lw5s3ot: { _isJSONSchemaObject: true, @@ -15772,7 +15754,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { '7gni7kgrxc6': { _isJSONSchemaObject: @@ -15880,7 +15862,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { wfis8uozy45: @@ -16009,7 +15991,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { '8ga4k036hkh': @@ -16314,7 +16296,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { scqusdl60dp: { _isJSONSchemaObject: true, @@ -16362,7 +16344,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { row_x1kzwaop93e: { _isJSONSchemaObject: true, @@ -16440,7 +16422,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { '0o134mwdmzm': { _isJSONSchemaObject: @@ -16548,7 +16530,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { '2eg7xlliyk0': @@ -16677,7 +16659,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { wca260ji2ih: @@ -16806,7 +16788,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', properties: { '9xq8mnnzyrw': @@ -16994,7 +16976,7 @@ export const oneTableSubformWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -17131,7 +17113,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { vp7c9oaymjr: { _isJSONSchemaObject: true, @@ -17171,7 +17153,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -17232,7 +17214,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', 'x-uid': 'hhhjt2axsd2', 'x-async': false, 'x-index': 1, @@ -17266,7 +17248,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -17285,7 +17267,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -17347,7 +17329,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { qd1exa12t8i: { _isJSONSchemaObject: true, @@ -17392,8 +17374,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -17450,7 +17431,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'RecordBlockInitializers', + 'popup:common:addBlock', 'x-uid': 'y94je87dtvs', 'x-async': false, 'x-index': 1, @@ -17485,8 +17466,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: { czwqhu0r4kn: { _isJSONSchemaObject: true, @@ -17557,7 +17537,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { 'x-component': 'AssociationField.SubTable', 'x-initializer': - 'TableColumnInitializers', + 'table:configureColumns', 'x-initializer-props': { action: false, }, @@ -17658,7 +17638,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { type: 'void', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', 'x-uid': 'gf8iixoigrh', 'x-async': false, 'x-index': 1, @@ -17780,7 +17760,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: { a7fabwj9osd: { _isJSONSchemaObject: true, @@ -17828,7 +17808,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { beh7yt0xrkh: { _isJSONSchemaObject: true, @@ -17899,7 +17879,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { 'x-component': 'AssociationField.SubTable', 'x-initializer': - 'TableColumnInitializers', + 'table:configureColumns', 'x-initializer-props': { action: false, }, @@ -18008,7 +17988,7 @@ export const oneTableSubtableWithMultiLevelAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -18145,7 +18125,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { i7hhy9qt3vm: { _isJSONSchemaObject: true, @@ -18185,7 +18165,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -18246,7 +18226,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: { ec8k6t8hyfd: { _isJSONSchemaObject: true, @@ -18291,7 +18271,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', properties: { '11k61q066eh': { _isJSONSchemaObject: true, @@ -18375,7 +18355,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -18441,7 +18421,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -18460,7 +18440,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -18522,7 +18502,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': '6k8q5pvnbjg', 'x-async': false, 'x-index': 1, @@ -18596,7 +18576,7 @@ export const formBlockDefaultValueTemplate: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': 'yqsyvw7utn4', 'x-async': false, 'x-index': 1, @@ -18678,7 +18658,7 @@ export const oneFormBlockBasedOnUsers: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { skmxkfr67em: { _isJSONSchemaObject: true, @@ -18723,7 +18703,7 @@ export const oneFormBlockBasedOnUsers: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', 'x-uid': '66dozhzo5ld', 'x-async': false, 'x-index': 1, @@ -18732,7 +18712,7 @@ export const oneFormBlockBasedOnUsers: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -18793,7 +18773,7 @@ export const oneFormAndOneTableWithSameCollection: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '0qplm51g52v': { _isJSONSchemaObject: true, @@ -18835,7 +18815,7 @@ export const oneFormAndOneTableWithSameCollection: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FilterFormItemInitializers', + 'x-initializer': 'filterForm:configureFields', properties: { '0k8y0nlffht': { _isJSONSchemaObject: true, @@ -18882,7 +18862,7 @@ export const oneFormAndOneTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'FilterFormActionInitializers', + 'x-initializer': 'filterForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', @@ -18986,7 +18966,7 @@ export const oneFormAndOneTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -19001,7 +18981,7 @@ export const oneFormAndOneTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -19095,7 +19075,7 @@ export const twoTabsPage = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', title: 'tab 1', 'x-async': false, 'x-index': 1, @@ -19106,7 +19086,7 @@ export const twoTabsPage = { type: 'void', title: 'tab 2', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-uid': 'o5vp90rqsjx', 'x-async': false, 'x-index': 2, @@ -19133,7 +19113,7 @@ export const twoTableWithSameCollection: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { jkcte869qpa: { _isJSONSchemaObject: true, @@ -19177,7 +19157,7 @@ export const twoTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -19192,7 +19172,7 @@ export const twoTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -19285,7 +19265,7 @@ export const twoTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -19300,7 +19280,7 @@ export const twoTableWithSameCollection: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -19397,7 +19377,7 @@ export const twoTableWithAssociationFields: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { qtp19qlje2y: { _isJSONSchemaObject: true, @@ -19442,7 +19422,7 @@ export const twoTableWithAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -19457,7 +19437,7 @@ export const twoTableWithAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -19549,7 +19529,7 @@ export const twoTableWithAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -19564,7 +19544,7 @@ export const twoTableWithAssociationFields: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -19667,7 +19647,7 @@ export const oneEmptyTableBlockBasedOnUsers = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { vduni5v1u2v: { _isJSONSchemaObject: true, @@ -19707,7 +19687,7 @@ export const oneEmptyTableBlockBasedOnUsers = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -19722,7 +19702,7 @@ export const oneEmptyTableBlockBasedOnUsers = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -19741,7 +19721,7 @@ export const oneEmptyTableBlockBasedOnUsers = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -19820,7 +19800,7 @@ export const checkboxForTableRow = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { w85tu6tnlfp: { _isJSONSchemaObject: true, @@ -19860,7 +19840,7 @@ export const checkboxForTableRow = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -19903,7 +19883,7 @@ export const checkboxForTableRow = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -19922,7 +19902,7 @@ export const checkboxForTableRow = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, diff --git a/packages/plugins/@nocobase/plugin-acl/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-acl/src/client/__e2e__/utils.ts index 216e4e0f1..d61e9c282 100644 --- a/packages/plugins/@nocobase/plugin-acl/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-acl/src/client/__e2e__/utils.ts @@ -14,7 +14,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', _isJSONSchemaObject: true, properties: { hxf5h572bwc: { @@ -56,7 +56,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component-props': { style: { marginBottom: 'var(--nb-spacing)', @@ -116,7 +116,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', _isJSONSchemaObject: true, properties: { f3q7xmyiyl4: { @@ -161,7 +161,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', _isJSONSchemaObject: true, properties: { ddz3kqt5kpf: { @@ -240,7 +240,7 @@ export const oneTableBlock: PageConfig = { version: '2.0', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', _isJSONSchemaObject: true, properties: { yhxqnl03mak: { @@ -435,7 +435,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component-props': { style: { marginTop: 24, @@ -767,7 +767,7 @@ export const oneTableBlock: PageConfig = { type: 'array', version: '2.0', 'x-component': 'TableV2', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component-props': { rowKey: 'id', useProps: '{{ useTableBlockProps }}', @@ -785,7 +785,7 @@ export const oneTableBlock: PageConfig = { 'x-designer': 'TableV2.ActionColumnDesigner', 'x-component': 'TableV2.Column', 'x-decorator': 'TableV2.Column.ActionBar', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-action-column': 'actions', 'x-component-props': { width: 400, @@ -850,7 +850,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', _isJSONSchemaObject: true, properties: { yyehsjjoo8e: { @@ -898,7 +898,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', _isJSONSchemaObject: true, properties: { q3s02k44o3o: { @@ -1054,7 +1054,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component-props': { style: { marginTop: 24, @@ -1180,7 +1180,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', _isJSONSchemaObject: true, 'x-uid': '9be5zlgowvl', 'x-async': false, @@ -1254,7 +1254,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', _isJSONSchemaObject: true, properties: { pk40wwnw0cp: { @@ -1302,7 +1302,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', _isJSONSchemaObject: true, properties: { '7043nizntd8': { @@ -1344,7 +1344,7 @@ export const oneTableBlock: PageConfig = { version: '2.0', 'x-component': 'Grid', 'x-initializer': - 'FormItemInitializers', + 'form:configureFields', _isJSONSchemaObject: true, properties: { dtxjb31ls31: { @@ -1739,7 +1739,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'UpdateFormActionInitializers', + 'x-initializer': 'editForm:configureActions', 'x-component-props': { style: { marginTop: 24, @@ -1843,7 +1843,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', _isJSONSchemaObject: true, properties: { h9gq1awpz33: { @@ -1890,8 +1890,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component-props': { style: { marginBottom: 24, @@ -1906,8 +1905,7 @@ export const oneTableBlock: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', _isJSONSchemaObject: true, properties: { hnzs6hajxl8: { diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditActionInitializer.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditActionInitializer.tsx index 439ad79db..581a8ed49 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditActionInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditActionInitializer.tsx @@ -39,7 +39,7 @@ export const BulkEditActionInitializer = () => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BulkEditBlockInitializers', + 'x-initializer': 'popup:bulkEdit:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditBlockInitializers.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditBlockInitializers.tsx index 860ce737d..61607416c 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditBlockInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditBlockInitializers.tsx @@ -1,4 +1,4 @@ -import { SchemaInitializer, gridRowColWrap } from '@nocobase/client'; +import { CompatibleSchemaInitializer, SchemaInitializer, gridRowColWrap } from '@nocobase/client'; import { CreateFormBulkEditBlockInitializer } from './CreateFormBulkEditBlockInitializer'; /** @@ -38,7 +38,10 @@ export const CreateFormBulkEditBlockInitializers: SchemaInitializer = new Schema ], }); -export const BulkEditBlockInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const BulkEditBlockInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'BulkEditBlockInitializers', wrap: gridRowColWrap, title: '{{t("Add block")}}', @@ -70,3 +73,39 @@ export const BulkEditBlockInitializers: SchemaInitializer = new SchemaInitialize }, ], }); + +export const bulkEditBlockInitializers = new CompatibleSchemaInitializer( + { + name: 'popup:bulkEdit:addBlock', + wrap: gridRowColWrap, + title: '{{t("Add block")}}', + icon: 'PlusOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Data blocks")}}', + name: 'dataBlocks', + children: [ + { + name: 'form', + title: '{{t("Form")}}', + Component: CreateFormBulkEditBlockInitializer, + }, + ], + }, + { + type: 'itemGroup', + title: '{{t("Other blocks")}}', + name: 'otherBlocks', + children: [ + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + ], + }, + ], + }, + BulkEditBlockInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormActionInitializers.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormActionInitializers.tsx index 4158fe8c8..2b5257745 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormActionInitializers.tsx @@ -1,6 +1,10 @@ -import { SchemaInitializer } from '@nocobase/client'; +import { CompatibleSchemaInitializer, SchemaInitializer } from '@nocobase/client'; import { BulkEditSubmitActionInitializer } from './BulkEditSubmitActionInitializer'; -export const BulkEditFormActionInitializers = new SchemaInitializer({ + +/** + * @deprecated + */ +export const BulkEditFormActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'BulkEditFormActionInitializers', title: '{{t("Configure actions")}}', icon: 'SettingOutlined', @@ -22,3 +26,29 @@ export const BulkEditFormActionInitializers = new SchemaInitializer({ }, ], }); + +export const bulkEditFormActionInitializers = new CompatibleSchemaInitializer( + { + name: 'bulkEditForm:configureActions', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Enable actions")}}', + name: 'enableActions', + children: [ + { + name: 'submit', + title: '{{t("Submit")}}', + Component: BulkEditSubmitActionInitializer, + schema: { + 'x-action-settings': {}, + }, + }, + ], + }, + ], + }, + BulkEditFormActionInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormItemInitializers.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormItemInitializers.tsx index 8f3fbd53f..9f42168e4 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormItemInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormItemInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer, gridRowColWrap } from '@nocobase/client'; +import { CompatibleSchemaInitializer, gridRowColWrap } from '@nocobase/client'; import { useCustomBulkEditFormItemInitializerFields } from './utils'; -export const BulkEditFormItemInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const BulkEditFormItemInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'BulkEditFormItemInitializers', wrap: gridRowColWrap, icon: 'SettingOutlined', @@ -36,3 +39,42 @@ export const BulkEditFormItemInitializers: SchemaInitializer = new SchemaInitial }, ], }); + +export const bulkEditFormItemInitializers = new CompatibleSchemaInitializer( + { + name: 'bulkEditForm:configureFields', + wrap: gridRowColWrap, + icon: 'SettingOutlined', + title: '{{t("Configure fields")}}', + items: [ + { + name: 'displayFields', + type: 'itemGroup', + title: '{{t("Display fields")}}', + useChildren: useCustomBulkEditFormItemInitializerFields, + }, + { + name: 'divider', + type: 'divider', + }, + { + name: 'addText', + title: '{{t("Add text")}}', + Component: 'BlockItemInitializer', + schema: { + type: 'void', + 'x-editable': false, + 'x-decorator': 'FormItem', + // 'x-designer': 'Markdown.Void.Designer', + 'x-toolbar': 'BlockSchemaToolbar', + 'x-settings': 'blockSettings:markdown', + 'x-component': 'Markdown.Void', + 'x-component-props': { + content: '{{t("This is a demo text, **supports Markdown syntax**.")}}', + }, + }, + }, + ], + }, + BulkEditFormItemInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/CreateFormBulkEditBlockInitializer.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/CreateFormBulkEditBlockInitializer.tsx index 6dab74057..f5afd1b22 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/CreateFormBulkEditBlockInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/CreateFormBulkEditBlockInitializer.tsx @@ -27,7 +27,7 @@ export const CreateFormBulkEditBlockInitializer = () => { const s = await getTemplateSchemaByMode(item); if (item.template.componentName === 'FormItem') { const blockSchema = createFormBlockSchema({ - actionInitializers: 'CreateFormActionInitializers', + actionInitializers: 'createForm:configureActions', association, collection: collection.name, dataSource: collection.dataSource, @@ -43,8 +43,8 @@ export const CreateFormBulkEditBlockInitializer = () => { } else { insert( createFormBlockSchema({ - formItemInitializers: 'BulkEditFormItemInitializers', - actionInitializers: 'BulkEditFormActionInitializers', + formItemInitializers: 'bulkEditForm:configureFields', + actionInitializers: 'bulkEditForm:configureActions', association, collection: collection.name, dataSource: collection.dataSource, diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts index df47a471d..248b13c7b 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts @@ -4,7 +4,7 @@ import { oneEmptyGantt } from './utils'; test.describe('TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action', () => { test('bulk edit in TableActionInitializers', async ({ page, mockPage }) => { await mockPage(oneEmptyTableBlockWithActions).goto(); - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Customize right' }).click(); await page.getByRole('menuitem', { name: 'Bulk edit' }).click(); await page.mouse.move(300, 0); @@ -14,7 +14,7 @@ test.describe('TableActionInitializers & GanttActionInitializers & MapActionInit const nocoPage = await mockPage(oneEmptyGantt).waitForInit(); await mockRecords('general', 3); await nocoPage.goto(); - await page.getByLabel('schema-initializer-ActionBar-GanttActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-gantt:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Customize right' }).click(); await page.getByRole('menuitem', { name: 'Bulk edit' }).click(); await expect(page.getByLabel('Bulk edit')).toBeVisible(); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts index 3dd1bae22..9e424c76b 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts @@ -15,10 +15,10 @@ test.describe('bulk edit action setting', () => { await page.getByRole('option', { name: 'All' }).click(); //配置更新规则 await page.getByLabel('Bulk edit').click(); - await page.getByLabel('schema-initializer-Grid-BulkEditBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:bulkEdit:addBlock-general').hover(); await page.getByRole('menuitem', { name: 'form Form' }).click(); await page.mouse.move(300, 0); - await page.getByLabel('schema-initializer-Grid-BulkEditFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-bulkEditForm:configureFields-general').hover(); await page.getByRole('menuitem', { name: 'Single line text' }).click(); await page.getByRole('menuitem', { name: 'Start date time' }).click(); await page.getByRole('menuitem', { name: 'Percent' }).click(); @@ -30,7 +30,7 @@ test.describe('bulk edit action setting', () => { await page.getByRole('option', { name: 'Changed to' }).locator('div').click(); await page.getByRole('spinbutton').click(); await page.getByRole('spinbutton').fill('0'); - await page.getByLabel('schema-initializer-ActionBar-BulkEditFormActionInitializers-general').click(); + await page.getByLabel('schema-initializer-ActionBar-bulkEditForm:configureActions-general').click(); await page.getByRole('menuitem', { name: 'Submit' }).click(); //更新提交的数据符合预期 const [request] = await Promise.all([ diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/utils.ts index 6233fa049..75af4dd96 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/utils.ts @@ -97,7 +97,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { gl57m4hyewf: { _isJSONSchemaObject: true, @@ -154,7 +154,7 @@ export const oneEmptyGantt: PageConfig = { marginBottom: 24, }, }, - 'x-initializer': 'GanttActionInitializers', + 'x-initializer': 'gantt:configureActions', 'x-uid': 'guwovmwt4c0', 'x-async': false, 'x-index': 1, @@ -170,7 +170,7 @@ export const oneEmptyGantt: PageConfig = { maxWidth: '35%', }, }, - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -190,7 +190,7 @@ export const oneEmptyGantt: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -253,7 +253,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': 'gxtfjqzxbfu', 'x-async': false, 'x-index': 1, @@ -327,7 +327,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { '1m4gz110aaw': { @@ -368,7 +368,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -430,7 +430,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BulkEditBlockInitializers', + 'x-initializer': 'popup:bulkEdit:addBlock', 'x-uid': '3gjmo60w4de', 'x-async': false, 'x-index': 1, @@ -464,7 +464,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -483,7 +483,7 @@ export const oneEmptyTableBlockWithCustomizeActions: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx index 41ae1d0ca..fe337eafc 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx @@ -1,8 +1,15 @@ import { Plugin, useCollection_deprecated } from '@nocobase/client'; import { bulkEditActionSettings, deprecatedBulkEditActionSettings } from './BulkEditAction.Settings'; -import { BulkEditFormItemInitializers } from './BulkEditFormItemInitializers'; -import { CreateFormBulkEditBlockInitializers, BulkEditBlockInitializers } from './BulkEditBlockInitializers'; -import { BulkEditFormActionInitializers } from './BulkEditFormActionInitializers'; +import { BulkEditFormItemInitializers_deprecated, bulkEditFormItemInitializers } from './BulkEditFormItemInitializers'; +import { + CreateFormBulkEditBlockInitializers, + BulkEditBlockInitializers_deprecated, + bulkEditBlockInitializers, +} from './BulkEditBlockInitializers'; +import { + BulkEditFormActionInitializers_deprecated, + bulkEditFormActionInitializers, +} from './BulkEditFormActionInitializers'; import { BulkEditActionInitializer } from './BulkEditActionInitializer'; import { bulkEditFormItemSettings } from './bulkEditFormItemSettings'; import { BulkEditField } from './component/BulkEditField'; @@ -14,10 +21,13 @@ export class BulkEditPlugin extends Plugin { this.app.schemaSettingsManager.add(deprecatedBulkEditActionSettings); this.app.schemaSettingsManager.add(bulkEditActionSettings); this.app.schemaSettingsManager.add(bulkEditFormItemSettings); - this.app.schemaInitializerManager.add(BulkEditFormItemInitializers); + this.app.schemaInitializerManager.add(BulkEditFormItemInitializers_deprecated); + this.app.schemaInitializerManager.add(bulkEditFormItemInitializers); this.app.schemaInitializerManager.add(CreateFormBulkEditBlockInitializers); - this.app.schemaInitializerManager.add(BulkEditBlockInitializers); - this.app.schemaInitializerManager.add(BulkEditFormActionInitializers); + this.app.schemaInitializerManager.add(BulkEditBlockInitializers_deprecated); + this.app.schemaInitializerManager.add(bulkEditBlockInitializers); + this.app.schemaInitializerManager.add(BulkEditFormActionInitializers_deprecated); + this.app.schemaInitializerManager.add(bulkEditFormActionInitializers); const initializerData = { type: 'item', @@ -45,9 +55,9 @@ export class BulkEditPlugin extends Plugin { }, }; - this.app.schemaInitializerManager.addItem('TableActionInitializers', 'customize.bulkEdit', initializerData); - this.app.schemaInitializerManager.addItem('GanttActionInitializers', 'customize.bulkEdit', initializerData); - this.app.schemaInitializerManager.addItem('MapActionInitializers', 'customize.bulkEdit', initializerData); + this.app.schemaInitializerManager.addItem('table:configureActions', 'customize.bulkEdit', initializerData); + this.app.schemaInitializerManager.addItem('gantt:configureActions', 'customize.bulkEdit', initializerData); + this.app.schemaInitializerManager.addItem('map:configureActions', 'customize.bulkEdit', initializerData); } } diff --git a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts index bcec7f689..d29899c60 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts +++ b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts @@ -4,7 +4,7 @@ import { oneEmptyGantt } from './utils'; test.describe('TableActionInitializers & GanttActionInitializers & MapActionInitializers ', () => { test('TableActionInitializers should add bulk update', async ({ page, mockPage }) => { await mockPage(oneEmptyTableBlockWithCustomizeActions).goto(); - await page.getByLabel('schema-initializer-ActionBar-TableActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-table:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Customize right' }).click(); await page.getByRole('menuitem', { name: 'Bulk update' }).click(); await expect(page.getByLabel('action-Action-Bulk update-customize:bulkUpdate-general-table')).toBeVisible(); @@ -13,7 +13,7 @@ test.describe('TableActionInitializers & GanttActionInitializers & MapActionInit const nocoPage = await mockPage(oneEmptyGantt).waitForInit(); await mockRecords('general', 3); await nocoPage.goto(); - await page.getByLabel('schema-initializer-ActionBar-GanttActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-gantt:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Customize right' }).click(); await page.getByRole('menuitem', { name: 'Bulk update' }).click(); await page.mouse.move(300, 0); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts index e30ced60c..af5097940 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts +++ b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts @@ -18,7 +18,7 @@ test.describe('data will be updated && Assign field values && after successful s await page.getByRole('option', { name: 'All' }).click(); //字段赋值 await page.getByRole('menuitem', { name: 'Assign field values' }).click(); - await page.getByLabel('schema-initializer-Grid-CustomFormItemInitializers-general').click(); + await page.getByLabel('schema-initializer-Grid-assignFieldValuesForm:configureFields-general').click(); await page.getByRole('menuitem', { name: 'Single select' }).click(); await page.getByTestId('select-single').click(); await page.getByText('option3').click(); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/utils.ts index b145cb2bc..61f7aaae9 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/utils.ts @@ -140,7 +140,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { gl57m4hyewf: { _isJSONSchemaObject: true, @@ -197,7 +197,7 @@ export const oneEmptyGantt: PageConfig = { marginBottom: 24, }, }, - 'x-initializer': 'GanttActionInitializers', + 'x-initializer': 'gantt:configureActions', 'x-uid': 'guwovmwt4c0', 'x-async': false, 'x-index': 1, @@ -213,7 +213,7 @@ export const oneEmptyGantt: PageConfig = { maxWidth: '35%', }, }, - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -233,7 +233,7 @@ export const oneEmptyGantt: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -296,7 +296,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': 'gxtfjqzxbfu', 'x-async': false, 'x-index': 1, @@ -367,7 +367,7 @@ export const oneEmptyTableBlockWithCustomizeUpdate: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', _isJSONSchemaObject: true, properties: { btrf53i4lpi: { @@ -408,7 +408,7 @@ export const oneEmptyTableBlockWithCustomizeUpdate: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component-props': { style: { marginBottom: 'var(--nb-spacing)', @@ -457,7 +457,7 @@ export const oneEmptyTableBlockWithCustomizeUpdate: PageConfig = { type: 'array', version: '2.0', 'x-component': 'TableV2', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component-props': { rowKey: 'id', useProps: '{{ useTableBlockProps }}', @@ -474,7 +474,7 @@ export const oneEmptyTableBlockWithCustomizeUpdate: PageConfig = { 'x-designer': 'TableV2.ActionColumnDesigner', 'x-component': 'TableV2.Column', 'x-decorator': 'TableV2.Column.ActionBar', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-action-column': 'actions', _isJSONSchemaObject: true, properties: { diff --git a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/index.tsx b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/index.tsx index 4340f6e90..360b12649 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-update/src/client/index.tsx @@ -25,9 +25,9 @@ export class PluginBulkUpdateClient extends Plugin { }, }; - this.app.schemaInitializerManager.addItem('TableActionInitializers', 'customize.bulkUpdate', initializerData); - this.app.schemaInitializerManager.addItem('GanttActionInitializers', 'customize.bulkUpdate', initializerData); - this.app.schemaInitializerManager.addItem('MapActionInitializers', 'customize.bulkUpdate', initializerData); + this.app.schemaInitializerManager.addItem('table:configureActions', 'customize.bulkUpdate', initializerData); + this.app.schemaInitializerManager.addItem('gantt:configureActions', 'customize.bulkUpdate', initializerData); + this.app.schemaInitializerManager.addItem('map:configureActions', 'customize.bulkUpdate', initializerData); } } diff --git a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/DuplicateActionInitializer.tsx b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/DuplicateActionInitializer.tsx index e70d18f8f..917c9e641 100644 --- a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/DuplicateActionInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/DuplicateActionInitializer.tsx @@ -38,7 +38,7 @@ export const DuplicateActionInitializer = (props) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts index 000201fbe..a9d77f2d6 100644 --- a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts +++ b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts @@ -11,7 +11,7 @@ test.describe('TableActionColumnInitializers & DetailsActionInitializers & ReadP const nocoPage = await mockPage(oneEmptyTableBlockWithCustomizeActions).waitForInit(); await mockRecords('general', 3); await nocoPage.goto(); - await page.getByRole('button', { name: 'Actions' }).hover(); + await page.getByRole('button', { name: 'Actions', exact: true }).hover(); await page.getByLabel('designer-schema-settings-TableV2.Column-TableV2.ActionColumnDesigner-general').hover(); await page.getByRole('menuitem', { name: 'Duplicate' }).click(); await expect(page.getByLabel('action-Action.Link-Duplicate-duplicate-general-table-0')).toBeVisible(); diff --git a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts index 337d56b24..d74999e27 100644 --- a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts +++ b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts @@ -34,18 +34,18 @@ test.describe('direct duplicate & copy into the form and continue to fill in', ( await page.getByRole('button', { name: 'singleLineText (Duplicate)' }).click(); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page.getByLabel('action-Action.Link-Duplicate-duplicate-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-CreateFormBlockInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-popup:addNew:addBlock-general').hover(); //配置表单区块 await page.getByRole('menuitem', { name: 'form Form' }).click(); await page.mouse.move(300, 0); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); await page.getByRole('menuitem', { name: 'singleLineText' }).click(); await page.getByRole('menuitem', { name: 'oneToOneBelongsTo' }).click(); await page.getByRole('menuitem', { name: 'oneToOneHasOne' }).click(); await page.getByRole('menuitem', { name: 'oneToMany' }).click(); await page.getByRole('menuitem', { name: 'manyToOne', exact: true }).click(); await page.getByRole('menuitem', { name: 'manyToMany' }).click(); - await page.getByLabel('schema-initializer-ActionBar-CreateFormActionInitializers-general').click(); + await page.getByLabel('schema-initializer-ActionBar-createForm:configureActions-general').click(); await page.getByRole('menuitem', { name: 'Submit' }).click(); await page.getByLabel('drawer-Action.Container-general-Duplicate-mask').click(); //同步表单字段 diff --git a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/utils.ts index e85717235..19c0498c1 100644 --- a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/utils.ts @@ -97,7 +97,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { gl57m4hyewf: { _isJSONSchemaObject: true, @@ -154,7 +154,7 @@ export const oneEmptyGantt: PageConfig = { marginBottom: 24, }, }, - 'x-initializer': 'GanttActionInitializers', + 'x-initializer': 'gantt:configureActions', 'x-uid': 'guwovmwt4c0', 'x-async': false, 'x-index': 1, @@ -170,7 +170,7 @@ export const oneEmptyGantt: PageConfig = { maxWidth: '35%', }, }, - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -190,7 +190,7 @@ export const oneEmptyGantt: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -253,7 +253,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': 'gxtfjqzxbfu', 'x-async': false, 'x-index': 1, @@ -327,7 +327,7 @@ export const oneEmptyTableBlockWithDuplicateActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', 'x-index': 1, properties: { '1m4gz110aaw': { @@ -368,7 +368,7 @@ export const oneEmptyTableBlockWithDuplicateActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -384,7 +384,7 @@ export const oneEmptyTableBlockWithDuplicateActions: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'array', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -403,7 +403,7 @@ export const oneEmptyTableBlockWithDuplicateActions: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -465,7 +465,7 @@ export const oneEmptyTableBlockWithDuplicateActions: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', 'x-uid': 'vtcnkzcaeec', 'x-async': false, 'x-index': 1, diff --git a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/index.ts b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/index.ts index 3a2abcf9c..072d681d8 100644 --- a/packages/plugins/@nocobase/plugin-action-duplicate/src/client/index.ts +++ b/packages/plugins/@nocobase/plugin-action-duplicate/src/client/index.ts @@ -60,11 +60,7 @@ export class PluginDuplicateClient extends Plugin { }, }; - this.app.schemaInitializerManager.addItem( - 'TableActionColumnInitializers', - 'actions.duplicate', - initializerTableData, - ); + this.app.schemaInitializerManager.addItem('table:configureItemActions', 'actions.duplicate', initializerTableData); } } diff --git a/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/schemaInitailizer.test.ts b/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/schemaInitailizer.test.ts index abe84dde0..16182a2ab 100644 --- a/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/schemaInitailizer.test.ts +++ b/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/schemaInitailizer.test.ts @@ -8,7 +8,7 @@ test.describe('ReadPrettyFormActionInitializers & CalendarFormActionInitializers await nocoPage.goto(); await page.getByLabel('block-item-CardItem-general-table').hover(); await page.getByLabel('action-Action.Link-View-view-general').click(); - await page.getByLabel('schema-initializer-ActionBar-ReadPrettyFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-details:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Print' }).click(); await expect(page.getByLabel('action-Action-Print-print-general-form')).toBeVisible(); }); @@ -17,7 +17,7 @@ test.describe('ReadPrettyFormActionInitializers & CalendarFormActionInitializers await mockRecord('general', { singleLineText: 'test' }); await nocoPage.goto(); await page.getByTitle('test').click(); - await page.getByLabel('schema-initializer-ActionBar-CalendarFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-details:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Print' }).click(); await page.getByLabel('action-Action-Print-print-general-form').click(); }); diff --git a/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/utils.ts index 51debcd72..84ab88f58 100644 --- a/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-action-print/src/client/__e2e__/utils.ts @@ -96,7 +96,7 @@ export const oneTableWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', _isJSONSchemaObject: true, properties: { '8xj4v8eg792': { @@ -137,7 +137,7 @@ export const oneTableWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'TableActionInitializers', + 'x-initializer': 'table:configureActions', 'x-component-props': { style: { marginBottom: 'var(--nb-spacing)', @@ -152,7 +152,7 @@ export const oneTableWithViewAction: PageConfig = { type: 'array', version: '2.0', 'x-component': 'TableV2', - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component-props': { rowKey: 'id', useProps: '{{ useTableBlockProps }}', @@ -169,7 +169,7 @@ export const oneTableWithViewAction: PageConfig = { 'x-designer': 'TableV2.ActionColumnDesigner', 'x-component': 'TableV2.Column', 'x-decorator': 'TableV2.Column.ActionBar', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', 'x-action-column': 'actions', _isJSONSchemaObject: true, properties: { @@ -230,7 +230,7 @@ export const oneTableWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', _isJSONSchemaObject: true, properties: { v9jpx7749ok: { @@ -276,8 +276,7 @@ export const oneTableWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': - 'ReadPrettyFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component-props': { style: { marginBottom: 24, @@ -292,8 +291,7 @@ export const oneTableWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': - 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', _isJSONSchemaObject: true, 'x-uid': 'kum0xpsh9se', 'x-async': false, @@ -392,7 +390,7 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', _isJSONSchemaObject: true, properties: { '8er4x7qwc0p': { @@ -443,7 +441,7 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'CalendarV2.ActionBar', - 'x-initializer': 'CalendarActionInitializers', + 'x-initializer': 'calendar:configureActions', 'x-component-props': { style: { marginBottom: 24, @@ -503,7 +501,7 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'CreateFormBlockInitializers', + 'x-initializer': 'popup:addNew:addBlock', _isJSONSchemaObject: true, properties: { '7e9xtqdm96x': { @@ -548,7 +546,7 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', _isJSONSchemaObject: true, properties: { ikh538659hb: { @@ -668,7 +666,7 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'CreateFormActionInitializers', + 'x-initializer': 'createForm:configureActions', 'x-component-props': { style: { marginTop: 24, @@ -776,7 +774,7 @@ export const oneCalenderWithViewAction: PageConfig = { 'x-component-props': {}, _isJSONSchemaObject: true, 'x-initializer-props': { - gridInitializer: 'RecordBlockInitializers', + gridInitializer: 'popup:common:addBlock', }, properties: { tab1: { @@ -792,10 +790,10 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', _isJSONSchemaObject: true, 'x-initializer-props': { - actionInitializers: 'CalendarFormActionInitializers', + actionInitializers: 'details:configureActions', }, properties: { '0j7rb0bivys': { @@ -841,7 +839,7 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'ActionBar', - 'x-initializer': 'CalendarFormActionInitializers', + 'x-initializer': 'details:configureActions', 'x-component-props': { style: { marginBottom: 24, @@ -856,7 +854,7 @@ export const oneCalenderWithViewAction: PageConfig = { type: 'void', version: '2.0', 'x-component': 'Grid', - 'x-initializer': 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', _isJSONSchemaObject: true, 'x-uid': 'br7bq2ddccy', 'x-async': false, diff --git a/packages/plugins/@nocobase/plugin-action-print/src/client/index.tsx b/packages/plugins/@nocobase/plugin-action-print/src/client/index.tsx index 89e15fff0..3730092f6 100644 --- a/packages/plugins/@nocobase/plugin-action-print/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-action-print/src/client/index.tsx @@ -18,11 +18,7 @@ export class PrintPlugin extends Plugin { }, }; - this.app.schemaInitializerManager.addItem( - 'ReadPrettyFormActionInitializers', - 'enableActions.print', - initializerData, - ); + this.app.schemaInitializerManager.addItem('details:configureActions', 'enableActions.print', initializerData); this.app.schemaInitializerManager.addItem('CalendarFormActionInitializers', 'enableActions.print', initializerData); } } diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/AuditLogsBlockInitializer.tsx b/packages/plugins/@nocobase/plugin-audit-logs/src/client/AuditLogsBlockInitializer.tsx index 440a694f9..6752dcf10 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/AuditLogsBlockInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/AuditLogsBlockInitializer.tsx @@ -17,9 +17,9 @@ export const AuditLogsBlockInitializer = () => { const schema = createTableBlockSchema({ collection: 'auditLogs', rowKey: 'id', - tableActionInitializers: 'AuditLogsTableActionInitializers', - tableColumnInitializers: 'AuditLogsTableColumnInitializers', - tableActionColumnInitializers: 'AuditLogsTableActionColumnInitializers', + tableActionInitializers: 'auditLogsTable:configureActions', + tableColumnInitializers: 'auditLogsTable:configureColumns', + tableActionColumnInitializers: 'auditLogsTable:configureItemActions', tableBlockProvider: 'AuditLogsBlockProvider', disableTemplate: true, }); diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/components/AuditLogsViewActionInitializer.tsx b/packages/plugins/@nocobase/plugin-audit-logs/src/client/components/AuditLogsViewActionInitializer.tsx index 3802544d1..2ab850ef3 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/components/AuditLogsViewActionInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/components/AuditLogsViewActionInitializer.tsx @@ -206,7 +206,7 @@ export const AuditLogsViewActionInitializer = () => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', }, }, }, diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/deplicated/AuditLogs.tsx b/packages/plugins/@nocobase/plugin-audit-logs/src/client/deplicated/AuditLogs.tsx index f502bc7d3..54e62873d 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/deplicated/AuditLogs.tsx +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/deplicated/AuditLogs.tsx @@ -171,7 +171,7 @@ export const AuditLogs: any = () => { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { type: 'void', diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/index.ts b/packages/plugins/@nocobase/plugin-audit-logs/src/client/index.ts index afee90c42..3cb402f30 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/index.ts +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/index.ts @@ -1,20 +1,32 @@ import { Plugin, SchemaInitializerItemType } from '@nocobase/client'; import { AuditLogsProvider } from './AuditLogsProvider'; -import { auditLogsTableActionColumnInitializers } from './initializers/AuditLogsTableActionColumnInitializers'; -import { auditLogsTableActionInitializers } from './initializers/AuditLogsTableActionInitializers'; -import { auditLogsTableColumnInitializers } from './initializers/AuditLogsTableColumnInitializers'; +import { + auditLogsTableActionColumnInitializers, + auditLogsTableActionColumnInitializers_deprecated, +} from './initializers/AuditLogsTableActionColumnInitializers'; +import { + auditLogsTableActionInitializers, + auditLogsTableActionInitializers_deprecated, +} from './initializers/AuditLogsTableActionInitializers'; +import { + auditLogsTableColumnInitializers, + auditLogsTableColumnInitializers_deprecated, +} from './initializers/AuditLogsTableColumnInitializers'; export * from './AuditLogsBlockInitializer'; export * from './AuditLogsProvider'; export class AuditLogsPlugin extends Plugin { async load() { this.app.use(AuditLogsProvider); + this.app.schemaInitializerManager.add(auditLogsTableActionInitializers_deprecated); this.app.schemaInitializerManager.add(auditLogsTableActionInitializers); + this.app.schemaInitializerManager.add(auditLogsTableActionColumnInitializers_deprecated); this.app.schemaInitializerManager.add(auditLogsTableActionColumnInitializers); + this.app.schemaInitializerManager.add(auditLogsTableColumnInitializers_deprecated); this.app.schemaInitializerManager.add(auditLogsTableColumnInitializers); - const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); - const recordBlockInitializers = this.app.schemaInitializerManager.get('RecordBlockInitializers'); + const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); + const recordBlockInitializers = this.app.schemaInitializerManager.get('popup:common:addBlock'); const auditLogs: Omit = { title: '{{t("Audit logs")}}', Component: 'AuditLogsBlockInitializer', diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializer.tsx b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializer.tsx index 5ec9f3719..a045445a7 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializer.tsx @@ -8,7 +8,7 @@ export const AuditLogsTableActionColumnInitializer = () => { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'AuditLogsTableActionColumnInitializers', + 'x-initializer': 'auditLogsTable:configureItemActions', 'x-action-column': 'actions', properties: { actions: { diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializers.tsx b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializers.tsx index 2026e5397..437f47899 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionColumnInitializers.tsx @@ -1,10 +1,19 @@ import { MenuOutlined } from '@ant-design/icons'; import { useFieldSchema } from '@formily/react'; -import { createDesignable, Resizable, SchemaInitializer, useAPIClient, useDesignable } from '@nocobase/client'; +import { + CompatibleSchemaInitializer, + createDesignable, + Resizable, + useAPIClient, + useDesignable, +} from '@nocobase/client'; import React from 'react'; import { useTranslation } from 'react-i18next'; -export const auditLogsTableActionColumnInitializers = new SchemaInitializer({ +/** + * @deprecated + */ +export const auditLogsTableActionColumnInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'AuditLogsTableActionColumnInitializers', insertPosition: 'beforeEnd', Component: (props: any) => , @@ -65,3 +74,68 @@ export const auditLogsTableActionColumnInitializers = new SchemaInitializer({ }, ], }); + +export const auditLogsTableActionColumnInitializers = new CompatibleSchemaInitializer( + { + name: 'auditLogsTable:configureItemActions', + insertPosition: 'beforeEnd', + Component: (props: any) => , + useInsert() { + const fieldSchema = useFieldSchema(); + const api = useAPIClient(); + const { refresh } = useDesignable(); + const { t } = useTranslation(); + + return (schema) => { + const spaceSchema = fieldSchema.reduceProperties((buf, schema) => { + if (schema['x-component'] === 'Space') { + return schema; + } + return buf; + }, null); + if (!spaceSchema) { + return; + } + const dn = createDesignable({ + t, + api, + refresh, + current: spaceSchema, + }); + dn.loadAPIClientEvents(); + dn.insertBeforeEnd(schema); + }; + }, + items: [ + { + name: 'enableActions', + type: 'itemGroup', + title: '{{t("Enable actions")}}', + children: [ + { + name: 'view', + type: 'item', + title: '{{t("View")}}', + Component: 'AuditLogsViewActionInitializer', + schema: { + 'x-component': 'Action.Link', + 'x-action': 'view', + 'x-decorator': 'ACLActionProvider', + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + }, + { + name: 'columnWidth', + type: 'item', + title: '{{t("Column width")}}', + Component: Resizable, + }, + ], + }, + auditLogsTableActionColumnInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionInitializers.tsx b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionInitializers.tsx index 2fe57c478..41b74bec4 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableActionInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer } from '@nocobase/client'; +import { CompatibleSchemaInitializer } from '@nocobase/client'; -// 操作记录表格操作配置 -export const auditLogsTableActionInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + * 操作记录表格操作配置 + */ +export const auditLogsTableActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'AuditLogsTableActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -34,3 +37,40 @@ export const auditLogsTableActionInitializers: SchemaInitializer = new SchemaIni }, ], }); + +export const auditLogsTableActionInitializers = new CompatibleSchemaInitializer( + { + name: 'auditLogsTable:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + title: "{{t('Enable actions')}}", + name: 'enableActions', + children: [ + { + name: 'filter', + title: "{{t('Filter')}}", + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'left', + }, + }, + { + name: 'refresh', + title: "{{t('Refresh')}}", + Component: 'RefreshActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + ], + }, + ], + }, + auditLogsTableActionInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableColumnInitializers.tsx b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableColumnInitializers.tsx index d285ca29e..81ae12a81 100644 --- a/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableColumnInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-audit-logs/src/client/initializers/AuditLogsTableColumnInitializers.tsx @@ -1,5 +1,5 @@ import { - SchemaInitializer, + CompatibleSchemaInitializer, SchemaInitializerChildren, useAssociatedTableColumnInitializerFields, useCompile, @@ -44,7 +44,10 @@ const AssociatedFields = () => { return {schema}; }; -export const auditLogsTableColumnInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const auditLogsTableColumnInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'AuditLogsTableColumnInitializers', insertPosition: 'beforeEnd', icon: 'SettingOutlined', @@ -87,3 +90,50 @@ export const auditLogsTableColumnInitializers: SchemaInitializer = new SchemaIni }, ], }); + +export const auditLogsTableColumnInitializers = new CompatibleSchemaInitializer( + { + name: 'auditLogsTable:configureColumns', + insertPosition: 'beforeEnd', + icon: 'SettingOutlined', + title: '{{t("Configure columns")}}', + wrap(s) { + if (s['x-action-column']) { + return s; + } + return { + type: 'void', + 'x-decorator': 'TableV2.Column.Decorator', + 'x-designer': 'TableV2.Column.Designer', + 'x-component': 'TableV2.Column', + properties: { + [s.name]: { + ...s, + }, + }, + }; + }, + items: [ + { + name: 'displayFields', + type: 'itemGroup', + title: '{{t("Display fields")}}', + useChildren: useTableColumnInitializerFields, + }, + { + name: 'parentCollectionFields', + Component: ParentCollectionFields, + }, + { + name: 'associationFields', + Component: AssociatedFields, + }, + { + name: 'actionColumn', + title: '{{t("Action column")}}', + Component: 'AuditLogsTableActionColumnInitializer', + }, + ], + }, + auditLogsTableColumnInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/DeleteEvent.tsx b/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/DeleteEvent.tsx index fdadf924f..2a3348737 100644 --- a/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/DeleteEvent.tsx +++ b/packages/plugins/@nocobase/plugin-calendar/src/client/calendar/DeleteEvent.tsx @@ -14,7 +14,7 @@ export const DeleteEvent = observer( const { visible, setVisible } = useActionContext(); const { exclude = [], cron, ...record } = useRecord(); const { close } = useContext(DeleteEventContext); - const startDate = formatDate(dayjs(record.__parent.__event.start)); + const startDate = formatDate(dayjs(record.__parent?.__event.start)); const filterByTk = useFilterByTk(); const { resource, service, __parent } = useBlockRequestContext(); const [value, onChange] = useState(startDate); diff --git a/packages/plugins/@nocobase/plugin-calendar/src/client/index.tsx b/packages/plugins/@nocobase/plugin-calendar/src/client/index.tsx index 4119903e6..de7d6fbd1 100644 --- a/packages/plugins/@nocobase/plugin-calendar/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-calendar/src/client/index.tsx @@ -1,16 +1,21 @@ import { Plugin } from '@nocobase/client'; import { generateNTemplate } from '../locale'; import { CalendarV2 } from './calendar'; +import { calendarBlockSettings } from './calendar/Calender.Settings'; import { CalendarCollectionTemplate } from './collection-templates/calendar'; import { CalendarBlockProvider, useCalendarBlockProps } from './schema-initializer/CalendarBlockProvider'; -import { CalendarActionInitializers, CalendarFormActionInitializers } from './schema-initializer/initializers'; +import { + CalendarActionInitializers_deprecated, + CalendarFormActionInitializers, + calendarActionInitializers, + deleteEventActionInitializer, +} from './schema-initializer/initializers'; import { CalendarBlockInitializer, RecordAssociationCalendarBlockInitializer } from './schema-initializer/items'; -import { calendarBlockSettings } from './calendar/Calender.Settings'; export class PluginCalendarClient extends Plugin { async load() { this.app.dataSourceManager.addCollectionTemplates([CalendarCollectionTemplate]); - this.app.schemaInitializerManager.addItem('BlockInitializers', 'dataBlocks.calendar', { + this.app.schemaInitializerManager.addItem('page:addBlock', 'dataBlocks.calendar', { title: generateNTemplate('Calendar'), Component: 'CalendarBlockInitializer', }); @@ -22,8 +27,12 @@ export class PluginCalendarClient extends Plugin { }); this.app.addScopes({ useCalendarBlockProps }); this.schemaSettingsManager.add(calendarBlockSettings); - this.app.schemaInitializerManager.add(CalendarActionInitializers); + this.app.schemaInitializerManager.add(CalendarActionInitializers_deprecated); + this.app.schemaInitializerManager.add(calendarActionInitializers); this.app.schemaInitializerManager.add(CalendarFormActionInitializers); + this.app.schemaInitializerManager + .get('details:configureActions') + .add('enableActions.deleteEvent', deleteEventActionInitializer); } } diff --git a/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarActionInitializers.tsx b/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarActionInitializers.tsx index 1da7aa53f..23df1f694 100644 --- a/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarActionInitializers.tsx @@ -1,8 +1,11 @@ -import { SchemaInitializer, useCollection_deprecated } from '@nocobase/client'; +import { CompatibleSchemaInitializer, useCollection_deprecated } from '@nocobase/client'; import { generateNTemplate } from '../../../locale'; -// 日历的操作配置 -export const CalendarActionInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + * 日历的操作配置 + */ +export const CalendarActionInitializers_deprecated = new CompatibleSchemaInitializer({ title: generateNTemplate('Configure actions'), icon: 'SettingOutlined', name: 'CalendarActionInitializers', @@ -86,3 +89,91 @@ export const CalendarActionInitializers: SchemaInitializer = new SchemaInitializ }, ], }); + +export const calendarActionInitializers = new CompatibleSchemaInitializer( + { + title: generateNTemplate('Configure actions'), + icon: 'SettingOutlined', + name: 'calendar:configureActions', + style: { marginLeft: 8 }, + items: [ + { + type: 'itemGroup', + name: 'enableActions', + title: generateNTemplate('Enable actions'), + children: [ + { + name: 'today', + title: generateNTemplate('Today'), + Component: 'ActionInitializer', + schema: { + title: generateNTemplate('Today'), + 'x-component': 'CalendarV2.Today', + 'x-action': `calendar:today`, + 'x-align': 'left', + }, + }, + { + name: 'turnPages', + title: generateNTemplate('Turn pages'), + Component: 'ActionInitializer', + schema: { + title: generateNTemplate('Turn pages'), + 'x-component': 'CalendarV2.Nav', + 'x-action': `calendar:nav`, + 'x-align': 'left', + }, + }, + { + name: 'title', + title: generateNTemplate('Title'), + Component: 'ActionInitializer', + schema: { + title: generateNTemplate('Title'), + 'x-component': 'CalendarV2.Title', + 'x-action': `calendar:title`, + 'x-align': 'left', + }, + }, + { + name: 'selectView', + title: generateNTemplate('Select view'), + Component: 'ActionInitializer', + schema: { + title: generateNTemplate('Select view'), + 'x-component': 'CalendarV2.ViewSelect', + 'x-action': `calendar:viewSelect`, + 'x-align': 'right', + 'x-designer': 'Action.Designer', + }, + }, + { + name: 'filter', + title: generateNTemplate('Filter'), + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + { + name: 'addNew', + title: generateNTemplate('Add new'), + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; + }, + }, + ], + }, + ], + }, + CalendarActionInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarFormActionInitializers.tsx b/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarFormActionInitializers.tsx index 97832dea4..67bea5c3f 100644 --- a/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarFormActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/initializers/CalendarFormActionInitializers.tsx @@ -1,8 +1,25 @@ -import { SchemaInitializer, useCollection_deprecated } from '@nocobase/client'; +import { SchemaInitializer, SchemaInitializerItemType, useCollection_deprecated } from '@nocobase/client'; import { generateNTemplate } from '../../../locale'; -// 表单的操作配置 -export const CalendarFormActionInitializers: SchemaInitializer = new SchemaInitializer({ +export const deleteEventActionInitializer: SchemaInitializerItemType = { + name: 'deleteEvent', + title: generateNTemplate('Delete Event'), + Component: 'DeleteEventActionInitializer', + schema: { + 'x-component': 'Action', + 'x-decorator': 'ACLActionProvider', + }, + useVisible() { + const collection = useCollection_deprecated(); + return collection.template === 'calendar'; + }, +}; + +/** + * @deprecated + * 表单的操作配置 + */ +export const CalendarFormActionInitializers = new SchemaInitializer({ title: generateNTemplate('Configure actions'), name: 'CalendarFormActionInitializers', icon: 'SettingOutlined', @@ -44,19 +61,7 @@ export const CalendarFormActionInitializers: SchemaInitializer = new SchemaIniti return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; }, }, - { - name: 'deleteEvent', - title: generateNTemplate('Delete Event'), - Component: 'DeleteEventActionInitializer', - schema: { - 'x-component': 'Action', - 'x-decorator': 'ACLActionProvider', - }, - useVisible() { - const collection = useCollection_deprecated(); - return (collection.template !== 'view' || collection?.writableView) && collection.template !== 'sql'; - }, - }, + deleteEventActionInitializer, ], }, { @@ -108,7 +113,7 @@ export const CalendarFormActionInitializers: SchemaInitializer = new SchemaIniti grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/utils.ts b/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/utils.ts index a358c922b..2cfced89a 100644 --- a/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/utils.ts +++ b/packages/plugins/@nocobase/plugin-calendar/src/client/schema-initializer/utils.ts @@ -41,7 +41,7 @@ export const createCalendarBlockSchema = (options) => { marginBottom: 24, }, }, - 'x-initializer': 'CalendarActionInitializers', + 'x-initializer': 'calendar:configureActions', properties: {}, }, event: { @@ -62,7 +62,7 @@ export const createCalendarBlockSchema = (options) => { 'x-component-props': {}, 'x-initializer': 'TabPaneInitializers', 'x-initializer-props': { - gridInitializer: 'RecordBlockInitializers', + gridInitializer: 'popup:common:addBlock', }, properties: { tab1: { @@ -76,9 +76,9 @@ export const createCalendarBlockSchema = (options) => { type: 'void', 'x-component': 'Grid', 'x-initializer-props': { - actionInitializers: 'CalendarFormActionInitializers', + actionInitializers: 'details:configureActions', }, - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-charts/src/client/index.tsx b/packages/plugins/@nocobase/plugin-charts/src/client/index.tsx index 9265307db..0eff99b25 100644 --- a/packages/plugins/@nocobase/plugin-charts/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-charts/src/client/index.tsx @@ -6,7 +6,7 @@ import { ChartBlockEngine } from './ChartBlockEngine'; import { ChartBlockInitializer } from './ChartBlockInitializer'; import { ChartQueryMetadataProvider } from './ChartQueryMetadataProvider'; import './Icons'; -import { lang, NAMESPACE } from './locale'; +import { NAMESPACE, lang } from './locale'; import { CustomSelect } from './select'; import { QueriesTable } from './settings/QueriesTable'; @@ -73,7 +73,7 @@ export class ChartsPlugin extends Plugin { } async load() { // Chart (Old) 老的不需要了 - // const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); + // const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); // blockInitializers?.add('data-blocks.chart-old', { // icon: 'PieChartOutlined', // title: '{{t("Chart (Old)",{ns:"charts"})}}', diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/attachment/schemaInitializer.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/attachment/schemaInitializer.test.ts index 4275cb470..c5d23c6e1 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/attachment/schemaInitializer.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/attachment/schemaInitializer.test.ts @@ -9,7 +9,7 @@ test.describe('form item & create form', () => { page, showMenu: async () => { await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['markdown', 'richtext', 'attachment'], }); @@ -28,7 +28,7 @@ test.describe('form item & edit form', () => { await page.getByLabel('action-Action.Link-Edit record-update-general-table-0').click(); // 等待弹窗内容渲染完成 await page.waitForTimeout(1000); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['markdown', 'richtext', 'attachment'], }); @@ -47,7 +47,7 @@ test.describe('form item & view form', () => { await page.getByLabel('action-Action.Link-View record-view-general-table-0').click(); // 等待弹窗内容渲染完成 await page.waitForTimeout(1000); - await page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-details:configureFields-general').hover(); }, supportedOptions: ['markdown', 'richtext', 'attachment'], }); diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/belongsTo/schemaInitializer.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/belongsTo/schemaInitializer.test.ts index 7a92dab3f..dd3f791ac 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/belongsTo/schemaInitializer.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/belongsTo/schemaInitializer.test.ts @@ -14,7 +14,7 @@ test.describe('form item & create form', () => { page, showMenu: async () => { await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['oneToMany', 'manyToOne', 'manyToMany', 'oneToOneBelongsTo', 'oneToOneHasOne'], }); @@ -32,7 +32,7 @@ test.describe('form item & edit form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-Edit record-update-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['oneToMany', 'manyToOne', 'manyToMany', 'oneToOneBelongsTo', 'oneToOneHasOne'], }); @@ -49,7 +49,7 @@ test.describe('form item & view form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-View record-view-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-details:configureFields-general').hover(); }, supportedOptions: ['oneToMany', 'manyToOne', 'manyToMany', 'oneToOneBelongsTo', 'oneToOneHasOne'], }); diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/checkbox/schemaInitializer.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/checkbox/schemaInitializer.test.ts index 0e534358f..ab83df419 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/checkbox/schemaInitializer.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/checkbox/schemaInitializer.test.ts @@ -9,7 +9,7 @@ test.describe('form item & create form', () => { page, showMenu: async () => { await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['checkbox', 'chinaRegion', 'multipleSelect', 'radioGroup', 'singleSelect', 'checkboxGroup'], }); @@ -26,7 +26,7 @@ test.describe('form item & edit form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-Edit record-update-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['checkbox', 'chinaRegion', 'multipleSelect', 'radioGroup', 'singleSelect', 'checkboxGroup'], }); @@ -43,7 +43,7 @@ test.describe('form item & view form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-View record-view-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-details:configureFields-general').hover(); }, supportedOptions: ['checkbox', 'chinaRegion', 'multipleSelect', 'radioGroup', 'singleSelect', 'checkboxGroup'], }); diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/collection/schemaInitializer.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/collection/schemaInitializer.test.ts index a8f460d07..90ceb02b6 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/collection/schemaInitializer.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/collection/schemaInitializer.test.ts @@ -13,7 +13,7 @@ test.describe('form item & create form', () => { page, showMenu: async () => { await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['formula', 'sequence', 'JSON', 'collection'], }); @@ -30,7 +30,7 @@ test.describe('form item & edit form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-Edit record-update-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['formula', 'sequence', 'JSON', 'collection'], }); @@ -47,7 +47,7 @@ test.describe('form item & view form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-View record-view-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-details:configureFields-general').hover(); }, supportedOptions: ['formula', 'sequence', 'JSON', 'collection'], }); diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/color/schemaInitializer.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/color/schemaInitializer.test.ts index dd82910d1..363c198af 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/color/schemaInitializer.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/color/schemaInitializer.test.ts @@ -9,7 +9,7 @@ test.describe('form item & create form', () => { page, showMenu: async () => { await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: [ 'color', @@ -38,7 +38,7 @@ test.describe('form item & edit form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-Edit record-update-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: [ 'color', @@ -67,7 +67,7 @@ test.describe('form item & view form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-View record-view-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-details:configureFields-general').hover(); }, supportedOptions: [ 'color', diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/createdAt/schemaInitializer.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/createdAt/schemaInitializer.test.ts index 60dc80d84..cc3df5e70 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/createdAt/schemaInitializer.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/createdAt/schemaInitializer.test.ts @@ -13,7 +13,7 @@ test.describe('form item & create form', () => { page, showMenu: async () => { await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['Created at', 'Last updated at', 'Created by', 'Last updated by', 'ID', 'Table OID'], }); @@ -30,7 +30,7 @@ test.describe('form item & edit form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-Edit record-update-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['Created at', 'Last updated at', 'Created by', 'Last updated by', 'ID', 'Table OID'], }); @@ -47,7 +47,7 @@ test.describe('form item & view form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-View').click(); - await page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-details:configureFields-general').hover(); }, supportedOptions: ['Created at', 'Last updated at', 'Created by', 'Last updated by', 'ID', 'Table OID'], }); diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/datetime/schemaInitializer.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/datetime/schemaInitializer.test.ts index 0f982e116..1ef8819d9 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/datetime/schemaInitializer.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/datetime/schemaInitializer.test.ts @@ -13,7 +13,7 @@ test.describe('form item & create form', () => { page, showMenu: async () => { await page.getByRole('button', { name: 'Add new' }).click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['datetime', 'time'], }); @@ -30,7 +30,7 @@ test.describe('form item & edit form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-Edit record-update-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').hover(); }, supportedOptions: ['datetime', 'time'], }); @@ -47,7 +47,7 @@ test.describe('form item & view form', () => { page, showMenu: async () => { await page.getByLabel('action-Action.Link-View record-view-general-table-0').click(); - await page.getByLabel('schema-initializer-Grid-ReadPrettyFormItemInitializers-general').hover(); + await page.getByLabel('schema-initializer-Grid-details:configureFields-general').hover(); }, supportedOptions: ['datetime', 'time'], }); diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/manyToMany/schemaSettings.test.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/manyToMany/schemaSettings.test.ts index 8ab817f29..87b53d701 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/manyToMany/schemaSettings.test.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/fields/manyToMany/schemaSettings.test.ts @@ -260,7 +260,7 @@ test.describe('form item & create form', () => { await expect( page .getByLabel('block-item-CollectionField-general-form-general.manyToMany-manyToMany') - .getByLabel('schema-initializer-AssociationField.SubTable-TableColumnInitializers-users'), + .getByLabel('schema-initializer-AssociationField.SubTable-table:configureColumns-users'), ).toBeVisible(); // 选择 Sub-form @@ -275,7 +275,7 @@ test.describe('form item & create form', () => { await expect( page .getByLabel('block-item-CollectionField-general-form-general.manyToMany-manyToMany') - .getByLabel('schema-initializer-Grid-FormItemInitializers-users'), + .getByLabel('schema-initializer-Grid-form:configureFields-users'), ).toBeVisible(); // 选择 Sub-form(Popover) diff --git a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/utils.ts index 616c47b33..97b646c26 100644 --- a/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-collection-manager/src/client/__e2e__/utils.ts @@ -6,7 +6,7 @@ export async function showSettingsMenu(page: Page, fieldName: string) { } export async function createColumnItem(page: Page, fieldName: string) { - await page.getByLabel('schema-initializer-TableV2-TableColumnInitializers-general').hover(); + await page.getByLabel('schema-initializer-TableV2-table:configureColumns-general').hover(); await page.getByRole('menuitem', { name: fieldName, exact: true }).click(); await page.mouse.move(300, 0); } diff --git a/packages/plugins/@nocobase/plugin-custom-request/src/client/__e2e__/schemaSettings.test.ts b/packages/plugins/@nocobase/plugin-custom-request/src/client/__e2e__/schemaSettings.test.ts index a3bd9265b..bb4a46bc2 100644 --- a/packages/plugins/@nocobase/plugin-custom-request/src/client/__e2e__/schemaSettings.test.ts +++ b/packages/plugins/@nocobase/plugin-custom-request/src/client/__e2e__/schemaSettings.test.ts @@ -5,7 +5,7 @@ test('edit button', async ({ page, mockPage, mockRecord }) => { await mockRecord('t_unp4scqamw9'); // 新建一个 custom request action - await page.getByRole('button', { name: 'Actions' }).hover(); + await page.getByRole('button', { name: 'Actions', exact: true }).hover(); await page.getByLabel('designer-schema-settings-TableV2.Column-TableV2.ActionColumnDesigner-').hover(); await page.getByRole('menuitem', { name: 'Customize right' }).hover(); await page.getByRole('menuitem', { name: 'Custom request' }).click(); diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/client/block/ChartBlockInitializer.tsx b/packages/plugins/@nocobase/plugin-data-visualization/src/client/block/ChartBlockInitializer.tsx index 7683f1327..07ebb20af 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/client/block/ChartBlockInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/client/block/ChartBlockInitializer.tsx @@ -1,8 +1,8 @@ import { BarChartOutlined, LineChartOutlined } from '@ant-design/icons'; import { uid } from '@formily/shared'; import { + CompatibleSchemaInitializer, DataBlockInitializer, - SchemaInitializer, SchemaInitializerItem, useACLRoleContext, useSchemaInitializer, @@ -46,7 +46,10 @@ const ChartInitializer = () => { ); }; -export const chartInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const chartInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'ChartInitializers', icon: 'PlusOutlined', title: '{{t("Add block")}}', @@ -71,6 +74,34 @@ export const chartInitializers: SchemaInitializer = new SchemaInitializer({ ], }); +export const chartInitializers = new CompatibleSchemaInitializer( + { + name: 'charts:addBlock', + icon: 'PlusOutlined', + title: '{{t("Add block")}}', + items: [ + { + name: 'chart', + title: lang('Chart'), + Component: ChartInitializer, + }, + { + name: 'otherBlocks', + type: 'itemGroup', + title: lang('Other blocks'), + children: [ + { + name: 'filter', + title: lang('Filter'), + Component: FilterBlockInitializer, + }, + ], + }, + ], + }, + chartInitializers_deprecated, +); + export const ChartV2BlockInitializer: React.FC = () => { const itemConfig = useSchemaInitializerItem(); const { insert } = useSchemaInitializer(); @@ -91,7 +122,7 @@ export const ChartV2BlockInitializer: React.FC = () => { type: 'void', 'x-component': 'Grid', 'x-decorator': 'ChartV2Block', - 'x-initializer': 'ChartInitializers', + 'x-initializer': 'charts:addBlock', }, }, }); diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterActionInitializers.tsx b/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterActionInitializers.tsx index 15c7e4a53..7e400fc47 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterActionInitializers.tsx @@ -3,8 +3,8 @@ import { useForm } from '@formily/react'; import { Action, ActionInitializer, + CompatibleSchemaInitializer, GeneralSchemaDesigner, - SchemaInitializer, SchemaSettingsDivider, SchemaSettingsRemove, } from '@nocobase/client'; @@ -125,7 +125,10 @@ const ChartFilterCollapseInitializer = (props) => { return ; }; -export const chartFilterActionInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const chartFilterActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'ChartFilterActionInitializers', 'data-testid': 'configure-actions-button-of-chart-filter', title: '{{t("Configure actions")}}', @@ -167,3 +170,49 @@ export const chartFilterActionInitializers: SchemaInitializer = new SchemaInitia }, ], }); + +export const chartFilterActionInitializers = new CompatibleSchemaInitializer( + { + name: 'chartFilterForm:configureActions', + 'data-testid': 'configure-actions-button-of-chart-filter', + title: '{{t("Configure actions")}}', + icon: 'SettingOutlined', + items: [ + { + name: 'enbaleActions', + type: 'itemGroup', + title: '{{t("Enable actions")}}', + children: [ + { + name: 'filter', + type: 'item', + title: '{{t("Filter")}}', + component: ChartFilterActionInitializer, + schema: { + 'x-action-settings': {}, + }, + }, + { + name: 'reset', + type: 'item', + title: '{{t("Reset")}}', + component: ChartFilterResetInitializer, + schema: { + 'x-action-settings': {}, + }, + }, + { + name: 'collapse', + type: 'item', + title: '{{t("Collapse")}}', + component: ChartFilterCollapseInitializer, + schema: { + 'x-action-settings': {}, + }, + }, + ], + }, + ], + }, + chartFilterActionInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterBlockInitializer.tsx b/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterBlockInitializer.tsx index f85276afa..56cdb3cfb 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterBlockInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterBlockInitializer.tsx @@ -31,12 +31,12 @@ const createFilterSchema = () => { grid: { type: 'void', 'x-component': 'ChartFilterGrid', - 'x-initializer': 'ChartFilterItemInitializers', + 'x-initializer': 'chartFilterForm:configureFields', properties: {}, }, actions: { type: 'void', - 'x-initializer': 'ChartFilterActionInitializers', + 'x-initializer': 'chartFilterForm:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterItemInitializers.tsx b/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterItemInitializers.tsx index baa269873..6fa6c3fc8 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterItemInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/client/filter/FilterItemInitializers.tsx @@ -8,11 +8,11 @@ import { BlockItem, CollectionFieldProvider, CollectionProvider, + CompatibleSchemaInitializer, FormDialog, HTMLEncode, SchemaComponent, SchemaComponentOptions, - SchemaInitializer, SchemaInitializerItem, gridRowColWrap, useCollectionManager_deprecated, @@ -227,7 +227,10 @@ export const ChartFilterCustomItemInitializer: React.FC<{ }); ChartFilterCustomItemInitializer.displayName = 'ChartFilterCustomItemInitializer'; -export const chartFilterItemInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const chartFilterItemInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'ChartFilterItemInitializers', 'data-testid': 'configure-fields-button-of-chart-filter-item', wrap: gridRowColWrap, @@ -273,3 +276,53 @@ export const chartFilterItemInitializers: SchemaInitializer = new SchemaInitiali }, ], }); + +export const chartFilterItemInitializers = new CompatibleSchemaInitializer( + { + name: 'chartFilterForm:configureFields', + 'data-testid': 'configure-fields-button-of-chart-filter-item', + wrap: gridRowColWrap, + icon: 'SettingOutlined', + title: '{{ t("Configure fields") }}', + items: [ + { + type: 'itemGroup', + name: 'displayFields', + title: '{{ t("Display fields") }}', + useChildren: () => { + const { getCollection } = useCollectionManager_deprecated(); + const { getChartCollections } = useChartData(); + const { getChartFilterFields } = useChartFilter(); + const collections = getChartCollections(); + + return useMemo(() => { + return collections.map((name: any) => { + const collection = getCollection(name); + const fields = getChartFilterFields(collection); + return { + name: collection.key, + type: 'subMenu', + title: collection.title, + children: fields, + }; + }); + }, [collections]); + }, + }, + { + name: 'divider', + type: 'divider', + }, + { + name: 'custom', + type: 'item', + title: lang('Custom'), + Component: () => { + const { insertAdjacent } = useDesignable(); + return insertAdjacent('beforeEnd', s)} />; + }, + }, + ], + }, + chartFilterItemInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/client/index.tsx b/packages/plugins/@nocobase/plugin-data-visualization/src/client/index.tsx index 793222d4a..b311511f5 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/client/index.tsx @@ -1,10 +1,21 @@ import { Plugin } from '@nocobase/client'; -import { ChartV2Block, ChartV2BlockDesigner, ChartV2BlockInitializer, chartInitializers } from './block'; +import { + ChartV2Block, + ChartV2BlockDesigner, + ChartV2BlockInitializer, + chartInitializers, + chartInitializers_deprecated, +} from './block'; import antd from './chart/antd'; import g2plot from './chart/g2plot'; import { ChartGroup } from './chart/group'; +import { + chartFilterActionInitializers, + chartFilterActionInitializers_deprecated, + chartFilterItemInitializers, + chartFilterItemInitializers_deprecated, +} from './filter'; import { lang } from './locale'; -import { chartFilterActionInitializers, chartFilterItemInitializers } from './filter'; class DataVisualizationPlugin extends Plugin { public charts: ChartGroup = new ChartGroup(); @@ -18,11 +29,14 @@ class DataVisualizationPlugin extends Plugin { ChartV2Block, }); + this.app.schemaInitializerManager.add(chartInitializers_deprecated); this.app.schemaInitializerManager.add(chartInitializers); + this.app.schemaInitializerManager.add(chartFilterItemInitializers_deprecated); this.app.schemaInitializerManager.add(chartFilterItemInitializers); + this.app.schemaInitializerManager.add(chartFilterActionInitializers_deprecated); this.app.schemaInitializerManager.add(chartFilterActionInitializers); - const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); + const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); blockInitializers?.add('dataBlocks.chartV2', { title: lang('Charts'), Component: 'ChartV2BlockInitializer', @@ -33,6 +47,6 @@ class DataVisualizationPlugin extends Plugin { export default DataVisualizationPlugin; export { Chart } from './chart/chart'; export type { ChartProps, ChartType, RenderProps } from './chart/chart'; +export { ChartConfigContext } from './configure'; export type { FieldOption } from './hooks'; export type { QueryProps } from './renderer'; -export { ChartConfigContext } from './configure'; diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/client/utils.ts b/packages/plugins/@nocobase/plugin-data-visualization/src/client/utils.ts index 2e8e842d0..0d6d4d98b 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/client/utils.ts +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/client/utils.ts @@ -1,9 +1,9 @@ import { Schema } from '@formily/react'; import { uid } from '@formily/shared'; +import lodash from 'lodash'; import { SelectedField } from './configure'; import { FieldOption } from './hooks'; import { QueryProps } from './renderer'; -import lodash from 'lodash'; export const createRendererSchema = (decoratorProps: any, componentProps = {}) => { const { collection } = decoratorProps; @@ -17,7 +17,7 @@ export const createRendererSchema = (decoratorProps: any, componentProps = {}) = 'x-component-props': { size: 'small', }, - 'x-initializer': 'ChartInitializers', + 'x-initializer': 'charts:addBlock', properties: { [uid()]: { type: 'void', diff --git a/packages/plugins/@nocobase/plugin-export/src/client/index.ts b/packages/plugins/@nocobase/plugin-export/src/client/index.ts index 97ee42a6a..f503debb0 100644 --- a/packages/plugins/@nocobase/plugin-export/src/client/index.ts +++ b/packages/plugins/@nocobase/plugin-export/src/client/index.ts @@ -22,9 +22,9 @@ export class ExportPlugin extends Plugin { }, }; - const tableActionInitializers = this.app.schemaInitializerManager.get('TableActionInitializers'); + const tableActionInitializers = this.app.schemaInitializerManager.get('table:configureActions'); tableActionInitializers?.add('enableActions.export', initializerData); - this.app.schemaInitializerManager.addItem('GanttActionInitializers', 'enableActions.export', initializerData); + this.app.schemaInitializerManager.addItem('gantt:configureActions', 'enableActions.export', initializerData); this.app.schemaSettingsManager.add(exportActionSchemaSettings); } } diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx b/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx index dff9a349d..f8bbea241 100644 --- a/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx @@ -24,7 +24,7 @@ export class FileManagerPlugin extends Plugin { this.registerStorageType(storageType.name, storageType); }); - const tableActionInitializers = this.app.schemaInitializerManager.get('TableActionInitializers'); + const tableActionInitializers = this.app.schemaInitializerManager.get('table:configureActions'); tableActionInitializers?.add('enableActions.upload', { title: "{{t('Upload')}}", Component: 'UploadActionInitializer', diff --git a/packages/plugins/@nocobase/plugin-gantt/src/client/GanttActionInitializers.tsx b/packages/plugins/@nocobase/plugin-gantt/src/client/GanttActionInitializers.tsx index d20332963..b7368dafa 100644 --- a/packages/plugins/@nocobase/plugin-gantt/src/client/GanttActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-gantt/src/client/GanttActionInitializers.tsx @@ -1,7 +1,10 @@ import { useFieldSchema } from '@formily/react'; -import { SchemaInitializer, useCollection_deprecated } from '@nocobase/client'; +import { CompatibleSchemaInitializer, useCollection_deprecated } from '@nocobase/client'; -export const GanttActionInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const GanttActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'GanttActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -146,3 +149,152 @@ export const GanttActionInitializers: SchemaInitializer = new SchemaInitializer( }, ], }); + +export const ganttActionInitializers = new CompatibleSchemaInitializer( + { + name: 'gantt:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + name: 'enableActions', + title: "{{t('Enable actions')}}", + children: [ + { + type: 'item', + name: 'filter', + title: "{{t('Filter')}}", + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'left', + }, + }, + { + type: 'item', + title: "{{t('Add new')}}", + name: 'addNew', + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'file', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + { + type: 'item', + title: "{{t('Delete')}}", + name: 'delete', + Component: 'BulkDestroyActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + }, + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + { + type: 'item', + title: "{{t('Refresh')}}", + name: 'refresh', + Component: 'RefreshActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + { + name: 'toggle', + title: "{{t('Expand/Collapse')}}", + Component: 'ExpandableActionInitializer', + schema: { + 'x-align': 'right', + }, + useVisible() { + const schema = useFieldSchema(); + const collection = useCollection_deprecated(); + const { treeTable } = schema?.parent?.['x-decorator-props'] || {}; + return collection.tree && treeTable !== false; + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + { + type: 'subMenu', + name: 'customize', + title: '{{t("Customize")}}', + children: [ + // { + // type: 'item', + // title: '{{t("Bulk update")}}', + // Component: 'CustomizeActionInitializer', + // name: 'bulkUpdate', + // schema: { + // type: 'void', + // title: '{{ t("Bulk update") }}', + // 'x-component': 'Action', + // 'x-align': 'right', + // 'x-acl-action': 'update', + // 'x-decorator': 'ACLActionProvider', + // 'x-acl-action-props': { + // skipScopeCheck: true, + // }, + // 'x-action': 'customize:bulkUpdate', + // 'x-designer': 'Action.Designer', + // 'x-action-settings': { + // assignedValues: {}, + // updateMode: 'selected', + // onSuccess: { + // manualClose: true, + // redirecting: false, + // successMessage: '{{t("Updated successfully")}}', + // }, + // }, + // 'x-component-props': { + // icon: 'EditOutlined', + // useProps: '{{ useCustomizeBulkUpdateActionProps }}', + // }, + // }, + // }, + { + type: 'item', + title: '{{t("Add record")}}', + name: 'addRecord', + Component: 'CustomizeAddRecordActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action': 'create', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + }, + ], + useVisible() { + const collection = useCollection_deprecated(); + return !['view', 'sql'].includes(collection.template) || collection?.writableView; + }, + }, + ], + }, + GanttActionInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts index 4874963eb..c054f0d15 100644 --- a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts +++ b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts @@ -16,7 +16,7 @@ test('drag and adjust start time, end time, and progress', async ({ page, mockPa await page.getByRole('option', { name: 'Week' }).click(); await page.getByRole('menuitem', { name: 'Time scale' }).hover(); await page.mouse.move(300, 0); - await page.getByRole('button', { name: 'Actions' }).click(); + await page.getByRole('button', { name: 'Actions', exact: true }).click(); await expect(page.locator('.calendarBottomText').first()).toHaveText(/W/); await page.locator('.bar ').hover(); const draggableElement = await page.getByLabel('task-bar').getByRole('button').first(); diff --git a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaInitailizer.test.ts b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaInitailizer.test.ts index 880ecc635..5a5569ca4 100644 --- a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaInitailizer.test.ts +++ b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaInitailizer.test.ts @@ -4,7 +4,7 @@ import { generalWithDatetimeFields, oneEmptyGantt } from './utils'; test('BlockInitializers should add gantt block', async ({ page, mockPage, mockCollections }) => { await mockCollections(generalWithDatetimeFields); await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').click(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').click(); await page.getByRole('menuitem', { name: 'form Gantt right' }).click(); await page.getByRole('menuitem', { name: 'General' }).click(); await page.getByLabel('block-item-Select-Title field').click(); @@ -25,7 +25,7 @@ test('BlockInitializers should add gantt block', async ({ page, mockPage, mockCo test.describe('configure fields', () => { test('add field,then remove field in gantt block', async ({ page, mockPage, mockRecord }) => { await mockPage(oneEmptyGantt).goto(); - await page.getByLabel('schema-initializer-TableV2-TableColumnInitializers-general').hover(); + await page.getByLabel('schema-initializer-TableV2-table:configureColumns-general').hover(); await page.getByRole('menuitem', { name: 'ID' }).click(); await page.getByRole('menuitem', { name: 'Single line text2' }).click(); //添加字段 @@ -43,7 +43,7 @@ test.describe('configure fields', () => { test('add assciation field should appends association', async ({ page, mockPage, mockRecord }) => { await mockPage(oneEmptyGantt).goto(); await mockRecord('general', { singleLineText: 'singleLineText', manyToOne: { id: 1 } }); - await page.getByLabel('schema-initializer-TableV2-TableColumnInitializers-general').hover(); + await page.getByLabel('schema-initializer-TableV2-table:configureColumns-general').hover(); //关系字段,断言请求的appends是否符合预期 const [request] = await Promise.all([ @@ -75,7 +75,7 @@ test.describe('configure fields', () => { test.describe('configure actions', () => { test('configure button in gannt block', async ({ page, mockPage }) => { await mockPage(oneEmptyGantt).goto(); - await page.getByLabel('schema-initializer-ActionBar-GanttActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-gantt:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Filter' }).getByRole('switch').click(); await page.getByRole('menuitem', { name: 'Add new' }).click(); await page.getByRole('menuitem', { name: 'Delete' }).click(); diff --git a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts index e57c90439..8db3544ba 100644 --- a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts +++ b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts @@ -43,7 +43,7 @@ test.describe('configure params in gantt block', () => { await page.getByLabel('designer-schema-settings-CardItem-Gantt.Designer-general').hover(); await page.getByRole('menuitem', { name: 'Title field' }).click(); await page.getByRole('option', { name: 'Single line text2' }).locator('div').click(); - await page.getByRole('button', { name: 'Actions' }).click(); + await page.getByRole('button', { name: 'Actions', exact: true }).click(); await page.mouse.move(300, 0); const barLabel = page.getByLabel('block-item-gantt').locator('.barLabel'); await barLabel.hover(); @@ -57,7 +57,7 @@ test.describe('configure params in gantt block', () => { await page.getByRole('menuitem', { name: 'Start date field' }).click(); await page.getByRole('option', { name: 'Start date time2' }).locator('div').click(); await page.mouse.move(300, 0); - await page.getByRole('button', { name: 'Actions' }).click(); + await page.getByRole('button', { name: 'Actions', exact: true }).click(); await page.locator('.bar').hover({ position: { x: 20, y: 10 } }); await expect(page.getByLabel('nb-gantt-tooltip')).toHaveText( new RegExp(String(getYmd(new Date(mockData['startDatetime2'])))), @@ -72,7 +72,7 @@ test.describe('configure params in gantt block', () => { await page.getByRole('menuitem', { name: 'End date field' }).click(); await page.getByRole('option', { name: 'End date time2' }).locator('div').click(); await page.mouse.move(300, 0); - await page.getByRole('button', { name: 'Actions' }).click(); + await page.getByRole('button', { name: 'Actions', exact: true }).click(); await page.locator('.bar').hover({ position: { x: 20, y: 10 } }); await expect(page.getByLabel('nb-gantt-tooltip')).toHaveText( new RegExp(String(getYmd(new Date(mockData['endDatetime2'])))), @@ -88,7 +88,7 @@ test.describe('configure params in gantt block', () => { await page.getByRole('option', { name: 'Week' }).click(); await page.getByRole('menuitem', { name: 'Time scale' }).hover(); await page.mouse.move(300, 0); - await page.getByRole('button', { name: 'Actions' }).click(); + await page.getByRole('button', { name: 'Actions', exact: true }).click(); await page.locator('.bar').hover({ position: { x: 20, y: 10 } }); await expect(page.locator('.calendarBottomText').first()).toHaveText(/W/); }); diff --git a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/utils.ts index 806fc3866..de81821fd 100644 --- a/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-gantt/src/client/__e2e__/utils.ts @@ -140,7 +140,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { gl57m4hyewf: { _isJSONSchemaObject: true, @@ -197,7 +197,7 @@ export const oneEmptyGantt: PageConfig = { marginBottom: 24, }, }, - 'x-initializer': 'GanttActionInitializers', + 'x-initializer': 'gantt:configureActions', 'x-uid': 'guwovmwt4c0', 'x-async': false, 'x-index': 1, @@ -213,7 +213,7 @@ export const oneEmptyGantt: PageConfig = { maxWidth: '35%', }, }, - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -233,7 +233,7 @@ export const oneEmptyGantt: PageConfig = { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { _isJSONSchemaObject: true, @@ -296,7 +296,7 @@ export const oneEmptyGantt: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': 'gxtfjqzxbfu', 'x-async': false, 'x-index': 1, diff --git a/packages/plugins/@nocobase/plugin-gantt/src/client/index.tsx b/packages/plugins/@nocobase/plugin-gantt/src/client/index.tsx index e2e963038..496f02507 100644 --- a/packages/plugins/@nocobase/plugin-gantt/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-gantt/src/client/index.tsx @@ -2,7 +2,7 @@ import { ActionBar, CurrentAppInfoProvider, Plugin, SchemaComponentOptions } fro import React from 'react'; import { GanttDesigner } from './Gantt.Designer'; import { ganttSettings, oldGanttSettings } from './Gantt.Settings'; -import { GanttActionInitializers } from './GanttActionInitializers'; +import { GanttActionInitializers_deprecated, ganttActionInitializers } from './GanttActionInitializers'; import { GanttBlockInitializer } from './GanttBlockInitializer'; import { GanttBlockProvider, useGanttBlockProps } from './GanttBlockProvider'; import { Event } from './components/gantt/Event'; @@ -34,8 +34,9 @@ export class GanttPlugin extends Plugin { this.app.use(GanttProvider); this.app.schemaSettingsManager.add(oldGanttSettings); this.app.schemaSettingsManager.add(ganttSettings); - this.app.schemaInitializerManager.add(GanttActionInitializers); - const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); + this.app.schemaInitializerManager.add(GanttActionInitializers_deprecated); + this.app.schemaInitializerManager.add(ganttActionInitializers); + const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); blockInitializers?.add('dataBlocks.gantt', { title: "{{t('Gantt')}}", Component: 'GanttBlockInitializer', diff --git a/packages/plugins/@nocobase/plugin-gantt/src/client/utils.tsx b/packages/plugins/@nocobase/plugin-gantt/src/client/utils.tsx index c37497183..667011506 100644 --- a/packages/plugins/@nocobase/plugin-gantt/src/client/utils.tsx +++ b/packages/plugins/@nocobase/plugin-gantt/src/client/utils.tsx @@ -1,6 +1,6 @@ import { ISchema } from '@formily/react'; import { uid } from '@formily/shared'; -import { useCompile, useCollection_deprecated } from '@nocobase/client'; +import { useCollection_deprecated, useCompile } from '@nocobase/client'; import { useTranslation } from 'react-i18next'; export const useGanttTranslation = () => { @@ -55,7 +55,7 @@ export const createGanttBlockSchema = (options) => { marginBottom: 24, }, }, - 'x-initializer': 'GanttActionInitializers', + 'x-initializer': 'gantt:configureActions', properties: {}, }, table: { @@ -68,7 +68,7 @@ export const createGanttBlockSchema = (options) => { }, }, - 'x-initializer': 'TableColumnInitializers', + 'x-initializer': 'table:configureColumns', 'x-component': 'TableV2', 'x-component-props': { rowKey: 'id', @@ -86,7 +86,7 @@ export const createGanttBlockSchema = (options) => { 'x-decorator': 'TableV2.Column.ActionBar', 'x-component': 'TableV2.Column', 'x-designer': 'TableV2.ActionColumnDesigner', - 'x-initializer': 'TableActionColumnInitializers', + 'x-initializer': 'table:configureItemActions', properties: { actions: { type: 'void', @@ -129,7 +129,7 @@ export const createGanttBlockSchema = (options) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-iframe-block/src/client/IframeBlockInitializer.tsx b/packages/plugins/@nocobase/plugin-iframe-block/src/client/IframeBlockInitializer.tsx index 9bc2742e5..54705ed47 100644 --- a/packages/plugins/@nocobase/plugin-iframe-block/src/client/IframeBlockInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-iframe-block/src/client/IframeBlockInitializer.tsx @@ -12,7 +12,7 @@ export const IframeBlockInitializer = () => { onClick={() => { insert({ type: 'void', - 'x-settings': 'iframeBlockSchemaSettings', + 'x-settings': 'blockSettings:iframe', 'x-decorator': 'BlockItem', 'x-decorator-props': { name: 'iframe', diff --git a/packages/plugins/@nocobase/plugin-iframe-block/src/client/index.ts b/packages/plugins/@nocobase/plugin-iframe-block/src/client/index.ts index c19b0ab02..a30d4869d 100644 --- a/packages/plugins/@nocobase/plugin-iframe-block/src/client/index.ts +++ b/packages/plugins/@nocobase/plugin-iframe-block/src/client/index.ts @@ -1,24 +1,25 @@ import { Plugin } from '@nocobase/client'; import { IframeBlockProvider } from './IframeBlockProvider'; -import { iframeBlockSchemaSettings } from './schemaSettings'; +import { iframeBlockSchemaSettings, iframeBlockSchemaSettings_deprecated } from './schemaSettings'; export class IframeBlockPlugin extends Plugin { async load() { + this.app.schemaSettingsManager.add(iframeBlockSchemaSettings_deprecated); this.app.schemaSettingsManager.add(iframeBlockSchemaSettings); this.app.use(IframeBlockProvider); - const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); + const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); blockInitializers?.add('otherBlocks.iframe', { title: '{{t("Iframe")}}', Component: 'IframeBlockInitializer', }); - const createFormBlockInitializers = this.app.schemaInitializerManager.get('CreateFormBlockInitializers'); + const createFormBlockInitializers = this.app.schemaInitializerManager.get('popup:addNew:addBlock'); createFormBlockInitializers?.add('otherBlocks.iframe', { title: '{{t("Iframe")}}', Component: 'IframeBlockInitializer', }); - const recordBlockInitializers = this.app.schemaInitializerManager.get('RecordBlockInitializers'); + const recordBlockInitializers = this.app.schemaInitializerManager.get('popup:common:addBlock'); recordBlockInitializers?.add('otherBlocks.iframe', { title: '{{t("Iframe")}}', Component: 'IframeBlockInitializer', diff --git a/packages/plugins/@nocobase/plugin-iframe-block/src/client/schemaSettings.ts b/packages/plugins/@nocobase/plugin-iframe-block/src/client/schemaSettings.ts index d4141a7c9..771a14d6e 100644 --- a/packages/plugins/@nocobase/plugin-iframe-block/src/client/schemaSettings.ts +++ b/packages/plugins/@nocobase/plugin-iframe-block/src/client/schemaSettings.ts @@ -3,7 +3,10 @@ import { uid } from '@formily/shared'; import { SchemaSettings, useAPIClient, useDesignable } from '@nocobase/client'; import { useTranslation } from 'react-i18next'; -export const iframeBlockSchemaSettings = new SchemaSettings({ +/** + * @deprecated + */ +export const iframeBlockSchemaSettings_deprecated = new SchemaSettings({ name: 'iframeBlockSchemaSettings', items: [ { @@ -143,3 +146,144 @@ export const iframeBlockSchemaSettings = new SchemaSettings({ }, ], }); + +export const iframeBlockSchemaSettings = new SchemaSettings({ + name: 'blockSettings:iframe', + items: [ + { + name: 'EditIframe', + type: 'modal', + useComponentProps() { + const field = useField(); + const fieldSchema = useFieldSchema(); + const { t } = useTranslation(); + const { dn } = useDesignable(); + const api = useAPIClient(); + const { mode, url, htmlId, height = '60vh' } = fieldSchema['x-component-props'] || {}; + + const saveHtml = async (html: string) => { + const options = { + values: { html }, + }; + if (htmlId) { + // eslint-disable-next-line no-unsafe-optional-chaining + const { data } = await api.resource('iframeHtml').update?.({ ...options, filterByTk: htmlId }); + return data?.data?.[0] || { id: htmlId }; + } else { + // eslint-disable-next-line no-unsafe-optional-chaining + const { data } = await api.resource('iframeHtml').create?.(options); + return data?.data; + } + }; + + const submitHandler = async ({ mode, url, html, height }) => { + const componentProps = fieldSchema['x-component-props'] || {}; + componentProps['mode'] = mode; + componentProps['height'] = height; + componentProps['url'] = url; + if (mode === 'html') { + const data = await saveHtml(html); + componentProps['htmlId'] = data.id; + } + fieldSchema['x-component-props'] = componentProps; + field.componentProps = { ...componentProps }; + field.data = { v: uid() }; + dn.emit('patch', { + schema: { + 'x-uid': fieldSchema['x-uid'], + 'x-component-props': componentProps, + }, + }); + }; + + return { + title: t('Edit iframe'), + asyncGetInitialValues: async () => { + const values = { + mode, + url, + height, + }; + if (htmlId) { + // eslint-disable-next-line no-unsafe-optional-chaining + const { data } = await api.resource('iframeHtml').get?.({ filterByTk: htmlId }); + values['html'] = data?.data?.html || ''; + } + return values; + }, + schema: { + type: 'object', + title: t('Edit iframe'), + properties: { + mode: { + title: '{{t("Mode")}}', + 'x-component': 'Radio.Group', + 'x-decorator': 'FormItem', + required: true, + default: 'url', + enum: [ + { value: 'url', label: t('URL') }, + { value: 'html', label: t('html') }, + ], + }, + url: { + title: t('URL'), + type: 'string', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + required: true, + 'x-reactions': { + dependencies: ['mode'], + fulfill: { + state: { + hidden: '{{$deps[0] === "html"}}', + }, + }, + }, + }, + html: { + title: t('html'), + type: 'string', + 'x-decorator': 'FormItem', + 'x-component': 'Input.TextArea', + required: true, + 'x-reactions': { + dependencies: ['mode'], + fulfill: { + state: { + hidden: '{{$deps[0] === "url"}}', + }, + }, + }, + }, + height: { + title: t('Height'), + type: 'string', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + required: true, + }, + }, + } as ISchema, + onSubmit: submitHandler, + }; + }, + }, + { + name: 'divider', + type: 'divider', + }, + { + name: 'delete', + type: 'remove', + useComponentProps() { + return { + removeParentsIfNoChildren: true, + breakRemoveOn: { + 'x-component': 'Grid', + }, + }; + }, + }, + ], +}); diff --git a/packages/plugins/@nocobase/plugin-import/src/client/index.ts b/packages/plugins/@nocobase/plugin-import/src/client/index.ts index eccd07d6e..b1922c29a 100644 --- a/packages/plugins/@nocobase/plugin-import/src/client/index.ts +++ b/packages/plugins/@nocobase/plugin-import/src/client/index.ts @@ -35,9 +35,9 @@ export class ImportPlugin extends Plugin { }, }; - const tableActionInitializers = this.app.schemaInitializerManager.get('TableActionInitializers'); + const tableActionInitializers = this.app.schemaInitializerManager.get('table:configureActions'); tableActionInitializers?.add('enableActions.import', initializerData); - this.app.schemaInitializerManager.addItem('GanttActionInitializers', 'enableActions.import', initializerData); + this.app.schemaInitializerManager.addItem('gantt:configureActions', 'enableActions.import', initializerData); this.app.schemaSettingsManager.add(importActionSchemaSettings); } } diff --git a/packages/plugins/@nocobase/plugin-kanban/src/client/Kanban.Card.Designer.tsx b/packages/plugins/@nocobase/plugin-kanban/src/client/Kanban.Card.Designer.tsx index 0ff5e8b56..1a51ce194 100644 --- a/packages/plugins/@nocobase/plugin-kanban/src/client/Kanban.Card.Designer.tsx +++ b/packages/plugins/@nocobase/plugin-kanban/src/client/Kanban.Card.Designer.tsx @@ -2,7 +2,7 @@ import { MenuOutlined } from '@ant-design/icons'; import { ISchema, useFieldSchema } from '@formily/react'; import { uid } from '@formily/shared'; import { - SchemaInitializer, + CompatibleSchemaInitializer, SchemaInitializerOpenModeSchemaItems, createDesignable, useAPIClient, @@ -44,8 +44,7 @@ const gridRowColWrap = (schema: ISchema) => { export const KanbanCardDesigner = () => { const { designable } = useDesignable(); - const { getAriaLabel } = useGetAriaLabelOfDesigner(); - const { render } = useSchemaInitializerRender('KanbanCardInitializers'); + const { render } = useSchemaInitializerRender('kanban:configureItemFields'); if (!designable) { return null; } @@ -60,7 +59,10 @@ export const KanbanCardDesigner = () => { ); }; -export const kanbanCardInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const kanbanCardInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'KanbanCardInitializers', wrap: gridRowColWrap, useInsert() { @@ -133,3 +135,80 @@ export const kanbanCardInitializers: SchemaInitializer = new SchemaInitializer({ }, ], }); + +export const kanbanCardInitializers = new CompatibleSchemaInitializer( + { + name: 'kanban:configureItemFields', + wrap: gridRowColWrap, + useInsert() { + const fieldSchema = useFieldSchema(); + const { t } = useTranslation(); + const api = useAPIClient(); + const { refresh } = useDesignable(); + + return (schema) => { + const gridSchema = fieldSchema.reduceProperties((buf, schema) => { + if (schema['x-component'] === 'Grid') { + return schema; + } + return buf; + }, null); + + if (!gridSchema) { + return; + } + + const dn = createDesignable({ + t, + api, + refresh, + current: gridSchema, + }); + dn.loadAPIClientEvents(); + dn.insertBeforeEnd(schema); + }; + }, + Component: (props: any) => { + const { getAriaLabel } = useGetAriaLabelOfDesigner(); + return ( + + ); + }, + items: [ + { + type: 'itemGroup', + title: '{{t("Display fields")}}', + name: 'displayFields', + useChildren: useFormItemInitializerFields, + }, + { + type: 'itemGroup', + divider: true, + title: '{{t("Display association fields")}}', + name: 'displayAssociationFields', + hideIfNoChildren: true, + useChildren() { + const associationFields = useAssociatedFormItemInitializerFields({ + readPretty: true, + block: 'Kanban', + }); + return associationFields; + }, + }, + { + name: 'divider', + type: 'divider', + }, + { + name: 'openMode', + Component: SchemaInitializerOpenModeSchemaItems, + }, + ], + }, + kanbanCardInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-kanban/src/client/KanbanActionInitializers.tsx b/packages/plugins/@nocobase/plugin-kanban/src/client/KanbanActionInitializers.tsx index 9dead418c..2864b7aca 100644 --- a/packages/plugins/@nocobase/plugin-kanban/src/client/KanbanActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-kanban/src/client/KanbanActionInitializers.tsx @@ -1,6 +1,9 @@ -import { SchemaInitializer, useCollection_deprecated } from '@nocobase/client'; +import { CompatibleSchemaInitializer, useCollection_deprecated } from '@nocobase/client'; -export const kanbanActionInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const kanbanActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'KanbanActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -41,3 +44,48 @@ export const kanbanActionInitializers: SchemaInitializer = new SchemaInitializer }, ], }); + +export const kanbanActionInitializers = new CompatibleSchemaInitializer( + { + name: 'kanban:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + title: "{{t('Enable actions')}}", + name: 'enableActions', + children: [ + { + name: 'filter', + title: "{{t('Filter')}}", + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'left', + }, + }, + { + name: 'addNew', + title: "{{t('Add new')}}", + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return (collection as any).template !== 'view' || collection?.writableView; + }, + }, + ], + }, + ], + }, + kanbanActionInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaInitailizer.test.ts b/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaInitailizer.test.ts index 4d368857f..aa79b8fd9 100644 --- a/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaInitailizer.test.ts +++ b/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaInitailizer.test.ts @@ -7,7 +7,7 @@ test.describe('blockInitializers should add kanban block', () => { await mockCollections(generalWithSingleSelect); await mockRecord('general'); await mockPage().goto(); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await expect(page.getByRole('menuitem', { name: 'form Kanban right' })).toBeVisible(); await page.getByRole('menuitem', { name: 'form Kanban right' }).click(); await page.getByRole('menuitem', { name: 'General' }).click(); @@ -62,7 +62,7 @@ test.describe('configure fields', () => { expect(appends).toContain('manyToOne'); await expect(page.getByLabel('block-item-CollectionField-general-kanban-general.manyToOne')).toBeVisible(); //修改标题字段 - await page.getByLabel('schema-initializer-ActionBar-KanbanActionInitializers-general').click(); + await page.getByLabel('schema-initializer-ActionBar-kanban:configureActions-general').click(); await page.getByLabel('block-item-CollectionField-general-kanban-general.manyToOne').hover(); await page.getByTestId('card-1').getByLabel('designer-schema-settings-').hover(); await page.getByText('Title field').click(); @@ -78,8 +78,8 @@ test.describe('configure actions', () => { const nocoPage = await mockPage(oneEmptyKanbanBlock).waitForInit(); await nocoPage.goto(); await expect(page.getByLabel('block-item-CardItem-general-kanban')).toBeVisible(); - await expect(page.getByLabel('schema-initializer-ActionBar-KanbanActionInitializers-general')).toBeVisible(); - await page.getByLabel('schema-initializer-ActionBar-KanbanActionInitializers-general').click(); + await expect(page.getByLabel('schema-initializer-ActionBar-kanban:configureActions-general')).toBeVisible(); + await page.getByLabel('schema-initializer-ActionBar-kanban:configureActions-general').click(); await page.getByRole('menuitem', { name: 'Filter' }).getByRole('switch').click(); //按钮正常显示 await expect(page.getByLabel('action-Filter.Action-Filter-filter-general-kanban')).toBeVisible(); @@ -87,20 +87,20 @@ test.describe('configure actions', () => { test('add new action in kanban', async ({ page, mockPage }) => { const nocoPage = await mockPage(oneEmptyKanbanBlock).waitForInit(); await nocoPage.goto(); - await page.getByLabel('schema-initializer-ActionBar-KanbanActionInitializers-general').click(); + await page.getByLabel('schema-initializer-ActionBar-kanban:configureActions-general').click(); await page.getByRole('menuitem', { name: 'Add new' }).getByRole('switch').click(); //按钮正常显示 await expect(page.getByLabel('action-Action-Add ')).toBeVisible(); //添加数据 await page.getByLabel('action-Action-Add new-create-general-kanban').click(); - await page.getByLabel('schema-initializer-Grid-CreateFormBlockInitializers-general').click(); + await page.getByLabel('schema-initializer-Grid-popup:addNew:addBlock-general').click(); await page.getByRole('menuitem', { name: 'form Form' }).click(); await page.mouse.move(300, 0); - await page.getByLabel('schema-initializer-Grid-FormItemInitializers-general').click(); + await page.getByLabel('schema-initializer-Grid-form:configureFields-general').click(); await page.getByRole('menuitem', { name: 'Single Select' }).click(); await page.getByLabel('block-item-CollectionField-').locator('.ant-select').click(); await page.getByRole('option', { name: 'option1' }).click(); - await page.getByLabel('schema-initializer-ActionBar-CreateFormActionInitializers-general').hover(); + await page.getByLabel('schema-initializer-ActionBar-createForm:configureActions-general').hover(); await page.getByRole('menuitem', { name: 'Submit' }).click(); await page.getByLabel('action-Action-Submit-submit-general-form').click(); await page.getByLabel('block-item-Kanban.Card-general-kanban').hover(); diff --git a/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/utils.ts b/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/utils.ts index 853143df4..22dcb9ef3 100644 --- a/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/utils.ts +++ b/packages/plugins/@nocobase/plugin-kanban/src/client/__e2e__/utils.ts @@ -96,7 +96,7 @@ export const oneEmptyKanbanBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'BlockInitializers', + 'x-initializer': 'page:addBlock', properties: { '4io56n1mje4': { _isJSONSchemaObject: true, @@ -133,7 +133,7 @@ export const oneEmptyKanbanBlock: PageConfig = { _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'KanbanActionInitializers', + 'x-initializer': 'kanban:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -227,7 +227,7 @@ export const oneEmptyKanbanBlock: PageConfig = { version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', 'x-uid': '2hsi7zy93g6', 'x-async': false, 'x-index': 1, diff --git a/packages/plugins/@nocobase/plugin-kanban/src/client/index.tsx b/packages/plugins/@nocobase/plugin-kanban/src/client/index.tsx index c4191a629..1538f1aa3 100644 --- a/packages/plugins/@nocobase/plugin-kanban/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-kanban/src/client/index.tsx @@ -1,14 +1,14 @@ +import { Action, CurrentAppInfoProvider, Plugin, SchemaComponentOptions } from '@nocobase/client'; import React from 'react'; -import { Plugin, Action, CurrentAppInfoProvider, SchemaComponentOptions } from '@nocobase/client'; import { Kanban } from './Kanban'; import { KanbanCard } from './Kanban.Card'; -import { KanbanCardDesigner, kanbanCardInitializers } from './Kanban.Card.Designer'; +import { KanbanCardDesigner, kanbanCardInitializers, kanbanCardInitializers_deprecated } from './Kanban.Card.Designer'; import { KanbanCardViewer } from './Kanban.CardViewer'; import { KanbanDesigner } from './Kanban.Designer'; -import { kanbanActionInitializers } from './KanbanActionInitializers'; -import { KanbanBlockProvider, useKanbanBlockProps } from './KanbanBlockProvider'; -import { KanbanBlockInitializer } from './KanbanBlockInitializer'; import { kanbanSettings } from './Kanban.Settings'; +import { kanbanActionInitializers, kanbanActionInitializers_deprecated } from './KanbanActionInitializers'; +import { KanbanBlockInitializer } from './KanbanBlockInitializer'; +import { KanbanBlockProvider, useKanbanBlockProps } from './KanbanBlockProvider'; Kanban.Card = KanbanCard; Kanban.CardAdder = Action; @@ -35,11 +35,13 @@ KanbanPluginProvider.displayName = 'KanbanPluginProvider'; class KanbanPlugin extends Plugin { async load() { this.app.use(KanbanPluginProvider); + this.app.schemaInitializerManager.add(kanbanCardInitializers_deprecated); this.app.schemaInitializerManager.add(kanbanCardInitializers); + this.app.schemaInitializerManager.add(kanbanActionInitializers_deprecated); this.app.schemaInitializerManager.add(kanbanActionInitializers); this.app.schemaSettingsManager.add(kanbanSettings); - const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); + const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); blockInitializers?.add('dataBlocks.kanban', { title: '{{t("Kanban")}}', Component: 'KanbanBlockInitializer', diff --git a/packages/plugins/@nocobase/plugin-kanban/src/client/utils.ts b/packages/plugins/@nocobase/plugin-kanban/src/client/utils.ts index 9962a2484..3304820da 100644 --- a/packages/plugins/@nocobase/plugin-kanban/src/client/utils.ts +++ b/packages/plugins/@nocobase/plugin-kanban/src/client/utils.ts @@ -23,7 +23,7 @@ export const createKanbanBlockSchema = (options) => { properties: { actions: { type: 'void', - 'x-initializer': 'KanbanActionInitializers', + 'x-initializer': 'kanban:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -91,7 +91,7 @@ export const createKanbanBlockSchema = (options) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-map/src/client/block/MapActionInitializers.tsx b/packages/plugins/@nocobase/plugin-map/src/client/block/MapActionInitializers.tsx index 18a9433b6..16e645e56 100644 --- a/packages/plugins/@nocobase/plugin-map/src/client/block/MapActionInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-map/src/client/block/MapActionInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer, useCollection_deprecated } from '@nocobase/client'; +import { CompatibleSchemaInitializer, useCollection_deprecated } from '@nocobase/client'; -// 表格操作配置 -export const mapActionInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + * 表格操作配置 + */ +export const mapActionInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'MapActionInitializers', title: "{{t('Configure actions')}}", icon: 'SettingOutlined', @@ -68,3 +71,74 @@ export const mapActionInitializers: SchemaInitializer = new SchemaInitializer({ }, ], }); + +export const mapActionInitializers = new CompatibleSchemaInitializer( + { + name: 'map:configureActions', + title: "{{t('Configure actions')}}", + icon: 'SettingOutlined', + style: { + marginLeft: 8, + }, + items: [ + { + type: 'itemGroup', + title: "{{t('Enable actions')}}", + name: 'enableActions', + children: [ + { + name: 'filter', + title: "{{t('Filter')}}", + Component: 'FilterActionInitializer', + schema: { + 'x-align': 'left', + }, + }, + { + name: 'addNew', + title: "{{t('Add new')}}", + Component: 'CreateActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + useVisible() { + const collection = useCollection_deprecated(); + return collection.template !== 'sql'; + }, + }, + { + name: 'refresh', + title: "{{t('Refresh')}}", + Component: 'RefreshActionInitializer', + schema: { + 'x-align': 'right', + }, + }, + ], + }, + { + name: 'divider', + type: 'divider', + useVisible() { + const collection = useCollection_deprecated(); + return collection.template !== 'sql'; + }, + }, + { + type: 'subMenu', + title: '{{t("Customize")}}', + name: 'customize', + children: [], + useVisible() { + const collection = useCollection_deprecated(); + return collection.template !== 'sql'; + }, + }, + ], + }, + mapActionInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-map/src/client/block/utils.ts b/packages/plugins/@nocobase/plugin-map/src/client/block/utils.ts index 58e4f67d4..e6d92cd1c 100644 --- a/packages/plugins/@nocobase/plugin-map/src/client/block/utils.ts +++ b/packages/plugins/@nocobase/plugin-map/src/client/block/utils.ts @@ -25,7 +25,7 @@ export const createMapBlockSchema = (options) => { properties: { actions: { type: 'void', - 'x-initializer': 'MapActionInitializers', + 'x-initializer': 'map:configureActions', 'x-component': 'ActionBar', 'x-component-props': { style: { @@ -65,7 +65,7 @@ export const createMapBlockSchema = (options) => { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'RecordBlockInitializers', + 'x-initializer': 'popup:common:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-map/src/client/index.tsx b/packages/plugins/@nocobase/plugin-map/src/client/index.tsx index d400d901d..66c64b054 100644 --- a/packages/plugins/@nocobase/plugin-map/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-map/src/client/index.tsx @@ -1,12 +1,11 @@ import { CurrentAppInfoProvider, Plugin, SchemaComponentOptions } from '@nocobase/client'; import React from 'react'; import { MapBlockOptions } from './block'; -import { mapActionInitializers } from './block/MapActionInitializers'; +import { mapActionInitializers, mapActionInitializers_deprecated } from './block/MapActionInitializers'; +import { mapBlockSettings } from './block/MapBlock.Settings'; import { Configuration, Map } from './components'; import { fields } from './fields'; -import { generateNTemplate } from './locale'; -import { NAMESPACE } from './locale'; -import { mapBlockSettings } from './block/MapBlock.Settings'; +import { NAMESPACE, generateNTemplate } from './locale'; const MapProvider = React.memo((props) => { return ( @@ -29,10 +28,11 @@ export class MapPlugin extends Plugin { order: 51, }, }); + this.app.schemaInitializerManager.add(mapActionInitializers_deprecated); this.app.schemaInitializerManager.add(mapActionInitializers); this.schemaSettingsManager.add(mapBlockSettings); - const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); + const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); blockInitializers?.add('dataBlocks.map', { title: generateNTemplate('Map'), Component: 'MapBlockInitializer', diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/common/page.ts b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/common/page.ts index a2335e96c..e2de8d88a 100644 --- a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/common/page.ts +++ b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/common/page.ts @@ -7,7 +7,7 @@ export const PageSchema = { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'MBlockInitializers', + 'x-initializer': 'mobilePage:addBlock', 'x-component-props': { showDivider: false, }, diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.Designer.tsx b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.Designer.tsx index 6583ca489..5ab4834fe 100644 --- a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.Designer.tsx +++ b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.Designer.tsx @@ -77,7 +77,7 @@ export const PageDesigner = (props) => { 'x-component-props': {}, 'x-initializer': 'TabPaneInitializers', 'x-initializer-props': { - gridInitializer: 'MBlockInitializers', + gridInitializer: 'mobilePage:addBlock', }, properties: { tab1: { diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/initializers/BlockInitializers.ts b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/initializers/BlockInitializers.ts index 47db07d90..36f8b3169 100644 --- a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/initializers/BlockInitializers.ts +++ b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/initializers/BlockInitializers.ts @@ -1,7 +1,10 @@ -import { SchemaInitializer, gridRowColWrap } from '@nocobase/client'; +import { CompatibleSchemaInitializer, gridRowColWrap } from '@nocobase/client'; import { generateNTemplate } from '../../../locale'; -export const mBlockInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const mBlockInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'MBlockInitializers', title: '{{t("Add block")}}', icon: 'PlusOutlined', @@ -69,3 +72,75 @@ export const mBlockInitializers: SchemaInitializer = new SchemaInitializer({ }, ], }); + +export const mBlockInitializers = new CompatibleSchemaInitializer( + { + name: 'mobilePage:addBlock', + title: '{{t("Add block")}}', + icon: 'PlusOutlined', + wrap: gridRowColWrap, + items: [ + { + name: 'dataBlocks', + type: 'itemGroup', + title: '{{t("Data blocks")}}', + children: [ + { + name: 'gridCard', + type: 'item', + title: '{{t("Grid Card")}}', + Component: 'GridCardBlockInitializer', + }, + { + name: 'table', + title: '{{t("Table")}}', + Component: 'TableBlockInitializer', + }, + { + name: 'form', + title: '{{t("Form")}}', + Component: 'FormBlockInitializer', + }, + { + name: 'details', + title: '{{t("Details")}}', + Component: 'DetailsBlockInitializer', + }, + { + name: 'calendar', + title: '{{t("Calendar")}}', + Component: 'CalendarBlockInitializer', + }, + { + name: 'mapBlock', + title: generateNTemplate('Map'), + Component: 'MapBlockInitializer', + }, + ], + }, + { + name: 'otherBlocks', + type: 'itemGroup', + title: '{{t("Other blocks")}}', + children: [ + { + name: 'menu', + title: generateNTemplate('Menu'), + Component: 'MMenuBlockInitializer', + }, + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + { + name: 'settings', + title: generateNTemplate('Settings'), + Component: 'MSettingsBlockInitializer', + }, + ], + }, + ], + }, + mBlockInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/client/index.tsx b/packages/plugins/@nocobase/plugin-mobile-client/src/client/index.tsx index b900b50e1..0b54b8d78 100644 --- a/packages/plugins/@nocobase/plugin-mobile-client/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-mobile-client/src/client/index.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { Navigate, Outlet } from 'react-router-dom'; import { MobileClientProvider } from './MobileClientProvider'; import MApplication from './router/Application'; -import { mBlockInitializers } from './core/schema'; +import { mBlockInitializers, mBlockInitializers_deprecated } from './core/schema'; import { AppConfiguration, InterfaceConfiguration } from './configuration'; import { NAMESPACE } from './locale'; @@ -14,6 +14,7 @@ export class MobileClientPlugin extends Plugin { this.addRoutes(); this.addSettings(); this.app.use(MobileClientProvider); + this.app.schemaInitializerManager.add(mBlockInitializers_deprecated); this.app.schemaInitializerManager.add(mBlockInitializers); } diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/server/plugin.ts b/packages/plugins/@nocobase/plugin-mobile-client/src/server/plugin.ts index 02aa05d55..a895263ae 100644 --- a/packages/plugins/@nocobase/plugin-mobile-client/src/server/plugin.ts +++ b/packages/plugins/@nocobase/plugin-mobile-client/src/server/plugin.ts @@ -32,7 +32,7 @@ export class MobileClientPlugin extends Plugin { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'MBlockInitializers', + 'x-initializer': 'mobilePage:addBlock', 'x-component-props': { showDivider: false, }, diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/server/routes.ts b/packages/plugins/@nocobase/plugin-mobile-client/src/server/routes.ts index 3470f1170..dafca0988 100644 --- a/packages/plugins/@nocobase/plugin-mobile-client/src/server/routes.ts +++ b/packages/plugins/@nocobase/plugin-mobile-client/src/server/routes.ts @@ -18,7 +18,7 @@ export const routes = [ grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'MBlockInitializers', + 'x-initializer': 'mobilePage:addBlock', 'x-component-props': { showDivider: false, }, diff --git a/packages/plugins/@nocobase/plugin-sample-hello/src/client/index.tsx b/packages/plugins/@nocobase/plugin-sample-hello/src/client/index.tsx index 7ec484b48..4e86e06b5 100644 --- a/packages/plugins/@nocobase/plugin-sample-hello/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-sample-hello/src/client/index.tsx @@ -1,5 +1,5 @@ import { TableOutlined } from '@ant-design/icons'; -import { SchemaInitializerItem, Plugin, useSchemaInitializer, SchemaSettings } from '@nocobase/client'; +import { Plugin, SchemaInitializerItem, SchemaSettings, useSchemaInitializer } from '@nocobase/client'; import { Card } from 'antd'; import React from 'react'; import { useTranslation } from 'react-i18next'; @@ -50,7 +50,7 @@ const helloSettings = new SchemaSettings({ class HelloPlugin extends Plugin { async load() { - this.app.schemaInitializerManager.addItem('BlockInitializers', 'otherBlocks.hello', { + this.app.schemaInitializerManager.addItem('page:addBlock', 'otherBlocks.hello', { title: '{{t("Hello block")}}', Component: HelloBlockInitializer, }); diff --git a/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializers.tsx b/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializers.tsx index 86a43a0a7..5991c94e9 100644 --- a/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializers.tsx +++ b/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializers.tsx @@ -1,7 +1,10 @@ -import { SchemaInitializer, gridRowColWrap } from '@nocobase/client'; +import { CompatibleSchemaInitializer, gridRowColWrap } from '@nocobase/client'; import { NAMESPACE } from '../../locale'; -export const snapshotBlockInitializers: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const snapshotBlockInitializers_deprecated = new CompatibleSchemaInitializer({ name: 'SnapshotBlockInitializers', wrap: gridRowColWrap, title: `{{t("Add block", { ns: "${NAMESPACE}" })}}`, @@ -16,7 +19,7 @@ export const snapshotBlockInitializers: SchemaInitializer = new SchemaInitialize name: 'details', title: '{{t("Details")}}', Component: 'SnapshotBlockInitializersDetailItem', - actionInitializers: 'CalendarFormActionInitializers', + actionInitializers: 'details:configureActions', }, ], }, @@ -34,3 +37,40 @@ export const snapshotBlockInitializers: SchemaInitializer = new SchemaInitialize }, ], }); + +export const snapshotBlockInitializers = new CompatibleSchemaInitializer( + { + name: 'popup:snapshot:addBlock', + wrap: gridRowColWrap, + title: `{{t("Add block", { ns: "${NAMESPACE}" })}}`, + icon: 'PlusOutlined', + items: [ + { + type: 'itemGroup', + title: '{{t("Current record blocks")}}', + name: 'currentRecordBlocks', + children: [ + { + name: 'details', + title: '{{t("Details")}}', + Component: 'SnapshotBlockInitializersDetailItem', + actionInitializers: 'details:configureActions', + }, + ], + }, + { + type: 'itemGroup', + title: '{{t("Other blocks")}}', + name: 'otherBlocks', + children: [ + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + ], + }, + ], + }, + snapshotBlockInitializers_deprecated, +); diff --git a/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializersDetailItem.tsx b/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializersDetailItem.tsx index 244a2ac38..f7444dd30 100644 --- a/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializersDetailItem.tsx +++ b/packages/plugins/@nocobase/plugin-snapshot-field/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializersDetailItem.tsx @@ -15,8 +15,8 @@ import { uid } from '@formily/shared'; export const createSnapshotBlockSchema = (options) => { const { - formItemInitializers = 'ReadPrettyFormItemInitializers', - actionInitializers = 'ReadPrettyFormActionInitializers', + formItemInitializers = 'details:configureFields', + actionInitializers = 'details:configureActions', collection, association, resource, @@ -78,7 +78,7 @@ export const SnapshotBlockInitializersDetailItem = () => { const association = useBlockAssociationContext(); const { block } = useBlockRequestContext(); const actionInitializers = - block !== 'TableField' ? itemConfig.actionInitializers || 'ReadPrettyFormActionInitializers' : null; + block !== 'TableField' ? itemConfig.actionInitializers || 'details:configureActions' : null; return ( { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'table Table' }).hover(); await page.getByRole('menuitem', { name: `${triggerNodeCollectionDisplayName}` }).click(); @@ -71,16 +71,16 @@ test.describe('Configuration page to configure the Trigger node', () => { await page.getByRole('menuitem', { name: 'Add new' }).getByRole('switch').click(); await expect(page.getByRole('menuitem', { name: 'Add new' }).getByRole('switch')).toBeEnabled(); await page.getByLabel(`action-Action-Add new-create-${triggerNodeCollectionName}-table`).click(); - await page.getByLabel(`schema-initializer-Grid-CreateFormBlockInitializers-${triggerNodeCollectionName}`).hover(); + await page.getByLabel(`schema-initializer-Grid-popup:addNew:addBlock-${triggerNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'form Form' }).click(); // 移开鼠标,关闭菜单 await page.mouse.move(300, 0); await page - .getByLabel(`schema-initializer-ActionBar-CreateFormActionInitializers-${triggerNodeCollectionName}`) + .getByLabel(`schema-initializer-ActionBar-createForm:configureActions-${triggerNodeCollectionName}`) .hover(); await page.getByRole('menuitem', { name: 'Submit' }).click(); // 绑定工作流 - await page.getByLabel(`schema-initializer-Grid-FormItemInitializers-${triggerNodeCollectionName}`).hover(); + await page.getByLabel(`schema-initializer-Grid-form:configureFields-${triggerNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: `${triggerNodeFieldDisplayName}` }).click(); await page.mouse.move(300, 0); await page.getByLabel(`action-Action-Submit-submit-${triggerNodeCollectionName}-form`).hover(); @@ -150,7 +150,7 @@ test.describe('Configuration page to configure the Trigger node', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'table Table' }).hover(); await page.getByRole('menuitem', { name: `${triggerNodeCollectionDisplayName}` }).click(); @@ -164,7 +164,7 @@ test.describe('Configuration page to configure the Trigger node', () => { await expect(page.getByRole('menuitem', { name: 'Add new' }).getByRole('switch')).toBeEnabled(); await page.getByLabel(`action-Action-Add new-create-${triggerNodeCollectionName}-table`).click(); - await page.getByLabel(`schema-initializer-Grid-CreateFormBlockInitializers-${triggerNodeCollectionName}`).hover(); + await page.getByLabel(`schema-initializer-Grid-popup:addNew:addBlock-${triggerNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'form Form' }).click(); // 移开鼠标,关闭菜单 @@ -172,11 +172,11 @@ test.describe('Configuration page to configure the Trigger node', () => { // 绑定工作流 await page - .getByLabel(`schema-initializer-ActionBar-CreateFormActionInitializers-${triggerNodeCollectionName}`) + .getByLabel(`schema-initializer-ActionBar-createForm:configureActions-${triggerNodeCollectionName}`) .hover(); await page.getByRole('menuitem', { name: 'Customize' }).hover(); await page.getByRole('menuitem', { name: 'Submit to workflow' }).click(); - await page.getByLabel(`schema-initializer-Grid-FormItemInitializers-${triggerNodeCollectionName}`).hover(); + await page.getByLabel(`schema-initializer-Grid-form:configureFields-${triggerNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: `${triggerNodeFieldDisplayName}` }).click(); await page.mouse.move(300, 0); await page.getByRole('button', { name: 'Submit to workflow' }).hover(); diff --git a/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/client/index.ts b/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/client/index.ts index 8b02ac516..53af3ba02 100644 --- a/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/client/index.ts +++ b/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/client/index.ts @@ -1,7 +1,7 @@ import { Plugin, SchemaInitializerItemType } from '@nocobase/client'; import WorkflowPlugin, { - useTriggerWorkflowsActionProps, useRecordTriggerWorkflowsActionProps, + useTriggerWorkflowsActionProps, } from '@nocobase/plugin-workflow/client'; import ActionTrigger from './ActionTrigger'; diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/createRecordForm.test.ts b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/createRecordForm.test.ts index e2e5d5775..b1988c123 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/createRecordForm.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/createRecordForm.test.ts @@ -1,31 +1,18 @@ import { faker } from '@faker-js/faker'; import { CollectionTriggerNode, - CreateWorkFlow, - EditWorkFlow, - WorkflowListRecords, + ManualNode, apiCreateWorkflow, apiDeleteWorkflow, + apiGetRecord, apiGetWorkflow, - apiUpdateRecord, apiGetWorkflowNodeExecutions, apiUpdateWorkflowTrigger, appendJsonCollectionName, generalWithNoRelationalFields, - QueryRecordNode, - ManualNode, - apiGetRecord, - apiCreateWorkflowNode, - apiGetWorkflowNode, - ClculationNode, - CreateRecordNode, - AggregateNode, - apiGetList, - apiFilterList, } from '@nocobase/plugin-workflow-test/e2e'; import { expect, test } from '@nocobase/test/e2e'; import { dayjs } from '@nocobase/utils'; -import { Button } from 'antd'; test.describe('block configuration', () => {}); @@ -97,7 +84,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -105,7 +92,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -129,7 +116,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -232,7 +219,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -240,7 +227,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -264,7 +251,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -367,7 +354,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -375,7 +362,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -399,7 +386,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -502,7 +489,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -510,7 +497,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -534,7 +521,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -637,7 +624,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -645,7 +632,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -669,7 +656,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -772,7 +759,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -780,7 +767,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -804,7 +791,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -907,7 +894,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -915,7 +902,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -939,7 +926,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1043,7 +1030,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1051,7 +1038,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1075,7 +1062,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1178,7 +1165,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1186,7 +1173,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1210,7 +1197,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1313,7 +1300,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1321,7 +1308,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1345,7 +1332,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1456,7 +1443,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1464,7 +1451,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1488,7 +1475,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1590,7 +1577,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1598,7 +1585,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1622,7 +1609,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1731,7 +1718,7 @@ test.describe('field data entry', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1739,7 +1726,7 @@ test.describe('field data entry', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1763,7 +1750,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1881,7 +1868,7 @@ test.describe('action button', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1889,7 +1876,7 @@ test.describe('action button', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1913,7 +1900,7 @@ test.describe('action button', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -2016,7 +2003,7 @@ test.describe('action button', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -2024,12 +2011,14 @@ test.describe('action button', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); // await page.mouse.click(300, 0); - await page.getByLabel(`schema-initializer-ActionBar-AddActionButton-${manualNodeCollectionName}`).hover(); + await page + .getByLabel(`schema-initializer-ActionBar-workflowManual:form:configureActions-${manualNodeCollectionName}`) + .hover(); await page.getByRole('menuitem', { name: 'Terminate the process' }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); await page.mouse.click(300, 0); @@ -2052,7 +2041,7 @@ test.describe('action button', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -2155,7 +2144,7 @@ test.describe('action button', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -2163,12 +2152,14 @@ test.describe('action button', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); // await page.mouse.click(300, 0); - await page.getByLabel(`schema-initializer-ActionBar-AddActionButton-${manualNodeCollectionName}`).hover(); + await page + .getByLabel(`schema-initializer-ActionBar-workflowManual:form:configureActions-${manualNodeCollectionName}`) + .hover(); await page.getByRole('menuitem', { name: 'Save temporarily' }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); await page.mouse.click(300, 0); @@ -2191,7 +2182,7 @@ test.describe('action button', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/customFormBlocks.test.ts b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/customFormBlocks.test.ts index a969e7ee3..cb4b1a46b 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/customFormBlocks.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/customFormBlocks.test.ts @@ -1,27 +1,14 @@ import { faker } from '@faker-js/faker'; import { CollectionTriggerNode, - CreateWorkFlow, - EditWorkFlow, - WorkflowListRecords, + ManualNode, apiCreateWorkflow, apiDeleteWorkflow, apiGetWorkflow, - apiUpdateRecord, apiGetWorkflowNodeExecutions, apiUpdateWorkflowTrigger, appendJsonCollectionName, generalWithNoRelationalFields, - QueryRecordNode, - ManualNode, - apiGetRecord, - apiCreateWorkflowNode, - apiGetWorkflowNode, - ClculationNode, - CreateRecordNode, - AggregateNode, - apiGetList, - apiFilterList, } from '@nocobase/plugin-workflow-test/e2e'; import { expect, test } from '@nocobase/test/e2e'; import { dayjs } from '@nocobase/utils'; @@ -95,17 +82,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Single line text' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -134,7 +127,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -232,17 +225,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Long text' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -271,7 +270,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -369,17 +368,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Phone' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -408,7 +413,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -506,17 +511,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Email' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -545,7 +556,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -643,17 +654,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Integer' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -682,7 +699,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -780,17 +797,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Number' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -819,7 +842,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -917,17 +940,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Percent' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -956,7 +985,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1054,17 +1083,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Checkbox', exact: true }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -1093,7 +1128,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1191,17 +1226,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Single select', exact: true }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -1236,7 +1277,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1335,17 +1376,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Multiple select', exact: true }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -1380,7 +1427,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1486,17 +1533,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Radio group', exact: true }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -1531,7 +1584,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1629,17 +1682,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Checkbox group', exact: true }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -1674,7 +1733,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1778,17 +1837,23 @@ test.describe('field data entry', () => { await manualNode.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Datetime', exact: true }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -1817,7 +1882,7 @@ test.describe('field data entry', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/datablocks.test.ts b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/datablocks.test.ts index 96c1b4608..447c4a3d8 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/datablocks.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/datablocks.test.ts @@ -1,27 +1,21 @@ import { faker } from '@faker-js/faker'; import { + AggregateNode, + ClculationNode, CollectionTriggerNode, - CreateWorkFlow, - EditWorkFlow, - WorkflowListRecords, + CreateRecordNode, + ManualNode, + QueryRecordNode, apiCreateWorkflow, + apiCreateWorkflowNode, apiDeleteWorkflow, + apiFilterList, + apiGetList, apiGetWorkflow, - apiUpdateRecord, - apiGetWorkflowNodeExecutions, + apiGetWorkflowNode, apiUpdateWorkflowTrigger, appendJsonCollectionName, generalWithNoRelationalFields, - QueryRecordNode, - ManualNode, - apiGetRecord, - apiCreateWorkflowNode, - apiGetWorkflowNode, - ClculationNode, - CreateRecordNode, - AggregateNode, - apiGetList, - apiFilterList, } from '@nocobase/plugin-workflow-test/e2e'; import { expect, test } from '@nocobase/test/e2e'; import { dayjs } from '@nocobase/utils'; @@ -111,7 +105,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -223,7 +217,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -346,7 +340,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -474,7 +468,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -634,7 +628,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -733,17 +727,23 @@ test.describe('field data', () => { await preManualNodePom.customFormMenu.click(); await page.mouse.move(300, 0, { steps: 100 }); // 获取自定义表单的随机值 - const configureFieldsButton = page.locator('button[aria-label^="schema-initializer-Grid-AddCustomFormField-"]'); + const configureFieldsButton = page.locator( + 'button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-"]', + ); const ariaLabel = await configureFieldsButton.getAttribute('aria-label'); const randomValue = ariaLabel.split('-').pop(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByLabel(`designer-schema-settings-CardItem-SimpleDesigner-${randomValue}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); const blockTitle = 'Form' + dayjs().format('YYYYMMDDHHmmss.SSS').toString(); await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); - await page.locator(`button[aria-label^="schema-initializer-Grid-AddCustomFormField-${randomValue}"]`).hover(); + await page + .locator(`button[aria-label^="schema-initializer-Grid-workflowManual:customForm:configureFields-${randomValue}"]`) + .hover(); await page.getByRole('menuitem', { name: 'Single line text' }).click(); await page .getByLabel(`block-item-Input-${randomValue}-Field display name`) @@ -793,7 +793,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -902,7 +902,7 @@ test.describe('field data', () => { await page.getByRole('menuitem', { name: preManualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${preManualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${preManualNodeCollectionName}"]`) .hover(); await page .getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${preManualNodeCollectionName}`) @@ -912,7 +912,7 @@ test.describe('field data', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${preManualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${preManualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: triggerNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -957,7 +957,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1102,7 +1102,7 @@ test.describe('field data', () => { await page.getByRole('menuitem', { name: preManualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${preManualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${preManualNodeCollectionName}"]`) .hover(); await page .getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${preManualNodeCollectionName}`) @@ -1112,7 +1112,7 @@ test.describe('field data', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${preManualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${preManualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: triggerNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1157,7 +1157,7 @@ test.describe('field data', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm.test.ts b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm.test.ts index 83fb84d85..ddff9eb21 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm.test.ts @@ -1,27 +1,15 @@ import { faker } from '@faker-js/faker'; import { CollectionTriggerNode, - CreateWorkFlow, - EditWorkFlow, - WorkflowListRecords, + ManualNode, apiCreateWorkflow, apiDeleteWorkflow, + apiFilterList, apiGetWorkflow, - apiUpdateRecord, apiGetWorkflowNodeExecutions, apiUpdateWorkflowTrigger, appendJsonCollectionName, generalWithNoRelationalFields, - QueryRecordNode, - ManualNode, - apiGetRecord, - apiCreateWorkflowNode, - apiGetWorkflowNode, - ClculationNode, - CreateRecordNode, - AggregateNode, - apiGetList, - apiFilterList, } from '@nocobase/plugin-workflow-test/e2e'; import { expect, test } from '@nocobase/test/e2e'; import { dayjs } from '@nocobase/utils'; @@ -112,7 +100,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -120,7 +108,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -144,7 +132,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -264,7 +252,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -272,7 +260,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -296,7 +284,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -416,7 +404,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -424,7 +412,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -448,7 +436,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -568,7 +556,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -576,7 +564,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -600,7 +588,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -720,7 +708,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -728,7 +716,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -752,7 +740,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -872,7 +860,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -880,7 +868,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -904,7 +892,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1040,7 +1028,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1048,7 +1036,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1072,7 +1060,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1208,7 +1196,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1216,7 +1204,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1240,7 +1228,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1376,7 +1364,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1384,7 +1372,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1408,7 +1396,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1545,7 +1533,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1553,7 +1541,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1577,7 +1565,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1722,7 +1710,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1730,7 +1718,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1754,7 +1742,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -1890,7 +1878,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -1898,7 +1886,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -1922,7 +1910,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -2064,7 +2052,7 @@ test.describe('field data update', () => { await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-UpdateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -2072,7 +2060,7 @@ test.describe('field data update', () => { await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -2096,7 +2084,7 @@ test.describe('field data update', () => { const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/workflowTodo.test.ts b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/workflowTodo.test.ts index 6fa027703..672dd6e89 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/workflowTodo.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/workflowTodo.test.ts @@ -1,13 +1,13 @@ import { faker } from '@faker-js/faker'; import { CollectionTriggerNode, + ManualNode, apiCreateWorkflow, apiDeleteWorkflow, apiGetWorkflow, apiUpdateWorkflowTrigger, appendJsonCollectionName, generalWithNoRelationalFields, - ManualNode, } from '@nocobase/plugin-workflow-test/e2e'; import { expect, test } from '@nocobase/test/e2e'; import { dayjs } from '@nocobase/utils'; @@ -72,7 +72,7 @@ test('filter task node', async ({ page, mockPage, mockCollections, mockRecords } await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -80,7 +80,7 @@ test('filter task node', async ({ page, mockPage, mockCollections, mockRecords } await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -103,7 +103,7 @@ test('filter task node', async ({ page, mockPage, mockCollections, mockRecords } const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); @@ -182,7 +182,7 @@ test('filter workflow name', async ({ page, mockPage, mockCollections, mockRecor await page.getByRole('menuitem', { name: manualNodeCollectionDisplayName }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByLabel(`designer-schema-settings-CardItem-CreateFormDesigner-${manualNodeCollectionName}`).hover(); await page.getByRole('menuitem', { name: 'Edit block title' }).click(); @@ -190,7 +190,7 @@ test('filter workflow name', async ({ page, mockPage, mockCollections, mockRecor await page.getByLabel('Edit block title').getByRole('textbox').fill(blockTitle); await page.getByRole('button', { name: 'OK', exact: true }).click(); await page - .locator(`button[aria-label^="schema-initializer-Grid-FormItemInitializers-${manualNodeCollectionName}"]`) + .locator(`button[aria-label^="schema-initializer-Grid-form:configureFields-${manualNodeCollectionName}"]`) .hover(); await page.getByRole('menuitem', { name: manualNodeFieldDisplayName }).getByRole('switch').click(); await page.mouse.move(300, 0, { steps: 100 }); @@ -213,7 +213,7 @@ test('filter workflow name', async ({ page, mockPage, mockCollections, mockRecor const newPage = mockPage(); await newPage.goto(); await page.waitForLoadState('networkidle'); - await page.getByLabel('schema-initializer-Grid-BlockInitializers').hover(); + await page.getByLabel('schema-initializer-Grid-page:addBlock').hover(); await page.getByRole('menuitem', { name: 'check-square Workflow todos' }).click(); await page.mouse.move(300, 0, { steps: 100 }); await page.waitForTimeout(300); diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/index.ts b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/index.ts index 95a7954c1..9832405e1 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/index.ts +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/index.ts @@ -3,11 +3,16 @@ import WorkflowPlugin from '@nocobase/plugin-workflow/client'; import Manual from './instruction'; +import { NAMESPACE } from '../locale'; import { WorkflowTodo } from './WorkflowTodo'; import { WorkflowTodoBlockInitializer } from './WorkflowTodoBlockInitializer'; -import { NAMESPACE } from '../locale'; -import { addActionButton, addBlockButton } from './instruction/SchemaConfig'; -import { addCustomFormField } from './instruction/forms/custom'; +import { + addActionButton, + addActionButton_deprecated, + addBlockButton, + addBlockButton_deprecated, +} from './instruction/SchemaConfig'; +import { addCustomFormField, addCustomFormField_deprecated } from './instruction/forms/custom'; export default class extends Plugin { async afterAdd() { @@ -22,11 +27,14 @@ export default class extends Plugin { const workflow = this.app.pm.get('workflow') as WorkflowPlugin; workflow.registerInstruction('manual', Manual); + this.app.schemaInitializerManager.add(addBlockButton_deprecated); this.app.schemaInitializerManager.add(addBlockButton); + this.app.schemaInitializerManager.add(addActionButton_deprecated); this.app.schemaInitializerManager.add(addActionButton); + this.app.schemaInitializerManager.add(addCustomFormField_deprecated); this.app.schemaInitializerManager.add(addCustomFormField); - const blockInitializers = this.app.schemaInitializerManager.get('BlockInitializers'); + const blockInitializers = this.app.schemaInitializerManager.get('page:addBlock'); blockInitializers.add('otherBlocks.workflowTodos', { title: `{{t("Workflow todos", { ns: "${NAMESPACE}" })}}`, Component: 'WorkflowTodoBlockInitializer', diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/FormBlockInitializer.tsx b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/FormBlockInitializer.tsx index 656f3bb01..5ee4fc513 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/FormBlockInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/FormBlockInitializer.tsx @@ -22,7 +22,7 @@ function InternalFormBlockInitializer({ schema, ...others }) { async function onConfirm({ item }) { const template = item.template ? await getTemplateSchemaByMode(item) : null; const result = createFormBlockSchema({ - actionInitializers: 'AddActionButton', + actionInitializers: 'workflowManual:form:configureActions', actions: { resolve: { type: 'void', diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/SchemaConfig.tsx b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/SchemaConfig.tsx index 3b08356f4..271830b44 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/SchemaConfig.tsx +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/SchemaConfig.tsx @@ -8,13 +8,13 @@ import { useTranslation } from 'react-i18next'; import { Action, ActionContextProvider, + CompatibleSchemaInitializer, DefaultValueProvider, FormActiveFieldsProvider, GeneralSchemaDesigner, InitializerWithSwitch, SchemaComponent, SchemaComponentContext, - SchemaInitializer, SchemaInitializerItem, SchemaInitializerItemType, SchemaSettingsBlockTitleItem, @@ -122,7 +122,10 @@ function SimpleDesigner() { ); } -export const addBlockButton: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const addBlockButton_deprecated = new CompatibleSchemaInitializer({ name: 'AddBlockButton', wrap: gridRowColWrap, title: '{{t("Add block")}}', @@ -187,6 +190,74 @@ export const addBlockButton: SchemaInitializer = new SchemaInitializer({ ], }); +export const addBlockButton = new CompatibleSchemaInitializer( + { + name: 'workflowManual:popup:configureUserInterface:addBlock', + wrap: gridRowColWrap, + title: '{{t("Add block")}}', + items: [ + { + type: 'itemGroup', + name: 'dataBlocks', + title: '{{t("Data blocks")}}', + hideIfNoChildren: true, + useChildren() { + const workflowPlugin = usePlugin(WorkflowPlugin); + const current = useNodeContext(); + const nodes = useAvailableUpstreams(current); + const triggerInitializers = [useTriggerInitializers()].filter(Boolean); + const nodeBlockInitializers = nodes + .map((node) => { + const instruction = workflowPlugin.instructions.get(node.type); + return instruction?.useInitializers?.(node); + }) + .filter(Boolean); + const dataBlockInitializers: any = [ + ...triggerInitializers, + ...(nodeBlockInitializers.length + ? [ + { + name: 'nodes', + type: 'subMenu', + title: `{{t("Node result", { ns: "${NAMESPACE}" })}}`, + children: nodeBlockInitializers, + }, + ] + : []), + ].filter(Boolean); + return dataBlockInitializers; + }, + }, + { + type: 'itemGroup', + name: 'form', + title: '{{t("Form")}}', + useChildren() { + const dm = useDataSourceManager(); + const allCollections = dm.getAllCollections(); + return Array.from(manualFormTypes.getValues()).map((item: ManualFormType) => { + const { useInitializer: getInitializer } = item.config; + return getInitializer({ allCollections }); + }); + }, + }, + { + type: 'itemGroup', + name: 'otherBlocks', + title: '{{t("Other blocks")}}', + children: [ + { + name: 'markdown', + title: '{{t("Markdown")}}', + Component: 'MarkdownBlockInitializer', + }, + ], + }, + ], + }, + addBlockButton_deprecated, +); + function AssignedFieldValues() { const ctx = useContext(SchemaComponentContext); const { t } = useTranslation(); @@ -197,7 +268,7 @@ function AssignedFieldValues() { fieldSchema?.['x-action-settings']?.assignedValues?.schema ?? { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'CustomFormItemInitializers', + 'x-initializer': 'assignFieldValuesForm:configureFields', properties: {}, }, ); @@ -365,7 +436,10 @@ function ActionInitializer() { ); } -export const addActionButton: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const addActionButton_deprecated = new CompatibleSchemaInitializer({ name: 'AddActionButton', title: '{{t("Configure actions")}}', items: [ @@ -396,6 +470,40 @@ export const addActionButton: SchemaInitializer = new SchemaInitializer({ ], }); +export const addActionButton = new CompatibleSchemaInitializer( + { + name: 'workflowManual:form:configureActions', + title: '{{t("Configure actions")}}', + items: [ + { + name: 'jobStatusResolved', + title: `{{t("Continue the process", { ns: "${NAMESPACE}" })}}`, + Component: ContinueInitializer, + action: JOB_STATUS.RESOLVED, + actionProps: { + type: 'primary', + }, + }, + { + name: 'jobStatusRejected', + title: `{{t("Terminate the process", { ns: "${NAMESPACE}" })}}`, + Component: ActionInitializer, + action: JOB_STATUS.REJECTED, + actionProps: { + danger: true, + }, + }, + { + name: 'jobStatusPending', + title: `{{t("Save temporarily", { ns: "${NAMESPACE}" })}}`, + Component: ActionInitializer, + action: JOB_STATUS.PENDING, + }, + ], + }, + addActionButton_deprecated, +); + // NOTE: fake useAction for ui configuration function useSubmit() { // const { values, submit, id: formId } = useForm(); @@ -442,7 +550,7 @@ export function SchemaConfig({ value, onChange }) { 'x-component-props': {}, 'x-initializer': 'TabPaneInitializers', 'x-initializer-props': { - gridInitializer: 'AddBlockButton', + gridInitializer: 'workflowManual:popup:configureUserInterface:addBlock', }, properties: value ?? { tab1: { @@ -454,7 +562,7 @@ export function SchemaConfig({ value, onChange }) { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'AddBlockButton', + 'x-initializer': 'workflowManual:popup:configureUserInterface:addBlock', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/forms/custom.tsx b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/forms/custom.tsx index 8ef4198e1..f81a1057c 100644 --- a/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/forms/custom.tsx +++ b/packages/plugins/@nocobase/plugin-workflow-manual/src/client/instruction/forms/custom.tsx @@ -8,10 +8,10 @@ import lodash from 'lodash'; import { ActionContextProvider, CollectionProvider_deprecated, + CompatibleSchemaInitializer, FormBlockContext, RecordProvider, SchemaComponent, - SchemaInitializer, SchemaInitializerItem, SchemaInitializerItemType, SchemaInitializerItems, @@ -103,7 +103,7 @@ function CustomFormBlockInitializer() { grid: { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'AddCustomFormField', + 'x-initializer': 'workflowManual:customForm:configureFields', }, actions: { type: 'void', @@ -116,7 +116,7 @@ function CustomFormBlockInitializer() { flexWrap: 'wrap', }, }, - 'x-initializer': 'AddActionButton', + 'x-initializer': 'workflowManual:form:configureActions', properties: { resolve: { type: 'void', @@ -322,7 +322,10 @@ const CustomItemsComponent = (props) => { ); }; -export const addCustomFormField: SchemaInitializer = new SchemaInitializer({ +/** + * @deprecated + */ +export const addCustomFormField_deprecated = new CompatibleSchemaInitializer({ name: 'AddCustomFormField', wrap: gridRowColWrap, insertPosition: 'beforeEnd', @@ -330,6 +333,17 @@ export const addCustomFormField: SchemaInitializer = new SchemaInitializer({ ItemsComponent: CustomItemsComponent, }); +export const addCustomFormField = new CompatibleSchemaInitializer( + { + name: 'workflowManual:customForm:configureFields', + wrap: gridRowColWrap, + insertPosition: 'beforeEnd', + title: "{{t('Configure fields')}}", + ItemsComponent: CustomItemsComponent, + }, + addCustomFormField_deprecated, +); + function CustomFormFieldInitializer() { const itemConfig = useSchemaInitializerItem(); const { insert, setVisible } = useSchemaInitializer(); diff --git a/packages/plugins/@nocobase/plugin-workflow-test/src/e2e/e2ePageObjectModel.ts b/packages/plugins/@nocobase/plugin-workflow-test/src/e2e/e2ePageObjectModel.ts index d351cda2f..a5bed4fc2 100644 --- a/packages/plugins/@nocobase/plugin-workflow-test/src/e2e/e2ePageObjectModel.ts +++ b/packages/plugins/@nocobase/plugin-workflow-test/src/e2e/e2ePageObjectModel.ts @@ -434,7 +434,9 @@ export class ManualNode { .getByRole('button', { name: 'Configure' }); this.assigneesDropDown = page.getByTestId('select-single'); this.configureUserInterfaceButton = page.getByRole('button', { name: 'Configure user interface' }); - this.addBlockButton = page.getByLabel('schema-initializer-Grid-AddBlockButton-workflows'); + this.addBlockButton = page.getByLabel( + 'schema-initializer-Grid-workflowManual:popup:configureUserInterface:addBlock-workflows', + ); this.triggerDataMenu = page.getByRole('menuitem', { name: 'Trigger data' }); this.nodeDataMenu = page.getByRole('menuitem', { name: 'Node result right' }); this.customFormMenu = page.getByRole('menuitem', { name: 'Custom form' }); diff --git a/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/formulaEngine.test.ts b/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/formulaEngine.test.ts index 557874253..3aae8f6ae 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/formulaEngine.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/formulaEngine.test.ts @@ -563,7 +563,7 @@ test.skip('Collection event add data trigger, get front manual node add form sin version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'AddBlockButton', + 'x-initializer': 'workflowManual:popup:configureUserInterface:addBlock', name: 'grid', properties: { '59t231zx5vx': { @@ -608,7 +608,7 @@ test.skip('Collection event add data trigger, get front manual node add form sin version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', name: 'grid', properties: { yt2rbpepdsl: { @@ -646,7 +646,7 @@ test.skip('Collection event add data trigger, get front manual node add form sin _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'AddActionButton', + 'x-initializer': 'workflowManual:form:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', diff --git a/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/mathEngine.test.ts b/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/mathEngine.test.ts index ff318ec9f..710d97b1e 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/mathEngine.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/mathEngine.test.ts @@ -558,7 +558,7 @@ test.skip('Collection event add data trigger, get front manual node add form sin version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'AddBlockButton', + 'x-initializer': 'workflowManual:popup:configureUserInterface:addBlock', name: 'grid', properties: { '59t231zx5vx': { @@ -603,7 +603,7 @@ test.skip('Collection event add data trigger, get front manual node add form sin version: '2.0', type: 'void', 'x-component': 'Grid', - 'x-initializer': 'FormItemInitializers', + 'x-initializer': 'form:configureFields', name: 'grid', properties: { yt2rbpepdsl: { @@ -641,7 +641,7 @@ test.skip('Collection event add data trigger, get front manual node add form sin _isJSONSchemaObject: true, version: '2.0', type: 'void', - 'x-initializer': 'AddActionButton', + 'x-initializer': 'workflowManual:form:configureActions', 'x-component': 'ActionBar', 'x-component-props': { layout: 'one-column', diff --git a/packages/plugins/@nocobase/plugin-workflow/src/client/components/CollectionBlockInitializer.tsx b/packages/plugins/@nocobase/plugin-workflow/src/client/components/CollectionBlockInitializer.tsx index 048b2a942..72bc3b079 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/client/components/CollectionBlockInitializer.tsx +++ b/packages/plugins/@nocobase/plugin-workflow/src/client/components/CollectionBlockInitializer.tsx @@ -48,7 +48,7 @@ function InnerCollectionBlockInitializer({ collection, dataSource, ...props }) { grid: template || { type: 'void', 'x-component': 'Grid', - 'x-initializer': 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: {}, }, }, diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230411034722-manual-multi-form.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230411034722-manual-multi-form.ts index 1c2b6a7d3..a2a786694 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230411034722-manual-multi-form.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230411034722-manual-multi-form.ts @@ -113,7 +113,7 @@ function migrateConfig({ schema = {}, actions = [] }: { schema: any; actions: nu }, properties: { grid: Object.assign(formBlock.properties.grid, { - 'x-initializer': 'AddCustomFormField', + 'x-initializer': 'workflowManual:customForm:configureFields', }), // 7. actions: { @@ -126,7 +126,7 @@ function migrateConfig({ schema = {}, actions = [] }: { schema: any; actions: nu marginTop: '1.5em', }, }, - 'x-initializer': 'AddActionButton', + 'x-initializer': 'workflowManual:form:configureActions', properties: schema.actions, }, }, diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230612021134-manual-collection-block.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230612021134-manual-collection-block.ts index dfee79936..05fe1ec51 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230612021134-manual-collection-block.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/migrations/20230612021134-manual-collection-block.ts @@ -64,7 +64,7 @@ function migrateSchema(schema = {}): object { type: 'void', name: 'grid', 'x-component': 'Grid', - 'x-initializer': 'ReadPrettyFormItemInitializers', + 'x-initializer': 'details:configureFields', properties: grid.properties, }, },