@webiny/app-admin 6.6.0-alpha.0 → 6.6.0-alpha.2

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 (293) hide show
  1. package/base/Admin.js +17 -2
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base/DefaultFieldRenderers.js +17 -2
  4. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  5. package/base/Base/FieldRenderers/AutoCompleteRenderer.d.ts +13 -0
  6. package/base/Base/FieldRenderers/AutoCompleteRenderer.js +29 -0
  7. package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -0
  8. package/base/Base/FieldRenderers/HorizontalTabsRenderer.d.ts +2 -2
  9. package/base/Base/FieldRenderers/LexicalRenderer.js +10 -6
  10. package/base/Base/FieldRenderers/LexicalRenderer.js.map +1 -1
  11. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js +8 -5
  12. package/base/Base/FieldRenderers/MultiFilePickerRenderer.js.map +1 -1
  13. package/base/Base/FieldRenderers/MultiSelectRenderer.d.ts +15 -0
  14. package/base/Base/FieldRenderers/MultiSelectRenderer.js +31 -0
  15. package/base/Base/FieldRenderers/MultiSelectRenderer.js.map +1 -0
  16. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.d.ts +2 -0
  17. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js +5 -2
  18. package/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js.map +1 -1
  19. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.d.ts +11 -0
  20. package/base/Base/FieldRenderers/ObjectRenderer/{MultiValueDynamicZone.js → MultiValueDynamicZone/MultiValueDynamicZone.js} +65 -14
  21. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -0
  22. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.d.ts +13 -0
  23. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.js +28 -0
  24. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZonePresenter.js.map +1 -0
  25. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.d.ts +15 -0
  26. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.js +5 -0
  27. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/abstractions.js.map +1 -0
  28. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.d.ts +1 -0
  29. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js +11 -0
  30. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js.map +1 -0
  31. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/index.d.ts +2 -0
  32. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/index.js +2 -0
  33. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.d.ts +1 -1
  34. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +19 -3
  35. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  36. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +10 -8
  37. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +34 -3
  38. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  39. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.d.ts +3 -2
  40. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +11 -5
  41. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  42. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +1 -1
  43. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +1 -1
  44. package/base/Base/FieldRenderers/SelectRenderer.d.ts +6 -0
  45. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  46. package/base/Base/FieldRenderers/VerticalTabsRenderer.d.ts +2 -2
  47. package/base/Base/Menus.js +4 -4
  48. package/base/Base/Menus.js.map +1 -1
  49. package/base/createRootContainer.js +4 -2
  50. package/base/createRootContainer.js.map +1 -1
  51. package/components/Drawers/DrawerParamsContext.d.ts +6 -0
  52. package/components/Drawers/DrawerParamsContext.js +10 -0
  53. package/components/Drawers/DrawerParamsContext.js.map +1 -0
  54. package/components/Drawers/DrawersContext.d.ts +13 -0
  55. package/components/Drawers/DrawersContext.js +50 -0
  56. package/components/Drawers/DrawersContext.js.map +1 -0
  57. package/components/Drawers/useDrawers.d.ts +2 -0
  58. package/components/Drawers/useDrawers.js +10 -0
  59. package/components/Drawers/useDrawers.js.map +1 -0
  60. package/components/Filters/Filters.js +4 -3
  61. package/components/Filters/Filters.js.map +1 -1
  62. package/components/IconPicker/IconPickerComponent.d.ts +2 -2
  63. package/components/LexicalEditor/LexicalLinkForm.js +3 -0
  64. package/components/LexicalEditor/LexicalLinkForm.js.map +1 -1
  65. package/components/ListView/ListViewBulkActions.d.ts +2 -2
  66. package/components/ListView/ListViewContent.d.ts +2 -2
  67. package/components/ListView/ListViewFilters.d.ts +2 -2
  68. package/components/ListView/index.d.ts +6 -6
  69. package/components/OverlayLayout/OverlayLayout.js +4 -2
  70. package/components/OverlayLayout/OverlayLayout.js.map +1 -1
  71. package/components/OverlayLayout/components/OverlayContent.js +1 -0
  72. package/components/OverlayLayout/components/OverlayContent.js.map +1 -1
  73. package/components/RolesMultiAutocomplete/index.d.ts +4 -2
  74. package/components/SplitView/SplitView.js +1 -1
  75. package/components/SplitView/SplitView.js.map +1 -1
  76. package/components/Table/components/Table/TableInner.d.ts +2 -2
  77. package/components/TeamAutocomplete/index.d.ts +4 -2
  78. package/components/TeamsMultiAutocomplete/index.d.ts +4 -2
  79. package/components/index.d.ts +0 -1
  80. package/components/index.js +0 -1
  81. package/config/AdminConfig/Breadcrumbs.d.ts +42 -0
  82. package/config/AdminConfig/Breadcrumbs.js +24 -0
  83. package/config/AdminConfig/Breadcrumbs.js.map +1 -0
  84. package/config/AdminConfig/Drawer.d.ts +10 -0
  85. package/config/AdminConfig/Drawer.js +19 -0
  86. package/config/AdminConfig/Drawer.js.map +1 -0
  87. package/config/AdminConfig/LexicalTheme/AllowCustomColors.d.ts +5 -0
  88. package/config/AdminConfig/LexicalTheme/AllowCustomColors.js +18 -0
  89. package/config/AdminConfig/LexicalTheme/AllowCustomColors.js.map +1 -0
  90. package/config/AdminConfig/LexicalTheme.d.ts +2 -0
  91. package/config/AdminConfig/LexicalTheme.js +2 -0
  92. package/config/AdminConfig/LexicalTheme.js.map +1 -1
  93. package/config/AdminConfig.d.ts +8 -0
  94. package/config/AdminConfig.js +8 -1
  95. package/config/AdminConfig.js.map +1 -1
  96. package/exports/admin.d.ts +3 -0
  97. package/exports/admin.js +3 -0
  98. package/features/accessManagement/types.d.ts +3 -3
  99. package/features/aiChat/AiChatGateway.d.ts +30 -0
  100. package/features/aiChat/AiChatGateway.js +41 -0
  101. package/features/aiChat/AiChatGateway.js.map +1 -0
  102. package/features/aiChat/AiChatPresenter.d.ts +32 -0
  103. package/features/aiChat/AiChatPresenter.js +220 -0
  104. package/features/aiChat/AiChatPresenter.js.map +1 -0
  105. package/features/aiChat/abstractions.d.ts +124 -0
  106. package/features/aiChat/abstractions.js +6 -0
  107. package/features/aiChat/abstractions.js.map +1 -0
  108. package/features/aiChat/feature.d.ts +3 -0
  109. package/features/aiChat/feature.js +19 -0
  110. package/features/aiChat/feature.js.map +1 -0
  111. package/features/aiChat/index.d.ts +6 -0
  112. package/features/aiChat/index.js +3 -0
  113. package/features/dateFormatter/DefaultDateFormatter.d.ts +8 -0
  114. package/features/dateFormatter/DefaultDateFormatter.js +25 -0
  115. package/features/dateFormatter/DefaultDateFormatter.js.map +1 -0
  116. package/features/dateFormatter/abstractions.d.ts +13 -0
  117. package/features/dateFormatter/abstractions.js +5 -0
  118. package/features/dateFormatter/abstractions.js.map +1 -0
  119. package/features/dateFormatter/feature.d.ts +3 -0
  120. package/features/dateFormatter/feature.js +17 -0
  121. package/features/dateFormatter/feature.js.map +1 -0
  122. package/features/dateFormatter/index.d.ts +4 -0
  123. package/features/dateFormatter/index.js +4 -0
  124. package/features/dateFormatter/useDateFormatter.d.ts +5 -0
  125. package/features/dateFormatter/useDateFormatter.js +8 -0
  126. package/features/dateFormatter/useDateFormatter.js.map +1 -0
  127. package/features/featureFlags/FeatureFlagsGateway.d.ts +10 -0
  128. package/features/featureFlags/FeatureFlagsGateway.js +40 -0
  129. package/features/featureFlags/FeatureFlagsGateway.js.map +1 -0
  130. package/features/featureFlags/FeatureFlagsService.d.ts +16 -0
  131. package/features/featureFlags/FeatureFlagsService.js +64 -0
  132. package/features/featureFlags/FeatureFlagsService.js.map +1 -0
  133. package/features/featureFlags/abstractions.d.ts +19 -0
  134. package/features/featureFlags/abstractions.js +6 -0
  135. package/features/featureFlags/abstractions.js.map +1 -0
  136. package/features/featureFlags/feature.d.ts +3 -0
  137. package/features/featureFlags/feature.js +19 -0
  138. package/features/featureFlags/feature.js.map +1 -0
  139. package/features/formModel/Field.js +10 -0
  140. package/features/formModel/Field.js.map +1 -1
  141. package/features/formModel/FieldBuilder.js +1 -1
  142. package/features/formModel/FieldBuilder.js.map +1 -1
  143. package/features/formModel/FieldBuilder.test.js +4 -4
  144. package/features/formModel/FieldBuilder.test.js.map +1 -1
  145. package/features/formModel/FormErrors.d.ts +2 -2
  146. package/features/formModel/FormModel.test.js +50 -0
  147. package/features/formModel/FormModel.test.js.map +1 -1
  148. package/features/formModel/FormView.d.ts +8 -4
  149. package/features/formModel/PresenterErrors.d.ts +2 -2
  150. package/features/formModel/demo/FormModelDemo.d.ts +2 -2
  151. package/features/formModel/renderers.d.ts +1 -0
  152. package/features/formModel/renderers.js +1 -0
  153. package/features/notifications/NotificationsRenderer.d.ts +2 -2
  154. package/features/security/AuthenticationContext/ApiStreamClientDecorator.d.ts +22 -0
  155. package/features/security/AuthenticationContext/ApiStreamClientDecorator.js +32 -0
  156. package/features/security/AuthenticationContext/ApiStreamClientDecorator.js.map +1 -0
  157. package/features/security/AuthenticationContext/feature.js +2 -0
  158. package/features/security/AuthenticationContext/feature.js.map +1 -1
  159. package/features/slugify/DefaultSlugify.d.ts +8 -0
  160. package/features/slugify/DefaultSlugify.js +20 -0
  161. package/features/slugify/DefaultSlugify.js.map +1 -0
  162. package/features/slugify/abstractions.d.ts +12 -0
  163. package/features/slugify/abstractions.js +5 -0
  164. package/features/slugify/abstractions.js.map +1 -0
  165. package/features/slugify/feature.d.ts +1 -0
  166. package/features/slugify/feature.js +11 -0
  167. package/features/slugify/feature.js.map +1 -0
  168. package/features/slugify/index.d.ts +3 -0
  169. package/features/slugify/index.js +3 -0
  170. package/features/stringFormatter/DefaultStringFormatter.d.ts +17 -0
  171. package/features/stringFormatter/DefaultStringFormatter.js +19 -0
  172. package/features/stringFormatter/DefaultStringFormatter.js.map +1 -0
  173. package/features/stringFormatter/abstractions.d.ts +11 -0
  174. package/features/stringFormatter/abstractions.js +5 -0
  175. package/features/stringFormatter/abstractions.js.map +1 -0
  176. package/features/stringFormatter/feature.d.ts +3 -0
  177. package/features/stringFormatter/feature.js +19 -0
  178. package/features/stringFormatter/feature.js.map +1 -0
  179. package/features/stringFormatter/index.d.ts +4 -0
  180. package/features/stringFormatter/index.js +4 -0
  181. package/features/stringFormatter/useStringFormatter.d.ts +5 -0
  182. package/features/stringFormatter/useStringFormatter.js +8 -0
  183. package/features/stringFormatter/useStringFormatter.js.map +1 -0
  184. package/features/tenancy/ApiStreamClientDecorator.d.ts +16 -0
  185. package/features/tenancy/ApiStreamClientDecorator.js +30 -0
  186. package/features/tenancy/ApiStreamClientDecorator.js.map +1 -0
  187. package/features/tenancy/feature.js +2 -0
  188. package/features/tenancy/feature.js.map +1 -1
  189. package/features/wcp/ReactLicense.d.ts +6 -0
  190. package/features/wcp/ReactLicense.js +18 -0
  191. package/features/wcp/ReactLicense.js.map +1 -1
  192. package/features/wcp/WcpGateway.js +3 -0
  193. package/features/wcp/WcpGateway.js.map +1 -1
  194. package/hooks/index.d.ts +3 -0
  195. package/hooks/index.js +3 -0
  196. package/hooks/useDrawer.d.ts +9 -0
  197. package/hooks/useDrawer.js +19 -0
  198. package/hooks/useDrawer.js.map +1 -0
  199. package/hooks/useHotkeys.js +5 -3
  200. package/hooks/useHotkeys.js.map +1 -1
  201. package/hooks/useOpenDrawer.d.ts +7 -0
  202. package/hooks/useOpenDrawer.js +18 -0
  203. package/hooks/useOpenDrawer.js.map +1 -0
  204. package/hooks/useSnackbar.js.map +1 -1
  205. package/index.d.ts +18 -1
  206. package/index.js +23 -12
  207. package/modules/AccessManagementExtension.js +46 -22
  208. package/modules/AccessManagementExtension.js.map +1 -1
  209. package/package.json +31 -28
  210. package/presentation/accessManagement/SecurityPermissions.js +3 -3
  211. package/presentation/accessManagement/SecurityPermissions.js.map +1 -1
  212. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.d.ts +3 -1
  213. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +13 -16
  214. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
  215. package/presentation/accessManagement/apiKeys/components/ApiKeysView.d.ts +2 -2
  216. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js +13 -7
  217. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js.map +1 -1
  218. package/presentation/accessManagement/roles/RolesPresenter.d.ts +3 -1
  219. package/presentation/accessManagement/roles/RolesPresenter.js +11 -14
  220. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
  221. package/presentation/accessManagement/roles/components/RolesView.d.ts +2 -2
  222. package/presentation/accessManagement/roles/components/RolesView.js +10 -6
  223. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
  224. package/presentation/accessManagement/teams/TeamsPresenter.d.ts +3 -1
  225. package/presentation/accessManagement/teams/TeamsPresenter.js +11 -14
  226. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
  227. package/presentation/accessManagement/teams/components/TeamsView.d.ts +2 -2
  228. package/presentation/accessManagement/teams/components/TeamsView.js +10 -6
  229. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
  230. package/presentation/commandPalette/CommandPalettePresenter.d.ts +21 -0
  231. package/presentation/commandPalette/CommandPalettePresenter.js +91 -0
  232. package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -0
  233. package/presentation/commandPalette/abstractions.d.ts +76 -0
  234. package/presentation/commandPalette/abstractions.js +7 -0
  235. package/presentation/commandPalette/abstractions.js.map +1 -0
  236. package/presentation/commandPalette/commands/AskAiCommand.d.ts +25 -0
  237. package/presentation/commandPalette/commands/AskAiCommand.js +33 -0
  238. package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -0
  239. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.d.ts +15 -0
  240. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.js +33 -0
  241. package/presentation/commandPalette/commands/CopyCurrentUrlCommand.js.map +1 -0
  242. package/presentation/commandPalette/commands/SendMessageCommand.d.ts +23 -0
  243. package/presentation/commandPalette/commands/SendMessageCommand.js +66 -0
  244. package/presentation/commandPalette/commands/SendMessageCommand.js.map +1 -0
  245. package/presentation/commandPalette/commands/SignOutCommand.d.ts +18 -0
  246. package/presentation/commandPalette/commands/SignOutCommand.js +37 -0
  247. package/presentation/commandPalette/commands/SignOutCommand.js.map +1 -0
  248. package/presentation/commandPalette/commands/feature.d.ts +5 -0
  249. package/presentation/commandPalette/commands/feature.js +17 -0
  250. package/presentation/commandPalette/commands/feature.js.map +1 -0
  251. package/presentation/commandPalette/feature.d.ts +3 -0
  252. package/presentation/commandPalette/feature.js +17 -0
  253. package/presentation/commandPalette/feature.js.map +1 -0
  254. package/presentation/commandPalette/index.d.ts +3 -0
  255. package/presentation/commandPalette/index.js +2 -0
  256. package/presentation/featureFlags/FeatureFlagsProvider.d.ts +7 -0
  257. package/presentation/featureFlags/FeatureFlagsProvider.js +22 -0
  258. package/presentation/featureFlags/FeatureFlagsProvider.js.map +1 -0
  259. package/presentation/featureFlags/useFeatureFlags.d.ts +2 -0
  260. package/presentation/featureFlags/useFeatureFlags.js +17 -0
  261. package/presentation/featureFlags/useFeatureFlags.js.map +1 -0
  262. package/presentation/installation/components/SystemInstaller/SystemInstaller.d.ts +2 -2
  263. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js +0 -3
  264. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
  265. package/presentation/listPresenter/FolderAwareDataSource.js +4 -1
  266. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
  267. package/presentation/listPresenter/QueryMatcher.js +2 -2
  268. package/presentation/listPresenter/QueryMatcher.js.map +1 -1
  269. package/presentation/sortable/SortablePresenter.d.ts +23 -0
  270. package/presentation/sortable/SortablePresenter.js +175 -0
  271. package/presentation/sortable/SortablePresenter.js.map +1 -0
  272. package/presentation/sortable/abstractions.d.ts +24 -0
  273. package/presentation/sortable/abstractions.js +5 -0
  274. package/presentation/sortable/abstractions.js.map +1 -0
  275. package/presentation/sortable/feature.d.ts +1 -0
  276. package/presentation/sortable/feature.js +11 -0
  277. package/presentation/sortable/feature.js.map +1 -0
  278. package/presentation/sortable/index.d.ts +2 -0
  279. package/presentation/sortable/index.js +2 -0
  280. package/presentation/trashBin/components/BulkActions/DeleteItems.d.ts +2 -2
  281. package/presentation/trashBin/components/BulkActions/RestoreItems.d.ts +2 -2
  282. package/presentation/trashBin/components/TrashBinOverlay.d.ts +2 -2
  283. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.d.ts +0 -10
  284. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone.js.map +0 -1
  285. package/base/Base/Menus/WebinyVersion.d.ts +0 -2
  286. package/base/Base/Menus/WebinyVersion.js +0 -23
  287. package/base/Base/Menus/WebinyVersion.js.map +0 -1
  288. package/base/WebinyVersion.d.ts +0 -2
  289. package/base/WebinyVersion.js +0 -23
  290. package/base/WebinyVersion.js.map +0 -1
  291. package/components/Wcp.d.ts +0 -19
  292. package/components/Wcp.js +0 -37
  293. package/components/Wcp.js.map +0 -1
package/base/Admin.js CHANGED
@@ -6,36 +6,50 @@ import { createUiStateProvider } from "./providers/UiStateProvider.js";
6
6
  import { createAdminUiStateProvider } from "./providers/AdminUiStateProvider.js";
7
7
  import { createUiProviders } from "./providers/UiProviders.js";
8
8
  import { createDialogsProvider } from "../components/Dialogs/DialogsContext.js";
9
+ import { createDrawersProvider } from "../components/Drawers/DrawersContext.js";
9
10
  import { DefaultIcons, IconPickerConfigProvider } from "../components/IconPicker/config/index.js";
10
11
  import { createRootContainer } from "./createRootContainer.js";
11
- import { WcpProvider } from "../presentation/wcp/WcpProvider.js";
12
+ import { FeatureFlagsProvider } from "../presentation/featureFlags/FeatureFlagsProvider.js";
12
13
  import { createTenancyProvider } from "../presentation/tenancy/createTenancyProvider.js";
13
14
  import { TelemetryAdminAppStart } from "./TelemetryAdminAppStart.js";
14
15
  import { SecurityFeature } from "../features/security/SecurityFeature.js";
15
16
  import { FormModelFeature } from "../features/formModel/feature.js";
16
17
  import { AdminConfigPlugin, AdminConfigProvider } from "../config/AdminConfig.js";
17
18
  import { WebinySdkFeature } from "../features/webinySdk/feature.js";
19
+ import { DateFormatterFeature } from "../features/dateFormatter/feature.js";
20
+ import { StringFormatterFeature } from "../features/stringFormatter/feature.js";
18
21
  import { ListPresenterFeature } from "../presentation/listPresenter/index.js";
22
+ import { SortableFeature } from "../presentation/sortable/index.js";
19
23
  import { NotificationsRenderer } from "../features/notifications/NotificationsRenderer.js";
20
24
  import { ListCustomIconsFeature } from "../features/iconPicker/listCustomIcons/feature.js";
21
25
  import { CustomIconsPresenterFeature } from "../presentation/iconPicker/customIcons/feature.js";
26
+ import { CommandPaletteFeature } from "../presentation/commandPalette/index.js";
27
+ import { AiChatFeature } from "../features/aiChat/index.js";
28
+ import { AdminCommandsFeature } from "../presentation/commandPalette/commands/feature.js";
22
29
  const container = createRootContainer();
23
30
  const Admin = ({ children, createLegacyPlugins })=>{
24
31
  if (createLegacyPlugins) plugins.register(...createLegacyPlugins(container));
25
32
  SecurityFeature.register(container);
33
+ DateFormatterFeature.register(container);
34
+ StringFormatterFeature.register(container);
26
35
  FormModelFeature.register(container);
27
36
  WebinySdkFeature.register(container);
28
37
  ListPresenterFeature.register(container);
29
38
  ListCustomIconsFeature.register(container);
30
39
  CustomIconsPresenterFeature.register(container);
40
+ AiChatFeature.register(container);
41
+ CommandPaletteFeature.register(container);
42
+ AdminCommandsFeature.register(container);
43
+ SortableFeature.register(container);
31
44
  const UIProviders = createUiProviders();
32
45
  const UiStateProvider = createUiStateProvider();
33
46
  const AdminUiStateProvider = createAdminUiStateProvider();
34
47
  const DialogsProvider = createDialogsProvider();
48
+ const DrawersProvider = createDrawersProvider();
35
49
  const TenancyProvider = createTenancyProvider();
36
50
  return /*#__PURE__*/ react.createElement(DiContainerProvider, {
37
51
  container: container
38
- }, /*#__PURE__*/ react.createElement(TelemetryAdminAppStart, null), /*#__PURE__*/ react.createElement(WcpProvider, null, /*#__PURE__*/ react.createElement(App, {
52
+ }, /*#__PURE__*/ react.createElement(TelemetryAdminAppStart, null), /*#__PURE__*/ react.createElement(FeatureFlagsProvider, null, /*#__PURE__*/ react.createElement(App, {
39
53
  plugins: [
40
54
  AdminConfigPlugin
41
55
  ],
@@ -45,6 +59,7 @@ const Admin = ({ children, createLegacyPlugins })=>{
45
59
  UIProviders,
46
60
  UiStateProvider,
47
61
  DialogsProvider,
62
+ DrawersProvider,
48
63
  IconPickerConfigProvider,
49
64
  AdminUiStateProvider,
50
65
  TenancyProvider
package/base/Admin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base/Admin.js","sources":["../../src/base/Admin.tsx"],"sourcesContent":["import React from \"react\";\nimport type { Container } from \"@webiny/di\";\nimport { plugins } from \"@webiny/plugins\";\nimport { App, DiContainerProvider } from \"@webiny/app\";\nimport { Base } from \"./Base.js\";\nimport { createUiStateProvider } from \"./providers/UiStateProvider.js\";\nimport { createAdminUiStateProvider } from \"./providers/AdminUiStateProvider.js\";\nimport { createUiProviders } from \"./providers/UiProviders.js\";\nimport { createDialogsProvider } from \"~/components/Dialogs/DialogsContext.js\";\nimport { DefaultIcons, IconPickerConfigProvider } from \"~/components/IconPicker/config/index.js\";\nimport { createRootContainer } from \"~/base/createRootContainer.js\";\nimport { WcpProvider } from \"~/presentation/wcp/WcpProvider.js\";\nimport { createTenancyProvider } from \"~/presentation/tenancy/createTenancyProvider.js\";\nimport { TelemetryAdminAppStart } from \"./TelemetryAdminAppStart.js\";\nimport { SecurityFeature } from \"~/features/security/SecurityFeature.js\";\nimport { FormModelFeature } from \"~/features/formModel/feature.js\";\nimport type { PluginCollection } from \"@webiny/plugins/types.js\";\nimport { AdminConfigPlugin, AdminConfigProvider } from \"~/config/AdminConfig.js\";\nimport { WebinySdkFeature } from \"~/features/webinySdk/feature.js\";\nimport { ListPresenterFeature } from \"~/presentation/listPresenter/index.js\";\nimport { NotificationsRenderer } from \"~/features/notifications/NotificationsRenderer.js\";\nimport { ListCustomIconsFeature } from \"~/features/iconPicker/listCustomIcons/feature.js\";\nimport { CustomIconsPresenterFeature } from \"~/presentation/iconPicker/customIcons/feature.js\";\n\nexport interface AdminProps {\n createLegacyPlugins?: (container: Container) => PluginCollection;\n children?: React.ReactNode;\n}\n\nconst container = createRootContainer();\n\nexport const Admin = ({ children, createLegacyPlugins }: AdminProps) => {\n if (createLegacyPlugins) {\n plugins.register(...createLegacyPlugins(container));\n }\n\n SecurityFeature.register(container);\n FormModelFeature.register(container);\n WebinySdkFeature.register(container);\n ListPresenterFeature.register(container);\n ListCustomIconsFeature.register(container);\n CustomIconsPresenterFeature.register(container);\n\n const UIProviders = createUiProviders();\n const UiStateProvider = createUiStateProvider();\n const AdminUiStateProvider = createAdminUiStateProvider();\n const DialogsProvider = createDialogsProvider();\n const TenancyProvider = createTenancyProvider();\n\n return (\n <DiContainerProvider container={container}>\n <TelemetryAdminAppStart />\n <WcpProvider>\n <App\n plugins={[AdminConfigPlugin]}\n routes={[]}\n providers={[\n AdminConfigProvider,\n UIProviders,\n UiStateProvider,\n DialogsProvider,\n IconPickerConfigProvider,\n AdminUiStateProvider,\n TenancyProvider\n ]}\n >\n <Base />\n <DefaultIcons />\n <NotificationsRenderer />\n {children}\n </App>\n </WcpProvider>\n </DiContainerProvider>\n );\n};\n"],"names":["container","createRootContainer","Admin","children","createLegacyPlugins","plugins","SecurityFeature","FormModelFeature","WebinySdkFeature","ListPresenterFeature","ListCustomIconsFeature","CustomIconsPresenterFeature","UIProviders","createUiProviders","UiStateProvider","createUiStateProvider","AdminUiStateProvider","createAdminUiStateProvider","DialogsProvider","createDialogsProvider","TenancyProvider","createTenancyProvider","DiContainerProvider","TelemetryAdminAppStart","WcpProvider","App","AdminConfigPlugin","AdminConfigProvider","IconPickerConfigProvider","Base","DefaultIcons","NotificationsRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,YAAYC;AAEX,MAAMC,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,mBAAmB,EAAc;IAC/D,IAAIA,qBACAC,QAAQ,QAAQ,IAAID,oBAAoBJ;IAG5CM,gBAAgB,QAAQ,CAACN;IACzBO,iBAAiB,QAAQ,CAACP;IAC1BQ,iBAAiB,QAAQ,CAACR;IAC1BS,qBAAqB,QAAQ,CAACT;IAC9BU,uBAAuB,QAAQ,CAACV;IAChCW,4BAA4B,QAAQ,CAACX;IAErC,MAAMY,cAAcC;IACpB,MAAMC,kBAAkBC;IACxB,MAAMC,uBAAuBC;IAC7B,MAAMC,kBAAkBC;IACxB,MAAMC,kBAAkBC;IAExB,OAAO,WAAP,GACI,oBAACC,qBAAmBA;QAAC,WAAWtB;qBAC5B,oBAACuB,wBAAsBA,OAAAA,WAAAA,GACvB,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACC,KAAGA;QACA,SAAS;YAACC;SAAkB;QAC5B,QAAQ,EAAE;QACV,WAAW;YACPC;YACAf;YACAE;YACAI;YACAU;YACAZ;YACAI;SACH;qBAED,oBAACS,MAAIA,OAAAA,WAAAA,GACL,oBAACC,cAAYA,OAAAA,WAAAA,GACb,oBAACC,uBAAqBA,OACrB5B;AAKrB"}
1
+ {"version":3,"file":"base/Admin.js","sources":["../../src/base/Admin.tsx"],"sourcesContent":["import React from \"react\";\nimport type { Container } from \"@webiny/di\";\nimport { plugins } from \"@webiny/plugins\";\nimport { App, DiContainerProvider } from \"@webiny/app\";\nimport { Base } from \"./Base.js\";\nimport { createUiStateProvider } from \"./providers/UiStateProvider.js\";\nimport { createAdminUiStateProvider } from \"./providers/AdminUiStateProvider.js\";\nimport { createUiProviders } from \"./providers/UiProviders.js\";\nimport { createDialogsProvider } from \"~/components/Dialogs/DialogsContext.js\";\nimport { createDrawersProvider } from \"~/components/Drawers/DrawersContext.js\";\nimport { DefaultIcons, IconPickerConfigProvider } from \"~/components/IconPicker/config/index.js\";\nimport { createRootContainer } from \"~/base/createRootContainer.js\";\nimport { FeatureFlagsProvider } from \"~/presentation/featureFlags/FeatureFlagsProvider.js\";\nimport { createTenancyProvider } from \"~/presentation/tenancy/createTenancyProvider.js\";\nimport { TelemetryAdminAppStart } from \"./TelemetryAdminAppStart.js\";\nimport { SecurityFeature } from \"~/features/security/SecurityFeature.js\";\nimport { FormModelFeature } from \"~/features/formModel/feature.js\";\nimport type { PluginCollection } from \"@webiny/plugins/types.js\";\nimport { AdminConfigPlugin, AdminConfigProvider } from \"~/config/AdminConfig.js\";\nimport { WebinySdkFeature } from \"~/features/webinySdk/feature.js\";\nimport { DateFormatterFeature } from \"~/features/dateFormatter/feature.js\";\nimport { StringFormatterFeature } from \"~/features/stringFormatter/feature.js\";\nimport { ListPresenterFeature } from \"~/presentation/listPresenter/index.js\";\nimport { SortableFeature } from \"~/presentation/sortable/index.js\";\nimport { NotificationsRenderer } from \"~/features/notifications/NotificationsRenderer.js\";\nimport { ListCustomIconsFeature } from \"~/features/iconPicker/listCustomIcons/feature.js\";\nimport { CustomIconsPresenterFeature } from \"~/presentation/iconPicker/customIcons/feature.js\";\nimport { CommandPaletteFeature } from \"~/presentation/commandPalette/index.js\";\nimport { AiChatFeature } from \"~/features/aiChat/index.js\";\nimport { AdminCommandsFeature } from \"~/presentation/commandPalette/commands/feature.js\";\n\nexport interface AdminProps {\n createLegacyPlugins?: (container: Container) => PluginCollection;\n children?: React.ReactNode;\n}\n\nconst container = createRootContainer();\n\nexport const Admin = ({ children, createLegacyPlugins }: AdminProps) => {\n if (createLegacyPlugins) {\n plugins.register(...createLegacyPlugins(container));\n }\n\n SecurityFeature.register(container);\n DateFormatterFeature.register(container);\n StringFormatterFeature.register(container);\n FormModelFeature.register(container);\n WebinySdkFeature.register(container);\n ListPresenterFeature.register(container);\n ListCustomIconsFeature.register(container);\n CustomIconsPresenterFeature.register(container);\n AiChatFeature.register(container);\n CommandPaletteFeature.register(container);\n AdminCommandsFeature.register(container);\n SortableFeature.register(container);\n\n const UIProviders = createUiProviders();\n const UiStateProvider = createUiStateProvider();\n const AdminUiStateProvider = createAdminUiStateProvider();\n const DialogsProvider = createDialogsProvider();\n const DrawersProvider = createDrawersProvider();\n const TenancyProvider = createTenancyProvider();\n\n return (\n <DiContainerProvider container={container}>\n <TelemetryAdminAppStart />\n <FeatureFlagsProvider>\n <App\n plugins={[AdminConfigPlugin]}\n routes={[]}\n providers={[\n AdminConfigProvider,\n UIProviders,\n UiStateProvider,\n DialogsProvider,\n DrawersProvider,\n IconPickerConfigProvider,\n AdminUiStateProvider,\n TenancyProvider\n ]}\n >\n <Base />\n <DefaultIcons />\n <NotificationsRenderer />\n {children}\n </App>\n </FeatureFlagsProvider>\n </DiContainerProvider>\n );\n};\n"],"names":["container","createRootContainer","Admin","children","createLegacyPlugins","plugins","SecurityFeature","DateFormatterFeature","StringFormatterFeature","FormModelFeature","WebinySdkFeature","ListPresenterFeature","ListCustomIconsFeature","CustomIconsPresenterFeature","AiChatFeature","CommandPaletteFeature","AdminCommandsFeature","SortableFeature","UIProviders","createUiProviders","UiStateProvider","createUiStateProvider","AdminUiStateProvider","createAdminUiStateProvider","DialogsProvider","createDialogsProvider","DrawersProvider","createDrawersProvider","TenancyProvider","createTenancyProvider","DiContainerProvider","TelemetryAdminAppStart","FeatureFlagsProvider","App","AdminConfigPlugin","AdminConfigProvider","IconPickerConfigProvider","Base","DefaultIcons","NotificationsRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAMA,YAAYC;AAEX,MAAMC,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,mBAAmB,EAAc;IAC/D,IAAIA,qBACAC,QAAQ,QAAQ,IAAID,oBAAoBJ;IAG5CM,gBAAgB,QAAQ,CAACN;IACzBO,qBAAqB,QAAQ,CAACP;IAC9BQ,uBAAuB,QAAQ,CAACR;IAChCS,iBAAiB,QAAQ,CAACT;IAC1BU,iBAAiB,QAAQ,CAACV;IAC1BW,qBAAqB,QAAQ,CAACX;IAC9BY,uBAAuB,QAAQ,CAACZ;IAChCa,4BAA4B,QAAQ,CAACb;IACrCc,cAAc,QAAQ,CAACd;IACvBe,sBAAsB,QAAQ,CAACf;IAC/BgB,qBAAqB,QAAQ,CAAChB;IAC9BiB,gBAAgB,QAAQ,CAACjB;IAEzB,MAAMkB,cAAcC;IACpB,MAAMC,kBAAkBC;IACxB,MAAMC,uBAAuBC;IAC7B,MAAMC,kBAAkBC;IACxB,MAAMC,kBAAkBC;IACxB,MAAMC,kBAAkBC;IAExB,OAAO,WAAP,GACI,oBAACC,qBAAmBA;QAAC,WAAW9B;qBAC5B,oBAAC+B,wBAAsBA,OAAAA,WAAAA,GACvB,oBAACC,sBAAoBA,MAAAA,WAAAA,GACjB,oBAACC,KAAGA;QACA,SAAS;YAACC;SAAkB;QAC5B,QAAQ,EAAE;QACV,WAAW;YACPC;YACAjB;YACAE;YACAI;YACAE;YACAU;YACAd;YACAM;SACH;qBAED,oBAACS,MAAIA,OAAAA,WAAAA,GACL,oBAACC,cAAYA,OAAAA,WAAAA,GACb,oBAACC,uBAAqBA,OACrBpC;AAKrB"}
@@ -30,12 +30,27 @@ import { PermissionsRenderer } from "./FieldRenderers/PermissionsRenderer.js";
30
30
  import { RolesMultiSelectRenderer } from "./FieldRenderers/RolesMultiSelectRenderer.js";
31
31
  import { ApiKeyTokenRenderer } from "./FieldRenderers/ApiKeyTokenRenderer.js";
32
32
  import { MultiAutoCompleteRenderer } from "./FieldRenderers/MultiAutoCompleteRenderer.js";
33
- const DefaultFieldRenderers = ()=>/*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
33
+ import { AutoCompleteRenderer } from "./FieldRenderers/AutoCompleteRenderer.js";
34
+ import { MultiSelectRenderer } from "./FieldRenderers/MultiSelectRenderer.js";
35
+ import { RegisterFeature } from "../../exports/admin.js";
36
+ import { MultiValueDynamicZoneFeature } from "./FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js";
37
+ const DefaultFieldRenderers = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
38
+ feature: MultiValueDynamicZoneFeature
39
+ }), /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
34
40
  name: "textInput",
35
41
  component: InputRenderer
36
42
  }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
37
43
  name: "textarea",
38
44
  component: TextareaRenderer
45
+ }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
46
+ name: "select",
47
+ component: SelectRenderer
48
+ }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
49
+ name: "autoComplete",
50
+ component: AutoCompleteRenderer
51
+ }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
52
+ name: "multiSelect",
53
+ component: MultiSelectRenderer
39
54
  }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
40
55
  name: "dropdown",
41
56
  component: SelectRenderer
@@ -120,7 +135,7 @@ const DefaultFieldRenderers = ()=>/*#__PURE__*/ react.createElement(AdminConfig,
120
135
  }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
121
136
  name: "multiAutoComplete",
122
137
  component: MultiAutoCompleteRenderer
123
- }));
138
+ })));
124
139
  export { DefaultFieldRenderers };
125
140
 
126
141
  //# sourceMappingURL=DefaultFieldRenderers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base/Base/DefaultFieldRenderers.js","sources":["../../../src/base/Base/DefaultFieldRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { InputRenderer } from \"~/base/Base/FieldRenderers/InputRenderer.js\";\nimport { SelectRenderer } from \"~/base/Base/FieldRenderers/SelectRenderer.js\";\nimport { ObjectRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js\";\nimport { ObjectAccordionMultipleRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js\";\nimport { DynamicZoneRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js\";\nimport { PassthroughRenderer } from \"~/base/Base/FieldRenderers/PassthroughRenderer.js\";\nimport { TextareaRenderer } from \"~/base/Base/FieldRenderers/TextareaRenderer.js\";\nimport { SwitchRenderer } from \"~/base/Base/FieldRenderers/SwitchRenderer.js\";\nimport { NumberInputRenderer } from \"~/base/Base/FieldRenderers/NumberInputRenderer.js\";\nimport { NumberInputsRenderer } from \"~/base/Base/FieldRenderers/NumberInputsRenderer.js\";\nimport { TextInputsRenderer } from \"~/base/Base/FieldRenderers/TextInputsRenderer.js\";\nimport { TextareasRenderer } from \"~/base/Base/FieldRenderers/TextareasRenderer.js\";\nimport { TagsRenderer } from \"~/base/Base/FieldRenderers/TagsRenderer.js\";\nimport { RadioButtonsRenderer } from \"~/base/Base/FieldRenderers/RadioButtonsRenderer.js\";\nimport { CheckboxesRenderer } from \"~/base/Base/FieldRenderers/CheckboxesRenderer.js\";\nimport { DateTimeRenderer } from \"~/base/Base/FieldRenderers/DateTimeRenderer.js\";\nimport { DateTimeInputsRenderer } from \"~/base/Base/FieldRenderers/DateTimeInputsRenderer.js\";\nimport { HiddenRenderer } from \"~/base/Base/FieldRenderers/HiddenRenderer.js\";\nimport { KeyValueTagsRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js\";\nimport { FilePickerRenderer } from \"~/base/Base/FieldRenderers/FilePickerRenderer.js\";\nimport { FileUrlPickerRenderer } from \"~/base/Base/FieldRenderers/FileUrlPickerRenderer.js\";\nimport { MultiFilePickerRenderer } from \"~/base/Base/FieldRenderers/MultiFilePickerRenderer.js\";\nimport { CodeEditorRenderer } from \"~/base/Base/FieldRenderers/CodeEditorRenderer.js\";\nimport { LexicalRenderer } from \"~/base/Base/FieldRenderers/LexicalRenderer.js\";\nimport { LexicalEditorsRenderer } from \"~/base/Base/FieldRenderers/LexicalEditorsRenderer.js\";\nimport { PasswordInputRenderer } from \"~/base/Base/FieldRenderers/PasswordInputRenderer.js\";\nimport { PermissionsRenderer } from \"~/base/Base/FieldRenderers/PermissionsRenderer.js\";\nimport { RolesMultiSelectRenderer } from \"~/base/Base/FieldRenderers/RolesMultiSelectRenderer.js\";\nimport { ApiKeyTokenRenderer } from \"~/base/Base/FieldRenderers/ApiKeyTokenRenderer.js\";\nimport { MultiAutoCompleteRenderer } from \"~/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"textInput\"} component={InputRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textarea\"} component={TextareaRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dropdown\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionSingle\"}\n component={ObjectRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionMultiple\"}\n component={ObjectAccordionMultipleRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"dynamicZone\"} component={DynamicZoneRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"passthrough\"} component={PassthroughRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"switch\"} component={SwitchRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"numberInput\"} component={NumberInputRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"numberInputs\"}\n component={NumberInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"textInputs\"} component={TextInputsRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textareas\"} component={TextareasRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"tags\"} component={TagsRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"radioButtons\"}\n component={RadioButtonsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"checkboxes\"} component={CheckboxesRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dateTimeInput\"} component={DateTimeRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"dateTimeInputs\"}\n component={DateTimeInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"hidden\"} component={HiddenRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"keyValueTags\"}\n component={KeyValueTagsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"filePicker\"} component={FilePickerRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"multiFilePicker\"}\n component={MultiFilePickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"fileUrlPicker\"}\n component={FileUrlPickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"codeEditor\"} component={CodeEditorRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"lexical\"} component={LexicalRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"lexicalEditors\"}\n component={LexicalEditorsRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"passwordInput\"}\n component={PasswordInputRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"permissions\"} component={PermissionsRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"rolesMultiSelect\"}\n component={RolesMultiSelectRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"apiKeyToken\"} component={ApiKeyTokenRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"multiAutoComplete\"}\n component={MultiAutoCompleteRenderer}\n />\n </AdminConfig>\n );\n};\n"],"names":["DefaultFieldRenderers","AdminConfig","InputRenderer","TextareaRenderer","SelectRenderer","ObjectRenderer","ObjectAccordionMultipleRenderer","DynamicZoneRenderer","PassthroughRenderer","SwitchRenderer","NumberInputRenderer","NumberInputsRenderer","TextInputsRenderer","TextareasRenderer","TagsRenderer","RadioButtonsRenderer","CheckboxesRenderer","DateTimeRenderer","DateTimeInputsRenderer","HiddenRenderer","KeyValueTagsRenderer","FilePickerRenderer","MultiFilePickerRenderer","FileUrlPickerRenderer","CodeEditorRenderer","LexicalRenderer","LexicalEditorsRenderer","PasswordInputRenderer","PermissionsRenderer","RolesMultiSelectRenderer","ApiKeyTokenRenderer","MultiAutoCompleteRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCO,MAAMA,wBAAwB,IAC1B,WAAP,GACI,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWC;sBAC9D,oBAACD,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWE;sBAC7D,oBAACF,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWG;sBAC7D,oBAACH,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWI;sBAEf,oBAACJ,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWK;sBAEf,oBAACL,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWM;sBAChE,oBAACN,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWO;sBAChE,oBAACP,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWQ;sBAC3D,oBAACR,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWS;sBAChE,oBAACT,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWU;sBAEf,oBAACV,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWW;sBAC/D,oBAACX,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWY;sBAC9D,oBAACZ,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAQ,WAAWa;sBACzD,oBAACb,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWc;sBAEf,oBAACd,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWe;sBAC/D,oBAACf,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAiB,WAAWgB;sBAClE,oBAAChB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWiB;sBAEf,oBAACjB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWkB;sBAC3D,oBAAClB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWmB;sBAEf,oBAACnB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWoB;sBAC/D,oBAACpB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWqB;sBAEf,oBAACrB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWsB;sBAEf,oBAACtB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWuB;sBAC/D,oBAACvB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAW,WAAWwB;sBAC5D,oBAACxB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWyB;sBAEf,oBAACzB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW0B;sBAEf,oBAAC1B,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAW2B;sBAChE,oBAAC3B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW4B;sBAEf,oBAAC5B,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAW6B;sBAChE,oBAAC7B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW8B"}
1
+ {"version":3,"file":"base/Base/DefaultFieldRenderers.js","sources":["../../../src/base/Base/DefaultFieldRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { InputRenderer } from \"~/base/Base/FieldRenderers/InputRenderer.js\";\nimport { SelectRenderer } from \"~/base/Base/FieldRenderers/SelectRenderer.js\";\nimport { ObjectRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js\";\nimport { ObjectAccordionMultipleRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js\";\nimport { DynamicZoneRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js\";\nimport { PassthroughRenderer } from \"~/base/Base/FieldRenderers/PassthroughRenderer.js\";\nimport { TextareaRenderer } from \"~/base/Base/FieldRenderers/TextareaRenderer.js\";\nimport { SwitchRenderer } from \"~/base/Base/FieldRenderers/SwitchRenderer.js\";\nimport { NumberInputRenderer } from \"~/base/Base/FieldRenderers/NumberInputRenderer.js\";\nimport { NumberInputsRenderer } from \"~/base/Base/FieldRenderers/NumberInputsRenderer.js\";\nimport { TextInputsRenderer } from \"~/base/Base/FieldRenderers/TextInputsRenderer.js\";\nimport { TextareasRenderer } from \"~/base/Base/FieldRenderers/TextareasRenderer.js\";\nimport { TagsRenderer } from \"~/base/Base/FieldRenderers/TagsRenderer.js\";\nimport { RadioButtonsRenderer } from \"~/base/Base/FieldRenderers/RadioButtonsRenderer.js\";\nimport { CheckboxesRenderer } from \"~/base/Base/FieldRenderers/CheckboxesRenderer.js\";\nimport { DateTimeRenderer } from \"~/base/Base/FieldRenderers/DateTimeRenderer.js\";\nimport { DateTimeInputsRenderer } from \"~/base/Base/FieldRenderers/DateTimeInputsRenderer.js\";\nimport { HiddenRenderer } from \"~/base/Base/FieldRenderers/HiddenRenderer.js\";\nimport { KeyValueTagsRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js\";\nimport { FilePickerRenderer } from \"~/base/Base/FieldRenderers/FilePickerRenderer.js\";\nimport { FileUrlPickerRenderer } from \"~/base/Base/FieldRenderers/FileUrlPickerRenderer.js\";\nimport { MultiFilePickerRenderer } from \"~/base/Base/FieldRenderers/MultiFilePickerRenderer.js\";\nimport { CodeEditorRenderer } from \"~/base/Base/FieldRenderers/CodeEditorRenderer.js\";\nimport { LexicalRenderer } from \"~/base/Base/FieldRenderers/LexicalRenderer.js\";\nimport { LexicalEditorsRenderer } from \"~/base/Base/FieldRenderers/LexicalEditorsRenderer.js\";\nimport { PasswordInputRenderer } from \"~/base/Base/FieldRenderers/PasswordInputRenderer.js\";\nimport { PermissionsRenderer } from \"~/base/Base/FieldRenderers/PermissionsRenderer.js\";\nimport { RolesMultiSelectRenderer } from \"~/base/Base/FieldRenderers/RolesMultiSelectRenderer.js\";\nimport { ApiKeyTokenRenderer } from \"~/base/Base/FieldRenderers/ApiKeyTokenRenderer.js\";\nimport { MultiAutoCompleteRenderer } from \"~/base/Base/FieldRenderers/MultiAutoCompleteRenderer.js\";\nimport { AutoCompleteRenderer } from \"~/base/Base/FieldRenderers/AutoCompleteRenderer.js\";\nimport { MultiSelectRenderer } from \"~/base/Base/FieldRenderers/MultiSelectRenderer.js\";\nimport { RegisterFeature } from \"~/exports/admin.js\";\nimport { MultiValueDynamicZoneFeature } from \"~/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/feature.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <>\n <RegisterFeature feature={MultiValueDynamicZoneFeature} />\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"textInput\"} component={InputRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textarea\"} component={TextareaRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"select\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"autoComplete\"}\n component={AutoCompleteRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"multiSelect\"}\n component={MultiSelectRenderer}\n />\n {/* @deprecated \"dropdown\" is for BC only./ */}\n <AdminConfig.Form.FieldRenderer name={\"dropdown\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionSingle\"}\n component={ObjectRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionMultiple\"}\n component={ObjectAccordionMultipleRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"dynamicZone\"}\n component={DynamicZoneRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"passthrough\"}\n component={PassthroughRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"switch\"} component={SwitchRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"numberInput\"}\n component={NumberInputRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"numberInputs\"}\n component={NumberInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"textInputs\"}\n component={TextInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"textareas\"} component={TextareasRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"tags\"} component={TagsRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"radioButtons\"}\n component={RadioButtonsRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"checkboxes\"}\n component={CheckboxesRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"dateTimeInput\"}\n component={DateTimeRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"dateTimeInputs\"}\n component={DateTimeInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"hidden\"} component={HiddenRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"keyValueTags\"}\n component={KeyValueTagsRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"filePicker\"}\n component={FilePickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"multiFilePicker\"}\n component={MultiFilePickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"fileUrlPicker\"}\n component={FileUrlPickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"codeEditor\"}\n component={CodeEditorRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"lexical\"} component={LexicalRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"lexicalEditors\"}\n component={LexicalEditorsRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"passwordInput\"}\n component={PasswordInputRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"permissions\"}\n component={PermissionsRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"rolesMultiSelect\"}\n component={RolesMultiSelectRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"apiKeyToken\"}\n component={ApiKeyTokenRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"multiAutoComplete\"}\n component={MultiAutoCompleteRenderer}\n />\n </AdminConfig>\n </>\n );\n};\n"],"names":["DefaultFieldRenderers","RegisterFeature","MultiValueDynamicZoneFeature","AdminConfig","InputRenderer","TextareaRenderer","SelectRenderer","AutoCompleteRenderer","MultiSelectRenderer","ObjectRenderer","ObjectAccordionMultipleRenderer","DynamicZoneRenderer","PassthroughRenderer","SwitchRenderer","NumberInputRenderer","NumberInputsRenderer","TextInputsRenderer","TextareasRenderer","TagsRenderer","RadioButtonsRenderer","CheckboxesRenderer","DateTimeRenderer","DateTimeInputsRenderer","HiddenRenderer","KeyValueTagsRenderer","FilePickerRenderer","MultiFilePickerRenderer","FileUrlPickerRenderer","CodeEditorRenderer","LexicalRenderer","LexicalEditorsRenderer","PasswordInputRenderer","PermissionsRenderer","RolesMultiSelectRenderer","ApiKeyTokenRenderer","MultiAutoCompleteRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCO,MAAMA,wBAAwB,IAC1B,WAAP,GACI,wDACI,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWC;sBAC9D,oBAACD,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWE;sBAC7D,oBAACF,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWG;sBAC3D,oBAACH,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWI;sBAEf,oBAACJ,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWK;sBAGf,oBAACL,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWG;sBAC7D,oBAACH,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWM;sBAEf,oBAACN,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWO;sBAEf,oBAACP,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWQ;sBAEf,oBAACR,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWS;sBAEf,oBAACT,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWU;sBAC3D,oBAACV,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWW;sBAEf,oBAACX,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWY;sBAEf,oBAACZ,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWa;sBAEf,oBAACb,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWc;sBAC9D,oBAACd,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAQ,WAAWe;sBACzD,oBAACf,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWgB;sBAEf,oBAAChB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWiB;sBAEf,oBAACjB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWkB;sBAEf,oBAAClB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWmB;sBAEf,oBAACnB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWoB;sBAC3D,oBAACpB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWqB;sBAEf,oBAACrB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWsB;sBAEf,oBAACtB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWuB;sBAEf,oBAACvB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWwB;sBAEf,oBAACxB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWyB;sBAEf,oBAACzB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAW,WAAW0B;sBAC5D,oBAAC1B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW2B;sBAEf,oBAAC3B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW4B;sBAEf,oBAAC5B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW6B;sBAEf,oBAAC7B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW8B;sBAEf,oBAAC9B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAW+B;sBAEf,oBAAC/B,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWgC"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ declare module "../../../features/formModel/abstractions.js" {
3
+ interface IFieldRendererRegistry {
4
+ autoComplete: {
5
+ fieldType: "text" | "number";
6
+ options: true;
7
+ settings: undefined;
8
+ };
9
+ }
10
+ }
11
+ export declare const AutoCompleteRenderer: React.ComponentType<{
12
+ field: import("~/features/formModel/index.js").IFieldVM;
13
+ }>;
@@ -0,0 +1,29 @@
1
+ import react from "react";
2
+ import { createFieldRenderer } from "../../../features/formModel/createFieldRenderer.js";
3
+ import { AutoComplete } from "@webiny/admin-ui";
4
+ const AutoCompleteRenderer = createFieldRenderer(({ field })=>{
5
+ const options = field.options ?? [];
6
+ return /*#__PURE__*/ react.createElement(AutoComplete, {
7
+ label: field.label,
8
+ hint: field.help,
9
+ placeholder: field.placeholder,
10
+ description: field.description,
11
+ note: field.note,
12
+ value: null != field.value ? String(field.value) : "",
13
+ onValueChange: (value)=>{
14
+ field.onChange(value);
15
+ field.onBlur();
16
+ },
17
+ required: field.required,
18
+ disabled: field.disabled,
19
+ validation: field.validation,
20
+ options: options.map((opt)=>({
21
+ label: opt.label,
22
+ value: String(opt.value),
23
+ disabled: opt.disabled
24
+ }))
25
+ });
26
+ });
27
+ export { AutoCompleteRenderer };
28
+
29
+ //# sourceMappingURL=AutoCompleteRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base/Base/FieldRenderers/AutoCompleteRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/AutoCompleteRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { AutoComplete } from \"@webiny/admin-ui\";\nimport type { IValueOption } from \"~/features/formModel/index.js\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n autoComplete: { fieldType: \"text\" | \"number\"; options: true; settings: undefined };\n }\n}\n\nexport const AutoCompleteRenderer = createFieldRenderer(({ field }) => {\n const options: IValueOption[] = field.options ?? [];\n\n return (\n <AutoComplete\n label={field.label}\n hint={field.help}\n placeholder={field.placeholder}\n description={field.description}\n note={field.note}\n value={field.value != null ? String(field.value) : \"\"}\n onValueChange={value => {\n field.onChange(value);\n field.onBlur();\n }}\n required={field.required}\n disabled={field.disabled}\n validation={field.validation}\n options={options.map(opt => ({\n label: opt.label,\n value: String(opt.value),\n disabled: opt.disabled\n }))}\n />\n );\n});\n"],"names":["AutoCompleteRenderer","createFieldRenderer","field","options","AutoComplete","String","value","opt"],"mappings":";;;AAWO,MAAMA,uBAAuBC,oBAAoB,CAAC,EAAEC,KAAK,EAAE;IAC9D,MAAMC,UAA0BD,MAAM,OAAO,IAAI,EAAE;IAEnD,OAAO,WAAP,GACI,oBAACE,cAAYA;QACT,OAAOF,MAAM,KAAK;QAClB,MAAMA,MAAM,IAAI;QAChB,aAAaA,MAAM,WAAW;QAC9B,aAAaA,MAAM,WAAW;QAC9B,MAAMA,MAAM,IAAI;QAChB,OAAOA,AAAe,QAAfA,MAAM,KAAK,GAAWG,OAAOH,MAAM,KAAK,IAAI;QACnD,eAAeI,CAAAA;YACXJ,MAAM,QAAQ,CAACI;YACfJ,MAAM,MAAM;QAChB;QACA,UAAUA,MAAM,QAAQ;QACxB,UAAUA,MAAM,QAAQ;QACxB,YAAYA,MAAM,UAAU;QAC5B,SAASC,QAAQ,GAAG,CAACI,CAAAA,MAAQ;gBACzB,OAAOA,IAAI,KAAK;gBAChB,OAAOF,OAAOE,IAAI,KAAK;gBACvB,UAAUA,IAAI,QAAQ;YAC1B;;AAGZ"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
2
  import type { TabsNodeRendererProps } from "../../../features/formModel/FormView.js";
3
- export declare const HorizontalTabsRenderer: (({ node }: TabsNodeRendererProps) => React.JSX.Element) & {
4
- displayName: string;
3
+ export declare const HorizontalTabsRenderer: (({ node }: TabsNodeRendererProps) => React.JSX.Element) & React.NamedExoticComponent<TabsNodeRendererProps> & {
4
+ readonly type: ({ node }: TabsNodeRendererProps) => React.JSX.Element;
5
5
  };
@@ -5,18 +5,22 @@ import { LexicalEditor } from "../../../components/LexicalEditor/LexicalEditor.j
5
5
  import { FormComponentDescription, FormComponentLabel, FormComponentNote } from "@webiny/admin-ui";
6
6
  const placeholderStyles = {
7
7
  position: "absolute",
8
- top: 40,
9
- left: 25
8
+ top: 0,
9
+ left: 0,
10
+ padding: "8px 12px",
11
+ marginTop: 0,
12
+ color: "var(--text-color-neutral-muted)"
10
13
  };
11
14
  const contentEditableStyles = {
12
15
  minHeight: 200,
13
16
  display: "block",
14
- padding: 10
17
+ padding: "8px 12px"
15
18
  };
16
19
  const styles = {
17
- backgroundColor: "#fff",
18
- border: "1px solid #e1e1e1",
19
- padding: "10px 14px",
20
+ backgroundColor: "var(--color-neutral-base)",
21
+ border: "1px solid var(--border-color-neutral-muted)",
22
+ borderTop: "none",
23
+ borderRadius: "0 0 var(--radius-md) var(--radius-md)",
20
24
  minHeight: 200,
21
25
  maxHeight: 350
22
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"base/Base/FieldRenderers/LexicalRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/LexicalRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { StaticToolbar } from \"@webiny/lexical-editor\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { LexicalEditor } from \"~/components/LexicalEditor/LexicalEditor.js\";\nimport type { RichTextValueWithHtml } from \"~/components/LexicalEditor/lexicalValueWithHtml.js\";\nimport { FormComponentLabel } from \"@webiny/admin-ui\";\nimport { FormComponentDescription } from \"@webiny/admin-ui\";\nimport { FormComponentNote } from \"@webiny/admin-ui\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n lexical: {\n fieldType: \"lexical\";\n settings: undefined;\n };\n }\n}\n\nconst placeholderStyles: React.CSSProperties = { position: \"absolute\", top: 40, left: 25 };\n\nconst contentEditableStyles: React.CSSProperties = {\n minHeight: 200,\n display: \"block\",\n padding: 10\n};\n\nconst styles: React.CSSProperties = {\n backgroundColor: \"#fff\",\n border: \"1px solid #e1e1e1\",\n padding: \"10px 14px\",\n minHeight: 200,\n maxHeight: 350\n};\n\nexport const LexicalRenderer = createFieldRenderer<\"lexical\">(({ field }) => {\n const value = field.value as RichTextValueWithHtml | undefined;\n const toolbar = <StaticToolbar />;\n\n return (\n <>\n <FormComponentLabel text={field.label} hint={field.help} disabled={field.disabled} />\n <FormComponentDescription text={field.description} disabled={field.disabled} />\n <LexicalEditor\n placeholder={field.placeholder || \"Enter your text here...\"}\n staticToolbar={toolbar}\n placeholderStyles={placeholderStyles}\n contentEditableStyles={contentEditableStyles}\n styles={styles}\n value={value}\n onChange={value => field.onChange(value)}\n />\n {field.note ? <FormComponentNote text={field.note} disabled={field.disabled} /> : null}\n </>\n );\n});\n"],"names":["placeholderStyles","contentEditableStyles","styles","LexicalRenderer","createFieldRenderer","field","value","toolbar","StaticToolbar","FormComponentLabel","FormComponentDescription","LexicalEditor","FormComponentNote"],"mappings":";;;;;AAkBA,MAAMA,oBAAyC;IAAE,UAAU;IAAY,KAAK;IAAI,MAAM;AAAG;AAEzF,MAAMC,wBAA6C;IAC/C,WAAW;IACX,SAAS;IACT,SAAS;AACb;AAEA,MAAMC,SAA8B;IAChC,iBAAiB;IACjB,QAAQ;IACR,SAAS;IACT,WAAW;IACX,WAAW;AACf;AAEO,MAAMC,kBAAkBC,oBAA+B,CAAC,EAAEC,KAAK,EAAE;IACpE,MAAMC,QAAQD,MAAM,KAAK;IACzB,MAAME,UAAU,WAAVA,GAAU,oBAACC,eAAaA;IAE9B,OAAO,WAAP,GACI,wDACI,oBAACC,oBAAkBA;QAAC,MAAMJ,MAAM,KAAK;QAAE,MAAMA,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;sBACjF,oBAACK,0BAAwBA;QAAC,MAAML,MAAM,WAAW;QAAE,UAAUA,MAAM,QAAQ;sBAC3E,oBAACM,eAAaA;QACV,aAAaN,MAAM,WAAW,IAAI;QAClC,eAAeE;QACf,mBAAmBP;QACnB,uBAAuBC;QACvB,QAAQC;QACR,OAAOI;QACP,UAAUA,CAAAA,QAASD,MAAM,QAAQ,CAACC;QAErCD,MAAM,IAAI,GAAG,WAAH,GAAG,oBAACO,mBAAiBA;QAAC,MAAMP,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;SAAO;AAG9F"}
1
+ {"version":3,"file":"base/Base/FieldRenderers/LexicalRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/LexicalRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { StaticToolbar } from \"@webiny/lexical-editor\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { LexicalEditor } from \"~/components/LexicalEditor/LexicalEditor.js\";\nimport type { RichTextValueWithHtml } from \"~/components/LexicalEditor/lexicalValueWithHtml.js\";\nimport { FormComponentLabel } from \"@webiny/admin-ui\";\nimport { FormComponentDescription } from \"@webiny/admin-ui\";\nimport { FormComponentNote } from \"@webiny/admin-ui\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n lexical: {\n fieldType: \"lexical\";\n settings: undefined;\n };\n }\n}\n\n// Overlay the contentEditable: same origin + same padding as `contentEditableStyles`, and\n// neutralize the Placeholder component's default -20px margin. This makes the placeholder's\n// first line land exactly on the editor's text start.\nconst placeholderStyles: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n padding: \"8px 12px\",\n marginTop: 0,\n // Font size/family come from the paragraph typography class (applied by RichTextEditor);\n // keep the placeholder muted.\n color: \"var(--text-color-neutral-muted)\"\n};\n\nconst contentEditableStyles: React.CSSProperties = {\n minHeight: 200,\n display: \"block\",\n padding: \"8px 12px\"\n};\n\nconst styles: React.CSSProperties = {\n backgroundColor: \"var(--color-neutral-base)\",\n border: \"1px solid var(--border-color-neutral-muted)\",\n // The static toolbar sits directly above and carries the top border, so the body\n // drops its top border and rounds only the bottom corners — together one seamless\n // rounded container, no internal divider (matches Figma).\n borderTop: \"none\",\n borderRadius: \"0 0 var(--radius-md) var(--radius-md)\",\n // Padding lives on the contentEditable only (avoids doubled inset).\n minHeight: 200,\n maxHeight: 350\n};\n\nexport const LexicalRenderer = createFieldRenderer<\"lexical\">(({ field }) => {\n const value = field.value as RichTextValueWithHtml | undefined;\n const toolbar = <StaticToolbar />;\n\n return (\n <>\n <FormComponentLabel text={field.label} hint={field.help} disabled={field.disabled} />\n <FormComponentDescription text={field.description} disabled={field.disabled} />\n <LexicalEditor\n placeholder={field.placeholder || \"Enter your text here...\"}\n staticToolbar={toolbar}\n placeholderStyles={placeholderStyles}\n contentEditableStyles={contentEditableStyles}\n styles={styles}\n value={value}\n onChange={value => field.onChange(value)}\n />\n {field.note ? <FormComponentNote text={field.note} disabled={field.disabled} /> : null}\n </>\n );\n});\n"],"names":["placeholderStyles","contentEditableStyles","styles","LexicalRenderer","createFieldRenderer","field","value","toolbar","StaticToolbar","FormComponentLabel","FormComponentDescription","LexicalEditor","FormComponentNote"],"mappings":";;;;;AAqBA,MAAMA,oBAAyC;IAC3C,UAAU;IACV,KAAK;IACL,MAAM;IACN,SAAS;IACT,WAAW;IAGX,OAAO;AACX;AAEA,MAAMC,wBAA6C;IAC/C,WAAW;IACX,SAAS;IACT,SAAS;AACb;AAEA,MAAMC,SAA8B;IAChC,iBAAiB;IACjB,QAAQ;IAIR,WAAW;IACX,cAAc;IAEd,WAAW;IACX,WAAW;AACf;AAEO,MAAMC,kBAAkBC,oBAA+B,CAAC,EAAEC,KAAK,EAAE;IACpE,MAAMC,QAAQD,MAAM,KAAK;IACzB,MAAME,UAAU,WAAVA,GAAU,oBAACC,eAAaA;IAE9B,OAAO,WAAP,GACI,wDACI,oBAACC,oBAAkBA;QAAC,MAAMJ,MAAM,KAAK;QAAE,MAAMA,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;sBACjF,oBAACK,0BAAwBA;QAAC,MAAML,MAAM,WAAW;QAAE,UAAUA,MAAM,QAAQ;sBAC3E,oBAACM,eAAaA;QACV,aAAaN,MAAM,WAAW,IAAI;QAClC,eAAeE;QACf,mBAAmBP;QACnB,uBAAuBC;QACvB,QAAQC;QACR,OAAOI;QACP,UAAUA,CAAAA,QAASD,MAAM,QAAQ,CAACC;QAErCD,MAAM,IAAI,GAAG,WAAH,GAAG,oBAACO,mBAAiBA;QAAC,MAAMP,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;SAAO;AAG9F"}
@@ -35,11 +35,14 @@ const MultiFilePickerRenderer = createFieldRenderer(({ field })=>{
35
35
  const selectFiles = (replaceIndex = -1)=>{
36
36
  showFileManager((files)=>{
37
37
  const newValues = files.map(fileManagerItemToValue);
38
- if (-1 === replaceIndex) field.onChange([
39
- ...currentValues,
40
- ...newValues
41
- ]);
42
- else field.onChange([
38
+ if (-1 === replaceIndex) {
39
+ const existingIds = new Set(currentValues.map((v)=>v.id));
40
+ const unique = newValues.filter((v)=>!existingIds.has(v.id));
41
+ field.onChange([
42
+ ...currentValues,
43
+ ...unique
44
+ ]);
45
+ } else field.onChange([
43
46
  ...currentValues.slice(0, replaceIndex),
44
47
  ...newValues,
45
48
  ...currentValues.slice(replaceIndex + 1)
@@ -1 +1 @@
1
- {"version":3,"file":"base/Base/FieldRenderers/MultiFilePickerRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/MultiFilePickerRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { FileManager } from \"~/base/ui/FileManager.js\";\nimport type { FileManagerFileItem } from \"~/base/ui/FileManager.js\";\nimport { MultiFilePicker } from \"@webiny/admin-ui\";\nimport type { FileItemDto } from \"@webiny/admin-ui\";\nimport type { FileValue } from \"~/features/formModel/abstractions.js\";\nimport type { FileFieldSettings } from \"~/features/formModel/fieldTypes/FileFieldType.js\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n multiFilePicker: { fieldType: \"file\"; settings: FileFieldSettings };\n }\n}\n\nconst toFilePickerValues = (value: unknown): FileItemDto[] => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .filter((item: FileValue) => item?.src)\n .map((item: FileValue) => ({\n id: item.id,\n url: item.src,\n name: item.name,\n mimeType: item.mimeType,\n size: item.size\n }));\n};\n\nconst fileManagerItemToValue = (file: FileManagerFileItem): FileValue => ({\n id: file.id,\n name: file.name,\n size: file.size,\n mimeType: file.type,\n src: file.src || \"\",\n width: file.width,\n height: file.height\n});\n\nexport const MultiFilePickerRenderer = createFieldRenderer<\"multiFilePicker\">(({ field }) => {\n const settings = field.rendererSettings as FileFieldSettings | undefined;\n const values = toFilePickerValues(field.value);\n const currentValues = (Array.isArray(field.value) ? field.value : []) as FileValue[];\n\n return (\n <FileManager\n multiple\n images={settings?.images}\n accept={settings?.accept}\n own={settings?.own}\n scope={settings?.scope}\n render={({ showFileManager }) => {\n const selectFiles = (replaceIndex = -1) => {\n showFileManager((files: FileManagerFileItem[]) => {\n const newValues = files.map(fileManagerItemToValue);\n if (replaceIndex === -1) {\n field.onChange([...currentValues, ...newValues]);\n } else {\n field.onChange([\n ...currentValues.slice(0, replaceIndex),\n ...newValues,\n ...currentValues.slice(replaceIndex + 1)\n ]);\n }\n });\n };\n\n return (\n <MultiFilePicker\n label={field.label}\n description={field.description}\n note={field.note}\n hint={field.help}\n values={values}\n type=\"compact\"\n onSelectItem={() => selectFiles()}\n onReplaceItem={(_, index) => selectFiles(index)}\n onRemoveItem={(_, index) => {\n field.onChange([\n ...currentValues.slice(0, index),\n ...currentValues.slice(index + 1)\n ]);\n }}\n />\n );\n }}\n />\n );\n});\n"],"names":["toFilePickerValues","value","Array","item","fileManagerItemToValue","file","MultiFilePickerRenderer","createFieldRenderer","field","settings","values","currentValues","FileManager","showFileManager","selectFiles","replaceIndex","files","newValues","MultiFilePicker","_","index"],"mappings":";;;;AAeA,MAAMA,qBAAqB,CAACC;IACxB,IAAI,CAACC,MAAM,OAAO,CAACD,QACf,OAAO,EAAE;IAEb,OAAOA,MACF,MAAM,CAAC,CAACE,OAAoBA,MAAM,KAClC,GAAG,CAAC,CAACA,OAAqB;YACvB,IAAIA,KAAK,EAAE;YACX,KAAKA,KAAK,GAAG;YACb,MAAMA,KAAK,IAAI;YACf,UAAUA,KAAK,QAAQ;YACvB,MAAMA,KAAK,IAAI;QACnB;AACR;AAEA,MAAMC,yBAAyB,CAACC,OAA0C;QACtE,IAAIA,KAAK,EAAE;QACX,MAAMA,KAAK,IAAI;QACf,MAAMA,KAAK,IAAI;QACf,UAAUA,KAAK,IAAI;QACnB,KAAKA,KAAK,GAAG,IAAI;QACjB,OAAOA,KAAK,KAAK;QACjB,QAAQA,KAAK,MAAM;IACvB;AAEO,MAAMC,0BAA0BC,oBAAuC,CAAC,EAAEC,KAAK,EAAE;IACpF,MAAMC,WAAWD,MAAM,gBAAgB;IACvC,MAAME,SAASV,mBAAmBQ,MAAM,KAAK;IAC7C,MAAMG,gBAAiBT,MAAM,OAAO,CAACM,MAAM,KAAK,IAAIA,MAAM,KAAK,GAAG,EAAE;IAEpE,OAAO,WAAP,GACI,oBAACI,aAAWA;QACR;QACA,QAAQH,UAAU;QAClB,QAAQA,UAAU;QAClB,KAAKA,UAAU;QACf,OAAOA,UAAU;QACjB,QAAQ,CAAC,EAAEI,eAAe,EAAE;YACxB,MAAMC,cAAc,CAACC,eAAe,EAAE;gBAClCF,gBAAgB,CAACG;oBACb,MAAMC,YAAYD,MAAM,GAAG,CAACZ;oBAC5B,IAAIW,AAAiB,OAAjBA,cACAP,MAAM,QAAQ,CAAC;2BAAIG;2BAAkBM;qBAAU;yBAE/CT,MAAM,QAAQ,CAAC;2BACRG,cAAc,KAAK,CAAC,GAAGI;2BACvBE;2BACAN,cAAc,KAAK,CAACI,eAAe;qBACzC;gBAET;YACJ;YAEA,OAAO,WAAP,GACI,oBAACG,iBAAeA;gBACZ,OAAOV,MAAM,KAAK;gBAClB,aAAaA,MAAM,WAAW;gBAC9B,MAAMA,MAAM,IAAI;gBAChB,MAAMA,MAAM,IAAI;gBAChB,QAAQE;gBACR,MAAK;gBACL,cAAc,IAAMI;gBACpB,eAAe,CAACK,GAAGC,QAAUN,YAAYM;gBACzC,cAAc,CAACD,GAAGC;oBACdZ,MAAM,QAAQ,CAAC;2BACRG,cAAc,KAAK,CAAC,GAAGS;2BACvBT,cAAc,KAAK,CAACS,QAAQ;qBAClC;gBACL;;QAGZ;;AAGZ"}
1
+ {"version":3,"file":"base/Base/FieldRenderers/MultiFilePickerRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/MultiFilePickerRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { FileManager } from \"~/base/ui/FileManager.js\";\nimport type { FileManagerFileItem } from \"~/base/ui/FileManager.js\";\nimport { MultiFilePicker } from \"@webiny/admin-ui\";\nimport type { FileItemDto } from \"@webiny/admin-ui\";\nimport type { FileValue } from \"~/features/formModel/abstractions.js\";\nimport type { FileFieldSettings } from \"~/features/formModel/fieldTypes/FileFieldType.js\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n multiFilePicker: { fieldType: \"file\"; settings: FileFieldSettings };\n }\n}\n\nconst toFilePickerValues = (value: unknown): FileItemDto[] => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .filter((item: FileValue) => item?.src)\n .map((item: FileValue) => ({\n id: item.id,\n url: item.src,\n name: item.name,\n mimeType: item.mimeType,\n size: item.size\n }));\n};\n\nconst fileManagerItemToValue = (file: FileManagerFileItem): FileValue => ({\n id: file.id,\n name: file.name,\n size: file.size,\n mimeType: file.type,\n src: file.src || \"\",\n width: file.width,\n height: file.height\n});\n\nexport const MultiFilePickerRenderer = createFieldRenderer<\"multiFilePicker\">(({ field }) => {\n const settings = field.rendererSettings as FileFieldSettings | undefined;\n const values = toFilePickerValues(field.value);\n const currentValues = (Array.isArray(field.value) ? field.value : []) as FileValue[];\n\n return (\n <FileManager\n multiple\n images={settings?.images}\n accept={settings?.accept}\n own={settings?.own}\n scope={settings?.scope}\n render={({ showFileManager }) => {\n const selectFiles = (replaceIndex = -1) => {\n showFileManager((files: FileManagerFileItem[]) => {\n const newValues = files.map(fileManagerItemToValue);\n if (replaceIndex === -1) {\n const existingIds = new Set(currentValues.map(v => v.id));\n const unique = newValues.filter(v => !existingIds.has(v.id));\n field.onChange([...currentValues, ...unique]);\n } else {\n field.onChange([\n ...currentValues.slice(0, replaceIndex),\n ...newValues,\n ...currentValues.slice(replaceIndex + 1)\n ]);\n }\n });\n };\n\n return (\n <MultiFilePicker\n label={field.label}\n description={field.description}\n note={field.note}\n hint={field.help}\n values={values}\n type=\"compact\"\n onSelectItem={() => selectFiles()}\n onReplaceItem={(_, index) => selectFiles(index)}\n onRemoveItem={(_, index) => {\n field.onChange([\n ...currentValues.slice(0, index),\n ...currentValues.slice(index + 1)\n ]);\n }}\n />\n );\n }}\n />\n );\n});\n"],"names":["toFilePickerValues","value","Array","item","fileManagerItemToValue","file","MultiFilePickerRenderer","createFieldRenderer","field","settings","values","currentValues","FileManager","showFileManager","selectFiles","replaceIndex","files","newValues","existingIds","Set","v","unique","MultiFilePicker","_","index"],"mappings":";;;;AAeA,MAAMA,qBAAqB,CAACC;IACxB,IAAI,CAACC,MAAM,OAAO,CAACD,QACf,OAAO,EAAE;IAEb,OAAOA,MACF,MAAM,CAAC,CAACE,OAAoBA,MAAM,KAClC,GAAG,CAAC,CAACA,OAAqB;YACvB,IAAIA,KAAK,EAAE;YACX,KAAKA,KAAK,GAAG;YACb,MAAMA,KAAK,IAAI;YACf,UAAUA,KAAK,QAAQ;YACvB,MAAMA,KAAK,IAAI;QACnB;AACR;AAEA,MAAMC,yBAAyB,CAACC,OAA0C;QACtE,IAAIA,KAAK,EAAE;QACX,MAAMA,KAAK,IAAI;QACf,MAAMA,KAAK,IAAI;QACf,UAAUA,KAAK,IAAI;QACnB,KAAKA,KAAK,GAAG,IAAI;QACjB,OAAOA,KAAK,KAAK;QACjB,QAAQA,KAAK,MAAM;IACvB;AAEO,MAAMC,0BAA0BC,oBAAuC,CAAC,EAAEC,KAAK,EAAE;IACpF,MAAMC,WAAWD,MAAM,gBAAgB;IACvC,MAAME,SAASV,mBAAmBQ,MAAM,KAAK;IAC7C,MAAMG,gBAAiBT,MAAM,OAAO,CAACM,MAAM,KAAK,IAAIA,MAAM,KAAK,GAAG,EAAE;IAEpE,OAAO,WAAP,GACI,oBAACI,aAAWA;QACR;QACA,QAAQH,UAAU;QAClB,QAAQA,UAAU;QAClB,KAAKA,UAAU;QACf,OAAOA,UAAU;QACjB,QAAQ,CAAC,EAAEI,eAAe,EAAE;YACxB,MAAMC,cAAc,CAACC,eAAe,EAAE;gBAClCF,gBAAgB,CAACG;oBACb,MAAMC,YAAYD,MAAM,GAAG,CAACZ;oBAC5B,IAAIW,AAAiB,OAAjBA,cAAqB;wBACrB,MAAMG,cAAc,IAAIC,IAAIR,cAAc,GAAG,CAACS,CAAAA,IAAKA,EAAE,EAAE;wBACvD,MAAMC,SAASJ,UAAU,MAAM,CAACG,CAAAA,IAAK,CAACF,YAAY,GAAG,CAACE,EAAE,EAAE;wBAC1DZ,MAAM,QAAQ,CAAC;+BAAIG;+BAAkBU;yBAAO;oBAChD,OACIb,MAAM,QAAQ,CAAC;2BACRG,cAAc,KAAK,CAAC,GAAGI;2BACvBE;2BACAN,cAAc,KAAK,CAACI,eAAe;qBACzC;gBAET;YACJ;YAEA,OAAO,WAAP,GACI,oBAACO,iBAAeA;gBACZ,OAAOd,MAAM,KAAK;gBAClB,aAAaA,MAAM,WAAW;gBAC9B,MAAMA,MAAM,IAAI;gBAChB,MAAMA,MAAM,IAAI;gBAChB,QAAQE;gBACR,MAAK;gBACL,cAAc,IAAMI;gBACpB,eAAe,CAACS,GAAGC,QAAUV,YAAYU;gBACzC,cAAc,CAACD,GAAGC;oBACdhB,MAAM,QAAQ,CAAC;2BACRG,cAAc,KAAK,CAAC,GAAGa;2BACvBb,cAAc,KAAK,CAACa,QAAQ;qBAClC;gBACL;;QAGZ;;AAGZ"}
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ declare module "../../../features/formModel/abstractions.js" {
3
+ interface IFieldRendererRegistry {
4
+ multiSelect: {
5
+ fieldType: "text" | "number";
6
+ options: true;
7
+ settings?: {
8
+ showSelectionCount?: boolean;
9
+ };
10
+ };
11
+ }
12
+ }
13
+ export declare const MultiSelectRenderer: React.ComponentType<{
14
+ field: import("~/features/formModel/index.js").IFieldVM;
15
+ }>;
@@ -0,0 +1,31 @@
1
+ import react from "react";
2
+ import { createFieldRenderer } from "../../../features/formModel/createFieldRenderer.js";
3
+ import { MultiSelect } from "@webiny/admin-ui";
4
+ const MultiSelectRenderer = createFieldRenderer(({ field })=>{
5
+ const options = field.options ?? [];
6
+ const value = field.value ?? [];
7
+ return /*#__PURE__*/ react.createElement(MultiSelect, {
8
+ label: field.label,
9
+ hint: field.help,
10
+ placeholder: field.placeholder,
11
+ description: field.description,
12
+ note: field.note,
13
+ required: field.required,
14
+ disabled: field.disabled,
15
+ validation: field.validation,
16
+ showSelectionCount: field.rendererSettings?.showSelectionCount,
17
+ options: options.map((opt)=>({
18
+ label: opt.label,
19
+ value: String(opt.value),
20
+ disabled: opt.disabled
21
+ })),
22
+ value: value,
23
+ onChange: (values)=>{
24
+ field.onChange(values);
25
+ field.onBlur();
26
+ }
27
+ });
28
+ });
29
+ export { MultiSelectRenderer };
30
+
31
+ //# sourceMappingURL=MultiSelectRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base/Base/FieldRenderers/MultiSelectRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/MultiSelectRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { MultiSelect } from \"@webiny/admin-ui\";\nimport type { IValueOption } from \"~/features/formModel/index.js\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n multiSelect: {\n fieldType: \"text\" | \"number\";\n options: true;\n settings?: { showSelectionCount?: boolean };\n };\n }\n}\n\nexport const MultiSelectRenderer = createFieldRenderer<\"multiSelect\">(({ field }) => {\n const options: IValueOption[] = field.options ?? [];\n const value = (field.value as string[]) ?? [];\n\n return (\n <MultiSelect\n label={field.label}\n hint={field.help}\n placeholder={field.placeholder}\n description={field.description}\n note={field.note}\n required={field.required}\n disabled={field.disabled}\n validation={field.validation}\n showSelectionCount={field.rendererSettings?.showSelectionCount}\n options={options.map(opt => ({\n label: opt.label,\n value: String(opt.value),\n disabled: opt.disabled\n }))}\n value={value}\n onChange={values => {\n field.onChange(values);\n field.onBlur();\n }}\n />\n );\n});\n"],"names":["MultiSelectRenderer","createFieldRenderer","field","options","value","MultiSelect","opt","String","values"],"mappings":";;;AAeO,MAAMA,sBAAsBC,oBAAmC,CAAC,EAAEC,KAAK,EAAE;IAC5E,MAAMC,UAA0BD,MAAM,OAAO,IAAI,EAAE;IACnD,MAAME,QAASF,MAAM,KAAK,IAAiB,EAAE;IAE7C,OAAO,WAAP,GACI,oBAACG,aAAWA;QACR,OAAOH,MAAM,KAAK;QAClB,MAAMA,MAAM,IAAI;QAChB,aAAaA,MAAM,WAAW;QAC9B,aAAaA,MAAM,WAAW;QAC9B,MAAMA,MAAM,IAAI;QAChB,UAAUA,MAAM,QAAQ;QACxB,UAAUA,MAAM,QAAQ;QACxB,YAAYA,MAAM,UAAU;QAC5B,oBAAoBA,MAAM,gBAAgB,EAAE;QAC5C,SAASC,QAAQ,GAAG,CAACG,CAAAA,MAAQ;gBACzB,OAAOA,IAAI,KAAK;gBAChB,OAAOC,OAAOD,IAAI,KAAK;gBACvB,UAAUA,IAAI,QAAQ;YAC1B;QACA,OAAOF;QACP,UAAUI,CAAAA;YACNN,MAAM,QAAQ,CAACM;YACfN,MAAM,MAAM;QAChB;;AAGZ"}
@@ -4,7 +4,9 @@ declare module "../../../../features/formModel/abstractions.js" {
4
4
  dynamicZone: {
5
5
  fieldType: "object";
6
6
  settings?: {
7
+ open?: boolean;
7
8
  container?: boolean;
9
+ addItemLabel?: string;
8
10
  };
9
11
  };
10
12
  }
@@ -1,14 +1,17 @@
1
1
  import react from "react";
2
2
  import { createObjectFieldRenderer } from "../../../../features/formModel/createFieldRenderer.js";
3
3
  import { SingleValueDynamicZone } from "./SingleValueDynamicZone.js";
4
- import { MultiValueDynamicZone } from "./MultiValueDynamicZone.js";
4
+ import { MultiValueDynamicZone } from "./MultiValueDynamicZone/index.js";
5
5
  const DynamicZoneRenderer = createObjectFieldRenderer(({ field })=>{
6
+ const settings = field.rendererSettings ?? {};
6
7
  if (field.isList) return /*#__PURE__*/ react.createElement(MultiValueDynamicZone, {
7
8
  field: field,
8
- showContainer: field.rendererSettings?.container !== false
9
+ addItemLabel: settings.addItemLabel ?? "Add Item",
10
+ showContainer: false !== settings.container
9
11
  });
10
12
  return /*#__PURE__*/ react.createElement(SingleValueDynamicZone, {
11
13
  field: field,
14
+ addItemLabel: settings.addItemLabel ?? "Add Item",
12
15
  showContainer: field.rendererSettings?.container !== false
13
16
  });
14
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js","sources":["../../../../../src/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { createObjectFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { SingleValueDynamicZone } from \"./SingleValueDynamicZone.js\";\nimport { MultiValueDynamicZone } from \"./MultiValueDynamicZone.js\";\n\ndeclare module \"../../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n dynamicZone: {\n fieldType: \"object\";\n settings?: {\n container?: boolean;\n };\n };\n }\n}\n\nexport const DynamicZoneRenderer = createObjectFieldRenderer<\"dynamicZone\">(({ field }) => {\n if (field.isList) {\n return (\n <MultiValueDynamicZone\n field={field}\n showContainer={field.rendererSettings?.container !== false}\n />\n );\n }\n\n return (\n <SingleValueDynamicZone\n field={field}\n showContainer={field.rendererSettings?.container !== false}\n />\n );\n});\n"],"names":["DynamicZoneRenderer","createObjectFieldRenderer","field","MultiValueDynamicZone","SingleValueDynamicZone"],"mappings":";;;;AAgBO,MAAMA,sBAAsBC,0BAAyC,CAAC,EAAEC,KAAK,EAAE;IAClF,IAAIA,MAAM,MAAM,EACZ,OAAO,WAAP,GACI,oBAACC,uBAAqBA;QAClB,OAAOD;QACP,eAAeA,MAAM,gBAAgB,EAAE,cAAc;;IAKjE,OAAO,WAAP,GACI,oBAACE,wBAAsBA;QACnB,OAAOF;QACP,eAAeA,MAAM,gBAAgB,EAAE,cAAc;;AAGjE"}
1
+ {"version":3,"file":"base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js","sources":["../../../../../src/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { createObjectFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { SingleValueDynamicZone } from \"./SingleValueDynamicZone.js\";\nimport { MultiValueDynamicZone } from \"./MultiValueDynamicZone/index.js\";\n\ndeclare module \"../../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n dynamicZone: {\n fieldType: \"object\";\n settings?: {\n open?: boolean;\n container?: boolean;\n addItemLabel?: string;\n };\n };\n }\n}\n\nexport const DynamicZoneRenderer = createObjectFieldRenderer<\"dynamicZone\">(({ field }) => {\n const settings = field.rendererSettings ?? {};\n\n if (field.isList) {\n return (\n <MultiValueDynamicZone\n field={field}\n addItemLabel={settings.addItemLabel ?? \"Add Item\"}\n showContainer={settings.container !== false}\n />\n );\n }\n\n return (\n <SingleValueDynamicZone\n field={field}\n addItemLabel={settings.addItemLabel ?? \"Add Item\"}\n showContainer={field.rendererSettings?.container !== false}\n />\n );\n});\n"],"names":["DynamicZoneRenderer","createObjectFieldRenderer","field","settings","MultiValueDynamicZone","SingleValueDynamicZone"],"mappings":";;;;AAkBO,MAAMA,sBAAsBC,0BAAyC,CAAC,EAAEC,KAAK,EAAE;IAClF,MAAMC,WAAWD,MAAM,gBAAgB,IAAI,CAAC;IAE5C,IAAIA,MAAM,MAAM,EACZ,OAAO,WAAP,GACI,oBAACE,uBAAqBA;QAClB,OAAOF;QACP,cAAcC,SAAS,YAAY,IAAI;QACvC,eAAeA,AAAuB,UAAvBA,SAAS,SAAS;;IAK7C,OAAO,WAAP,GACI,oBAACE,wBAAsBA;QACnB,OAAOH;QACP,cAAcC,SAAS,YAAY,IAAI;QACvC,eAAeD,MAAM,gBAAgB,EAAE,cAAc;;AAGjE"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import type { IObjectFieldVM } from "../../../../../features/formModel/index.js";
3
+ interface MultiValueDynamicZoneProps {
4
+ field: IObjectFieldVM;
5
+ addItemLabel: string;
6
+ showContainer?: boolean;
7
+ }
8
+ export declare const MultiValueDynamicZone: (({ field, addItemLabel, showContainer }: MultiValueDynamicZoneProps) => React.JSX.Element) & React.NamedExoticComponent<MultiValueDynamicZoneProps> & {
9
+ readonly type: ({ field, addItemLabel, showContainer }: MultiValueDynamicZoneProps) => React.JSX.Element;
10
+ };
11
+ export {};
@@ -1,7 +1,7 @@
1
- import react from "react";
1
+ import react, { useEffect, useMemo } from "react";
2
2
  import { observer } from "mobx-react-lite";
3
- import { Accordion, Button, Tooltip, useToast } from "@webiny/admin-ui";
4
- import { useFeature } from "@webiny/app";
3
+ import { Accordion, Button, Separator, Tooltip, useToast } from "@webiny/admin-ui";
4
+ import { useContainer, useFeature } from "@webiny/app";
5
5
  import { ReactComponent } from "@webiny/icons/content_copy.svg";
6
6
  import { ReactComponent as content_paste_svg_ReactComponent } from "@webiny/icons/content_paste.svg";
7
7
  import { ReactComponent as delete_outline_svg_ReactComponent } from "@webiny/icons/delete_outline.svg";
@@ -9,14 +9,27 @@ import { ReactComponent as library_add_svg_ReactComponent } from "@webiny/icons/
9
9
  import { ReactComponent as expand_less_svg_ReactComponent } from "@webiny/icons/expand_less.svg";
10
10
  import { ReactComponent as expand_more_svg_ReactComponent } from "@webiny/icons/expand_more.svg";
11
11
  import { ReactComponent as horizontal_rule_svg_ReactComponent } from "@webiny/icons/horizontal_rule.svg";
12
- import { TEMPLATE_DISCRIMINATOR } from "../../../../features/formModel/ObjectField.js";
13
- import { ClipboardFeature } from "../../../../features/clipboard/feature.js";
14
- import { useConfirmationDialog } from "../../../../hooks/useConfirmationDialog.js";
15
- import { NestedLayout } from "./ObjectFieldComponents.js";
16
- import { AddTemplateButton } from "./TemplatePicker.js";
17
- const MultiValueDynamicZone = observer(({ field, showContainer = true })=>{
12
+ import { TEMPLATE_DISCRIMINATOR } from "../../../../../features/formModel/ObjectField.js";
13
+ import { ClipboardFeature } from "../../../../../features/clipboard/feature.js";
14
+ import { useConfirmationDialog } from "../../../../../hooks/useConfirmationDialog.js";
15
+ import { NestedLayout } from "../ObjectFieldComponents.js";
16
+ import { AddTemplateButton } from "../TemplatePicker.js";
17
+ import { MultiValueDynamicZonePresenter } from "./abstractions.js";
18
+ const MultiValueDynamicZone = observer(({ field, addItemLabel, showContainer = true })=>{
18
19
  const toast = useToast();
19
20
  const { clipboard } = useFeature(ClipboardFeature);
21
+ const container = useContainer();
22
+ const presenter = useMemo(()=>{
23
+ const p = container.resolve(MultiValueDynamicZonePresenter);
24
+ p.init({
25
+ type: `dz:${field.name}`,
26
+ onReorder: (from, to)=>field.moveItem(from, to)
27
+ });
28
+ return p;
29
+ }, []);
30
+ useEffect(()=>()=>presenter.dispose(), [
31
+ presenter
32
+ ]);
20
33
  const itemCount = field.items.length;
21
34
  const clipboardItem = clipboard.item;
22
35
  const canPaste = null !== clipboardItem && "wby.dz" === clipboardItem.type && "string" == typeof clipboardItem.data[TEMPLATE_DISCRIMINATOR] && field.availableTemplates.some((t)=>t.id === clipboardItem.data[TEMPLATE_DISCRIMINATOR]);
@@ -32,10 +45,12 @@ const MultiValueDynamicZone = observer(({ field, showContainer = true })=>{
32
45
  index: index,
33
46
  total: itemCount,
34
47
  templates: field.availableTemplates,
35
- disabled: field.disabled
48
+ disabled: field.disabled,
49
+ sortable: presenter.getItemProps(index)
36
50
  }))) : null, !field.disabled && /*#__PURE__*/ react.createElement("div", {
37
51
  className: "flex gap-sm items-center"
38
52
  }, /*#__PURE__*/ react.createElement(AddTemplateButton, {
53
+ label: addItemLabel,
39
54
  templates: field.availableTemplates,
40
55
  onSelect: (template)=>field.addItem(template.id)
41
56
  }), canPaste && /*#__PURE__*/ react.createElement(Button, {
@@ -53,7 +68,14 @@ const MultiValueDynamicZone = observer(({ field, showContainer = true })=>{
53
68
  }
54
69
  }
55
70
  })));
56
- if (!showContainer) return content;
71
+ if (!showContainer) return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Separator, {
72
+ labelPosition: "start",
73
+ variant: "accent"
74
+ }, /*#__PURE__*/ react.createElement("span", {
75
+ className: "text-accent-primary text-lg font-semibold"
76
+ }, field.label ?? "", " (", itemCount, ")")), /*#__PURE__*/ react.createElement("div", {
77
+ className: "mt-md"
78
+ }, content));
57
79
  const label = `${field.label || ""}${itemCount ? ` (${itemCount})` : ""}`;
58
80
  return /*#__PURE__*/ react.createElement(Accordion, {
59
81
  background: "base",
@@ -68,7 +90,7 @@ const MultiValueDynamicZone = observer(({ field, showContainer = true })=>{
68
90
  defaultOpen: true
69
91
  }, content));
70
92
  });
71
- const TemplatedListItem = observer(({ item, index, total, templates, disabled })=>{
93
+ const TemplatedListItem = observer(({ item, index, total, templates, disabled, sortable })=>{
72
94
  const toast = useToast();
73
95
  const { clipboard } = useFeature(ClipboardFeature);
74
96
  const { showConfirmation } = useConfirmationDialog({
@@ -125,14 +147,43 @@ const TemplatedListItem = observer(({ item, index, total, templates, disabled })
125
147
  }),
126
148
  onClick: onDelete
127
149
  }));
128
- return /*#__PURE__*/ react.createElement(Accordion.Item, {
150
+ return /*#__PURE__*/ react.createElement("div", {
151
+ ref: sortable.ref,
152
+ "data-sortable-item": "",
153
+ className: "relative",
154
+ style: {
155
+ opacity: sortable.isDragging ? 0.4 : 1
156
+ }
157
+ }, "top" === sortable.closestEdge && /*#__PURE__*/ react.createElement(DropIndicator, {
158
+ position: "top",
159
+ isFirst: 0 === index
160
+ }), /*#__PURE__*/ react.createElement(Accordion.Item, {
129
161
  title: title,
130
162
  actions: disabled ? null : actions,
131
- defaultOpen: false
163
+ defaultOpen: false,
164
+ draggable: !disabled,
165
+ dragHandleRef: sortable.handleRef
132
166
  }, /*#__PURE__*/ react.createElement(NestedLayout, {
133
167
  layout: item.layout
168
+ })), "bottom" === sortable.closestEdge && /*#__PURE__*/ react.createElement(DropIndicator, {
169
+ position: "bottom",
170
+ isLast: index === total - 1
134
171
  }));
135
172
  });
173
+ const DropIndicator = ({ position, isFirst = false, isLast = false })=>{
174
+ let offset = "calc(var(--spacing-md) / -2)";
175
+ if ("top" === position && isFirst) offset = "0px";
176
+ if ("bottom" === position && isLast) offset = "0px";
177
+ return /*#__PURE__*/ react.createElement("div", {
178
+ className: "absolute left-0 right-0 z-10",
179
+ style: {
180
+ [position]: offset,
181
+ transform: "top" === position ? "translateY(-50%)" : "translateY(50%)"
182
+ }
183
+ }, /*#__PURE__*/ react.createElement("div", {
184
+ className: "w-full h-[2px] bg-primary rounded-full"
185
+ }));
186
+ };
136
187
  export { MultiValueDynamicZone };
137
188
 
138
189
  //# sourceMappingURL=MultiValueDynamicZone.js.map