@webiny/app-admin 6.3.0 → 6.4.0-beta.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 (908) hide show
  1. package/assets/icons/add-18px.js +20 -0
  2. package/assets/icons/add-18px.js.map +1 -0
  3. package/assets/icons/arrow_drop_down-24px.js +20 -0
  4. package/assets/icons/arrow_drop_down-24px.js.map +1 -0
  5. package/assets/icons/attach_file_black_24dp.js +20 -0
  6. package/assets/icons/attach_file_black_24dp.js.map +1 -0
  7. package/assets/icons/baseline-menu-24px.js +20 -0
  8. package/assets/icons/baseline-menu-24px.js.map +1 -0
  9. package/assets/icons/baseline-notification_important-24px.js +19 -0
  10. package/assets/icons/baseline-notification_important-24px.js.map +1 -0
  11. package/assets/icons/baseline-security-24px.js +19 -0
  12. package/assets/icons/baseline-security-24px.js.map +1 -0
  13. package/assets/icons/file_download.js +19 -0
  14. package/assets/icons/file_download.js.map +1 -0
  15. package/assets/icons/file_upload.js +19 -0
  16. package/assets/icons/file_upload.js.map +1 -0
  17. package/assets/icons/filter-24px.js +23 -0
  18. package/assets/icons/filter-24px.js.map +1 -0
  19. package/assets/icons/github-brands.js +19 -0
  20. package/assets/icons/github-brands.js.map +1 -0
  21. package/assets/icons/highlight-24px.js +19 -0
  22. package/assets/icons/highlight-24px.js.map +1 -0
  23. package/assets/icons/icon-community.js +18 -0
  24. package/assets/icons/icon-community.js.map +1 -0
  25. package/assets/icons/icon-documentation.js +18 -0
  26. package/assets/icons/icon-documentation.js.map +1 -0
  27. package/assets/icons/info.js +19 -0
  28. package/assets/icons/info.js.map +1 -0
  29. package/assets/icons/insert_drive_file-24px.js +19 -0
  30. package/assets/icons/insert_drive_file-24px.js.map +1 -0
  31. package/assets/icons/insert_photo-24px.js +19 -0
  32. package/assets/icons/insert_photo-24px.js.map +1 -0
  33. package/assets/icons/label-24px.js +19 -0
  34. package/assets/icons/label-24px.js.map +1 -0
  35. package/assets/icons/round-account_circle-24px.js +19 -0
  36. package/assets/icons/round-account_circle-24px.js.map +1 -0
  37. package/assets/icons/round-add-24px.js +20 -0
  38. package/assets/icons/round-add-24px.js.map +1 -0
  39. package/assets/icons/round-arrow_drop_down-24px.js +19 -0
  40. package/assets/icons/round-arrow_drop_down-24px.js.map +1 -0
  41. package/assets/icons/round-chevron_right-24px.js +20 -0
  42. package/assets/icons/round-chevron_right-24px.js.map +1 -0
  43. package/assets/icons/round-feedback-24px.js +20 -0
  44. package/assets/icons/round-feedback-24px.js.map +1 -0
  45. package/assets/icons/round-help-24px.js +19 -0
  46. package/assets/icons/round-help-24px.js.map +1 -0
  47. package/assets/icons/round-invert_colors-24px.js +20 -0
  48. package/assets/icons/round-invert_colors-24px.js.map +1 -0
  49. package/assets/icons/round-keyboard_arrow_down-24px.js +17 -0
  50. package/assets/icons/round-keyboard_arrow_down-24px.js.map +1 -0
  51. package/assets/icons/round-keyboard_arrow_up-24px.js +17 -0
  52. package/assets/icons/round-keyboard_arrow_up-24px.js.map +1 -0
  53. package/assets/icons/round-lock_open-24px.js +22 -0
  54. package/assets/icons/round-lock_open-24px.js.map +1 -0
  55. package/assets/icons/round-more_vert-24px.js +20 -0
  56. package/assets/icons/round-more_vert-24px.js.map +1 -0
  57. package/assets/icons/round-open_in_new-24px.js +20 -0
  58. package/assets/icons/round-open_in_new-24px.js.map +1 -0
  59. package/assets/icons/round-settings-24px.js +20 -0
  60. package/assets/icons/round-settings-24px.js.map +1 -0
  61. package/assets/icons/search-24px.js +21 -0
  62. package/assets/icons/search-24px.js.map +1 -0
  63. package/assets/icons/slack-logo.js +14 -0
  64. package/assets/icons/slack-logo.js.map +1 -0
  65. package/assets/icons/today-24px.js +19 -0
  66. package/assets/icons/today-24px.js.map +1 -0
  67. package/assets/icons/touch_app.js +20 -0
  68. package/assets/icons/touch_app.js.map +1 -0
  69. package/assets/images/webiny-logo.js +34 -0
  70. package/assets/images/webiny-logo.js.map +1 -0
  71. package/assets/images/webiny-orange-logo.js +34 -0
  72. package/assets/images/webiny-orange-logo.js.map +1 -0
  73. package/base/Admin.js +37 -28
  74. package/base/Admin.js.map +1 -1
  75. package/base/Base/DefaultFieldRenderers.js +73 -70
  76. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  77. package/base/Base/DefaultLayoutRenderers.js +9 -10
  78. package/base/Base/DefaultLayoutRenderers.js.map +1 -1
  79. package/base/Base/FieldRenderers/CheckboxesRenderer.js +22 -23
  80. package/base/Base/FieldRenderers/CheckboxesRenderer.js.map +1 -1
  81. package/base/Base/FieldRenderers/CodeEditorRenderer.js +10 -13
  82. package/base/Base/FieldRenderers/CodeEditorRenderer.js.map +1 -1
  83. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js +60 -60
  84. package/base/Base/FieldRenderers/DateTimeInputsRenderer.js.map +1 -1
  85. package/base/Base/FieldRenderers/DateTimeRenderer.js +38 -39
  86. package/base/Base/FieldRenderers/DateTimeRenderer.js.map +1 -1
  87. package/base/Base/FieldRenderers/FilePickerRenderer.d.ts +2 -1
  88. package/base/Base/FieldRenderers/FilePickerRenderer.js +37 -40
  89. package/base/Base/FieldRenderers/FilePickerRenderer.js.map +1 -1
  90. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js +15 -20
  91. package/base/Base/FieldRenderers/FileUrlPickerRenderer.js.map +1 -1
  92. package/base/Base/FieldRenderers/HiddenRenderer.js +3 -3
  93. package/base/Base/FieldRenderers/HiddenRenderer.js.map +1 -1
  94. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js +20 -21
  95. package/base/Base/FieldRenderers/HorizontalTabsRenderer.js.map +1 -1
  96. package/base/Base/FieldRenderers/InputRenderer.js +16 -20
  97. package/base/Base/FieldRenderers/InputRenderer.js.map +1 -1
  98. package/base/Base/FieldRenderers/MultiFilePickerRenderer.d.ts +13 -0
  99. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js +70 -0
  100. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js.map +1 -0
  101. package/base/Base/FieldRenderers/NumberInputRenderer.js +16 -19
  102. package/base/Base/FieldRenderers/NumberInputRenderer.js.map +1 -1
  103. package/base/Base/FieldRenderers/NumberInputsRenderer.js +45 -44
  104. package/base/Base/FieldRenderers/NumberInputsRenderer.js.map +1 -1
  105. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js +10 -13
  106. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js.map +1 -1
  107. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js +50 -56
  108. package/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js.map +1 -1
  109. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js +87 -99
  110. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js.map +1 -1
  111. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +41 -48
  112. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  113. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +1 -2
  114. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +62 -78
  115. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  116. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +12 -15
  117. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  118. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +48 -54
  119. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  120. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +62 -79
  121. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +1 -1
  122. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +14 -17
  123. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  124. package/base/Base/FieldRenderers/PassthroughRenderer.js +8 -11
  125. package/base/Base/FieldRenderers/PassthroughRenderer.js.map +1 -1
  126. package/base/Base/FieldRenderers/RadioButtonsRenderer.js +21 -22
  127. package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
  128. package/base/Base/FieldRenderers/SelectRenderer.js +23 -24
  129. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  130. package/base/Base/FieldRenderers/SwitchRenderer.js +12 -15
  131. package/base/Base/FieldRenderers/SwitchRenderer.js.map +1 -1
  132. package/base/Base/FieldRenderers/TagsRenderer.js +15 -16
  133. package/base/Base/FieldRenderers/TagsRenderer.js.map +1 -1
  134. package/base/Base/FieldRenderers/TextInputsRenderer.js +44 -43
  135. package/base/Base/FieldRenderers/TextInputsRenderer.js.map +1 -1
  136. package/base/Base/FieldRenderers/TextareaRenderer.js +17 -21
  137. package/base/Base/FieldRenderers/TextareaRenderer.js.map +1 -1
  138. package/base/Base/FieldRenderers/TextareasRenderer.js +47 -46
  139. package/base/Base/FieldRenderers/TextareasRenderer.js.map +1 -1
  140. package/base/Base/FieldRenderers/VerticalTabsRenderer.js +35 -36
  141. package/base/Base/FieldRenderers/VerticalTabsRenderer.js.map +1 -1
  142. package/base/Base/LexicalPreset.js +56 -60
  143. package/base/Base/LexicalPreset.js.map +1 -1
  144. package/base/Base/Menus/SupportMenuItems.js +9 -13
  145. package/base/Base/Menus/SupportMenuItems.js.map +1 -1
  146. package/base/Base/Menus/WebinyVersion.js +19 -20
  147. package/base/Base/Menus/WebinyVersion.js.map +1 -1
  148. package/base/Base/Menus.js +52 -66
  149. package/base/Base/Menus.js.map +1 -1
  150. package/base/Base/RoutesConfig.js +21 -29
  151. package/base/Base/RoutesConfig.js.map +1 -1
  152. package/base/Base/Tenant/wby-horizontal.js +33 -0
  153. package/base/Base/Tenant/wby-horizontal.js.map +1 -0
  154. package/base/Base/Tenant/wby-square.js +20 -0
  155. package/base/Base/Tenant/wby-square.js.map +1 -0
  156. package/base/Base/Tenant.js +17 -19
  157. package/base/Base/Tenant.js.map +1 -1
  158. package/base/Base/UserMenu/ExitTenant.js +18 -29
  159. package/base/Base/UserMenu/ExitTenant.js.map +1 -1
  160. package/base/Base/UserMenu/SignOut.js +13 -14
  161. package/base/Base/UserMenu/SignOut.js.map +1 -1
  162. package/base/Base/UserMenu/UserInfo.js +23 -36
  163. package/base/Base/UserMenu/UserInfo.js.map +1 -1
  164. package/base/Base/UserMenu.js +12 -13
  165. package/base/Base/UserMenu.js.map +1 -1
  166. package/base/Base.js +4 -5
  167. package/base/Base.js.map +1 -1
  168. package/base/TelemetryAdminAppStart.js +9 -12
  169. package/base/TelemetryAdminAppStart.js.map +1 -1
  170. package/base/WebinyVersion.js +19 -20
  171. package/base/WebinyVersion.js.map +1 -1
  172. package/base/createRootContainer.js +42 -40
  173. package/base/createRootContainer.js.map +1 -1
  174. package/base/plugins/AddGraphQLQuerySelection.js +12 -11
  175. package/base/plugins/AddGraphQLQuerySelection.js.map +1 -1
  176. package/base/providers/AdminUiStateProvider.js +5 -10
  177. package/base/providers/AdminUiStateProvider.js.map +1 -1
  178. package/base/providers/ApolloProvider.js +8 -11
  179. package/base/providers/ApolloProvider.js.map +1 -1
  180. package/base/providers/UiProviders.js +18 -27
  181. package/base/providers/UiProviders.js.map +1 -1
  182. package/base/providers/UiStateProvider.js +5 -10
  183. package/base/providers/UiStateProvider.js.map +1 -1
  184. package/base/ui/Brand.js +4 -5
  185. package/base/ui/Brand.js.map +1 -1
  186. package/base/ui/CenteredView.d.ts +1 -1
  187. package/base/ui/CenteredView.js +9 -13
  188. package/base/ui/CenteredView.js.map +1 -1
  189. package/base/ui/Dashboard.js +4 -5
  190. package/base/ui/Dashboard.js.map +1 -1
  191. package/base/ui/FileManager.js +38 -60
  192. package/base/ui/FileManager.js.map +1 -1
  193. package/base/ui/Layout.js +4 -8
  194. package/base/ui/Layout.js.map +1 -1
  195. package/base/ui/LoginScreen.js +16 -21
  196. package/base/ui/LoginScreen.js.map +1 -1
  197. package/base/ui/Logo.js +4 -5
  198. package/base/ui/Logo.js.map +1 -1
  199. package/base/ui/Navigation.js +11 -14
  200. package/base/ui/Navigation.js.map +1 -1
  201. package/base/ui/NotFound.js +4 -5
  202. package/base/ui/NotFound.js.map +1 -1
  203. package/base/ui/Tags.js +12 -16
  204. package/base/ui/Tags.js.map +1 -1
  205. package/base/ui/TenantSelector.js +4 -5
  206. package/base/ui/TenantSelector.js.map +1 -1
  207. package/base/ui/UserMenu/UserMenu.js +4 -5
  208. package/base/ui/UserMenu/UserMenu.js.map +1 -1
  209. package/base/ui/UserMenu/UserMenuHandle.js +4 -5
  210. package/base/ui/UserMenu/UserMenuHandle.js.map +1 -1
  211. package/base/ui/UserMenu/UserMenuItem.d.ts +4 -4
  212. package/base/ui/UserMenu/UserMenuItem.js +5 -15
  213. package/base/ui/UserMenu/UserMenuItem.js.map +1 -1
  214. package/base/ui/UserMenu/UserMenuLink.d.ts +4 -4
  215. package/base/ui/UserMenu/UserMenuLink.js +5 -15
  216. package/base/ui/UserMenu/UserMenuLink.js.map +1 -1
  217. package/base/ui/UserMenu/UserMenuSeparator.d.ts +2 -2
  218. package/base/ui/UserMenu/UserMenuSeparator.js +3 -5
  219. package/base/ui/UserMenu/UserMenuSeparator.js.map +1 -1
  220. package/base/ui/UserMenu.js +6 -13
  221. package/base/ui/UserMenu.js.map +1 -1
  222. package/components/AdminLayout.js +6 -10
  223. package/components/AdminLayout.js.map +1 -1
  224. package/components/BulkActions/Worker.js +57 -120
  225. package/components/BulkActions/Worker.js.map +1 -1
  226. package/components/BulkActions/index.js +0 -2
  227. package/components/BulkActions/useDialogWithReport/DialogMessage.js +17 -21
  228. package/components/BulkActions/useDialogWithReport/DialogMessage.js.map +1 -1
  229. package/components/BulkActions/useDialogWithReport/index.js +0 -2
  230. package/components/BulkActions/useDialogWithReport/useDialogWithReport.js +33 -44
  231. package/components/BulkActions/useDialogWithReport/useDialogWithReport.js.map +1 -1
  232. package/components/Buttons/Buttons.js +44 -71
  233. package/components/Buttons/Buttons.js.map +1 -1
  234. package/components/Buttons/Buttons.styles.js +9 -15
  235. package/components/Buttons/Buttons.styles.js.map +1 -1
  236. package/components/Buttons/index.js +1 -3
  237. package/components/Buttons/useButtons.js +15 -20
  238. package/components/Buttons/useButtons.js.map +1 -1
  239. package/components/DeveloperMode/DeveloperMode.js +5 -14
  240. package/components/DeveloperMode/DeveloperMode.js.map +1 -1
  241. package/components/DeveloperMode/index.js +0 -2
  242. package/components/Dialogs/Dialog.d.ts +2 -2
  243. package/components/Dialogs/Dialog.js +46 -59
  244. package/components/Dialogs/Dialog.js.map +1 -1
  245. package/components/Dialogs/DialogParamsContext.js +6 -7
  246. package/components/Dialogs/DialogParamsContext.js.map +1 -1
  247. package/components/Dialogs/DialogsContext.d.ts +2 -2
  248. package/components/Dialogs/DialogsContext.js +129 -149
  249. package/components/Dialogs/DialogsContext.js.map +1 -1
  250. package/components/Dialogs/useDialogs.js +5 -6
  251. package/components/Dialogs/useDialogs.js.map +1 -1
  252. package/components/EmptyView.js +26 -31
  253. package/components/EmptyView.js.map +1 -1
  254. package/components/Filters/Filters.js +15 -16
  255. package/components/Filters/Filters.js.map +1 -1
  256. package/components/Filters/FiltersToggle.js +18 -23
  257. package/components/Filters/FiltersToggle.js.map +1 -1
  258. package/components/Filters/index.js +0 -2
  259. package/components/FloatingActionButton.js +13 -15
  260. package/components/FloatingActionButton.js.map +1 -1
  261. package/components/IconPicker/IconPicker.js +24 -26
  262. package/components/IconPicker/IconPicker.js.map +1 -1
  263. package/components/IconPicker/IconPickerComponent.js +56 -72
  264. package/components/IconPicker/IconPickerComponent.js.map +1 -1
  265. package/components/IconPicker/IconPickerPresenter.js +64 -70
  266. package/components/IconPicker/IconPickerPresenter.js.map +1 -1
  267. package/components/IconPicker/IconPickerPresenter.test.js +79 -105
  268. package/components/IconPicker/IconPickerPresenter.test.js.map +1 -1
  269. package/components/IconPicker/IconPickerPresenterProvider.js +10 -16
  270. package/components/IconPicker/IconPickerPresenterProvider.js.map +1 -1
  271. package/components/IconPicker/IconPickerTab.js +97 -140
  272. package/components/IconPicker/IconPickerTab.js.map +1 -1
  273. package/components/IconPicker/IconRenderer.js +15 -23
  274. package/components/IconPicker/IconRenderer.js.map +1 -1
  275. package/components/IconPicker/IconRepository.js +41 -40
  276. package/components/IconPicker/IconRepository.js.map +1 -1
  277. package/components/IconPicker/IconRepository.test.js +56 -63
  278. package/components/IconPicker/IconRepository.test.js.map +1 -1
  279. package/components/IconPicker/IconRepositoryFactory.js +15 -11
  280. package/components/IconPicker/IconRepositoryFactory.js.map +1 -1
  281. package/components/IconPicker/Loading.js +47 -46
  282. package/components/IconPicker/Loading.js.map +1 -1
  283. package/components/IconPicker/components/IconPickerCell.js +18 -20
  284. package/components/IconPicker/components/IconPickerCell.js.map +1 -1
  285. package/components/IconPicker/components/IconPickerContent.js +27 -35
  286. package/components/IconPicker/components/IconPickerContent.js.map +1 -1
  287. package/components/IconPicker/components/IconPickerRow.js +5 -10
  288. package/components/IconPicker/components/IconPickerRow.js.map +1 -1
  289. package/components/IconPicker/components/IconPickerTrigger.js +42 -44
  290. package/components/IconPicker/components/IconPickerTrigger.js.map +1 -1
  291. package/components/IconPicker/components/index.js +0 -2
  292. package/components/IconPicker/config/Emojis.js +19 -21
  293. package/components/IconPicker/config/Emojis.js.map +1 -1
  294. package/components/IconPicker/config/FontAwesomeIcons.js +54 -58
  295. package/components/IconPicker/config/FontAwesomeIcons.js.map +1 -1
  296. package/components/IconPicker/config/IconPackProvider.js +17 -19
  297. package/components/IconPicker/config/IconPackProvider.js.map +1 -1
  298. package/components/IconPicker/config/IconType.js +48 -80
  299. package/components/IconPicker/config/IconType.js.map +1 -1
  300. package/components/IconPicker/config/index.js +28 -31
  301. package/components/IconPicker/config/index.js.map +1 -1
  302. package/components/IconPicker/defaultIcon.js +6 -5
  303. package/components/IconPicker/defaultIcon.js.map +1 -1
  304. package/components/IconPicker/index.js +0 -2
  305. package/components/IconPicker/plugins/customPlugin.js +87 -110
  306. package/components/IconPicker/plugins/customPlugin.js.map +1 -1
  307. package/components/IconPicker/plugins/emojisPlugin.js +90 -115
  308. package/components/IconPicker/plugins/emojisPlugin.js.map +1 -1
  309. package/components/IconPicker/plugins/graphql.js +3 -8
  310. package/components/IconPicker/plugins/graphql.js.map +1 -1
  311. package/components/IconPicker/plugins/iconsPlugin.js +73 -104
  312. package/components/IconPicker/plugins/iconsPlugin.js.map +1 -1
  313. package/components/IconPicker/types.js +4 -7
  314. package/components/IconPicker/types.js.map +1 -1
  315. package/components/LexicalEditor/LexicalEditor.js +40 -38
  316. package/components/LexicalEditor/LexicalEditor.js.map +1 -1
  317. package/components/LexicalEditor/LexicalLinkForm.js +80 -86
  318. package/components/LexicalEditor/LexicalLinkForm.js.map +1 -1
  319. package/components/LexicalEditor/index.js +0 -2
  320. package/components/LexicalEditor/lexicalValueFromHtml.js +21 -28
  321. package/components/LexicalEditor/lexicalValueFromHtml.js.map +1 -1
  322. package/components/LexicalEditor/lexicalValueWithHtml.js +24 -30
  323. package/components/LexicalEditor/lexicalValueWithHtml.js.map +1 -1
  324. package/components/MultiImageUpload.js +4 -13
  325. package/components/MultiImageUpload.js.map +1 -1
  326. package/components/NotAuthorizedError/NotAuthorizedError.js +16 -17
  327. package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
  328. package/components/NotAuthorizedError/SecureRouteError.js +297 -0
  329. package/components/NotAuthorizedError/SecureRouteError.js.map +1 -0
  330. package/components/NotAuthorizedError/index.js +0 -2
  331. package/components/OptionsMenu/OptionsMenu.js +20 -19
  332. package/components/OptionsMenu/OptionsMenu.js.map +1 -1
  333. package/components/OptionsMenu/OptionsMenuItem.js +15 -14
  334. package/components/OptionsMenu/OptionsMenuItem.js.map +1 -1
  335. package/components/OptionsMenu/OptionsMenuLink.js +13 -14
  336. package/components/OptionsMenu/OptionsMenuLink.js.map +1 -1
  337. package/components/OptionsMenu/index.js +0 -2
  338. package/components/OptionsMenu/useOptionsMenuItem.js +13 -18
  339. package/components/OptionsMenu/useOptionsMenuItem.js.map +1 -1
  340. package/components/OverlayLayout/OverlayLayout.js +35 -38
  341. package/components/OverlayLayout/OverlayLayout.js.map +1 -1
  342. package/components/OverlayLayout/components/OverlayBackdrop.js +6 -11
  343. package/components/OverlayLayout/components/OverlayBackdrop.js.map +1 -1
  344. package/components/OverlayLayout/components/OverlayContent.js +18 -17
  345. package/components/OverlayLayout/components/OverlayContent.js.map +1 -1
  346. package/components/OverlayLayout/components/OverlayHeader.js +30 -37
  347. package/components/OverlayLayout/components/OverlayHeader.js.map +1 -1
  348. package/components/OverlayLayout/components/OverlayRoot.js +13 -17
  349. package/components/OverlayLayout/components/OverlayRoot.js.map +1 -1
  350. package/components/OverlayLayout/components/index.js +0 -2
  351. package/components/OverlayLayout/index.js +0 -2
  352. package/components/Permissions/CannotUseAaclAlert.js +10 -11
  353. package/components/Permissions/CannotUseAaclAlert.js.map +1 -1
  354. package/components/Permissions/Permissions.js +32 -41
  355. package/components/Permissions/Permissions.js.map +1 -1
  356. package/components/Permissions/PermissionsGroup.js +9 -15
  357. package/components/Permissions/PermissionsGroup.js.map +1 -1
  358. package/components/Permissions/StyledComponents.js +9 -16
  359. package/components/Permissions/StyledComponents.js.map +1 -1
  360. package/components/Permissions/index.js +1 -3
  361. package/components/RegisterFeature.js +14 -21
  362. package/components/RegisterFeature.js.map +1 -1
  363. package/components/ResizablePanels/index.js +0 -2
  364. package/components/RoleAutocomplete/graphql.js +3 -2
  365. package/components/RoleAutocomplete/graphql.js.map +1 -1
  366. package/components/RoleAutocomplete/index.d.ts +5 -3
  367. package/components/RoleAutocomplete/index.js +21 -13
  368. package/components/RoleAutocomplete/index.js.map +1 -1
  369. package/components/RolesMultiAutocomplete/graphql.js +3 -2
  370. package/components/RolesMultiAutocomplete/graphql.js.map +1 -1
  371. package/components/RolesMultiAutocomplete/index.d.ts +5 -3
  372. package/components/RolesMultiAutocomplete/index.js +21 -14
  373. package/components/RolesMultiAutocomplete/index.js.map +1 -1
  374. package/components/SearchUI.js +18 -25
  375. package/components/SearchUI.js.map +1 -1
  376. package/components/SimpleForm/SimpleForm.d.ts +1 -1
  377. package/components/SimpleForm/SimpleForm.js +54 -73
  378. package/components/SimpleForm/SimpleForm.js.map +1 -1
  379. package/components/SimpleForm/index.js +1 -3
  380. package/components/SimpleUI/InputField.js +71 -64
  381. package/components/SimpleUI/InputField.js.map +1 -1
  382. package/components/SingleImageUpload.d.ts +2 -2
  383. package/components/SingleImageUpload.js +37 -58
  384. package/components/SingleImageUpload.js.map +1 -1
  385. package/components/SplitView/SplitView.js +47 -57
  386. package/components/SplitView/SplitView.js.map +1 -1
  387. package/components/SplitView/index.js +1 -3
  388. package/components/TeamAutocomplete/graphql.js +3 -2
  389. package/components/TeamAutocomplete/graphql.js.map +1 -1
  390. package/components/TeamAutocomplete/index.d.ts +5 -3
  391. package/components/TeamAutocomplete/index.js +21 -13
  392. package/components/TeamAutocomplete/index.js.map +1 -1
  393. package/components/TeamsMultiAutocomplete/graphql.js +3 -2
  394. package/components/TeamsMultiAutocomplete/graphql.js.map +1 -1
  395. package/components/TeamsMultiAutocomplete/index.d.ts +5 -3
  396. package/components/TeamsMultiAutocomplete/index.js +21 -14
  397. package/components/TeamsMultiAutocomplete/index.js.map +1 -1
  398. package/components/Wcp.js +27 -38
  399. package/components/Wcp.js.map +1 -1
  400. package/components/index.js +10 -13
  401. package/config/AdminConfig/Dashboard.js +3 -2
  402. package/config/AdminConfig/Dashboard.js.map +1 -1
  403. package/config/AdminConfig/Dialog.js +15 -17
  404. package/config/AdminConfig/Dialog.js.map +1 -1
  405. package/config/AdminConfig/FieldRenderer.js +15 -17
  406. package/config/AdminConfig/FieldRenderer.js.map +1 -1
  407. package/config/AdminConfig/Form.js +4 -3
  408. package/config/AdminConfig/Form.js.map +1 -1
  409. package/config/AdminConfig/LayoutRenderer.js +15 -17
  410. package/config/AdminConfig/LayoutRenderer.js.map +1 -1
  411. package/config/AdminConfig/LexicalTheme/Color.js +34 -41
  412. package/config/AdminConfig/LexicalTheme/Color.js.map +1 -1
  413. package/config/AdminConfig/LexicalTheme/Typography.js +61 -74
  414. package/config/AdminConfig/LexicalTheme/Typography.js.map +1 -1
  415. package/config/AdminConfig/LexicalTheme.js +4 -3
  416. package/config/AdminConfig/LexicalTheme.js.map +1 -1
  417. package/config/AdminConfig/Logo.d.ts +1 -1
  418. package/config/AdminConfig/Logo.js +15 -17
  419. package/config/AdminConfig/Logo.js.map +1 -1
  420. package/config/AdminConfig/Menu/MenuGroup.d.ts +3 -3
  421. package/config/AdminConfig/Menu/MenuGroup.js +7 -9
  422. package/config/AdminConfig/Menu/MenuGroup.js.map +1 -1
  423. package/config/AdminConfig/Menu/MenuItem.d.ts +2 -2
  424. package/config/AdminConfig/Menu/MenuItem.js +5 -7
  425. package/config/AdminConfig/Menu/MenuItem.js.map +1 -1
  426. package/config/AdminConfig/Menu/MenuLink.d.ts +2 -2
  427. package/config/AdminConfig/Menu/MenuLink.js +12 -15
  428. package/config/AdminConfig/Menu/MenuLink.js.map +1 -1
  429. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.d.ts +2 -2
  430. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.js +6 -8
  431. package/config/AdminConfig/Menu/SupportMenu/SupportMenuItem.js.map +1 -1
  432. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.d.ts +1 -1
  433. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.js +4 -6
  434. package/config/AdminConfig/Menu/SupportMenu/SupportMenuLink.js.map +1 -1
  435. package/config/AdminConfig/Menu/SupportMenu.d.ts +3 -3
  436. package/config/AdminConfig/Menu/SupportMenu.js +30 -41
  437. package/config/AdminConfig/Menu/SupportMenu.js.map +1 -1
  438. package/config/AdminConfig/Menu/UserMenu/UserMenuItem.js +4 -4
  439. package/config/AdminConfig/Menu/UserMenu/UserMenuItem.js.map +1 -1
  440. package/config/AdminConfig/Menu/UserMenu/UserMenuLink.js +4 -4
  441. package/config/AdminConfig/Menu/UserMenu/UserMenuLink.js.map +1 -1
  442. package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.js +0 -2
  443. package/config/AdminConfig/Menu/UserMenu/types.js +0 -3
  444. package/config/AdminConfig/Menu/UserMenu.d.ts +31 -31
  445. package/config/AdminConfig/Menu/UserMenu.js +39 -52
  446. package/config/AdminConfig/Menu/UserMenu.js.map +1 -1
  447. package/config/AdminConfig/Menu/types.js +0 -3
  448. package/config/AdminConfig/Menu.d.ts +42 -42
  449. package/config/AdminConfig/Menu.js +57 -73
  450. package/config/AdminConfig/Menu.js.map +1 -1
  451. package/config/AdminConfig/Route.js +4 -5
  452. package/config/AdminConfig/Route.js.map +1 -1
  453. package/config/AdminConfig/Security.js +3 -2
  454. package/config/AdminConfig/Security.js.map +1 -1
  455. package/config/AdminConfig/SecurityPermissions.js +20 -27
  456. package/config/AdminConfig/SecurityPermissions.js.map +1 -1
  457. package/config/AdminConfig/Tenant/TenantLogo.d.ts +1 -1
  458. package/config/AdminConfig/Tenant/TenantLogo.js +18 -20
  459. package/config/AdminConfig/Tenant/TenantLogo.js.map +1 -1
  460. package/config/AdminConfig/Tenant/TenantName.d.ts +1 -1
  461. package/config/AdminConfig/Tenant/TenantName.js +14 -15
  462. package/config/AdminConfig/Tenant/TenantName.js.map +1 -1
  463. package/config/AdminConfig/Tenant.js +6 -9
  464. package/config/AdminConfig/Tenant.js.map +1 -1
  465. package/config/AdminConfig/Theme/assignColor.js +51 -18
  466. package/config/AdminConfig/Theme/assignColor.js.map +1 -1
  467. package/config/AdminConfig/Theme/consts.js +20 -2
  468. package/config/AdminConfig/Theme/consts.js.map +1 -1
  469. package/config/AdminConfig/Theme/types.js +0 -3
  470. package/config/AdminConfig/Theme.js +8 -15
  471. package/config/AdminConfig/Theme.js.map +1 -1
  472. package/config/AdminConfig/Title.d.ts +1 -1
  473. package/config/AdminConfig/Title.js +11 -12
  474. package/config/AdminConfig/Title.js.map +1 -1
  475. package/config/AdminConfig/Widget.js +24 -31
  476. package/config/AdminConfig/Widget.js.map +1 -1
  477. package/config/AdminConfig.js +47 -59
  478. package/config/AdminConfig.js.map +1 -1
  479. package/config/createAdminConfig.js +55 -86
  480. package/config/createAdminConfig.js.map +1 -1
  481. package/domain/Identity.js +78 -88
  482. package/domain/Identity.js.map +1 -1
  483. package/errors/ErrorOverlayNetworkErrorHandler.js +37 -52
  484. package/errors/ErrorOverlayNetworkErrorHandler.js.map +1 -1
  485. package/errors/TenantIsDisabled.js +19 -20
  486. package/errors/TenantIsDisabled.js.map +1 -1
  487. package/exports/admin/build-params.js +0 -5
  488. package/exports/admin/configs.js +0 -2
  489. package/exports/admin/form.js +3 -18
  490. package/exports/admin/security.js +1 -7
  491. package/exports/admin/tenancy.js +0 -2
  492. package/exports/admin/ui.js +1 -4
  493. package/exports/admin.js +1 -4
  494. package/features/apolloClient/abstraction.js +2 -1
  495. package/features/apolloClient/abstraction.js.map +1 -1
  496. package/features/apolloClient/feature.js +22 -30
  497. package/features/apolloClient/feature.js.map +1 -1
  498. package/features/buildParams/BuildParams.js +20 -14
  499. package/features/buildParams/BuildParams.js.map +1 -1
  500. package/features/buildParams/abstractions.js +3 -2
  501. package/features/buildParams/abstractions.js.map +1 -1
  502. package/features/buildParams/feature.js +11 -10
  503. package/features/buildParams/feature.js.map +1 -1
  504. package/features/buildParams/index.js +0 -2
  505. package/features/formModel/ConditionRuleEvaluator.js +39 -46
  506. package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
  507. package/features/formModel/Field.d.ts +1 -0
  508. package/features/formModel/Field.js +334 -411
  509. package/features/formModel/Field.js.map +1 -1
  510. package/features/formModel/FieldBuilder.d.ts +2 -1
  511. package/features/formModel/FieldBuilder.js +148 -171
  512. package/features/formModel/FieldBuilder.js.map +1 -1
  513. package/features/formModel/FieldBuilder.test.js +217 -201
  514. package/features/formModel/FieldBuilder.test.js.map +1 -1
  515. package/features/formModel/FieldBuilderRegistry.js +23 -25
  516. package/features/formModel/FieldBuilderRegistry.js.map +1 -1
  517. package/features/formModel/FocusManager.js +69 -95
  518. package/features/formModel/FocusManager.js.map +1 -1
  519. package/features/formModel/FormErrors.d.ts +9 -0
  520. package/features/formModel/FormErrors.js +35 -0
  521. package/features/formModel/FormErrors.js.map +1 -0
  522. package/features/formModel/FormModel.d.ts +2 -0
  523. package/features/formModel/FormModel.js +391 -396
  524. package/features/formModel/FormModel.js.map +1 -1
  525. package/features/formModel/FormModel.test.js +3791 -3354
  526. package/features/formModel/FormModel.test.js.map +1 -1
  527. package/features/formModel/FormModelFactory.js +27 -17
  528. package/features/formModel/FormModelFactory.js.map +1 -1
  529. package/features/formModel/FormView.d.ts +2 -1
  530. package/features/formModel/FormView.js +168 -156
  531. package/features/formModel/FormView.js.map +1 -1
  532. package/features/formModel/LayoutBuilderFactory.js +300 -370
  533. package/features/formModel/LayoutBuilderFactory.js.map +1 -1
  534. package/features/formModel/LayoutMutator.js +118 -125
  535. package/features/formModel/LayoutMutator.js.map +1 -1
  536. package/features/formModel/LayoutResolver.js +174 -214
  537. package/features/formModel/LayoutResolver.js.map +1 -1
  538. package/features/formModel/ObjectField.js +524 -724
  539. package/features/formModel/ObjectField.js.map +1 -1
  540. package/features/formModel/PresenterErrors.d.ts +9 -0
  541. package/features/formModel/PresenterErrors.js +32 -0
  542. package/features/formModel/PresenterErrors.js.map +1 -0
  543. package/features/formModel/Rules.test.js +311 -276
  544. package/features/formModel/Rules.test.js.map +1 -1
  545. package/features/formModel/abstractions.d.ts +10 -0
  546. package/features/formModel/abstractions.js +5 -114
  547. package/features/formModel/abstractions.js.map +1 -1
  548. package/features/formModel/createFieldRenderer.js +33 -10
  549. package/features/formModel/createFieldRenderer.js.map +1 -1
  550. package/features/formModel/demo/FieldRenderersDemoPresenter.js +289 -220
  551. package/features/formModel/demo/FieldRenderersDemoPresenter.js.map +1 -1
  552. package/features/formModel/demo/FormModelDemo.js +191 -215
  553. package/features/formModel/demo/FormModelDemo.js.map +1 -1
  554. package/features/formModel/demo/FormModelDemoPresenter.js +132 -113
  555. package/features/formModel/demo/FormModelDemoPresenter.js.map +1 -1
  556. package/features/formModel/demo/FormModelPhase11Presenter.js +101 -98
  557. package/features/formModel/demo/FormModelPhase11Presenter.js.map +1 -1
  558. package/features/formModel/demo/FormModelPhase8c1Presenter.js +64 -57
  559. package/features/formModel/demo/FormModelPhase8c1Presenter.js.map +1 -1
  560. package/features/formModel/feature.js +23 -22
  561. package/features/formModel/feature.js.map +1 -1
  562. package/features/formModel/fieldTypes/BooleanFieldType.js +18 -15
  563. package/features/formModel/fieldTypes/BooleanFieldType.js.map +1 -1
  564. package/features/formModel/fieldTypes/DateTimeFieldType.js +218 -341
  565. package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
  566. package/features/formModel/fieldTypes/FileFieldType.d.ts +12 -1
  567. package/features/formModel/fieldTypes/FileFieldType.js +48 -12
  568. package/features/formModel/fieldTypes/FileFieldType.js.map +1 -1
  569. package/features/formModel/fieldTypes/FileUrlFieldType.js +15 -12
  570. package/features/formModel/fieldTypes/FileUrlFieldType.js.map +1 -1
  571. package/features/formModel/fieldTypes/NumberFieldType.js +19 -18
  572. package/features/formModel/fieldTypes/NumberFieldType.js.map +1 -1
  573. package/features/formModel/fieldTypes/ObjectFieldType.js +80 -94
  574. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  575. package/features/formModel/fieldTypes/TextFieldType.js +15 -12
  576. package/features/formModel/fieldTypes/TextFieldType.js.map +1 -1
  577. package/features/formModel/fieldTypes/index.js +7 -9
  578. package/features/formModel/index.d.ts +2 -0
  579. package/features/formModel/index.js +11 -29
  580. package/features/formModel/renderers.js +0 -4
  581. package/features/formModel/useFieldRenderers.js +10 -14
  582. package/features/formModel/useFieldRenderers.js.map +1 -1
  583. package/features/formModel/useLayoutRenderers.js +10 -14
  584. package/features/formModel/useLayoutRenderers.js.map +1 -1
  585. package/features/listCache/ListCache.d.ts +28 -0
  586. package/features/listCache/ListCache.js +48 -0
  587. package/features/listCache/ListCache.js.map +1 -0
  588. package/features/listCache/index.d.ts +2 -0
  589. package/features/listCache/index.js +1 -0
  590. package/features/security/AuthenticationContext/AuthenticationContext.js +27 -26
  591. package/features/security/AuthenticationContext/AuthenticationContext.js.map +1 -1
  592. package/features/security/AuthenticationContext/GraphQLClientDecorator.js +23 -22
  593. package/features/security/AuthenticationContext/GraphQLClientDecorator.js.map +1 -1
  594. package/features/security/AuthenticationContext/InternalIdTokenProvider.js +15 -12
  595. package/features/security/AuthenticationContext/InternalIdTokenProvider.js.map +1 -1
  596. package/features/security/AuthenticationContext/abstractions.js +3 -2
  597. package/features/security/AuthenticationContext/abstractions.js.map +1 -1
  598. package/features/security/AuthenticationContext/feature.js +15 -14
  599. package/features/security/AuthenticationContext/feature.js.map +1 -1
  600. package/features/security/AuthenticationContext/index.js +0 -2
  601. package/features/security/AuthenticationContext/types.js +0 -3
  602. package/features/security/IdentityContext/IdentityContext.js +18 -17
  603. package/features/security/IdentityContext/IdentityContext.js.map +1 -1
  604. package/features/security/IdentityContext/abstractions.js +2 -1
  605. package/features/security/IdentityContext/abstractions.js.map +1 -1
  606. package/features/security/IdentityContext/feature.js +13 -12
  607. package/features/security/IdentityContext/feature.js.map +1 -1
  608. package/features/security/IdentityContext/index.js +0 -2
  609. package/features/security/LogIn/IdentityMapper.js +8 -7
  610. package/features/security/LogIn/IdentityMapper.js.map +1 -1
  611. package/features/security/LogIn/LogInGateway.js +17 -19
  612. package/features/security/LogIn/LogInGateway.js.map +1 -1
  613. package/features/security/LogIn/LogInRepository.js +16 -14
  614. package/features/security/LogIn/LogInRepository.js.map +1 -1
  615. package/features/security/LogIn/LogInUseCase.js +23 -31
  616. package/features/security/LogIn/LogInUseCase.js.map +1 -1
  617. package/features/security/LogIn/abstractions.js +5 -16
  618. package/features/security/LogIn/abstractions.js.map +1 -1
  619. package/features/security/LogIn/createLoginMutation.js +2 -3
  620. package/features/security/LogIn/createLoginMutation.js.map +1 -1
  621. package/features/security/LogIn/feature.js +16 -15
  622. package/features/security/LogIn/feature.js.map +1 -1
  623. package/features/security/LogIn/index.js +0 -2
  624. package/features/security/LogOut/LogOutUseCase.js +18 -16
  625. package/features/security/LogOut/LogOutUseCase.js.map +1 -1
  626. package/features/security/LogOut/abstractions.js +2 -1
  627. package/features/security/LogOut/abstractions.js.map +1 -1
  628. package/features/security/LogOut/feature.js +12 -11
  629. package/features/security/LogOut/feature.js.map +1 -1
  630. package/features/security/LogOut/index.js +0 -2
  631. package/features/security/SecurityFeature.js +9 -8
  632. package/features/security/SecurityFeature.js.map +1 -1
  633. package/features/telemetry/TelemetryService.js +11 -12
  634. package/features/telemetry/TelemetryService.js.map +1 -1
  635. package/features/telemetry/abstractions.js +2 -1
  636. package/features/telemetry/abstractions.js.map +1 -1
  637. package/features/telemetry/feature.js +13 -12
  638. package/features/telemetry/feature.js.map +1 -1
  639. package/features/telemetry/index.js +0 -2
  640. package/features/tenancy/GraphQLClientDecorator.js +23 -20
  641. package/features/tenancy/GraphQLClientDecorator.js.map +1 -1
  642. package/features/tenancy/TenantContext.js +46 -50
  643. package/features/tenancy/TenantContext.js.map +1 -1
  644. package/features/tenancy/abstractions.js +2 -1
  645. package/features/tenancy/abstractions.js.map +1 -1
  646. package/features/tenancy/feature.js +25 -35
  647. package/features/tenancy/feature.js.map +1 -1
  648. package/features/tenancy/types.js +0 -3
  649. package/features/tools/LexicalContext/LexicalContext.js +20 -17
  650. package/features/tools/LexicalContext/LexicalContext.js.map +1 -1
  651. package/features/tools/LexicalContext/abstractions.js +2 -1
  652. package/features/tools/LexicalContext/abstractions.js.map +1 -1
  653. package/features/tools/LexicalContext/index.js +0 -2
  654. package/features/tools/ToolPipelineRunner.js +26 -24
  655. package/features/tools/ToolPipelineRunner.js.map +1 -1
  656. package/features/tools/ToolRegistry.js +32 -23
  657. package/features/tools/ToolRegistry.js.map +1 -1
  658. package/features/tools/abstractions.js +4 -3
  659. package/features/tools/abstractions.js.map +1 -1
  660. package/features/tools/feature.js +17 -16
  661. package/features/tools/feature.js.map +1 -1
  662. package/features/tools/index.js +1 -3
  663. package/features/wcp/ReactLicense.js +53 -52
  664. package/features/wcp/ReactLicense.js.map +1 -1
  665. package/features/wcp/WcpGateway.js +21 -20
  666. package/features/wcp/WcpGateway.js.map +1 -1
  667. package/features/wcp/WcpService.js +57 -67
  668. package/features/wcp/WcpService.js.map +1 -1
  669. package/features/wcp/abstractions.js +3 -2
  670. package/features/wcp/abstractions.js.map +1 -1
  671. package/features/wcp/feature.js +14 -13
  672. package/features/wcp/feature.js.map +1 -1
  673. package/features/wcp/types.js +0 -3
  674. package/features/webinySdk/WebinySdk.js +19 -18
  675. package/features/webinySdk/WebinySdk.js.map +1 -1
  676. package/features/webinySdk/abstractions.js +2 -5
  677. package/features/webinySdk/abstractions.js.map +1 -1
  678. package/features/webinySdk/feature.js +13 -12
  679. package/features/webinySdk/feature.js.map +1 -1
  680. package/features/webinySdk/index.js +0 -2
  681. package/hooks/index.js +0 -2
  682. package/hooks/useConfirmationDialog.d.ts +1 -1
  683. package/hooks/useConfirmationDialog.js +31 -38
  684. package/hooks/useConfirmationDialog.js.map +1 -1
  685. package/hooks/useDialog.js +14 -15
  686. package/hooks/useDialog.js.map +1 -1
  687. package/hooks/useHotkeys.js +52 -85
  688. package/hooks/useHotkeys.js.map +1 -1
  689. package/hooks/useIsMounted.js +12 -11
  690. package/hooks/useIsMounted.js.map +1 -1
  691. package/hooks/useKeyHandler.js +45 -53
  692. package/hooks/useKeyHandler.js.map +1 -1
  693. package/hooks/useModKey.js +20 -25
  694. package/hooks/useModKey.js.map +1 -1
  695. package/hooks/useOpenDialog.js +13 -13
  696. package/hooks/useOpenDialog.js.map +1 -1
  697. package/hooks/useShiftKey.d.ts +5 -1
  698. package/hooks/useShiftKey.js +38 -29
  699. package/hooks/useShiftKey.js.map +1 -1
  700. package/hooks/useSnackbar.d.ts +3 -0
  701. package/hooks/useSnackbar.js +26 -28
  702. package/hooks/useSnackbar.js.map +1 -1
  703. package/hooks/useStateIfMounted.js +14 -12
  704. package/hooks/useStateIfMounted.js.map +1 -1
  705. package/hooks/useStateWithCallback.js +18 -14
  706. package/hooks/useStateWithCallback.js.map +1 -1
  707. package/hooks/useToggler.js +12 -11
  708. package/hooks/useToggler.js.map +1 -1
  709. package/index.d.ts +4 -1
  710. package/index.js +15 -31
  711. package/package.json +26 -28
  712. package/permissions/PermissionRenderer.js +179 -193
  713. package/permissions/PermissionRenderer.js.map +1 -1
  714. package/permissions/PermissionValueContext.js +13 -20
  715. package/permissions/PermissionValueContext.js.map +1 -1
  716. package/permissions/createHasPermission.js +32 -40
  717. package/permissions/createHasPermission.js.map +1 -1
  718. package/permissions/createPermissionSchema.js +6 -5
  719. package/permissions/createPermissionSchema.js.map +1 -1
  720. package/permissions/createPermissions.js +125 -185
  721. package/permissions/createPermissions.js.map +1 -1
  722. package/permissions/createPermissions.test.js +190 -158
  723. package/permissions/createPermissions.test.js.map +1 -1
  724. package/permissions/index.js +2 -4
  725. package/permissions/types.js +0 -3
  726. package/permissions/usePermissionForm.js +133 -232
  727. package/permissions/usePermissionForm.js.map +1 -1
  728. package/permissions/usePermissions.js +6 -5
  729. package/permissions/usePermissions.js.map +1 -1
  730. package/plugins/MenuPlugin.js +15 -14
  731. package/plugins/MenuPlugin.js.map +1 -1
  732. package/presentation/buildParams/useBuildParams.js +2 -3
  733. package/presentation/buildParams/useBuildParams.js.map +1 -1
  734. package/presentation/installation/components/SystemInstaller/SystemInstaller.js +46 -53
  735. package/presentation/installation/components/SystemInstaller/SystemInstaller.js.map +1 -1
  736. package/presentation/installation/components/SystemInstaller/SystemInstallerProvider.js +9 -14
  737. package/presentation/installation/components/SystemInstaller/SystemInstallerProvider.js.map +1 -1
  738. package/presentation/installation/components/SystemInstaller/index.js +0 -2
  739. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +14 -29
  740. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +1 -1
  741. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +11 -10
  742. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +1 -1
  743. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +60 -60
  744. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
  745. package/presentation/installation/components/SystemInstaller/steps/BasicInfoStep.js +75 -85
  746. package/presentation/installation/components/SystemInstaller/steps/BasicInfoStep.js.map +1 -1
  747. package/presentation/installation/components/SystemInstaller/steps/Center.js +5 -8
  748. package/presentation/installation/components/SystemInstaller/steps/Center.js.map +1 -1
  749. package/presentation/installation/components/SystemInstaller/steps/Container.js +18 -24
  750. package/presentation/installation/components/SystemInstaller/steps/Container.js.map +1 -1
  751. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js +48 -53
  752. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js.map +1 -1
  753. package/presentation/installation/components/SystemInstaller/steps/IntroductionStep.js +13 -16
  754. package/presentation/installation/components/SystemInstaller/steps/IntroductionStep.js.map +1 -1
  755. package/presentation/installation/components/SystemInstaller/steps/introduction.js +723 -0
  756. package/presentation/installation/components/SystemInstaller/steps/introduction.js.map +1 -0
  757. package/presentation/installation/components/SystemInstaller/steps/referralSources.js +14 -1
  758. package/presentation/installation/components/SystemInstaller/steps/referralSources.js.map +1 -1
  759. package/presentation/installation/presenters/SystemInstaller/SystemInstallerGateway.js +27 -28
  760. package/presentation/installation/presenters/SystemInstaller/SystemInstallerGateway.js.map +1 -1
  761. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js +117 -124
  762. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
  763. package/presentation/installation/presenters/SystemInstaller/SystemInstallerRepository.js +23 -21
  764. package/presentation/installation/presenters/SystemInstaller/SystemInstallerRepository.js.map +1 -1
  765. package/presentation/installation/presenters/SystemInstaller/abstractions.js +4 -3
  766. package/presentation/installation/presenters/SystemInstaller/abstractions.js.map +1 -1
  767. package/presentation/installation/presenters/SystemInstaller/feature.js +15 -14
  768. package/presentation/installation/presenters/SystemInstaller/feature.js.map +1 -1
  769. package/presentation/installation/presenters/SystemInstaller/index.js +0 -2
  770. package/presentation/lexicalContext/useLexicalContext.js +11 -8
  771. package/presentation/lexicalContext/useLexicalContext.js.map +1 -1
  772. package/presentation/listPresenter/ListPresenter.d.ts +30 -0
  773. package/presentation/listPresenter/ListPresenter.js +216 -0
  774. package/presentation/listPresenter/ListPresenter.js.map +1 -0
  775. package/presentation/listPresenter/ListPresenter.test.d.ts +1 -0
  776. package/presentation/listPresenter/ListPresenter.test.js +816 -0
  777. package/presentation/listPresenter/ListPresenter.test.js.map +1 -0
  778. package/presentation/listPresenter/SelectionController.d.ts +21 -0
  779. package/presentation/listPresenter/SelectionController.js +74 -0
  780. package/presentation/listPresenter/SelectionController.js.map +1 -0
  781. package/presentation/listPresenter/abstractions.d.ts +107 -0
  782. package/presentation/listPresenter/abstractions.js +5 -0
  783. package/presentation/listPresenter/abstractions.js.map +1 -0
  784. package/presentation/listPresenter/feature.d.ts +3 -0
  785. package/presentation/listPresenter/feature.js +17 -0
  786. package/presentation/listPresenter/feature.js.map +1 -0
  787. package/presentation/listPresenter/index.d.ts +3 -0
  788. package/presentation/listPresenter/index.js +2 -0
  789. package/presentation/security/components/HasPermission.js +15 -25
  790. package/presentation/security/components/HasPermission.js.map +1 -1
  791. package/presentation/security/components/SecureRoute.js +6 -12
  792. package/presentation/security/components/SecureRoute.js.map +1 -1
  793. package/presentation/security/hooks/useAuthentication.js +11 -17
  794. package/presentation/security/hooks/useAuthentication.js.map +1 -1
  795. package/presentation/security/hooks/useIdentity.js +19 -18
  796. package/presentation/security/hooks/useIdentity.js.map +1 -1
  797. package/presentation/security/hooks/useSecurity.js +14 -24
  798. package/presentation/security/hooks/useSecurity.js.map +1 -1
  799. package/presentation/tenancy/TenancyProvider.js +23 -36
  800. package/presentation/tenancy/TenancyProvider.js.map +1 -1
  801. package/presentation/tenancy/createTenancyProvider.js +6 -11
  802. package/presentation/tenancy/createTenancyProvider.js.map +1 -1
  803. package/presentation/tenancy/useTenantContext.js +17 -18
  804. package/presentation/tenancy/useTenantContext.js.map +1 -1
  805. package/presentation/textToLexicalTool/TextToLexicalTool.js +20 -18
  806. package/presentation/textToLexicalTool/TextToLexicalTool.js.map +1 -1
  807. package/presentation/textToLexicalTool/feature.js +6 -5
  808. package/presentation/textToLexicalTool/feature.js.map +1 -1
  809. package/presentation/textToLexicalTool/textToLexicalState.js +28 -28
  810. package/presentation/textToLexicalTool/textToLexicalState.js.map +1 -1
  811. package/presentation/wcp/WcpProvider.js +16 -26
  812. package/presentation/wcp/WcpProvider.js.map +1 -1
  813. package/presentation/wcp/useWcp.js +11 -12
  814. package/presentation/wcp/useWcp.js.map +1 -1
  815. package/routes.d.ts +0 -1
  816. package/routes.js +14 -17
  817. package/routes.js.map +1 -1
  818. package/static/svg/SecureRouteError.e8b15981.svg +1 -0
  819. package/static/svg/add-18px.b3062af6.svg +3 -0
  820. package/static/svg/arrow_drop_down-24px.da74d713.svg +4 -0
  821. package/static/svg/attach_file_black_24dp.7fb13a7e.svg +1 -0
  822. package/static/svg/baseline-menu-24px.071b179d.svg +4 -0
  823. package/static/svg/baseline-notification_important-24px.29277e73.svg +4 -0
  824. package/static/svg/baseline-security-24px.12e519cc.svg +4 -0
  825. package/static/svg/file_download.afe3fbec.svg +1 -0
  826. package/static/svg/file_upload.6865d820.svg +1 -0
  827. package/static/svg/filter-24px.886d9ff0.svg +8 -0
  828. package/static/svg/github-brands.6311f0fa.svg +1 -0
  829. package/static/svg/highlight-24px.959a97f7.svg +1 -0
  830. package/static/svg/icon-community.cd087355.svg +16 -0
  831. package/static/svg/icon-documentation.a189d24c.svg +16 -0
  832. package/static/svg/info.fe810b72.svg +1 -0
  833. package/static/svg/insert_drive_file-24px.39d490eb.svg +1 -0
  834. package/static/svg/insert_photo-24px.81a5f945.svg +1 -0
  835. package/static/svg/introduction.108720aa.svg +154 -0
  836. package/static/svg/label-24px.9deafa4f.svg +1 -0
  837. package/static/svg/round-account_circle-24px.f0b48cb7.svg +1 -0
  838. package/static/svg/round-add-24px.4a5219b4.svg +16 -0
  839. package/static/svg/round-arrow_drop_down-24px.5fdf92d1.svg +1 -0
  840. package/static/svg/round-chevron_right-24px.34936511.svg +12 -0
  841. package/static/svg/round-feedback-24px.4dae7231.svg +54 -0
  842. package/static/svg/round-help-24px.a61b1d66.svg +1 -0
  843. package/static/svg/round-invert_colors-24px.a229a1dd.svg +52 -0
  844. package/static/svg/round-keyboard_arrow_down-24px.6febe804.svg +16 -0
  845. package/static/svg/round-keyboard_arrow_up-24px.b1f7db34.svg +16 -0
  846. package/static/svg/round-lock_open-24px.d527f6a5.svg +60 -0
  847. package/static/svg/round-more_vert-24px.68d41b07.svg +12 -0
  848. package/static/svg/round-open_in_new-24px.be5b4ddd.svg +44 -0
  849. package/static/svg/round-settings-24px.c0b3056f.svg +4 -0
  850. package/static/svg/search-24px.3c0f88dd.svg +20 -0
  851. package/static/svg/slack-logo.7ee35e7f.svg +1 -0
  852. package/static/svg/today-24px.df206362.svg +1 -0
  853. package/static/svg/touch_app.debf3744.svg +1 -0
  854. package/static/svg/wby-horizontal.03327bf6.svg +23 -0
  855. package/static/svg/wby-square.ff8f47c3.svg +3 -0
  856. package/static/svg/webiny-logo.ef56725c.svg +20 -0
  857. package/static/svg/webiny-orange-logo.4eccf0f2.svg +20 -0
  858. package/types.js +0 -3
  859. package/components/BulkActions/index.js.map +0 -1
  860. package/components/BulkActions/useDialogWithReport/index.js.map +0 -1
  861. package/components/Buttons/index.js.map +0 -1
  862. package/components/DeveloperMode/index.js.map +0 -1
  863. package/components/Filters/index.js.map +0 -1
  864. package/components/IconPicker/components/index.js.map +0 -1
  865. package/components/IconPicker/index.js.map +0 -1
  866. package/components/LexicalEditor/index.js.map +0 -1
  867. package/components/NotAuthorizedError/index.js.map +0 -1
  868. package/components/OptionsMenu/index.js.map +0 -1
  869. package/components/OverlayLayout/components/index.js.map +0 -1
  870. package/components/OverlayLayout/index.js.map +0 -1
  871. package/components/Permissions/index.js.map +0 -1
  872. package/components/ResizablePanels/index.js.map +0 -1
  873. package/components/SimpleForm/index.js.map +0 -1
  874. package/components/SplitView/index.js.map +0 -1
  875. package/components/index.js.map +0 -1
  876. package/config/AdminConfig/Menu/UserMenu/UserMenuSeparator.js.map +0 -1
  877. package/config/AdminConfig/Menu/UserMenu/types.js.map +0 -1
  878. package/config/AdminConfig/Menu/types.js.map +0 -1
  879. package/config/AdminConfig/Theme/types.js.map +0 -1
  880. package/exports/admin/build-params.js.map +0 -1
  881. package/exports/admin/configs.js.map +0 -1
  882. package/exports/admin/form.js.map +0 -1
  883. package/exports/admin/security.js.map +0 -1
  884. package/exports/admin/tenancy.js.map +0 -1
  885. package/exports/admin/ui.js.map +0 -1
  886. package/exports/admin.js.map +0 -1
  887. package/features/buildParams/index.js.map +0 -1
  888. package/features/formModel/fieldTypes/index.js.map +0 -1
  889. package/features/formModel/index.js.map +0 -1
  890. package/features/formModel/renderers.js.map +0 -1
  891. package/features/security/AuthenticationContext/index.js.map +0 -1
  892. package/features/security/AuthenticationContext/types.js.map +0 -1
  893. package/features/security/IdentityContext/index.js.map +0 -1
  894. package/features/security/LogIn/index.js.map +0 -1
  895. package/features/security/LogOut/index.js.map +0 -1
  896. package/features/telemetry/index.js.map +0 -1
  897. package/features/tenancy/types.js.map +0 -1
  898. package/features/tools/LexicalContext/index.js.map +0 -1
  899. package/features/tools/index.js.map +0 -1
  900. package/features/wcp/types.js.map +0 -1
  901. package/features/webinySdk/index.js.map +0 -1
  902. package/hooks/index.js.map +0 -1
  903. package/index.js.map +0 -1
  904. package/permissions/index.js.map +0 -1
  905. package/permissions/types.js.map +0 -1
  906. package/presentation/installation/components/SystemInstaller/index.js.map +0 -1
  907. package/presentation/installation/presenters/SystemInstaller/index.js.map +0 -1
  908. package/types.js.map +0 -1
@@ -1,763 +1,563 @@
1
1
  import { makeAutoObservable, runInAction, toJS } from "mobx";
2
2
  import { Field } from "./Field.js";
3
3
  import { createTemplateBuilder } from "./fieldTypes/ObjectFieldType.js";
4
- /** Reserved key used as the template discriminator in templated object data. */
5
- export const TEMPLATE_DISCRIMINATOR = "_templateId";
4
+ const TEMPLATE_DISCRIMINATOR = "_templateId";
6
5
  function createChildFields(childBuilders, form, parentPath) {
7
- const children = new Map();
8
- for (const [name, builder] of Object.entries(childBuilders)) {
9
- const config = builder.build(name);
10
- const field = createFieldFromConfig(config, form, parentPath);
11
- children.set(name, field);
12
- }
13
- return children;
6
+ const children = new Map();
7
+ for (const [name, builder] of Object.entries(childBuilders)){
8
+ const config = builder.build(name);
9
+ const field = createFieldFromConfig(config, form, parentPath);
10
+ children.set(name, field);
11
+ }
12
+ return children;
14
13
  }
15
14
  function createFieldFromConfig(config, form, parentPath) {
16
- if (config.childBuilders) {
17
- const objField = new ObjectField(config);
18
- if (form) {
19
- objField.setForm(form, parentPath);
20
- }
21
- return objField;
22
- }
23
- const field = new Field(config);
24
- if (form) {
25
- field.setForm(form, parentPath);
26
- }
27
- return field;
15
+ if (config.childBuilders) {
16
+ const objField = new ObjectField(config);
17
+ if (form) objField.setForm(form, parentPath);
18
+ return objField;
19
+ }
20
+ const field = new Field(config);
21
+ if (form) field.setForm(form, parentPath);
22
+ return field;
28
23
  }
29
24
  function hydrateChildren(children, data, options) {
30
- if (!data) {
31
- return;
32
- }
33
- for (const [name, field] of children) {
34
- if (name in data) {
35
- if (options?.clone && field.config.cloneValue) {
36
- field.setValueSilent(field.config.cloneValue(data[name]));
37
- } else {
38
- field.setValueSilent(data[name]);
39
- }
40
- }
41
- }
25
+ if (!data) return;
26
+ for (const [name, field] of children)if (name in data) if (options?.clone && field.config.cloneValue) field.setValueSilent(field.config.cloneValue(data[name]));
27
+ else field.setValueSilent(data[name]);
42
28
  }
43
29
  function getChildrenData(children) {
44
- const data = {};
45
- for (const [name, field] of children) {
46
- if (isObjectField(field)) {
47
- data[name] = toJS(field.getData());
48
- } else {
49
- data[name] = toJS(field.getValue());
50
- }
51
- }
52
- return data;
30
+ const data = {};
31
+ for (const [name, field] of children)if (isObjectField(field)) data[name] = toJS(field.getData());
32
+ else data[name] = toJS(field.getValue());
33
+ return data;
53
34
  }
54
35
  async function validateChildren(children, options) {
55
- let allValid = true;
56
- for (const [, field] of children) {
57
- const valid = await field.validate(options);
58
- if (!valid) {
59
- allValid = false;
60
- }
61
- }
62
- return allValid;
36
+ let allValid = true;
37
+ for (const [, field] of children){
38
+ const valid = await field.validate(options);
39
+ if (!valid) allValid = false;
40
+ }
41
+ return allValid;
63
42
  }
64
- export function isObjectField(field) {
65
- return field.type === "object";
43
+ function isObjectField(field) {
44
+ return "object" === field.type;
66
45
  }
67
46
  let itemKeyCounter = 0;
68
- /**
69
- * ObjectField — hierarchical field with children, using composition.
70
- * Holds a `_base` Field for scalar behavior (callbacks, disabled/hidden, form ref).
71
- * Adds its own children/items management for object and list modes.
72
- */
73
- export class ObjectField {
74
- _form = null;
75
- _items = [];
76
- _templates = [];
77
- _activeTemplateId = null;
78
- /** Inner layout for non-templated objects (single layout, applied per item too). */
79
- _ownLayout = null;
80
- /** Per-template inner layouts for templated objects. */
81
- _templateLayouts = {};
82
- _validating = false;
83
- constructor(config) {
84
- this.config = config;
85
- this._base = new Field({
86
- ...config,
87
- type: "object",
88
- renderer: config.renderer ?? (config.isList ? "objectAccordionMultiple" : "objectAccordionSingle")
89
- });
90
- this._templates = config.templates ?? [];
91
- this._isTemplated = this._templates.length > 0;
92
- if (this._isTemplated) {
93
- // Templated mode: children populated per-item (list) or when a template is picked (single).
94
- this._children = new Map();
95
- } else {
96
- this._children = createChildFields(config.childBuilders, null);
97
- }
98
- makeAutoObservable(this, {
99
- config: false
100
- });
101
- }
102
- _findTemplate(id) {
103
- return this._templates.find(t => t.id === id);
104
- }
105
- _rebuildChildrenForTemplate(templateId) {
106
- const template = this._findTemplate(templateId);
107
- if (!template) {
108
- throw new Error(`Template "${templateId}" not found on field "${this.config.name}". ` + `Available: ${this._templates.map(t => t.id).join(", ") || "(none)"}.`);
109
- }
110
- const children = createChildFields(template.childBuilders, this._form, this.qualifiedName);
111
- this._children = children;
112
- this._activeTemplateId = templateId;
113
- const inner = this._innerLayoutFor(templateId);
114
- if (inner) {
115
- this._applyNestedObjectLayouts(inner, children);
116
- }
117
- }
118
-
119
- // --- Forwarded from _base ---
120
-
121
- get name() {
122
- return this._base.name;
123
- }
124
- get type() {
125
- return "object";
126
- }
127
- get visible() {
128
- return this._base.visible;
129
- }
130
- get disabled() {
131
- return this._base.disabled;
132
- }
133
- setDisabled(value) {
134
- this._base.setDisabled(value);
135
- }
136
- setVisible(value) {
137
- this._base.setVisible(value);
138
- }
139
- setAncestorRules(rules) {
140
- this._base.setAncestorRules(rules);
141
- }
142
- setForm(form, parentPath) {
143
- this._form = form;
144
- this._base.setForm(form, parentPath);
145
- const myPath = this._base.qualifiedName;
146
- for (const [, field] of this._children) {
147
- field.setForm(form, myPath);
148
- }
149
- for (const item of this._items) {
150
- for (const [, field] of item.children) {
151
- field.setForm(form, myPath);
152
- }
153
- }
154
- }
155
- setValidation(validation) {
156
- this._base.setValidation(validation);
157
- }
158
- addBeforeChange(cb) {
159
- this._base.addBeforeChange(cb);
160
- }
161
- addAfterChange(cb) {
162
- this._base.addAfterChange(cb);
163
- }
164
- addAfterSetValue(cb) {
165
- this._base.addAfterSetValue(cb);
166
- }
167
- addOnBlur(cb) {
168
- this._base.addOnBlur(cb);
169
- }
170
- addRequiredWhen(fn, message) {
171
- this._base.addRequiredWhen(fn, message);
172
- }
173
- setComputed(fn) {
174
- this._base.setComputed(fn);
175
- }
176
- setComputedUntilDirty(fn) {
177
- this._base.setComputedUntilDirty(fn);
178
- }
179
- blur() {
180
- this._base.blur();
181
- }
182
- remove() {
183
- this._base.remove();
184
- }
185
- get qualifiedName() {
186
- return this._base.qualifiedName;
187
- }
188
- focus() {
189
- this._base.focus();
190
- }
191
- requestFocus() {
192
- this._base.requestFocus();
193
- }
194
- clearFocusRequest() {
195
- this._base.clearFocusRequest();
196
- }
197
- getInnerLayout() {
198
- if (this.isTemplated) {
199
- return this._activeTemplateId ? this._templateLayouts[this._activeTemplateId] ?? null : null;
200
- }
201
- return this._ownLayout;
202
- }
203
-
204
- // --- Object-specific ---
205
-
206
- get isList() {
207
- return this.config.isList;
208
- }
209
- get isTemplated() {
210
- return this._isTemplated;
211
- }
212
- get activeTemplateId() {
213
- return this._activeTemplateId;
214
- }
215
- get availableTemplates() {
216
- const result = [];
217
- for (const template of this._templates) {
218
- if (template.visible && this._form) {
219
- if (!template.visible(this._form)) {
220
- continue;
221
- }
222
- }
223
- result.push({
224
- id: template.id,
225
- label: template.label,
226
- icon: template.icon
227
- });
228
- }
229
- return result;
230
- }
231
- setTemplate(templateId) {
232
- if (this._activeTemplateId === templateId) {
233
- return;
234
- }
235
- this._rebuildChildrenForTemplate(templateId);
236
- }
237
- get templates() {
238
- return {
239
- add: (id, configure) => this._addTemplate(id, configure),
240
- remove: templateId => this._removeTemplate(templateId)
241
- };
242
- }
243
- _addTemplate(id, configure) {
244
- if (!this.isTemplated) {
245
- throw new Error(`Object field "${this.config.name}" is not templated; templates.add() requires the field to be defined with .template().`);
246
- }
247
- if (id === TEMPLATE_DISCRIMINATOR) {
248
- throw new Error(`Template id "${TEMPLATE_DISCRIMINATOR}" is reserved. Choose a different id.`);
249
- }
250
- if (this._findTemplate(id)) {
251
- throw new Error(`Duplicate template id "${id}".`);
252
- }
253
- const tb = createTemplateBuilder();
254
- configure(tb);
255
- this._templates.push(tb._build(id, this._form.registry));
256
- }
257
- _removeTemplate(templateId) {
258
- if (!this.isTemplated) {
259
- throw new Error(`Object field "${this.config.name}" is not templated; templates.remove() requires the field to be defined with .template().`);
260
- }
261
- const index = this._templates.findIndex(t => t.id === templateId);
262
- if (index === -1) {
263
- return;
264
- }
265
- this._templates.splice(index, 1);
266
- if (this.config.isList) {
267
- this._items = this._items.filter(item => item.templateId !== templateId);
268
- return;
269
- }
270
- if (this._activeTemplateId === templateId) {
271
- this._activeTemplateId = null;
272
- this._children = new Map();
273
- }
274
- }
275
- setInnerLayout(layout) {
276
- if (Array.isArray(layout)) {
277
- if (this.isTemplated) {
278
- throw new Error(`Object field "${this.config.name}" is templated; layout.object() must pass a per-template map (Record<templateId, LayoutNode[]>), not a single LayoutNode[].`);
279
- }
280
- this._ownLayout = layout;
281
- this._templateLayouts = {};
282
- // Apply nested object layouts to children that already exist
283
- // (non-templated single + non-templated list items).
284
- this._applyNestedObjectLayouts(layout, this._children);
285
- for (const item of this._items) {
286
- this._applyNestedObjectLayouts(layout, item.children);
287
- }
288
- return;
289
- }
290
- if (!this.isTemplated) {
291
- throw new Error(`Object field "${this.config.name}" is not templated; layout.object() must pass a single LayoutNode[], not a per-template map.`);
292
- }
293
- this._templateLayouts = layout;
294
- this._ownLayout = null;
295
- // Apply nested object layouts to currently-active templated children
296
- // (templated single with active template + templated list items).
297
- if (this._activeTemplateId && layout[this._activeTemplateId]) {
298
- this._applyNestedObjectLayouts(layout[this._activeTemplateId], this._children);
299
- }
300
- for (const item of this._items) {
301
- if (item.templateId && layout[item.templateId]) {
302
- this._applyNestedObjectLayouts(layout[item.templateId], item.children);
303
- }
304
- }
305
- }
306
-
307
- /**
308
- * Walk an inner layout for nested `object` nodes and forward each one to
309
- * the matching child field. The recursion bottoms out naturally: each
310
- * matched child is itself an ObjectField and will run `_applyNestedObjectLayouts`
311
- * against its own children whenever they materialise.
312
- */
313
- _applyNestedObjectLayouts(layout, children) {
314
- for (const node of layout) {
315
- if (node.type === "object") {
316
- const child = children.get(node.fieldName);
317
- if (child && isObjectField(child)) {
318
- child.setInnerLayout(node.inner);
319
- }
320
- } else if (node.type === "tabs") {
321
- for (const tab of node.tabs) {
322
- this._applyNestedObjectLayouts(tab.layout, children);
323
- }
324
- }
325
- }
326
- }
327
-
328
- /**
329
- * Returns the inner layout that should apply to a freshly-built children
330
- * Map for the given templateId (templated objects/lists) or for the
331
- * non-templated case. Used to seed nested object layouts on newly-created
332
- * children before they go live.
333
- */
334
- _innerLayoutFor(templateId) {
335
- if (this.isTemplated) {
336
- if (templateId === undefined) {
337
- return undefined;
338
- }
339
- return this._templateLayouts[templateId];
340
- }
341
- return this._ownLayout ?? undefined;
342
- }
343
- _resolveLayoutForChildren(children, templateId) {
344
- const layoutNodes = this.isTemplated ? templateId !== null ? this._templateLayouts[templateId] : undefined : this._ownLayout ?? undefined;
345
- if (layoutNodes && this._form?.resolveChildLayout) {
346
- return this._form.resolveChildLayout(layoutNodes, children);
347
- }
348
- // Default: one row per visible child, in insertion order.
349
- const fallback = [];
350
- for (const [, field] of children) {
351
- if (field.visible) {
352
- fallback.push({
353
- type: "row",
354
- fields: [field.vm]
47
+ class ObjectField {
48
+ constructor(config){
49
+ this._form = null;
50
+ this._items = [];
51
+ this._templates = [];
52
+ this._activeTemplateId = null;
53
+ this._ownLayout = null;
54
+ this._templateLayouts = {};
55
+ this._validating = false;
56
+ this.config = config;
57
+ this._base = new Field({
58
+ ...config,
59
+ type: "object",
60
+ renderer: config.renderer ?? (config.isList ? "objectAccordionMultiple" : "objectAccordionSingle")
61
+ });
62
+ this._templates = config.templates ?? [];
63
+ this._isTemplated = this._templates.length > 0;
64
+ if (this._isTemplated) this._children = new Map();
65
+ else this._children = createChildFields(config.childBuilders, null);
66
+ makeAutoObservable(this, {
67
+ config: false
355
68
  });
356
- }
357
- }
358
- return fallback;
359
- }
360
- get children() {
361
- return this._children;
362
- }
363
- get items() {
364
- return this._items.map(item => ({
365
- key: item.key,
366
- children: item.children,
367
- templateId: item.templateId,
368
- getData: () => this._getItemData(item)
369
- }));
370
- }
371
- _getItemData(item) {
372
- const data = getChildrenData(item.children);
373
- if (item.templateId !== undefined) {
374
- return {
375
- [TEMPLATE_DISCRIMINATOR]: item.templateId,
376
- ...data
377
- };
378
69
  }
379
- return data;
380
- }
381
- getChild(name) {
382
- return this._children.get(name);
383
- }
384
- fields(factory) {
385
- if (this.isTemplated) {
386
- throw new Error(`Object field "${this.config.name}" is templated; use templates.add()/remove() to manage children. Each template owns its own fields.`);
387
- }
388
- const builders = factory(this._form.registry);
389
- for (const [name, builder] of Object.entries(builders)) {
390
- if (builder === undefined) {
391
- this._children.delete(name);
392
- this.config.childBuilders[name] = undefined;
393
- delete this.config.childBuilders[name];
70
+ _findTemplate(id) {
71
+ return this._templates.find((t)=>t.id === id);
72
+ }
73
+ _rebuildChildrenForTemplate(templateId) {
74
+ const template = this._findTemplate(templateId);
75
+ if (!template) throw new Error(`Template "${templateId}" not found on field "${this.config.name}". Available: ${this._templates.map((t)=>t.id).join(", ") || "(none)"}.`);
76
+ const children = createChildFields(template.childBuilders, this._form, this.qualifiedName);
77
+ this._children = children;
78
+ this._activeTemplateId = templateId;
79
+ const inner = this._innerLayoutFor(templateId);
80
+ if (inner) this._applyNestedObjectLayouts(inner, children);
81
+ }
82
+ get name() {
83
+ return this._base.name;
84
+ }
85
+ get type() {
86
+ return "object";
87
+ }
88
+ get visible() {
89
+ return this._base.visible;
90
+ }
91
+ get disabled() {
92
+ return this._base.disabled;
93
+ }
94
+ setDisabled(value) {
95
+ this._base.setDisabled(value);
96
+ }
97
+ setVisible(value) {
98
+ this._base.setVisible(value);
99
+ }
100
+ setAncestorRules(rules) {
101
+ this._base.setAncestorRules(rules);
102
+ }
103
+ setForm(form, parentPath) {
104
+ this._form = form;
105
+ this._base.setForm(form, parentPath);
106
+ const myPath = this._base.qualifiedName;
107
+ for (const [, field] of this._children)field.setForm(form, myPath);
108
+ for (const item of this._items)for (const [, field] of item.children)field.setForm(form, myPath);
109
+ }
110
+ setValidation(validation) {
111
+ this._base.setValidation(validation);
112
+ }
113
+ addBeforeChange(cb) {
114
+ this._base.addBeforeChange(cb);
115
+ }
116
+ addAfterChange(cb) {
117
+ this._base.addAfterChange(cb);
118
+ }
119
+ addAfterSetValue(cb) {
120
+ this._base.addAfterSetValue(cb);
121
+ }
122
+ addOnBlur(cb) {
123
+ this._base.addOnBlur(cb);
124
+ }
125
+ addRequiredWhen(fn, message) {
126
+ this._base.addRequiredWhen(fn, message);
127
+ }
128
+ setComputed(fn) {
129
+ this._base.setComputed(fn);
130
+ }
131
+ setComputedUntilDirty(fn) {
132
+ this._base.setComputedUntilDirty(fn);
133
+ }
134
+ blur() {
135
+ this._base.blur();
136
+ }
137
+ remove() {
138
+ this._base.remove();
139
+ }
140
+ get qualifiedName() {
141
+ return this._base.qualifiedName;
142
+ }
143
+ focus() {
144
+ this._base.focus();
145
+ }
146
+ requestFocus() {
147
+ this._base.requestFocus();
148
+ }
149
+ clearFocusRequest() {
150
+ this._base.clearFocusRequest();
151
+ }
152
+ getInnerLayout() {
153
+ if (this.isTemplated) return this._activeTemplateId ? this._templateLayouts[this._activeTemplateId] ?? null : null;
154
+ return this._ownLayout;
155
+ }
156
+ get isList() {
157
+ return this.config.isList;
158
+ }
159
+ get isTemplated() {
160
+ return this._isTemplated;
161
+ }
162
+ get activeTemplateId() {
163
+ return this._activeTemplateId;
164
+ }
165
+ get availableTemplates() {
166
+ const result = [];
167
+ for (const template of this._templates){
168
+ if (template.visible && this._form) {
169
+ if (!template.visible(this._form)) continue;
170
+ }
171
+ result.push({
172
+ id: template.id,
173
+ label: template.label,
174
+ icon: template.icon
175
+ });
176
+ }
177
+ return result;
178
+ }
179
+ setTemplate(templateId) {
180
+ if (this._activeTemplateId === templateId) return;
181
+ this._rebuildChildrenForTemplate(templateId);
182
+ }
183
+ get templates() {
184
+ return {
185
+ add: (id, configure)=>this._addTemplate(id, configure),
186
+ remove: (templateId)=>this._removeTemplate(templateId)
187
+ };
188
+ }
189
+ _addTemplate(id, configure) {
190
+ if (!this.isTemplated) throw new Error(`Object field "${this.config.name}" is not templated; templates.add() requires the field to be defined with .template().`);
191
+ if (id === TEMPLATE_DISCRIMINATOR) throw new Error(`Template id "${TEMPLATE_DISCRIMINATOR}" is reserved. Choose a different id.`);
192
+ if (this._findTemplate(id)) throw new Error(`Duplicate template id "${id}".`);
193
+ const tb = createTemplateBuilder();
194
+ configure(tb);
195
+ this._templates.push(tb._build(id, this._form.registry));
196
+ }
197
+ _removeTemplate(templateId) {
198
+ if (!this.isTemplated) throw new Error(`Object field "${this.config.name}" is not templated; templates.remove() requires the field to be defined with .template().`);
199
+ const index = this._templates.findIndex((t)=>t.id === templateId);
200
+ if (-1 === index) return;
201
+ this._templates.splice(index, 1);
394
202
  if (this.config.isList) {
395
- for (const item of this._items) {
396
- item.children.delete(name);
397
- }
203
+ this._items = this._items.filter((item)=>item.templateId !== templateId);
204
+ return;
398
205
  }
399
- continue;
400
- }
401
- this.config.childBuilders[name] = builder;
402
- const built = builder.build(name);
403
- const newField = createFieldFromConfig(built, this._form, this.qualifiedName);
404
- this._children.set(name, newField);
405
- if (this.config.isList) {
406
- for (const item of this._items) {
407
- const itemField = createFieldFromConfig(built, this._form, this.qualifiedName);
408
- item.children.set(name, itemField);
206
+ if (this._activeTemplateId === templateId) {
207
+ this._activeTemplateId = null;
208
+ this._children = new Map();
409
209
  }
410
- }
411
210
  }
412
-
413
- // Re-apply nested object layouts so newly-added children pick up any
414
- // layout.object() entries already registered on this field.
415
- if (this._ownLayout) {
416
- this._applyNestedObjectLayouts(this._ownLayout, this._children);
417
- for (const item of this._items) {
418
- this._applyNestedObjectLayouts(this._ownLayout, item.children);
419
- }
420
- }
421
- }
422
- getListItemChild(index, name) {
423
- const item = this._items[index];
424
- return item?.children.get(name);
425
- }
426
- getData() {
427
- if (this.config.isList) {
428
- return this._items.map(item => this._getItemData(item));
429
- }
430
- if (this.isTemplated) {
431
- if (this._activeTemplateId === null) {
432
- return null;
433
- }
434
- return {
435
- [TEMPLATE_DISCRIMINATOR]: this._activeTemplateId,
436
- ...getChildrenData(this._children)
437
- };
438
- }
439
- return getChildrenData(this._children);
440
- }
441
- getValue() {
442
- return this.getData();
443
- }
444
- setValue(value) {
445
- this.setValueSilent(value);
446
- }
447
- setValueSilent(value) {
448
- if (this.config.isList) {
449
- this._items = [];
450
- if (Array.isArray(value)) {
451
- for (const itemData of value) {
452
- if (this.isTemplated) {
453
- if (!itemData || typeof itemData !== "object") {
454
- continue;
455
- }
456
- const data = itemData;
457
- const templateId = data[TEMPLATE_DISCRIMINATOR];
458
- if (typeof templateId !== "string") {
459
- continue;
211
+ setInnerLayout(layout) {
212
+ if (Array.isArray(layout)) {
213
+ if (this.isTemplated) throw new Error(`Object field "${this.config.name}" is templated; layout.object() must pass a per-template map (Record<templateId, LayoutNode[]>), not a single LayoutNode[].`);
214
+ this._ownLayout = layout;
215
+ this._templateLayouts = {};
216
+ this._applyNestedObjectLayouts(layout, this._children);
217
+ for (const item of this._items)this._applyNestedObjectLayouts(layout, item.children);
218
+ return;
219
+ }
220
+ if (!this.isTemplated) throw new Error(`Object field "${this.config.name}" is not templated; layout.object() must pass a single LayoutNode[], not a per-template map.`);
221
+ this._templateLayouts = layout;
222
+ this._ownLayout = null;
223
+ if (this._activeTemplateId && layout[this._activeTemplateId]) this._applyNestedObjectLayouts(layout[this._activeTemplateId], this._children);
224
+ for (const item of this._items)if (item.templateId && layout[item.templateId]) this._applyNestedObjectLayouts(layout[item.templateId], item.children);
225
+ }
226
+ _applyNestedObjectLayouts(layout, children) {
227
+ for (const node of layout)if ("object" === node.type) {
228
+ const child = children.get(node.fieldName);
229
+ if (child && isObjectField(child)) child.setInnerLayout(node.inner);
230
+ } else if ("tabs" === node.type) for (const tab of node.tabs)this._applyNestedObjectLayouts(tab.layout, children);
231
+ }
232
+ _innerLayoutFor(templateId) {
233
+ if (this.isTemplated) {
234
+ if (void 0 === templateId) return;
235
+ return this._templateLayouts[templateId];
236
+ }
237
+ return this._ownLayout ?? void 0;
238
+ }
239
+ _resolveLayoutForChildren(children, templateId) {
240
+ const layoutNodes = this.isTemplated ? null !== templateId ? this._templateLayouts[templateId] : void 0 : this._ownLayout ?? void 0;
241
+ if (layoutNodes && this._form?.resolveChildLayout) return this._form.resolveChildLayout(layoutNodes, children);
242
+ const fallback = [];
243
+ for (const [, field] of children)if (field.visible) fallback.push({
244
+ type: "row",
245
+ fields: [
246
+ field.vm
247
+ ]
248
+ });
249
+ return fallback;
250
+ }
251
+ get children() {
252
+ return this._children;
253
+ }
254
+ get items() {
255
+ return this._items.map((item)=>({
256
+ key: item.key,
257
+ children: item.children,
258
+ templateId: item.templateId,
259
+ getData: ()=>this._getItemData(item)
260
+ }));
261
+ }
262
+ _getItemData(item) {
263
+ const data = getChildrenData(item.children);
264
+ if (void 0 !== item.templateId) return {
265
+ [TEMPLATE_DISCRIMINATOR]: item.templateId,
266
+ ...data
267
+ };
268
+ return data;
269
+ }
270
+ getChild(name) {
271
+ return this._children.get(name);
272
+ }
273
+ fields(factory) {
274
+ if (this.isTemplated) throw new Error(`Object field "${this.config.name}" is templated; use templates.add()/remove() to manage children. Each template owns its own fields.`);
275
+ const builders = factory(this._form.registry);
276
+ for (const [name, builder] of Object.entries(builders)){
277
+ if (void 0 === builder) {
278
+ this._children.delete(name);
279
+ this.config.childBuilders[name] = void 0;
280
+ delete this.config.childBuilders[name];
281
+ if (this.config.isList) for (const item of this._items)item.children.delete(name);
282
+ continue;
460
283
  }
461
- if (!this._findTemplate(templateId)) {
462
- continue;
284
+ this.config.childBuilders[name] = builder;
285
+ const built = builder.build(name);
286
+ const newField = createFieldFromConfig(built, this._form, this.qualifiedName);
287
+ this._children.set(name, newField);
288
+ if (this.config.isList) for (const item of this._items){
289
+ const itemField = createFieldFromConfig(built, this._form, this.qualifiedName);
290
+ item.children.set(name, itemField);
463
291
  }
464
- const {
465
- [TEMPLATE_DISCRIMINATOR]: _discarded,
466
- ...rest
467
- } = data;
468
- this._addItemInternal(rest, templateId);
469
- } else {
470
- this._addItemInternal(itemData);
471
- }
472
292
  }
473
- }
474
- return;
475
- }
476
- if (this.isTemplated) {
477
- if (value === null || value === undefined) {
478
- this._activeTemplateId = null;
479
- this._children = new Map();
480
- return;
481
- }
482
- const data = value;
483
- const templateId = data[TEMPLATE_DISCRIMINATOR];
484
- if (typeof templateId !== "string") {
485
- return;
486
- }
487
- if (!this._findTemplate(templateId)) {
488
- return;
489
- }
490
- this._rebuildChildrenForTemplate(templateId);
491
- const {
492
- [TEMPLATE_DISCRIMINATOR]: _discarded,
493
- ...rest
494
- } = data;
495
- hydrateChildren(this._children, rest);
496
- return;
497
- }
498
- hydrateChildren(this._children, value);
499
- }
500
- addItem(templateIdOrData, data) {
501
- if (this.isTemplated) {
502
- if (typeof templateIdOrData !== "string") {
503
- throw new Error(`Object field "${this.config.name}": templated list items require a template id. ` + `Call addItem(templateId) with one of: ${this._templates.map(t => t.id).join(", ")}.`);
504
- }
505
- if (!this._findTemplate(templateIdOrData)) {
506
- throw new Error(`Template "${templateIdOrData}" not found on field "${this.config.name}". ` + `Available: ${this._templates.map(t => t.id).join(", ") || "(none)"}.`);
507
- }
508
- this._addItemInternal(data, templateIdOrData);
509
- return;
510
- }
511
- if (typeof templateIdOrData === "string") {
512
- throw new Error(`Object field "${this.config.name}" is not templated; addItem() does not accept a template id.`);
513
- }
514
- this._addItemInternal(templateIdOrData);
515
- }
516
- removeItem(index) {
517
- this._items.splice(index, 1);
518
- }
519
- moveItem(fromIndex, toIndex) {
520
- if (fromIndex < 0 || fromIndex >= this._items.length || toIndex < 0 || toIndex >= this._items.length || fromIndex === toIndex) {
521
- return;
522
- }
523
- const [item] = this._items.splice(fromIndex, 1);
524
- this._items.splice(toIndex, 0, item);
525
- }
526
- duplicateItem(index) {
527
- const source = this._items[index];
528
- if (!source) {
529
- return;
530
- }
531
- const data = getChildrenData(source.children);
532
- const children = createChildFields(this._templateChildBuilders(source.templateId), this._form, this.qualifiedName);
533
- hydrateChildren(children, data, {
534
- clone: true
535
- });
536
- const key = `item_${++itemKeyCounter}`;
537
- this._items.splice(index + 1, 0, {
538
- key,
539
- children,
540
- templateId: source.templateId
541
- });
542
- const inner = this._innerLayoutFor(source.templateId);
543
- if (inner) {
544
- this._applyNestedObjectLayouts(inner, children);
545
- }
546
- }
547
- _templateChildBuilders(templateId) {
548
- if (templateId === undefined) {
549
- return this.config.childBuilders;
550
- }
551
- const template = this._findTemplate(templateId);
552
- if (!template) {
553
- throw new Error(`Template "${templateId}" not found on field "${this.config.name}".`);
554
- }
555
- return template.childBuilders;
556
- }
557
- _addItemInternal(data, templateId) {
558
- const children = createChildFields(this._templateChildBuilders(templateId), this._form, this.qualifiedName);
559
- if (data) {
560
- hydrateChildren(children, data);
561
- }
562
- const key = `item_${++itemKeyCounter}`;
563
- this._items.push({
564
- key,
565
- children,
566
- templateId
567
- });
568
- const inner = this._innerLayoutFor(templateId);
569
- if (inner) {
570
- this._applyNestedObjectLayouts(inner, children);
571
- }
572
- }
573
- resetValidation() {
574
- this._base.resetValidation();
575
- for (const [, field] of this._children) {
576
- field.resetValidation();
577
- }
578
- for (const item of this._items) {
579
- for (const [, field] of item.children) {
580
- field.resetValidation();
581
- }
582
- }
583
- }
584
- as(type) {
585
- if (type !== "object") {
586
- throw new Error(`Field "${this.config.name}" is type "object", not "${type}".`);
587
- }
588
- return this;
589
- }
590
- get vm() {
591
- const baseVm = this._base.vm;
592
- return {
593
- name: baseVm.name,
594
- type: "object",
595
- label: baseVm.label,
596
- help: baseVm.help,
597
- description: baseVm.description,
598
- note: baseVm.note,
599
- placeholder: baseVm.placeholder,
600
- value: this.getValue(),
601
- validation: baseVm.validation,
602
- validating: this._validating,
603
- required: baseVm.required,
604
- visible: baseVm.visible,
605
- disabled: baseVm.disabled,
606
- renderer: baseVm.renderer,
607
- rendererSettings: baseVm.rendererSettings,
608
- onChange: value => this.setValue(value),
609
- onBlur: () => {
610
- if (this._form?.submitted) {
611
- void this.validate();
293
+ if (this._ownLayout) {
294
+ this._applyNestedObjectLayouts(this._ownLayout, this._children);
295
+ for (const item of this._items)this._applyNestedObjectLayouts(this._ownLayout, item.children);
612
296
  }
613
- this.blur();
614
- },
615
- focusRequested: baseVm.focusRequested,
616
- clearFocusRequest: baseVm.clearFocusRequest,
617
- isList: this.config.isList,
618
- fields: this.config.isList ? [] : Array.from(this._children.values()).filter(f => f.visible).map(f => f.vm),
619
- layout: this.config.isList ? [] : this._resolveLayoutForChildren(this._children, this._activeTemplateId),
620
- items: this.config.isList ? this._items.map((item, index) => ({
621
- key: item.key,
622
- fields: Array.from(item.children.values()).filter(f => f.visible).map(f => f.vm),
623
- layout: this._resolveLayoutForChildren(item.children, item.templateId ?? null),
624
- templateId: item.templateId,
625
- remove: () => this.removeItem(index),
626
- moveUp: () => this.moveItem(index, index - 1),
627
- moveDown: () => this.moveItem(index, index + 1),
628
- duplicate: () => this.duplicateItem(index)
629
- })) : [],
630
- addItem: value => {
631
- return value !== undefined ? this.addItem(value) : this.addItem();
632
- },
633
- removeItem: index => this.removeItem(index),
634
- moveItem: (from, to) => this.moveItem(from, to),
635
- duplicateItem: index => this.duplicateItem(index),
636
- isTemplated: this.isTemplated,
637
- availableTemplates: this.availableTemplates,
638
- activeTemplateId: this._activeTemplateId,
639
- setTemplate: templateId => this.setTemplate(templateId)
640
- };
641
- }
642
- get hasErrors() {
643
- const checkChildren = children => {
644
- for (const [, field] of children) {
645
- if (field.vm.validation.isValid === false) {
646
- return true;
297
+ }
298
+ getListItemChild(index, name) {
299
+ const item = this._items[index];
300
+ return item?.children.get(name);
301
+ }
302
+ getData() {
303
+ if (this.config.isList) return this._items.map((item)=>this._getItemData(item));
304
+ if (this.isTemplated) {
305
+ if (null === this._activeTemplateId) return null;
306
+ return {
307
+ [TEMPLATE_DISCRIMINATOR]: this._activeTemplateId,
308
+ ...getChildrenData(this._children)
309
+ };
647
310
  }
648
- if (isObjectField(field) && field.hasErrors) {
649
- return true;
311
+ return getChildrenData(this._children);
312
+ }
313
+ getValue() {
314
+ return this.getData();
315
+ }
316
+ setValue(value) {
317
+ this.setValueSilent(value);
318
+ }
319
+ setValueSilent(value) {
320
+ if (this.config.isList) {
321
+ this._items = [];
322
+ if (Array.isArray(value)) for (const itemData of value)if (this.isTemplated) {
323
+ if (!itemData || "object" != typeof itemData) continue;
324
+ const data = itemData;
325
+ const templateId = data[TEMPLATE_DISCRIMINATOR];
326
+ if ("string" != typeof templateId) continue;
327
+ if (!this._findTemplate(templateId)) continue;
328
+ const { [TEMPLATE_DISCRIMINATOR]: _discarded, ...rest } = data;
329
+ this._addItemInternal(rest, templateId);
330
+ } else this._addItemInternal(itemData);
331
+ return;
650
332
  }
651
- }
652
- return false;
653
- };
654
- if (this.config.isList) {
655
- for (const item of this._items) {
656
- if (checkChildren(item.children)) {
657
- return true;
333
+ if (this.isTemplated) {
334
+ if (null == value) {
335
+ this._activeTemplateId = null;
336
+ this._children = new Map();
337
+ return;
338
+ }
339
+ const data = value;
340
+ const templateId = data[TEMPLATE_DISCRIMINATOR];
341
+ if ("string" != typeof templateId) return;
342
+ if (!this._findTemplate(templateId)) return;
343
+ this._rebuildChildrenForTemplate(templateId);
344
+ const { [TEMPLATE_DISCRIMINATOR]: _discarded, ...rest } = data;
345
+ hydrateChildren(this._children, rest);
346
+ return;
658
347
  }
659
- }
660
- } else {
661
- if (checkChildren(this._children)) {
662
- return true;
663
- }
664
- }
665
- return false;
666
- }
667
- async validate(options) {
668
- if (!this.visible) {
669
- this.setValidation({
670
- isValid: null
671
- });
672
- return true;
673
- }
674
- runInAction(() => {
675
- this._validating = true;
676
- });
677
- try {
678
- const requiredState = this._base.resolveRequired();
679
- if (requiredState.required) {
680
- const message = requiredState.message || "This field is required.";
681
- if (this.config.isList && this._items.length === 0) {
682
- this.setValidation({
683
- isValid: false,
684
- message
685
- });
686
- return false;
348
+ hydrateChildren(this._children, value);
349
+ }
350
+ addItem(templateIdOrData, data) {
351
+ if (this.isTemplated) {
352
+ if ("string" != typeof templateIdOrData) throw new Error(`Object field "${this.config.name}": templated list items require a template id. Call addItem(templateId) with one of: ${this._templates.map((t)=>t.id).join(", ")}.`);
353
+ if (!this._findTemplate(templateIdOrData)) throw new Error(`Template "${templateIdOrData}" not found on field "${this.config.name}". Available: ${this._templates.map((t)=>t.id).join(", ") || "(none)"}.`);
354
+ this._addItemInternal(data, templateIdOrData);
355
+ return;
687
356
  }
688
- if (!this.config.isList) {
689
- if (this.isTemplated) {
690
- if (this._activeTemplateId === null) {
691
- this.setValidation({
692
- isValid: false,
693
- message
694
- });
695
- return false;
696
- }
697
- } else {
698
- const data = this.getData();
699
- const hasAnyValue = Object.values(data).some(v => v !== null && v !== undefined && v !== "");
700
- if (!hasAnyValue) {
701
- this.setValidation({
702
- isValid: false,
703
- message
704
- });
705
- return false;
357
+ if ("string" == typeof templateIdOrData) throw new Error(`Object field "${this.config.name}" is not templated; addItem() does not accept a template id.`);
358
+ this._addItemInternal(templateIdOrData);
359
+ }
360
+ removeItem(index) {
361
+ this._items.splice(index, 1);
362
+ }
363
+ moveItem(fromIndex, toIndex) {
364
+ if (fromIndex < 0 || fromIndex >= this._items.length || toIndex < 0 || toIndex >= this._items.length || fromIndex === toIndex) return;
365
+ const [item] = this._items.splice(fromIndex, 1);
366
+ this._items.splice(toIndex, 0, item);
367
+ }
368
+ duplicateItem(index) {
369
+ const source = this._items[index];
370
+ if (!source) return;
371
+ const data = getChildrenData(source.children);
372
+ const children = createChildFields(this._templateChildBuilders(source.templateId), this._form, this.qualifiedName);
373
+ hydrateChildren(children, data, {
374
+ clone: true
375
+ });
376
+ const key = `item_${++itemKeyCounter}`;
377
+ this._items.splice(index + 1, 0, {
378
+ key,
379
+ children,
380
+ templateId: source.templateId
381
+ });
382
+ const inner = this._innerLayoutFor(source.templateId);
383
+ if (inner) this._applyNestedObjectLayouts(inner, children);
384
+ }
385
+ _templateChildBuilders(templateId) {
386
+ if (void 0 === templateId) return this.config.childBuilders;
387
+ const template = this._findTemplate(templateId);
388
+ if (!template) throw new Error(`Template "${templateId}" not found on field "${this.config.name}".`);
389
+ return template.childBuilders;
390
+ }
391
+ _addItemInternal(data, templateId) {
392
+ const children = createChildFields(this._templateChildBuilders(templateId), this._form, this.qualifiedName);
393
+ if (data) hydrateChildren(children, data);
394
+ const key = `item_${++itemKeyCounter}`;
395
+ this._items.push({
396
+ key,
397
+ children,
398
+ templateId
399
+ });
400
+ const inner = this._innerLayoutFor(templateId);
401
+ if (inner) this._applyNestedObjectLayouts(inner, children);
402
+ }
403
+ resetValidation() {
404
+ this._base.resetValidation();
405
+ for (const [, field] of this._children)field.resetValidation();
406
+ for (const item of this._items)for (const [, field] of item.children)field.resetValidation();
407
+ }
408
+ as(type) {
409
+ if ("object" !== type) throw new Error(`Field "${this.config.name}" is type "object", not "${type}".`);
410
+ return this;
411
+ }
412
+ get vm() {
413
+ const baseVm = this._base.vm;
414
+ return {
415
+ name: baseVm.name,
416
+ type: "object",
417
+ label: baseVm.label,
418
+ help: baseVm.help,
419
+ description: baseVm.description,
420
+ note: baseVm.note,
421
+ placeholder: baseVm.placeholder,
422
+ value: this.getValue(),
423
+ validation: baseVm.validation,
424
+ validating: this._validating,
425
+ required: baseVm.required,
426
+ visible: baseVm.visible,
427
+ disabled: baseVm.disabled,
428
+ renderer: baseVm.renderer,
429
+ rendererSettings: baseVm.rendererSettings,
430
+ onChange: (value)=>this.setValue(value),
431
+ onBlur: ()=>{
432
+ if (this._form?.submitted) this.validate();
433
+ this.blur();
434
+ },
435
+ focusRequested: baseVm.focusRequested,
436
+ clearFocusRequest: baseVm.clearFocusRequest,
437
+ isList: this.config.isList,
438
+ fields: this.config.isList ? [] : Array.from(this._children.values()).filter((f)=>f.visible).map((f)=>f.vm),
439
+ layout: this.config.isList ? [] : this._resolveLayoutForChildren(this._children, this._activeTemplateId),
440
+ items: this.config.isList ? this._items.map((item, index)=>({
441
+ key: item.key,
442
+ fields: Array.from(item.children.values()).filter((f)=>f.visible).map((f)=>f.vm),
443
+ layout: this._resolveLayoutForChildren(item.children, item.templateId ?? null),
444
+ templateId: item.templateId,
445
+ remove: ()=>this.removeItem(index),
446
+ moveUp: ()=>this.moveItem(index, index - 1),
447
+ moveDown: ()=>this.moveItem(index, index + 1),
448
+ duplicate: ()=>this.duplicateItem(index)
449
+ })) : [],
450
+ addItem: (value)=>void 0 !== value ? this.addItem(value) : this.addItem(),
451
+ removeItem: (index)=>this.removeItem(index),
452
+ moveItem: (from, to)=>this.moveItem(from, to),
453
+ duplicateItem: (index)=>this.duplicateItem(index),
454
+ isTemplated: this.isTemplated,
455
+ availableTemplates: this.availableTemplates,
456
+ activeTemplateId: this._activeTemplateId,
457
+ setTemplate: (templateId)=>this.setTemplate(templateId)
458
+ };
459
+ }
460
+ get hasErrors() {
461
+ const checkChildren = (children)=>{
462
+ for (const [, field] of children){
463
+ if (false === field.vm.validation.isValid) return true;
464
+ if (isObjectField(field) && field.hasErrors) return true;
706
465
  }
707
- }
708
- }
709
- }
710
- if (this.config.isList && this.config.listSchema) {
711
- const listData = this.getData();
712
- const result = await this.config.listSchema.safeParseAsync(listData);
713
- if (!result.success) {
714
- const firstIssue = result.error.issues[0];
715
- runInAction(() => {
466
+ return false;
467
+ };
468
+ if (this.config.isList) {
469
+ for (const item of this._items)if (checkChildren(item.children)) return true;
470
+ } else if (checkChildren(this._children)) return true;
471
+ return false;
472
+ }
473
+ async validate(options) {
474
+ if (!this.visible) {
716
475
  this.setValidation({
717
- isValid: false,
718
- message: firstIssue?.message || "Invalid value."
476
+ isValid: null
719
477
  });
720
- });
721
- return false;
478
+ return true;
722
479
  }
723
- }
724
- if (this.config.schema) {
725
- const data = this.getData();
726
- const result = await this.config.schema.safeParseAsync(data);
727
- if (!result.success) {
728
- const firstIssue = result.error.issues[0];
729
- runInAction(() => {
730
- this.setValidation({
731
- isValid: false,
732
- message: firstIssue?.message || "Invalid value."
480
+ runInAction(()=>{
481
+ this._validating = true;
482
+ });
483
+ try {
484
+ const requiredState = this._base.resolveRequired();
485
+ if (requiredState.required) {
486
+ const message = requiredState.message || "This field is required.";
487
+ if (this.config.isList && 0 === this._items.length) {
488
+ this.setValidation({
489
+ isValid: false,
490
+ message
491
+ });
492
+ return false;
493
+ }
494
+ if (!this.config.isList) if (this.isTemplated) {
495
+ if (null === this._activeTemplateId) {
496
+ this.setValidation({
497
+ isValid: false,
498
+ message
499
+ });
500
+ return false;
501
+ }
502
+ } else {
503
+ const data = this.getData();
504
+ const hasAnyValue = Object.values(data).some((v)=>null != v && "" !== v);
505
+ if (!hasAnyValue) {
506
+ this.setValidation({
507
+ isValid: false,
508
+ message
509
+ });
510
+ return false;
511
+ }
512
+ }
513
+ }
514
+ if (this.config.isList && this.config.listSchema) {
515
+ const listData = this.getData();
516
+ const result = await this.config.listSchema.safeParseAsync(listData);
517
+ if (!result.success) {
518
+ const firstIssue = result.error.issues[0];
519
+ runInAction(()=>{
520
+ this.setValidation({
521
+ isValid: false,
522
+ message: firstIssue?.message || "Invalid value."
523
+ });
524
+ });
525
+ return false;
526
+ }
527
+ }
528
+ if (this.config.schema) {
529
+ const data = this.getData();
530
+ const result = await this.config.schema.safeParseAsync(data);
531
+ if (!result.success) {
532
+ const firstIssue = result.error.issues[0];
533
+ runInAction(()=>{
534
+ this.setValidation({
535
+ isValid: false,
536
+ message: firstIssue?.message || "Invalid value."
537
+ });
538
+ });
539
+ return false;
540
+ }
541
+ }
542
+ let allValid = true;
543
+ if (this.config.isList) for (const item of this._items){
544
+ const valid = await validateChildren(item.children, options);
545
+ if (!valid) allValid = false;
546
+ }
547
+ else allValid = await validateChildren(this._children, options);
548
+ runInAction(()=>{
549
+ this.setValidation({
550
+ isValid: allValid
551
+ });
552
+ });
553
+ return allValid;
554
+ } finally{
555
+ runInAction(()=>{
556
+ this._validating = false;
733
557
  });
734
- });
735
- return false;
736
- }
737
- }
738
- let allValid = true;
739
- if (this.config.isList) {
740
- for (const item of this._items) {
741
- const valid = await validateChildren(item.children, options);
742
- if (!valid) {
743
- allValid = false;
744
- }
745
558
  }
746
- } else {
747
- allValid = await validateChildren(this._children, options);
748
- }
749
- runInAction(() => {
750
- this.setValidation({
751
- isValid: allValid
752
- });
753
- });
754
- return allValid;
755
- } finally {
756
- runInAction(() => {
757
- this._validating = false;
758
- });
759
559
  }
760
- }
761
560
  }
561
+ export { ObjectField, TEMPLATE_DISCRIMINATOR, isObjectField };
762
562
 
763
563
  //# sourceMappingURL=ObjectField.js.map