@webiny/app-admin 6.2.0 → 6.3.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 (143) hide show
  1. package/base/Admin.js +2 -0
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base/DefaultFieldRenderers.js +20 -4
  4. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  5. package/base/Base/DefaultLayoutRenderers.d.ts +2 -0
  6. package/base/Base/DefaultLayoutRenderers.js +11 -0
  7. package/base/Base/DefaultLayoutRenderers.js.map +1 -0
  8. package/base/Base/FieldRenderers/InputRenderer.d.ts +15 -0
  9. package/base/Base/FieldRenderers/{TextRenderer.js → InputRenderer.js} +5 -3
  10. package/base/Base/FieldRenderers/InputRenderer.js.map +1 -0
  11. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +25 -0
  12. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +89 -0
  13. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -0
  14. package/base/Base/FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.d.ts +21 -0
  15. package/base/Base/FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.js +28 -0
  16. package/base/Base/FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.js.map +1 -0
  17. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.d.ts +17 -0
  18. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +63 -0
  19. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -0
  20. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +4 -0
  21. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +22 -0
  22. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -0
  23. package/base/Base/FieldRenderers/PassthroughRenderer.d.ts +15 -0
  24. package/base/Base/FieldRenderers/PassthroughRenderer.js +29 -0
  25. package/base/Base/FieldRenderers/PassthroughRenderer.js.map +1 -0
  26. package/base/Base/FieldRenderers/SelectRenderer.d.ts +12 -2
  27. package/base/Base/FieldRenderers/SelectRenderer.js +4 -2
  28. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  29. package/base/Base/FieldRenderers/TextareaRenderer.d.ts +17 -0
  30. package/base/Base/FieldRenderers/TextareaRenderer.js +25 -0
  31. package/base/Base/FieldRenderers/TextareaRenderer.js.map +1 -0
  32. package/base/Base/FieldRenderers/VerticalTabsRenderer.d.ts +5 -0
  33. package/base/Base/FieldRenderers/VerticalTabsRenderer.js +41 -0
  34. package/base/Base/FieldRenderers/VerticalTabsRenderer.js.map +1 -0
  35. package/base/Base.js +2 -1
  36. package/base/Base.js.map +1 -1
  37. package/base/createRootContainer.js +4 -0
  38. package/base/createRootContainer.js.map +1 -1
  39. package/base/providers/UiProviders.js +0 -1
  40. package/base/providers/UiProviders.js.map +1 -1
  41. package/components/Filters/Filters.js.map +1 -1
  42. package/components/IconPicker/components/IconPickerCell.d.ts +1 -1
  43. package/components/IconPicker/components/IconPickerTrigger.d.ts +1 -1
  44. package/components/IconPicker/components/IconPickerTrigger.js.map +1 -1
  45. package/components/LexicalEditor/LexicalEditor.js +7 -1
  46. package/components/LexicalEditor/LexicalEditor.js.map +1 -1
  47. package/components/LexicalEditor/lexicalValueFromHtml.d.ts +7 -0
  48. package/components/LexicalEditor/lexicalValueFromHtml.js +35 -0
  49. package/components/LexicalEditor/lexicalValueFromHtml.js.map +1 -0
  50. package/components/OverlayLayout/components/OverlayHeader.d.ts +1 -1
  51. package/components/OverlayLayout/components/OverlayHeader.js.map +1 -1
  52. package/components/SimpleForm/SimpleForm.d.ts +2 -2
  53. package/components/SimpleForm/SimpleForm.js.map +1 -1
  54. package/config/AdminConfig/Form.d.ts +1 -0
  55. package/config/AdminConfig/Form.js +3 -1
  56. package/config/AdminConfig/Form.js.map +1 -1
  57. package/config/AdminConfig/LayoutRenderer.d.ts +10 -0
  58. package/config/AdminConfig/LayoutRenderer.js +21 -0
  59. package/config/AdminConfig/LayoutRenderer.js.map +1 -0
  60. package/config/AdminConfig/Menu/MenuLink.d.ts +2 -2
  61. package/config/AdminConfig.d.ts +4 -0
  62. package/config/AdminConfig.js +2 -1
  63. package/config/AdminConfig.js.map +1 -1
  64. package/exports/admin.d.ts +2 -0
  65. package/exports/admin.js +2 -0
  66. package/exports/admin.js.map +1 -1
  67. package/features/formModel/Field.js +4 -0
  68. package/features/formModel/Field.js.map +1 -1
  69. package/features/formModel/FieldBuilder.d.ts +18 -2
  70. package/features/formModel/FieldBuilder.js +57 -3
  71. package/features/formModel/FieldBuilder.js.map +1 -1
  72. package/features/formModel/FormModel.d.ts +3 -3
  73. package/features/formModel/FormModel.js +48 -13
  74. package/features/formModel/FormModel.js.map +1 -1
  75. package/features/formModel/FormModel.test.js +383 -0
  76. package/features/formModel/FormModel.test.js.map +1 -1
  77. package/features/formModel/FormModelFactory.d.ts +2 -2
  78. package/features/formModel/FormModelFactory.js.map +1 -1
  79. package/features/formModel/FormView.d.ts +24 -4
  80. package/features/formModel/FormView.js +57 -27
  81. package/features/formModel/FormView.js.map +1 -1
  82. package/features/formModel/ObjectField.d.ts +46 -0
  83. package/features/formModel/ObjectField.js +346 -0
  84. package/features/formModel/ObjectField.js.map +1 -0
  85. package/features/formModel/abstractions.d.ts +88 -19
  86. package/features/formModel/abstractions.js +8 -0
  87. package/features/formModel/abstractions.js.map +1 -1
  88. package/features/formModel/index.d.ts +7 -4
  89. package/features/formModel/index.js +9 -2
  90. package/features/formModel/index.js.map +1 -1
  91. package/features/formModel/renderers.d.ts +6 -0
  92. package/features/formModel/renderers.js +10 -0
  93. package/features/formModel/renderers.js.map +1 -0
  94. package/features/formModel/useLayoutRenderers.d.ts +2 -0
  95. package/features/formModel/useLayoutRenderers.js +19 -0
  96. package/features/formModel/useLayoutRenderers.js.map +1 -0
  97. package/features/tools/ToolPipelineRunner.d.ts +10 -0
  98. package/features/tools/ToolPipelineRunner.js +33 -0
  99. package/features/tools/ToolPipelineRunner.js.map +1 -0
  100. package/features/tools/ToolRegistry.d.ts +12 -0
  101. package/features/tools/ToolRegistry.js +29 -0
  102. package/features/tools/ToolRegistry.js.map +1 -0
  103. package/features/tools/abstractions.d.ts +28 -0
  104. package/features/tools/abstractions.js +6 -0
  105. package/features/tools/abstractions.js.map +1 -0
  106. package/features/tools/feature.d.ts +4 -0
  107. package/features/tools/feature.js +19 -0
  108. package/features/tools/feature.js.map +1 -0
  109. package/features/tools/index.d.ts +2 -0
  110. package/features/tools/index.js +4 -0
  111. package/features/tools/index.js.map +1 -0
  112. package/features/wcp/ReactLicense.d.ts +3 -0
  113. package/features/wcp/ReactLicense.js +9 -0
  114. package/features/wcp/ReactLicense.js.map +1 -1
  115. package/features/wcp/WcpGateway.js +4 -0
  116. package/features/wcp/WcpGateway.js.map +1 -1
  117. package/features/webinySdk/WebinySdk.d.ts +11 -0
  118. package/features/webinySdk/WebinySdk.js +27 -0
  119. package/features/webinySdk/WebinySdk.js.map +1 -0
  120. package/features/webinySdk/abstractions.d.ts +6 -0
  121. package/features/webinySdk/abstractions.js +8 -0
  122. package/features/webinySdk/abstractions.js.map +1 -0
  123. package/features/webinySdk/feature.d.ts +3 -0
  124. package/features/webinySdk/feature.js +16 -0
  125. package/features/webinySdk/feature.js.map +1 -0
  126. package/features/webinySdk/index.d.ts +2 -0
  127. package/features/webinySdk/index.js +4 -0
  128. package/features/webinySdk/index.js.map +1 -0
  129. package/index.d.ts +8 -3
  130. package/index.js +5 -2
  131. package/index.js.map +1 -1
  132. package/package.json +24 -23
  133. package/presentation/textToLexicalTool/TextToLexicalTool.d.ts +27 -0
  134. package/presentation/textToLexicalTool/TextToLexicalTool.js +25 -0
  135. package/presentation/textToLexicalTool/TextToLexicalTool.js.map +1 -0
  136. package/presentation/textToLexicalTool/feature.d.ts +1 -0
  137. package/presentation/textToLexicalTool/feature.js +10 -0
  138. package/presentation/textToLexicalTool/feature.js.map +1 -0
  139. package/presentation/textToLexicalTool/textToLexicalState.d.ts +5 -0
  140. package/presentation/textToLexicalTool/textToLexicalState.js +19 -0
  141. package/presentation/textToLexicalTool/textToLexicalState.js.map +1 -0
  142. package/base/Base/FieldRenderers/TextRenderer.d.ts +0 -5
  143. package/base/Base/FieldRenderers/TextRenderer.js.map +0 -1
package/base/Admin.js CHANGED
@@ -16,6 +16,7 @@ import { ApolloClientFeature } from "../features/apolloClient/feature.js";
16
16
  import { SecurityFeature } from "../features/security/SecurityFeature.js";
17
17
  import { FormModelFeature } from "../features/formModel/feature.js";
18
18
  import { AdminConfigPlugin, AdminConfigProvider } from "../config/AdminConfig.js";
19
+ import { WebinySdkFeature } from "../features/webinySdk/feature.js";
19
20
  const container = createRootContainer();
20
21
  export const Admin = ({
21
22
  children,
@@ -30,6 +31,7 @@ export const Admin = ({
30
31
  ApolloClientFeature.register(container, apolloClient);
31
32
  SecurityFeature.register(container);
32
33
  FormModelFeature.register(container);
34
+ WebinySdkFeature.register(container);
33
35
  const ApolloProvider = createApolloProvider(apolloClient);
34
36
  const UIProviders = createUiProviders();
35
37
  const UiStateProvider = createUiStateProvider();
package/base/Admin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["React","plugins","App","DiContainerProvider","createApolloProvider","Base","createUiStateProvider","createAdminUiStateProvider","createUiProviders","createDialogsProvider","DefaultIcons","IconPickerConfigProvider","createRootContainer","WcpProvider","createTenancyProvider","TelemetryAdminAppStart","ApolloClientFeature","SecurityFeature","FormModelFeature","AdminConfigPlugin","AdminConfigProvider","container","Admin","children","createApolloClient","createLegacyPlugins","uri","process","env","REACT_APP_GRAPHQL_API_URL","apolloClient","register","ApolloProvider","UIProviders","UiStateProvider","AdminUiStateProvider","DialogsProvider","TenancyProvider","createElement","routes","providers"],"sources":["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 type { ApolloClientFactory } from \"./providers/ApolloProvider.js\";\nimport { createApolloProvider } from \"./providers/ApolloProvider.js\";\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 { ApolloClientFeature } from \"~/features/apolloClient/feature.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\";\n\nexport interface AdminProps {\n createApolloClient: ApolloClientFactory;\n createLegacyPlugins: (container: Container) => PluginCollection;\n children?: React.ReactNode;\n}\n\nconst container = createRootContainer();\n\nexport const Admin = ({ children, createApolloClient, createLegacyPlugins }: AdminProps) => {\n const uri = process.env.REACT_APP_GRAPHQL_API_URL as string;\n const apolloClient = createApolloClient({ uri });\n\n plugins.register(...createLegacyPlugins(container));\n\n ApolloClientFeature.register(container, apolloClient);\n SecurityFeature.register(container);\n FormModelFeature.register(container);\n\n const ApolloProvider = createApolloProvider(apolloClient);\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 <ApolloProvider>\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 {children}\n </App>\n </WcpProvider>\n </ApolloProvider>\n </DiContainerProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,GAAG,EAAEC,mBAAmB,QAAQ,aAAa;AAEtD,SAASC,oBAAoB;AAC7B,SAASC,IAAI;AACb,SAASC,qBAAqB;AAC9B,SAASC,0BAA0B;AACnC,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;AAC9B,SAASC,YAAY,EAAEC,wBAAwB;AAC/C,SAASC,mBAAmB;AAC5B,SAASC,WAAW;AACpB,SAASC,qBAAqB;AAC9B,SAASC,sBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,eAAe;AACxB,SAASC,gBAAgB;AAEzB,SAASC,iBAAiB,EAAEC,mBAAmB;AAQ/C,MAAMC,SAAS,GAAGT,mBAAmB,CAAC,CAAC;AAEvC,OAAO,MAAMU,KAAK,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,kBAAkB;EAAEC;AAAgC,CAAC,KAAK;EACxF,MAAMC,GAAG,GAAGC,OAAO,CAACC,GAAG,CAACC,yBAAmC;EAC3D,MAAMC,YAAY,GAAGN,kBAAkB,CAAC;IAAEE;EAAI,CAAC,CAAC;EAEhDzB,OAAO,CAAC8B,QAAQ,CAAC,GAAGN,mBAAmB,CAACJ,SAAS,CAAC,CAAC;EAEnDL,mBAAmB,CAACe,QAAQ,CAACV,SAAS,EAAES,YAAY,CAAC;EACrDb,eAAe,CAACc,QAAQ,CAACV,SAAS,CAAC;EACnCH,gBAAgB,CAACa,QAAQ,CAACV,SAAS,CAAC;EAEpC,MAAMW,cAAc,GAAG5B,oBAAoB,CAAC0B,YAAY,CAAC;EACzD,MAAMG,WAAW,GAAGzB,iBAAiB,CAAC,CAAC;EACvC,MAAM0B,eAAe,GAAG5B,qBAAqB,CAAC,CAAC;EAC/C,MAAM6B,oBAAoB,GAAG5B,0BAA0B,CAAC,CAAC;EACzD,MAAM6B,eAAe,GAAG3B,qBAAqB,CAAC,CAAC;EAC/C,MAAM4B,eAAe,GAAGvB,qBAAqB,CAAC,CAAC;EAE/C,oBACId,KAAA,CAAAsC,aAAA,CAACnC,mBAAmB;IAACkB,SAAS,EAAEA;EAAU,gBACtCrB,KAAA,CAAAsC,aAAA,CAACvB,sBAAsB,MAAE,CAAC,eAC1Bf,KAAA,CAAAsC,aAAA,CAACN,cAAc,qBACXhC,KAAA,CAAAsC,aAAA,CAACzB,WAAW,qBACRb,KAAA,CAAAsC,aAAA,CAACpC,GAAG;IACAD,OAAO,EAAE,CAACkB,iBAAiB,CAAE;IAC7BoB,MAAM,EAAE,EAAG;IACXC,SAAS,EAAE,CACPpB,mBAAmB,EACnBa,WAAW,EACXC,eAAe,EACfE,eAAe,EACfzB,wBAAwB,EACxBwB,oBAAoB,EACpBE,eAAe;EACjB,gBAEFrC,KAAA,CAAAsC,aAAA,CAACjC,IAAI,MAAE,CAAC,eACRL,KAAA,CAAAsC,aAAA,CAAC5B,YAAY,MAAE,CAAC,EACfa,QACA,CACI,CACD,CACC,CAAC;AAE9B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","plugins","App","DiContainerProvider","createApolloProvider","Base","createUiStateProvider","createAdminUiStateProvider","createUiProviders","createDialogsProvider","DefaultIcons","IconPickerConfigProvider","createRootContainer","WcpProvider","createTenancyProvider","TelemetryAdminAppStart","ApolloClientFeature","SecurityFeature","FormModelFeature","AdminConfigPlugin","AdminConfigProvider","WebinySdkFeature","container","Admin","children","createApolloClient","createLegacyPlugins","uri","process","env","REACT_APP_GRAPHQL_API_URL","apolloClient","register","ApolloProvider","UIProviders","UiStateProvider","AdminUiStateProvider","DialogsProvider","TenancyProvider","createElement","routes","providers"],"sources":["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 type { ApolloClientFactory } from \"./providers/ApolloProvider.js\";\nimport { createApolloProvider } from \"./providers/ApolloProvider.js\";\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 { ApolloClientFeature } from \"~/features/apolloClient/feature.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\";\n\nexport interface AdminProps {\n createApolloClient: ApolloClientFactory;\n createLegacyPlugins: (container: Container) => PluginCollection;\n children?: React.ReactNode;\n}\n\nconst container = createRootContainer();\n\nexport const Admin = ({ children, createApolloClient, createLegacyPlugins }: AdminProps) => {\n const uri = process.env.REACT_APP_GRAPHQL_API_URL as string;\n const apolloClient = createApolloClient({ uri });\n\n plugins.register(...createLegacyPlugins(container));\n\n ApolloClientFeature.register(container, apolloClient);\n SecurityFeature.register(container);\n FormModelFeature.register(container);\n WebinySdkFeature.register(container);\n\n const ApolloProvider = createApolloProvider(apolloClient);\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 <ApolloProvider>\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 {children}\n </App>\n </WcpProvider>\n </ApolloProvider>\n </DiContainerProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,GAAG,EAAEC,mBAAmB,QAAQ,aAAa;AAEtD,SAASC,oBAAoB;AAC7B,SAASC,IAAI;AACb,SAASC,qBAAqB;AAC9B,SAASC,0BAA0B;AACnC,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;AAC9B,SAASC,YAAY,EAAEC,wBAAwB;AAC/C,SAASC,mBAAmB;AAC5B,SAASC,WAAW;AACpB,SAASC,qBAAqB;AAC9B,SAASC,sBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,eAAe;AACxB,SAASC,gBAAgB;AAEzB,SAASC,iBAAiB,EAAEC,mBAAmB;AAC/C,SAASC,gBAAgB;AAQzB,MAAMC,SAAS,GAAGV,mBAAmB,CAAC,CAAC;AAEvC,OAAO,MAAMW,KAAK,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,kBAAkB;EAAEC;AAAgC,CAAC,KAAK;EACxF,MAAMC,GAAG,GAAGC,OAAO,CAACC,GAAG,CAACC,yBAAmC;EAC3D,MAAMC,YAAY,GAAGN,kBAAkB,CAAC;IAAEE;EAAI,CAAC,CAAC;EAEhD1B,OAAO,CAAC+B,QAAQ,CAAC,GAAGN,mBAAmB,CAACJ,SAAS,CAAC,CAAC;EAEnDN,mBAAmB,CAACgB,QAAQ,CAACV,SAAS,EAAES,YAAY,CAAC;EACrDd,eAAe,CAACe,QAAQ,CAACV,SAAS,CAAC;EACnCJ,gBAAgB,CAACc,QAAQ,CAACV,SAAS,CAAC;EACpCD,gBAAgB,CAACW,QAAQ,CAACV,SAAS,CAAC;EAEpC,MAAMW,cAAc,GAAG7B,oBAAoB,CAAC2B,YAAY,CAAC;EACzD,MAAMG,WAAW,GAAG1B,iBAAiB,CAAC,CAAC;EACvC,MAAM2B,eAAe,GAAG7B,qBAAqB,CAAC,CAAC;EAC/C,MAAM8B,oBAAoB,GAAG7B,0BAA0B,CAAC,CAAC;EACzD,MAAM8B,eAAe,GAAG5B,qBAAqB,CAAC,CAAC;EAC/C,MAAM6B,eAAe,GAAGxB,qBAAqB,CAAC,CAAC;EAE/C,oBACId,KAAA,CAAAuC,aAAA,CAACpC,mBAAmB;IAACmB,SAAS,EAAEA;EAAU,gBACtCtB,KAAA,CAAAuC,aAAA,CAACxB,sBAAsB,MAAE,CAAC,eAC1Bf,KAAA,CAAAuC,aAAA,CAACN,cAAc,qBACXjC,KAAA,CAAAuC,aAAA,CAAC1B,WAAW,qBACRb,KAAA,CAAAuC,aAAA,CAACrC,GAAG;IACAD,OAAO,EAAE,CAACkB,iBAAiB,CAAE;IAC7BqB,MAAM,EAAE,EAAG;IACXC,SAAS,EAAE,CACPrB,mBAAmB,EACnBc,WAAW,EACXC,eAAe,EACfE,eAAe,EACf1B,wBAAwB,EACxByB,oBAAoB,EACpBE,eAAe;EACjB,gBAEFtC,KAAA,CAAAuC,aAAA,CAAClC,IAAI,MAAE,CAAC,eACRL,KAAA,CAAAuC,aAAA,CAAC7B,YAAY,MAAE,CAAC,EACfc,QACA,CACI,CACD,CACC,CAAC;AAE9B,CAAC","ignoreList":[]}
@@ -1,14 +1,30 @@
1
1
  import React from "react";
2
2
  import { AdminConfig } from "../../config/AdminConfig.js";
3
- import { TextRenderer } from "./FieldRenderers/TextRenderer.js";
3
+ import { InputRenderer } from "./FieldRenderers/InputRenderer.js";
4
4
  import { SelectRenderer } from "./FieldRenderers/SelectRenderer.js";
5
+ import { ObjectRenderer } from "./FieldRenderers/ObjectRenderer/ObjectRenderer.js";
6
+ import { PassthroughRenderer } from "./FieldRenderers/PassthroughRenderer.js";
7
+ import { ObjectListFlatRenderer } from "./FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.js";
8
+ import { TextareaRenderer } from "./FieldRenderers/TextareaRenderer.js";
5
9
  export const DefaultFieldRenderers = () => {
6
10
  return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(AdminConfig.Form.FieldRenderer, {
7
- name: "text",
8
- component: TextRenderer
11
+ name: "input",
12
+ component: InputRenderer
9
13
  }), /*#__PURE__*/React.createElement(AdminConfig.Form.FieldRenderer, {
10
- name: "select",
14
+ name: "textarea",
15
+ component: TextareaRenderer
16
+ }), /*#__PURE__*/React.createElement(AdminConfig.Form.FieldRenderer, {
17
+ name: "dropdown",
11
18
  component: SelectRenderer
19
+ }), /*#__PURE__*/React.createElement(AdminConfig.Form.FieldRenderer, {
20
+ name: "object",
21
+ component: ObjectRenderer
22
+ }), /*#__PURE__*/React.createElement(AdminConfig.Form.FieldRenderer, {
23
+ name: "passthrough",
24
+ component: PassthroughRenderer
25
+ }), /*#__PURE__*/React.createElement(AdminConfig.Form.FieldRenderer, {
26
+ name: "objectListFlat",
27
+ component: ObjectListFlatRenderer
12
28
  }));
13
29
  };
14
30
 
@@ -1 +1 @@
1
- {"version":3,"names":["React","AdminConfig","TextRenderer","SelectRenderer","DefaultFieldRenderers","createElement","Form","FieldRenderer","name","component"],"sources":["DefaultFieldRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { TextRenderer } from \"~/base/Base/FieldRenderers/TextRenderer.js\";\nimport { SelectRenderer } from \"~/base/Base/FieldRenderers/SelectRenderer.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"text\"} component={TextRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"select\"} component={SelectRenderer} />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW;AACpB,SAASC,YAAY;AACrB,SAASC,cAAc;AAEvB,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACvC,oBACIJ,KAAA,CAAAK,aAAA,CAACJ,WAAW,qBACRD,KAAA,CAAAK,aAAA,CAACJ,WAAW,CAACK,IAAI,CAACC,aAAa;IAACC,IAAI,EAAE,MAAO;IAACC,SAAS,EAAEP;EAAa,CAAE,CAAC,eACzEF,KAAA,CAAAK,aAAA,CAACJ,WAAW,CAACK,IAAI,CAACC,aAAa;IAACC,IAAI,EAAE,QAAS;IAACC,SAAS,EAAEN;EAAe,CAAE,CACnE,CAAC;AAEtB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","AdminConfig","InputRenderer","SelectRenderer","ObjectRenderer","PassthroughRenderer","ObjectListFlatRenderer","TextareaRenderer","DefaultFieldRenderers","createElement","Form","FieldRenderer","name","component"],"sources":["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 { PassthroughRenderer } from \"~/base/Base/FieldRenderers/PassthroughRenderer.js\";\nimport { ObjectListFlatRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectListFlatRenderer.js\";\nimport { TextareaRenderer } from \"~/base/Base/FieldRenderers/TextareaRenderer.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"input\"} component={InputRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textarea\"} component={TextareaRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dropdown\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"object\"} component={ObjectRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"passthrough\"} component={PassthroughRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"objectListFlat\"}\n component={ObjectListFlatRenderer}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW;AACpB,SAASC,aAAa;AACtB,SAASC,cAAc;AACvB,SAASC,cAAc;AACvB,SAASC,mBAAmB;AAC5B,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACvC,oBACIR,KAAA,CAAAS,aAAA,CAACR,WAAW,qBACRD,KAAA,CAAAS,aAAA,CAACR,WAAW,CAACS,IAAI,CAACC,aAAa;IAACC,IAAI,EAAE,OAAQ;IAACC,SAAS,EAAEX;EAAc,CAAE,CAAC,eAC3EF,KAAA,CAAAS,aAAA,CAACR,WAAW,CAACS,IAAI,CAACC,aAAa;IAACC,IAAI,EAAE,UAAW;IAACC,SAAS,EAAEN;EAAiB,CAAE,CAAC,eACjFP,KAAA,CAAAS,aAAA,CAACR,WAAW,CAACS,IAAI,CAACC,aAAa;IAACC,IAAI,EAAE,UAAW;IAACC,SAAS,EAAEV;EAAe,CAAE,CAAC,eAC/EH,KAAA,CAAAS,aAAA,CAACR,WAAW,CAACS,IAAI,CAACC,aAAa;IAACC,IAAI,EAAE,QAAS;IAACC,SAAS,EAAET;EAAe,CAAE,CAAC,eAC7EJ,KAAA,CAAAS,aAAA,CAACR,WAAW,CAACS,IAAI,CAACC,aAAa;IAACC,IAAI,EAAE,aAAc;IAACC,SAAS,EAAER;EAAoB,CAAE,CAAC,eACvFL,KAAA,CAAAS,aAAA,CAACR,WAAW,CAACS,IAAI,CAACC,aAAa;IAC3BC,IAAI,EAAE,gBAAiB;IACvBC,SAAS,EAAEP;EAAuB,CACrC,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const DefaultLayoutRenderers: () => React.JSX.Element;
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { AdminConfig } from "../../config/AdminConfig.js";
3
+ import { VerticalTabsRenderer } from "./FieldRenderers/VerticalTabsRenderer.js";
4
+ export const DefaultLayoutRenderers = () => {
5
+ return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(AdminConfig.Form.LayoutRenderer, {
6
+ name: "tabs-vertical",
7
+ component: VerticalTabsRenderer
8
+ }));
9
+ };
10
+
11
+ //# sourceMappingURL=DefaultLayoutRenderers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","AdminConfig","VerticalTabsRenderer","DefaultLayoutRenderers","createElement","Form","LayoutRenderer","name","component"],"sources":["DefaultLayoutRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { VerticalTabsRenderer } from \"~/base/Base/FieldRenderers/VerticalTabsRenderer.js\";\n\nexport const DefaultLayoutRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.LayoutRenderer\n name={\"tabs-vertical\"}\n component={VerticalTabsRenderer}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW;AACpB,SAASC,oBAAoB;AAE7B,OAAO,MAAMC,sBAAsB,GAAGA,CAAA,KAAM;EACxC,oBACIH,KAAA,CAAAI,aAAA,CAACH,WAAW,qBACRD,KAAA,CAAAI,aAAA,CAACH,WAAW,CAACI,IAAI,CAACC,cAAc;IAC5BC,IAAI,EAAE,eAAgB;IACtBC,SAAS,EAAEN;EAAqB,CACnC,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import type { IFieldVM } from "../../../features/formModel/index.js";
3
+ declare module "../../../features/formModel/abstractions.js" {
4
+ interface IFieldRendererRegistry {
5
+ input: {
6
+ fieldType: "text";
7
+ settings: undefined;
8
+ };
9
+ }
10
+ }
11
+ export declare const InputRenderer: (({ field }: {
12
+ field: IFieldVM;
13
+ }) => React.JSX.Element) & {
14
+ displayName: string;
15
+ };
@@ -2,15 +2,17 @@ import React from "react";
2
2
  import { observer } from "mobx-react-lite";
3
3
  import { Input } from "@webiny/admin-ui";
4
4
  import { DelayedOnChange } from "@webiny/admin-ui";
5
- export const TextRenderer = observer(function TextRenderer({
5
+ export const InputRenderer = observer(({
6
6
  field
7
- }) {
7
+ }) => {
8
8
  return /*#__PURE__*/React.createElement(DelayedOnChange, {
9
9
  value: field.value,
10
10
  onChange: value => field.onChange(value)
11
11
  }, /*#__PURE__*/React.createElement(Input, {
12
12
  label: field.label,
13
13
  placeholder: field.placeholder,
14
+ description: field.description,
15
+ note: field.note,
14
16
  required: field.required,
15
17
  disabled: field.disabled,
16
18
  validation: field.validation,
@@ -18,4 +20,4 @@ export const TextRenderer = observer(function TextRenderer({
18
20
  }));
19
21
  });
20
22
 
21
- //# sourceMappingURL=TextRenderer.js.map
23
+ //# sourceMappingURL=InputRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","observer","Input","DelayedOnChange","InputRenderer","field","createElement","value","onChange","label","placeholder","description","note","required","disabled","validation","onBlur"],"sources":["InputRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Input } from \"@webiny/admin-ui\";\nimport { DelayedOnChange } from \"@webiny/admin-ui\";\nimport type { IFieldVM } from \"~/features/formModel/index.js\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n input: { fieldType: \"text\"; settings: undefined };\n }\n}\n\nexport const InputRenderer = observer(({ field }: { field: IFieldVM }) => {\n return (\n <DelayedOnChange value={field.value} onChange={value => field.onChange(value)}>\n <Input\n label={field.label}\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 onBlur={() => field.onBlur()}\n />\n </DelayedOnChange>\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,KAAK,QAAQ,kBAAkB;AACxC,SAASC,eAAe,QAAQ,kBAAkB;AASlD,OAAO,MAAMC,aAAa,GAAGH,QAAQ,CAAC,CAAC;EAAEI;AAA2B,CAAC,KAAK;EACtE,oBACIL,KAAA,CAAAM,aAAA,CAACH,eAAe;IAACI,KAAK,EAAEF,KAAK,CAACE,KAAM;IAACC,QAAQ,EAAED,KAAK,IAAIF,KAAK,CAACG,QAAQ,CAACD,KAAK;EAAE,gBAC1EP,KAAA,CAAAM,aAAA,CAACJ,KAAK;IACFO,KAAK,EAAEJ,KAAK,CAACI,KAAM;IACnBC,WAAW,EAAEL,KAAK,CAACK,WAAY;IAC/BC,WAAW,EAAEN,KAAK,CAACM,WAAY;IAC/BC,IAAI,EAAEP,KAAK,CAACO,IAAK;IACjBC,QAAQ,EAAER,KAAK,CAACQ,QAAS;IACzBC,QAAQ,EAAET,KAAK,CAACS,QAAS;IACzBC,UAAU,EAAEV,KAAK,CAACU,UAAW;IAC7BC,MAAM,EAAEA,CAAA,KAAMX,KAAK,CAACW,MAAM,CAAC;EAAE,CAChC,CACY,CAAC;AAE1B,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import type { IFieldVM, IObjectFieldVM, IObjectFieldItemVM } from "../../../../features/formModel/index.js";
3
+ export declare const isObjectFieldVM: (field: IFieldVM) => field is IObjectFieldVM;
4
+ export declare const ChildFields: (({ fields }: {
5
+ fields: IFieldVM[];
6
+ }) => React.JSX.Element) & {
7
+ displayName: string;
8
+ };
9
+ export interface ListItemRendererProps {
10
+ item: IObjectFieldItemVM;
11
+ index: number;
12
+ total: number;
13
+ label?: string;
14
+ itemTitle?: string | ((data: Record<string, unknown>, index: number) => string);
15
+ disabled: boolean;
16
+ }
17
+ export declare const ListItemRenderer: (({ item, index, total, label, itemTitle, disabled }: ListItemRendererProps) => React.JSX.Element) & {
18
+ displayName: string;
19
+ };
20
+ export interface AddItemButtonProps {
21
+ label?: string;
22
+ disabled: boolean;
23
+ onAdd: () => void;
24
+ }
25
+ export declare const AddItemButton: ({ label, disabled, onAdd }: AddItemButtonProps) => React.JSX.Element;
@@ -0,0 +1,89 @@
1
+ import React from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { Accordion, Button, IconButton } from "@webiny/admin-ui";
4
+ import { ReactComponent as DeleteIcon } from "@webiny/icons/delete_outline.svg";
5
+ import { ReactComponent as ArrowUp } from "@webiny/icons/arrow_upward.svg";
6
+ import { ReactComponent as ArrowDown } from "@webiny/icons/arrow_downward.svg";
7
+ import { useFormViewRenderers } from "../../../../features/formModel/FormView.js";
8
+ import { resolveItemTitle } from "./resolveItemTitle.js";
9
+ export const isObjectFieldVM = field => {
10
+ return field.type === "object";
11
+ };
12
+ export const ChildFields = observer(({
13
+ fields
14
+ }) => {
15
+ const {
16
+ fieldRenderers
17
+ } = useFormViewRenderers();
18
+ return /*#__PURE__*/React.createElement("div", {
19
+ className: "flex flex-col gap-4 p-sm"
20
+ }, fields.map(childField => {
21
+ const Renderer = childField.renderer ? fieldRenderers[childField.renderer] : undefined;
22
+ if (!Renderer) {
23
+ return null;
24
+ }
25
+ return /*#__PURE__*/React.createElement(Renderer, {
26
+ key: childField.name,
27
+ field: childField
28
+ });
29
+ }));
30
+ });
31
+ export const ListItemRenderer = observer(({
32
+ item,
33
+ index,
34
+ total,
35
+ label,
36
+ itemTitle,
37
+ disabled
38
+ }) => {
39
+ const actions = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(IconButton, {
40
+ icon: /*#__PURE__*/React.createElement(ArrowDown, null),
41
+ onClick: e => {
42
+ e.stopPropagation();
43
+ item.moveDown();
44
+ },
45
+ variant: "ghost",
46
+ disabled: index === total - 1
47
+ }), /*#__PURE__*/React.createElement(IconButton, {
48
+ icon: /*#__PURE__*/React.createElement(ArrowUp, null),
49
+ onClick: e => {
50
+ e.stopPropagation();
51
+ item.moveUp();
52
+ },
53
+ variant: "ghost",
54
+ disabled: index === 0
55
+ }), /*#__PURE__*/React.createElement(Accordion.Item.Action.Separator, null), /*#__PURE__*/React.createElement(IconButton, {
56
+ icon: /*#__PURE__*/React.createElement(DeleteIcon, null),
57
+ onClick: e => {
58
+ e.stopPropagation();
59
+ item.remove();
60
+ },
61
+ variant: "ghost"
62
+ }));
63
+ return /*#__PURE__*/React.createElement(Accordion, {
64
+ background: "base",
65
+ variant: "container",
66
+ openClosedIndicatorPosition: "left"
67
+ }, /*#__PURE__*/React.createElement(Accordion.Item, {
68
+ title: resolveItemTitle(item, index, label, itemTitle),
69
+ actions: disabled ? null : actions,
70
+ defaultOpen: false
71
+ }, /*#__PURE__*/React.createElement(ChildFields, {
72
+ fields: item.fields
73
+ })));
74
+ });
75
+ export const AddItemButton = ({
76
+ label,
77
+ disabled,
78
+ onAdd
79
+ }) => {
80
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
81
+ text: label || "Add Item",
82
+ variant: "secondary",
83
+ size: "sm",
84
+ onClick: onAdd,
85
+ disabled: disabled
86
+ }));
87
+ };
88
+
89
+ //# sourceMappingURL=ObjectFieldComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","observer","Accordion","Button","IconButton","ReactComponent","DeleteIcon","ArrowUp","ArrowDown","useFormViewRenderers","resolveItemTitle","isObjectFieldVM","field","type","ChildFields","fields","fieldRenderers","createElement","className","map","childField","Renderer","renderer","undefined","key","name","ListItemRenderer","item","index","total","label","itemTitle","disabled","actions","Fragment","icon","onClick","e","stopPropagation","moveDown","variant","moveUp","Item","Action","Separator","remove","background","openClosedIndicatorPosition","title","defaultOpen","AddItemButton","onAdd","text","size"],"sources":["ObjectFieldComponents.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Accordion, Button, IconButton } from \"@webiny/admin-ui\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete_outline.svg\";\nimport { ReactComponent as ArrowUp } from \"@webiny/icons/arrow_upward.svg\";\nimport { ReactComponent as ArrowDown } from \"@webiny/icons/arrow_downward.svg\";\nimport type { IFieldVM, IObjectFieldVM, IObjectFieldItemVM } from \"~/features/formModel/index.js\";\nimport { useFormViewRenderers } from \"~/features/formModel/FormView.js\";\nimport { resolveItemTitle } from \"./resolveItemTitle.js\";\n\nexport const isObjectFieldVM = (field: IFieldVM): field is IObjectFieldVM => {\n return field.type === \"object\";\n};\n\nexport const ChildFields = observer(({ fields }: { fields: IFieldVM[] }) => {\n const { fieldRenderers } = useFormViewRenderers();\n\n return (\n <div className={\"flex flex-col gap-4 p-sm\"}>\n {fields.map(childField => {\n const Renderer = childField.renderer\n ? fieldRenderers[childField.renderer]\n : undefined;\n\n if (!Renderer) {\n return null;\n }\n\n return <Renderer key={childField.name} field={childField} />;\n })}\n </div>\n );\n});\n\nexport interface ListItemRendererProps {\n item: IObjectFieldItemVM;\n index: number;\n total: number;\n label?: string;\n itemTitle?: string | ((data: Record<string, unknown>, index: number) => string);\n disabled: boolean;\n}\n\nexport const ListItemRenderer = observer(\n ({ item, index, total, label, itemTitle, disabled }: ListItemRendererProps) => {\n const actions = (\n <>\n <IconButton\n icon={<ArrowDown />}\n onClick={e => {\n e.stopPropagation();\n item.moveDown();\n }}\n variant=\"ghost\"\n disabled={index === total - 1}\n />\n <IconButton\n icon={<ArrowUp />}\n onClick={e => {\n e.stopPropagation();\n item.moveUp();\n }}\n variant=\"ghost\"\n disabled={index === 0}\n />\n <Accordion.Item.Action.Separator />\n <IconButton\n icon={<DeleteIcon />}\n onClick={e => {\n e.stopPropagation();\n item.remove();\n }}\n variant=\"ghost\"\n />\n </>\n );\n\n return (\n <Accordion\n background={\"base\"}\n variant={\"container\"}\n openClosedIndicatorPosition={\"left\"}\n >\n <Accordion.Item\n title={resolveItemTitle(item, index, label, itemTitle)}\n actions={disabled ? null : actions}\n defaultOpen={false}\n >\n <ChildFields fields={item.fields} />\n </Accordion.Item>\n </Accordion>\n );\n }\n);\n\nexport interface AddItemButtonProps {\n label?: string;\n disabled: boolean;\n onAdd: () => void;\n}\n\nexport const AddItemButton = ({ label, disabled, onAdd }: AddItemButtonProps) => {\n return (\n <div>\n <Button\n text={label || \"Add Item\"}\n variant={\"secondary\"}\n size={\"sm\"}\n onClick={onAdd}\n disabled={disabled}\n />\n </div>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,SAAS,EAAEC,MAAM,EAAEC,UAAU,QAAQ,kBAAkB;AAChE,SAASC,cAAc,IAAIC,UAAU,QAAQ,kCAAkC;AAC/E,SAASD,cAAc,IAAIE,OAAO,QAAQ,gCAAgC;AAC1E,SAASF,cAAc,IAAIG,SAAS,QAAQ,kCAAkC;AAE9E,SAASC,oBAAoB;AAC7B,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,eAAe,GAAIC,KAAe,IAA8B;EACzE,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAClC,CAAC;AAED,OAAO,MAAMC,WAAW,GAAGb,QAAQ,CAAC,CAAC;EAAEc;AAA+B,CAAC,KAAK;EACxE,MAAM;IAAEC;EAAe,CAAC,GAAGP,oBAAoB,CAAC,CAAC;EAEjD,oBACIT,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAE;EAA2B,GACtCH,MAAM,CAACI,GAAG,CAACC,UAAU,IAAI;IACtB,MAAMC,QAAQ,GAAGD,UAAU,CAACE,QAAQ,GAC9BN,cAAc,CAACI,UAAU,CAACE,QAAQ,CAAC,GACnCC,SAAS;IAEf,IAAI,CAACF,QAAQ,EAAE;MACX,OAAO,IAAI;IACf;IAEA,oBAAOrB,KAAA,CAAAiB,aAAA,CAACI,QAAQ;MAACG,GAAG,EAAEJ,UAAU,CAACK,IAAK;MAACb,KAAK,EAAEQ;IAAW,CAAE,CAAC;EAChE,CAAC,CACA,CAAC;AAEd,CAAC,CAAC;AAWF,OAAO,MAAMM,gBAAgB,GAAGzB,QAAQ,CACpC,CAAC;EAAE0B,IAAI;EAAEC,KAAK;EAAEC,KAAK;EAAEC,KAAK;EAAEC,SAAS;EAAEC;AAAgC,CAAC,KAAK;EAC3E,MAAMC,OAAO,gBACTjC,KAAA,CAAAiB,aAAA,CAAAjB,KAAA,CAAAkC,QAAA,qBACIlC,KAAA,CAAAiB,aAAA,CAACb,UAAU;IACP+B,IAAI,eAAEnC,KAAA,CAAAiB,aAAA,CAACT,SAAS,MAAE,CAAE;IACpB4B,OAAO,EAAEC,CAAC,IAAI;MACVA,CAAC,CAACC,eAAe,CAAC,CAAC;MACnBX,IAAI,CAACY,QAAQ,CAAC,CAAC;IACnB,CAAE;IACFC,OAAO,EAAC,OAAO;IACfR,QAAQ,EAAEJ,KAAK,KAAKC,KAAK,GAAG;EAAE,CACjC,CAAC,eACF7B,KAAA,CAAAiB,aAAA,CAACb,UAAU;IACP+B,IAAI,eAAEnC,KAAA,CAAAiB,aAAA,CAACV,OAAO,MAAE,CAAE;IAClB6B,OAAO,EAAEC,CAAC,IAAI;MACVA,CAAC,CAACC,eAAe,CAAC,CAAC;MACnBX,IAAI,CAACc,MAAM,CAAC,CAAC;IACjB,CAAE;IACFD,OAAO,EAAC,OAAO;IACfR,QAAQ,EAAEJ,KAAK,KAAK;EAAE,CACzB,CAAC,eACF5B,KAAA,CAAAiB,aAAA,CAACf,SAAS,CAACwC,IAAI,CAACC,MAAM,CAACC,SAAS,MAAE,CAAC,eACnC5C,KAAA,CAAAiB,aAAA,CAACb,UAAU;IACP+B,IAAI,eAAEnC,KAAA,CAAAiB,aAAA,CAACX,UAAU,MAAE,CAAE;IACrB8B,OAAO,EAAEC,CAAC,IAAI;MACVA,CAAC,CAACC,eAAe,CAAC,CAAC;MACnBX,IAAI,CAACkB,MAAM,CAAC,CAAC;IACjB,CAAE;IACFL,OAAO,EAAC;EAAO,CAClB,CACH,CACL;EAED,oBACIxC,KAAA,CAAAiB,aAAA,CAACf,SAAS;IACN4C,UAAU,EAAE,MAAO;IACnBN,OAAO,EAAE,WAAY;IACrBO,2BAA2B,EAAE;EAAO,gBAEpC/C,KAAA,CAAAiB,aAAA,CAACf,SAAS,CAACwC,IAAI;IACXM,KAAK,EAAEtC,gBAAgB,CAACiB,IAAI,EAAEC,KAAK,EAAEE,KAAK,EAAEC,SAAS,CAAE;IACvDE,OAAO,EAAED,QAAQ,GAAG,IAAI,GAAGC,OAAQ;IACnCgB,WAAW,EAAE;EAAM,gBAEnBjD,KAAA,CAAAiB,aAAA,CAACH,WAAW;IAACC,MAAM,EAAEY,IAAI,CAACZ;EAAO,CAAE,CACvB,CACT,CAAC;AAEpB,CACJ,CAAC;AAQD,OAAO,MAAMmC,aAAa,GAAGA,CAAC;EAAEpB,KAAK;EAAEE,QAAQ;EAAEmB;AAA0B,CAAC,KAAK;EAC7E,oBACInD,KAAA,CAAAiB,aAAA,2BACIjB,KAAA,CAAAiB,aAAA,CAACd,MAAM;IACHiD,IAAI,EAAEtB,KAAK,IAAI,UAAW;IAC1BU,OAAO,EAAE,WAAY;IACrBa,IAAI,EAAE,IAAK;IACXjB,OAAO,EAAEe,KAAM;IACfnB,QAAQ,EAAEA;EAAS,CACtB,CACA,CAAC;AAEd,CAAC","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import type { IFieldVM } from "../../../../features/formModel/index.js";
3
+ declare module "../../../../features/formModel/abstractions.js" {
4
+ interface ItemTitleGenerator {
5
+ (data: Record<string, unknown>, index: number): string;
6
+ }
7
+ interface IFieldRendererRegistry {
8
+ objectListFlat: {
9
+ fieldType: "object";
10
+ settings?: {
11
+ addItemLabel?: string;
12
+ itemTitle?: string | ItemTitleGenerator;
13
+ };
14
+ };
15
+ }
16
+ }
17
+ export declare const ObjectListFlatRenderer: (({ field }: {
18
+ field: IFieldVM;
19
+ }) => React.JSX.Element | null) & {
20
+ displayName: string;
21
+ };
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { isObjectFieldVM, ListItemRenderer, AddItemButton } from "./ObjectFieldComponents.js";
4
+ export const ObjectListFlatRenderer = observer(({
5
+ field
6
+ }) => {
7
+ if (!isObjectFieldVM(field) || !field.isList) {
8
+ return null;
9
+ }
10
+ const settings = field.rendererSettings;
11
+ return /*#__PURE__*/React.createElement("div", {
12
+ className: "flex flex-col gap-sm"
13
+ }, field.items.map((item, index) => /*#__PURE__*/React.createElement(ListItemRenderer, {
14
+ key: item.key,
15
+ item: item,
16
+ index: index,
17
+ total: field.items.length,
18
+ label: field.label,
19
+ itemTitle: settings?.itemTitle,
20
+ disabled: field.disabled
21
+ })), /*#__PURE__*/React.createElement(AddItemButton, {
22
+ label: settings?.addItemLabel || `Add ${field.label || "Item"}`,
23
+ disabled: field.disabled,
24
+ onAdd: () => field.addItem()
25
+ }));
26
+ });
27
+
28
+ //# sourceMappingURL=ObjectListFlatRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","observer","isObjectFieldVM","ListItemRenderer","AddItemButton","ObjectListFlatRenderer","field","isList","settings","rendererSettings","createElement","className","items","map","item","index","key","total","length","label","itemTitle","disabled","addItemLabel","onAdd","addItem"],"sources":["ObjectListFlatRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport type { IFieldVM, IFieldRendererRegistry } from \"~/features/formModel/index.js\";\nimport { isObjectFieldVM, ListItemRenderer, AddItemButton } from \"./ObjectFieldComponents.js\";\n\ndeclare module \"../../../../features/formModel/abstractions.js\" {\n interface ItemTitleGenerator {\n (data: Record<string, unknown>, index: number): string;\n }\n\n interface IFieldRendererRegistry {\n objectListFlat: {\n fieldType: \"object\";\n settings?: {\n addItemLabel?: string;\n itemTitle?: string | ItemTitleGenerator;\n };\n };\n }\n}\n\ntype ObjectListFlatSettings = NonNullable<IFieldRendererRegistry[\"objectListFlat\"][\"settings\"]>;\n\nexport const ObjectListFlatRenderer = observer(({ field }: { field: IFieldVM }) => {\n if (!isObjectFieldVM(field) || !field.isList) {\n return null;\n }\n\n const settings = field.rendererSettings as ObjectListFlatSettings | undefined;\n\n return (\n <div className={\"flex flex-col gap-sm\"}>\n {field.items.map((item, index) => (\n <ListItemRenderer\n key={item.key}\n item={item}\n index={index}\n total={field.items.length}\n label={field.label}\n itemTitle={settings?.itemTitle}\n disabled={field.disabled}\n />\n ))}\n <AddItemButton\n label={settings?.addItemLabel || `Add ${field.label || \"Item\"}`}\n disabled={field.disabled}\n onAdd={() => field.addItem()}\n />\n </div>\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,iBAAiB;AAE1C,SAASC,eAAe,EAAEC,gBAAgB,EAAEC,aAAa;AAoBzD,OAAO,MAAMC,sBAAsB,GAAGJ,QAAQ,CAAC,CAAC;EAAEK;AAA2B,CAAC,KAAK;EAC/E,IAAI,CAACJ,eAAe,CAACI,KAAK,CAAC,IAAI,CAACA,KAAK,CAACC,MAAM,EAAE;IAC1C,OAAO,IAAI;EACf;EAEA,MAAMC,QAAQ,GAAGF,KAAK,CAACG,gBAAsD;EAE7E,oBACIT,KAAA,CAAAU,aAAA;IAAKC,SAAS,EAAE;EAAuB,GAClCL,KAAK,CAACM,KAAK,CAACC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBACzBf,KAAA,CAAAU,aAAA,CAACP,gBAAgB;IACba,GAAG,EAAEF,IAAI,CAACE,GAAI;IACdF,IAAI,EAAEA,IAAK;IACXC,KAAK,EAAEA,KAAM;IACbE,KAAK,EAAEX,KAAK,CAACM,KAAK,CAACM,MAAO;IAC1BC,KAAK,EAAEb,KAAK,CAACa,KAAM;IACnBC,SAAS,EAAEZ,QAAQ,EAAEY,SAAU;IAC/BC,QAAQ,EAAEf,KAAK,CAACe;EAAS,CAC5B,CACJ,CAAC,eACFrB,KAAA,CAAAU,aAAA,CAACN,aAAa;IACVe,KAAK,EAAEX,QAAQ,EAAEc,YAAY,IAAI,OAAOhB,KAAK,CAACa,KAAK,IAAI,MAAM,EAAG;IAChEE,QAAQ,EAAEf,KAAK,CAACe,QAAS;IACzBE,KAAK,EAAEA,CAAA,KAAMjB,KAAK,CAACkB,OAAO,CAAC;EAAE,CAChC,CACA,CAAC;AAEd,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import type { IFieldVM } from "../../../../features/formModel/index.js";
3
+ declare module "../../../../features/formModel/abstractions.js" {
4
+ interface IFieldRendererRegistry {
5
+ object: {
6
+ fieldType: "object";
7
+ settings?: {
8
+ itemTitle?: string | ((data: Record<string, unknown>, index: number) => string);
9
+ };
10
+ };
11
+ }
12
+ }
13
+ export declare const ObjectRenderer: (({ field }: {
14
+ field: IFieldVM;
15
+ }) => React.JSX.Element | null) & {
16
+ displayName: string;
17
+ };
@@ -0,0 +1,63 @@
1
+ import React from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { Accordion } from "@webiny/admin-ui";
4
+ import { isObjectFieldVM, ChildFields, ListItemRenderer, AddItemButton } from "./ObjectFieldComponents.js";
5
+ export const ObjectRenderer = observer(({
6
+ field
7
+ }) => {
8
+ if (!isObjectFieldVM(field)) {
9
+ return null;
10
+ }
11
+ if (field.isList) {
12
+ return /*#__PURE__*/React.createElement(ListObjectRenderer, {
13
+ field: field
14
+ });
15
+ }
16
+ return /*#__PURE__*/React.createElement(SingleObjectRenderer, {
17
+ field: field
18
+ });
19
+ });
20
+ const SingleObjectRenderer = observer(({
21
+ field
22
+ }) => {
23
+ return /*#__PURE__*/React.createElement(Accordion, {
24
+ background: "base",
25
+ variant: "container"
26
+ }, /*#__PURE__*/React.createElement(Accordion.Item, {
27
+ title: field.label,
28
+ defaultOpen: true
29
+ }, /*#__PURE__*/React.createElement(ChildFields, {
30
+ fields: field.fields
31
+ })));
32
+ });
33
+ const ListObjectRenderer = observer(({
34
+ field
35
+ }) => {
36
+ const label = `${field.label || ""} ${field.items.length ? `(${field.items.length})` : ""}`;
37
+ const settings = field.rendererSettings;
38
+ return /*#__PURE__*/React.createElement("div", {
39
+ className: "flex flex-col gap-sm"
40
+ }, /*#__PURE__*/React.createElement(Accordion, {
41
+ background: "base",
42
+ variant: "container"
43
+ }, /*#__PURE__*/React.createElement(Accordion.Item, {
44
+ title: label,
45
+ defaultOpen: true
46
+ }, /*#__PURE__*/React.createElement("div", {
47
+ className: "flex flex-col gap-sm"
48
+ }, field.items.map((item, index) => /*#__PURE__*/React.createElement(ListItemRenderer, {
49
+ key: item.key,
50
+ item: item,
51
+ index: index,
52
+ total: field.items.length,
53
+ label: field.label,
54
+ itemTitle: settings?.itemTitle,
55
+ disabled: field.disabled
56
+ }))))), /*#__PURE__*/React.createElement(AddItemButton, {
57
+ label: `Add ${field.label || "Item"}`,
58
+ disabled: field.disabled,
59
+ onAdd: () => field.addItem()
60
+ }));
61
+ });
62
+
63
+ //# sourceMappingURL=ObjectRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","observer","Accordion","isObjectFieldVM","ChildFields","ListItemRenderer","AddItemButton","ObjectRenderer","field","isList","createElement","ListObjectRenderer","SingleObjectRenderer","background","variant","Item","title","label","defaultOpen","fields","items","length","settings","rendererSettings","className","map","item","index","key","total","itemTitle","disabled","onAdd","addItem"],"sources":["ObjectRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport type {\n IFieldVM,\n IObjectFieldVM,\n IFieldRendererRegistry\n} from \"~/features/formModel/index.js\";\nimport {\n isObjectFieldVM,\n ChildFields,\n ListItemRenderer,\n AddItemButton\n} from \"./ObjectFieldComponents.js\";\n\ndeclare module \"../../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n object: {\n fieldType: \"object\";\n settings?: {\n itemTitle?: string | ((data: Record<string, unknown>, index: number) => string);\n };\n };\n }\n}\n\ntype ObjectSettings = NonNullable<IFieldRendererRegistry[\"object\"][\"settings\"]>;\n\nexport const ObjectRenderer = observer(({ field }: { field: IFieldVM }) => {\n if (!isObjectFieldVM(field)) {\n return null;\n }\n\n if (field.isList) {\n return <ListObjectRenderer field={field} />;\n }\n\n return <SingleObjectRenderer field={field} />;\n});\n\nconst SingleObjectRenderer = observer(({ field }: { field: IObjectFieldVM }) => {\n return (\n <Accordion background={\"base\"} variant={\"container\"}>\n <Accordion.Item title={field.label} defaultOpen={true}>\n <ChildFields fields={field.fields} />\n </Accordion.Item>\n </Accordion>\n );\n});\n\nconst ListObjectRenderer = observer(({ field }: { field: IObjectFieldVM }) => {\n const label = `${field.label || \"\"} ${field.items.length ? `(${field.items.length})` : \"\"}`;\n const settings = field.rendererSettings as ObjectSettings | undefined;\n\n return (\n <div className={\"flex flex-col gap-sm\"}>\n <Accordion background={\"base\"} variant={\"container\"}>\n <Accordion.Item title={label} defaultOpen={true}>\n <div className={\"flex flex-col gap-sm\"}>\n {field.items.map((item, index) => (\n <ListItemRenderer\n key={item.key}\n item={item}\n index={index}\n total={field.items.length}\n label={field.label}\n itemTitle={settings?.itemTitle}\n disabled={field.disabled}\n />\n ))}\n </div>\n </Accordion.Item>\n </Accordion>\n <AddItemButton\n label={`Add ${field.label || \"Item\"}`}\n disabled={field.disabled}\n onAdd={() => field.addItem()}\n />\n </div>\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,SAAS,QAAQ,kBAAkB;AAM5C,SACIC,eAAe,EACfC,WAAW,EACXC,gBAAgB,EAChBC,aAAa;AAgBjB,OAAO,MAAMC,cAAc,GAAGN,QAAQ,CAAC,CAAC;EAAEO;AAA2B,CAAC,KAAK;EACvE,IAAI,CAACL,eAAe,CAACK,KAAK,CAAC,EAAE;IACzB,OAAO,IAAI;EACf;EAEA,IAAIA,KAAK,CAACC,MAAM,EAAE;IACd,oBAAOT,KAAA,CAAAU,aAAA,CAACC,kBAAkB;MAACH,KAAK,EAAEA;IAAM,CAAE,CAAC;EAC/C;EAEA,oBAAOR,KAAA,CAAAU,aAAA,CAACE,oBAAoB;IAACJ,KAAK,EAAEA;EAAM,CAAE,CAAC;AACjD,CAAC,CAAC;AAEF,MAAMI,oBAAoB,GAAGX,QAAQ,CAAC,CAAC;EAAEO;AAAiC,CAAC,KAAK;EAC5E,oBACIR,KAAA,CAAAU,aAAA,CAACR,SAAS;IAACW,UAAU,EAAE,MAAO;IAACC,OAAO,EAAE;EAAY,gBAChDd,KAAA,CAAAU,aAAA,CAACR,SAAS,CAACa,IAAI;IAACC,KAAK,EAAER,KAAK,CAACS,KAAM;IAACC,WAAW,EAAE;EAAK,gBAClDlB,KAAA,CAAAU,aAAA,CAACN,WAAW;IAACe,MAAM,EAAEX,KAAK,CAACW;EAAO,CAAE,CACxB,CACT,CAAC;AAEpB,CAAC,CAAC;AAEF,MAAMR,kBAAkB,GAAGV,QAAQ,CAAC,CAAC;EAAEO;AAAiC,CAAC,KAAK;EAC1E,MAAMS,KAAK,GAAG,GAAGT,KAAK,CAACS,KAAK,IAAI,EAAE,IAAIT,KAAK,CAACY,KAAK,CAACC,MAAM,GAAG,IAAIb,KAAK,CAACY,KAAK,CAACC,MAAM,GAAG,GAAG,EAAE,EAAE;EAC3F,MAAMC,QAAQ,GAAGd,KAAK,CAACe,gBAA8C;EAErE,oBACIvB,KAAA,CAAAU,aAAA;IAAKc,SAAS,EAAE;EAAuB,gBACnCxB,KAAA,CAAAU,aAAA,CAACR,SAAS;IAACW,UAAU,EAAE,MAAO;IAACC,OAAO,EAAE;EAAY,gBAChDd,KAAA,CAAAU,aAAA,CAACR,SAAS,CAACa,IAAI;IAACC,KAAK,EAAEC,KAAM;IAACC,WAAW,EAAE;EAAK,gBAC5ClB,KAAA,CAAAU,aAAA;IAAKc,SAAS,EAAE;EAAuB,GAClChB,KAAK,CAACY,KAAK,CAACK,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBACzB3B,KAAA,CAAAU,aAAA,CAACL,gBAAgB;IACbuB,GAAG,EAAEF,IAAI,CAACE,GAAI;IACdF,IAAI,EAAEA,IAAK;IACXC,KAAK,EAAEA,KAAM;IACbE,KAAK,EAAErB,KAAK,CAACY,KAAK,CAACC,MAAO;IAC1BJ,KAAK,EAAET,KAAK,CAACS,KAAM;IACnBa,SAAS,EAAER,QAAQ,EAAEQ,SAAU;IAC/BC,QAAQ,EAAEvB,KAAK,CAACuB;EAAS,CAC5B,CACJ,CACA,CACO,CACT,CAAC,eACZ/B,KAAA,CAAAU,aAAA,CAACJ,aAAa;IACVW,KAAK,EAAE,OAAOT,KAAK,CAACS,KAAK,IAAI,MAAM,EAAG;IACtCc,QAAQ,EAAEvB,KAAK,CAACuB,QAAS;IACzBC,KAAK,EAAEA,CAAA,KAAMxB,KAAK,CAACyB,OAAO,CAAC;EAAE,CAChC,CACA,CAAC;AAEd,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { IObjectFieldItemVM } from "../../../../features/formModel/index.js";
2
+ type ItemTitleSetting = string | ((data: Record<string, unknown>, index: number) => string);
3
+ export declare function resolveItemTitle(item: IObjectFieldItemVM, index: number, label: string | undefined, itemTitle: ItemTitleSetting | undefined): string;
4
+ export {};
@@ -0,0 +1,22 @@
1
+ function fieldsToData(fields) {
2
+ const data = {};
3
+ for (const field of fields) {
4
+ data[field.name] = field.value;
5
+ }
6
+ return data;
7
+ }
8
+ export function resolveItemTitle(item, index, label, itemTitle) {
9
+ const fallback = `${label || "Item"} #${index + 1}`;
10
+ if (!itemTitle) {
11
+ return fallback;
12
+ }
13
+ if (typeof itemTitle === "string") {
14
+ const field = item.fields.find(f => f.name === itemTitle);
15
+ const value = field ? String(field.value ?? "") : "";
16
+ return value || fallback;
17
+ }
18
+ const data = fieldsToData(item.fields);
19
+ return itemTitle(data, index) || fallback;
20
+ }
21
+
22
+ //# sourceMappingURL=resolveItemTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fieldsToData","fields","data","field","name","value","resolveItemTitle","item","index","label","itemTitle","fallback","find","f","String"],"sources":["resolveItemTitle.ts"],"sourcesContent":["import type { IFieldVM, IObjectFieldItemVM } from \"~/features/formModel/index.js\";\n\ntype ItemTitleSetting = string | ((data: Record<string, unknown>, index: number) => string);\n\nfunction fieldsToData(fields: IFieldVM[]): Record<string, unknown> {\n const data: Record<string, unknown> = {};\n for (const field of fields) {\n data[field.name] = field.value;\n }\n return data;\n}\n\nexport function resolveItemTitle(\n item: IObjectFieldItemVM,\n index: number,\n label: string | undefined,\n itemTitle: ItemTitleSetting | undefined\n): string {\n const fallback = `${label || \"Item\"} #${index + 1}`;\n\n if (!itemTitle) {\n return fallback;\n }\n\n if (typeof itemTitle === \"string\") {\n const field = item.fields.find(f => f.name === itemTitle);\n const value = field ? String(field.value ?? \"\") : \"\";\n return value || fallback;\n }\n\n const data = fieldsToData(item.fields);\n return itemTitle(data, index) || fallback;\n}\n"],"mappings":"AAIA,SAASA,YAAYA,CAACC,MAAkB,EAA2B;EAC/D,MAAMC,IAA6B,GAAG,CAAC,CAAC;EACxC,KAAK,MAAMC,KAAK,IAAIF,MAAM,EAAE;IACxBC,IAAI,CAACC,KAAK,CAACC,IAAI,CAAC,GAAGD,KAAK,CAACE,KAAK;EAClC;EACA,OAAOH,IAAI;AACf;AAEA,OAAO,SAASI,gBAAgBA,CAC5BC,IAAwB,EACxBC,KAAa,EACbC,KAAyB,EACzBC,SAAuC,EACjC;EACN,MAAMC,QAAQ,GAAG,GAAGF,KAAK,IAAI,MAAM,KAAKD,KAAK,GAAG,CAAC,EAAE;EAEnD,IAAI,CAACE,SAAS,EAAE;IACZ,OAAOC,QAAQ;EACnB;EAEA,IAAI,OAAOD,SAAS,KAAK,QAAQ,EAAE;IAC/B,MAAMP,KAAK,GAAGI,IAAI,CAACN,MAAM,CAACW,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACT,IAAI,KAAKM,SAAS,CAAC;IACzD,MAAML,KAAK,GAAGF,KAAK,GAAGW,MAAM,CAACX,KAAK,CAACE,KAAK,IAAI,EAAE,CAAC,GAAG,EAAE;IACpD,OAAOA,KAAK,IAAIM,QAAQ;EAC5B;EAEA,MAAMT,IAAI,GAAGF,YAAY,CAACO,IAAI,CAACN,MAAM,CAAC;EACtC,OAAOS,SAAS,CAACR,IAAI,EAAEM,KAAK,CAAC,IAAIG,QAAQ;AAC7C","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import type { IFieldVM } from "../../../features/formModel/index.js";
3
+ declare module "../../../features/formModel/abstractions.js" {
4
+ interface IFieldRendererRegistry {
5
+ passthrough: {
6
+ fieldType: string;
7
+ settings: undefined;
8
+ };
9
+ }
10
+ }
11
+ export declare const PassthroughRenderer: (({ field }: {
12
+ field: IFieldVM;
13
+ }) => React.JSX.Element | null) & {
14
+ displayName: string;
15
+ };
@@ -0,0 +1,29 @@
1
+ import React from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { useFormViewRenderers } from "../../../features/formModel/FormView.js";
4
+ const isObjectFieldVM = field => {
5
+ return field.type === "object";
6
+ };
7
+ export const PassthroughRenderer = observer(({
8
+ field
9
+ }) => {
10
+ const {
11
+ fieldRenderers
12
+ } = useFormViewRenderers();
13
+ if (!isObjectFieldVM(field)) {
14
+ return null;
15
+ }
16
+ const children = field.isList ? [] : field.fields;
17
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children.map(childField => {
18
+ const Renderer = childField.renderer ? fieldRenderers[childField.renderer] : undefined;
19
+ if (!Renderer) {
20
+ return null;
21
+ }
22
+ return /*#__PURE__*/React.createElement(Renderer, {
23
+ key: childField.name,
24
+ field: childField
25
+ });
26
+ }));
27
+ });
28
+
29
+ //# sourceMappingURL=PassthroughRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","observer","useFormViewRenderers","isObjectFieldVM","field","type","PassthroughRenderer","fieldRenderers","children","isList","fields","createElement","Fragment","map","childField","Renderer","renderer","undefined","key","name"],"sources":["PassthroughRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport type { IFieldVM, IObjectFieldVM } from \"~/features/formModel/index.js\";\nimport { useFormViewRenderers } from \"~/features/formModel/FormView.js\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n passthrough: { fieldType: string; settings: undefined };\n }\n}\n\nconst isObjectFieldVM = (field: IFieldVM): field is IObjectFieldVM => {\n return field.type === \"object\";\n};\n\nexport const PassthroughRenderer = observer(({ field }: { field: IFieldVM }) => {\n const { fieldRenderers } = useFormViewRenderers();\n\n if (!isObjectFieldVM(field)) {\n return null;\n }\n\n const children = field.isList ? [] : field.fields;\n\n return (\n <>\n {children.map(childField => {\n const Renderer = childField.renderer\n ? fieldRenderers[childField.renderer]\n : undefined;\n\n if (!Renderer) {\n return null;\n }\n\n return <Renderer key={childField.name} field={childField} />;\n })}\n </>\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,iBAAiB;AAE1C,SAASC,oBAAoB;AAQ7B,MAAMC,eAAe,GAAIC,KAAe,IAA8B;EAClE,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ;AAClC,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGL,QAAQ,CAAC,CAAC;EAAEG;AAA2B,CAAC,KAAK;EAC5E,MAAM;IAAEG;EAAe,CAAC,GAAGL,oBAAoB,CAAC,CAAC;EAEjD,IAAI,CAACC,eAAe,CAACC,KAAK,CAAC,EAAE;IACzB,OAAO,IAAI;EACf;EAEA,MAAMI,QAAQ,GAAGJ,KAAK,CAACK,MAAM,GAAG,EAAE,GAAGL,KAAK,CAACM,MAAM;EAEjD,oBACIV,KAAA,CAAAW,aAAA,CAAAX,KAAA,CAAAY,QAAA,QACKJ,QAAQ,CAACK,GAAG,CAACC,UAAU,IAAI;IACxB,MAAMC,QAAQ,GAAGD,UAAU,CAACE,QAAQ,GAC9BT,cAAc,CAACO,UAAU,CAACE,QAAQ,CAAC,GACnCC,SAAS;IAEf,IAAI,CAACF,QAAQ,EAAE;MACX,OAAO,IAAI;IACf;IAEA,oBAAOf,KAAA,CAAAW,aAAA,CAACI,QAAQ;MAACG,GAAG,EAAEJ,UAAU,CAACK,IAAK;MAACf,KAAK,EAAEU;IAAW,CAAE,CAAC;EAChE,CAAC,CACH,CAAC;AAEX,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,15 @@
1
1
  import React from "react";
2
2
  import type { IFieldVM } from "../../../features/formModel/index.js";
3
- export declare const SelectRenderer: React.FunctionComponent<{
3
+ declare module "../../../features/formModel/abstractions.js" {
4
+ interface IFieldRendererRegistry {
5
+ select: {
6
+ fieldType: "select";
7
+ settings: undefined;
8
+ };
9
+ }
10
+ }
11
+ export declare const SelectRenderer: (({ field }: {
4
12
  field: IFieldVM;
5
- }>;
13
+ }) => React.JSX.Element) & {
14
+ displayName: string;
15
+ };
@@ -1,13 +1,15 @@
1
1
  import React from "react";
2
2
  import { observer } from "mobx-react-lite";
3
3
  import { Select } from "@webiny/admin-ui";
4
- export const SelectRenderer = observer(function SelectRenderer({
4
+ export const SelectRenderer = observer(({
5
5
  field
6
- }) {
6
+ }) => {
7
7
  const options = field.options ?? [];
8
8
  return /*#__PURE__*/React.createElement(Select, {
9
9
  label: field.label,
10
10
  placeholder: field.placeholder,
11
+ description: field.description,
12
+ note: field.note,
11
13
  value: field.value ?? "",
12
14
  onChange: value => field.onChange(value),
13
15
  required: field.required,
@@ -1 +1 @@
1
- {"version":3,"names":["React","observer","Select","SelectRenderer","field","options","createElement","label","placeholder","value","onChange","required","disabled","validation","map","opt"],"sources":["SelectRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Select } from \"@webiny/admin-ui\";\nimport type { IFieldVM } from \"~/features/formModel/index.js\";\nimport type { IValueOption } from \"~/features/formModel/index.js\";\n\nexport const SelectRenderer = observer(function SelectRenderer({ field }: { field: IFieldVM }) {\n const options: IValueOption[] = field.options ?? [];\n\n return (\n <Select\n label={field.label}\n placeholder={field.placeholder}\n value={(field.value as string) ?? \"\"}\n onChange={value => field.onChange(value)}\n required={field.required}\n disabled={field.disabled}\n validation={field.validation}\n options={options.map(opt => ({\n label: opt.label,\n value: opt.value,\n disabled: opt.disabled\n }))}\n />\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,MAAM,QAAQ,kBAAkB;AAIzC,OAAO,MAAMC,cAAc,GAAGF,QAAQ,CAAC,SAASE,cAAcA,CAAC;EAAEC;AAA2B,CAAC,EAAE;EAC3F,MAAMC,OAAuB,GAAGD,KAAK,CAACC,OAAO,IAAI,EAAE;EAEnD,oBACIL,KAAA,CAAAM,aAAA,CAACJ,MAAM;IACHK,KAAK,EAAEH,KAAK,CAACG,KAAM;IACnBC,WAAW,EAAEJ,KAAK,CAACI,WAAY;IAC/BC,KAAK,EAAGL,KAAK,CAACK,KAAK,IAAe,EAAG;IACrCC,QAAQ,EAAED,KAAK,IAAIL,KAAK,CAACM,QAAQ,CAACD,KAAK,CAAE;IACzCE,QAAQ,EAAEP,KAAK,CAACO,QAAS;IACzBC,QAAQ,EAAER,KAAK,CAACQ,QAAS;IACzBC,UAAU,EAAET,KAAK,CAACS,UAAW;IAC7BR,OAAO,EAAEA,OAAO,CAACS,GAAG,CAACC,GAAG,KAAK;MACzBR,KAAK,EAAEQ,GAAG,CAACR,KAAK;MAChBE,KAAK,EAAEM,GAAG,CAACN,KAAK;MAChBG,QAAQ,EAAEG,GAAG,CAACH;IAClB,CAAC,CAAC;EAAE,CACP,CAAC;AAEV,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","observer","Select","SelectRenderer","field","options","createElement","label","placeholder","description","note","value","onChange","required","disabled","validation","map","opt"],"sources":["SelectRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Select } from \"@webiny/admin-ui\";\nimport type { IFieldVM } from \"~/features/formModel/index.js\";\nimport type { IValueOption } from \"~/features/formModel/index.js\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n select: { fieldType: \"select\"; settings: undefined };\n }\n}\n\nexport const SelectRenderer = observer(({ field }: { field: IFieldVM }) => {\n const options: IValueOption[] = field.options ?? [];\n\n return (\n <Select\n label={field.label}\n placeholder={field.placeholder}\n description={field.description}\n note={field.note}\n value={(field.value as string) ?? \"\"}\n onChange={value => field.onChange(value)}\n required={field.required}\n disabled={field.disabled}\n validation={field.validation}\n options={options.map(opt => ({\n label: opt.label,\n value: opt.value,\n disabled: opt.disabled\n }))}\n />\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,MAAM,QAAQ,kBAAkB;AAUzC,OAAO,MAAMC,cAAc,GAAGF,QAAQ,CAAC,CAAC;EAAEG;AAA2B,CAAC,KAAK;EACvE,MAAMC,OAAuB,GAAGD,KAAK,CAACC,OAAO,IAAI,EAAE;EAEnD,oBACIL,KAAA,CAAAM,aAAA,CAACJ,MAAM;IACHK,KAAK,EAAEH,KAAK,CAACG,KAAM;IACnBC,WAAW,EAAEJ,KAAK,CAACI,WAAY;IAC/BC,WAAW,EAAEL,KAAK,CAACK,WAAY;IAC/BC,IAAI,EAAEN,KAAK,CAACM,IAAK;IACjBC,KAAK,EAAGP,KAAK,CAACO,KAAK,IAAe,EAAG;IACrCC,QAAQ,EAAED,KAAK,IAAIP,KAAK,CAACQ,QAAQ,CAACD,KAAK,CAAE;IACzCE,QAAQ,EAAET,KAAK,CAACS,QAAS;IACzBC,QAAQ,EAAEV,KAAK,CAACU,QAAS;IACzBC,UAAU,EAAEX,KAAK,CAACW,UAAW;IAC7BV,OAAO,EAAEA,OAAO,CAACW,GAAG,CAACC,GAAG,KAAK;MACzBV,KAAK,EAAEU,GAAG,CAACV,KAAK;MAChBI,KAAK,EAAEM,GAAG,CAACN,KAAK;MAChBG,QAAQ,EAAEG,GAAG,CAACH;IAClB,CAAC,CAAC;EAAE,CACP,CAAC;AAEV,CAAC,CAAC","ignoreList":[]}