@webiny/app-headless-cms 6.0.0-rc.1 → 6.0.0-rc.3

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 (177) hide show
  1. package/admin/components/ContentEntries/Header/ButtonRefresh/ButtonRefresh.d.ts +2 -0
  2. package/admin/components/ContentEntries/Header/ButtonRefresh/ButtonRefresh.js +18 -0
  3. package/admin/components/ContentEntries/Header/ButtonRefresh/ButtonRefresh.js.map +1 -0
  4. package/admin/components/ContentEntries/Header/ButtonRefresh/index.d.ts +1 -0
  5. package/admin/components/ContentEntries/Header/ButtonRefresh/index.js +3 -0
  6. package/admin/components/ContentEntries/Header/ButtonRefresh/index.js.map +1 -0
  7. package/admin/components/ContentEntries/Header/Header.js +2 -1
  8. package/admin/components/ContentEntries/Header/Header.js.map +1 -1
  9. package/admin/components/ContentEntries/SidebarContent/SidebarContent.js +1 -1
  10. package/admin/components/ContentEntries/SidebarContent/SidebarContent.js.map +1 -1
  11. package/admin/components/ContentEntries/SidebarHeader/SidebarHeader.js +1 -1
  12. package/admin/components/ContentEntries/SidebarHeader/SidebarHeader.js.map +1 -1
  13. package/admin/components/ContentEntries/Table/Cells/CellLive.d.ts +2 -0
  14. package/admin/components/ContentEntries/Table/Cells/CellLive.js +26 -0
  15. package/admin/components/ContentEntries/Table/Cells/CellLive.js.map +1 -0
  16. package/admin/components/ContentEntries/Table/Cells/index.d.ts +1 -0
  17. package/admin/components/ContentEntries/Table/Cells/index.js +1 -0
  18. package/admin/components/ContentEntries/Table/Cells/index.js.map +1 -1
  19. package/admin/components/ContentModelEditor/ContentModelEditor.js +1 -6
  20. package/admin/components/ContentModelEditor/ContentModelEditor.js.map +1 -1
  21. package/admin/components/ContentModelEditor/ContentModelEditorProvider.d.ts +2 -0
  22. package/admin/components/ContentModelEditor/ContentModelEditorProvider.js +14 -2
  23. package/admin/components/ContentModelEditor/ContentModelEditorProvider.js.map +1 -1
  24. package/admin/components/ContentModelEditor/FieldsSidebar.js +51 -2
  25. package/admin/components/ContentModelEditor/FieldsSidebar.js.map +1 -1
  26. package/admin/components/Droppable.d.ts +1 -1
  27. package/admin/components/Droppable.js.map +1 -1
  28. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js +3 -3
  29. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js.map +1 -1
  30. package/admin/components/FieldEditor/EditFieldDialog/FieldSettingsTabs.d.ts +10 -0
  31. package/admin/components/FieldEditor/EditFieldDialog/FieldSettingsTabs.js +69 -0
  32. package/admin/components/FieldEditor/EditFieldDialog/FieldSettingsTabs.js.map +1 -0
  33. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +27 -9
  34. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -1
  35. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/CannotUsePermissions.d.ts +2 -0
  36. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/CannotUsePermissions.js +14 -0
  37. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/CannotUsePermissions.js.map +1 -0
  38. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/FieldPermissionsSelection.d.ts +15 -0
  39. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/FieldPermissionsSelection.js +131 -0
  40. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/FieldPermissionsSelection.js.map +1 -0
  41. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.d.ts +4 -0
  42. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js +74 -0
  43. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js.map +1 -0
  44. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.d.ts +13 -0
  45. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js +203 -0
  46. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js.map +1 -0
  47. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.d.ts +1 -0
  48. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.js +3 -0
  49. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.js.map +1 -0
  50. package/admin/components/FieldEditor/EditFieldDialog.js +13 -56
  51. package/admin/components/FieldEditor/EditFieldDialog.js.map +1 -1
  52. package/admin/components/FieldEditor/EditFieldDialogContainer.d.ts +12 -0
  53. package/admin/components/FieldEditor/EditFieldDialogContainer.js +40 -0
  54. package/admin/components/FieldEditor/EditFieldDialogContainer.js.map +1 -0
  55. package/admin/components/FieldEditor/EditFieldDrawerContainer.d.ts +12 -0
  56. package/admin/components/FieldEditor/EditFieldDrawerContainer.js +40 -0
  57. package/admin/components/FieldEditor/EditFieldDrawerContainer.js.map +1 -0
  58. package/admin/components/FieldEditor/FieldEditor.js +148 -88
  59. package/admin/components/FieldEditor/FieldEditor.js.map +1 -1
  60. package/admin/components/FieldEditor/FieldEditorContext.d.ts +33 -3
  61. package/admin/components/FieldEditor/FieldEditorContext.js +225 -6
  62. package/admin/components/FieldEditor/FieldEditorContext.js.map +1 -1
  63. package/admin/components/FieldEditor/LayoutCell.d.ts +9 -0
  64. package/admin/components/FieldEditor/LayoutCell.js +33 -0
  65. package/admin/components/FieldEditor/LayoutCell.js.map +1 -0
  66. package/admin/components/FieldEditor/utils/deleteField.js +12 -4
  67. package/admin/components/FieldEditor/utils/deleteField.js.map +1 -1
  68. package/admin/components/FieldEditor/utils/getFieldPosition.js +6 -1
  69. package/admin/components/FieldEditor/utils/getFieldPosition.js.map +1 -1
  70. package/admin/graphql/contentModels.d.ts +2 -2
  71. package/admin/graphql/contentModels.js +7 -0
  72. package/admin/graphql/contentModels.js.map +1 -1
  73. package/admin/hooks/useModelFieldGraphqlContext.d.ts +1 -0
  74. package/admin/plugins/fieldRenderers/DynamicSection.d.ts +2 -1
  75. package/admin/plugins/fieldRenderers/DynamicSection.js +3 -1
  76. package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
  77. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js +7 -1
  78. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -1
  79. package/admin/plugins/fieldRenderers/checkboxes.js +7 -1
  80. package/admin/plugins/fieldRenderers/checkboxes.js.map +1 -1
  81. package/admin/plugins/fieldRenderers/dateTime/Input.js +9 -2
  82. package/admin/plugins/fieldRenderers/dateTime/Input.js.map +1 -1
  83. package/admin/plugins/fieldRenderers/dateTime/Select.js +7 -0
  84. package/admin/plugins/fieldRenderers/dateTime/Select.js.map +1 -1
  85. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.d.ts +1 -0
  86. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js +9 -5
  87. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -1
  88. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.d.ts +2 -1
  89. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js +18 -10
  90. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -1
  91. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInput.js +13 -4
  92. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInput.js.map +1 -1
  93. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInputs.js +10 -4
  94. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInputs.js.map +1 -1
  95. package/admin/plugins/fieldRenderers/longText/longText.js +7 -1
  96. package/admin/plugins/fieldRenderers/longText/longText.js.map +1 -1
  97. package/admin/plugins/fieldRenderers/longText/longTexts.js +12 -3
  98. package/admin/plugins/fieldRenderers/longText/longTexts.js.map +1 -1
  99. package/admin/plugins/fieldRenderers/number/numberInput.js +7 -1
  100. package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
  101. package/admin/plugins/fieldRenderers/number/numberInputs.js +11 -3
  102. package/admin/plugins/fieldRenderers/number/numberInputs.js.map +1 -1
  103. package/admin/plugins/fieldRenderers/object/FieldSettings.d.ts +2 -1
  104. package/admin/plugins/fieldRenderers/object/MultiValueContainer.js +5 -0
  105. package/admin/plugins/fieldRenderers/object/MultiValueContainer.js.map +1 -1
  106. package/admin/plugins/fieldRenderers/object/MultiValueItemContainer.d.ts +1 -0
  107. package/admin/plugins/fieldRenderers/object/MultiValueItemContainer.js +3 -2
  108. package/admin/plugins/fieldRenderers/object/MultiValueItemContainer.js.map +1 -1
  109. package/admin/plugins/fieldRenderers/radioButtons.js +7 -1
  110. package/admin/plugins/fieldRenderers/radioButtons.js.map +1 -1
  111. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js +15 -7
  112. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js.map +1 -1
  113. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js +14 -7
  114. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js.map +1 -1
  115. package/admin/plugins/fieldRenderers/ref/advanced/components/Entry.d.ts +3 -1
  116. package/admin/plugins/fieldRenderers/ref/advanced/components/Entry.js +7 -6
  117. package/admin/plugins/fieldRenderers/ref/advanced/components/Entry.js.map +1 -1
  118. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.d.ts +1 -1
  119. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +9 -3
  120. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
  121. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.d.ts +1 -1
  122. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js +9 -3
  123. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -1
  124. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleMultipleRenderer.js +7 -1
  125. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleMultipleRenderer.js.map +1 -1
  126. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleSingleRenderer.js +7 -1
  127. package/admin/plugins/fieldRenderers/ref/simple/components/SimpleSingleRenderer.js.map +1 -1
  128. package/admin/plugins/fieldRenderers/select.js +7 -1
  129. package/admin/plugins/fieldRenderers/select.js.map +1 -1
  130. package/admin/plugins/fieldRenderers/text/tags.js +7 -1
  131. package/admin/plugins/fieldRenderers/text/tags.js.map +1 -1
  132. package/admin/plugins/fieldRenderers/text/textInput.js +7 -1
  133. package/admin/plugins/fieldRenderers/text/textInput.js.map +1 -1
  134. package/admin/plugins/fieldRenderers/text/textInputs.js +12 -3
  135. package/admin/plugins/fieldRenderers/text/textInputs.js.map +1 -1
  136. package/admin/plugins/fields/ui/TabsLayoutEditor.d.ts +9 -0
  137. package/admin/plugins/fields/ui/TabsLayoutEditor.js +470 -0
  138. package/admin/plugins/fields/ui/TabsLayoutEditor.js.map +1 -0
  139. package/admin/plugins/fields/ui/alert.d.ts +2 -2
  140. package/admin/plugins/fields/ui/alert.js +144 -17
  141. package/admin/plugins/fields/ui/alert.js.map +1 -1
  142. package/admin/plugins/fields/ui/index.d.ts +1 -0
  143. package/admin/plugins/fields/ui/index.js +1 -0
  144. package/admin/plugins/fields/ui/index.js.map +1 -1
  145. package/admin/plugins/fields/ui/separator.d.ts +2 -2
  146. package/admin/plugins/fields/ui/separator.js +131 -17
  147. package/admin/plugins/fields/ui/separator.js.map +1 -1
  148. package/admin/plugins/fields/ui/tabs.d.ts +2 -0
  149. package/admin/plugins/fields/ui/tabs.js +89 -0
  150. package/admin/plugins/fields/ui/tabs.js.map +1 -0
  151. package/admin/plugins/index.d.ts +1 -0
  152. package/admin/views/contentEntries/ContentEntriesModule.js +6 -1
  153. package/admin/views/contentEntries/ContentEntriesModule.js.map +1 -1
  154. package/admin/views/contentEntries/hooks/useContentEntriesList.d.ts +1 -0
  155. package/admin/views/contentEntries/hooks/useContentEntriesList.js +8 -4
  156. package/admin/views/contentEntries/hooks/useContentEntriesList.js.map +1 -1
  157. package/admin/views/contentModels/importing/graphql.d.ts +2 -2
  158. package/admin/views/contentModels/importing/graphql.js.map +1 -1
  159. package/allPlugins.d.ts +2 -1
  160. package/allPlugins.js +2 -3
  161. package/allPlugins.js.map +1 -1
  162. package/exports/admin/cms/model.d.ts +1 -0
  163. package/exports/admin/cms/model.js +3 -0
  164. package/exports/admin/cms/model.js.map +1 -0
  165. package/package.json +24 -24
  166. package/types.d.ts +1 -0
  167. package/types.js +5 -1
  168. package/types.js.map +1 -1
  169. package/admin/plugins/fieldRenderers/ui/alert.d.ts +0 -2
  170. package/admin/plugins/fieldRenderers/ui/alert.js +0 -32
  171. package/admin/plugins/fieldRenderers/ui/alert.js.map +0 -1
  172. package/admin/plugins/fieldRenderers/ui/index.d.ts +0 -2
  173. package/admin/plugins/fieldRenderers/ui/index.js +0 -4
  174. package/admin/plugins/fieldRenderers/ui/index.js.map +0 -1
  175. package/admin/plugins/fieldRenderers/ui/separator.d.ts +0 -2
  176. package/admin/plugins/fieldRenderers/ui/separator.js +0 -31
  177. package/admin/plugins/fieldRenderers/ui/separator.js.map +0 -1
@@ -15,7 +15,7 @@ const style = {
15
15
  styles: "text-align:center;padding:25px"
16
16
  } : {
17
17
  name: "16icgk8-noComponentsMessage",
18
- styles: "text-align:center;padding:25px;label:noComponentsMessage;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcGVhcmFuY2VUYWIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWF5QiIsImZpbGUiOiJBcHBlYXJhbmNlVGFiLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGkxOG4gfSBmcm9tIFwiQHdlYmlueS9hcHAvaTE4bi9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL2Nzc1wiO1xuaW1wb3J0IHsgdmFsaWRhdGlvbiB9IGZyb20gXCJAd2ViaW55L3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVzZUJpbmQgfSBmcm9tIFwiQHdlYmlueS9mb3JtXCI7XG5pbXBvcnQgeyBSZW5kZXJlck9wdGlvbnMgfSBmcm9tIFwiLi9BcHBlYXJhbmNlVGFiL1JlbmRlcmVyT3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgdXNlUmVuZGVyZXJQbHVnaW5zIH0gZnJvbSBcIi4vdXNlUmVuZGVyZXJQbHVnaW5zLmpzXCI7XG5pbXBvcnQgeyB1c2VNb2RlbEZpZWxkIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Nb2RlbEZpZWxkUHJvdmlkZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IFJhZGlvR3JvdXAsIFRleHQsIEdyaWQsIEhlYWRpbmcgfSBmcm9tIFwiQHdlYmlueS9hZG1pbi11aVwiO1xuXG5jb25zdCB0ID0gaTE4bi5ucyhcImFwcC1oZWFkbGVzcy1jbXMvYWRtaW4vY29udGVudC1tb2RlbC1lZGl0b3IvdGFicy9hcHBlYXJhbmNlLXRhYlwiKTtcblxuY29uc3Qgc3R5bGUgPSB7XG4gICAgbm9Db21wb25lbnRzTWVzc2FnZTogY3NzKHtcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICBwYWRkaW5nOiAyNVxuICAgIH0pLFxuICAgIHJhZGlvQ29udGFpbmVyOiBjc3Moe1xuICAgICAgICBtYXJnaW5Cb3R0b206IDEwLFxuICAgICAgICBkaXNwbGF5OiBcImZsZXhcIlxuICAgIH0pXG59O1xuXG5jb25zdCBBcHBlYXJhbmNlVGFiID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlbmRlcmVycyA9IHVzZVJlbmRlcmVyUGx1Z2lucygpO1xuICAgIGNvbnN0IHsgZmllbGQgfSA9IHVzZU1vZGVsRmllbGQoKTtcblxuICAgIGNvbnN0IHJlbmRlcmVyTmFtZSA9IHVzZUJpbmQoe1xuICAgICAgICBuYW1lOiBcInJlbmRlcmVyLm5hbWVcIixcbiAgICAgICAgdmFsaWRhdGU6IHZhbGlkYXRpb24uY3JlYXRlKFwicmVxdWlyZWRcIilcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlbGVjdGVkUGx1Z2luID0gcmVuZGVyZXJOYW1lLnZhbHVlXG4gICAgICAgID8gcmVuZGVyZXJzLmZpbmQocGwgPT4gcGwucmVuZGVyZXIucmVuZGVyZXJOYW1lID09PSByZW5kZXJlck5hbWUudmFsdWUpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHJlbmRlcmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxHcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkLkNvbHVtblxuICAgICAgICAgICAgICAgICAgICBzcGFuPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZS5ub0NvbXBvbmVudHNNZXNzYWdlfVxuICAgICAgICAgICAgICAgID57dGBUaGVyZSBhcmUgbm8gY29tcG9uZW50cyB0aGF0IGNhbiByZW5kZXIgdGhpcyBmaWVsZC5gfTwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCByZW5kZXIgcGx1Z2luIGlzIG5vIGxvbmdlciBhdmFpbGFibGUsIHNlbGVjdCB0aGUgZmlyc3QgYXZhaWxhYmxlIG9uZS5cbiAgICAgICAgaWYgKHNlbGVjdGVkUGx1Z2luKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVuZGVyZXJzWzBdKSB7XG4gICAgICAgICAgICByZW5kZXJlck5hbWUub25DaGFuZ2UocmVuZGVyZXJzWzBdLnJlbmRlcmVyLnJlbmRlcmVyTmFtZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmluZm8oYE5vIHJlbmRlcmVycyBmb3IgZmllbGQgJHtmaWVsZC5maWVsZElkfSBmb3VuZC5gLCBmaWVsZCk7XG4gICAgfSwgW2ZpZWxkLmlkLCBmaWVsZC5saXN0LCBmaWVsZC5wcmVkZWZpbmVkVmFsdWVzPy5lbmFibGVkLCBzZWxlY3RlZFBsdWdpbl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxHcmlkPlxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkLkNvbHVtbiBzcGFuPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGVhZGluZyBsZXZlbD17NX0+RmllbGQgcmVuZGVyZXI8L0hlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBzaXplPXtcInNtXCJ9PkNob29zZSBhIGNvbXBvbmVudCB0aGF0IHdpbGwgcmVuZGVyIHRoZSBmaWVsZC48L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkLkNvbHVtbiBzcGFuPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJtYi14bFwifT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVuZGVyZXJOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcz17cmVuZGVyZXJzLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5yZW5kZXJlci5yZW5kZXJlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5yZW5kZXJlci5yZW5kZXJlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPXtcImRpdlwifSBzaXplPXtcIm1kXCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ucmVuZGVyZXIubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9e1wiZGl2XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPXtcInNtXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1widGV4dC1zbSB0ZXh0LW5ldXRyYWwtc3Ryb25nXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLnJlbmRlcmVyLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDxSZW5kZXJlck9wdGlvbnMgcGx1Z2luPXtzZWxlY3RlZFBsdWdpbn0gLz5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGVhcmFuY2VUYWI7XG4iXX0= */",
18
+ styles: "text-align:center;padding:25px;label:noComponentsMessage;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcGVhcmFuY2VUYWIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWF5QiIsImZpbGUiOiJBcHBlYXJhbmNlVGFiLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGkxOG4gfSBmcm9tIFwiQHdlYmlueS9hcHAvaTE4bi9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL2Nzc1wiO1xuaW1wb3J0IHsgdmFsaWRhdGlvbiB9IGZyb20gXCJAd2ViaW55L3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVzZUJpbmQgfSBmcm9tIFwiQHdlYmlueS9mb3JtXCI7XG5pbXBvcnQgeyBSZW5kZXJlck9wdGlvbnMgfSBmcm9tIFwiLi9BcHBlYXJhbmNlVGFiL1JlbmRlcmVyT3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgdXNlUmVuZGVyZXJQbHVnaW5zIH0gZnJvbSBcIi4vdXNlUmVuZGVyZXJQbHVnaW5zLmpzXCI7XG5pbXBvcnQgeyB1c2VNb2RlbEZpZWxkIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Nb2RlbEZpZWxkUHJvdmlkZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IFJhZGlvR3JvdXAsIFRleHQsIEdyaWQsIEhlYWRpbmcgfSBmcm9tIFwiQHdlYmlueS9hZG1pbi11aVwiO1xuXG5jb25zdCB0ID0gaTE4bi5ucyhcImFwcC1oZWFkbGVzcy1jbXMvYWRtaW4vY29udGVudC1tb2RlbC1lZGl0b3IvdGFicy9hcHBlYXJhbmNlLXRhYlwiKTtcblxuY29uc3Qgc3R5bGUgPSB7XG4gICAgbm9Db21wb25lbnRzTWVzc2FnZTogY3NzKHtcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICBwYWRkaW5nOiAyNVxuICAgIH0pLFxuICAgIHJhZGlvQ29udGFpbmVyOiBjc3Moe1xuICAgICAgICBtYXJnaW5Cb3R0b206IDEwLFxuICAgICAgICBkaXNwbGF5OiBcImZsZXhcIlxuICAgIH0pXG59O1xuXG5jb25zdCBBcHBlYXJhbmNlVGFiID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlbmRlcmVycyA9IHVzZVJlbmRlcmVyUGx1Z2lucygpO1xuICAgIGNvbnN0IHsgZmllbGQgfSA9IHVzZU1vZGVsRmllbGQoKTtcblxuICAgIGNvbnN0IHJlbmRlcmVyTmFtZSA9IHVzZUJpbmQoe1xuICAgICAgICBuYW1lOiBcInJlbmRlcmVyLm5hbWVcIixcbiAgICAgICAgdmFsaWRhdGU6IHZhbGlkYXRpb24uY3JlYXRlKFwicmVxdWlyZWRcIilcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlbGVjdGVkUGx1Z2luID0gcmVuZGVyZXJOYW1lLnZhbHVlXG4gICAgICAgID8gcmVuZGVyZXJzLmZpbmQocGwgPT4gcGwucmVuZGVyZXIucmVuZGVyZXJOYW1lID09PSByZW5kZXJlck5hbWUudmFsdWUpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHJlbmRlcmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxHcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkLkNvbHVtblxuICAgICAgICAgICAgICAgICAgICBzcGFuPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZS5ub0NvbXBvbmVudHNNZXNzYWdlfVxuICAgICAgICAgICAgICAgID57dGBUaGVyZSBhcmUgbm8gY29tcG9uZW50cyB0aGF0IGNhbiByZW5kZXIgdGhpcyBmaWVsZC5gfTwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCByZW5kZXIgcGx1Z2luIGlzIG5vIGxvbmdlciBhdmFpbGFibGUsIHNlbGVjdCB0aGUgZmlyc3QgYXZhaWxhYmxlIG9uZS5cbiAgICAgICAgaWYgKHNlbGVjdGVkUGx1Z2luKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVuZGVyZXJzWzBdKSB7XG4gICAgICAgICAgICByZW5kZXJlck5hbWUub25DaGFuZ2UocmVuZGVyZXJzWzBdLnJlbmRlcmVyLnJlbmRlcmVyTmFtZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmluZm8oYE5vIHJlbmRlcmVycyBmb3IgZmllbGQgJHtmaWVsZC5maWVsZElkfSBmb3VuZC5gLCBmaWVsZCk7XG4gICAgfSwgW2ZpZWxkLmlkLCBmaWVsZC5saXN0LCBmaWVsZC5wcmVkZWZpbmVkVmFsdWVzPy5lbmFibGVkLCBzZWxlY3RlZFBsdWdpbl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxHcmlkPlxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkLkNvbHVtbiBzcGFuPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGVhZGluZyBsZXZlbD17NX0+RmllbGQgcmVuZGVyZXI8L0hlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBzaXplPXtcInNtXCJ9PkNob29zZSBhIGNvbXBvbmVudCB0aGF0IHdpbGwgcmVuZGVyIHRoZSBmaWVsZC48L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkLkNvbHVtbiBzcGFuPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJtYi14bFwifT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVuZGVyZXJOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcz17cmVuZGVyZXJzLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5yZW5kZXJlci5yZW5kZXJlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5yZW5kZXJlci5yZW5kZXJlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPXtcImRpdlwifSBzaXplPXtcIm1kXCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ucmVuZGVyZXIubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9e1wiZGl2XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPXtcInNtXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1widGV4dC1zbSB0ZXh0LW5ldXRyYWwtc3Ryb25nIHRleHQtd3JhcFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5yZW5kZXJlci5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQuQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8UmVuZGVyZXJPcHRpb25zIHBsdWdpbj17c2VsZWN0ZWRQbHVnaW59IC8+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBcHBlYXJhbmNlVGFiO1xuIl19 */",
19
19
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
20
20
  }),
21
21
  radioContainer: /*#__PURE__*/css(process.env.NODE_ENV === "production" ? {
@@ -23,7 +23,7 @@ const style = {
23
23
  styles: "margin-bottom:10px;display:flex"
24
24
  } : {
25
25
  name: "4btape-radioContainer",
26
- styles: "margin-bottom:10px;display:flex;label:radioContainer;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcGVhcmFuY2VUYWIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCb0IiLCJmaWxlIjoiQXBwZWFyYW5jZVRhYi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSBcIkB3ZWJpbnkvYXBwL2kxOG4vaW5kZXguanNcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcbmltcG9ydCB7IHZhbGlkYXRpb24gfSBmcm9tIFwiQHdlYmlueS92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1c2VCaW5kIH0gZnJvbSBcIkB3ZWJpbnkvZm9ybVwiO1xuaW1wb3J0IHsgUmVuZGVyZXJPcHRpb25zIH0gZnJvbSBcIi4vQXBwZWFyYW5jZVRhYi9SZW5kZXJlck9wdGlvbnMuanNcIjtcbmltcG9ydCB7IHVzZVJlbmRlcmVyUGx1Z2lucyB9IGZyb20gXCIuL3VzZVJlbmRlcmVyUGx1Z2lucy5qc1wiO1xuaW1wb3J0IHsgdXNlTW9kZWxGaWVsZCB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvTW9kZWxGaWVsZFByb3ZpZGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBSYWRpb0dyb3VwLCBUZXh0LCBHcmlkLCBIZWFkaW5nIH0gZnJvbSBcIkB3ZWJpbnkvYWRtaW4tdWlcIjtcblxuY29uc3QgdCA9IGkxOG4ubnMoXCJhcHAtaGVhZGxlc3MtY21zL2FkbWluL2NvbnRlbnQtbW9kZWwtZWRpdG9yL3RhYnMvYXBwZWFyYW5jZS10YWJcIik7XG5cbmNvbnN0IHN0eWxlID0ge1xuICAgIG5vQ29tcG9uZW50c01lc3NhZ2U6IGNzcyh7XG4gICAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcbiAgICAgICAgcGFkZGluZzogMjVcbiAgICB9KSxcbiAgICByYWRpb0NvbnRhaW5lcjogY3NzKHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiAxMCxcbiAgICAgICAgZGlzcGxheTogXCJmbGV4XCJcbiAgICB9KVxufTtcblxuY29uc3QgQXBwZWFyYW5jZVRhYiA9ICgpID0+IHtcbiAgICBjb25zdCByZW5kZXJlcnMgPSB1c2VSZW5kZXJlclBsdWdpbnMoKTtcbiAgICBjb25zdCB7IGZpZWxkIH0gPSB1c2VNb2RlbEZpZWxkKCk7XG5cbiAgICBjb25zdCByZW5kZXJlck5hbWUgPSB1c2VCaW5kKHtcbiAgICAgICAgbmFtZTogXCJyZW5kZXJlci5uYW1lXCIsXG4gICAgICAgIHZhbGlkYXRlOiB2YWxpZGF0aW9uLmNyZWF0ZShcInJlcXVpcmVkXCIpXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZWxlY3RlZFBsdWdpbiA9IHJlbmRlcmVyTmFtZS52YWx1ZVxuICAgICAgICA/IHJlbmRlcmVycy5maW5kKHBsID0+IHBsLnJlbmRlcmVyLnJlbmRlcmVyTmFtZSA9PT0gcmVuZGVyZXJOYW1lLnZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChyZW5kZXJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8R3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW5cbiAgICAgICAgICAgICAgICAgICAgc3Bhbj17MTJ9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGUubm9Db21wb25lbnRzTWVzc2FnZX1cbiAgICAgICAgICAgICAgICA+e3RgVGhlcmUgYXJlIG5vIGNvbXBvbmVudHMgdGhhdCBjYW4gcmVuZGVyIHRoaXMgZmllbGQuYH08L0dyaWQuQ29sdW1uPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIElmIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmVuZGVyIHBsdWdpbiBpcyBubyBsb25nZXIgYXZhaWxhYmxlLCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZSBvbmUuXG4gICAgICAgIGlmIChzZWxlY3RlZFBsdWdpbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlbmRlcmVyc1swXSkge1xuICAgICAgICAgICAgcmVuZGVyZXJOYW1lLm9uQ2hhbmdlKHJlbmRlcmVyc1swXS5yZW5kZXJlci5yZW5kZXJlck5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5pbmZvKGBObyByZW5kZXJlcnMgZm9yIGZpZWxkICR7ZmllbGQuZmllbGRJZH0gZm91bmQuYCwgZmllbGQpO1xuICAgIH0sIFtmaWVsZC5pZCwgZmllbGQubGlzdCwgZmllbGQucHJlZGVmaW5lZFZhbHVlcz8uZW5hYmxlZCwgc2VsZWN0ZWRQbHVnaW5dKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8R3JpZD5cbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW4gc3Bhbj17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEhlYWRpbmcgbGV2ZWw9ezV9PkZpZWxkIHJlbmRlcmVyPC9IZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgc2l6ZT17XCJzbVwifT5DaG9vc2UgYSBjb21wb25lbnQgdGhhdCB3aWxsIHJlbmRlciB0aGUgZmllbGQuPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQuQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW4gc3Bhbj17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wibWIteGxcIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLnJlbmRlcmVyTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM9e3JlbmRlcmVycy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0ucmVuZGVyZXIucmVuZGVyZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0ucmVuZGVyZXIucmVuZGVyZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz17XCJkaXZcIn0gc2l6ZT17XCJtZFwifT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLnJlbmRlcmVyLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzPXtcImRpdlwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17XCJzbVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcInRleHQtc20gdGV4dC1uZXV0cmFsLXN0cm9uZ1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5yZW5kZXJlci5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQuQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8UmVuZGVyZXJPcHRpb25zIHBsdWdpbj17c2VsZWN0ZWRQbHVnaW59IC8+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBcHBlYXJhbmNlVGFiO1xuIl19 */",
26
+ styles: "margin-bottom:10px;display:flex;label:radioContainer;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcGVhcmFuY2VUYWIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCb0IiLCJmaWxlIjoiQXBwZWFyYW5jZVRhYi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSBcIkB3ZWJpbnkvYXBwL2kxOG4vaW5kZXguanNcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcbmltcG9ydCB7IHZhbGlkYXRpb24gfSBmcm9tIFwiQHdlYmlueS92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1c2VCaW5kIH0gZnJvbSBcIkB3ZWJpbnkvZm9ybVwiO1xuaW1wb3J0IHsgUmVuZGVyZXJPcHRpb25zIH0gZnJvbSBcIi4vQXBwZWFyYW5jZVRhYi9SZW5kZXJlck9wdGlvbnMuanNcIjtcbmltcG9ydCB7IHVzZVJlbmRlcmVyUGx1Z2lucyB9IGZyb20gXCIuL3VzZVJlbmRlcmVyUGx1Z2lucy5qc1wiO1xuaW1wb3J0IHsgdXNlTW9kZWxGaWVsZCB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvTW9kZWxGaWVsZFByb3ZpZGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBSYWRpb0dyb3VwLCBUZXh0LCBHcmlkLCBIZWFkaW5nIH0gZnJvbSBcIkB3ZWJpbnkvYWRtaW4tdWlcIjtcblxuY29uc3QgdCA9IGkxOG4ubnMoXCJhcHAtaGVhZGxlc3MtY21zL2FkbWluL2NvbnRlbnQtbW9kZWwtZWRpdG9yL3RhYnMvYXBwZWFyYW5jZS10YWJcIik7XG5cbmNvbnN0IHN0eWxlID0ge1xuICAgIG5vQ29tcG9uZW50c01lc3NhZ2U6IGNzcyh7XG4gICAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcbiAgICAgICAgcGFkZGluZzogMjVcbiAgICB9KSxcbiAgICByYWRpb0NvbnRhaW5lcjogY3NzKHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiAxMCxcbiAgICAgICAgZGlzcGxheTogXCJmbGV4XCJcbiAgICB9KVxufTtcblxuY29uc3QgQXBwZWFyYW5jZVRhYiA9ICgpID0+IHtcbiAgICBjb25zdCByZW5kZXJlcnMgPSB1c2VSZW5kZXJlclBsdWdpbnMoKTtcbiAgICBjb25zdCB7IGZpZWxkIH0gPSB1c2VNb2RlbEZpZWxkKCk7XG5cbiAgICBjb25zdCByZW5kZXJlck5hbWUgPSB1c2VCaW5kKHtcbiAgICAgICAgbmFtZTogXCJyZW5kZXJlci5uYW1lXCIsXG4gICAgICAgIHZhbGlkYXRlOiB2YWxpZGF0aW9uLmNyZWF0ZShcInJlcXVpcmVkXCIpXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZWxlY3RlZFBsdWdpbiA9IHJlbmRlcmVyTmFtZS52YWx1ZVxuICAgICAgICA/IHJlbmRlcmVycy5maW5kKHBsID0+IHBsLnJlbmRlcmVyLnJlbmRlcmVyTmFtZSA9PT0gcmVuZGVyZXJOYW1lLnZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChyZW5kZXJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8R3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW5cbiAgICAgICAgICAgICAgICAgICAgc3Bhbj17MTJ9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGUubm9Db21wb25lbnRzTWVzc2FnZX1cbiAgICAgICAgICAgICAgICA+e3RgVGhlcmUgYXJlIG5vIGNvbXBvbmVudHMgdGhhdCBjYW4gcmVuZGVyIHRoaXMgZmllbGQuYH08L0dyaWQuQ29sdW1uPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIElmIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmVuZGVyIHBsdWdpbiBpcyBubyBsb25nZXIgYXZhaWxhYmxlLCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZSBvbmUuXG4gICAgICAgIGlmIChzZWxlY3RlZFBsdWdpbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlbmRlcmVyc1swXSkge1xuICAgICAgICAgICAgcmVuZGVyZXJOYW1lLm9uQ2hhbmdlKHJlbmRlcmVyc1swXS5yZW5kZXJlci5yZW5kZXJlck5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5pbmZvKGBObyByZW5kZXJlcnMgZm9yIGZpZWxkICR7ZmllbGQuZmllbGRJZH0gZm91bmQuYCwgZmllbGQpO1xuICAgIH0sIFtmaWVsZC5pZCwgZmllbGQubGlzdCwgZmllbGQucHJlZGVmaW5lZFZhbHVlcz8uZW5hYmxlZCwgc2VsZWN0ZWRQbHVnaW5dKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8R3JpZD5cbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW4gc3Bhbj17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEhlYWRpbmcgbGV2ZWw9ezV9PkZpZWxkIHJlbmRlcmVyPC9IZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgc2l6ZT17XCJzbVwifT5DaG9vc2UgYSBjb21wb25lbnQgdGhhdCB3aWxsIHJlbmRlciB0aGUgZmllbGQuPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQuQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW4gc3Bhbj17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wibWIteGxcIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLnJlbmRlcmVyTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM9e3JlbmRlcmVycy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0ucmVuZGVyZXIucmVuZGVyZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0ucmVuZGVyZXIucmVuZGVyZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz17XCJkaXZcIn0gc2l6ZT17XCJtZFwifT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLnJlbmRlcmVyLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzPXtcImRpdlwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17XCJzbVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcInRleHQtc20gdGV4dC1uZXV0cmFsLXN0cm9uZyB0ZXh0LXdyYXBcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ucmVuZGVyZXIuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9HcmlkLkNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgPFJlbmRlcmVyT3B0aW9ucyBwbHVnaW49e3NlbGVjdGVkUGx1Z2lufSAvPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXBwZWFyYW5jZVRhYjtcbiJdfQ== */",
27
27
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
28
28
  })
29
29
  };
@@ -74,7 +74,7 @@ const AppearanceTab = () => {
74
74
  }, item.renderer.name), /*#__PURE__*/React.createElement(Text, {
75
75
  as: "div",
76
76
  size: "sm",
77
- className: "text-sm text-neutral-strong"
77
+ className: "text-sm text-neutral-strong text-wrap"
78
78
  }, item.renderer.description))
79
79
  }))
80
80
  })))), /*#__PURE__*/React.createElement(RendererOptions, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","i18n","css","validation","useBind","RendererOptions","useRendererPlugins","useModelField","RadioGroup","Text","Grid","Heading","t","ns","style","noComponentsMessage","process","env","NODE_ENV","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","radioContainer","AppearanceTab","renderers","field","rendererName","validate","create","selectedPlugin","value","find","pl","renderer","undefined","length","createElement","Column","span","className","onChange","console","info","fieldId","id","list","predefinedValues","enabled","Fragment","level","size","Object","assign","items","map","item","label","as","description","plugin"],"sources":["AppearanceTab.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { css } from \"@emotion/css\";\nimport { validation } from \"@webiny/validation\";\nimport { useBind } from \"@webiny/form\";\nimport { RendererOptions } from \"./AppearanceTab/RendererOptions.js\";\nimport { useRendererPlugins } from \"./useRendererPlugins.js\";\nimport { useModelField } from \"~/admin/components/ModelFieldProvider/index.js\";\nimport { RadioGroup, Text, Grid, Heading } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/content-model-editor/tabs/appearance-tab\");\n\nconst style = {\n noComponentsMessage: css({\n textAlign: \"center\",\n padding: 25\n }),\n radioContainer: css({\n marginBottom: 10,\n display: \"flex\"\n })\n};\n\nconst AppearanceTab = () => {\n const renderers = useRendererPlugins();\n const { field } = useModelField();\n\n const rendererName = useBind({\n name: \"renderer.name\",\n validate: validation.create(\"required\")\n });\n\n const selectedPlugin = rendererName.value\n ? renderers.find(pl => pl.renderer.rendererName === rendererName.value)\n : undefined;\n\n if (renderers.length === 0) {\n return (\n <Grid>\n <Grid.Column\n span={12}\n className={style.noComponentsMessage}\n >{t`There are no components that can render this field.`}</Grid.Column>\n </Grid>\n );\n }\n\n useEffect(() => {\n // If the currently selected render plugin is no longer available, select the first available one.\n if (selectedPlugin) {\n return;\n }\n\n if (renderers[0]) {\n rendererName.onChange(renderers[0].renderer.rendererName);\n return;\n }\n\n console.info(`No renderers for field ${field.fieldId} found.`, field);\n }, [field.id, field.list, field.predefinedValues?.enabled, selectedPlugin]);\n\n return (\n <>\n <Grid>\n <>\n <Grid.Column span={12}>\n <Heading level={5}>Field renderer</Heading>\n <Text size={\"sm\"}>Choose a component that will render the field.</Text>\n </Grid.Column>\n <Grid.Column span={12}>\n <div className={\"mb-xl\"}>\n <RadioGroup\n {...rendererName}\n items={renderers.map(item => ({\n id: item.renderer.rendererName,\n value: item.renderer.rendererName,\n label: (\n <div>\n <Text as={\"div\"} size={\"md\"}>\n {item.renderer.name}\n </Text>\n <Text\n as={\"div\"}\n size={\"sm\"}\n className={\"text-sm text-neutral-strong\"}\n >\n {item.renderer.description}\n </Text>\n </div>\n )\n }))}\n />\n </div>\n </Grid.Column>\n <RendererOptions plugin={selectedPlugin} />\n </>\n </Grid>\n </>\n );\n};\n\nexport default AppearanceTab;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","i18n","css","validation","useBind","RendererOptions","useRendererPlugins","useModelField","RadioGroup","Text","Grid","Heading","t","ns","style","noComponentsMessage","process","env","NODE_ENV","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","radioContainer","AppearanceTab","renderers","field","rendererName","validate","create","selectedPlugin","value","find","pl","renderer","undefined","length","createElement","Column","span","className","onChange","console","info","fieldId","id","list","predefinedValues","enabled","Fragment","level","size","Object","assign","items","map","item","label","as","description","plugin"],"sources":["AppearanceTab.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { css } from \"@emotion/css\";\nimport { validation } from \"@webiny/validation\";\nimport { useBind } from \"@webiny/form\";\nimport { RendererOptions } from \"./AppearanceTab/RendererOptions.js\";\nimport { useRendererPlugins } from \"./useRendererPlugins.js\";\nimport { useModelField } from \"~/admin/components/ModelFieldProvider/index.js\";\nimport { RadioGroup, Text, Grid, Heading } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/content-model-editor/tabs/appearance-tab\");\n\nconst style = {\n noComponentsMessage: css({\n textAlign: \"center\",\n padding: 25\n }),\n radioContainer: css({\n marginBottom: 10,\n display: \"flex\"\n })\n};\n\nconst AppearanceTab = () => {\n const renderers = useRendererPlugins();\n const { field } = useModelField();\n\n const rendererName = useBind({\n name: \"renderer.name\",\n validate: validation.create(\"required\")\n });\n\n const selectedPlugin = rendererName.value\n ? renderers.find(pl => pl.renderer.rendererName === rendererName.value)\n : undefined;\n\n if (renderers.length === 0) {\n return (\n <Grid>\n <Grid.Column\n span={12}\n className={style.noComponentsMessage}\n >{t`There are no components that can render this field.`}</Grid.Column>\n </Grid>\n );\n }\n\n useEffect(() => {\n // If the currently selected render plugin is no longer available, select the first available one.\n if (selectedPlugin) {\n return;\n }\n\n if (renderers[0]) {\n rendererName.onChange(renderers[0].renderer.rendererName);\n return;\n }\n\n console.info(`No renderers for field ${field.fieldId} found.`, field);\n }, [field.id, field.list, field.predefinedValues?.enabled, selectedPlugin]);\n\n return (\n <>\n <Grid>\n <>\n <Grid.Column span={12}>\n <Heading level={5}>Field renderer</Heading>\n <Text size={\"sm\"}>Choose a component that will render the field.</Text>\n </Grid.Column>\n <Grid.Column span={12}>\n <div className={\"mb-xl\"}>\n <RadioGroup\n {...rendererName}\n items={renderers.map(item => ({\n id: item.renderer.rendererName,\n value: item.renderer.rendererName,\n label: (\n <div>\n <Text as={\"div\"} size={\"md\"}>\n {item.renderer.name}\n </Text>\n <Text\n as={\"div\"}\n size={\"sm\"}\n className={\"text-sm text-neutral-strong text-wrap\"}\n >\n {item.renderer.description}\n </Text>\n </div>\n )\n }))}\n />\n </div>\n </Grid.Column>\n <RendererOptions plugin={selectedPlugin} />\n </>\n </Grid>\n </>\n );\n};\n\nexport default AppearanceTab;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import type { CmsModelField } from "../../../../types.js";
3
+ interface FieldSettingsTabsProps {
4
+ shadowField: CmsModelField;
5
+ predefinedValuesTabEnabled: boolean;
6
+ showValidatorsTab: boolean;
7
+ isSubtypeField: boolean;
8
+ }
9
+ export declare const FieldSettingsTabs: ({ shadowField, predefinedValuesTabEnabled, showValidatorsTab, isSubtypeField }: FieldSettingsTabsProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,69 @@
1
+ import React from "react";
2
+ import { Tabs } from "@webiny/admin-ui";
3
+ import { i18n } from "@webiny/app/i18n/index.js";
4
+ import GeneralTab from "./GeneralTab.js";
5
+ import AppearanceTab from "./AppearanceTab.js";
6
+ import PredefinedValues from "./PredefinedValues.js";
7
+ import { ValidationTab } from "./ValidationTab/index.js";
8
+ import { PermissionsTab } from "./PermissionsTab/PermissionsTab.js";
9
+ import { RulesTab } from "./RulesTab/RulesTab.js";
10
+ import { ModelFieldProvider } from "../../ModelFieldProvider/index.js";
11
+ import { useModelEditor } from "../../ContentModelEditor/useModelEditor.js";
12
+ const t = i18n.namespace("app-headless-cms/admin/components/editor");
13
+ export const FieldSettingsTabs = ({
14
+ shadowField,
15
+ predefinedValuesTabEnabled,
16
+ showValidatorsTab,
17
+ isSubtypeField
18
+ }) => {
19
+ const {
20
+ fieldOptions
21
+ } = useModelEditor();
22
+ return /*#__PURE__*/React.createElement(ModelFieldProvider, {
23
+ field: shadowField
24
+ }, /*#__PURE__*/React.createElement(Tabs, {
25
+ spacing: "lg",
26
+ size: "md",
27
+ separator: true,
28
+ tabs: [/*#__PURE__*/React.createElement(Tabs.Tab, {
29
+ key: "general",
30
+ trigger: t`General`,
31
+ value: "general",
32
+ content: /*#__PURE__*/React.createElement(GeneralTab, null)
33
+ }), /*#__PURE__*/React.createElement(Tabs.Tab, {
34
+ key: "predefined",
35
+ trigger: t`Predefined values`,
36
+ value: "predefined",
37
+ disabled: !predefinedValuesTabEnabled,
38
+ content: /*#__PURE__*/React.createElement(PredefinedValues, null)
39
+ }), /*#__PURE__*/React.createElement(Tabs.Tab, {
40
+ key: "validations",
41
+ trigger: t`Validations`,
42
+ value: "validations",
43
+ content: /*#__PURE__*/React.createElement(ValidationTab, {
44
+ field: shadowField
45
+ }),
46
+ visible: showValidatorsTab
47
+ }), /*#__PURE__*/React.createElement(Tabs.Tab, {
48
+ key: "appearance",
49
+ trigger: t`Appearance`,
50
+ value: "Appearance",
51
+ content: /*#__PURE__*/React.createElement(AppearanceTab, null),
52
+ disabled: isSubtypeField
53
+ }), /*#__PURE__*/React.createElement(Tabs.Tab, {
54
+ key: "permissions",
55
+ trigger: t`Permissions`,
56
+ value: "permissions",
57
+ content: /*#__PURE__*/React.createElement(PermissionsTab, null)
58
+ }), /*#__PURE__*/React.createElement(Tabs.Tab, {
59
+ key: "rules",
60
+ trigger: t`Rules`,
61
+ value: "rules",
62
+ content: /*#__PURE__*/React.createElement(RulesTab, {
63
+ fieldOptions: fieldOptions
64
+ })
65
+ })]
66
+ }));
67
+ };
68
+
69
+ //# sourceMappingURL=FieldSettingsTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Tabs","i18n","GeneralTab","AppearanceTab","PredefinedValues","ValidationTab","PermissionsTab","RulesTab","ModelFieldProvider","useModelEditor","t","namespace","FieldSettingsTabs","shadowField","predefinedValuesTabEnabled","showValidatorsTab","isSubtypeField","fieldOptions","createElement","field","spacing","size","separator","tabs","Tab","key","trigger","value","content","disabled","visible"],"sources":["FieldSettingsTabs.tsx"],"sourcesContent":["import React from \"react\";\nimport { Tabs } from \"@webiny/admin-ui\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport type { CmsModelField } from \"~/types.js\";\nimport GeneralTab from \"./GeneralTab.js\";\nimport AppearanceTab from \"./AppearanceTab.js\";\nimport PredefinedValues from \"./PredefinedValues.js\";\nimport { ValidationTab } from \"./ValidationTab/index.js\";\nimport { PermissionsTab } from \"./PermissionsTab/PermissionsTab.js\";\nimport { RulesTab } from \"./RulesTab/RulesTab.js\";\nimport { ModelFieldProvider } from \"~/admin/components/ModelFieldProvider/index.js\";\nimport { useModelEditor } from \"~/admin/components/ContentModelEditor/useModelEditor.js\";\n\nconst t = i18n.namespace(\"app-headless-cms/admin/components/editor\");\n\ninterface FieldSettingsTabsProps {\n shadowField: CmsModelField;\n predefinedValuesTabEnabled: boolean;\n showValidatorsTab: boolean;\n isSubtypeField: boolean;\n}\n\nexport const FieldSettingsTabs = ({\n shadowField,\n predefinedValuesTabEnabled,\n showValidatorsTab,\n isSubtypeField\n}: FieldSettingsTabsProps) => {\n const { fieldOptions } = useModelEditor();\n\n return (\n <ModelFieldProvider field={shadowField}>\n <Tabs\n spacing={\"lg\"}\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"general\"}\n trigger={t`General`}\n value={\"general\"}\n content={<GeneralTab />}\n />,\n <Tabs.Tab\n key={\"predefined\"}\n trigger={t`Predefined values`}\n value={\"predefined\"}\n disabled={!predefinedValuesTabEnabled}\n content={<PredefinedValues />}\n />,\n <Tabs.Tab\n key={\"validations\"}\n trigger={t`Validations`}\n value={\"validations\"}\n content={<ValidationTab field={shadowField} />}\n visible={showValidatorsTab}\n />,\n <Tabs.Tab\n key={\"appearance\"}\n trigger={t`Appearance`}\n value={\"Appearance\"}\n content={<AppearanceTab />}\n disabled={isSubtypeField}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={t`Permissions`}\n value={\"permissions\"}\n content={<PermissionsTab />}\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={t`Rules`}\n value={\"rules\"}\n content={<RulesTab fieldOptions={fieldOptions} />}\n />\n ]}\n />\n </ModelFieldProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,IAAI,QAAQ,2BAA2B;AAEhD,OAAOC,UAAU;AACjB,OAAOC,aAAa;AACpB,OAAOC,gBAAgB;AACvB,SAASC,aAAa;AACtB,SAASC,cAAc;AACvB,SAASC,QAAQ;AACjB,SAASC,kBAAkB;AAC3B,SAASC,cAAc;AAEvB,MAAMC,CAAC,GAAGT,IAAI,CAACU,SAAS,CAAC,0CAA0C,CAAC;AASpE,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAC9BC,WAAW;EACXC,0BAA0B;EAC1BC,iBAAiB;EACjBC;AACoB,CAAC,KAAK;EAC1B,MAAM;IAAEC;EAAa,CAAC,GAAGR,cAAc,CAAC,CAAC;EAEzC,oBACIV,KAAA,CAAAmB,aAAA,CAACV,kBAAkB;IAACW,KAAK,EAAEN;EAAY,gBACnCd,KAAA,CAAAmB,aAAA,CAAClB,IAAI;IACDoB,OAAO,EAAE,IAAK;IACdC,IAAI,EAAE,IAAK;IACXC,SAAS;IACTC,IAAI,EAAE,cACFxB,KAAA,CAAAmB,aAAA,CAAClB,IAAI,CAACwB,GAAG;MACLC,GAAG,EAAE,SAAU;MACfC,OAAO,EAAEhB,CAAC,SAAU;MACpBiB,KAAK,EAAE,SAAU;MACjBC,OAAO,eAAE7B,KAAA,CAAAmB,aAAA,CAAChB,UAAU,MAAE;IAAE,CAC3B,CAAC,eACFH,KAAA,CAAAmB,aAAA,CAAClB,IAAI,CAACwB,GAAG;MACLC,GAAG,EAAE,YAAa;MAClBC,OAAO,EAAEhB,CAAC,mBAAoB;MAC9BiB,KAAK,EAAE,YAAa;MACpBE,QAAQ,EAAE,CAACf,0BAA2B;MACtCc,OAAO,eAAE7B,KAAA,CAAAmB,aAAA,CAACd,gBAAgB,MAAE;IAAE,CACjC,CAAC,eACFL,KAAA,CAAAmB,aAAA,CAAClB,IAAI,CAACwB,GAAG;MACLC,GAAG,EAAE,aAAc;MACnBC,OAAO,EAAEhB,CAAC,aAAc;MACxBiB,KAAK,EAAE,aAAc;MACrBC,OAAO,eAAE7B,KAAA,CAAAmB,aAAA,CAACb,aAAa;QAACc,KAAK,EAAEN;MAAY,CAAE,CAAE;MAC/CiB,OAAO,EAAEf;IAAkB,CAC9B,CAAC,eACFhB,KAAA,CAAAmB,aAAA,CAAClB,IAAI,CAACwB,GAAG;MACLC,GAAG,EAAE,YAAa;MAClBC,OAAO,EAAEhB,CAAC,YAAa;MACvBiB,KAAK,EAAE,YAAa;MACpBC,OAAO,eAAE7B,KAAA,CAAAmB,aAAA,CAACf,aAAa,MAAE,CAAE;MAC3B0B,QAAQ,EAAEb;IAAe,CAC5B,CAAC,eACFjB,KAAA,CAAAmB,aAAA,CAAClB,IAAI,CAACwB,GAAG;MACLC,GAAG,EAAE,aAAc;MACnBC,OAAO,EAAEhB,CAAC,aAAc;MACxBiB,KAAK,EAAE,aAAc;MACrBC,OAAO,eAAE7B,KAAA,CAAAmB,aAAA,CAACZ,cAAc,MAAE;IAAE,CAC/B,CAAC,eACFP,KAAA,CAAAmB,aAAA,CAAClB,IAAI,CAACwB,GAAG;MACLC,GAAG,EAAE,OAAQ;MACbC,OAAO,EAAEhB,CAAC,OAAQ;MAClBiB,KAAK,EAAE,OAAQ;MACfC,OAAO,eAAE7B,KAAA,CAAAmB,aAAA,CAACX,QAAQ;QAACU,YAAY,EAAEA;MAAa,CAAE;IAAE,CACrD,CAAC;EACJ,CACL,CACe,CAAC;AAE7B,CAAC","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ import zod from "zod";
1
2
  import React, { useEffect, useCallback, useRef, useMemo } from "react";
2
3
  import camelCase from "lodash/camelCase.js";
3
4
  import { Grid, Switch, Input, Textarea } from "@webiny/admin-ui";
@@ -7,6 +8,11 @@ import { useForm, Bind } from "@webiny/form";
7
8
  import { useModelFieldEditor } from "../index.js";
8
9
  import { useModelEditor } from "../../../hooks/index.js";
9
10
  import { useModelField } from "../../../hooks/index.js";
11
+ const fieldIdSchema = zod.string().max(100).regex(/^!?[a-zA-Z]/, {
12
+ message: `Must not start with a number.`
13
+ }).regex(/^(^[a-zA-Z0-9]+)$/, {
14
+ message: `Must be alphanumeric string.`
15
+ });
10
16
  const GeneralTab = () => {
11
17
  const form = useForm();
12
18
  const {
@@ -17,9 +23,10 @@ const GeneralTab = () => {
17
23
  const {
18
24
  data: contentModel
19
25
  } = useModelEditor();
26
+ const editorContext = useModelFieldEditor();
20
27
  const {
21
28
  getField
22
- } = useModelFieldEditor();
29
+ } = editorContext;
23
30
 
24
31
  // Had problems with autofocusing the "label" field. A couple of comments on this.
25
32
  // 1. It's probably caused by the Tabs component which wraps this component.
@@ -42,22 +49,33 @@ const GeneralTab = () => {
42
49
  baseOnChange(value.trim());
43
50
  }, []);
44
51
  const fieldIdValidator = useCallback(fieldId => {
45
- if (fieldId.trim().toLowerCase() !== "id") {
46
- return true;
52
+ const result = fieldIdSchema.safeParse(fieldId);
53
+ if (!result.success) {
54
+ throw new Error(result.error.issues[0].message);
47
55
  }
48
- throw new Error(`Cannot use "id" as Field ID.`);
49
56
  }, []);
50
57
  const uniqueFieldIdValidator = useCallback(fieldId => {
58
+ // Check the current context.
51
59
  const existingField = getField({
52
60
  fieldId
53
61
  });
54
- if (!existingField) {
55
- return false;
62
+ if (existingField && existingField.id !== field.id) {
63
+ throw new Error("Please enter a unique Field ID.");
56
64
  }
57
- if (existingField.id === field.id) {
58
- return true;
65
+
66
+ // If we're inside a layout field (e.g. a tab), also check the parent context
67
+ // where hoisted fields live. A layout field context has a parent with no
68
+ // registered field type plugin (synthetic parent).
69
+ const parent = editorContext.parentEditorContext;
70
+ if (parent && editorContext.parent && !editorContext.getFieldPlugin(editorContext.parent.type)) {
71
+ const parentField = parent.getField({
72
+ fieldId
73
+ });
74
+ if (parentField && parentField.id !== field.id) {
75
+ throw new Error("Please enter a unique Field ID.");
76
+ }
59
77
  }
60
- throw new Error("Please enter a unique Field ID.");
78
+ return true;
61
79
  }, []);
62
80
  let additionalSettings = null;
63
81
  if (typeof fieldPlugin.field.renderSettings === "function") {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useCallback","useRef","useMemo","camelCase","Grid","Switch","Input","Textarea","validation","Tags","useForm","Bind","useModelFieldEditor","useModelEditor","useModelField","GeneralTab","form","field","fieldPlugin","inputRef","data","contentModel","getField","setTimeout","current","focus","afterChangeLabel","value","setValue","beforeChangeFieldId","baseOnChange","trim","fieldIdValidator","fieldId","toLowerCase","Error","uniqueFieldIdValidator","existingField","id","additionalSettings","renderSettings","predefinedValuesEnabled","allowPredefinedValues","renderPredefinedValues","createElement","Fragment","gap","Column","span","name","validators","create","afterChange","label","size","beforeChange","listLabel","disabled","allowList","description","protectedTags","tags"],"sources":["GeneralTab.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef, useMemo } from \"react\";\nimport camelCase from \"lodash/camelCase.js\";\nimport { Grid, Switch, Input, Textarea } from \"@webiny/admin-ui\";\nimport { validation } from \"@webiny/validation\";\nimport { Tags } from \"@webiny/ui/Tags/index.js\";\nimport { useForm, Bind } from \"@webiny/form\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor/index.js\";\nimport { useModelEditor } from \"~/admin/hooks/index.js\";\nimport { useModelField } from \"~/admin/hooks/index.js\";\n\nconst GeneralTab = () => {\n const form = useForm();\n const { field, fieldPlugin } = useModelField();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { data: contentModel } = useModelEditor();\n const { getField } = useModelFieldEditor();\n\n // Had problems with autofocusing the \"label\" field. A couple of comments on this.\n // 1. It's probably caused by the Tabs component which wraps this component.\n // 2. It seems that the \"autoFocus\" prop on the Input doesn't work. I can't see it attached in the actual DOM.\n // 3. This works, but it's not 100%. Visually, the cursor is frozen, and that's probably caused by a bug / design\n // in the RMWC / Material library. If you were to click somewhere on screen, and then apply focus, then\n // it seems it's behaving correctly. ¯\\_(ツ)_/¯\n useEffect(() => {\n setTimeout(() => {\n if (!inputRef.current) {\n return;\n }\n inputRef.current.focus();\n }, /* The value of 400 was determined by manual testing. */ 400);\n }, []);\n\n const afterChangeLabel = useCallback((value: string) => {\n form.setValue(\"fieldId\", camelCase(value));\n }, []);\n\n const beforeChangeFieldId = useCallback(\n (value: string, baseOnChange: (value: string) => void) => {\n baseOnChange(value.trim());\n },\n []\n );\n\n const fieldIdValidator = useCallback((fieldId: string) => {\n if (fieldId.trim().toLowerCase() !== \"id\") {\n return true;\n }\n\n throw new Error(`Cannot use \"id\" as Field ID.`);\n }, []);\n\n const uniqueFieldIdValidator = useCallback((fieldId: string) => {\n const existingField = getField({ fieldId });\n if (!existingField) {\n return false;\n }\n\n if (existingField.id === field.id) {\n return true;\n }\n throw new Error(\"Please enter a unique Field ID.\");\n }, []);\n\n let additionalSettings: React.ReactNode | null = null;\n if (typeof fieldPlugin.field.renderSettings === \"function\") {\n additionalSettings = fieldPlugin.field.renderSettings({\n afterChangeLabel,\n uniqueFieldIdValidator,\n contentModel\n });\n }\n\n const predefinedValuesEnabled = useMemo(\n (): boolean =>\n (fieldPlugin.field.allowPredefinedValues || false) &&\n typeof fieldPlugin.field.renderPredefinedValues === \"function\",\n [field.fieldId]\n );\n\n return (\n <>\n <Grid gap={\"comfortable\"}>\n <Grid.Column span={6}>\n <Bind\n name={\"label\"}\n validators={validation.create(\"required\")}\n afterChange={(value: string) => {\n if (field.id) {\n return;\n }\n afterChangeLabel(value);\n }}\n >\n <Input\n label={\"Label\"}\n size={\"lg\"}\n inputRef={inputRef}\n data-testid=\"cms.editor.field.settings.general.label\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={6}>\n <Bind\n name={\"fieldId\"}\n validators={[\n validation.create(\"required\"),\n uniqueFieldIdValidator,\n fieldIdValidator\n ]}\n beforeChange={beforeChangeFieldId}\n >\n <Input\n label={\"Field ID\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.label-${field.id}`}\n />\n </Bind>\n </Grid.Column>\n\n <Grid.Column span={6}>\n <Bind name={\"list\"}>\n <Switch\n label={fieldPlugin.field.listLabel}\n disabled={!fieldPlugin.field.allowList}\n data-testid={`cms.editor.field.settings.general.switch-multiplevalues`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={6}>\n <Bind name={\"predefinedValues.enabled\"}>\n <Switch\n label={\"Use predefined values\"}\n disabled={!predefinedValuesEnabled}\n data-testid={`cms.editor.field.settings.general.switch-predefinedvalues`}\n />\n </Bind>\n </Grid.Column>\n\n <Grid.Column span={12}>\n <Bind name={\"description\"}>\n <Input\n label={\"Description\"}\n description={\"This text will be shown below the label (optional)\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.description`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"note\"}>\n <Input\n label={\"Note\"}\n description={\"This text will be shown below the input (optional)\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.note`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"help\"}>\n <Textarea\n label={\"Help\"}\n description={\"This text will be shown in a tooltip (optional)\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.help`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"tags\"}>\n <Tags\n label={\"Tags\"}\n description={\n \"Field tags are useful for developers and are not visible in the UI (optional)\"\n }\n protectedTags={fieldPlugin.field.tags}\n data-testid={`cms.editor.field.settings.general.tags`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>{additionalSettings}</Grid.Column>\n </Grid>\n </>\n );\n};\n\nexport default GeneralTab;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["zod","React","useEffect","useCallback","useRef","useMemo","camelCase","Grid","Switch","Input","Textarea","validation","Tags","useForm","Bind","useModelFieldEditor","useModelEditor","useModelField","fieldIdSchema","string","max","regex","message","GeneralTab","form","field","fieldPlugin","inputRef","data","contentModel","editorContext","getField","setTimeout","current","focus","afterChangeLabel","value","setValue","beforeChangeFieldId","baseOnChange","trim","fieldIdValidator","fieldId","result","safeParse","success","Error","error","issues","uniqueFieldIdValidator","existingField","id","parent","parentEditorContext","getFieldPlugin","type","parentField","additionalSettings","renderSettings","predefinedValuesEnabled","allowPredefinedValues","renderPredefinedValues","createElement","Fragment","gap","Column","span","name","validators","create","afterChange","label","size","beforeChange","listLabel","disabled","allowList","description","protectedTags","tags"],"sources":["GeneralTab.tsx"],"sourcesContent":["import zod from \"zod\";\nimport React, { useEffect, useCallback, useRef, useMemo } from \"react\";\nimport camelCase from \"lodash/camelCase.js\";\nimport { Grid, Switch, Input, Textarea } from \"@webiny/admin-ui\";\nimport { validation } from \"@webiny/validation\";\nimport { Tags } from \"@webiny/ui/Tags/index.js\";\nimport { useForm, Bind } from \"@webiny/form\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor/index.js\";\nimport { useModelEditor } from \"~/admin/hooks/index.js\";\nimport { useModelField } from \"~/admin/hooks/index.js\";\n\nconst fieldIdSchema = zod\n .string()\n .max(100)\n .regex(/^!?[a-zA-Z]/, {\n message: `Must not start with a number.`\n })\n .regex(/^(^[a-zA-Z0-9]+)$/, {\n message: `Must be alphanumeric string.`\n });\n\nconst GeneralTab = () => {\n const form = useForm();\n const { field, fieldPlugin } = useModelField();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { data: contentModel } = useModelEditor();\n const editorContext = useModelFieldEditor();\n const { getField } = editorContext;\n\n // Had problems with autofocusing the \"label\" field. A couple of comments on this.\n // 1. It's probably caused by the Tabs component which wraps this component.\n // 2. It seems that the \"autoFocus\" prop on the Input doesn't work. I can't see it attached in the actual DOM.\n // 3. This works, but it's not 100%. Visually, the cursor is frozen, and that's probably caused by a bug / design\n // in the RMWC / Material library. If you were to click somewhere on screen, and then apply focus, then\n // it seems it's behaving correctly. ¯\\_(ツ)_/¯\n useEffect(() => {\n setTimeout(() => {\n if (!inputRef.current) {\n return;\n }\n inputRef.current.focus();\n }, /* The value of 400 was determined by manual testing. */ 400);\n }, []);\n\n const afterChangeLabel = useCallback((value: string) => {\n form.setValue(\"fieldId\", camelCase(value));\n }, []);\n\n const beforeChangeFieldId = useCallback(\n (value: string, baseOnChange: (value: string) => void) => {\n baseOnChange(value.trim());\n },\n []\n );\n\n const fieldIdValidator = useCallback((fieldId: string) => {\n const result = fieldIdSchema.safeParse(fieldId);\n\n if (!result.success) {\n throw new Error(result.error.issues[0].message);\n }\n }, []);\n\n const uniqueFieldIdValidator = useCallback((fieldId: string) => {\n // Check the current context.\n const existingField = getField({ fieldId });\n if (existingField && existingField.id !== field.id) {\n throw new Error(\"Please enter a unique Field ID.\");\n }\n\n // If we're inside a layout field (e.g. a tab), also check the parent context\n // where hoisted fields live. A layout field context has a parent with no\n // registered field type plugin (synthetic parent).\n const parent = editorContext.parentEditorContext;\n if (\n parent &&\n editorContext.parent &&\n !editorContext.getFieldPlugin(editorContext.parent.type)\n ) {\n const parentField = parent.getField({ fieldId });\n if (parentField && parentField.id !== field.id) {\n throw new Error(\"Please enter a unique Field ID.\");\n }\n }\n\n return true;\n }, []);\n\n let additionalSettings: React.ReactNode | null = null;\n if (typeof fieldPlugin.field.renderSettings === \"function\") {\n additionalSettings = fieldPlugin.field.renderSettings({\n afterChangeLabel,\n uniqueFieldIdValidator,\n contentModel\n });\n }\n\n const predefinedValuesEnabled = useMemo(\n (): boolean =>\n (fieldPlugin.field.allowPredefinedValues || false) &&\n typeof fieldPlugin.field.renderPredefinedValues === \"function\",\n [field.fieldId]\n );\n\n return (\n <>\n <Grid gap={\"comfortable\"}>\n <Grid.Column span={6}>\n <Bind\n name={\"label\"}\n validators={validation.create(\"required\")}\n afterChange={(value: string) => {\n if (field.id) {\n return;\n }\n afterChangeLabel(value);\n }}\n >\n <Input\n label={\"Label\"}\n size={\"lg\"}\n inputRef={inputRef}\n data-testid=\"cms.editor.field.settings.general.label\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={6}>\n <Bind\n name={\"fieldId\"}\n validators={[\n validation.create(\"required\"),\n uniqueFieldIdValidator,\n fieldIdValidator\n ]}\n beforeChange={beforeChangeFieldId}\n >\n <Input\n label={\"Field ID\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.label-${field.id}`}\n />\n </Bind>\n </Grid.Column>\n\n <Grid.Column span={6}>\n <Bind name={\"list\"}>\n <Switch\n label={fieldPlugin.field.listLabel}\n disabled={!fieldPlugin.field.allowList}\n data-testid={`cms.editor.field.settings.general.switch-multiplevalues`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={6}>\n <Bind name={\"predefinedValues.enabled\"}>\n <Switch\n label={\"Use predefined values\"}\n disabled={!predefinedValuesEnabled}\n data-testid={`cms.editor.field.settings.general.switch-predefinedvalues`}\n />\n </Bind>\n </Grid.Column>\n\n <Grid.Column span={12}>\n <Bind name={\"description\"}>\n <Input\n label={\"Description\"}\n description={\"This text will be shown below the label (optional)\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.description`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"note\"}>\n <Input\n label={\"Note\"}\n description={\"This text will be shown below the input (optional)\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.note`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"help\"}>\n <Textarea\n label={\"Help\"}\n description={\"This text will be shown in a tooltip (optional)\"}\n size={\"lg\"}\n data-testid={`cms.editor.field.settings.general.help`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"tags\"}>\n <Tags\n label={\"Tags\"}\n description={\n \"Field tags are useful for developers and are not visible in the UI (optional)\"\n }\n protectedTags={fieldPlugin.field.tags}\n data-testid={`cms.editor.field.settings.general.tags`}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>{additionalSettings}</Grid.Column>\n </Grid>\n </>\n );\n};\n\nexport default GeneralTab;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const CannotUsePermissions: () => React.JSX.Element;
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { Alert } from "@webiny/admin-ui";
3
+ export const CannotUsePermissions = () => {
4
+ return /*#__PURE__*/React.createElement(Alert, {
5
+ title: "Field Permissions feature is not activated",
6
+ type: "warning"
7
+ }, /*#__PURE__*/React.createElement("strong", null, "Field Permissions"), " feature is not activated.", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), "To learn more, please visit the official\xA0", /*#__PURE__*/React.createElement("a", {
8
+ href: "https://webiny.link/aacl",
9
+ target: "_blank",
10
+ rel: "noreferrer"
11
+ }, "documentation"), ".");
12
+ };
13
+
14
+ //# sourceMappingURL=CannotUsePermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Alert","CannotUsePermissions","createElement","title","type","href","target","rel"],"sources":["CannotUsePermissions.tsx"],"sourcesContent":["import React from \"react\";\nimport { Alert } from \"@webiny/admin-ui\";\n\nexport const CannotUsePermissions = () => {\n return (\n <Alert title={\"Field Permissions feature is not activated\"} type={\"warning\"}>\n <strong>Field Permissions</strong> feature is not activated.\n <br />\n <br />\n To learn more, please visit the official&nbsp;\n <a href={\"https://webiny.link/aacl\"} target={\"_blank\"} rel={\"noreferrer\"}>\n documentation\n </a>\n .\n </Alert>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,KAAK,QAAQ,kBAAkB;AAExC,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACtC,oBACIF,KAAA,CAAAG,aAAA,CAACF,KAAK;IAACG,KAAK,EAAE,4CAA6C;IAACC,IAAI,EAAE;EAAU,gBACxEL,KAAA,CAAAG,aAAA,iBAAQ,mBAAyB,CAAC,8BAClC,eAAAH,KAAA,CAAAG,aAAA,WAAK,CAAC,eACNH,KAAA,CAAAG,aAAA,WAAK,CAAC,gDAEN,eAAAH,KAAA,CAAAG,aAAA;IAAGG,IAAI,EAAE,0BAA2B;IAACC,MAAM,EAAE,QAAS;IAACC,GAAG,EAAE;EAAa,GAAC,eAEvE,CAAC,KAED,CAAC;AAEhB,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import type { FolderLevelPermissionsTarget } from "@webiny/app-aco";
3
+ import type { FieldRule } from "../../../../../types.js";
4
+ interface FieldPermissionsSelectionProps {
5
+ targetsList: FolderLevelPermissionsTarget[];
6
+ rules: FieldRule[];
7
+ onRemoveAccess: (params: {
8
+ rule: FieldRule;
9
+ }) => void;
10
+ onUpdatePermission: (params: {
11
+ rule: FieldRule;
12
+ }) => void;
13
+ }
14
+ export declare const FieldPermissionsSelection: ({ rules, targetsList, onRemoveAccess, onUpdatePermission }: FieldPermissionsSelectionProps) => React.JSX.Element;
15
+ export {};
@@ -0,0 +1,131 @@
1
+ import React, { useMemo } from "react";
2
+ import { ReactComponent as More } from "@webiny/icons/arrow_drop_down.svg";
3
+ import { Button, DropdownMenu, List, Scrollbar, Text, Avatar } from "@webiny/admin-ui";
4
+ const FIELD_ACCESS_LEVELS = [{
5
+ id: "hide",
6
+ label: "No Access",
7
+ description: "Hide this field from the user."
8
+ }, {
9
+ id: "disable",
10
+ label: "Viewer (Read-only)",
11
+ description: "Allow the user to read, but not edit, this field."
12
+ }];
13
+ const ListItemGraphic = ({
14
+ target
15
+ }) => {
16
+ if (target.type === "admin") {
17
+ return /*#__PURE__*/React.createElement(Avatar, {
18
+ size: "md",
19
+ image: /*#__PURE__*/React.createElement(Avatar.Image, {
20
+ src: target.meta.image,
21
+ alt: "User's avatar."
22
+ }),
23
+ fallback: /*#__PURE__*/React.createElement(Avatar.Fallback, {
24
+ delayMs: 0
25
+ }, target.name.charAt(0))
26
+ });
27
+ }
28
+ return /*#__PURE__*/React.createElement(Avatar, {
29
+ size: "md",
30
+ fallback: /*#__PURE__*/React.createElement(Avatar.Fallback, {
31
+ delayMs: 0
32
+ }, target.name.charAt(0))
33
+ });
34
+ };
35
+ const ListItemText = ({
36
+ target
37
+ }) => {
38
+ if (target.type === "admin") {
39
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Text, {
40
+ as: "div"
41
+ }, target.name), /*#__PURE__*/React.createElement(Text, {
42
+ as: "div",
43
+ size: "sm",
44
+ className: "text-neutral-strong font-normal"
45
+ }, target.meta.email || "E-mail not available."));
46
+ }
47
+ return /*#__PURE__*/React.createElement(React.Fragment, null, target.name);
48
+ };
49
+ const ListItemMeta = ({
50
+ rule,
51
+ onRemoveAccess,
52
+ onUpdatePermission
53
+ }) => {
54
+ const currentLevel = useMemo(() => {
55
+ return FIELD_ACCESS_LEVELS.find(level => level.id === rule.action);
56
+ }, [rule.action]);
57
+ const handle = /*#__PURE__*/React.createElement(Button, {
58
+ variant: "ghost",
59
+ text: currentLevel.label,
60
+ icon: /*#__PURE__*/React.createElement(More, null),
61
+ iconPosition: "end"
62
+ });
63
+ return /*#__PURE__*/React.createElement(DropdownMenu, {
64
+ trigger: handle
65
+ }, FIELD_ACCESS_LEVELS.map(level => /*#__PURE__*/React.createElement(DropdownMenu.CheckboxItem, {
66
+ key: level.id,
67
+ checked: currentLevel.id === level.id,
68
+ text: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Text, {
69
+ as: "div"
70
+ }, level.label), /*#__PURE__*/React.createElement(Text, {
71
+ as: "div",
72
+ size: "sm",
73
+ className: "text-neutral-strong"
74
+ }, level.description)),
75
+ onClick: () => {
76
+ setTimeout(() => {
77
+ onUpdatePermission({
78
+ rule: {
79
+ ...rule,
80
+ action: level.id
81
+ }
82
+ });
83
+ }, 75);
84
+ }
85
+ })), /*#__PURE__*/React.createElement(DropdownMenu.Separator, null), /*#__PURE__*/React.createElement(DropdownMenu.Item, {
86
+ onClick: () => onRemoveAccess({
87
+ rule
88
+ }),
89
+ text: "Remove permission"
90
+ }));
91
+ };
92
+ export const FieldPermissionsSelection = ({
93
+ rules = [],
94
+ targetsList,
95
+ onRemoveAccess,
96
+ onUpdatePermission
97
+ }) => {
98
+ const selection = rules.map(rule => {
99
+ const target = targetsList.find(u => u.target === String(rule.value));
100
+ if (target) {
101
+ return {
102
+ rule,
103
+ target
104
+ };
105
+ }
106
+ return null;
107
+ }).filter(Boolean);
108
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
109
+ as: "div",
110
+ className: "mb-md"
111
+ }, "People and teams with access"), /*#__PURE__*/React.createElement(Scrollbar, {
112
+ style: {
113
+ minHeight: "100px"
114
+ }
115
+ }, /*#__PURE__*/React.createElement(List, null, selection?.map(item => /*#__PURE__*/React.createElement(List.Item, {
116
+ key: String(item.rule.value),
117
+ title: /*#__PURE__*/React.createElement(ListItemText, {
118
+ target: item.target
119
+ }),
120
+ icon: /*#__PURE__*/React.createElement(ListItemGraphic, {
121
+ target: item.target
122
+ }),
123
+ actions: /*#__PURE__*/React.createElement(ListItemMeta, {
124
+ rule: item.rule,
125
+ onRemoveAccess: onRemoveAccess,
126
+ onUpdatePermission: onUpdatePermission
127
+ })
128
+ })))));
129
+ };
130
+
131
+ //# sourceMappingURL=FieldPermissionsSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","ReactComponent","More","Button","DropdownMenu","List","Scrollbar","Text","Avatar","FIELD_ACCESS_LEVELS","id","label","description","ListItemGraphic","target","type","createElement","size","image","Image","src","meta","alt","fallback","Fallback","delayMs","name","charAt","ListItemText","as","className","email","Fragment","ListItemMeta","rule","onRemoveAccess","onUpdatePermission","currentLevel","find","level","action","handle","variant","text","icon","iconPosition","trigger","map","CheckboxItem","key","checked","onClick","setTimeout","Separator","Item","FieldPermissionsSelection","rules","targetsList","selection","u","String","value","filter","Boolean","style","minHeight","item","title","actions"],"sources":["FieldPermissionsSelection.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { ReactComponent as More } from \"@webiny/icons/arrow_drop_down.svg\";\nimport { Button, DropdownMenu, List, Scrollbar, Text, Avatar } from \"@webiny/admin-ui\";\nimport type { FolderLevelPermissionsTarget } from \"@webiny/app-aco\";\nimport type { FieldRule } from \"~/types.js\";\n\nconst FIELD_ACCESS_LEVELS = [\n {\n id: \"hide\",\n label: \"No Access\",\n description: \"Hide this field from the user.\"\n },\n {\n id: \"disable\",\n label: \"Viewer (Read-only)\",\n description: \"Allow the user to read, but not edit, this field.\"\n }\n];\n\ninterface FieldPermissionsSelectionProps {\n targetsList: FolderLevelPermissionsTarget[];\n rules: FieldRule[];\n onRemoveAccess: (params: { rule: FieldRule }) => void;\n onUpdatePermission: (params: { rule: FieldRule }) => void;\n}\n\ntype Selection = Array<{ rule: FieldRule; target: FolderLevelPermissionsTarget }>;\n\ninterface ListItemGraphicProps {\n target: FolderLevelPermissionsTarget;\n}\n\nconst ListItemGraphic = ({ target }: ListItemGraphicProps) => {\n if (target.type === \"admin\") {\n return (\n <Avatar\n size={\"md\"}\n image={<Avatar.Image src={target.meta.image} alt={\"User's avatar.\"} />}\n fallback={<Avatar.Fallback delayMs={0}>{target.name.charAt(0)}</Avatar.Fallback>}\n />\n );\n }\n\n return (\n <Avatar\n size={\"md\"}\n fallback={<Avatar.Fallback delayMs={0}>{target.name.charAt(0)}</Avatar.Fallback>}\n />\n );\n};\n\ninterface ListItemTextProps {\n target: FolderLevelPermissionsTarget;\n}\n\nconst ListItemText = ({ target }: ListItemTextProps) => {\n if (target.type === \"admin\") {\n return (\n <div>\n <Text as=\"div\">{target.name}</Text>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-strong font-normal\"}>\n {target.meta.email || \"E-mail not available.\"}\n </Text>\n </div>\n );\n }\n\n return <>{target.name}</>;\n};\n\ninterface ListItemMetaProps {\n rule: FieldRule;\n onRemoveAccess: (params: { rule: FieldRule }) => void;\n onUpdatePermission: (params: { rule: FieldRule }) => void;\n}\n\nconst ListItemMeta = ({ rule, onRemoveAccess, onUpdatePermission }: ListItemMetaProps) => {\n const currentLevel = useMemo(() => {\n return FIELD_ACCESS_LEVELS.find(level => level.id === rule.action)!;\n }, [rule.action]);\n\n const handle = (\n <Button variant={\"ghost\"} text={currentLevel.label} icon={<More />} iconPosition={\"end\"} />\n );\n\n return (\n <DropdownMenu trigger={handle}>\n {FIELD_ACCESS_LEVELS.map(level => (\n <DropdownMenu.CheckboxItem\n key={level.id}\n checked={currentLevel.id === level.id}\n text={\n <div>\n <Text as={\"div\"}>{level.label}</Text>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-strong\"}>\n {level.description}\n </Text>\n </div>\n }\n onClick={() => {\n setTimeout(() => {\n onUpdatePermission({\n rule: {\n ...rule,\n action: level.id\n }\n });\n }, 75);\n }}\n />\n ))}\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n onClick={() => onRemoveAccess({ rule })}\n text={\"Remove permission\"}\n />\n </DropdownMenu>\n );\n};\n\nexport const FieldPermissionsSelection = ({\n rules = [],\n targetsList,\n onRemoveAccess,\n onUpdatePermission\n}: FieldPermissionsSelectionProps) => {\n const selection = rules\n .map(rule => {\n const target = targetsList.find(u => u.target === String(rule.value));\n if (target) {\n return { rule, target };\n }\n\n return null;\n })\n .filter(Boolean) as Selection;\n\n return (\n <>\n <Text as={\"div\"} className={\"mb-md\"}>\n People and teams with access\n </Text>\n <Scrollbar style={{ minHeight: \"100px\" }}>\n <List>\n {selection?.map(item => (\n <List.Item\n key={String(item.rule.value)}\n title={<ListItemText target={item.target} />}\n icon={<ListItemGraphic target={item.target} />}\n actions={\n <ListItemMeta\n rule={item.rule}\n onRemoveAccess={onRemoveAccess}\n onUpdatePermission={onUpdatePermission}\n />\n }\n />\n ))}\n </List>\n </Scrollbar>\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export declare const PermissionsTab: ({ gridClassName }: {
3
+ gridClassName?: string;
4
+ }) => React.JSX.Element;