@webiny/app-headless-cms 6.0.0-rc.4 → 6.0.0-rc.6

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 (132) hide show
  1. package/admin/components/ContentEntryForm/CustomLayout.js +2 -13
  2. package/admin/components/ContentEntryForm/CustomLayout.js.map +1 -1
  3. package/admin/components/ContentModelEditor/ContentModelEditorProvider.js.map +1 -1
  4. package/admin/components/ContentModelEditor/FieldsSidebar.js.map +1 -1
  5. package/admin/components/FieldEditor/EditFieldDialog/FieldSettingsTabs.js +4 -4
  6. package/admin/components/FieldEditor/EditFieldDialog/FieldSettingsTabs.js.map +1 -1
  7. package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/FieldPermissionsSelection.js +5 -8
  8. package/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/FieldPermissionsSelection.js.map +1 -0
  9. package/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.d.ts +2 -0
  10. package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab/PermissionsTab.js → PermissionsEditor/PermissionsEditor.js} +4 -10
  11. package/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js.map +1 -0
  12. package/admin/components/FieldEditor/EditFieldDialog/{RulesTab/RulesTab.d.ts → RulesEditor/RulesEditor.d.ts} +1 -2
  13. package/admin/components/FieldEditor/EditFieldDialog/{RulesTab/RulesTab.js → RulesEditor/RulesEditor.js} +3 -6
  14. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/RulesEditor.js.map +1 -0
  15. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.d.ts +1 -0
  16. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.js +3 -0
  17. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.js.map +1 -0
  18. package/admin/components/FieldEditor/EditFieldDialog/getValidators.d.ts +3 -3
  19. package/admin/components/FieldEditor/EditFieldDialog/getValidators.js.map +1 -1
  20. package/admin/components/FieldEditor/FieldEditor.js +10 -10
  21. package/admin/components/FieldEditor/FieldEditor.js.map +1 -1
  22. package/admin/components/FieldEditor/FieldEditorContext.d.ts +11 -11
  23. package/admin/components/FieldEditor/FieldEditorContext.js +41 -41
  24. package/admin/components/FieldEditor/FieldEditorContext.js.map +1 -1
  25. package/admin/components/FieldEditor/LayoutCell.d.ts +3 -3
  26. package/admin/components/FieldEditor/LayoutCell.js +6 -6
  27. package/admin/components/FieldEditor/LayoutCell.js.map +1 -1
  28. package/admin/hooks/useCms.d.ts +1 -1
  29. package/admin/hooks/useCms.js +1 -1
  30. package/admin/hooks/useCms.js.map +1 -1
  31. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js +2 -2
  32. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -1
  33. package/admin/plugins/fieldRenderers/checkboxes.js +2 -2
  34. package/admin/plugins/fieldRenderers/checkboxes.js.map +1 -1
  35. package/admin/plugins/fieldRenderers/dateTime/Input.js +2 -2
  36. package/admin/plugins/fieldRenderers/dateTime/Input.js.map +1 -1
  37. package/admin/plugins/fieldRenderers/dateTime/Select.js +2 -2
  38. package/admin/plugins/fieldRenderers/dateTime/Select.js.map +1 -1
  39. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js +2 -2
  40. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -1
  41. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js +2 -2
  42. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -1
  43. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInput.js +2 -2
  44. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInput.js.map +1 -1
  45. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInputs.js +2 -2
  46. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInputs.js.map +1 -1
  47. package/admin/plugins/fieldRenderers/longText/longText.js +2 -2
  48. package/admin/plugins/fieldRenderers/longText/longText.js.map +1 -1
  49. package/admin/plugins/fieldRenderers/longText/longTexts.js +2 -2
  50. package/admin/plugins/fieldRenderers/longText/longTexts.js.map +1 -1
  51. package/admin/plugins/fieldRenderers/number/numberInput.js +2 -2
  52. package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
  53. package/admin/plugins/fieldRenderers/number/numberInputs.js +2 -2
  54. package/admin/plugins/fieldRenderers/number/numberInputs.js.map +1 -1
  55. package/admin/plugins/fieldRenderers/object/MultiValueContainer.js +2 -2
  56. package/admin/plugins/fieldRenderers/object/MultiValueContainer.js.map +1 -1
  57. package/admin/plugins/fieldRenderers/radioButtons.js +2 -2
  58. package/admin/plugins/fieldRenderers/radioButtons.js.map +1 -1
  59. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js +2 -2
  60. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js.map +1 -1
  61. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js +2 -2
  62. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js.map +1 -1
  63. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +2 -2
  64. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
  65. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js +2 -2
  66. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -1
  67. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleMultipleRenderer.js +2 -2
  68. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleMultipleRenderer.js.map +1 -1
  69. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleSingleRenderer.js +2 -2
  70. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleSingleRenderer.js.map +1 -1
  71. package/admin/plugins/fieldRenderers/select.js +2 -2
  72. package/admin/plugins/fieldRenderers/select.js.map +1 -1
  73. package/admin/plugins/fieldRenderers/text/tags.js +2 -2
  74. package/admin/plugins/fieldRenderers/text/tags.js.map +1 -1
  75. package/admin/plugins/fieldRenderers/text/textInput.js +2 -2
  76. package/admin/plugins/fieldRenderers/text/textInput.js.map +1 -1
  77. package/admin/plugins/fieldRenderers/text/textInputs.js +2 -2
  78. package/admin/plugins/fieldRenderers/text/textInputs.js.map +1 -1
  79. package/admin/plugins/fields/ui/TabsLayoutEditor.d.ts +4 -4
  80. package/admin/plugins/fields/ui/TabsLayoutEditor.js +65 -61
  81. package/admin/plugins/fields/ui/TabsLayoutEditor.js.map +1 -1
  82. package/admin/plugins/fields/ui/alert.d.ts +2 -2
  83. package/admin/plugins/fields/ui/alert.js +25 -22
  84. package/admin/plugins/fields/ui/alert.js.map +1 -1
  85. package/admin/plugins/fields/ui/separator.d.ts +2 -2
  86. package/admin/plugins/fields/ui/separator.js +24 -21
  87. package/admin/plugins/fields/ui/separator.js.map +1 -1
  88. package/admin/plugins/fields/ui/tabs.d.ts +2 -2
  89. package/admin/plugins/fields/ui/tabs.js +10 -10
  90. package/admin/plugins/fields/ui/tabs.js.map +1 -1
  91. package/admin/views/contentModels/importing/ImportContentModelsDialog.js +15 -13
  92. package/admin/views/contentModels/importing/ImportContentModelsDialog.js.map +1 -1
  93. package/allPlugins.d.ts +1 -1
  94. package/exports/admin/cms/model.d.ts +2 -1
  95. package/exports/admin/cms/model.js +2 -1
  96. package/exports/admin/cms/model.js.map +1 -1
  97. package/exports/admin/cms.d.ts +7 -0
  98. package/exports/admin/cms.js +7 -0
  99. package/exports/admin/cms.js.map +1 -1
  100. package/legacyPluginAdapters/CmsContentFormRenderer.d.ts +4 -0
  101. package/legacyPluginAdapters/CmsContentFormRenderer.js +15 -0
  102. package/legacyPluginAdapters/CmsContentFormRenderer.js.map +1 -0
  103. package/legacyPluginAdapters/CmsModelFieldRenderer.d.ts +4 -0
  104. package/legacyPluginAdapters/CmsModelFieldRenderer.js +14 -0
  105. package/legacyPluginAdapters/CmsModelFieldRenderer.js.map +1 -0
  106. package/legacyPluginAdapters/CmsModelFieldType.d.ts +4 -0
  107. package/legacyPluginAdapters/CmsModelFieldType.js +14 -0
  108. package/legacyPluginAdapters/CmsModelFieldType.js.map +1 -0
  109. package/legacyPluginAdapters/CmsModelFieldValidator.d.ts +4 -0
  110. package/legacyPluginAdapters/CmsModelFieldValidator.js +14 -0
  111. package/legacyPluginAdapters/CmsModelFieldValidator.js.map +1 -0
  112. package/legacyPluginAdapters/CmsModelLayoutFieldRenderer.d.ts +13 -0
  113. package/legacyPluginAdapters/CmsModelLayoutFieldRenderer.js +15 -0
  114. package/legacyPluginAdapters/CmsModelLayoutFieldRenderer.js.map +1 -0
  115. package/legacyPluginAdapters/CmsModelLayoutFieldType.d.ts +2 -0
  116. package/legacyPluginAdapters/CmsModelLayoutFieldType.js +14 -0
  117. package/legacyPluginAdapters/CmsModelLayoutFieldType.js.map +1 -0
  118. package/package.json +24 -24
  119. package/types.d.ts +1 -1
  120. package/types.js +1 -1
  121. package/types.js.map +1 -1
  122. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/FieldPermissionsSelection.js.map +0 -1
  123. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.d.ts +0 -4
  124. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js.map +0 -1
  125. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js.map +0 -1
  126. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.d.ts +0 -1
  127. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.js +0 -3
  128. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.js.map +0 -1
  129. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/CannotUsePermissions.d.ts +0 -0
  130. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/CannotUsePermissions.js +0 -0
  131. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/CannotUsePermissions.js.map +0 -0
  132. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/FieldPermissionsSelection.d.ts +0 -0
@@ -2,29 +2,29 @@ import React from "react";
2
2
  import { useModelFieldEditor } from "./useModelFieldEditor.js";
3
3
  import { Text } from "@webiny/admin-ui";
4
4
  export const LayoutCell = ({
5
- descriptor
5
+ field
6
6
  }) => {
7
7
  const {
8
8
  getLayoutFieldPlugin,
9
9
  updateLayoutCell,
10
10
  deleteLayoutCell
11
11
  } = useModelFieldEditor();
12
- const plugin = getLayoutFieldPlugin(descriptor.type);
12
+ const plugin = getLayoutFieldPlugin(field.type);
13
13
  if (!plugin) {
14
14
  return /*#__PURE__*/React.createElement("div", {
15
15
  className: "p-md bg-destructive-dimmed rounded-xs"
16
16
  }, /*#__PURE__*/React.createElement(Text, {
17
17
  size: "sm"
18
- }, "Unknown layout field type: \"", descriptor.type, "\""));
18
+ }, "Unknown layout field type: \"", field.type, "\""));
19
19
  }
20
20
  const onUpdate = d => {
21
- updateLayoutCell(descriptor.id, d);
21
+ updateLayoutCell(field.id, d);
22
22
  };
23
23
  const onDelete = () => {
24
- deleteLayoutCell(descriptor.id);
24
+ deleteLayoutCell(field.id);
25
25
  };
26
26
  return plugin.field.render({
27
- descriptor,
27
+ field,
28
28
  onUpdate,
29
29
  onDelete
30
30
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","useModelFieldEditor","Text","LayoutCell","descriptor","getLayoutFieldPlugin","updateLayoutCell","deleteLayoutCell","plugin","type","createElement","className","size","onUpdate","d","id","onDelete","field","render"],"sources":["LayoutCell.tsx"],"sourcesContent":["import React from \"react\";\nimport type { CmsLayoutDescriptor } from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { useModelFieldEditor } from \"./useModelFieldEditor.js\";\nimport { Text } from \"@webiny/admin-ui\";\n\ninterface LayoutCellProps {\n descriptor: CmsLayoutDescriptor;\n rowIndex: number;\n cellIndex: number;\n}\n\nexport const LayoutCell = ({ descriptor }: LayoutCellProps) => {\n const { getLayoutFieldPlugin, updateLayoutCell, deleteLayoutCell } = useModelFieldEditor();\n\n const plugin = getLayoutFieldPlugin(descriptor.type);\n\n if (!plugin) {\n return (\n <div className={\"p-md bg-destructive-dimmed rounded-xs\"}>\n <Text size={\"sm\"}>Unknown layout field type: &quot;{descriptor.type}&quot;</Text>\n </div>\n );\n }\n\n const onUpdate = (d: CmsLayoutDescriptor) => {\n updateLayoutCell(descriptor.id, d);\n };\n\n const onDelete = () => {\n deleteLayoutCell(descriptor.id);\n };\n\n return plugin.field.render({ descriptor, onUpdate, onDelete });\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,mBAAmB;AAC5B,SAASC,IAAI,QAAQ,kBAAkB;AAQvC,OAAO,MAAMC,UAAU,GAAGA,CAAC;EAAEC;AAA4B,CAAC,KAAK;EAC3D,MAAM;IAAEC,oBAAoB;IAAEC,gBAAgB;IAAEC;EAAiB,CAAC,GAAGN,mBAAmB,CAAC,CAAC;EAE1F,MAAMO,MAAM,GAAGH,oBAAoB,CAACD,UAAU,CAACK,IAAI,CAAC;EAEpD,IAAI,CAACD,MAAM,EAAE;IACT,oBACIR,KAAA,CAAAU,aAAA;MAAKC,SAAS,EAAE;IAAwC,gBACpDX,KAAA,CAAAU,aAAA,CAACR,IAAI;MAACU,IAAI,EAAE;IAAK,GAAC,+BAAiC,EAACR,UAAU,CAACK,IAAI,EAAC,IAAY,CAC/E,CAAC;EAEd;EAEA,MAAMI,QAAQ,GAAIC,CAAsB,IAAK;IACzCR,gBAAgB,CAACF,UAAU,CAACW,EAAE,EAAED,CAAC,CAAC;EACtC,CAAC;EAED,MAAME,QAAQ,GAAGA,CAAA,KAAM;IACnBT,gBAAgB,CAACH,UAAU,CAACW,EAAE,CAAC;EACnC,CAAC;EAED,OAAOP,MAAM,CAACS,KAAK,CAACC,MAAM,CAAC;IAAEd,UAAU;IAAES,QAAQ;IAAEG;EAAS,CAAC,CAAC;AAClE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useModelFieldEditor","Text","LayoutCell","field","getLayoutFieldPlugin","updateLayoutCell","deleteLayoutCell","plugin","type","createElement","className","size","onUpdate","d","id","onDelete","render"],"sources":["LayoutCell.tsx"],"sourcesContent":["import React from \"react\";\nimport type { CmsLayoutField } from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { useModelFieldEditor } from \"./useModelFieldEditor.js\";\nimport { Text } from \"@webiny/admin-ui\";\n\ninterface LayoutCellProps {\n field: CmsLayoutField;\n rowIndex: number;\n cellIndex: number;\n}\n\nexport const LayoutCell = ({ field }: LayoutCellProps) => {\n const { getLayoutFieldPlugin, updateLayoutCell, deleteLayoutCell } = useModelFieldEditor();\n\n const plugin = getLayoutFieldPlugin(field.type);\n\n if (!plugin) {\n return (\n <div className={\"p-md bg-destructive-dimmed rounded-xs\"}>\n <Text size={\"sm\"}>Unknown layout field type: &quot;{field.type}&quot;</Text>\n </div>\n );\n }\n\n const onUpdate = (d: CmsLayoutField) => {\n updateLayoutCell(field.id, d);\n };\n\n const onDelete = () => {\n deleteLayoutCell(field.id);\n };\n\n return plugin.field.render({ field, onUpdate, onDelete });\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,mBAAmB;AAC5B,SAASC,IAAI,QAAQ,kBAAkB;AAQvC,OAAO,MAAMC,UAAU,GAAGA,CAAC;EAAEC;AAAuB,CAAC,KAAK;EACtD,MAAM;IAAEC,oBAAoB;IAAEC,gBAAgB;IAAEC;EAAiB,CAAC,GAAGN,mBAAmB,CAAC,CAAC;EAE1F,MAAMO,MAAM,GAAGH,oBAAoB,CAACD,KAAK,CAACK,IAAI,CAAC;EAE/C,IAAI,CAACD,MAAM,EAAE;IACT,oBACIR,KAAA,CAAAU,aAAA;MAAKC,SAAS,EAAE;IAAwC,gBACpDX,KAAA,CAAAU,aAAA,CAACR,IAAI;MAACU,IAAI,EAAE;IAAK,GAAC,+BAAiC,EAACR,KAAK,CAACK,IAAI,EAAC,IAAY,CAC1E,CAAC;EAEd;EAEA,MAAMI,QAAQ,GAAIC,CAAiB,IAAK;IACpCR,gBAAgB,CAACF,KAAK,CAACW,EAAE,EAAED,CAAC,CAAC;EACjC,CAAC;EAED,MAAME,QAAQ,GAAGA,CAAA,KAAM;IACnBT,gBAAgB,CAACH,KAAK,CAACW,EAAE,CAAC;EAC9B,CAAC;EAED,OAAOP,MAAM,CAACJ,KAAK,CAACa,MAAM,CAAC;IAAEb,KAAK;IAAES,QAAQ;IAAEG;EAAS,CAAC,CAAC;AAC7D,CAAC","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import { CmsContext } from "../contexts/Cms/index.js";
2
- declare function useCms(): CmsContext;
2
+ export declare function useCms(): CmsContext;
3
3
  export default useCms;
@@ -1,6 +1,6 @@
1
1
  import { useContext } from "react";
2
2
  import { CmsContext } from "../contexts/Cms/index.js";
3
- function useCms() {
3
+ export function useCms() {
4
4
  const context = useContext(CmsContext);
5
5
  if (!context) {
6
6
  throw new Error("useCms must be used within a CmsProvider");
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","CmsContext","useCms","context","Error"],"sources":["useCms.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { CmsContext } from \"../contexts/Cms/index.js\";\n\nfunction useCms() {\n const context = useContext(CmsContext);\n if (!context) {\n throw new Error(\"useCms must be used within a CmsProvider\");\n }\n\n return context;\n}\n\nexport default useCms;\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,UAAU;AAEnB,SAASC,MAAMA,CAAA,EAAG;EACd,MAAMC,OAAO,GAAGH,UAAU,CAACC,UAAU,CAAC;EACtC,IAAI,CAACE,OAAO,EAAE;IACV,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;EAC/D;EAEA,OAAOD,OAAO;AAClB;AAEA,eAAeD,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["useContext","CmsContext","useCms","context","Error"],"sources":["useCms.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { CmsContext } from \"../contexts/Cms/index.js\";\n\nexport function useCms() {\n const context = useContext(CmsContext);\n if (!context) {\n throw new Error(\"useCms must be used within a CmsProvider\");\n }\n\n return context;\n}\n\nexport default useCms;\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,UAAU;AAEnB,OAAO,SAASC,MAAMA,CAAA,EAAG;EACrB,MAAMC,OAAO,GAAGH,UAAU,CAACC,UAAU,CAAC;EACtC,IAAI,CAACE,OAAO,EAAE;IACV,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;EAC/D;EAEA,OAAOD,OAAO;AAClB;AAEA,eAAeD,MAAM","ignoreList":[]}
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import get from "lodash/get.js";
3
3
  import { i18n } from "@webiny/app/i18n/index.js";
4
4
  import { Switch } from "@webiny/admin-ui";
5
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
5
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
6
6
  const t = i18n.ns("app-headless-cms/admin/fields/boolean");
7
7
  const plugin = {
8
8
  type: "cms-editor-field-renderer",
@@ -22,7 +22,7 @@ const plugin = {
22
22
  const {
23
23
  field
24
24
  } = useModelField();
25
- const rules = useEffectiveRules(field);
25
+ const rules = useFieldEffectiveRules(field);
26
26
  const Bind = getBind();
27
27
  const disabled = !rules.canEdit || rules.disabled;
28
28
  return /*#__PURE__*/React.createElement(Bind, null, bindProps => /*#__PURE__*/React.createElement(Switch, Object.assign({}, bindProps, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","get","i18n","Switch","useEffectiveRules","useModelField","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","list","render","getBind","rules","Bind","disabled","canEdit","createElement","bindProps","Object","assign","label","note"],"sources":["booleanSwitch.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport type { CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Switch } from \"@webiny/admin-ui\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/boolean\");\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-boolean\",\n renderer: {\n rendererName: \"boolean-input\",\n name: t`Boolean Input`,\n description: t`Renders a simple switch button.`,\n canUse({ field }) {\n return (\n field.type === \"boolean\" && !field.list && !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const Bind = getBind();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind>\n {bindProps => (\n <Switch\n {...bindProps}\n disabled={disabled}\n label={field.label}\n description={field.description}\n note={field.note}\n data-testid={`fr.input.boolean.${field.label}`}\n />\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAE/B,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAElF,MAAMC,CAAC,GAAGJ,IAAI,CAACK,EAAE,CAAC,uCAAuC,CAAC;AAE1D,MAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,mCAAmC;EACzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,eAAe;IAC7BF,IAAI,EAAEJ,CAAC,eAAe;IACtBO,WAAW,EAAEP,CAAC,iCAAiC;IAC/CQ,MAAMA,CAAC;MAAEC;IAAM,CAAC,EAAE;MACd,OACIA,KAAK,CAACN,IAAI,KAAK,SAAS,IAAI,CAACM,KAAK,CAACC,IAAI,IAAI,CAACf,GAAG,CAACc,KAAK,EAAE,0BAA0B,CAAC;IAE1F,CAAC;IACDE,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEH;MAAM,CAAC,GAAGV,aAAa,CAAC,CAAC;MACjC,MAAMc,KAAK,GAAGf,iBAAiB,CAACW,KAAK,CAAC;MACtC,MAAMK,IAAI,GAAGF,OAAO,CAAC,CAAC;MAEtB,MAAMG,QAAQ,GAAG,CAACF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACE,QAAQ;MAEjD,oBACIrB,KAAA,CAAAuB,aAAA,CAACH,IAAI,QACAI,SAAS,iBACNxB,KAAA,CAAAuB,aAAA,CAACpB,MAAM,EAAAsB,MAAA,CAAAC,MAAA,KACCF,SAAS;QACbH,QAAQ,EAAEA,QAAS;QACnBM,KAAK,EAAEZ,KAAK,CAACY,KAAM;QACnBd,WAAW,EAAEE,KAAK,CAACF,WAAY;QAC/Be,IAAI,EAAEb,KAAK,CAACa,IAAK;QACjB,eAAa,oBAAoBb,KAAK,CAACY,KAAK;MAAG,EAClD,CAEH,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAenB,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["React","get","i18n","Switch","useFieldEffectiveRules","useModelField","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","list","render","getBind","rules","Bind","disabled","canEdit","createElement","bindProps","Object","assign","label","note"],"sources":["booleanSwitch.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport type { CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Switch } from \"@webiny/admin-ui\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/boolean\");\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-boolean\",\n renderer: {\n rendererName: \"boolean-input\",\n name: t`Boolean Input`,\n description: t`Renders a simple switch button.`,\n canUse({ field }) {\n return (\n field.type === \"boolean\" && !field.list && !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const Bind = getBind();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind>\n {bindProps => (\n <Switch\n {...bindProps}\n disabled={disabled}\n label={field.label}\n description={field.description}\n note={field.note}\n data-testid={`fr.input.boolean.${field.label}`}\n />\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAE/B,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AAEvF,MAAMC,CAAC,GAAGJ,IAAI,CAACK,EAAE,CAAC,uCAAuC,CAAC;AAE1D,MAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,mCAAmC;EACzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,eAAe;IAC7BF,IAAI,EAAEJ,CAAC,eAAe;IACtBO,WAAW,EAAEP,CAAC,iCAAiC;IAC/CQ,MAAMA,CAAC;MAAEC;IAAM,CAAC,EAAE;MACd,OACIA,KAAK,CAACN,IAAI,KAAK,SAAS,IAAI,CAACM,KAAK,CAACC,IAAI,IAAI,CAACf,GAAG,CAACc,KAAK,EAAE,0BAA0B,CAAC;IAE1F,CAAC;IACDE,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEH;MAAM,CAAC,GAAGV,aAAa,CAAC,CAAC;MACjC,MAAMc,KAAK,GAAGf,sBAAsB,CAACW,KAAK,CAAC;MAC3C,MAAMK,IAAI,GAAGF,OAAO,CAAC,CAAC;MAEtB,MAAMG,QAAQ,GAAG,CAACF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACE,QAAQ;MAEjD,oBACIrB,KAAA,CAAAuB,aAAA,CAACH,IAAI,QACAI,SAAS,iBACNxB,KAAA,CAAAuB,aAAA,CAACpB,MAAM,EAAAsB,MAAA,CAAAC,MAAA,KACCF,SAAS;QACbH,QAAQ,EAAEA,QAAS;QACnBM,KAAK,EAAEZ,KAAK,CAACY,KAAM;QACnBd,WAAW,EAAEE,KAAK,CAACF,WAAY;QAC/Be,IAAI,EAAEb,KAAK,CAACa,IAAK;QACjB,eAAa,oBAAoBb,KAAK,CAACY,KAAK;MAAG,EAClD,CAEH,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAenB,MAAM","ignoreList":[]}
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import get from "lodash/get.js";
3
3
  import { i18n } from "@webiny/app/i18n/index.js";
4
4
  import { CheckboxGroup } from "@webiny/admin-ui";
5
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
5
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
6
6
  const t = i18n.ns("app-headless-cms/admin/fields/text");
7
7
  const adaptToField = (field, value) => {
8
8
  return field.type === "number" ? Number(value) : value;
@@ -25,7 +25,7 @@ const plugin = {
25
25
  const {
26
26
  field
27
27
  } = useModelField();
28
- const rules = useEffectiveRules(field);
28
+ const rules = useFieldEffectiveRules(field);
29
29
  const Bind = getBind();
30
30
  const {
31
31
  values: predefinedOptions = []
@@ -1 +1 @@
1
- {"version":3,"names":["React","get","i18n","CheckboxGroup","useEffectiveRules","useModelField","t","ns","adaptToField","field","value","type","Number","plugin","name","renderer","rendererName","description","canUse","list","render","getBind","rules","Bind","values","predefinedOptions","predefinedValues","options","map","opt","defaults","filter","option","selected","defaultValue","length","undefined","disabled","canEdit","createElement","bind","ValidationContainer","Object","assign","label","note","hint","help","items"],"sources":["checkboxes.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport type { CmsModelField, CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { CheckboxGroup } from \"@webiny/admin-ui\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst adaptToField = (field: CmsModelField, value: string) => {\n return field.type === \"number\" ? Number(value) : value;\n};\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-checkboxes-buttons\",\n renderer: {\n rendererName: \"checkboxes\",\n name: t`Checkboxes`,\n description: t`Renders checkboxes, allowing selection of multiple values.`,\n canUse({ field }) {\n return !!field.list && !!get(field, \"predefinedValues.enabled\");\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const Bind = getBind();\n\n const { values: predefinedOptions = [] } = field.predefinedValues || {\n values: []\n };\n\n // For `number` field, we want to convert the value to actual Number.\n const options = predefinedOptions.map(opt => ({\n ...opt,\n value: adaptToField(field, opt.value)\n }));\n\n const defaults = options.filter(option => option.selected);\n const defaultValue = defaults.length > 0 ? defaults.map(opt => opt.value) : undefined;\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind defaultValue={defaultValue}>\n {bind => (\n <Bind.ValidationContainer>\n <CheckboxGroup\n {...bind}\n disabled={disabled}\n label={field.label}\n description={field.description}\n note={field.note}\n hint={field.help}\n value={bind.value}\n items={options.map(opt => ({\n label: opt.label,\n value: opt.value,\n selected: opt.selected\n }))}\n />\n </Bind.ValidationContainer>\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAE/B,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAElF,MAAMC,CAAC,GAAGJ,IAAI,CAACK,EAAE,CAAC,oCAAoC,CAAC;AAEvD,MAAMC,YAAY,GAAGA,CAACC,KAAoB,EAAEC,KAAa,KAAK;EAC1D,OAAOD,KAAK,CAACE,IAAI,KAAK,QAAQ,GAAGC,MAAM,CAACF,KAAK,CAAC,GAAGA,KAAK;AAC1D,CAAC;AAED,MAAMG,MAAmC,GAAG;EACxCF,IAAI,EAAE,2BAA2B;EACjCG,IAAI,EAAE,8CAA8C;EACpDC,QAAQ,EAAE;IACNC,YAAY,EAAE,YAAY;IAC1BF,IAAI,EAAER,CAAC,YAAY;IACnBW,WAAW,EAAEX,CAAC,4DAA4D;IAC1EY,MAAMA,CAAC;MAAET;IAAM,CAAC,EAAE;MACd,OAAO,CAAC,CAACA,KAAK,CAACU,IAAI,IAAI,CAAC,CAAClB,GAAG,CAACQ,KAAK,EAAE,0BAA0B,CAAC;IACnE,CAAC;IACDW,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEZ;MAAM,CAAC,GAAGJ,aAAa,CAAC,CAAC;MACjC,MAAMiB,KAAK,GAAGlB,iBAAiB,CAACK,KAAK,CAAC;MACtC,MAAMc,IAAI,GAAGF,OAAO,CAAC,CAAC;MAEtB,MAAM;QAAEG,MAAM,EAAEC,iBAAiB,GAAG;MAAG,CAAC,GAAGhB,KAAK,CAACiB,gBAAgB,IAAI;QACjEF,MAAM,EAAE;MACZ,CAAC;;MAED;MACA,MAAMG,OAAO,GAAGF,iBAAiB,CAACG,GAAG,CAACC,GAAG,KAAK;QAC1C,GAAGA,GAAG;QACNnB,KAAK,EAAEF,YAAY,CAACC,KAAK,EAAEoB,GAAG,CAACnB,KAAK;MACxC,CAAC,CAAC,CAAC;MAEH,MAAMoB,QAAQ,GAAGH,OAAO,CAACI,MAAM,CAACC,MAAM,IAAIA,MAAM,CAACC,QAAQ,CAAC;MAC1D,MAAMC,YAAY,GAAGJ,QAAQ,CAACK,MAAM,GAAG,CAAC,GAAGL,QAAQ,CAACF,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACnB,KAAK,CAAC,GAAG0B,SAAS;MAErF,MAAMC,QAAQ,GAAG,CAACf,KAAK,CAACgB,OAAO,IAAIhB,KAAK,CAACe,QAAQ;MAEjD,oBACIrC,KAAA,CAAAuC,aAAA,CAAChB,IAAI;QAACW,YAAY,EAAEA;MAAa,GAC5BM,IAAI,iBACDxC,KAAA,CAAAuC,aAAA,CAAChB,IAAI,CAACkB,mBAAmB,qBACrBzC,KAAA,CAAAuC,aAAA,CAACpC,aAAa,EAAAuC,MAAA,CAAAC,MAAA,KACNH,IAAI;QACRH,QAAQ,EAAEA,QAAS;QACnBO,KAAK,EAAEnC,KAAK,CAACmC,KAAM;QACnB3B,WAAW,EAAER,KAAK,CAACQ,WAAY;QAC/B4B,IAAI,EAAEpC,KAAK,CAACoC,IAAK;QACjBC,IAAI,EAAErC,KAAK,CAACsC,IAAK;QACjBrC,KAAK,EAAE8B,IAAI,CAAC9B,KAAM;QAClBsC,KAAK,EAAErB,OAAO,CAACC,GAAG,CAACC,GAAG,KAAK;UACvBe,KAAK,EAAEf,GAAG,CAACe,KAAK;UAChBlC,KAAK,EAAEmB,GAAG,CAACnB,KAAK;UAChBuB,QAAQ,EAAEJ,GAAG,CAACI;QAClB,CAAC,CAAC;MAAE,EACP,CACqB,CAE5B,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAepB,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["React","get","i18n","CheckboxGroup","useFieldEffectiveRules","useModelField","t","ns","adaptToField","field","value","type","Number","plugin","name","renderer","rendererName","description","canUse","list","render","getBind","rules","Bind","values","predefinedOptions","predefinedValues","options","map","opt","defaults","filter","option","selected","defaultValue","length","undefined","disabled","canEdit","createElement","bind","ValidationContainer","Object","assign","label","note","hint","help","items"],"sources":["checkboxes.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport type { CmsModelField, CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { CheckboxGroup } from \"@webiny/admin-ui\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst adaptToField = (field: CmsModelField, value: string) => {\n return field.type === \"number\" ? Number(value) : value;\n};\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-checkboxes-buttons\",\n renderer: {\n rendererName: \"checkboxes\",\n name: t`Checkboxes`,\n description: t`Renders checkboxes, allowing selection of multiple values.`,\n canUse({ field }) {\n return !!field.list && !!get(field, \"predefinedValues.enabled\");\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const Bind = getBind();\n\n const { values: predefinedOptions = [] } = field.predefinedValues || {\n values: []\n };\n\n // For `number` field, we want to convert the value to actual Number.\n const options = predefinedOptions.map(opt => ({\n ...opt,\n value: adaptToField(field, opt.value)\n }));\n\n const defaults = options.filter(option => option.selected);\n const defaultValue = defaults.length > 0 ? defaults.map(opt => opt.value) : undefined;\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind defaultValue={defaultValue}>\n {bind => (\n <Bind.ValidationContainer>\n <CheckboxGroup\n {...bind}\n disabled={disabled}\n label={field.label}\n description={field.description}\n note={field.note}\n hint={field.help}\n value={bind.value}\n items={options.map(opt => ({\n label: opt.label,\n value: opt.value,\n selected: opt.selected\n }))}\n />\n </Bind.ValidationContainer>\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAE/B,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AAEvF,MAAMC,CAAC,GAAGJ,IAAI,CAACK,EAAE,CAAC,oCAAoC,CAAC;AAEvD,MAAMC,YAAY,GAAGA,CAACC,KAAoB,EAAEC,KAAa,KAAK;EAC1D,OAAOD,KAAK,CAACE,IAAI,KAAK,QAAQ,GAAGC,MAAM,CAACF,KAAK,CAAC,GAAGA,KAAK;AAC1D,CAAC;AAED,MAAMG,MAAmC,GAAG;EACxCF,IAAI,EAAE,2BAA2B;EACjCG,IAAI,EAAE,8CAA8C;EACpDC,QAAQ,EAAE;IACNC,YAAY,EAAE,YAAY;IAC1BF,IAAI,EAAER,CAAC,YAAY;IACnBW,WAAW,EAAEX,CAAC,4DAA4D;IAC1EY,MAAMA,CAAC;MAAET;IAAM,CAAC,EAAE;MACd,OAAO,CAAC,CAACA,KAAK,CAACU,IAAI,IAAI,CAAC,CAAClB,GAAG,CAACQ,KAAK,EAAE,0BAA0B,CAAC;IACnE,CAAC;IACDW,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEZ;MAAM,CAAC,GAAGJ,aAAa,CAAC,CAAC;MACjC,MAAMiB,KAAK,GAAGlB,sBAAsB,CAACK,KAAK,CAAC;MAC3C,MAAMc,IAAI,GAAGF,OAAO,CAAC,CAAC;MAEtB,MAAM;QAAEG,MAAM,EAAEC,iBAAiB,GAAG;MAAG,CAAC,GAAGhB,KAAK,CAACiB,gBAAgB,IAAI;QACjEF,MAAM,EAAE;MACZ,CAAC;;MAED;MACA,MAAMG,OAAO,GAAGF,iBAAiB,CAACG,GAAG,CAACC,GAAG,KAAK;QAC1C,GAAGA,GAAG;QACNnB,KAAK,EAAEF,YAAY,CAACC,KAAK,EAAEoB,GAAG,CAACnB,KAAK;MACxC,CAAC,CAAC,CAAC;MAEH,MAAMoB,QAAQ,GAAGH,OAAO,CAACI,MAAM,CAACC,MAAM,IAAIA,MAAM,CAACC,QAAQ,CAAC;MAC1D,MAAMC,YAAY,GAAGJ,QAAQ,CAACK,MAAM,GAAG,CAAC,GAAGL,QAAQ,CAACF,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACnB,KAAK,CAAC,GAAG0B,SAAS;MAErF,MAAMC,QAAQ,GAAG,CAACf,KAAK,CAACgB,OAAO,IAAIhB,KAAK,CAACe,QAAQ;MAEjD,oBACIrC,KAAA,CAAAuC,aAAA,CAAChB,IAAI;QAACW,YAAY,EAAEA;MAAa,GAC5BM,IAAI,iBACDxC,KAAA,CAAAuC,aAAA,CAAChB,IAAI,CAACkB,mBAAmB,qBACrBzC,KAAA,CAAAuC,aAAA,CAACpC,aAAa,EAAAuC,MAAA,CAAAC,MAAA,KACNH,IAAI;QACRH,QAAQ,EAAEA,QAAS;QACnBO,KAAK,EAAEnC,KAAK,CAACmC,KAAM;QACnB3B,WAAW,EAAER,KAAK,CAACQ,WAAY;QAC/B4B,IAAI,EAAEpC,KAAK,CAACoC,IAAK;QACjBC,IAAI,EAAErC,KAAK,CAACsC,IAAK;QACjBrC,KAAK,EAAE8B,IAAI,CAAC9B,KAAM;QAClBsC,KAAK,EAAErB,OAAO,CAACC,GAAG,CAACC,GAAG,KAAK;UACvBe,KAAK,EAAEf,GAAG,CAACe,KAAK;UAChBlC,KAAK,EAAEmB,GAAG,CAACnB,KAAK;UAChBuB,QAAQ,EAAEJ,GAAG,CAACI;QAClB,CAAC,CAAC;MAAE,EACP,CACqB,CAE5B,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAepB,MAAM","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { Input as UiInput, Icon } from "@webiny/admin-ui";
3
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
3
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
4
4
  export const Input = ({
5
5
  bind,
6
6
  trailingIcon,
@@ -9,7 +9,7 @@ export const Input = ({
9
9
  const {
10
10
  field
11
11
  } = useModelField();
12
- const rules = useEffectiveRules(field);
12
+ const rules = useFieldEffectiveRules(field);
13
13
  const disabled = !rules.canEdit || rules.disabled;
14
14
  const endIcon = React.useMemo(() => {
15
15
  if (!trailingIcon) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Input","UiInput","Icon","useEffectiveRules","useModelField","bind","trailingIcon","props","field","rules","disabled","canEdit","endIcon","useMemo","undefined","createElement","label","icon","onClick","className","Object","assign","onChange","value","type","parseFloat","note","description","placeholder"],"sources":["Input.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { CmsModelField } from \"~/types.js\";\nimport type { BindComponentRenderProp } from \"@webiny/form\";\nimport { Input as UiInput, Icon } from \"@webiny/admin-ui\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nexport interface TrailingIcon {\n icon: React.ReactNode;\n onClick: any;\n}\n\nexport interface InputProps {\n step?: number;\n type?: string;\n bind: BindComponentRenderProp;\n field: CmsModelField;\n trailingIcon?: TrailingIcon;\n}\n\nexport const Input = ({ bind, trailingIcon, ...props }: InputProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n\n const endIcon = React.useMemo(() => {\n if (!trailingIcon) {\n return undefined;\n }\n\n return (\n <Icon\n label={\"Icon\"}\n icon={trailingIcon?.icon}\n onClick={trailingIcon?.onClick}\n className={\"cursor-pointer\"}\n />\n );\n }, [trailingIcon]);\n\n return (\n <UiInput\n {...props}\n {...bind}\n disabled={disabled}\n onChange={value => {\n if (props.type === \"number\") {\n value = parseFloat(value);\n }\n return bind.onChange(value);\n }}\n label={null}\n note={null}\n description={null}\n placeholder={field.placeholder}\n type={props.type}\n endIcon={endIcon}\n data-testid={`fr.input.${field.label}`}\n />\n );\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,SAASC,KAAK,IAAIC,OAAO,EAAEC,IAAI,QAAQ,kBAAkB;AACzD,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAelF,OAAO,MAAMJ,KAAK,GAAGA,CAAC;EAAEK,IAAI;EAAEC,YAAY;EAAE,GAAGC;AAAkB,CAAC,KAAK;EACnE,MAAM;IAAEC;EAAM,CAAC,GAAGJ,aAAa,CAAC,CAAC;EACjC,MAAMK,KAAK,GAAGN,iBAAiB,CAACK,KAAK,CAAC;EACtC,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EAEjD,MAAME,OAAO,GAAGb,KAAK,CAACc,OAAO,CAAC,MAAM;IAChC,IAAI,CAACP,YAAY,EAAE;MACf,OAAOQ,SAAS;IACpB;IAEA,oBACIf,KAAA,CAAAgB,aAAA,CAACb,IAAI;MACDc,KAAK,EAAE,MAAO;MACdC,IAAI,EAAEX,YAAY,EAAEW,IAAK;MACzBC,OAAO,EAAEZ,YAAY,EAAEY,OAAQ;MAC/BC,SAAS,EAAE;IAAiB,CAC/B,CAAC;EAEV,CAAC,EAAE,CAACb,YAAY,CAAC,CAAC;EAElB,oBACIP,KAAA,CAAAgB,aAAA,CAACd,OAAO,EAAAmB,MAAA,CAAAC,MAAA,KACAd,KAAK,EACLF,IAAI;IACRK,QAAQ,EAAEA,QAAS;IACnBY,QAAQ,EAAEC,KAAK,IAAI;MACf,IAAIhB,KAAK,CAACiB,IAAI,KAAK,QAAQ,EAAE;QACzBD,KAAK,GAAGE,UAAU,CAACF,KAAK,CAAC;MAC7B;MACA,OAAOlB,IAAI,CAACiB,QAAQ,CAACC,KAAK,CAAC;IAC/B,CAAE;IACFP,KAAK,EAAE,IAAK;IACZU,IAAI,EAAE,IAAK;IACXC,WAAW,EAAE,IAAK;IAClBC,WAAW,EAAEpB,KAAK,CAACoB,WAAY;IAC/BJ,IAAI,EAAEjB,KAAK,CAACiB,IAAK;IACjBZ,OAAO,EAAEA,OAAQ;IACjB,eAAa,YAAYJ,KAAK,CAACQ,KAAK;EAAG,EAC1C,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Input","UiInput","Icon","useFieldEffectiveRules","useModelField","bind","trailingIcon","props","field","rules","disabled","canEdit","endIcon","useMemo","undefined","createElement","label","icon","onClick","className","Object","assign","onChange","value","type","parseFloat","note","description","placeholder"],"sources":["Input.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { CmsModelField } from \"~/types.js\";\nimport type { BindComponentRenderProp } from \"@webiny/form\";\nimport { Input as UiInput, Icon } from \"@webiny/admin-ui\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nexport interface TrailingIcon {\n icon: React.ReactNode;\n onClick: any;\n}\n\nexport interface InputProps {\n step?: number;\n type?: string;\n bind: BindComponentRenderProp;\n field: CmsModelField;\n trailingIcon?: TrailingIcon;\n}\n\nexport const Input = ({ bind, trailingIcon, ...props }: InputProps) => {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n\n const endIcon = React.useMemo(() => {\n if (!trailingIcon) {\n return undefined;\n }\n\n return (\n <Icon\n label={\"Icon\"}\n icon={trailingIcon?.icon}\n onClick={trailingIcon?.onClick}\n className={\"cursor-pointer\"}\n />\n );\n }, [trailingIcon]);\n\n return (\n <UiInput\n {...props}\n {...bind}\n disabled={disabled}\n onChange={value => {\n if (props.type === \"number\") {\n value = parseFloat(value);\n }\n return bind.onChange(value);\n }}\n label={null}\n note={null}\n description={null}\n placeholder={field.placeholder}\n type={props.type}\n endIcon={endIcon}\n data-testid={`fr.input.${field.label}`}\n />\n );\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,SAASC,KAAK,IAAIC,OAAO,EAAEC,IAAI,QAAQ,kBAAkB;AACzD,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AAevF,OAAO,MAAMJ,KAAK,GAAGA,CAAC;EAAEK,IAAI;EAAEC,YAAY;EAAE,GAAGC;AAAkB,CAAC,KAAK;EACnE,MAAM;IAAEC;EAAM,CAAC,GAAGJ,aAAa,CAAC,CAAC;EACjC,MAAMK,KAAK,GAAGN,sBAAsB,CAACK,KAAK,CAAC;EAC3C,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EAEjD,MAAME,OAAO,GAAGb,KAAK,CAACc,OAAO,CAAC,MAAM;IAChC,IAAI,CAACP,YAAY,EAAE;MACf,OAAOQ,SAAS;IACpB;IAEA,oBACIf,KAAA,CAAAgB,aAAA,CAACb,IAAI;MACDc,KAAK,EAAE,MAAO;MACdC,IAAI,EAAEX,YAAY,EAAEW,IAAK;MACzBC,OAAO,EAAEZ,YAAY,EAAEY,OAAQ;MAC/BC,SAAS,EAAE;IAAiB,CAC/B,CAAC;EAEV,CAAC,EAAE,CAACb,YAAY,CAAC,CAAC;EAElB,oBACIP,KAAA,CAAAgB,aAAA,CAACd,OAAO,EAAAmB,MAAA,CAAAC,MAAA,KACAd,KAAK,EACLF,IAAI;IACRK,QAAQ,EAAEA,QAAS;IACnBY,QAAQ,EAAEC,KAAK,IAAI;MACf,IAAIhB,KAAK,CAACiB,IAAI,KAAK,QAAQ,EAAE;QACzBD,KAAK,GAAGE,UAAU,CAACF,KAAK,CAAC;MAC7B;MACA,OAAOlB,IAAI,CAACiB,QAAQ,CAACC,KAAK,CAAC;IAC/B,CAAE;IACFP,KAAK,EAAE,IAAK;IACZU,IAAI,EAAE,IAAK;IACXC,WAAW,EAAE,IAAK;IAClBC,WAAW,EAAEpB,KAAK,CAACoB,WAAY;IAC/BJ,IAAI,EAAEjB,KAAK,CAACiB,IAAK;IACjBZ,OAAO,EAAEA,OAAQ;IACjB,eAAa,YAAYJ,KAAK,CAACQ,KAAK;EAAG,EAC1C,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -1,11 +1,11 @@
1
1
  import * as React from "react";
2
2
  import { Select as UiSelect } from "@webiny/admin-ui";
3
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
3
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
4
4
  export const Select = props => {
5
5
  const {
6
6
  field
7
7
  } = useModelField();
8
- const rules = useEffectiveRules(field);
8
+ const rules = useFieldEffectiveRules(field);
9
9
  const disabled = !rules.canEdit || rules.disabled;
10
10
  return /*#__PURE__*/React.createElement(UiSelect, Object.assign({}, props, {
11
11
  disabled: disabled,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Select","UiSelect","useEffectiveRules","useModelField","props","field","rules","disabled","canEdit","createElement","Object","assign","options","map","option","value","label"],"sources":["Select.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { SelectProps as UiSelectProps } from \"@webiny/admin-ui\";\nimport { Select as UiSelect } from \"@webiny/admin-ui\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nexport interface Option {\n value: string;\n label: string;\n}\n\nexport interface SelectProps extends UiSelectProps {\n options: Option[];\n}\nexport const Select = (props: SelectProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <UiSelect\n {...props}\n disabled={disabled}\n options={props.options.map(option => ({\n value: option.value,\n label: option.label,\n \"data-testid\": `fr.input.${option.label}`\n }))}\n />\n );\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,MAAM,IAAIC,QAAQ,QAAQ,kBAAkB;AACrD,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAUlF,OAAO,MAAMH,MAAM,GAAII,KAAkB,IAAK;EAC1C,MAAM;IAAEC;EAAM,CAAC,GAAGF,aAAa,CAAC,CAAC;EACjC,MAAMG,KAAK,GAAGJ,iBAAiB,CAACG,KAAK,CAAC;EAEtC,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EAEjD,oBACIR,KAAA,CAAAU,aAAA,CAACR,QAAQ,EAAAS,MAAA,CAAAC,MAAA,KACDP,KAAK;IACTG,QAAQ,EAAEA,QAAS;IACnBK,OAAO,EAAER,KAAK,CAACQ,OAAO,CAACC,GAAG,CAACC,MAAM,KAAK;MAClCC,KAAK,EAAED,MAAM,CAACC,KAAK;MACnBC,KAAK,EAAEF,MAAM,CAACE,KAAK;MACnB,aAAa,EAAE,YAAYF,MAAM,CAACE,KAAK;IAC3C,CAAC,CAAC;EAAE,EACP,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Select","UiSelect","useFieldEffectiveRules","useModelField","props","field","rules","disabled","canEdit","createElement","Object","assign","options","map","option","value","label"],"sources":["Select.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { SelectProps as UiSelectProps } from \"@webiny/admin-ui\";\nimport { Select as UiSelect } from \"@webiny/admin-ui\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nexport interface Option {\n value: string;\n label: string;\n}\n\nexport interface SelectProps extends UiSelectProps {\n options: Option[];\n}\nexport const Select = (props: SelectProps) => {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <UiSelect\n {...props}\n disabled={disabled}\n options={props.options.map(option => ({\n value: option.value,\n label: option.label,\n \"data-testid\": `fr.input.${option.label}`\n }))}\n />\n );\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,MAAM,IAAIC,QAAQ,QAAQ,kBAAkB;AACrD,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AAUvF,OAAO,MAAMH,MAAM,GAAII,KAAkB,IAAK;EAC1C,MAAM;IAAEC;EAAM,CAAC,GAAGF,aAAa,CAAC,CAAC;EACjC,MAAMG,KAAK,GAAGJ,sBAAsB,CAACG,KAAK,CAAC;EAE3C,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EAEjD,oBACIR,KAAA,CAAAU,aAAA,CAACR,QAAQ,EAAAS,MAAA,CAAAC,MAAA,KACDP,KAAK;IACTG,QAAQ,EAAEA,QAAS;IACnBK,OAAO,EAAER,KAAK,CAACQ,OAAO,CAACC,GAAG,CAACC,MAAM,KAAK;MAClCC,KAAK,EAAED,MAAM,CAACC,KAAK;MACnBC,KAAK,EAAEF,MAAM,CAACE,KAAK;MACnB,aAAa,EAAE,YAAYF,MAAM,CAACE,KAAK;IAC3C,CAAC,CAAC;EAAE,EACP,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -6,7 +6,7 @@ import { ReactComponent as ArrowUpIcon } from "@webiny/icons/expand_less.svg";
6
6
  import { ReactComponent as ArrowDownIcon } from "@webiny/icons/expand_more.svg";
7
7
  import { AddTemplateButton } from "./AddTemplate.js";
8
8
  import { TemplateIcon } from "./TemplateIcon.js";
9
- import { useEffectiveRules } from "@webiny/app-headless-cms-common";
9
+ import { useFieldEffectiveRules } from "@webiny/app-headless-cms-common";
10
10
  import { ParentFieldProvider, useModelField } from "../../../hooks/index.js";
11
11
  import { Fields } from "../../../components/ContentEntryForm/Fields.js";
12
12
  import { makeDecoratable } from "@webiny/react-composition";
@@ -81,7 +81,7 @@ const TemplateValueForm = ({
81
81
  const {
82
82
  field
83
83
  } = useModelField();
84
- const rules = useEffectiveRules(field);
84
+ const rules = useFieldEffectiveRules(field);
85
85
  const disabled = !rules.canEdit || rules.disabled;
86
86
  const templates = field.settings?.templates || [];
87
87
  const template = templates.find(tpl => tpl.id === value._templateId);
@@ -1 +1 @@
1
- {"version":3,"names":["React","cloneDeep","ReactComponent","DeleteIcon","CloneIcon","ArrowUpIcon","ArrowDownIcon","AddTemplateButton","TemplateIcon","useEffectiveRules","ParentFieldProvider","useModelField","Fields","makeDecoratable","TemplateProvider","CanEditField","ParentValueIndexProvider","useConfirmationDialog","Accordion","Tooltip","MultiValueItemContainer","children","props","actions","createElement","Fragment","Item","Action","icon","trigger","content","onClick","onMoveUp","disabled","isFirst","onMoveDown","isLast","Separator","onClone","value","onDelete","title","description","MultiValueItem","template","Bind","contentModel","fields","layout","TemplateValueForm","field","rules","canEdit","templates","settings","find","tpl","id","_templateId","name","MultiValueContainer","variant","className","MultiValueDynamicZone","showConfirmation","message","acceptLabel","cancelLabel","bind","getBind","onTemplate","appendValue","__typename","cloneValue","index","values","hasValues","length","path","parentName","map","removeValue","key","ValidationContainer","moveValueUp","moveValueDown"],"sources":["MultiValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport cloneDeep from \"lodash/cloneDeep.js\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete_outline.svg\";\nimport { ReactComponent as CloneIcon } from \"@webiny/icons/library_add.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@webiny/icons/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@webiny/icons/expand_more.svg\";\nimport { AddTemplateButton } from \"./AddTemplate.js\";\nimport { TemplateIcon } from \"./TemplateIcon.js\";\nimport { useEffectiveRules } from \"@webiny/app-headless-cms-common\";\nimport { ParentFieldProvider, useModelField } from \"~/admin/hooks/index.js\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields.js\";\nimport type {\n BindComponent,\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField,\n CmsDynamicZoneTemplateWithTypename\n} from \"~/types.js\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\nimport { TemplateProvider } from \"~/admin/plugins/fieldRenderers/dynamicZone/TemplateProvider.js\";\nimport {\n CanEditField,\n ParentValueIndexProvider\n} from \"~/admin/components/ModelFieldProvider/index.js\";\nimport { useConfirmationDialog } from \"@webiny/app-admin\";\nimport { Accordion, Tooltip } from \"@webiny/admin-ui\";\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\nexport interface MultiValueItemContainerProps {\n value: TemplateValue;\n contentModel: CmsModel;\n isFirst: boolean;\n isLast: boolean;\n disabled?: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: (value: TemplateValue) => void;\n title: React.ReactNode;\n description: string;\n icon: JSX.Element;\n actions?: JSX.Element;\n template: CmsDynamicZoneTemplate;\n children: React.ReactNode;\n}\n\nexport const MultiValueItemContainer = makeDecoratable(\n \"MultiValueItemContainer\",\n ({ children, ...props }: MultiValueItemContainerProps) => {\n const actions = (\n <>\n <Accordion.Item.Action\n icon={<Tooltip trigger={<ArrowUpIcon />} content={\"Move up\"} />}\n onClick={props.onMoveUp}\n disabled={props.isFirst}\n />\n <Accordion.Item.Action\n icon={<Tooltip trigger={<ArrowDownIcon />} content={\"Move down\"} />}\n onClick={props.onMoveDown}\n disabled={props.isLast}\n />\n <Accordion.Item.Action.Separator />\n {props.actions ? <>{props.actions}</> : null}\n <Accordion.Item.Action\n icon={<Tooltip trigger={<CloneIcon />} content={\"Duplicate\"} />}\n onClick={() => props.onClone(props.value)}\n />\n <Accordion.Item.Action\n icon={<Tooltip trigger={<DeleteIcon />} content={\"Delete\"} />}\n onClick={props.onDelete}\n />\n </>\n );\n\n return (\n <Accordion.Item\n title={props.title}\n description={props.description}\n icon={props.icon}\n actions={props.disabled ? null : actions}\n >\n {children}\n </Accordion.Item>\n );\n }\n);\n\nexport interface MultiValueItemItemProps {\n template: CmsDynamicZoneTemplate;\n contentModel: CmsModel;\n Bind: BindComponent;\n}\n\nexport const MultiValueItem = makeDecoratable(\n \"MultiValueItem\",\n (props: MultiValueItemItemProps) => {\n const { template, Bind, contentModel } = props;\n\n return (\n <TemplateProvider template={template}>\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </TemplateProvider>\n );\n }\n);\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\ninterface TemplateValueFormProps {\n value: TemplateValue;\n contentModel: CmsModel;\n Bind: BindComponent;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: (value: TemplateValue) => void;\n}\n\nconst TemplateValueForm = ({\n value,\n contentModel,\n Bind,\n isLast,\n isFirst,\n onMoveUp,\n onMoveDown,\n onDelete,\n onClone\n}: TemplateValueFormProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = templates.find(\n tpl => tpl.id === value._templateId\n );\n\n if (!template) {\n return null;\n }\n\n return (\n <MultiValueItemContainer\n value={value}\n contentModel={contentModel}\n isFirst={isFirst}\n isLast={isLast}\n onClone={onClone}\n onDelete={onDelete}\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n template={template}\n disabled={disabled}\n >\n <MultiValueItem template={template} contentModel={contentModel} Bind={Bind} />\n </MultiValueItemContainer>\n );\n};\n\nexport interface MultiValueContainerProps extends MultiValueDynamicZoneProps {\n children: React.ReactNode;\n}\n\nexport const MultiValueContainer = makeDecoratable(\n \"MultiValueContainer\",\n ({ children }: MultiValueContainerProps) => {\n return (\n <Accordion variant={\"container\"} className={\"gap-md\"}>\n <>{children}</>\n </Accordion>\n );\n }\n);\n\ninterface MultiValueDynamicZoneProps {\n // TODO: this prop might be useless, because we now have a `useModelField` hook.\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const MultiValueDynamicZone = (props: MultiValueDynamicZoneProps) => {\n const { showConfirmation } = useConfirmationDialog({\n message: `Are you sure you want to delete this item? This action is not reversible.`,\n acceptLabel: `Yes, I'm sure!`,\n cancelLabel: `No, leave it.`\n });\n\n const { bind, getBind, contentModel } = props;\n const onTemplate = (template: CmsDynamicZoneTemplateWithTypename) => {\n bind.appendValue({ _templateId: template.id, __typename: template.__typename });\n };\n\n const cloneValue = (value: TemplateValue, index: number) => {\n bind.appendValue(cloneDeep(value), index + 1);\n };\n\n const values: TemplateValue[] = bind.value || [];\n const hasValues = values.length > 0;\n\n const Bind = getBind();\n\n return (\n <div className={\"flex flex-col gap-y-lg\"}>\n {hasValues ? (\n <ParentFieldProvider value={bind.value} path={Bind.parentName}>\n <MultiValueContainer {...props}>\n {values.map((value, index) => {\n const Bind = getBind(index);\n\n const onDelete = () => {\n showConfirmation(() => {\n bind.removeValue(index);\n });\n };\n\n return (\n <ParentValueIndexProvider key={index} index={index}>\n <Bind>\n {() => (\n <Bind.ValidationContainer>\n <TemplateValueForm\n value={value}\n contentModel={contentModel}\n Bind={Bind}\n isFirst={index === 0}\n isLast={index === values.length - 1}\n onMoveUp={() => bind.moveValueUp(index)}\n onMoveDown={() => bind.moveValueDown(index)}\n onDelete={onDelete}\n onClone={value => cloneValue(value, index)}\n />\n </Bind.ValidationContainer>\n )}\n </Bind>\n </ParentValueIndexProvider>\n );\n })}\n </MultiValueContainer>\n </ParentFieldProvider>\n ) : null}\n <CanEditField>\n <AddTemplateButton onTemplate={onTemplate} />\n </CanEditField>\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","cloneDeep","ReactComponent","DeleteIcon","CloneIcon","ArrowUpIcon","ArrowDownIcon","AddTemplateButton","TemplateIcon","useFieldEffectiveRules","ParentFieldProvider","useModelField","Fields","makeDecoratable","TemplateProvider","CanEditField","ParentValueIndexProvider","useConfirmationDialog","Accordion","Tooltip","MultiValueItemContainer","children","props","actions","createElement","Fragment","Item","Action","icon","trigger","content","onClick","onMoveUp","disabled","isFirst","onMoveDown","isLast","Separator","onClone","value","onDelete","title","description","MultiValueItem","template","Bind","contentModel","fields","layout","TemplateValueForm","field","rules","canEdit","templates","settings","find","tpl","id","_templateId","name","MultiValueContainer","variant","className","MultiValueDynamicZone","showConfirmation","message","acceptLabel","cancelLabel","bind","getBind","onTemplate","appendValue","__typename","cloneValue","index","values","hasValues","length","path","parentName","map","removeValue","key","ValidationContainer","moveValueUp","moveValueDown"],"sources":["MultiValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport cloneDeep from \"lodash/cloneDeep.js\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete_outline.svg\";\nimport { ReactComponent as CloneIcon } from \"@webiny/icons/library_add.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@webiny/icons/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@webiny/icons/expand_more.svg\";\nimport { AddTemplateButton } from \"./AddTemplate.js\";\nimport { TemplateIcon } from \"./TemplateIcon.js\";\nimport { useFieldEffectiveRules } from \"@webiny/app-headless-cms-common\";\nimport { ParentFieldProvider, useModelField } from \"~/admin/hooks/index.js\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields.js\";\nimport type {\n BindComponent,\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField,\n CmsDynamicZoneTemplateWithTypename\n} from \"~/types.js\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\nimport { TemplateProvider } from \"~/admin/plugins/fieldRenderers/dynamicZone/TemplateProvider.js\";\nimport {\n CanEditField,\n ParentValueIndexProvider\n} from \"~/admin/components/ModelFieldProvider/index.js\";\nimport { useConfirmationDialog } from \"@webiny/app-admin\";\nimport { Accordion, Tooltip } from \"@webiny/admin-ui\";\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\nexport interface MultiValueItemContainerProps {\n value: TemplateValue;\n contentModel: CmsModel;\n isFirst: boolean;\n isLast: boolean;\n disabled?: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: (value: TemplateValue) => void;\n title: React.ReactNode;\n description: string;\n icon: JSX.Element;\n actions?: JSX.Element;\n template: CmsDynamicZoneTemplate;\n children: React.ReactNode;\n}\n\nexport const MultiValueItemContainer = makeDecoratable(\n \"MultiValueItemContainer\",\n ({ children, ...props }: MultiValueItemContainerProps) => {\n const actions = (\n <>\n <Accordion.Item.Action\n icon={<Tooltip trigger={<ArrowUpIcon />} content={\"Move up\"} />}\n onClick={props.onMoveUp}\n disabled={props.isFirst}\n />\n <Accordion.Item.Action\n icon={<Tooltip trigger={<ArrowDownIcon />} content={\"Move down\"} />}\n onClick={props.onMoveDown}\n disabled={props.isLast}\n />\n <Accordion.Item.Action.Separator />\n {props.actions ? <>{props.actions}</> : null}\n <Accordion.Item.Action\n icon={<Tooltip trigger={<CloneIcon />} content={\"Duplicate\"} />}\n onClick={() => props.onClone(props.value)}\n />\n <Accordion.Item.Action\n icon={<Tooltip trigger={<DeleteIcon />} content={\"Delete\"} />}\n onClick={props.onDelete}\n />\n </>\n );\n\n return (\n <Accordion.Item\n title={props.title}\n description={props.description}\n icon={props.icon}\n actions={props.disabled ? null : actions}\n >\n {children}\n </Accordion.Item>\n );\n }\n);\n\nexport interface MultiValueItemItemProps {\n template: CmsDynamicZoneTemplate;\n contentModel: CmsModel;\n Bind: BindComponent;\n}\n\nexport const MultiValueItem = makeDecoratable(\n \"MultiValueItem\",\n (props: MultiValueItemItemProps) => {\n const { template, Bind, contentModel } = props;\n\n return (\n <TemplateProvider template={template}>\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </TemplateProvider>\n );\n }\n);\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\ninterface TemplateValueFormProps {\n value: TemplateValue;\n contentModel: CmsModel;\n Bind: BindComponent;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: (value: TemplateValue) => void;\n}\n\nconst TemplateValueForm = ({\n value,\n contentModel,\n Bind,\n isLast,\n isFirst,\n onMoveUp,\n onMoveDown,\n onDelete,\n onClone\n}: TemplateValueFormProps) => {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = templates.find(\n tpl => tpl.id === value._templateId\n );\n\n if (!template) {\n return null;\n }\n\n return (\n <MultiValueItemContainer\n value={value}\n contentModel={contentModel}\n isFirst={isFirst}\n isLast={isLast}\n onClone={onClone}\n onDelete={onDelete}\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n template={template}\n disabled={disabled}\n >\n <MultiValueItem template={template} contentModel={contentModel} Bind={Bind} />\n </MultiValueItemContainer>\n );\n};\n\nexport interface MultiValueContainerProps extends MultiValueDynamicZoneProps {\n children: React.ReactNode;\n}\n\nexport const MultiValueContainer = makeDecoratable(\n \"MultiValueContainer\",\n ({ children }: MultiValueContainerProps) => {\n return (\n <Accordion variant={\"container\"} className={\"gap-md\"}>\n <>{children}</>\n </Accordion>\n );\n }\n);\n\ninterface MultiValueDynamicZoneProps {\n // TODO: this prop might be useless, because we now have a `useModelField` hook.\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const MultiValueDynamicZone = (props: MultiValueDynamicZoneProps) => {\n const { showConfirmation } = useConfirmationDialog({\n message: `Are you sure you want to delete this item? This action is not reversible.`,\n acceptLabel: `Yes, I'm sure!`,\n cancelLabel: `No, leave it.`\n });\n\n const { bind, getBind, contentModel } = props;\n const onTemplate = (template: CmsDynamicZoneTemplateWithTypename) => {\n bind.appendValue({ _templateId: template.id, __typename: template.__typename });\n };\n\n const cloneValue = (value: TemplateValue, index: number) => {\n bind.appendValue(cloneDeep(value), index + 1);\n };\n\n const values: TemplateValue[] = bind.value || [];\n const hasValues = values.length > 0;\n\n const Bind = getBind();\n\n return (\n <div className={\"flex flex-col gap-y-lg\"}>\n {hasValues ? (\n <ParentFieldProvider value={bind.value} path={Bind.parentName}>\n <MultiValueContainer {...props}>\n {values.map((value, index) => {\n const Bind = getBind(index);\n\n const onDelete = () => {\n showConfirmation(() => {\n bind.removeValue(index);\n });\n };\n\n return (\n <ParentValueIndexProvider key={index} index={index}>\n <Bind>\n {() => (\n <Bind.ValidationContainer>\n <TemplateValueForm\n value={value}\n contentModel={contentModel}\n Bind={Bind}\n isFirst={index === 0}\n isLast={index === values.length - 1}\n onMoveUp={() => bind.moveValueUp(index)}\n onMoveDown={() => bind.moveValueDown(index)}\n onDelete={onDelete}\n onClone={value => cloneValue(value, index)}\n />\n </Bind.ValidationContainer>\n )}\n </Bind>\n </ParentValueIndexProvider>\n );\n })}\n </MultiValueContainer>\n </ParentFieldProvider>\n ) : null}\n <CanEditField>\n <AddTemplateButton onTemplate={onTemplate} />\n </CanEditField>\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ import { TemplateIcon } from "./TemplateIcon.js";
7
7
  import { TemplateProvider } from "./TemplateProvider.js";
8
8
  import { Fields } from "../../../components/ContentEntryForm/Fields.js";
9
9
  import { ParentFieldProvider } from "../../../components/ContentEntryForm/ParentValue.js";
10
- import { useEffectiveRules } from "@webiny/app-headless-cms-common";
10
+ import { useFieldEffectiveRules } from "@webiny/app-headless-cms-common";
11
11
  import { ParentValueIndexProvider, ModelFieldProvider, useModelField } from "../../../components/ModelFieldProvider/index.js";
12
12
  export const SingleValueItemContainer = makeDecoratable("SingleValueItemContainer", props => {
13
13
  const {
@@ -40,7 +40,7 @@ export const SingleValueDynamicZone = ({
40
40
  const {
41
41
  field
42
42
  } = useModelField();
43
- const rules = useEffectiveRules(field);
43
+ const rules = useFieldEffectiveRules(field);
44
44
  const disabled = !rules.canEdit || rules.disabled;
45
45
  const {
46
46
  showConfirmation
@@ -1 +1 @@
1
- {"version":3,"names":["React","ReactComponent","DeleteIcon","makeDecoratable","useConfirmationDialog","Accordion","Tooltip","AddTemplateButton","TemplateIcon","TemplateProvider","Fields","ParentFieldProvider","useEffectiveRules","ParentValueIndexProvider","ModelFieldProvider","useModelField","SingleValueItemContainer","props","template","actions","children","disabled","accordionActions","createElement","Fragment","Item","Action","icon","trigger","content","onClick","onDelete","title","name","description","SingleValueDynamicZone","bind","contentModel","getBind","field","rules","canEdit","showConfirmation","message","acceptLabel","cancelLabel","onTemplate","onChange","_templateId","id","__typename","templates","settings","value","find","tpl","undefined","Bind","unsetValue","path","parentName","index","background","variant","fields","layout"],"sources":["SingleValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { makeDecoratable, useConfirmationDialog } from \"@webiny/app-admin\";\nimport { Accordion, Tooltip } from \"@webiny/admin-ui\";\nimport { AddTemplateButton } from \"./AddTemplate.js\";\nimport { TemplateIcon } from \"./TemplateIcon.js\";\nimport { TemplateProvider } from \"./TemplateProvider.js\";\nimport type {\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField,\n CmsDynamicZoneTemplateWithTypename\n} from \"~/types.js\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields.js\";\nimport { ParentFieldProvider } from \"~/admin/components/ContentEntryForm/ParentValue.js\";\nimport { useEffectiveRules } from \"@webiny/app-headless-cms-common\";\nimport {\n ParentValueIndexProvider,\n ModelFieldProvider,\n useModelField\n} from \"~/admin/components/ModelFieldProvider/index.js\";\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\ninterface SingleValueDynamicZoneProps {\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\nexport interface SingleValueItemContainerProps {\n value: TemplateValue;\n contentModel: CmsModel;\n onDelete: () => void;\n title: React.ReactNode;\n description: string;\n disabled?: boolean;\n icon: JSX.Element;\n actions?: JSX.Element;\n template: CmsDynamicZoneTemplate;\n children: React.ReactNode;\n}\n\nexport const SingleValueItemContainer = makeDecoratable(\n \"SingleValueItemContainer\",\n (props: SingleValueItemContainerProps) => {\n const { template, actions, children, disabled = false } = props;\n\n const accordionActions = disabled ? null : (\n <>\n {actions ?? null}\n <Accordion.Item.Action\n icon={<Tooltip trigger={<DeleteIcon />} content={\"Delete\"} />}\n onClick={props.onDelete}\n />\n </>\n );\n\n return (\n <Accordion.Item\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n actions={accordionActions}\n >\n {children}\n </Accordion.Item>\n );\n }\n);\n\nexport const SingleValueDynamicZone = ({\n bind,\n contentModel,\n getBind\n}: SingleValueDynamicZoneProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n\n const { showConfirmation } = useConfirmationDialog({\n message: `Are you sure you want to remove this item? This action is not reversible.`,\n acceptLabel: `Yes, I'm sure!`,\n cancelLabel: `No, leave it.`\n });\n\n const onTemplate = (template: CmsDynamicZoneTemplateWithTypename) => {\n bind.onChange({ _templateId: template.id, __typename: template.__typename });\n };\n\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = bind.value\n ? templates.find(tpl => tpl.id === bind.value._templateId)\n : undefined;\n\n const Bind = getBind();\n\n const unsetValue = () => {\n showConfirmation(() => {\n bind.onChange(null);\n });\n };\n\n return (\n <>\n {template ? (\n <ParentFieldProvider value={bind.value} path={Bind.parentName}>\n <ParentValueIndexProvider index={-1}>\n <ModelFieldProvider field={field}>\n <Accordion background={\"base\"} variant={\"container\"}>\n <SingleValueItemContainer\n disabled={!disabled}\n template={template}\n value={bind.value}\n contentModel={contentModel}\n onDelete={unsetValue}\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n >\n <TemplateProvider template={template}>\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </TemplateProvider>\n </SingleValueItemContainer>\n </Accordion>\n </ModelFieldProvider>\n </ParentValueIndexProvider>\n </ParentFieldProvider>\n ) : null}\n {bind.value ? null : <AddTemplateButton onTemplate={onTemplate} />}\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","ReactComponent","DeleteIcon","makeDecoratable","useConfirmationDialog","Accordion","Tooltip","AddTemplateButton","TemplateIcon","TemplateProvider","Fields","ParentFieldProvider","useFieldEffectiveRules","ParentValueIndexProvider","ModelFieldProvider","useModelField","SingleValueItemContainer","props","template","actions","children","disabled","accordionActions","createElement","Fragment","Item","Action","icon","trigger","content","onClick","onDelete","title","name","description","SingleValueDynamicZone","bind","contentModel","getBind","field","rules","canEdit","showConfirmation","message","acceptLabel","cancelLabel","onTemplate","onChange","_templateId","id","__typename","templates","settings","value","find","tpl","undefined","Bind","unsetValue","path","parentName","index","background","variant","fields","layout"],"sources":["SingleValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { makeDecoratable, useConfirmationDialog } from \"@webiny/app-admin\";\nimport { Accordion, Tooltip } from \"@webiny/admin-ui\";\nimport { AddTemplateButton } from \"./AddTemplate.js\";\nimport { TemplateIcon } from \"./TemplateIcon.js\";\nimport { TemplateProvider } from \"./TemplateProvider.js\";\nimport type {\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField,\n CmsDynamicZoneTemplateWithTypename\n} from \"~/types.js\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields.js\";\nimport { ParentFieldProvider } from \"~/admin/components/ContentEntryForm/ParentValue.js\";\nimport { useFieldEffectiveRules } from \"@webiny/app-headless-cms-common\";\nimport {\n ParentValueIndexProvider,\n ModelFieldProvider,\n useModelField\n} from \"~/admin/components/ModelFieldProvider/index.js\";\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\ninterface SingleValueDynamicZoneProps {\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\nexport interface SingleValueItemContainerProps {\n value: TemplateValue;\n contentModel: CmsModel;\n onDelete: () => void;\n title: React.ReactNode;\n description: string;\n disabled?: boolean;\n icon: JSX.Element;\n actions?: JSX.Element;\n template: CmsDynamicZoneTemplate;\n children: React.ReactNode;\n}\n\nexport const SingleValueItemContainer = makeDecoratable(\n \"SingleValueItemContainer\",\n (props: SingleValueItemContainerProps) => {\n const { template, actions, children, disabled = false } = props;\n\n const accordionActions = disabled ? null : (\n <>\n {actions ?? null}\n <Accordion.Item.Action\n icon={<Tooltip trigger={<DeleteIcon />} content={\"Delete\"} />}\n onClick={props.onDelete}\n />\n </>\n );\n\n return (\n <Accordion.Item\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n actions={accordionActions}\n >\n {children}\n </Accordion.Item>\n );\n }\n);\n\nexport const SingleValueDynamicZone = ({\n bind,\n contentModel,\n getBind\n}: SingleValueDynamicZoneProps) => {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n\n const { showConfirmation } = useConfirmationDialog({\n message: `Are you sure you want to remove this item? This action is not reversible.`,\n acceptLabel: `Yes, I'm sure!`,\n cancelLabel: `No, leave it.`\n });\n\n const onTemplate = (template: CmsDynamicZoneTemplateWithTypename) => {\n bind.onChange({ _templateId: template.id, __typename: template.__typename });\n };\n\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = bind.value\n ? templates.find(tpl => tpl.id === bind.value._templateId)\n : undefined;\n\n const Bind = getBind();\n\n const unsetValue = () => {\n showConfirmation(() => {\n bind.onChange(null);\n });\n };\n\n return (\n <>\n {template ? (\n <ParentFieldProvider value={bind.value} path={Bind.parentName}>\n <ParentValueIndexProvider index={-1}>\n <ModelFieldProvider field={field}>\n <Accordion background={\"base\"} variant={\"container\"}>\n <SingleValueItemContainer\n disabled={!disabled}\n template={template}\n value={bind.value}\n contentModel={contentModel}\n onDelete={unsetValue}\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n >\n <TemplateProvider template={template}>\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </TemplateProvider>\n </SingleValueItemContainer>\n </Accordion>\n </ModelFieldProvider>\n </ParentValueIndexProvider>\n </ParentFieldProvider>\n ) : null}\n {bind.value ? null : <AddTemplateButton onTemplate={onTemplate} />}\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ import { FormComponentNote } from "@webiny/admin-ui";
6
6
  import { FormComponentDescription } from "@webiny/admin-ui";
7
7
  import { useForm } from "@webiny/form";
8
8
  import { LexicalCmsEditor } from "../../../components/LexicalCmsEditor/LexicalCmsEditor.js";
9
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
9
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
10
10
  const t = i18n.ns("app-headless-cms/admin/fields/rich-text");
11
11
  const getKey = (id, field) => {
12
12
  const formId = id || "new";
@@ -30,7 +30,7 @@ const plugin = {
30
30
  const {
31
31
  field
32
32
  } = useModelField();
33
- const rules = useEffectiveRules(field);
33
+ const rules = useFieldEffectiveRules(field);
34
34
  const form = useForm();
35
35
  const Bind = getBind();
36
36
  const disabled = !rules.canEdit || rules.disabled;
@@ -1 +1 @@
1
- {"version":3,"names":["React","get","i18n","FormComponentLabel","FormComponentNote","FormComponentDescription","useForm","LexicalCmsEditor","useEffectiveRules","useModelField","t","ns","getKey","id","field","formId","fieldId","plugin","type","name","renderer","rendererName","description","canUse","list","every","Boolean","render","getBind","rules","form","Bind","disabled","canEdit","createElement","bind","ValidationContainer","text","label","hint","help","value","onChange","key","data","placeholder","note"],"sources":["lexicalTextInput.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { FormComponentLabel } from \"@webiny/admin-ui\";\nimport { FormComponentNote } from \"@webiny/admin-ui\";\nimport { FormComponentDescription } from \"@webiny/admin-ui\";\nimport type { CmsModelFieldRendererPlugin, CmsModelField } from \"~/types.js\";\nimport { useForm } from \"@webiny/form\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor.js\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (id: string | undefined, field: CmsModelField): string => {\n const formId = id || \"new\";\n return `${formId}.${field.fieldId}`;\n};\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical\",\n renderer: {\n rendererName: \"lexical-text-input\",\n name: t`Lexical Text Input`,\n description: t`Renders a lexical text editor.`,\n canUse({ field }) {\n return [\n field.type === \"rich-text\",\n !field.list,\n !get(field, \"predefinedValues.enabled\")\n ].every(Boolean);\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const form = useForm();\n\n const Bind = getBind();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind>\n {bind => {\n return (\n <Bind.ValidationContainer>\n <FormComponentLabel\n text={field.label}\n hint={field.help}\n disabled={disabled}\n />\n <FormComponentDescription\n text={field.description}\n disabled={disabled}\n />\n <LexicalCmsEditor\n disabled={disabled}\n value={bind.value}\n onChange={bind.onChange}\n key={getKey(form.data.id, field)}\n placeholder={field.placeholder}\n data-testid={`fr.input.lexical.${field.label}`}\n />\n {field.note ? (\n <FormComponentNote text={field.note} disabled={disabled} />\n ) : null}\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAC/B,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,iBAAiB,QAAQ,kBAAkB;AACpD,SAASC,wBAAwB,QAAQ,kBAAkB;AAE3D,SAASC,OAAO,QAAQ,cAAc;AACtC,SAASC,gBAAgB;AACzB,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAElF,MAAMC,CAAC,GAAGR,IAAI,CAACS,EAAE,CAAC,yCAAyC,CAAC;AAE5D,MAAMC,MAAM,GAAGA,CAACC,EAAsB,EAAEC,KAAoB,KAAa;EACrE,MAAMC,MAAM,GAAGF,EAAE,IAAI,KAAK;EAC1B,OAAO,GAAGE,MAAM,IAAID,KAAK,CAACE,OAAO,EAAE;AACvC,CAAC;AAED,MAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,mCAAmC;EACzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,oBAAoB;IAClCF,IAAI,EAAET,CAAC,oBAAoB;IAC3BY,WAAW,EAAEZ,CAAC,gCAAgC;IAC9Ca,MAAMA,CAAC;MAAET;IAAM,CAAC,EAAE;MACd,OAAO,CACHA,KAAK,CAACI,IAAI,KAAK,WAAW,EAC1B,CAACJ,KAAK,CAACU,IAAI,EACX,CAACvB,GAAG,CAACa,KAAK,EAAE,0BAA0B,CAAC,CAC1C,CAACW,KAAK,CAACC,OAAO,CAAC;IACpB,CAAC;IACDC,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEd;MAAM,CAAC,GAAGL,aAAa,CAAC,CAAC;MACjC,MAAMoB,KAAK,GAAGrB,iBAAiB,CAACM,KAAK,CAAC;MACtC,MAAMgB,IAAI,GAAGxB,OAAO,CAAC,CAAC;MAEtB,MAAMyB,IAAI,GAAGH,OAAO,CAAC,CAAC;MAEtB,MAAMI,QAAQ,GAAG,CAACH,KAAK,CAACI,OAAO,IAAIJ,KAAK,CAACG,QAAQ;MAEjD,oBACIhC,KAAA,CAAAkC,aAAA,CAACH,IAAI,QACAI,IAAI,IAAI;QACL,oBACInC,KAAA,CAAAkC,aAAA,CAACH,IAAI,CAACK,mBAAmB,qBACrBpC,KAAA,CAAAkC,aAAA,CAAC/B,kBAAkB;UACfkC,IAAI,EAAEvB,KAAK,CAACwB,KAAM;UAClBC,IAAI,EAAEzB,KAAK,CAAC0B,IAAK;UACjBR,QAAQ,EAAEA;QAAS,CACtB,CAAC,eACFhC,KAAA,CAAAkC,aAAA,CAAC7B,wBAAwB;UACrBgC,IAAI,EAAEvB,KAAK,CAACQ,WAAY;UACxBU,QAAQ,EAAEA;QAAS,CACtB,CAAC,eACFhC,KAAA,CAAAkC,aAAA,CAAC3B,gBAAgB;UACbyB,QAAQ,EAAEA,QAAS;UACnBS,KAAK,EAAEN,IAAI,CAACM,KAAM;UAClBC,QAAQ,EAAEP,IAAI,CAACO,QAAS;UACxBC,GAAG,EAAE/B,MAAM,CAACkB,IAAI,CAACc,IAAI,CAAC/B,EAAE,EAAEC,KAAK,CAAE;UACjC+B,WAAW,EAAE/B,KAAK,CAAC+B,WAAY;UAC/B,eAAa,oBAAoB/B,KAAK,CAACwB,KAAK;QAAG,CAClD,CAAC,EACDxB,KAAK,CAACgC,IAAI,gBACP9C,KAAA,CAAAkC,aAAA,CAAC9B,iBAAiB;UAACiC,IAAI,EAAEvB,KAAK,CAACgC,IAAK;UAACd,QAAQ,EAAEA;QAAS,CAAE,CAAC,GAC3D,IACkB,CAAC;MAEnC,CACE,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAef,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["React","get","i18n","FormComponentLabel","FormComponentNote","FormComponentDescription","useForm","LexicalCmsEditor","useFieldEffectiveRules","useModelField","t","ns","getKey","id","field","formId","fieldId","plugin","type","name","renderer","rendererName","description","canUse","list","every","Boolean","render","getBind","rules","form","Bind","disabled","canEdit","createElement","bind","ValidationContainer","text","label","hint","help","value","onChange","key","data","placeholder","note"],"sources":["lexicalTextInput.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { FormComponentLabel } from \"@webiny/admin-ui\";\nimport { FormComponentNote } from \"@webiny/admin-ui\";\nimport { FormComponentDescription } from \"@webiny/admin-ui\";\nimport type { CmsModelFieldRendererPlugin, CmsModelField } from \"~/types.js\";\nimport { useForm } from \"@webiny/form\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor.js\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (id: string | undefined, field: CmsModelField): string => {\n const formId = id || \"new\";\n return `${formId}.${field.fieldId}`;\n};\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical\",\n renderer: {\n rendererName: \"lexical-text-input\",\n name: t`Lexical Text Input`,\n description: t`Renders a lexical text editor.`,\n canUse({ field }) {\n return [\n field.type === \"rich-text\",\n !field.list,\n !get(field, \"predefinedValues.enabled\")\n ].every(Boolean);\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const form = useForm();\n\n const Bind = getBind();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind>\n {bind => {\n return (\n <Bind.ValidationContainer>\n <FormComponentLabel\n text={field.label}\n hint={field.help}\n disabled={disabled}\n />\n <FormComponentDescription\n text={field.description}\n disabled={disabled}\n />\n <LexicalCmsEditor\n disabled={disabled}\n value={bind.value}\n onChange={bind.onChange}\n key={getKey(form.data.id, field)}\n placeholder={field.placeholder}\n data-testid={`fr.input.lexical.${field.label}`}\n />\n {field.note ? (\n <FormComponentNote text={field.note} disabled={disabled} />\n ) : null}\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAC/B,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,iBAAiB,QAAQ,kBAAkB;AACpD,SAASC,wBAAwB,QAAQ,kBAAkB;AAE3D,SAASC,OAAO,QAAQ,cAAc;AACtC,SAASC,gBAAgB;AACzB,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AAEvF,MAAMC,CAAC,GAAGR,IAAI,CAACS,EAAE,CAAC,yCAAyC,CAAC;AAE5D,MAAMC,MAAM,GAAGA,CAACC,EAAsB,EAAEC,KAAoB,KAAa;EACrE,MAAMC,MAAM,GAAGF,EAAE,IAAI,KAAK;EAC1B,OAAO,GAAGE,MAAM,IAAID,KAAK,CAACE,OAAO,EAAE;AACvC,CAAC;AAED,MAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,mCAAmC;EACzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,oBAAoB;IAClCF,IAAI,EAAET,CAAC,oBAAoB;IAC3BY,WAAW,EAAEZ,CAAC,gCAAgC;IAC9Ca,MAAMA,CAAC;MAAET;IAAM,CAAC,EAAE;MACd,OAAO,CACHA,KAAK,CAACI,IAAI,KAAK,WAAW,EAC1B,CAACJ,KAAK,CAACU,IAAI,EACX,CAACvB,GAAG,CAACa,KAAK,EAAE,0BAA0B,CAAC,CAC1C,CAACW,KAAK,CAACC,OAAO,CAAC;IACpB,CAAC;IACDC,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEd;MAAM,CAAC,GAAGL,aAAa,CAAC,CAAC;MACjC,MAAMoB,KAAK,GAAGrB,sBAAsB,CAACM,KAAK,CAAC;MAC3C,MAAMgB,IAAI,GAAGxB,OAAO,CAAC,CAAC;MAEtB,MAAMyB,IAAI,GAAGH,OAAO,CAAC,CAAC;MAEtB,MAAMI,QAAQ,GAAG,CAACH,KAAK,CAACI,OAAO,IAAIJ,KAAK,CAACG,QAAQ;MAEjD,oBACIhC,KAAA,CAAAkC,aAAA,CAACH,IAAI,QACAI,IAAI,IAAI;QACL,oBACInC,KAAA,CAAAkC,aAAA,CAACH,IAAI,CAACK,mBAAmB,qBACrBpC,KAAA,CAAAkC,aAAA,CAAC/B,kBAAkB;UACfkC,IAAI,EAAEvB,KAAK,CAACwB,KAAM;UAClBC,IAAI,EAAEzB,KAAK,CAAC0B,IAAK;UACjBR,QAAQ,EAAEA;QAAS,CACtB,CAAC,eACFhC,KAAA,CAAAkC,aAAA,CAAC7B,wBAAwB;UACrBgC,IAAI,EAAEvB,KAAK,CAACQ,WAAY;UACxBU,QAAQ,EAAEA;QAAS,CACtB,CAAC,eACFhC,KAAA,CAAAkC,aAAA,CAAC3B,gBAAgB;UACbyB,QAAQ,EAAEA,QAAS;UACnBS,KAAK,EAAEN,IAAI,CAACM,KAAM;UAClBC,QAAQ,EAAEP,IAAI,CAACO,QAAS;UACxBC,GAAG,EAAE/B,MAAM,CAACkB,IAAI,CAACc,IAAI,CAAC/B,EAAE,EAAEC,KAAK,CAAE;UACjC+B,WAAW,EAAE/B,KAAK,CAAC+B,WAAY;UAC/B,eAAa,oBAAoB/B,KAAK,CAACwB,KAAK;QAAG,CAClD,CAAC,EACDxB,KAAK,CAACgC,IAAI,gBACP9C,KAAA,CAAAkC,aAAA,CAAC9B,iBAAiB;UAACiC,IAAI,EAAEvB,KAAK,CAACgC,IAAK;UAACd,QAAQ,EAAEA;QAAS,CAAE,CAAC,GAC3D,IACkB,CAAC;MAEnC,CACE,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAef,MAAM","ignoreList":[]}
@@ -7,7 +7,7 @@ import { LexicalCmsEditor } from "../../../components/LexicalCmsEditor/LexicalCm
7
7
  import { useForm } from "@webiny/form";
8
8
  import { MultiValueRendererSettings } from "../MultiValueRendererSettings.js";
9
9
  import { IconButton } from "@webiny/admin-ui";
10
- import { CanEditField, useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
10
+ import { CanEditField, useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
11
11
  const t = i18n.ns("app-headless-cms/admin/fields/rich-text");
12
12
  const getKey = (id, field, index) => {
13
13
  const formId = id || "new";
@@ -29,7 +29,7 @@ const plugin = {
29
29
  const {
30
30
  field
31
31
  } = useModelField();
32
- const rules = useEffectiveRules(field);
32
+ const rules = useFieldEffectiveRules(field);
33
33
  const form = useForm();
34
34
  const disabled = !rules.canEdit || rules.disabled;
35
35
  return /*#__PURE__*/React.createElement(DynamicSection, Object.assign({}, props, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","get","i18n","ReactComponent","DeleteIcon","DynamicSection","LexicalCmsEditor","useForm","MultiValueRendererSettings","IconButton","CanEditField","useEffectiveRules","useModelField","t","ns","getKey","id","field","index","formId","fieldId","plugin","type","name","renderer","rendererName","description","canUse","list","every","Boolean","render","props","rules","form","disabled","canEdit","createElement","Object","assign","bind","className","value","onChange","key","data","placeholder","variant","size","icon","onClick","removeValue","renderSettings"],"sources":["lexicalTextInputs.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport type { CmsModelField, CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete_outline.svg\";\nimport DynamicSection from \"../DynamicSection.js\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor.js\";\nimport { useForm } from \"@webiny/form\";\nimport { MultiValueRendererSettings } from \"~/admin/plugins/fieldRenderers/MultiValueRendererSettings.js\";\nimport { IconButton } from \"@webiny/admin-ui\";\nimport { CanEditField, useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (id: string | undefined, field: CmsModelField, index: number): string => {\n const formId = id || \"new\";\n return `${formId}.${field.fieldId}.${index}`;\n};\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical-inputs\",\n renderer: {\n rendererName: \"lexical-text-inputs\",\n name: t`Lexical Text Inputs`,\n description: t`Renders a list of lexical editors.`,\n canUse({ field }) {\n return [\n field.type === \"rich-text\",\n !!field.list,\n !get(field, \"predefinedValues.enabled\")\n ].every(Boolean);\n },\n render(props) {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const form = useForm();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <DynamicSection {...props} disabled={disabled}>\n {({ bind, index }) => (\n <div className={\"relative\"}>\n <LexicalCmsEditor\n disabled={disabled}\n value={bind.index.value}\n onChange={bind.index.onChange}\n key={getKey(form.data.id, field, index)}\n placeholder={field.placeholder}\n />\n <CanEditField>\n <div className={\"absolute top-sm right-sm z-10\"}>\n <IconButton\n variant={\"ghost\"}\n size={\"md\"}\n icon={<DeleteIcon />}\n onClick={() => bind.field.removeValue(index)}\n />\n </div>\n </CanEditField>\n </div>\n )}\n </DynamicSection>\n );\n },\n renderSettings(props) {\n return <MultiValueRendererSettings {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","get","i18n","ReactComponent","DeleteIcon","DynamicSection","LexicalCmsEditor","useForm","MultiValueRendererSettings","IconButton","CanEditField","useFieldEffectiveRules","useModelField","t","ns","getKey","id","field","index","formId","fieldId","plugin","type","name","renderer","rendererName","description","canUse","list","every","Boolean","render","props","rules","form","disabled","canEdit","createElement","Object","assign","bind","className","value","onChange","key","data","placeholder","variant","size","icon","onClick","removeValue","renderSettings"],"sources":["lexicalTextInputs.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport type { CmsModelField, CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete_outline.svg\";\nimport DynamicSection from \"../DynamicSection.js\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor.js\";\nimport { useForm } from \"@webiny/form\";\nimport { MultiValueRendererSettings } from \"~/admin/plugins/fieldRenderers/MultiValueRendererSettings.js\";\nimport { IconButton } from \"@webiny/admin-ui\";\nimport {\n CanEditField,\n useFieldEffectiveRules,\n useModelField\n} from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (id: string | undefined, field: CmsModelField, index: number): string => {\n const formId = id || \"new\";\n return `${formId}.${field.fieldId}.${index}`;\n};\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical-inputs\",\n renderer: {\n rendererName: \"lexical-text-inputs\",\n name: t`Lexical Text Inputs`,\n description: t`Renders a list of lexical editors.`,\n canUse({ field }) {\n return [\n field.type === \"rich-text\",\n !!field.list,\n !get(field, \"predefinedValues.enabled\")\n ].every(Boolean);\n },\n render(props) {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const form = useForm();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <DynamicSection {...props} disabled={disabled}>\n {({ bind, index }) => (\n <div className={\"relative\"}>\n <LexicalCmsEditor\n disabled={disabled}\n value={bind.index.value}\n onChange={bind.index.onChange}\n key={getKey(form.data.id, field, index)}\n placeholder={field.placeholder}\n />\n <CanEditField>\n <div className={\"absolute top-sm right-sm z-10\"}>\n <IconButton\n variant={\"ghost\"}\n size={\"md\"}\n icon={<DeleteIcon />}\n onClick={() => bind.field.removeValue(index)}\n />\n </div>\n </CanEditField>\n </div>\n )}\n </DynamicSection>\n );\n },\n renderSettings(props) {\n return <MultiValueRendererSettings {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import get from "lodash/get.js";
3
3
  import { DelayedOnChange, Textarea } from "@webiny/admin-ui";
4
4
  import { i18n } from "@webiny/app/i18n/index.js";
5
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
5
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
6
6
  const t = i18n.ns("app-headless-cms/admin/fields/text");
7
7
  const plugin = {
8
8
  type: "cms-editor-field-renderer",
@@ -22,7 +22,7 @@ const plugin = {
22
22
  const {
23
23
  field
24
24
  } = useModelField();
25
- const rules = useEffectiveRules(field);
25
+ const rules = useFieldEffectiveRules(field);
26
26
  const Bind = getBind();
27
27
  const disabled = !rules.canEdit || rules.disabled;
28
28
  return /*#__PURE__*/React.createElement(Bind, null, bind => /*#__PURE__*/React.createElement(Bind.ValidationContainer, null, /*#__PURE__*/React.createElement(DelayedOnChange, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","get","DelayedOnChange","Textarea","i18n","useEffectiveRules","useModelField","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","list","render","getBind","rules","Bind","disabled","canEdit","createElement","bind","ValidationContainer","value","onChange","onBlur","validate","rows","label","placeholder","note","hint","help","validation"],"sources":["longText.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport type { CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { DelayedOnChange, Textarea } from \"@webiny/admin-ui\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-long-text-textarea\",\n renderer: {\n rendererName: \"long-text-text-area\",\n name: t`Text Area`,\n description: t`Renders a simple text area, suitable for larger amounts of text.`,\n canUse({ field }) {\n return (\n field.type === \"long-text\" && !field.list && !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const Bind = getBind();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind>\n {bind => (\n <Bind.ValidationContainer>\n <DelayedOnChange\n value={bind.value}\n onChange={bind.onChange}\n onBlur={bind.validate}\n >\n <Textarea\n disabled={disabled}\n rows={5}\n label={field.label}\n placeholder={field.placeholder}\n description={field.description}\n note={field.note}\n hint={field.help}\n data-testid={`fr.input.longtext.${field.label}`}\n validation={bind.validation}\n />\n </DelayedOnChange>\n </Bind.ValidationContainer>\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAE/B,SAASC,eAAe,EAAEC,QAAQ,QAAQ,kBAAkB;AAC5D,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAElF,MAAMC,CAAC,GAAGH,IAAI,CAACI,EAAE,CAAC,oCAAoC,CAAC;AAEvD,MAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,8CAA8C;EACpDC,QAAQ,EAAE;IACNC,YAAY,EAAE,qBAAqB;IACnCF,IAAI,EAAEJ,CAAC,WAAW;IAClBO,WAAW,EAAEP,CAAC,kEAAkE;IAChFQ,MAAMA,CAAC;MAAEC;IAAM,CAAC,EAAE;MACd,OACIA,KAAK,CAACN,IAAI,KAAK,WAAW,IAAI,CAACM,KAAK,CAACC,IAAI,IAAI,CAAChB,GAAG,CAACe,KAAK,EAAE,0BAA0B,CAAC;IAE5F,CAAC;IACDE,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEH;MAAM,CAAC,GAAGV,aAAa,CAAC,CAAC;MACjC,MAAMc,KAAK,GAAGf,iBAAiB,CAACW,KAAK,CAAC;MACtC,MAAMK,IAAI,GAAGF,OAAO,CAAC,CAAC;MAEtB,MAAMG,QAAQ,GAAG,CAACF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACE,QAAQ;MAEjD,oBACItB,KAAA,CAAAwB,aAAA,CAACH,IAAI,QACAI,IAAI,iBACDzB,KAAA,CAAAwB,aAAA,CAACH,IAAI,CAACK,mBAAmB,qBACrB1B,KAAA,CAAAwB,aAAA,CAACtB,eAAe;QACZyB,KAAK,EAAEF,IAAI,CAACE,KAAM;QAClBC,QAAQ,EAAEH,IAAI,CAACG,QAAS;QACxBC,MAAM,EAAEJ,IAAI,CAACK;MAAS,gBAEtB9B,KAAA,CAAAwB,aAAA,CAACrB,QAAQ;QACLmB,QAAQ,EAAEA,QAAS;QACnBS,IAAI,EAAE,CAAE;QACRC,KAAK,EAAEhB,KAAK,CAACgB,KAAM;QACnBC,WAAW,EAAEjB,KAAK,CAACiB,WAAY;QAC/BnB,WAAW,EAAEE,KAAK,CAACF,WAAY;QAC/BoB,IAAI,EAAElB,KAAK,CAACkB,IAAK;QACjBC,IAAI,EAAEnB,KAAK,CAACoB,IAAK;QACjB,eAAa,qBAAqBpB,KAAK,CAACgB,KAAK,EAAG;QAChDK,UAAU,EAAEZ,IAAI,CAACY;MAAW,CAC/B,CACY,CACK,CAE5B,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAe5B,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["React","get","DelayedOnChange","Textarea","i18n","useFieldEffectiveRules","useModelField","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","list","render","getBind","rules","Bind","disabled","canEdit","createElement","bind","ValidationContainer","value","onChange","onBlur","validate","rows","label","placeholder","note","hint","help","validation"],"sources":["longText.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get.js\";\nimport type { CmsModelFieldRendererPlugin } from \"~/types.js\";\nimport { DelayedOnChange, Textarea } from \"@webiny/admin-ui\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-long-text-textarea\",\n renderer: {\n rendererName: \"long-text-text-area\",\n name: t`Text Area`,\n description: t`Renders a simple text area, suitable for larger amounts of text.`,\n canUse({ field }) {\n return (\n field.type === \"long-text\" && !field.list && !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ getBind }) {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const Bind = getBind();\n\n const disabled = !rules.canEdit || rules.disabled;\n\n return (\n <Bind>\n {bind => (\n <Bind.ValidationContainer>\n <DelayedOnChange\n value={bind.value}\n onChange={bind.onChange}\n onBlur={bind.validate}\n >\n <Textarea\n disabled={disabled}\n rows={5}\n label={field.label}\n placeholder={field.placeholder}\n description={field.description}\n note={field.note}\n hint={field.help}\n data-testid={`fr.input.longtext.${field.label}`}\n validation={bind.validation}\n />\n </DelayedOnChange>\n </Bind.ValidationContainer>\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,MAAM,eAAe;AAE/B,SAASC,eAAe,EAAEC,QAAQ,QAAQ,kBAAkB;AAC5D,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AAEvF,MAAMC,CAAC,GAAGH,IAAI,CAACI,EAAE,CAAC,oCAAoC,CAAC;AAEvD,MAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,8CAA8C;EACpDC,QAAQ,EAAE;IACNC,YAAY,EAAE,qBAAqB;IACnCF,IAAI,EAAEJ,CAAC,WAAW;IAClBO,WAAW,EAAEP,CAAC,kEAAkE;IAChFQ,MAAMA,CAAC;MAAEC;IAAM,CAAC,EAAE;MACd,OACIA,KAAK,CAACN,IAAI,KAAK,WAAW,IAAI,CAACM,KAAK,CAACC,IAAI,IAAI,CAAChB,GAAG,CAACe,KAAK,EAAE,0BAA0B,CAAC;IAE5F,CAAC;IACDE,MAAMA,CAAC;MAAEC;IAAQ,CAAC,EAAE;MAChB,MAAM;QAAEH;MAAM,CAAC,GAAGV,aAAa,CAAC,CAAC;MACjC,MAAMc,KAAK,GAAGf,sBAAsB,CAACW,KAAK,CAAC;MAC3C,MAAMK,IAAI,GAAGF,OAAO,CAAC,CAAC;MAEtB,MAAMG,QAAQ,GAAG,CAACF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACE,QAAQ;MAEjD,oBACItB,KAAA,CAAAwB,aAAA,CAACH,IAAI,QACAI,IAAI,iBACDzB,KAAA,CAAAwB,aAAA,CAACH,IAAI,CAACK,mBAAmB,qBACrB1B,KAAA,CAAAwB,aAAA,CAACtB,eAAe;QACZyB,KAAK,EAAEF,IAAI,CAACE,KAAM;QAClBC,QAAQ,EAAEH,IAAI,CAACG,QAAS;QACxBC,MAAM,EAAEJ,IAAI,CAACK;MAAS,gBAEtB9B,KAAA,CAAAwB,aAAA,CAACrB,QAAQ;QACLmB,QAAQ,EAAEA,QAAS;QACnBS,IAAI,EAAE,CAAE;QACRC,KAAK,EAAEhB,KAAK,CAACgB,KAAM;QACnBC,WAAW,EAAEjB,KAAK,CAACiB,WAAY;QAC/BnB,WAAW,EAAEE,KAAK,CAACF,WAAY;QAC/BoB,IAAI,EAAElB,KAAK,CAACkB,IAAK;QACjBC,IAAI,EAAEnB,KAAK,CAACoB,IAAK;QACjB,eAAa,qBAAqBpB,KAAK,CAACgB,KAAK,EAAG;QAChDK,UAAU,EAAEZ,IAAI,CAACY;MAAW,CAC/B,CACY,CACK,CAE5B,CAAC;IAEf;EACJ;AACJ,CAAC;AAED,eAAe5B,MAAM","ignoreList":[]}
@@ -5,7 +5,7 @@ import { ReactComponent as DeleteIcon } from "@webiny/icons/delete_outline.svg";
5
5
  import DynamicSection from "../DynamicSection.js";
6
6
  import { MultiValueRendererSettings } from "../MultiValueRendererSettings.js";
7
7
  import { DelayedOnChange, IconButton, Textarea } from "@webiny/admin-ui";
8
- import { CanEditField, useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
8
+ import { CanEditField, useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
9
9
  const t = i18n.ns("app-headless-cms/admin/fields/text");
10
10
  const plugin = {
11
11
  type: "cms-editor-field-renderer",
@@ -23,7 +23,7 @@ const plugin = {
23
23
  const {
24
24
  field
25
25
  } = useModelField();
26
- const rules = useEffectiveRules(field);
26
+ const rules = useFieldEffectiveRules(field);
27
27
  const disabled = !rules.canEdit || rules.disabled;
28
28
  return /*#__PURE__*/React.createElement(DynamicSection, Object.assign({}, props, {
29
29
  disabled: disabled