@headless-adminapp/app 0.0.17-alpha.7 → 0.0.17-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/builders/CommandBuilder/CommandBuilder.d.ts +10 -0
  2. package/builders/CommandBuilder/CommandBuilder.js +14 -0
  3. package/builders/CommandBuilder/DefaultCommandBuilder.d.ts +79 -0
  4. package/builders/CommandBuilder/DefaultCommandBuilder.js +173 -0
  5. package/builders/CommandBuilder/FormCommandBuilder.d.ts +45 -0
  6. package/builders/CommandBuilder/FormCommandBuilder.js +145 -0
  7. package/builders/CommandBuilder/SubgridCommandBuilder.d.ts +64 -0
  8. package/builders/CommandBuilder/SubgridCommandBuilder.js +170 -0
  9. package/builders/CommandBuilder/ViewCommandBuilder.d.ts +63 -0
  10. package/builders/CommandBuilder/ViewCommandBuilder.js +250 -0
  11. package/builders/CommandBuilder/index.d.ts +1 -0
  12. package/builders/CommandBuilder/index.js +5 -0
  13. package/builders/CommandBuilder/utils.d.ts +3 -0
  14. package/builders/CommandBuilder/utils.js +21 -0
  15. package/builders/SchemaExperienceBuilder.d.ts +2 -5
  16. package/builders/SchemaExperienceBuilder.js +16 -16
  17. package/builders/index.d.ts +1 -1
  18. package/builders/index.js +1 -2
  19. package/command/hooks/useCommands.d.ts +1 -1
  20. package/command/hooks/useCommands.js +1 -1
  21. package/dataform/hooks/useLoadFormGridPage.js +7 -1
  22. package/dataform/utils/index.js +19 -19
  23. package/datagrid/DataGridProvider/transformViewColumns.js +4 -4
  24. package/datagrid/context.d.ts +1 -1
  25. package/datagrid/hooks/useGridCommands.d.ts +3 -0
  26. package/datagrid/hooks/useGridCommands.js +3 -0
  27. package/datagrid/hooks/useMainGridCommands.js +12 -3
  28. package/datagrid/hooks/useSubGridCommands.js +12 -3
  29. package/locale/utils.d.ts +5 -0
  30. package/locale/utils.js +7 -0
  31. package/metadata/hooks/useExperienceViewCommands.d.ts +1 -1
  32. package/metadata/hooks/useExperienceViewCommands.js +7 -1
  33. package/metadata/hooks/useExperienceViewSubgridCommands.d.ts +1 -1
  34. package/metadata/hooks/useExperienceViewSubgridCommands.js +7 -1
  35. package/package.json +2 -2
  36. package/store/SchemaExperienceStore.d.ts +3 -3
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.useLoadFormGridPage = useLoadFormGridPage;
13
+ const app_1 = require("@headless-adminapp/app/app");
13
14
  const react_query_1 = require("@tanstack/react-query");
14
15
  const hooks_1 = require("../../metadata/hooks");
15
16
  function useLoadFormGridPage(logicalName, formId) {
@@ -22,10 +23,15 @@ function useLoadFormGridPage(logicalName, formId) {
22
23
  }),
23
24
  placeholderData: react_query_1.keepPreviousData,
24
25
  });
26
+ const { app: { formCommands }, } = (0, app_1.useAppContext)();
25
27
  const { data: commands } = (0, react_query_1.useQuery)({
26
28
  queryKey: ['experience-schema-form-commands', logicalName],
27
29
  queryFn: () => __awaiter(this, void 0, void 0, function* () {
28
- return experienceStore.getFormCommands(logicalName);
30
+ let commands = yield experienceStore.getFormCommands(logicalName);
31
+ if (!commands) {
32
+ commands = formCommands;
33
+ }
34
+ return [];
29
35
  }),
30
36
  initialData: [],
31
37
  });
@@ -39,8 +39,8 @@ exports.getInitialValues = getInitialValues;
39
39
  const yup_1 = require("@hookform/resolvers/yup");
40
40
  const lodash_1 = require("lodash");
41
41
  const yup = __importStar(require("yup"));
42
- const CommandBuilder_1 = require("../../builders/CommandBuilder");
43
42
  const DataResolver_1 = require("../../dataform/DataFormProvider/DataResolver");
43
+ const utils_1 = require("../../locale/utils");
44
44
  function getModifiedValues(initialValues, values, exclude) {
45
45
  const keys = Object.keys(values);
46
46
  return keys.reduce((p, c) => {
@@ -59,8 +59,8 @@ function getModifiedValues(initialValues, values, exclude) {
59
59
  function saveRecord(_a) {
60
60
  return __awaiter(this, arguments, void 0, function* ({ values, form, schema, dataService, initialValues, record, schemaStore, }) {
61
61
  const controls = (0, DataResolver_1.getControls)(form);
62
- const editableGridControls = controls.filter((control) => control.type === 'editablegrid');
63
- const modifiedValues = getModifiedValues(initialValues, values, editableGridControls.map((x) => x.attributeName));
62
+ const editableGridControls = controls.filter(control => control.type === 'editablegrid');
63
+ const modifiedValues = getModifiedValues(initialValues, values, editableGridControls.map(x => x.attributeName));
64
64
  let recordId;
65
65
  if (record) {
66
66
  recordId = record[schema.idAttribute];
@@ -77,9 +77,9 @@ function saveRecord(_a) {
77
77
  const gridSchema = schemaStore.getSchema(control.logicalName);
78
78
  const gridRows = values[control.attributeName];
79
79
  const initialGridRows = initialValues[control.attributeName];
80
- const newRows = gridRows.filter((x) => !x[gridSchema.idAttribute]);
81
- const updatedRows = gridRows.filter((x) => x[gridSchema.idAttribute]);
82
- const deletedIds = initialGridRows === null || initialGridRows === void 0 ? void 0 : initialGridRows.map((x) => x[gridSchema.idAttribute]).filter((id) => !gridRows.find((x) => x[gridSchema.idAttribute] === id));
80
+ const newRows = gridRows.filter(x => !x[gridSchema.idAttribute]);
81
+ const updatedRows = gridRows.filter(x => x[gridSchema.idAttribute]);
82
+ const deletedIds = initialGridRows === null || initialGridRows === void 0 ? void 0 : initialGridRows.map(x => x[gridSchema.idAttribute]).filter(id => !gridRows.find(x => x[gridSchema.idAttribute] === id));
83
83
  for (const row of newRows) {
84
84
  operations.push({
85
85
  type: 'create',
@@ -90,7 +90,7 @@ function saveRecord(_a) {
90
90
  });
91
91
  }
92
92
  for (const row of updatedRows) {
93
- const initialRow = initialGridRows.find((x) => x[gridSchema.idAttribute] === row[gridSchema.idAttribute]);
93
+ const initialRow = initialGridRows.find(x => x[gridSchema.idAttribute] === row[gridSchema.idAttribute]);
94
94
  if (!initialRow) {
95
95
  throw new Error('Initial row not found');
96
96
  }
@@ -154,10 +154,10 @@ function saveRecord(_a) {
154
154
  }
155
155
  function getInitialValues({ cloneRecord, form, record, recordId, defaultParameters, }) {
156
156
  const formColumns = (0, DataResolver_1.getColumns)(form);
157
- const editableGridControls = (0, DataResolver_1.getControls)(form).filter((control) => control.type === 'editablegrid');
157
+ const editableGridControls = (0, DataResolver_1.getControls)(form).filter(control => control.type === 'editablegrid');
158
158
  const allColumns = [
159
159
  ...formColumns,
160
- ...editableGridControls.map((x) => x.attributeName),
160
+ ...editableGridControls.map(x => x.attributeName),
161
161
  ];
162
162
  if (!recordId && !record && form.experience.cloneAttributes && cloneRecord) {
163
163
  const cloneAttributesObj = form.experience.cloneAttributes.reduce((acc, item) => {
@@ -217,12 +217,12 @@ exports.formValidator = (0, lodash_1.memoize)(function formValidator({ form, sch
217
217
  let validator = yup.object().shape({});
218
218
  if (!formReadOnly) {
219
219
  const activeControls = form.experience.tabs
220
- .flatMap((tab) => tab.tabColumns)
221
- .flatMap((tabColumn) => tabColumn.sections)
222
- .flatMap((section) => {
220
+ .flatMap(tab => tab.tabColumns)
221
+ .flatMap(tabColumn => tabColumn.sections)
222
+ .flatMap(section => {
223
223
  return section.controls;
224
224
  })
225
- .filter((control) => {
225
+ .filter(control => {
226
226
  if (control.type === 'standard') {
227
227
  const attribute = schema.attributes[control.attributeName];
228
228
  if (attribute.readonly) {
@@ -231,15 +231,15 @@ exports.formValidator = (0, lodash_1.memoize)(function formValidator({ form, sch
231
231
  }
232
232
  return true;
233
233
  });
234
- const editableGridControls = activeControls.filter((control) => control.type === 'editablegrid');
234
+ const editableGridControls = activeControls.filter(control => control.type === 'editablegrid');
235
235
  const columns = Array.from(new Set([
236
236
  schema.primaryAttribute,
237
237
  ...activeControls
238
- .filter((control) => control.type === 'standard')
239
- .map((control) => control.attributeName),
238
+ .filter(control => control.type === 'standard')
239
+ .map(control => control.attributeName),
240
240
  ]));
241
241
  validator = (0, exports.generateValidationSchema)({
242
- editableGrids: editableGridControls.map((control) => {
242
+ editableGrids: editableGridControls.map(control => {
243
243
  if (control.type !== 'editablegrid') {
244
244
  throw new Error('Invalid control type');
245
245
  }
@@ -316,7 +316,7 @@ exports.generateAttributeValidationSchema = (0, lodash_1.memoize)(function gener
316
316
  validationSchema = yup.mixed().nullable();
317
317
  break;
318
318
  }
319
- const label = (0, CommandBuilder_1.localizedLabel)(language, attribute);
319
+ const label = (0, utils_1.localizedLabel)(language, attribute);
320
320
  if (attribute.required) {
321
321
  validationSchema = validationSchema.required(`${label}: ${strings.required}`);
322
322
  }
@@ -341,7 +341,7 @@ exports.generateAttributeValidationSchema = (0, lodash_1.memoize)(function gener
341
341
  default:
342
342
  break;
343
343
  }
344
- validationSchema = validationSchema.transform((value) => {
344
+ validationSchema = validationSchema.transform(value => {
345
345
  if (value === '') {
346
346
  return null;
347
347
  }
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.transformViewColumns = transformViewColumns;
4
- const CommandBuilder_1 = require("../../builders/CommandBuilder");
4
+ const utils_1 = require("../../locale/utils");
5
5
  function transformViewColumns(logicalName, columns, schemaStore, language) {
6
6
  const schema = schemaStore.getSchema(logicalName);
7
7
  return columns
8
- .map((column) => {
8
+ .map(column => {
9
9
  const attribute = schema.attributes[column.name];
10
10
  if (!attribute) {
11
11
  return null;
12
12
  }
13
- const label = (0, CommandBuilder_1.localizedLabel)(language, attribute);
13
+ const label = (0, utils_1.localizedLabel)(language, attribute);
14
14
  if (column.expandedKey) {
15
15
  if (attribute.type !== 'lookup') {
16
16
  return null;
@@ -20,7 +20,7 @@ function transformViewColumns(logicalName, columns, schemaStore, language) {
20
20
  if (!lookupAttribute) {
21
21
  return null;
22
22
  }
23
- const lookupLabel = (0, CommandBuilder_1.localizedLabel)(language, lookupAttribute);
23
+ const lookupLabel = (0, utils_1.localizedLabel)(language, lookupAttribute);
24
24
  return Object.assign(Object.assign({}, column), { id: `${column.name}.${column.expandedKey}`, label: `${lookupLabel} (${label})` });
25
25
  }
26
26
  return Object.assign(Object.assign({}, column), { id: column.name, label: label });
@@ -11,7 +11,7 @@ export interface GridContextState<S extends SchemaAttributes = SchemaAttributes,
11
11
  viewLookup: LocalizedDataLookup[];
12
12
  onChangeView?: (viewId: string) => void;
13
13
  extraFilter?: Filter;
14
- commands: CommandItemExperience<CommandContext>[][];
14
+ commands?: CommandItemExperience<CommandContext>[][];
15
15
  maxRecords?: number;
16
16
  columns: TransformedViewColumn<S>[];
17
17
  searchText: string;
@@ -1,3 +1,6 @@
1
1
  import { CommandItemExperience } from '@headless-adminapp/core/experience/command';
2
2
  import { EntityMainGridCommandContext, EntitySubGridCommandContext } from '@headless-adminapp/core/experience/view';
3
+ /**
4
+ * @deprecated
5
+ */
3
6
  export declare function useGridCommands<CommandContext extends EntityMainGridCommandContext | EntitySubGridCommandContext = EntityMainGridCommandContext>(): CommandItemExperience<CommandContext>[][];
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useGridCommands = useGridCommands;
4
4
  const context_1 = require("../../mutable/context");
5
5
  const context_2 = require("../context");
6
+ /**
7
+ * @deprecated
8
+ */
6
9
  function useGridCommands() {
7
10
  const commands = (0, context_1.useContextSelector)(context_2.GridContext, (state) => state.commands);
8
11
  return commands;
@@ -5,14 +5,16 @@ exports.useGridControlContext = useGridControlContext;
5
5
  exports.useMainGridCommandHandlerContext = useMainGridCommandHandlerContext;
6
6
  exports.useMainGridCommands = useMainGridCommands;
7
7
  exports.useMainGridContextCommands = useMainGridContextCommands;
8
+ const app_1 = require("@headless-adminapp/app/app");
9
+ const mutable_1 = require("@headless-adminapp/app/mutable");
8
10
  const react_1 = require("react");
9
11
  const command_1 = require("../../command");
10
12
  const hooks_1 = require("../../dialog/hooks");
11
13
  const useProgressIndicator_1 = require("../../progress-indicator/hooks/useProgressIndicator");
12
14
  const useOpenToastNotification_1 = require("../../toast-notification/hooks/useOpenToastNotification");
15
+ const context_1 = require("../context");
13
16
  const useGridColumnFilter_1 = require("./useGridColumnFilter");
14
17
  const useGridColumns_1 = require("./useGridColumns");
15
- const useGridCommands_1 = require("./useGridCommands");
16
18
  const useGridData_1 = require("./useGridData");
17
19
  const useGridExtraFilter_1 = require("./useGridExtraFilter");
18
20
  const useGridRefresh_1 = require("./useGridRefresh");
@@ -84,13 +86,20 @@ function useMainGridCommandHandlerContext() {
84
86
  const primaryControl = useGridControlContext();
85
87
  return Object.assign(Object.assign({}, baseHandlerContext), { primaryControl });
86
88
  }
89
+ const emptyCommands = [];
90
+ function useGridCommands() {
91
+ var _a;
92
+ const commands = (0, mutable_1.useContextSelector)(context_1.GridContext, (state) => state.commands);
93
+ const { app: { viewCommands: defaultCommands }, } = (0, app_1.useAppContext)();
94
+ return (_a = commands !== null && commands !== void 0 ? commands : defaultCommands) !== null && _a !== void 0 ? _a : emptyCommands;
95
+ }
87
96
  function useMainGridCommands() {
88
- const commands = (0, useGridCommands_1.useGridCommands)();
97
+ const commands = useGridCommands();
89
98
  const handlerContext = useMainGridCommandHandlerContext();
90
99
  return (0, command_1.useCommands)(commands, handlerContext);
91
100
  }
92
101
  function useMainGridContextCommands() {
93
- const commands = (0, useGridCommands_1.useGridCommands)();
102
+ const commands = useGridCommands();
94
103
  const handlerContext = useMainGridCommandHandlerContext();
95
104
  return (0, command_1.useCommands)(commands, handlerContext, (command) => { var _a; return (_a = ('isContextMenu' in command && command.isContextMenu)) !== null && _a !== void 0 ? _a : false; });
96
105
  }
@@ -3,11 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useSubGridCommandHandlerContext = useSubGridCommandHandlerContext;
4
4
  exports.useSubGridCommands = useSubGridCommands;
5
5
  exports.useSubGridContextCommands = useSubGridContextCommands;
6
+ const app_1 = require("@headless-adminapp/app/app");
7
+ const mutable_1 = require("@headless-adminapp/app/mutable");
6
8
  const react_1 = require("react");
7
9
  const command_1 = require("../../command");
8
10
  const useMainFormCommands_1 = require("../../dataform/hooks/useMainFormCommands");
11
+ const context_1 = require("../context");
9
12
  const useGridColumnFilter_1 = require("./useGridColumnFilter");
10
- const useGridCommands_1 = require("./useGridCommands");
11
13
  const useGridData_1 = require("./useGridData");
12
14
  const useGridExtraFilter_1 = require("./useGridExtraFilter");
13
15
  const useGridRefresh_1 = require("./useGridRefresh");
@@ -51,13 +53,20 @@ function useSubGridCommandHandlerContext() {
51
53
  extraFilter,
52
54
  } });
53
55
  }
56
+ const emptyCommands = [];
57
+ function useGridCommands() {
58
+ var _a;
59
+ const commands = (0, mutable_1.useContextSelector)(context_1.GridContext, (state) => state.commands);
60
+ const { app: { subgridCommands: defaultCommands }, } = (0, app_1.useAppContext)();
61
+ return (_a = commands !== null && commands !== void 0 ? commands : defaultCommands) !== null && _a !== void 0 ? _a : emptyCommands;
62
+ }
54
63
  function useSubGridCommands() {
55
- const commands = (0, useGridCommands_1.useGridCommands)();
64
+ const commands = useGridCommands();
56
65
  const handlerContext = useSubGridCommandHandlerContext();
57
66
  return (0, command_1.useCommands)(commands, handlerContext);
58
67
  }
59
68
  function useSubGridContextCommands() {
60
- const commands = (0, useGridCommands_1.useGridCommands)();
69
+ const commands = useGridCommands();
61
70
  const handlerContext = useSubGridCommandHandlerContext();
62
71
  return (0, command_1.useCommands)(commands, handlerContext, (command) => { var _a; return (_a = ('isContextMenu' in command && command.isContextMenu)) !== null && _a !== void 0 ? _a : false; });
63
72
  }
@@ -0,0 +1,5 @@
1
+ import { Localized } from '@headless-adminapp/core/types';
2
+ export declare function localizedLabel<T extends {
3
+ label: string;
4
+ localizedLabels?: Localized<string>;
5
+ }>(language: string, value: T, fallback?: T): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.localizedLabel = localizedLabel;
4
+ function localizedLabel(language, value, fallback) {
5
+ var _a, _b, _c, _d, _e;
6
+ return ((_e = (_d = (_b = (_a = value.localizedLabels) === null || _a === void 0 ? void 0 : _a[language]) !== null && _b !== void 0 ? _b : (_c = fallback === null || fallback === void 0 ? void 0 : fallback.localizedLabels) === null || _c === void 0 ? void 0 : _c[language]) !== null && _d !== void 0 ? _d : value.label) !== null && _e !== void 0 ? _e : fallback === null || fallback === void 0 ? void 0 : fallback.label);
7
+ }
@@ -1,4 +1,4 @@
1
1
  /** @todo move in different dir */
2
2
  export declare function useExperienceViewCommands(logicalName: string): {
3
- commands: import("@headless-adminapp/core/experience/view").EntityMainGridCommandItemExperience[][];
3
+ commands: never[];
4
4
  };
@@ -10,15 +10,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.useExperienceViewCommands = useExperienceViewCommands;
13
+ const app_1 = require("@headless-adminapp/app/app");
13
14
  const react_query_1 = require("@tanstack/react-query");
14
15
  const useExperienceStore_1 = require("./useExperienceStore");
15
16
  /** @todo move in different dir */
16
17
  function useExperienceViewCommands(logicalName) {
17
18
  const experienceStore = (0, useExperienceStore_1.useExperienceStore)();
19
+ const { app: { viewCommands }, } = (0, app_1.useAppContext)();
18
20
  const { data: commands } = (0, react_query_1.useQuery)({
19
21
  queryKey: ['experience-schema-view-commands', logicalName],
20
22
  queryFn: () => __awaiter(this, void 0, void 0, function* () {
21
- return experienceStore.getViewCommands(logicalName);
23
+ let commands = yield experienceStore.getViewCommands(logicalName);
24
+ if (!commands) {
25
+ commands = viewCommands;
26
+ }
27
+ return [];
22
28
  }),
23
29
  initialData: [],
24
30
  });
@@ -1,4 +1,4 @@
1
1
  /** @todo move in different dir */
2
2
  export declare function useExperienceViewSubgridCommands(logicalName: string): {
3
- commands: import("@headless-adminapp/core/experience/view").SubGridCommandItemExperience[][];
3
+ commands: never[];
4
4
  };
@@ -10,15 +10,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.useExperienceViewSubgridCommands = useExperienceViewSubgridCommands;
13
+ const app_1 = require("@headless-adminapp/app/app");
13
14
  const react_query_1 = require("@tanstack/react-query");
14
15
  const useExperienceStore_1 = require("./useExperienceStore");
15
16
  /** @todo move in different dir */
16
17
  function useExperienceViewSubgridCommands(logicalName) {
17
18
  const experienceStore = (0, useExperienceStore_1.useExperienceStore)();
19
+ const { app: { subgridCommands }, } = (0, app_1.useAppContext)();
18
20
  const { data: commands } = (0, react_query_1.useQuery)({
19
21
  queryKey: ['experience-schema-view-subgrid-commands', logicalName],
20
22
  queryFn: () => __awaiter(this, void 0, void 0, function* () {
21
- return experienceStore.getSubgridCommands(logicalName);
23
+ let commands = yield experienceStore.getSubgridCommands(logicalName);
24
+ if (!commands) {
25
+ commands = subgridCommands;
26
+ }
27
+ return [];
22
28
  }),
23
29
  initialData: [],
24
30
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@headless-adminapp/app",
3
- "version": "0.0.17-alpha.7",
3
+ "version": "0.0.17-alpha.8",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -38,5 +38,5 @@
38
38
  "react-hook-form": "7.52.2",
39
39
  "yup": "^1.4.0"
40
40
  },
41
- "gitHead": "5b53560e1c0b20e0bb0e74e820a96c7c75e2c43b"
41
+ "gitHead": "0c369830a0ba4aa5744cc307f8947ae9660980c4"
42
42
  }
@@ -23,9 +23,9 @@ export declare class SchemaExperienceStore implements ISchemaExperienceStore {
23
23
  getDefaultViewLookupId(logicalName: string): Promise<string>;
24
24
  getForm<S extends SchemaAttributes = SchemaAttributes>(logicalName: string, formId: string): Promise<Form<S>>;
25
25
  getQuickCreateForm<S extends SchemaAttributes = SchemaAttributes>(logicalName: string, formId: string): Promise<QuickCreateForm<S>>;
26
- getViewCommands(logicalName: string): Promise<EntityMainGridCommandItemExperience[][]>;
27
- getFormCommands(logicalName: string): Promise<EntityMainFormCommandItemExperience[][]>;
28
- getSubgridCommands(logicalName: string): Promise<SubGridCommandItemExperience[][]>;
26
+ getViewCommands(logicalName: string): Promise<EntityMainGridCommandItemExperience[][] | undefined>;
27
+ getFormCommands(logicalName: string): Promise<EntityMainFormCommandItemExperience[][] | undefined>;
28
+ getSubgridCommands(logicalName: string): Promise<SubGridCommandItemExperience[][] | undefined>;
29
29
  getSchemaMetadataList(): SchemaMetadata[];
30
30
  getExperienceSchemaMetadatList(): Promise<SchemaExperienceMetadata[]>;
31
31
  }