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

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 (243) hide show
  1. package/app/AppProvider.d.ts +0 -3
  2. package/app/AppProvider.js +10 -33
  3. package/app/AuthWrapper.d.ts +1 -1
  4. package/app/AuthWrapper.js +4 -1
  5. package/app/LayoutProvider.d.ts +8 -7
  6. package/app/LayoutProvider.js +28 -2
  7. package/app/context.d.ts +1 -1
  8. package/auth/AuthProvider.d.ts +1 -1
  9. package/auth/AuthProvider.js +30 -23
  10. package/auth/context.d.ts +2 -0
  11. package/auth/hooks/useIsSkipAuthCheck.d.ts +1 -0
  12. package/auth/hooks/useIsSkipAuthCheck.js +8 -0
  13. package/auth/hooks/useLogout.js +1 -1
  14. package/board/BoardColumnDataResolver.d.ts +1 -0
  15. package/board/BoardColumnDataResolver.js +64 -0
  16. package/board/BoardColumnProvider.d.ts +7 -0
  17. package/board/BoardColumnProvider.js +36 -0
  18. package/board/context.d.ts +19 -0
  19. package/board/context.js +6 -0
  20. package/board/hooks/index.d.ts +6 -0
  21. package/board/hooks/index.js +15 -0
  22. package/board/hooks/useBoardColumnConfig.d.ts +2 -0
  23. package/board/hooks/useBoardColumnConfig.js +8 -0
  24. package/board/hooks/useBoardColumnData.d.ts +3 -0
  25. package/board/hooks/useBoardColumnData.js +9 -0
  26. package/board/hooks/useBoardColumnDataState.d.ts +5 -0
  27. package/board/hooks/useBoardColumnDataState.js +9 -0
  28. package/board/hooks/useBoardConfig.d.ts +3 -0
  29. package/board/hooks/useBoardConfig.js +8 -0
  30. package/board/hooks/useBoardSchema.d.ts +2 -0
  31. package/board/hooks/useBoardSchema.js +7 -0
  32. package/board/hooks/useSearchText.d.ts +1 -0
  33. package/board/hooks/useSearchText.js +14 -0
  34. package/board/types.d.ts +47 -0
  35. package/board/utils.d.ts +3 -0
  36. package/board/utils.js +6 -0
  37. package/builders/CommandBuilder/DefaultCommandBuilder.d.ts +15 -6
  38. package/builders/CommandBuilder/DefaultCommandBuilder.js +42 -20
  39. package/builders/CommandBuilder/FormCommandBuilder.d.ts +14 -13
  40. package/builders/CommandBuilder/FormCommandBuilder.js +66 -52
  41. package/builders/CommandBuilder/SubgridCommandBuilder.d.ts +8 -27
  42. package/builders/CommandBuilder/SubgridCommandBuilder.js +115 -57
  43. package/builders/CommandBuilder/ViewCommandBuilder.js +32 -52
  44. package/builders/CommandBuilder/utils.js +1 -1
  45. package/builders/DefineFormExperience.d.ts +27 -0
  46. package/builders/DefineFormExperience.js +99 -0
  47. package/builders/DefineViewExperience.d.ts +13 -0
  48. package/builders/DefineViewExperience.js +33 -0
  49. package/builders/SchemaExperienceBuilder.d.ts +9 -7
  50. package/builders/SchemaExperienceBuilder.js +62 -40
  51. package/builders/utils.js +30 -44
  52. package/calendar/baseEventAttributes.d.ts +35 -0
  53. package/calendar/baseEventAttributes.js +38 -0
  54. package/calendar/context.d.ts +6 -0
  55. package/calendar/context.js +5 -0
  56. package/calendar/hooks/index.d.ts +1 -0
  57. package/{appearance → calendar}/hooks/index.js +1 -1
  58. package/calendar/hooks/useConfig.d.ts +3 -0
  59. package/calendar/hooks/useConfig.js +8 -0
  60. package/calendar/types.d.ts +41 -0
  61. package/calendar/types.js +2 -0
  62. package/calendar/utils.d.ts +3 -0
  63. package/calendar/utils.js +6 -0
  64. package/command/hooks/useBaseCommandHandlerContext.js +15 -6
  65. package/command/hooks/useCommands.js +1 -1
  66. package/command/utils/index.js +34 -9
  67. package/components/ScrollView/index.d.ts +1 -1
  68. package/components/ScrollView/index.js +2 -2
  69. package/components/ScrollbarWithMoreDataRequest/index.d.ts +9 -0
  70. package/components/ScrollbarWithMoreDataRequest/index.js +32 -0
  71. package/dataform/DataFormProvider/CustomHookExecuter.d.ts +5 -0
  72. package/dataform/DataFormProvider/CustomHookExecuter.js +14 -0
  73. package/dataform/DataFormProvider/DataResolver.d.ts +6 -4
  74. package/dataform/DataFormProvider/DataResolver.js +11 -94
  75. package/dataform/DataFormProvider/InitialValueResolver.js +3 -2
  76. package/dataform/DataFormProvider/ReadonlyInfoResolver.js +2 -3
  77. package/dataform/DataFormProvider/getRecord.d.ts +3 -0
  78. package/dataform/DataFormProvider/getRecord.js +56 -0
  79. package/dataform/DataFormProvider/index.d.ts +4 -0
  80. package/dataform/DataFormProvider/index.js +34 -12
  81. package/dataform/DataFormProvider/types.d.ts +13 -0
  82. package/dataform/DataFormProvider/types.js +2 -0
  83. package/dataform/DataFormProvider/utils.d.ts +23 -0
  84. package/dataform/DataFormProvider/utils.js +105 -0
  85. package/dataform/FormManager.d.ts +57 -0
  86. package/dataform/FormManager.js +247 -0
  87. package/dataform/constants.d.ts +1 -0
  88. package/dataform/constants.js +4 -0
  89. package/dataform/context.d.ts +26 -1
  90. package/dataform/hooks/index.d.ts +11 -0
  91. package/dataform/hooks/index.js +11 -0
  92. package/dataform/hooks/useContextKey.d.ts +1 -0
  93. package/dataform/hooks/useContextKey.js +8 -0
  94. package/dataform/hooks/useDisabledControlsManager.d.ts +6 -0
  95. package/dataform/hooks/useDisabledControlsManager.js +46 -0
  96. package/dataform/hooks/useEventManager.d.ts +1 -0
  97. package/dataform/hooks/useEventManager.js +8 -0
  98. package/dataform/hooks/useFormManager.d.ts +2 -0
  99. package/dataform/hooks/useFormManager.js +13 -0
  100. package/dataform/hooks/useFormNotifications.js +2 -2
  101. package/dataform/hooks/useFormSave.js +28 -31
  102. package/dataform/hooks/useHiddenControlsManager.d.ts +7 -0
  103. package/dataform/hooks/useHiddenControlsManager.js +50 -0
  104. package/dataform/hooks/useIsControlDisabled.d.ts +1 -0
  105. package/dataform/hooks/useIsControlDisabled.js +27 -0
  106. package/dataform/hooks/useIsControlHiddenByAttributeName.d.ts +1 -0
  107. package/dataform/hooks/useIsControlHiddenByAttributeName.js +17 -0
  108. package/dataform/hooks/useIsControlHiddenByKey.d.ts +1 -0
  109. package/dataform/hooks/useIsControlHiddenByKey.js +17 -0
  110. package/dataform/hooks/useIsFieldRequired.d.ts +1 -0
  111. package/dataform/hooks/useIsFieldRequired.js +25 -0
  112. package/dataform/hooks/useLoadFormGridPage.js +8 -17
  113. package/dataform/hooks/useMainFormCommands.d.ts +1 -12
  114. package/dataform/hooks/useMainFormCommands.js +13 -3
  115. package/dataform/hooks/useOnFieldValueChangeListener.d.ts +1 -0
  116. package/dataform/hooks/useOnFieldValueChangeListener.js +30 -0
  117. package/dataform/hooks/useProcessFlowSteps.d.ts +1 -0
  118. package/dataform/hooks/useProcessFlowSteps.js +45 -0
  119. package/dataform/hooks/useRecordTitle.d.ts +3 -1
  120. package/dataform/hooks/useRecordTitle.js +12 -5
  121. package/dataform/hooks/useRequiredFieldManager.d.ts +6 -0
  122. package/dataform/hooks/useRequiredFieldManager.js +49 -0
  123. package/dataform/test.d.ts +57 -0
  124. package/dataform/test.js +247 -0
  125. package/dataform/utils/defaultParameters.d.ts +6 -0
  126. package/dataform/utils/defaultParameters.js +54 -0
  127. package/dataform/utils/index.d.ts +6 -24
  128. package/dataform/utils/index.js +164 -190
  129. package/dataform/utils/saveRecord.d.ts +27 -0
  130. package/dataform/utils/saveRecord.js +163 -0
  131. package/datagrid/DataGridProvider/DataResolver.js +38 -109
  132. package/datagrid/DataGridProvider/index.d.ts +6 -0
  133. package/datagrid/DataGridProvider/index.js +18 -8
  134. package/datagrid/DataGridProvider/transformViewColumns.js +10 -2
  135. package/datagrid/DataGridProvider/utils.js +8 -8
  136. package/datagrid/column-filter/constants.js +38 -3
  137. package/datagrid/column-filter/utils.js +7 -1
  138. package/datagrid/context.d.ts +6 -0
  139. package/datagrid/hooks/useChangeView.js +1 -1
  140. package/datagrid/hooks/useGridColumnFilter.js +4 -1
  141. package/datagrid/hooks/useGridDisabled.d.ts +1 -0
  142. package/datagrid/hooks/useGridDisabled.js +8 -0
  143. package/datagrid/hooks/useLoadMainGridPage.js +1 -1
  144. package/datagrid/hooks/useMainGridCommands.js +23 -9
  145. package/datagrid/hooks/useOpenRecord.js +2 -2
  146. package/datagrid/hooks/useSubGridCommands.js +23 -45
  147. package/defaults.d.ts +2 -0
  148. package/defaults.js +5 -0
  149. package/dialog/hooks/useCloseDialog.js +17 -15
  150. package/dialog/hooks/useOpenAlertDialog.js +8 -3
  151. package/dialog/hooks/useOpenConfirmDialog.js +10 -4
  152. package/dialog/hooks/useOpenDialog.js +7 -5
  153. package/dialog/hooks/useOpenErrorDialog.js +8 -3
  154. package/dialog/hooks/useOpenPromptDialog.js +10 -4
  155. package/form/FormValidationStringContext.d.ts +1 -0
  156. package/form/FormValidationStringContext.js +1 -0
  157. package/hooks/index.d.ts +1 -0
  158. package/hooks/index.js +3 -0
  159. package/hooks/useDebouncedValue.js +0 -1
  160. package/hooks/useElementLayout.js +1 -1
  161. package/hooks/useIsMobile.js +0 -1
  162. package/hooks/useItemsWithKey.d.ts +7 -0
  163. package/hooks/useItemsWithKey.js +13 -0
  164. package/hooks/useStorageState.js +1 -2
  165. package/hooks/useSystemColorScheme.d.ts +1 -1
  166. package/hooks/useSystemColorScheme.js +0 -1
  167. package/insights/InsightsProvider.d.ts +8 -0
  168. package/insights/InsightsProvider.js +27 -0
  169. package/locale/LocaleProvider.d.ts +2 -1
  170. package/locale/LocaleProvider.js +3 -3
  171. package/locale/index.d.ts +1 -0
  172. package/locale/index.js +1 -0
  173. package/locale/useCurrencySymbol.d.ts +1 -0
  174. package/locale/useCurrencySymbol.js +12 -0
  175. package/locale/utils.js +4 -2
  176. package/metadata/MetadataProvider.d.ts +8 -4
  177. package/metadata/MetadataProvider.js +23 -17
  178. package/metadata/context.d.ts +3 -2
  179. package/metadata/hooks/index.d.ts +1 -1
  180. package/metadata/hooks/index.js +1 -1
  181. package/metadata/hooks/useAppExperience.d.ts +1 -0
  182. package/metadata/hooks/useAppExperience.js +8 -0
  183. package/metadata/hooks/useAppStore.d.ts +1 -1
  184. package/metadata/hooks/useAppStore.js +3 -3
  185. package/metadata/hooks/useExperienceView.js +2 -11
  186. package/metadata/hooks/useExperienceViewCommands.d.ts +1 -1
  187. package/metadata/hooks/useExperienceViewCommands.js +5 -14
  188. package/metadata/hooks/useExperienceViewLookup.js +2 -11
  189. package/metadata/hooks/useExperienceViewSubgridCommands.d.ts +1 -1
  190. package/metadata/hooks/useExperienceViewSubgridCommands.js +5 -14
  191. package/metadata/hooks/useMetadata.d.ts +11 -10
  192. package/metadata/hooks/useMetadata.js +4 -16
  193. package/metadata/hooks/useSchema.d.ts +1 -1
  194. package/metadata/hooks/useSchema.js +3 -0
  195. package/mutable/context.d.ts +3 -0
  196. package/mutable/context.js +8 -0
  197. package/mutable/utils.js +5 -12
  198. package/navigation/hooks/useOpenForm.js +4 -0
  199. package/package.json +6 -10
  200. package/providers/PageEntityFormProvider/index.d.ts +5 -1
  201. package/providers/PageEntityFormProvider/index.js +2 -2
  202. package/recordset/hooks/useRecordSetResult.js +4 -14
  203. package/route/RouteProvider.d.ts +2 -2
  204. package/route/RouteProvider.js +4 -1
  205. package/store/ClientAppStore.js +7 -20
  206. package/store/ComponentStore.d.ts +1 -1
  207. package/store/ComponentStore.js +6 -12
  208. package/store/EventManager.d.ts +2 -2
  209. package/store/EventManager.js +13 -29
  210. package/store/SchemaExperienceStore.js +179 -215
  211. package/store/index.d.ts +0 -1
  212. package/store/index.js +0 -1
  213. package/toast-notification/hooks/useCloseToastNotification.js +17 -15
  214. package/toast-notification/hooks/useOpenToastNotification.js +7 -5
  215. package/transport/InMemoryDataService/index.js +54 -77
  216. package/transport/RestDataService/index.d.ts +3 -3
  217. package/transport/RestDataService/index.js +68 -91
  218. package/transport/context.d.ts +2 -1
  219. package/transport/context.js +7 -1
  220. package/transport/hooks/index.d.ts +1 -0
  221. package/transport/hooks/index.js +1 -0
  222. package/transport/hooks/useFileService.d.ts +1 -0
  223. package/transport/hooks/useFileService.js +9 -0
  224. package/transport/hooks/useRetriveRecords.d.ts +33 -0
  225. package/transport/hooks/useRetriveRecords.js +110 -0
  226. package/utils/calculateColumnWidths.js +1 -1
  227. package/utils/color.d.ts +1 -0
  228. package/utils/color.js +14 -0
  229. package/utils/getAttributeFormattedValue.d.ts +4 -1
  230. package/utils/getAttributeFormattedValue.js +109 -54
  231. package/utils/phone.d.ts +13 -0
  232. package/utils/phone.js +33 -0
  233. package/appearance/context.d.ts +0 -7
  234. package/appearance/context.js +0 -5
  235. package/appearance/hooks/index.d.ts +0 -1
  236. package/appearance/hooks/useAppearanceContext.d.ts +0 -1
  237. package/appearance/hooks/useAppearanceContext.js +0 -12
  238. package/appearance/index.d.ts +0 -2
  239. package/appearance/index.js +0 -20
  240. package/builders/CommandBuilder.d.ts +0 -176
  241. package/builders/CommandBuilder.js +0 -567
  242. package/locale/types.d.ts +0 -2
  243. /package/{locale → board}/types.js +0 -0
@@ -6,17 +6,12 @@
6
6
  // 4. Perform the operations
7
7
  // 5. Handle the response (success or error, navigation, clear some cache, etc)
8
8
  // 6. Hide the loading indicator
9
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
10
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11
- return new (P || (P = Promise))(function (resolve, reject) {
12
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
13
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
14
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
15
- step((generator = generator.apply(thisArg, _arguments || [])).next());
16
- });
17
- };
18
9
  Object.defineProperty(exports, "__esModule", { value: true });
19
10
  exports.useFormSave = useFormSave;
11
+ // Wrapper - Loader, response message
12
+ // Core - Extract modified fields, prepare operations, perform operations
13
+ const route_1 = require("@headless-adminapp/app/route");
14
+ const app_1 = require("@headless-adminapp/core/experience/app");
20
15
  const react_query_1 = require("@tanstack/react-query");
21
16
  const react_1 = require("react");
22
17
  const react_hook_form_1 = require("react-hook-form");
@@ -26,7 +21,6 @@ const useProgressIndicator_1 = require("../../progress-indicator/hooks/useProgre
26
21
  const useOpenToastNotification_1 = require("../../toast-notification/hooks/useOpenToastNotification");
27
22
  const transport_1 = require("../../transport");
28
23
  const context_2 = require("../context");
29
- const utils_1 = require("../utils");
30
24
  const useFormRecord_1 = require("./useFormRecord");
31
25
  const useFormSchema_1 = require("./useFormSchema");
32
26
  const useSelectedForm_1 = require("./useSelectedForm");
@@ -41,7 +35,10 @@ function useFormSave() {
41
35
  const dataService = (0, transport_1.useDataService)();
42
36
  const { showProgressIndicator, hideProgressIndicator } = (0, useProgressIndicator_1.useProgressIndicator)();
43
37
  const openToastNotification = (0, useOpenToastNotification_1.useOpenToastNotification)();
38
+ const routeResolver = (0, route_1.useRouteResolver)();
39
+ const saveRecord = (0, context_1.useContextSelector)(context_2.DataFormContext, (state) => state.saveRecordFn);
44
40
  const client = (0, react_query_1.useQueryClient)();
41
+ const router = (0, route_1.useRouter)();
45
42
  function showMessageAfterSave({ isCreatedMode }) {
46
43
  // Show notification
47
44
  if (!isCreatedMode) {
@@ -59,8 +56,8 @@ function useFormSave() {
59
56
  });
60
57
  }
61
58
  }
62
- const _save = (mode) => __awaiter(this, void 0, void 0, function* () {
63
- yield formInstance.handleSubmit((values) => __awaiter(this, void 0, void 0, function* () {
59
+ const _save = async (mode) => {
60
+ await formInstance.handleSubmit(async (values) => {
64
61
  if (mode === 'background' && !record) {
65
62
  // Background save should not be triggered if there is no record
66
63
  return;
@@ -69,7 +66,7 @@ function useFormSave() {
69
66
  showProgressIndicator(undefined, 500);
70
67
  }
71
68
  try {
72
- const result = yield (0, utils_1.saveRecord)({
69
+ const result = await saveRecord({
73
70
  values,
74
71
  form: form,
75
72
  record: record,
@@ -86,29 +83,29 @@ function useFormSave() {
86
83
  });
87
84
  return;
88
85
  }
89
- // invalidateQueriesAfterSave({
90
- // client,
91
- // });
92
- if (mode === 'save' && record) {
93
- yield refresh();
94
- // client.invalidateQueries({ queryKey: ['data', 'retriveRecord'] });
86
+ if (mode === 'save') {
87
+ if (record) {
88
+ await refresh();
89
+ }
90
+ else {
91
+ router.replace(routeResolver({
92
+ type: app_1.PageType.EntityForm,
93
+ logicalName: schema.logicalName,
94
+ id: result.recordId,
95
+ }));
96
+ }
95
97
  }
96
98
  else {
97
- yield client.invalidateQueries({
99
+ await client.invalidateQueries({
98
100
  queryKey: ['data', 'retriveRecord'],
99
101
  });
102
+ if (mode === 'saveandclose') {
103
+ router.back();
104
+ }
100
105
  }
101
- yield client.invalidateQueries({
106
+ await client.invalidateQueries({
102
107
  queryKey: ['data', 'retriveRecords'],
103
108
  });
104
- // redirectAfterSave({
105
- // navigation,
106
- // isCreatedMode: !context.state.record,
107
- // recordId: result.recordId,
108
- // reset: form.reset,
109
- // logicalName: schema.logicalName,
110
- // mode,
111
- // });
112
109
  showMessageAfterSave({
113
110
  isCreatedMode: !record,
114
111
  });
@@ -126,8 +123,8 @@ function useFormSave() {
126
123
  hideProgressIndicator();
127
124
  }
128
125
  }
129
- }))();
130
- });
126
+ })();
127
+ };
131
128
  const _saveRef = (0, react_1.useRef)(_save);
132
129
  _saveRef.current = _save;
133
130
  const save = (0, react_1.useCallback)((mode) => _saveRef.current(mode), [_saveRef]);
@@ -0,0 +1,7 @@
1
+ /** @deprecated */
2
+ export declare function useHiddenControlsManager(): {
3
+ getIsControlHiddenByAttributeName: (attributeName: string) => boolean;
4
+ getIsControlHiddenByKey: (key: string) => boolean;
5
+ setControlHiddenByKey: (key: string, state: boolean) => void;
6
+ resetControlHiddenByKey: (key: string) => void;
7
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useHiddenControlsManager = useHiddenControlsManager;
4
+ const mutable_1 = require("@headless-adminapp/app/mutable");
5
+ const context_1 = require("@headless-adminapp/app/mutable/context");
6
+ const react_1 = require("react");
7
+ const context_2 = require("../context");
8
+ const utils_1 = require("../DataFormProvider/utils");
9
+ /** @deprecated */
10
+ function useHiddenControlsManager() {
11
+ const setValue = (0, mutable_1.useContextSetValue)(context_2.DataFormContext);
12
+ const dataFormContextValue = (0, context_1.useContextValue)(context_2.DataFormContext);
13
+ const _getIsControlHiddenByAttributeName = (0, react_1.useCallback)((attributeName) => {
14
+ return (0, utils_1.getIsControlHidden)({
15
+ control: dataFormContextValue.current.formInternal.controls.dict[attributeName],
16
+ hiddenControls: dataFormContextValue.current.hiddenControls,
17
+ });
18
+ }, [dataFormContextValue]);
19
+ const _getIsControlHiddenByKey = (0, react_1.useCallback)((key) => {
20
+ return (0, utils_1.getIsControlHidden)({
21
+ control: dataFormContextValue.current.formInternal.controls.dict[key],
22
+ hiddenControls: dataFormContextValue.current.hiddenControls,
23
+ });
24
+ }, [dataFormContextValue]);
25
+ const _setControlHiddenByKey = (0, react_1.useCallback)((key, state) => {
26
+ setValue((prev) => {
27
+ return {
28
+ hiddenControls: {
29
+ ...prev.hiddenControls,
30
+ [key]: state,
31
+ },
32
+ };
33
+ });
34
+ }, [setValue]);
35
+ const _resetControlHiddenByKey = (0, react_1.useCallback)((key) => {
36
+ setValue((prev) => {
37
+ const _hiddenControls = { ...prev.hiddenControls };
38
+ delete _hiddenControls[key];
39
+ return {
40
+ hiddenControls: _hiddenControls,
41
+ };
42
+ });
43
+ }, [setValue]);
44
+ return {
45
+ getIsControlHiddenByAttributeName: _getIsControlHiddenByAttributeName,
46
+ getIsControlHiddenByKey: _getIsControlHiddenByKey,
47
+ setControlHiddenByKey: _setControlHiddenByKey,
48
+ resetControlHiddenByKey: _resetControlHiddenByKey,
49
+ };
50
+ }
@@ -0,0 +1 @@
1
+ export declare function useIsControlDisabled(attributeName: string): boolean;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIsControlDisabled = useIsControlDisabled;
4
+ const mutable_1 = require("@headless-adminapp/app/mutable");
5
+ const context_1 = require("../context");
6
+ const utils_1 = require("../DataFormProvider/utils");
7
+ const useFormIsReadonly_1 = require("./useFormIsReadonly");
8
+ const useFormSchema_1 = require("./useFormSchema");
9
+ function useIsControlDisabled(attributeName) {
10
+ const disabledFields = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.disabledControls);
11
+ const controls = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.formInternal.controls.dict);
12
+ const isFormReadonly = (0, useFormIsReadonly_1.useFormIsReadonly)();
13
+ const schema = (0, useFormSchema_1.useDataFormSchema)();
14
+ const attribute = schema.attributes[attributeName];
15
+ if (!attribute) {
16
+ return true;
17
+ }
18
+ if (!controls[attributeName]) {
19
+ return true;
20
+ }
21
+ return (0, utils_1.getIsFieldDisabled)({
22
+ attribute,
23
+ control: controls[attributeName],
24
+ disabledFields: disabledFields,
25
+ isFormReadonly: isFormReadonly,
26
+ });
27
+ }
@@ -0,0 +1 @@
1
+ export declare function useIsControlHiddenByAttributeName(attributeName: string): boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIsControlHiddenByAttributeName = useIsControlHiddenByAttributeName;
4
+ const mutable_1 = require("@headless-adminapp/app/mutable");
5
+ const context_1 = require("../context");
6
+ const utils_1 = require("../DataFormProvider/utils");
7
+ function useIsControlHiddenByAttributeName(attributeName) {
8
+ const hiddenControls = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.hiddenControls);
9
+ const controls = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.formInternal.controls.dict);
10
+ if (!controls[attributeName]) {
11
+ return true;
12
+ }
13
+ return (0, utils_1.getIsControlHidden)({
14
+ control: controls[attributeName],
15
+ hiddenControls,
16
+ });
17
+ }
@@ -0,0 +1 @@
1
+ export declare function useIsControlHiddenByKey(key: string): boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIsControlHiddenByKey = useIsControlHiddenByKey;
4
+ const mutable_1 = require("@headless-adminapp/app/mutable");
5
+ const context_1 = require("../context");
6
+ const utils_1 = require("../DataFormProvider/utils");
7
+ function useIsControlHiddenByKey(key) {
8
+ const hiddenControls = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.hiddenControls);
9
+ const controls = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.formInternal.controls.dict);
10
+ if (!controls[key]) {
11
+ return true;
12
+ }
13
+ return (0, utils_1.getIsControlHidden)({
14
+ control: controls[key],
15
+ hiddenControls,
16
+ });
17
+ }
@@ -0,0 +1 @@
1
+ export declare function useIsFieldRequired(attributeName: string): boolean;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIsFieldRequired = useIsFieldRequired;
4
+ const mutable_1 = require("@headless-adminapp/app/mutable");
5
+ const context_1 = require("../context");
6
+ const utils_1 = require("../DataFormProvider/utils");
7
+ const useFormSchema_1 = require("./useFormSchema");
8
+ function useIsFieldRequired(attributeName) {
9
+ const requiredFields = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.requiredFields);
10
+ const controls = (0, mutable_1.useContextSelector)(context_1.DataFormContext, (state) => state.formInternal.controls.dict);
11
+ const schema = (0, useFormSchema_1.useDataFormSchema)();
12
+ const attribute = schema.attributes[attributeName];
13
+ const control = controls[attributeName];
14
+ if (!attribute) {
15
+ return false;
16
+ }
17
+ if (!control || control.type !== 'standard') {
18
+ return false;
19
+ }
20
+ return (0, utils_1.getIsFieldRequired)({
21
+ attribute,
22
+ control,
23
+ requiredFields: requiredFields,
24
+ });
25
+ }
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.useLoadFormGridPage = useLoadFormGridPage;
13
4
  const app_1 = require("@headless-adminapp/app/app");
@@ -18,21 +9,21 @@ function useLoadFormGridPage(logicalName, formId) {
18
9
  const experienceStore = (0, hooks_1.useExperienceStore)();
19
10
  const { data: form, isFetching: isFetchingForm } = (0, react_query_1.useQuery)({
20
11
  queryKey: ['experience-schema-form', logicalName, formId],
21
- queryFn: () => __awaiter(this, void 0, void 0, function* () {
12
+ queryFn: async () => {
22
13
  return experienceStore.getForm(logicalName, formId);
23
- }),
14
+ },
24
15
  placeholderData: react_query_1.keepPreviousData,
25
16
  });
26
- const { app: { formCommands }, } = (0, app_1.useAppContext)();
17
+ const { appExperience: { formCommands }, } = (0, app_1.useAppContext)();
27
18
  const { data: commands } = (0, react_query_1.useQuery)({
28
19
  queryKey: ['experience-schema-form-commands', logicalName],
29
- queryFn: () => __awaiter(this, void 0, void 0, function* () {
30
- let commands = yield experienceStore.getFormCommands(logicalName);
20
+ queryFn: async () => {
21
+ let commands = await experienceStore.getFormCommands(logicalName);
31
22
  if (!commands) {
32
23
  commands = formCommands;
33
24
  }
34
- return [];
35
- }),
25
+ return commands ?? [];
26
+ },
36
27
  initialData: [],
37
28
  });
38
29
  if (!schema) {
@@ -40,7 +31,7 @@ function useLoadFormGridPage(logicalName, formId) {
40
31
  loading: false,
41
32
  error: true,
42
33
  title: 'Schema not found',
43
- message: 'The schema was not found',
34
+ message: `The schema "${logicalName}" was not found`,
44
35
  };
45
36
  }
46
37
  if (!form) {
@@ -1,16 +1,5 @@
1
1
  import { EntityFormCommandContext } from '@headless-adminapp/core/experience/form';
2
2
  import { CommandItemState } from '../../command';
3
- export declare function useFormControlContext(): {
4
- data: any;
5
- logicalName: string;
6
- schema: import("@headless-adminapp/core/schema").Schema<import("@headless-adminapp/core/schema").SchemaAttributes>;
7
- form: import("@headless-adminapp/core/experience/form").Form<import("@headless-adminapp/core/schema").SchemaAttributes>;
8
- formId: string;
9
- originalData: import("@headless-adminapp/core/transport").Data<import("@headless-adminapp/core/schema").InferredSchemaType<import("@headless-adminapp/core/schema").SchemaAttributes>> | null;
10
- recordId: string | number;
11
- refresh: () => Promise<void>;
12
- save: (mode?: import("@headless-adminapp/core/experience/form").SaveMode) => Promise<void>;
13
- readonly: boolean | undefined;
14
- };
3
+ export declare function useFormControlContext(): EntityFormCommandContext['primaryControl'];
15
4
  export declare function useMainFormCommandHandlerContext(): EntityFormCommandContext;
16
5
  export declare function useMainFormCommands(): CommandItemState[][];
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useFormControlContext = useFormControlContext;
4
4
  exports.useMainFormCommandHandlerContext = useMainFormCommandHandlerContext;
5
5
  exports.useMainFormCommands = useMainFormCommands;
6
+ const route_1 = require("@headless-adminapp/app/route");
7
+ const react_1 = require("react");
6
8
  const command_1 = require("../../command");
7
9
  const context_1 = require("../../mutable/context");
8
10
  const context_2 = require("../context");
@@ -20,25 +22,33 @@ function useFormControlContext() {
20
22
  const save = (0, useFormSave_1.useFormSave)();
21
23
  const refresh = (0, context_1.useContextSelector)(context_2.DataFormContext, (state) => state.refresh);
22
24
  const formInstance = (0, useFormInstance_1.useFormInstance)();
23
- const readonly = (0, useFormIsReadonly_1.useFormIsReadonly)();
25
+ const readonly = (0, useFormIsReadonly_1.useFormIsReadonly)() ?? false;
24
26
  const data = formInstance.watch();
27
+ const router = (0, route_1.useRouter)();
28
+ const close = (0, react_1.useCallback)(() => {
29
+ router.back();
30
+ }, [router]);
25
31
  return {
26
32
  data,
27
33
  logicalName: schema.logicalName,
28
34
  schema,
29
35
  form,
30
36
  formId: form.id,
31
- originalData: originalData !== null && originalData !== void 0 ? originalData : null,
37
+ originalData: originalData ?? null,
32
38
  recordId,
33
39
  refresh,
34
40
  save,
35
41
  readonly,
42
+ close,
36
43
  };
37
44
  }
38
45
  function useMainFormCommandHandlerContext() {
39
46
  const primaryControl = useFormControlContext();
40
47
  const baseHandlerContext = (0, command_1.useBaseCommandHandlerContext)();
41
- return Object.assign(Object.assign({}, baseHandlerContext), { primaryControl });
48
+ return {
49
+ ...baseHandlerContext,
50
+ primaryControl,
51
+ };
42
52
  }
43
53
  function useMainFormCommands() {
44
54
  const commands = (0, context_1.useContextSelector)(context_2.DataFormContext, (state) => state.commands);
@@ -0,0 +1 @@
1
+ export declare function useOnFieldValueChangeListener(key: string, callback: (value: any) => any): void;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOnFieldValueChangeListener = useOnFieldValueChangeListener;
4
+ const react_1 = require("react");
5
+ const constants_1 = require("../constants");
6
+ const useEventManager_1 = require("./useEventManager");
7
+ function useOnFieldValueChangeListener(key, callback) {
8
+ const eventManager = (0, useEventManager_1.useEventManager)();
9
+ const callbackRef = (0, react_1.useRef)(callback);
10
+ callbackRef.current = callback;
11
+ (0, react_1.useEffect)(() => {
12
+ const listener = (_key, value) => {
13
+ const _path = _key.split('.');
14
+ const path = key.split('.');
15
+ if (_path.length !== path.length) {
16
+ return;
17
+ }
18
+ for (let i = 0; i < path.length; i++) {
19
+ if (path[i] !== _path[i]) {
20
+ return;
21
+ }
22
+ }
23
+ callbackRef.current(value);
24
+ };
25
+ eventManager.on(constants_1.EVENT_KEY_ON_FIELD_CHANGE, listener);
26
+ return () => {
27
+ eventManager.off(constants_1.EVENT_KEY_ON_FIELD_CHANGE, listener);
28
+ };
29
+ }, [key, callback, eventManager]);
30
+ }
@@ -0,0 +1 @@
1
+ export declare function useProcessFlowSteps(): import("@headless-adminapp/core/experience/form/ProcessFlowInfo").ProcessFlowStep[] | null | undefined;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useProcessFlowSteps = useProcessFlowSteps;
4
+ const command_1 = require("@headless-adminapp/app/command");
5
+ const context_1 = require("../../mutable/context");
6
+ const context_2 = require("../context");
7
+ const useFormInstance_1 = require("./useFormInstance");
8
+ const useFormIsReadonly_1 = require("./useFormIsReadonly");
9
+ const useFormRecord_1 = require("./useFormRecord");
10
+ const useFormSchema_1 = require("./useFormSchema");
11
+ const useRecordId_1 = require("./useRecordId");
12
+ const useSelectedForm_1 = require("./useSelectedForm");
13
+ function useFormControlContext() {
14
+ const schema = (0, useFormSchema_1.useDataFormSchema)();
15
+ const form = (0, context_1.useContextSelector)(context_2.DataFormContext, (state) => state.form);
16
+ const originalData = (0, useFormRecord_1.useFormRecord)();
17
+ const recordId = (0, useRecordId_1.useRecordId)();
18
+ const formInstance = (0, useFormInstance_1.useFormInstance)();
19
+ const readonly = (0, useFormIsReadonly_1.useFormIsReadonly)() ?? false;
20
+ const data = formInstance.watch();
21
+ return {
22
+ data,
23
+ logicalName: schema.logicalName,
24
+ schema,
25
+ form,
26
+ formId: form.id,
27
+ originalData: originalData ?? null,
28
+ recordId,
29
+ readonly,
30
+ };
31
+ }
32
+ function useProcessFlowInfoContext() {
33
+ const primaryControl = useFormControlContext();
34
+ const baseHandlerContext = (0, command_1.useBaseCommandHandlerContext)();
35
+ return {
36
+ ...baseHandlerContext,
37
+ primaryControl,
38
+ };
39
+ }
40
+ function useProcessFlowSteps() {
41
+ const formConfig = (0, useSelectedForm_1.useSelectedForm)();
42
+ const context = useProcessFlowInfoContext();
43
+ const steps = formConfig.experience.processFlow?.getSteps(context);
44
+ return steps;
45
+ }
@@ -1 +1,3 @@
1
- export declare function useRecordTitle(): string;
1
+ type UseRecordTitleResult = [string, boolean];
2
+ export declare function useRecordTitle(): UseRecordTitleResult;
3
+ export {};
@@ -5,16 +5,23 @@ const useFormInstance_1 = require("./useFormInstance");
5
5
  const useFormSchema_1 = require("./useFormSchema");
6
6
  const useRecordId_1 = require("./useRecordId");
7
7
  function useRecordTitle() {
8
- var _a;
9
8
  const formInstance = (0, useFormInstance_1.useFormInstance)();
10
9
  const schema = (0, useFormSchema_1.useDataFormSchema)();
11
10
  const recordId = (0, useRecordId_1.useRecordId)();
12
- const primaryAttributeValue = (_a = formInstance.watch(schema.primaryAttribute)) !== null && _a !== void 0 ? _a : '';
11
+ let primaryAttributeValue = formInstance.watch(schema.primaryAttribute);
12
+ const primaryAttribute = schema.attributes[schema.primaryAttribute];
13
+ if (primaryAttribute?.type === 'lookup') {
14
+ // Handle lookup attribute as primary
15
+ primaryAttributeValue = primaryAttributeValue?.name;
16
+ }
17
+ if (primaryAttributeValue && typeof primaryAttributeValue !== 'string') {
18
+ return [String(primaryAttributeValue), false];
19
+ }
13
20
  if (primaryAttributeValue) {
14
- return primaryAttributeValue;
21
+ return [primaryAttributeValue, false];
15
22
  }
16
23
  if (recordId) {
17
- return '(No name)';
24
+ return ['(No name)', true];
18
25
  }
19
- return `New ${schema.label.toLowerCase()}`;
26
+ return [`New ${schema.label.toLowerCase()}`, true];
20
27
  }
@@ -0,0 +1,6 @@
1
+ /*** @deprecated */
2
+ export declare function useRequiredFieldManager(): {
3
+ getIsFieldRequired: (attributeName: string) => boolean;
4
+ setFieldRequired: (attributeName: string, state: boolean) => void;
5
+ resetFieldRequired: (key: string) => void;
6
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRequiredFieldManager = useRequiredFieldManager;
4
+ const mutable_1 = require("@headless-adminapp/app/mutable");
5
+ const context_1 = require("@headless-adminapp/app/mutable/context");
6
+ const react_1 = require("react");
7
+ const context_2 = require("../context");
8
+ const utils_1 = require("../DataFormProvider/utils");
9
+ /*** @deprecated */
10
+ function useRequiredFieldManager() {
11
+ const setValue = (0, mutable_1.useContextSetValue)(context_2.DataFormContext);
12
+ const dataFormContextValue = (0, context_1.useContextValue)(context_2.DataFormContext);
13
+ const _getIsFieldRequired = (0, react_1.useCallback)((attributeName) => {
14
+ const attribute = dataFormContextValue.current.schema.attributes[attributeName];
15
+ const control = dataFormContextValue.current.formInternal.controls.dict[attributeName];
16
+ if (control.type !== 'standard') {
17
+ return false;
18
+ }
19
+ return (0, utils_1.getIsFieldRequired)({
20
+ attribute,
21
+ control,
22
+ requiredFields: dataFormContextValue.current.requiredFields,
23
+ });
24
+ }, [dataFormContextValue]);
25
+ const _setFieldRequired = (0, react_1.useCallback)((attributeName, state) => {
26
+ setValue((prev) => {
27
+ return {
28
+ requiredFields: {
29
+ ...prev.requiredFields,
30
+ [attributeName]: state,
31
+ },
32
+ };
33
+ });
34
+ }, [setValue]);
35
+ const _resetFieldRequired = (0, react_1.useCallback)((key) => {
36
+ setValue((prev) => {
37
+ const _requiredFields = { ...prev.requiredFields };
38
+ delete _requiredFields[key];
39
+ return {
40
+ requiredFields: _requiredFields,
41
+ };
42
+ });
43
+ }, [setValue]);
44
+ return {
45
+ getIsFieldRequired: _getIsFieldRequired,
46
+ setFieldRequired: _setFieldRequired,
47
+ resetFieldRequired: _resetFieldRequired,
48
+ };
49
+ }
@@ -0,0 +1,57 @@
1
+ import { Attribute } from '@headless-adminapp/core';
2
+ import { SectionControl } from '@headless-adminapp/core/experience/form/SectionControl';
3
+ import { SchemaAttributes } from '@headless-adminapp/core/schema';
4
+ import { ContextValue } from '../mutable';
5
+ import { DataFormContextState } from './context';
6
+ import { Section } from '@headless-adminapp/core/experience/form';
7
+ import { Tab } from '@headless-adminapp/core/experience/form/Tab';
8
+ export declare class FormUiManager<SA extends SchemaAttributes = SchemaAttributes> {
9
+ private readonly contextState;
10
+ constructor(contextState: ContextValue<DataFormContextState<SA>>);
11
+ private get context();
12
+ getAttribute(attributeName: keyof SA): FormAttribute<SA> | null;
13
+ getControl<C extends Control<SA>>(name: string): C | null;
14
+ getSection(name: string): FormSection<SA> | null;
15
+ getTab(name: string): FormTab<SA> | null;
16
+ }
17
+ declare class FormAttribute<SA extends SchemaAttributes = SchemaAttributes> {
18
+ private readonly contextState;
19
+ private readonly attributeName;
20
+ private readonly attribute;
21
+ constructor(contextState: ContextValue<DataFormContextState<SA>>, attributeName: keyof SA, attribute: Attribute);
22
+ getInnerAttribute(): Attribute;
23
+ setRequired(state: boolean): void;
24
+ getRequired(): boolean;
25
+ resetRequired(): void;
26
+ getControls(): Control<SA>[];
27
+ }
28
+ declare class Control<SA extends SchemaAttributes = SchemaAttributes> {
29
+ private readonly contextState;
30
+ private readonly control;
31
+ constructor(contextState: ContextValue<DataFormContextState<SA>>, control: SectionControl<SA>);
32
+ private get context();
33
+ getKey(): string | undefined;
34
+ getDisabled(): boolean;
35
+ setDisabled(state: boolean): void;
36
+ resetDisabled(): void;
37
+ getHidden(): boolean;
38
+ setHidden(state: boolean): void;
39
+ resetHidden(): void;
40
+ }
41
+ declare class FormSection<SA extends SchemaAttributes = SchemaAttributes> {
42
+ private readonly contextState;
43
+ private readonly section;
44
+ constructor(contextState: ContextValue<DataFormContextState<SA>>, section: Section<SA>);
45
+ setHidden(state: boolean): void;
46
+ getHidden(): boolean;
47
+ resetHidden(): void;
48
+ }
49
+ declare class FormTab<SA extends SchemaAttributes = SchemaAttributes> {
50
+ private readonly contextState;
51
+ private readonly tab;
52
+ constructor(contextState: ContextValue<DataFormContextState<SA>>, tab: Tab<SA>);
53
+ setHidden(state: boolean): void;
54
+ getHidden(): boolean;
55
+ resetHidden(): void;
56
+ }
57
+ export {};