@webiny/app-headless-cms 5.33.5-beta.0 → 5.34.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HeadlessCMS.js +4 -0
- package/HeadlessCMS.js.map +1 -1
- package/admin/components/ContentEntryForm/ContentEntryForm.js +35 -32
- package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
- package/admin/components/ContentEntryForm/Fields.d.ts +2 -2
- package/admin/components/ContentEntryForm/Fields.js.map +1 -1
- package/admin/components/ContentEntryForm/Label.js +1 -1
- package/admin/components/ContentEntryForm/Label.js.map +1 -1
- package/admin/components/ContentEntryForm/RenderFieldElement.d.ts +2 -2
- package/admin/components/ContentEntryForm/RenderFieldElement.js +6 -2
- package/admin/components/ContentEntryForm/RenderFieldElement.js.map +1 -1
- package/admin/components/ContentEntryForm/functions/getValue.d.ts +2 -2
- package/admin/components/ContentEntryForm/functions/getValue.js.map +1 -1
- package/admin/components/ContentEntryForm/functions/setValue.d.ts +2 -2
- package/admin/components/ContentEntryForm/functions/setValue.js.map +1 -1
- package/admin/components/ContentEntryForm/useBind.d.ts +2 -2
- package/admin/components/ContentEntryForm/useBind.js +11 -8
- package/admin/components/ContentEntryForm/useBind.js.map +1 -1
- package/admin/components/ContentEntryForm/useContentEntryForm.d.ts +1 -2
- package/admin/components/ContentEntryForm/useContentEntryForm.js +187 -147
- package/admin/components/ContentEntryForm/useContentEntryForm.js.map +1 -1
- package/admin/components/ContentModelEditor/{Context.d.ts → ContentModelEditorProvider.d.ts} +10 -4
- package/admin/components/ContentModelEditor/{Context.js → ContentModelEditorProvider.js} +60 -116
- package/admin/components/ContentModelEditor/ContentModelEditorProvider.js.map +1 -0
- package/admin/components/ContentModelEditor/Editor.js +5 -5
- package/admin/components/ContentModelEditor/Editor.js.map +1 -1
- package/admin/components/ContentModelEditor/FieldsSidebar.js.map +1 -1
- package/admin/components/ContentModelEditor/PreviewTab.js +3 -3
- package/admin/components/ContentModelEditor/PreviewTab.js.map +1 -1
- package/admin/components/ContentModelEditor/index.d.ts +2 -0
- package/admin/components/ContentModelEditor/index.js +31 -0
- package/admin/components/ContentModelEditor/index.js.map +1 -0
- package/admin/components/ContentModelEditor/useModelEditor.d.ts +1 -0
- package/admin/components/ContentModelEditor/{useContentModelEditor.js → useModelEditor.js} +4 -4
- package/admin/components/ContentModelEditor/useModelEditor.js.map +1 -0
- package/admin/{views/contentModelGroups → components}/DelayedOnChange.d.ts +0 -0
- package/admin/{views/contentModelGroups → components}/DelayedOnChange.js +0 -0
- package/admin/{views/contentModelGroups → components}/DelayedOnChange.js.map +0 -0
- package/admin/components/Dialog.d.ts +4 -0
- package/admin/components/Dialog.js +32 -0
- package/admin/components/Dialog.js.map +1 -0
- package/admin/components/DropZone/Center.d.ts +2 -1
- package/admin/components/DropZone/Center.js +38 -44
- package/admin/components/DropZone/Center.js.map +1 -1
- package/admin/components/Droppable.d.ts +1 -0
- package/admin/components/Droppable.js +12 -1
- package/admin/components/Droppable.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.d.ts +2 -8
- package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js +20 -9
- package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.d.ts +2 -9
- package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +35 -21
- package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.d.ts +2 -9
- package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.js +14 -12
- package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/ValidationsSection.d.ts +10 -0
- package/admin/components/FieldEditor/EditFieldDialog/ValidationsSection.js +42 -0
- package/admin/components/FieldEditor/EditFieldDialog/ValidationsSection.js.map +1 -0
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsList.d.ts +8 -0
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsList.js +227 -0
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsList.js.map +1 -0
- package/admin/components/FieldEditor/EditFieldDialog/getValidators.d.ts +13 -0
- package/admin/components/FieldEditor/EditFieldDialog/getValidators.js +115 -0
- package/admin/components/FieldEditor/EditFieldDialog/getValidators.js.map +1 -0
- package/admin/components/FieldEditor/EditFieldDialog.d.ts +3 -3
- package/admin/components/FieldEditor/EditFieldDialog.js +117 -260
- package/admin/components/FieldEditor/EditFieldDialog.js.map +1 -1
- package/admin/components/FieldEditor/Field.d.ts +5 -5
- package/admin/components/FieldEditor/Field.js +17 -14
- package/admin/components/FieldEditor/Field.js.map +1 -1
- package/admin/components/FieldEditor/FieldEditor.d.ts +4 -4
- package/admin/components/FieldEditor/FieldEditor.js +85 -31
- package/admin/components/FieldEditor/FieldEditor.js.map +1 -1
- package/admin/components/FieldEditor/FieldEditorContext.d.ts +16 -16
- package/admin/components/FieldEditor/FieldEditorContext.js +18 -18
- package/admin/components/FieldEditor/FieldEditorContext.js.map +1 -1
- package/admin/components/FieldEditor/Styled.js +4 -13
- package/admin/components/FieldEditor/Styled.js.map +1 -1
- package/admin/components/FieldEditor/index.d.ts +1 -1
- package/admin/components/FieldEditor/index.js +3 -3
- package/admin/components/FieldEditor/index.js.map +1 -1
- package/admin/components/FieldEditor/useModelFieldEditor.d.ts +2 -0
- package/admin/components/FieldEditor/useModelFieldEditor.js +20 -0
- package/admin/components/FieldEditor/useModelFieldEditor.js.map +1 -0
- package/admin/components/FieldEditor/utils/deleteField.d.ts +2 -2
- package/admin/components/FieldEditor/utils/deleteField.js.map +1 -1
- package/admin/components/FieldEditor/utils/getFieldPosition.d.ts +2 -2
- package/admin/components/FieldEditor/utils/getFieldPosition.js.map +1 -1
- package/admin/components/FieldEditor/utils/moveField.d.ts +3 -3
- package/admin/components/FieldEditor/utils/moveField.js.map +1 -1
- package/admin/components/IconPicker.d.ts +7 -0
- package/admin/{views/contentModelGroups → components}/IconPicker.js +34 -31
- package/admin/components/IconPicker.js.map +1 -0
- package/admin/components/ModelFieldProvider/ModelFieldContext.d.ts +36 -0
- package/admin/components/ModelFieldProvider/ModelFieldContext.js +24 -0
- package/admin/components/ModelFieldProvider/ModelFieldContext.js.map +1 -0
- package/admin/components/ModelFieldProvider/index.d.ts +2 -0
- package/admin/components/ModelFieldProvider/index.js +31 -0
- package/admin/components/ModelFieldProvider/index.js.map +1 -0
- package/admin/components/ModelFieldProvider/useModelField.d.ts +35 -0
- package/admin/components/ModelFieldProvider/useModelField.js +42 -0
- package/admin/components/ModelFieldProvider/useModelField.js.map +1 -0
- package/admin/components/ModelProvider/ModelContext.d.ts +9 -0
- package/admin/components/ModelProvider/ModelContext.js +24 -0
- package/admin/components/ModelProvider/ModelContext.js.map +1 -0
- package/admin/components/ModelProvider/index.d.ts +2 -0
- package/admin/components/ModelProvider/index.js +31 -0
- package/admin/components/ModelProvider/index.js.map +1 -0
- package/admin/components/ModelProvider/useModel.d.ts +9 -0
- package/admin/components/ModelProvider/useModel.js +25 -0
- package/admin/components/ModelProvider/useModel.js.map +1 -0
- package/admin/constants/statusLabels.js +2 -4
- package/admin/constants/statusLabels.js.map +1 -1
- package/admin/graphql/contentEntries.d.ts +2 -29
- package/admin/graphql/contentEntries.js +28 -42
- package/admin/graphql/contentEntries.js.map +1 -1
- package/admin/graphql/contentModels.d.ts +1 -1
- package/admin/graphql/contentModels.js +2 -2
- package/admin/graphql/contentModels.js.map +1 -1
- package/admin/graphql/createFieldsList.d.ts +7 -2
- package/admin/graphql/createFieldsList.js +5 -1
- package/admin/graphql/createFieldsList.js.map +1 -1
- package/admin/hooks/index.d.ts +5 -0
- package/admin/hooks/index.js +47 -2
- package/admin/hooks/index.js.map +1 -1
- package/admin/hooks/usePermission.d.ts +0 -2
- package/admin/hooks/usePermission.js +5 -37
- package/admin/hooks/usePermission.js.map +1 -1
- package/admin/menus/NothingToShowElement.js +4 -1
- package/admin/menus/NothingToShowElement.js.map +1 -1
- package/admin/plugins/arrayUtils.d.ts +12 -0
- package/admin/plugins/arrayUtils.js +53 -0
- package/admin/plugins/arrayUtils.js.map +1 -0
- package/admin/plugins/editor/defaultBar/CreateContentButton.js +4 -4
- package/admin/plugins/editor/defaultBar/CreateContentButton.js.map +1 -1
- package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js +5 -5
- package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js.map +1 -1
- package/admin/plugins/editor/defaultBar/Name/Name.js +4 -4
- package/admin/plugins/editor/defaultBar/Name/Name.js.map +1 -1
- package/admin/plugins/editor/defaultBar/SaveContentModelButton.js +3 -3
- package/admin/plugins/editor/defaultBar/SaveContentModelButton.js.map +1 -1
- package/admin/plugins/editor/formSettings/components/GeneralSettings.js +9 -1
- package/admin/plugins/editor/formSettings/components/GeneralSettings.js.map +1 -1
- package/admin/plugins/fieldRenderers/DynamicSection.d.ts +3 -3
- package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/DateOnly.d.ts +2 -2
- package/admin/plugins/fieldRenderers/dateTime/DateOnly.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/DateTimeWithTimezone.d.ts +2 -2
- package/admin/plugins/fieldRenderers/dateTime/DateTimeWithTimezone.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/DateTimeWithoutTimezone.d.ts +2 -2
- package/admin/plugins/fieldRenderers/dateTime/DateTimeWithoutTimezone.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/Input.d.ts +2 -2
- package/admin/plugins/fieldRenderers/dateTime/Input.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/utils.d.ts +2 -2
- package/admin/plugins/fieldRenderers/dateTime/utils.js.map +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.d.ts +12 -0
- package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.js +107 -0
- package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.js.map +1 -0
- package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.d.ts +11 -0
- package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js +139 -0
- package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -0
- package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.d.ts +11 -0
- package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js +68 -0
- package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.d.ts +8 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.js +63 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.js.map +1 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.d.ts +8 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.js +53 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.js.map +1 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.d.ts +6 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.js +22 -0
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.js.map +1 -0
- package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.d.ts +2 -0
- package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js +66 -0
- package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js.map +1 -0
- package/admin/plugins/fieldRenderers/file/fileFields.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.d.ts +2 -2
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.d.ts +2 -2
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js +10 -9
- package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/useReference.d.ts +2 -2
- package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/useReferences.d.ts +2 -2
- package/admin/plugins/fieldRenderers/ref/components/useReferences.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.d.ts +2 -2
- package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.js +15 -14
- package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/refInputs.js.map +1 -1
- package/admin/plugins/fieldRenderers/richText/richTextInput.js.map +1 -1
- package/admin/plugins/fieldRenderers/richText/richTextInputs.js.map +1 -1
- package/admin/plugins/fieldValidators/date/createDateInputField.d.ts +2 -2
- package/admin/plugins/fieldValidators/date/createDateInputField.js.map +1 -1
- package/admin/plugins/fieldValidators/dateGte.d.ts +2 -2
- package/admin/plugins/fieldValidators/dateGte.js +79 -23
- package/admin/plugins/fieldValidators/dateGte.js.map +1 -1
- package/admin/plugins/fieldValidators/dateLte.d.ts +2 -2
- package/admin/plugins/fieldValidators/dateLte.js +79 -23
- package/admin/plugins/fieldValidators/dateLte.js.map +1 -1
- package/admin/plugins/fieldValidators/dynamicZone.d.ts +2 -0
- package/admin/plugins/fieldValidators/dynamicZone.js +215 -0
- package/admin/plugins/fieldValidators/dynamicZone.js.map +1 -0
- package/admin/plugins/fieldValidators/gte.d.ts +2 -2
- package/admin/plugins/fieldValidators/gte.js +44 -5
- package/admin/plugins/fieldValidators/gte.js.map +1 -1
- package/admin/plugins/fieldValidators/in.d.ts +2 -2
- package/admin/plugins/fieldValidators/in.js +44 -5
- package/admin/plugins/fieldValidators/in.js.map +1 -1
- package/admin/plugins/fieldValidators/lte.d.ts +2 -2
- package/admin/plugins/fieldValidators/lte.js +44 -5
- package/admin/plugins/fieldValidators/lte.js.map +1 -1
- package/admin/plugins/fieldValidators/maxLength.d.ts +2 -2
- package/admin/plugins/fieldValidators/maxLength.js +55 -6
- package/admin/plugins/fieldValidators/maxLength.js.map +1 -1
- package/admin/plugins/fieldValidators/minLength.d.ts +2 -2
- package/admin/plugins/fieldValidators/minLength.js +55 -6
- package/admin/plugins/fieldValidators/minLength.js.map +1 -1
- package/admin/plugins/fieldValidators/pattern.d.ts +2 -2
- package/admin/plugins/fieldValidators/pattern.js +129 -60
- package/admin/plugins/fieldValidators/pattern.js.map +1 -1
- package/admin/plugins/fieldValidators/patternPlugins/email.d.ts +2 -2
- package/admin/plugins/fieldValidators/patternPlugins/email.js +6 -4
- package/admin/plugins/fieldValidators/patternPlugins/email.js.map +1 -1
- package/admin/plugins/fieldValidators/patternPlugins/lowerCase.d.ts +2 -2
- package/admin/plugins/fieldValidators/patternPlugins/lowerCase.js +5 -3
- package/admin/plugins/fieldValidators/patternPlugins/lowerCase.js.map +1 -1
- package/admin/plugins/fieldValidators/patternPlugins/lowerCaseSpace.d.ts +2 -2
- package/admin/plugins/fieldValidators/patternPlugins/lowerCaseSpace.js +5 -3
- package/admin/plugins/fieldValidators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/admin/plugins/fieldValidators/patternPlugins/upperCase.d.ts +2 -2
- package/admin/plugins/fieldValidators/patternPlugins/upperCase.js +5 -3
- package/admin/plugins/fieldValidators/patternPlugins/upperCase.js.map +1 -1
- package/admin/plugins/fieldValidators/patternPlugins/upperCaseSpace.d.ts +2 -2
- package/admin/plugins/fieldValidators/patternPlugins/upperCaseSpace.js +5 -3
- package/admin/plugins/fieldValidators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/admin/plugins/fieldValidators/patternPlugins/url.d.ts +2 -2
- package/admin/plugins/fieldValidators/patternPlugins/url.js +5 -3
- package/admin/plugins/fieldValidators/patternPlugins/url.js.map +1 -1
- package/admin/plugins/fieldValidators/required.d.ts +2 -2
- package/admin/plugins/fieldValidators/required.js +8 -2
- package/admin/plugins/fieldValidators/required.js.map +1 -1
- package/admin/plugins/fieldValidators/unique.d.ts +2 -2
- package/admin/plugins/fieldValidators/unique.js +30 -2
- package/admin/plugins/fieldValidators/unique.js.map +1 -1
- package/admin/plugins/fields/PredefinedValuesDynamicFieldset.d.ts +1 -2
- package/admin/plugins/fields/PredefinedValuesDynamicFieldset.js +25 -26
- package/admin/plugins/fields/PredefinedValuesDynamicFieldset.js.map +1 -1
- package/admin/plugins/fields/boolean.d.ts +2 -2
- package/admin/plugins/fields/boolean.js +6 -5
- package/admin/plugins/fields/boolean.js.map +1 -1
- package/admin/plugins/fields/dateTime.d.ts +2 -2
- package/admin/plugins/fields/dateTime.js +58 -48
- package/admin/plugins/fields/dateTime.js.map +1 -1
- package/admin/plugins/fields/dynamicZone/AddTemplate.d.ts +11 -0
- package/admin/plugins/fields/dynamicZone/AddTemplate.js +114 -0
- package/admin/plugins/fields/dynamicZone/AddTemplate.js.map +1 -0
- package/admin/plugins/fields/dynamicZone/DynamicZone.d.ts +2 -0
- package/admin/plugins/fields/dynamicZone/DynamicZone.js +82 -0
- package/admin/plugins/fields/dynamicZone/DynamicZone.js.map +1 -0
- package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.d.ts +11 -0
- package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.js +127 -0
- package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.js.map +1 -0
- package/admin/plugins/fields/dynamicZone/TemplateDialog.d.ts +9 -0
- package/admin/plugins/fields/dynamicZone/TemplateDialog.js +174 -0
- package/admin/plugins/fields/dynamicZone/TemplateDialog.js.map +1 -0
- package/admin/plugins/fields/dynamicZone/commonValidators.d.ts +2 -0
- package/admin/plugins/fields/dynamicZone/commonValidators.js +26 -0
- package/admin/plugins/fields/dynamicZone/commonValidators.js.map +1 -0
- package/admin/plugins/fields/dynamicZone.d.ts +2 -0
- package/admin/plugins/fields/dynamicZone.js +97 -0
- package/admin/plugins/fields/dynamicZone.js.map +1 -0
- package/admin/plugins/fields/file.d.ts +2 -2
- package/admin/plugins/fields/file.js +6 -5
- package/admin/plugins/fields/file.js.map +1 -1
- package/admin/plugins/fields/longText.d.ts +2 -2
- package/admin/plugins/fields/longText.js +4 -3
- package/admin/plugins/fields/longText.js.map +1 -1
- package/admin/plugins/fields/number.d.ts +2 -2
- package/admin/plugins/fields/number.js +6 -5
- package/admin/plugins/fields/number.js.map +1 -1
- package/admin/plugins/fields/object/ObjectFields.d.ts +2 -2
- package/admin/plugins/fields/object/ObjectFields.js +3 -3
- package/admin/plugins/fields/object/ObjectFields.js.map +1 -1
- package/admin/plugins/fields/object.d.ts +2 -2
- package/admin/plugins/fields/object.js +9 -4
- package/admin/plugins/fields/object.js.map +1 -1
- package/admin/plugins/fields/ref.d.ts +2 -2
- package/admin/plugins/fields/ref.js +108 -100
- package/admin/plugins/fields/ref.js.map +1 -1
- package/admin/plugins/fields/richText.d.ts +2 -2
- package/admin/plugins/fields/richText.js +6 -5
- package/admin/plugins/fields/richText.js.map +1 -1
- package/admin/plugins/fields/text.d.ts +2 -2
- package/admin/plugins/fields/text.js +4 -3
- package/admin/plugins/fields/text.js.map +1 -1
- package/admin/plugins/index.d.ts +28 -1
- package/admin/plugins/permissionRenderer/CmsPermissions.js +2 -7
- package/admin/plugins/permissionRenderer/CmsPermissions.js.map +1 -1
- package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js +11 -17
- package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js.map +1 -1
- package/admin/plugins/transformers/dateTransformer.d.ts +1 -2
- package/admin/plugins/transformers/dateTransformer.js +3 -3
- package/admin/plugins/transformers/dateTransformer.js.map +1 -1
- package/admin/plugins/transformers/dynamicZoneTransformer.d.ts +2 -0
- package/admin/plugins/transformers/dynamicZoneTransformer.js +45 -0
- package/admin/plugins/transformers/dynamicZoneTransformer.js.map +1 -0
- package/admin/plugins/transformers/index.js +5 -5
- package/admin/plugins/transformers/index.js.map +1 -1
- package/admin/plugins/transformers/numberTransformer.d.ts +1 -2
- package/admin/plugins/transformers/numberTransformer.js +3 -3
- package/admin/plugins/transformers/numberTransformer.js.map +1 -1
- package/admin/views/contentEntries/ContentEntries.js +6 -2
- package/admin/views/contentEntries/ContentEntries.js.map +1 -1
- package/admin/views/contentEntries/ContentEntriesContext.d.ts +4 -4
- package/admin/views/contentEntries/ContentEntriesContext.js +1 -9
- package/admin/views/contentEntries/ContentEntriesContext.js.map +1 -1
- package/admin/views/contentEntries/ContentEntriesList.js +23 -8
- package/admin/views/contentEntries/ContentEntriesList.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +19 -4
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/RevisionListItem.js +60 -60
- package/admin/views/contentEntries/ContentEntry/RevisionListItem.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/cache.js +5 -1
- package/admin/views/contentEntries/ContentEntry/cache.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.d.ts +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js +3 -80
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.d.ts +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js +3 -84
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/prepareFormData.d.ts +2 -2
- package/admin/views/contentEntries/ContentEntry/prepareFormData.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/useRevision.d.ts +0 -8
- package/admin/views/contentEntries/ContentEntry/useRevision.js +10 -122
- package/admin/views/contentEntries/ContentEntry/useRevision.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry.js +0 -2
- package/admin/views/contentEntries/ContentEntry.js.map +1 -1
- package/admin/views/contentEntries/experiment/ContentEntriesModule.d.ts +2 -2
- package/admin/views/contentEntries/experiment/ContentEntriesModule.js +27 -14
- package/admin/views/contentEntries/experiment/ContentEntriesModule.js.map +1 -1
- package/admin/views/contentEntries/hooks/useContentEntries.js +7 -1
- package/admin/views/contentEntries/hooks/useContentEntries.js.map +1 -1
- package/admin/views/contentEntries/hooks/useContentEntriesList.d.ts +1 -1
- package/admin/views/contentEntries/hooks/useContentEntriesList.js.map +1 -1
- package/admin/views/contentModelGroups/ContentModelGroupsForm.js +2 -2
- package/admin/views/contentModelGroups/ContentModelGroupsForm.js.map +1 -1
- package/admin/views/contentModels/CloneContentModelDialog.js +4 -17
- package/admin/views/contentModels/CloneContentModelDialog.js.map +1 -1
- package/admin/views/contentModels/ContentModelEditor.js +2 -2
- package/admin/views/contentModels/ContentModelEditor.js.map +1 -1
- package/admin/views/contentModels/NewContentModelDialog.js +5 -17
- package/admin/views/contentModels/NewContentModelDialog.js.map +1 -1
- package/admin/viewsGraphql.js +1 -1
- package/admin/viewsGraphql.js.map +1 -1
- package/allPlugins.d.ts +34 -0
- package/allPlugins.js +95 -0
- package/allPlugins.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +15 -1
- package/index.js.map +1 -1
- package/package.json +29 -29
- package/{types.d.ts → types/index.d.ts} +59 -176
- package/types/index.js +44 -0
- package/types/index.js.map +1 -0
- package/types/model.d.ts +83 -0
- package/{types.js → types/model.js} +0 -0
- package/types/model.js.map +1 -0
- package/types/shared.d.ts +5 -0
- package/types/shared.js +5 -0
- package/types/shared.js.map +1 -0
- package/types/validation.d.ts +70 -0
- package/types/validation.js +5 -0
- package/types/validation.js.map +1 -0
- package/utils/CmsModelFieldValidatorConfigAdapter.d.ts +15 -0
- package/utils/CmsModelFieldValidatorConfigAdapter.js +91 -0
- package/utils/CmsModelFieldValidatorConfigAdapter.js.map +1 -0
- package/utils/createTypeName.d.ts +1 -0
- package/utils/createTypeName.js +18 -0
- package/utils/createTypeName.js.map +1 -0
- package/utils/createValidators.d.ts +3 -0
- package/{admin/components/ContentEntryForm/functions → utils}/createValidators.js +37 -16
- package/utils/createValidators.js.map +1 -0
- package/utils/getFetchPolicy.d.ts +6 -0
- package/utils/getFetchPolicy.js +19 -0
- package/utils/getFetchPolicy.js.map +1 -0
- package/utils/getModelTitleFieldId.d.ts +2 -0
- package/utils/getModelTitleFieldId.js +16 -0
- package/utils/getModelTitleFieldId.js.map +1 -0
- package/admin/components/ContentEntryForm/functions/createValidators.d.ts +0 -3
- package/admin/components/ContentEntryForm/functions/createValidators.js.map +0 -1
- package/admin/components/ContentModelEditor/Context.js.map +0 -1
- package/admin/components/ContentModelEditor/useContentModelEditor.d.ts +0 -1
- package/admin/components/ContentModelEditor/useContentModelEditor.js.map +0 -1
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.d.ts +0 -15
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js +0 -148
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js.map +0 -1
- package/admin/components/FieldEditor/useFieldEditor.d.ts +0 -1
- package/admin/components/FieldEditor/useFieldEditor.js +0 -14
- package/admin/components/FieldEditor/useFieldEditor.js.map +0 -1
- package/admin/plugins/validators/dateGte.d.ts +0 -3
- package/admin/plugins/validators/dateGte.js +0 -68
- package/admin/plugins/validators/dateGte.js.map +0 -1
- package/admin/plugins/validators/dateLte.d.ts +0 -3
- package/admin/plugins/validators/dateLte.js +0 -68
- package/admin/plugins/validators/dateLte.js.map +0 -1
- package/admin/plugins/validators/gte.d.ts +0 -3
- package/admin/plugins/validators/gte.js +0 -57
- package/admin/plugins/validators/gte.js.map +0 -1
- package/admin/plugins/validators/in.d.ts +0 -3
- package/admin/plugins/validators/in.js +0 -57
- package/admin/plugins/validators/in.js.map +0 -1
- package/admin/plugins/validators/lte.d.ts +0 -3
- package/admin/plugins/validators/lte.js +0 -57
- package/admin/plugins/validators/lte.js.map +0 -1
- package/admin/plugins/validators/maxLength.d.ts +0 -3
- package/admin/plugins/validators/maxLength.js +0 -57
- package/admin/plugins/validators/maxLength.js.map +0 -1
- package/admin/plugins/validators/minLength.d.ts +0 -3
- package/admin/plugins/validators/minLength.js +0 -57
- package/admin/plugins/validators/minLength.js.map +0 -1
- package/admin/plugins/validators/pattern.d.ts +0 -3
- package/admin/plugins/validators/pattern.js +0 -77
- package/admin/plugins/validators/pattern.js.map +0 -1
- package/admin/plugins/validators/patternPlugins/email.d.ts +0 -3
- package/admin/plugins/validators/patternPlugins/email.js +0 -17
- package/admin/plugins/validators/patternPlugins/email.js.map +0 -1
- package/admin/plugins/validators/patternPlugins/lowerCase.d.ts +0 -3
- package/admin/plugins/validators/patternPlugins/lowerCase.js +0 -17
- package/admin/plugins/validators/patternPlugins/lowerCase.js.map +0 -1
- package/admin/plugins/validators/patternPlugins/lowerCaseSpace.d.ts +0 -3
- package/admin/plugins/validators/patternPlugins/lowerCaseSpace.js +0 -17
- package/admin/plugins/validators/patternPlugins/lowerCaseSpace.js.map +0 -1
- package/admin/plugins/validators/patternPlugins/upperCase.d.ts +0 -3
- package/admin/plugins/validators/patternPlugins/upperCase.js +0 -17
- package/admin/plugins/validators/patternPlugins/upperCase.js.map +0 -1
- package/admin/plugins/validators/patternPlugins/upperCaseSpace.d.ts +0 -3
- package/admin/plugins/validators/patternPlugins/upperCaseSpace.js +0 -17
- package/admin/plugins/validators/patternPlugins/upperCaseSpace.js.map +0 -1
- package/admin/plugins/validators/patternPlugins/url.d.ts +0 -3
- package/admin/plugins/validators/patternPlugins/url.js +0 -17
- package/admin/plugins/validators/patternPlugins/url.js.map +0 -1
- package/admin/plugins/validators/required.d.ts +0 -3
- package/admin/plugins/validators/required.js +0 -21
- package/admin/plugins/validators/required.js.map +0 -1
- package/admin/plugins/validators/timeGte.d.ts +0 -3
- package/admin/plugins/validators/timeGte.js +0 -59
- package/admin/plugins/validators/timeGte.js.map +0 -1
- package/admin/plugins/validators/timeLte.d.ts +0 -3
- package/admin/plugins/validators/timeLte.js +0 -59
- package/admin/plugins/validators/timeLte.js.map +0 -1
- package/admin/plugins/validators/unique.d.ts +0 -7
- package/admin/plugins/validators/unique.js +0 -50
- package/admin/plugins/validators/unique.js.map +0 -1
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/rule-24px.svg +0 -1
- package/admin/views/contentEntries/ContentEntry/header/requestReview/emoji_people-24px.svg +0 -1
- package/admin/views/contentModelGroups/IconPicker.d.ts +0 -8
- package/admin/views/contentModelGroups/IconPicker.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -9,18 +9,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.default = void 0;
|
|
11
11
|
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
12
14
|
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
13
15
|
|
|
14
16
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
17
|
|
|
16
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
17
|
-
|
|
18
18
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
19
|
|
|
20
20
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
21
21
|
|
|
22
|
-
var _hooks = require("../../hooks");
|
|
23
|
-
|
|
24
22
|
var _viewsGraphql = require("../../viewsGraphql");
|
|
25
23
|
|
|
26
24
|
var _validation = require("@webiny/validation");
|
|
@@ -37,10 +35,111 @@ var _roundLink24px = require("./icons/round-link-24px.svg");
|
|
|
37
35
|
|
|
38
36
|
var _i18n = require("@webiny/app/i18n");
|
|
39
37
|
|
|
38
|
+
var _form = require("@webiny/form");
|
|
39
|
+
|
|
40
|
+
var _hooks = require("../../hooks");
|
|
41
|
+
|
|
40
42
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
41
43
|
|
|
42
44
|
var t = _i18n.i18n.ns("app-headless-cms/admin/fields");
|
|
43
45
|
|
|
46
|
+
var RefFieldSettings = function RefFieldSettings() {
|
|
47
|
+
var _useModel = (0, _hooks.useModel)(),
|
|
48
|
+
model = _useModel.model;
|
|
49
|
+
|
|
50
|
+
var _useForm = (0, _form.useForm)(),
|
|
51
|
+
formData = _useForm.data;
|
|
52
|
+
|
|
53
|
+
var lockedFields = model.lockedFields || [];
|
|
54
|
+
var fieldId = (formData || {}).fieldId || null;
|
|
55
|
+
var isFieldLocked = lockedFields.some(function (lockedField) {
|
|
56
|
+
return fieldId && lockedField.fieldId === fieldId;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
var _useQuery = (0, _hooks.useQuery)(_viewsGraphql.LIST_CONTENT_MODELS),
|
|
60
|
+
data = _useQuery.data,
|
|
61
|
+
loading = _useQuery.loading,
|
|
62
|
+
error = _useQuery.error;
|
|
63
|
+
|
|
64
|
+
var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
|
|
65
|
+
showSnackbar = _useSnackbar.showSnackbar;
|
|
66
|
+
|
|
67
|
+
if (error) {
|
|
68
|
+
showSnackbar(error.message);
|
|
69
|
+
return null;
|
|
70
|
+
} // Format options for the Autocomplete component.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
var options = (0, _react.useMemo)(function () {
|
|
74
|
+
var models = (0, _get.default)(data, "listContentModels.data", []);
|
|
75
|
+
return models.map(function (model) {
|
|
76
|
+
return {
|
|
77
|
+
id: model.modelId,
|
|
78
|
+
name: model.name
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
}, [data]);
|
|
82
|
+
var atLeastOneItem = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
83
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(value) {
|
|
84
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
85
|
+
while (1) {
|
|
86
|
+
switch (_context.prev = _context.next) {
|
|
87
|
+
case 0:
|
|
88
|
+
_context.prev = 0;
|
|
89
|
+
_context.next = 3;
|
|
90
|
+
return _validation.validation.validate(value, "required,minLength:1");
|
|
91
|
+
|
|
92
|
+
case 3:
|
|
93
|
+
_context.next = 8;
|
|
94
|
+
break;
|
|
95
|
+
|
|
96
|
+
case 5:
|
|
97
|
+
_context.prev = 5;
|
|
98
|
+
_context.t0 = _context["catch"](0);
|
|
99
|
+
throw new _validation.ValidationError("Please select at least 1 item");
|
|
100
|
+
|
|
101
|
+
case 8:
|
|
102
|
+
case "end":
|
|
103
|
+
return _context.stop();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, _callee, null, [[0, 5]]);
|
|
107
|
+
}));
|
|
108
|
+
|
|
109
|
+
return function (_x) {
|
|
110
|
+
return _ref.apply(this, arguments);
|
|
111
|
+
};
|
|
112
|
+
}(), []);
|
|
113
|
+
return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, loading && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
114
|
+
span: 12
|
|
115
|
+
}, /*#__PURE__*/_react.default.createElement(_form.Bind, {
|
|
116
|
+
name: "settings.models",
|
|
117
|
+
validators: atLeastOneItem
|
|
118
|
+
}, function (bind) {
|
|
119
|
+
// Format value prop for MultiAutoComplete component.
|
|
120
|
+
var formattedValueForAutoComplete = options.filter(function (option) {
|
|
121
|
+
return bind.value.some(function (_ref2) {
|
|
122
|
+
var modelId = _ref2.modelId;
|
|
123
|
+
return option.id === modelId;
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
return /*#__PURE__*/_react.default.createElement(_AutoComplete.MultiAutoComplete, Object.assign({}, bind, {
|
|
127
|
+
value: formattedValueForAutoComplete,
|
|
128
|
+
onChange: function onChange(values) {
|
|
129
|
+
bind.onChange(values.map(function (value) {
|
|
130
|
+
return {
|
|
131
|
+
modelId: value.id
|
|
132
|
+
};
|
|
133
|
+
}));
|
|
134
|
+
},
|
|
135
|
+
label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Content Models"]))),
|
|
136
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Cannot be changed later"]))),
|
|
137
|
+
options: options,
|
|
138
|
+
disabled: isFieldLocked
|
|
139
|
+
}));
|
|
140
|
+
})));
|
|
141
|
+
};
|
|
142
|
+
|
|
44
143
|
var plugin = {
|
|
45
144
|
type: "cms-editor-field-type",
|
|
46
145
|
name: "cms-editor-field-type-ref",
|
|
@@ -48,12 +147,12 @@ var plugin = {
|
|
|
48
147
|
type: "ref",
|
|
49
148
|
validators: ["required"],
|
|
50
149
|
listValidators: ["minLength", "maxLength"],
|
|
51
|
-
label: t(
|
|
52
|
-
description: t(
|
|
150
|
+
label: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Reference"]))),
|
|
151
|
+
description: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Reference existing content entries. For example, a book can reference one or more authors."]))),
|
|
53
152
|
icon: /*#__PURE__*/_react.default.createElement(_roundLink24px.ReactComponent, null),
|
|
54
153
|
allowMultipleValues: true,
|
|
55
154
|
allowPredefinedValues: false,
|
|
56
|
-
multipleValuesLabel: t(
|
|
155
|
+
multipleValuesLabel: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Use as a list of references"]))),
|
|
57
156
|
createField: function createField() {
|
|
58
157
|
return {
|
|
59
158
|
type: this.type,
|
|
@@ -66,99 +165,8 @@ var plugin = {
|
|
|
66
165
|
}
|
|
67
166
|
};
|
|
68
167
|
},
|
|
69
|
-
renderSettings: function renderSettings(
|
|
70
|
-
|
|
71
|
-
Bind = _ref$form.Bind,
|
|
72
|
-
formData = _ref$form.data,
|
|
73
|
-
contentModel = _ref.contentModel;
|
|
74
|
-
var lockedFields = contentModel.lockedFields || [];
|
|
75
|
-
var fieldId = (formData || {}).fieldId || null;
|
|
76
|
-
var isFieldLocked = lockedFields.some(function (lockedField) {
|
|
77
|
-
return fieldId && lockedField.fieldId === fieldId;
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
var _useQuery = (0, _hooks.useQuery)(_viewsGraphql.LIST_CONTENT_MODELS),
|
|
81
|
-
data = _useQuery.data,
|
|
82
|
-
loading = _useQuery.loading,
|
|
83
|
-
error = _useQuery.error;
|
|
84
|
-
|
|
85
|
-
var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
|
|
86
|
-
showSnackbar = _useSnackbar.showSnackbar;
|
|
87
|
-
|
|
88
|
-
if (error) {
|
|
89
|
-
showSnackbar(error.message);
|
|
90
|
-
return null;
|
|
91
|
-
} // Format options for the Autocomplete component.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
var options = (0, _react.useMemo)(function () {
|
|
95
|
-
var models = (0, _get.default)(data, "listContentModels.data", []);
|
|
96
|
-
return models.map(function (model) {
|
|
97
|
-
return {
|
|
98
|
-
id: model.modelId,
|
|
99
|
-
name: model.name
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
|
-
}, [data]);
|
|
103
|
-
var atLeastOneItem = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
104
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(value) {
|
|
105
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
106
|
-
while (1) {
|
|
107
|
-
switch (_context.prev = _context.next) {
|
|
108
|
-
case 0:
|
|
109
|
-
_context.prev = 0;
|
|
110
|
-
_context.next = 3;
|
|
111
|
-
return _validation.validation.validate(value, "required,minLength:1");
|
|
112
|
-
|
|
113
|
-
case 3:
|
|
114
|
-
_context.next = 8;
|
|
115
|
-
break;
|
|
116
|
-
|
|
117
|
-
case 5:
|
|
118
|
-
_context.prev = 5;
|
|
119
|
-
_context.t0 = _context["catch"](0);
|
|
120
|
-
throw new _validation.ValidationError("Please select at least 1 item");
|
|
121
|
-
|
|
122
|
-
case 8:
|
|
123
|
-
case "end":
|
|
124
|
-
return _context.stop();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}, _callee, null, [[0, 5]]);
|
|
128
|
-
}));
|
|
129
|
-
|
|
130
|
-
return function (_x) {
|
|
131
|
-
return _ref2.apply(this, arguments);
|
|
132
|
-
};
|
|
133
|
-
}(), []);
|
|
134
|
-
return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, loading && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
135
|
-
span: 12
|
|
136
|
-
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
137
|
-
name: "settings.models",
|
|
138
|
-
validators: atLeastOneItem
|
|
139
|
-
}, function (bind) {
|
|
140
|
-
// Format value prop for MultiAutoComplete component.
|
|
141
|
-
var formattedValueForAutoComplete = options.filter(function (option) {
|
|
142
|
-
return bind.value.some(function (_ref3) {
|
|
143
|
-
var modelId = _ref3.modelId;
|
|
144
|
-
return option.id === modelId;
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
return /*#__PURE__*/_react.default.createElement(_AutoComplete.MultiAutoComplete, Object.assign({}, bind, {
|
|
148
|
-
value: formattedValueForAutoComplete,
|
|
149
|
-
onChange: function onChange(values) {
|
|
150
|
-
bind.onChange(values.map(function (value) {
|
|
151
|
-
return {
|
|
152
|
-
modelId: value.id
|
|
153
|
-
};
|
|
154
|
-
}));
|
|
155
|
-
},
|
|
156
|
-
label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Content Models"]))),
|
|
157
|
-
description: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Cannot be changed later"]))),
|
|
158
|
-
options: options,
|
|
159
|
-
disabled: isFieldLocked
|
|
160
|
-
}));
|
|
161
|
-
})));
|
|
168
|
+
renderSettings: function renderSettings() {
|
|
169
|
+
return /*#__PURE__*/_react.default.createElement(RefFieldSettings, null);
|
|
162
170
|
},
|
|
163
171
|
graphql: {
|
|
164
172
|
queryField:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","RefFieldSettings","useModel","model","useForm","formData","data","lockedFields","fieldId","isFieldLocked","some","lockedField","useQuery","LIST_CONTENT_MODELS","loading","error","useSnackbar","showSnackbar","message","options","useMemo","models","get","map","id","modelId","name","atLeastOneItem","useCallback","value","validation","validate","ValidationError","bind","formattedValueForAutoComplete","filter","option","values","onChange","plugin","type","field","validators","listValidators","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","settings","renderer","renderSettings","graphql","queryField"],"sources":["ref.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { LIST_CONTENT_MODELS, ListCmsModelsQueryResponse } from \"../../viewsGraphql\";\nimport { validation, ValidationError } from \"@webiny/validation\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CmsModelFieldTypePlugin, CmsModel } from \"~/types\";\nimport { ReactComponent as RefIcon } from \"./icons/round-link-24px.svg\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Bind, BindComponentRenderProp, useForm } from \"@webiny/form\";\nimport { useQuery, useModel } from \"~/admin/hooks\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst RefFieldSettings = () => {\n const { model } = useModel();\n const { data: formData } = useForm();\n const lockedFields = model.lockedFields || [];\n const fieldId = (formData || {}).fieldId || null;\n const isFieldLocked = lockedFields.some(\n lockedField => fieldId && lockedField.fieldId === fieldId\n );\n\n const { data, loading, error } = useQuery<ListCmsModelsQueryResponse>(LIST_CONTENT_MODELS);\n const { showSnackbar } = useSnackbar();\n\n if (error) {\n showSnackbar(error.message);\n return null;\n }\n\n // Format options for the Autocomplete component.\n const options = useMemo(() => {\n const models = get(data, \"listContentModels.data\", []) as CmsModel[];\n return models.map(model => {\n return { id: model.modelId, name: model.name };\n });\n }, [data]);\n\n const atLeastOneItem = useCallback(async value => {\n try {\n await validation.validate(value, \"required,minLength:1\");\n } catch (err) {\n throw new ValidationError(`Please select at least 1 item`);\n }\n }, []);\n\n return (\n <Grid>\n {loading && <CircularProgress />}\n <Cell span={12}>\n <Bind name={\"settings.models\"} validators={atLeastOneItem}>\n {(bind: BindComponentRenderProp<CmsModel[]>) => {\n // Format value prop for MultiAutoComplete component.\n const formattedValueForAutoComplete = options.filter(option =>\n bind.value.some(({ modelId }) => option.id === modelId)\n );\n\n return (\n <MultiAutoComplete\n {...bind}\n value={formattedValueForAutoComplete}\n onChange={(values: CmsModel[]) => {\n bind.onChange(values.map(value => ({ modelId: value.id })));\n }}\n label={t`Content Models`}\n description={t`Cannot be changed later`}\n options={options}\n disabled={isFieldLocked}\n />\n );\n }}\n </Bind>\n </Cell>\n </Grid>\n );\n};\n\nconst plugin: CmsModelFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-ref\",\n field: {\n type: \"ref\",\n validators: [\"required\"],\n listValidators: [\"minLength\", \"maxLength\"],\n label: t`Reference`,\n description: t`Reference existing content entries. For example, a book can reference one or more authors.`,\n icon: <RefIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: false,\n multipleValuesLabel: t`Use as a list of references`,\n createField() {\n return {\n type: this.type,\n settings: {\n models: []\n },\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings() {\n return <RefFieldSettings />;\n },\n graphql: {\n queryField: /* GraphQL */ `\n {\n modelId\n id\n }\n `\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const plugin:
|
|
1
|
+
import { CmsModelFieldTypePlugin } from "../../../types";
|
|
2
|
+
declare const plugin: CmsModelFieldTypePlugin;
|
|
3
3
|
export default plugin;
|
|
@@ -15,10 +15,12 @@ var _i18n = require("@webiny/app/i18n");
|
|
|
15
15
|
|
|
16
16
|
var _Grid = require("@webiny/ui/Grid");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _text_snippet = require("@material-design-icons/svg/outlined/text_snippet.svg");
|
|
19
19
|
|
|
20
20
|
var _Input = require("@webiny/ui/Input");
|
|
21
21
|
|
|
22
|
+
var _form = require("@webiny/form");
|
|
23
|
+
|
|
22
24
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
23
25
|
|
|
24
26
|
var t = _i18n.i18n.ns("app-headless-cms/admin/fields");
|
|
@@ -30,7 +32,7 @@ var plugin = {
|
|
|
30
32
|
type: "rich-text",
|
|
31
33
|
label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Rich text"]))),
|
|
32
34
|
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Text formatting with references and media."]))),
|
|
33
|
-
icon: /*#__PURE__*/_react.default.createElement(
|
|
35
|
+
icon: /*#__PURE__*/_react.default.createElement(_text_snippet.ReactComponent, null),
|
|
34
36
|
allowMultipleValues: true,
|
|
35
37
|
allowPredefinedValues: false,
|
|
36
38
|
multipleValuesLabel: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Use as a list of rich texts"]))),
|
|
@@ -43,11 +45,10 @@ var plugin = {
|
|
|
43
45
|
}
|
|
44
46
|
};
|
|
45
47
|
},
|
|
46
|
-
renderSettings: function renderSettings(
|
|
47
|
-
var Bind = _ref.form.Bind;
|
|
48
|
+
renderSettings: function renderSettings() {
|
|
48
49
|
return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
49
50
|
span: 12
|
|
50
|
-
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
51
|
+
}, /*#__PURE__*/_react.default.createElement(_form.Bind, {
|
|
51
52
|
name: "placeholderText"
|
|
52
53
|
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
53
54
|
label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Placeholder text"]))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","plugin","type","name","field","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings"
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","plugin","type","name","field","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings"],"sources":["richText.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelFieldTypePlugin } from \"~/types\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { ReactComponent as NotesIcon } from \"@material-design-icons/svg/outlined/text_snippet.svg\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Bind } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst plugin: CmsModelFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-richText\",\n field: {\n type: \"rich-text\",\n label: t`Rich text`,\n description: t`Text formatting with references and media.`,\n icon: <NotesIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: false,\n multipleValuesLabel: t`Use as a list of rich texts`,\n createField() {\n return {\n type: this.type,\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings() {\n return (\n <Grid>\n <Cell span={12}>\n <Bind name={\"placeholderText\"}>\n <Input\n label={t`Placeholder text`}\n description={t`Placeholder text (optional)`}\n />\n </Bind>\n </Cell>\n </Grid>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,+BAAR,CAAV;;AAEA,IAAMC,MAA+B,GAAG;EACpCC,IAAI,EAAE,uBAD8B;EAEpCC,IAAI,EAAE,gCAF8B;EAGpCC,KAAK,EAAE;IACHF,IAAI,EAAE,WADH;IAEHG,KAAK,EAAEP,CAAF,4FAFF;IAGHQ,WAAW,EAAER,CAAF,+HAHR;IAIHS,IAAI,eAAE,6BAAC,4BAAD,OAJH;IAKHC,mBAAmB,EAAE,IALlB;IAMHC,qBAAqB,EAAE,KANpB;IAOHC,mBAAmB,EAAEZ,CAAF,gHAPhB;IAQHa,WARG,yBAQW;MACV,OAAO;QACHT,IAAI,EAAE,KAAKA,IADR;QAEHU,UAAU,EAAE,EAFT;QAGHC,QAAQ,EAAE;UACNV,IAAI,EAAE;QADA;MAHP,CAAP;IAOH,CAhBE;IAiBHW,cAjBG,4BAiBc;MACb,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,YAAD;QACI,KAAK,EAAEhB,CAAF,qGADT;QAEI,WAAW,EAAEA,CAAF;MAFf,EADJ,CADJ,CADJ,CADJ;IAYH;EA9BE;AAH6B,CAAxC;eAqCeG,M"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const plugin:
|
|
1
|
+
import { CmsModelFieldTypePlugin } from "../../../types";
|
|
2
|
+
declare const plugin: CmsModelFieldTypePlugin;
|
|
3
3
|
export default plugin;
|
|
@@ -21,6 +21,8 @@ var _Input = require("@webiny/ui/Input");
|
|
|
21
21
|
|
|
22
22
|
var _PredefinedValuesDynamicFieldset = _interopRequireDefault(require("./PredefinedValuesDynamicFieldset"));
|
|
23
23
|
|
|
24
|
+
var _form = require("@webiny/form");
|
|
25
|
+
|
|
24
26
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
25
27
|
|
|
26
28
|
var t = _i18n.i18n.ns("app-headless-cms/admin/fields");
|
|
@@ -46,11 +48,10 @@ var plugin = {
|
|
|
46
48
|
}
|
|
47
49
|
};
|
|
48
50
|
},
|
|
49
|
-
renderSettings: function renderSettings(
|
|
50
|
-
var Bind = _ref.form.Bind;
|
|
51
|
+
renderSettings: function renderSettings() {
|
|
51
52
|
return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
52
53
|
span: 12
|
|
53
|
-
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement(_form.Bind, {
|
|
54
55
|
name: "placeholderText"
|
|
55
56
|
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
56
57
|
label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Placeholder text"]))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","plugin","type","name","field","validators","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings","
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","plugin","type","name","field","validators","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings","renderPredefinedValues","props"],"sources":["text.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as TextIcon } from \"./icons/round-text_fields-24px.svg\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { CmsModelFieldTypePlugin } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Input } from \"@webiny/ui/Input\";\nimport PredefinedValuesDynamicFieldset from \"./PredefinedValuesDynamicFieldset\";\nimport { Bind } from \"@webiny/form\";\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst plugin: CmsModelFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-text\",\n field: {\n type: \"text\",\n validators: [\"required\", \"minLength\", \"maxLength\", \"pattern\", \"unique\"],\n label: t`Text`,\n description: t`Titles, names, single line values.`,\n icon: <TextIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: true,\n multipleValuesLabel: t`Use as a list of texts`,\n createField() {\n return {\n type: this.type,\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings() {\n return (\n <Grid>\n <Cell span={12}>\n <Bind name={\"placeholderText\"}>\n <Input\n label={t`Placeholder text`}\n description={t`Placeholder text (optional)`}\n />\n </Bind>\n </Cell>\n </Grid>\n );\n },\n renderPredefinedValues(props) {\n return (\n <PredefinedValuesDynamicFieldset {...props}>\n <Input label={t`Value`} />\n </PredefinedValuesDynamicFieldset>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AACA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,+BAAR,CAAV;;AAEA,IAAMC,MAA+B,GAAG;EACpCC,IAAI,EAAE,uBAD8B;EAEpCC,IAAI,EAAE,4BAF8B;EAGpCC,KAAK,EAAE;IACHF,IAAI,EAAE,MADH;IAEHG,UAAU,EAAE,CAAC,UAAD,EAAa,WAAb,EAA0B,WAA1B,EAAuC,SAAvC,EAAkD,QAAlD,CAFT;IAGHC,KAAK,EAAER,CAAF,uFAHF;IAIHS,WAAW,EAAET,CAAF,uHAJR;IAKHU,IAAI,eAAE,6BAAC,oCAAD,OALH;IAMHC,mBAAmB,EAAE,IANlB;IAOHC,qBAAqB,EAAE,IAPpB;IAQHC,mBAAmB,EAAEb,CAAF,2GARhB;IASHc,WATG,yBASW;MACV,OAAO;QACHV,IAAI,EAAE,KAAKA,IADR;QAEHW,UAAU,EAAE,EAFT;QAGHC,QAAQ,EAAE;UACNX,IAAI,EAAE;QADA;MAHP,CAAP;IAOH,CAjBE;IAkBHY,cAlBG,4BAkBc;MACb,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,YAAD;QACI,KAAK,EAAEjB,CAAF,qGADT;QAEI,WAAW,EAAEA,CAAF;MAFf,EADJ,CADJ,CADJ,CADJ;IAYH,CA/BE;IAgCHkB,sBAhCG,kCAgCoBC,KAhCpB,EAgC2B;MAC1B,oBACI,6BAAC,wCAAD,EAAqCA,KAArC,eACI,6BAAC,YAAD;QAAO,KAAK,EAAEnB,CAAF;MAAZ,EADJ,CADJ;IAKH;EAtCE;AAH6B,CAAxC;eA6CeG,M"}
|
package/admin/plugins/index.d.ts
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
declare const _default: () => (import("../../types").CmsEditorFormSettingsPlugin | import("../../types").CmsIconsPlugin | import("../../types").CmsFieldValueTransformer
|
|
2
|
+
declare const _default: () => (import("../../types").CmsEditorFormSettingsPlugin | import("../../types").CmsIconsPlugin | import("../../types").CmsFieldValueTransformer<{
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
fieldId: string;
|
|
6
|
+
storageId?: string | undefined;
|
|
7
|
+
label?: string | undefined;
|
|
8
|
+
helpText?: string | undefined;
|
|
9
|
+
placeholderText?: string | undefined;
|
|
10
|
+
validation?: import("../../types").CmsModelFieldValidator[] | undefined;
|
|
11
|
+
listValidation?: import("../../types").CmsModelFieldValidator[] | undefined;
|
|
12
|
+
multipleValues?: boolean | undefined;
|
|
13
|
+
predefinedValues?: import("../../types").CmsEditorFieldPredefinedValues | undefined;
|
|
14
|
+
settings?: {
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
defaultValue?: string | null | undefined;
|
|
17
|
+
defaultSetValue?: string | undefined;
|
|
18
|
+
type?: string | undefined;
|
|
19
|
+
fields?: any[] | undefined;
|
|
20
|
+
layout?: string[][] | undefined;
|
|
21
|
+
models?: Pick<import("../../types").CmsModel, "name" | "modelId">[] | undefined;
|
|
22
|
+
templates?: import("../../types").CmsDynamicZoneTemplate[] | undefined;
|
|
23
|
+
imagesOnly?: boolean | undefined;
|
|
24
|
+
} | undefined;
|
|
25
|
+
renderer: {
|
|
26
|
+
name: string;
|
|
27
|
+
};
|
|
28
|
+
tags?: string[] | undefined;
|
|
29
|
+
}>[] | import("@webiny/app/types").RoutePlugin[] | import("@webiny/app-admin/types").AdminInstallationPlugin | import("@webiny/app-admin/types").AdminAppPermissionRendererPlugin | import("@webiny/app").ApolloCacheObjectIdPlugin<import("@webiny/app/plugins/ApolloCacheObjectIdPlugin").ApolloCacheObject> | import("../../types").CmsContentDetailsPlugin[] | {
|
|
3
30
|
name: string;
|
|
4
31
|
type: string;
|
|
5
32
|
render(): JSX.Element;
|
|
@@ -210,7 +210,7 @@ var CMSPermissions = function CMSPermissions(_ref) {
|
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
var hasFullAccess = value.
|
|
213
|
+
var hasFullAccess = value.some(function (item) {
|
|
214
214
|
return item.name === CMS_PERMISSION_FULL_ACCESS || item.name === "*";
|
|
215
215
|
});
|
|
216
216
|
|
|
@@ -291,12 +291,7 @@ var CMSPermissions = function CMSPermissions(_ref) {
|
|
|
291
291
|
}, []);
|
|
292
292
|
return /*#__PURE__*/_react.default.createElement(_form.Form, {
|
|
293
293
|
data: formData,
|
|
294
|
-
onChange:
|
|
295
|
-
/**
|
|
296
|
-
* We know that data is CmsSecurityPermission.
|
|
297
|
-
*/
|
|
298
|
-
return onFormChange(data);
|
|
299
|
-
}
|
|
294
|
+
onChange: onFormChange
|
|
300
295
|
}, function (_ref2) {
|
|
301
296
|
var data = _ref2.data,
|
|
302
297
|
Bind = _ref2.Bind,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","CMS_PERMISSION","CMS_PERMISSION_FULL_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","ENTITIES","API_ENDPOINTS","id","name","GRAPHQL_API_TYPES_LINK","CMSPermissions","value","onChange","useI18N","getLocales","canRead","useCallback","permissionName","permission","find","item","rwd","includes","getFormLocales","localePermission","startsWith","map","l","code","Array","isArray","locales","onFormChange","data","newValue","filter","accessLevel","push","endpoints","forEach","api","entity","accessScope","own","pw","groups","undefined","models","join","props","reduce","acc","locale","formData","useMemo","hasFullAccess","permissions","length","returnData","p","replace","entityPermission","split","Object","assign","getSelectedContentModelGroups","contentModelGroupAccessScope","contentModelGroupProps","Bind","setValue","graphQLEndpointAccess","gridNoPaddingClass","link","getValue"],"sources":["CmsPermissions.tsx"],"sourcesContent":["/**\n * @pavel Please review types for security permissions\n * TODO @ts-refactor\n */\nimport React, { Fragment, useCallback, useMemo } from \"react\";\nimport ContentModelGroupPermission from \"./components/ContentModelGroupPermission\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { ContentModelPermission } from \"./components/ContentModelPermission\";\nimport { ContentEntryPermission } from \"./components/ContentEntryPermission\";\nimport { Checkbox, CheckboxGroup } from \"@webiny/ui/Checkbox\";\nimport { useI18N } from \"@webiny/app-i18n/hooks/useI18N\";\nimport { Link } from \"@webiny/react-router\";\nimport { CmsSecurityPermission } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/plugins/permissionRenderer\");\n\nconst CMS_PERMISSION = \"cms\";\nconst CMS_PERMISSION_FULL_ACCESS = \"cms.*\";\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\nconst ENTITIES = [\"contentModel\", \"contentModelGroup\", \"contentEntry\"];\nconst API_ENDPOINTS = [\n { id: \"read\", name: \"Read\" },\n { id: \"manage\", name: \"Manage\" },\n { id: \"preview\", name: \"Preview\" }\n];\n\nconst GRAPHQL_API_TYPES_LINK =\n \"https://www.webiny.com/docs/key-topics/webiny-applications/headless-cms/graphql-api/#graphql-api-types\";\n\nexport interface CMSPermissionsProps {\n value: CmsSecurityPermission[];\n onChange: (value: CmsSecurityPermission[]) => void;\n}\nexport const CMSPermissions: React.FC<CMSPermissionsProps> = ({ value, onChange }) => {\n const { getLocales } = useI18N();\n\n const canRead = useCallback((value: any[], permissionName: string) => {\n const permission = value.find(item => item.name === permissionName);\n\n if (!permission) {\n return false;\n }\n\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(\"r\");\n }, []);\n\n const getFormLocales = () => {\n const localePermission = (value || []).find(item => item.name.startsWith(\"content.i18n\"));\n if (!localePermission) {\n return getLocales().map(l => l.code);\n }\n\n return Array.isArray(localePermission.locales)\n ? localePermission.locales\n : getLocales().map(l => l.code);\n };\n\n const onFormChange = useCallback(\n (data: CmsSecurityPermission) => {\n let newValue: CmsSecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `cms*` permission objects.\n // Based on the `data` we rebuild new permission object from scratch.\n newValue = value.filter(item => !item.name.startsWith(CMS_PERMISSION));\n }\n\n if (data.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (data.accessLevel === FULL_ACCESS) {\n newValue.push({\n name: CMS_PERMISSION_FULL_ACCESS\n });\n onChange(newValue);\n return;\n }\n\n const endpoints = data.endpoints;\n\n // Handling custom access level.\n if (endpoints && Array.isArray(data.endpoints)) {\n API_ENDPOINTS.forEach(api => {\n if (endpoints.includes(api.id)) {\n newValue.push({\n name: `${CMS_PERMISSION}.endpoint.${api.id}`\n });\n }\n });\n }\n\n const locales = getFormLocales();\n\n // Content models, content model groups, content entries\n ENTITIES.forEach(entity => {\n const accessScope = data[`${entity}AccessScope`];\n if (accessScope && accessScope !== NO_ACCESS) {\n const permission: CmsSecurityPermission = {\n name: `${CMS_PERMISSION}.${entity}`,\n own: false,\n rwd: \"r\",\n pw: \"\",\n groups: undefined,\n models: undefined\n };\n\n if (accessScope === \"own\") {\n permission.own = true;\n permission.rwd = \"rwd\";\n } else {\n permission.rwd = data[`${entity}RWD`] || \"r\";\n }\n\n permission.pw = (data[`${entity}PW`] || []).join(\"\");\n\n if (accessScope === \"models\") {\n permission.models = {};\n }\n\n if (accessScope === \"groups\") {\n permission.groups = {};\n }\n\n const props = data[`${entity}Props`];\n if (props) {\n [\"models\", \"groups\"].forEach(entity => {\n if (accessScope === entity && props[entity]) {\n permission[entity] = locales.reduce((acc, locale) => {\n if (props[entity][locale]) {\n acc[locale] = props[entity][locale];\n }\n return acc;\n }, {} as Record<string, string>);\n }\n });\n }\n\n newValue.push(permission);\n }\n });\n // Remove dependent permissions.\n // The \"cms.contentModel\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModelGroup\".\n if (!canRead(newValue, \"cms.contentModelGroup\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentModel\");\n }\n // The \"cms.contentEntry\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModel\".\n if (!canRead(newValue, \"cms.contentModel\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentEntry\");\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n // This function only runs once on Form mount\n if (!Array.isArray(value)) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n const hasFullAccess = value.find(\n item => item.name === CMS_PERMISSION_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return {\n accessLevel: FULL_ACCESS,\n endpoints: API_ENDPOINTS.map(item => item.id)\n };\n }\n\n const permissions = value.filter(item => item.name.startsWith(CMS_PERMISSION));\n\n if (!permissions.length) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n // We're dealing with custom permissions. Let's first prepare data for \"content models\", \"content model groups\", \"content entries\" and \"environments\".\n const returnData = {\n accessLevel: CUSTOM_ACCESS,\n endpoints: permissions\n .filter(p => p.name.startsWith(\"cms.endpoint.\"))\n .map(p => p.name.replace(\"cms.endpoint.\", \"\"))\n };\n\n ENTITIES.forEach(entity => {\n const data: Record<string, any> = {\n [`${entity}AccessScope`]: FULL_ACCESS,\n [`${entity}RWD`]: \"r\",\n [`${entity}Props`]: {}\n };\n\n const entityPermission = permissions.find(\n item => item.name === `${CMS_PERMISSION}.${entity}`\n );\n\n if (entityPermission) {\n data[`${entity}AccessScope`] = entityPermission.own ? \"own\" : FULL_ACCESS;\n if (data[`${entity}AccessScope`] === \"own\") {\n data[`${entity}RWD`] = \"rwd\";\n } else {\n data[`${entity}RWD`] = entityPermission.rwd;\n }\n\n // If there are any non-empty props we'll set \"AccessScope\" to that prop.\n if (entityPermission.models) {\n data[`${entity}AccessScope`] = \"models\";\n data[`${entity}Props`] = { models: entityPermission.models };\n }\n\n if (entityPermission.groups) {\n data[`${entity}AccessScope`] = \"groups\";\n data[`${entity}Props`] = { groups: entityPermission.groups };\n }\n\n if (entity === \"contentEntry\") {\n data[`${entity}PW`] = entityPermission.pw ? entityPermission.pw.split(\"\") : [];\n }\n }\n\n Object.assign(returnData, data);\n });\n\n return returnData;\n }, []);\n\n const locales = getFormLocales();\n\n const getSelectedContentModelGroups = useCallback(data => {\n if (data && data.contentModelGroupAccessScope === \"groups\" && data.contentModelGroupProps) {\n return data.contentModelGroupProps.groups;\n }\n }, []);\n\n return (\n <Form\n data={formData}\n onChange={data => {\n /**\n * We know that data is CmsSecurityPermission.\n */\n return onFormChange(data as unknown as CmsSecurityPermission);\n }}\n >\n {({ data, Bind, setValue }) => {\n const endpoints = data.endpoints || [];\n const graphQLEndpointAccess =\n endpoints.includes(\"read\") ||\n endpoints.includes(\"manage\") ||\n endpoints.includes(\"preview\");\n\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <>\n <Grid>\n <Cell span={12}>\n <Bind name={\"endpoints\"}>\n <CheckboxGroup\n label={t`GraphQL API types`}\n description={t`Each type has a separate URL and a specific purpose.\n Check out the {link} key topic to learn more.`({\n link: (\n <Link\n to={GRAPHQL_API_TYPES_LINK}\n target={\"_blank\"}\n >\n Headless CMS GraphQL API\n </Link>\n )\n })}\n >\n {({ getValue, onChange }) =>\n API_ENDPOINTS.map(({ id, name }) => (\n <Checkbox\n key={id}\n label={name}\n value={getValue(id)}\n onChange={onChange(id)}\n />\n ))\n }\n </CheckboxGroup>\n </Bind>\n </Cell>\n </Grid>\n {graphQLEndpointAccess && (\n <ContentModelGroupPermission\n data={data}\n Bind={Bind}\n entity={\"contentModelGroup\"}\n title={\"Content Model Groups\"}\n locales={locales}\n />\n )}\n\n {graphQLEndpointAccess &&\n canRead(value, \"cms.contentModelGroup\") && (\n <ContentModelPermission\n locales={locales}\n data={data}\n setValue={setValue}\n Bind={Bind}\n entity={\"contentModel\"}\n title={\"Content Models\"}\n selectedContentModelGroups={getSelectedContentModelGroups(\n data\n )}\n />\n )}\n\n {graphQLEndpointAccess && canRead(value, \"cms.contentModel\") && (\n <ContentEntryPermission\n data={data}\n Bind={Bind}\n setValue={setValue}\n entity={\"contentEntry\"}\n title={\"Content Entries\"}\n />\n )}\n </>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","CMS_PERMISSION","CMS_PERMISSION_FULL_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","ENTITIES","API_ENDPOINTS","id","name","GRAPHQL_API_TYPES_LINK","CMSPermissions","value","onChange","useI18N","getLocales","canRead","useCallback","permissionName","permission","find","item","rwd","includes","getFormLocales","localePermission","startsWith","map","l","code","Array","isArray","locales","onFormChange","data","newValue","filter","accessLevel","push","endpoints","forEach","api","entity","accessScope","own","pw","groups","undefined","models","join","props","reduce","acc","locale","formData","useMemo","hasFullAccess","some","permissions","length","returnData","p","replace","entityPermission","split","Object","assign","getSelectedContentModelGroups","contentModelGroupAccessScope","contentModelGroupProps","Bind","setValue","graphQLEndpointAccess","gridNoPaddingClass","link","getValue"],"sources":["CmsPermissions.tsx"],"sourcesContent":["/**\n * @pavel Please review types for security permissions\n * TODO @ts-refactor\n */\nimport React, { Fragment, useCallback, useMemo } from \"react\";\nimport ContentModelGroupPermission from \"./components/ContentModelGroupPermission\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { ContentModelPermission } from \"./components/ContentModelPermission\";\nimport { ContentEntryPermission } from \"./components/ContentEntryPermission\";\nimport { Checkbox, CheckboxGroup } from \"@webiny/ui/Checkbox\";\nimport { useI18N } from \"@webiny/app-i18n/hooks/useI18N\";\nimport { Link } from \"@webiny/react-router\";\nimport { CmsSecurityPermission } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/plugins/permissionRenderer\");\n\nconst CMS_PERMISSION = \"cms\";\nconst CMS_PERMISSION_FULL_ACCESS = \"cms.*\";\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\nconst ENTITIES = [\"contentModel\", \"contentModelGroup\", \"contentEntry\"];\nconst API_ENDPOINTS = [\n { id: \"read\", name: \"Read\" },\n { id: \"manage\", name: \"Manage\" },\n { id: \"preview\", name: \"Preview\" }\n];\n\nconst GRAPHQL_API_TYPES_LINK =\n \"https://www.webiny.com/docs/key-topics/webiny-applications/headless-cms/graphql-api/#graphql-api-types\";\n\nexport interface CMSPermissionsProps {\n value: CmsSecurityPermission[];\n onChange: (value: CmsSecurityPermission[]) => void;\n}\nexport const CMSPermissions: React.FC<CMSPermissionsProps> = ({ value, onChange }) => {\n const { getLocales } = useI18N();\n\n const canRead = useCallback((value: any[], permissionName: string) => {\n const permission = value.find(item => item.name === permissionName);\n\n if (!permission) {\n return false;\n }\n\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(\"r\");\n }, []);\n\n const getFormLocales = () => {\n const localePermission = (value || []).find(item => item.name.startsWith(\"content.i18n\"));\n if (!localePermission) {\n return getLocales().map(l => l.code);\n }\n\n return Array.isArray(localePermission.locales)\n ? localePermission.locales\n : getLocales().map(l => l.code);\n };\n\n const onFormChange = useCallback(\n (data: CmsSecurityPermission) => {\n let newValue: CmsSecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `cms*` permission objects.\n // Based on the `data` we rebuild new permission object from scratch.\n newValue = value.filter(item => !item.name.startsWith(CMS_PERMISSION));\n }\n\n if (data.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (data.accessLevel === FULL_ACCESS) {\n newValue.push({\n name: CMS_PERMISSION_FULL_ACCESS\n });\n onChange(newValue);\n return;\n }\n\n const endpoints = data.endpoints;\n\n // Handling custom access level.\n if (endpoints && Array.isArray(data.endpoints)) {\n API_ENDPOINTS.forEach(api => {\n if (endpoints.includes(api.id)) {\n newValue.push({\n name: `${CMS_PERMISSION}.endpoint.${api.id}`\n });\n }\n });\n }\n\n const locales = getFormLocales();\n\n // Content models, content model groups, content entries\n ENTITIES.forEach(entity => {\n const accessScope = data[`${entity}AccessScope`];\n if (accessScope && accessScope !== NO_ACCESS) {\n const permission: CmsSecurityPermission = {\n name: `${CMS_PERMISSION}.${entity}`,\n own: false,\n rwd: \"r\",\n pw: \"\",\n groups: undefined,\n models: undefined\n };\n\n if (accessScope === \"own\") {\n permission.own = true;\n permission.rwd = \"rwd\";\n } else {\n permission.rwd = data[`${entity}RWD`] || \"r\";\n }\n\n permission.pw = (data[`${entity}PW`] || []).join(\"\");\n\n if (accessScope === \"models\") {\n permission.models = {};\n }\n\n if (accessScope === \"groups\") {\n permission.groups = {};\n }\n\n const props = data[`${entity}Props`];\n if (props) {\n [\"models\", \"groups\"].forEach(entity => {\n if (accessScope === entity && props[entity]) {\n permission[entity] = locales.reduce((acc, locale) => {\n if (props[entity][locale]) {\n acc[locale] = props[entity][locale];\n }\n return acc;\n }, {} as Record<string, string>);\n }\n });\n }\n\n newValue.push(permission);\n }\n });\n // Remove dependent permissions.\n // The \"cms.contentModel\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModelGroup\".\n if (!canRead(newValue, \"cms.contentModelGroup\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentModel\");\n }\n // The \"cms.contentEntry\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModel\".\n if (!canRead(newValue, \"cms.contentModel\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentEntry\");\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n // This function only runs once on Form mount\n if (!Array.isArray(value)) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n const hasFullAccess = value.some(\n item => item.name === CMS_PERMISSION_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return {\n accessLevel: FULL_ACCESS,\n endpoints: API_ENDPOINTS.map(item => item.id)\n };\n }\n\n const permissions = value.filter(item => item.name.startsWith(CMS_PERMISSION));\n\n if (!permissions.length) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n // We're dealing with custom permissions. Let's first prepare data for \"content models\", \"content model groups\", \"content entries\" and \"environments\".\n const returnData = {\n accessLevel: CUSTOM_ACCESS,\n endpoints: permissions\n .filter(p => p.name.startsWith(\"cms.endpoint.\"))\n .map(p => p.name.replace(\"cms.endpoint.\", \"\"))\n };\n\n ENTITIES.forEach(entity => {\n const data: Record<string, any> = {\n [`${entity}AccessScope`]: FULL_ACCESS,\n [`${entity}RWD`]: \"r\",\n [`${entity}Props`]: {}\n };\n\n const entityPermission = permissions.find(\n item => item.name === `${CMS_PERMISSION}.${entity}`\n );\n\n if (entityPermission) {\n data[`${entity}AccessScope`] = entityPermission.own ? \"own\" : FULL_ACCESS;\n if (data[`${entity}AccessScope`] === \"own\") {\n data[`${entity}RWD`] = \"rwd\";\n } else {\n data[`${entity}RWD`] = entityPermission.rwd;\n }\n\n // If there are any non-empty props we'll set \"AccessScope\" to that prop.\n if (entityPermission.models) {\n data[`${entity}AccessScope`] = \"models\";\n data[`${entity}Props`] = { models: entityPermission.models };\n }\n\n if (entityPermission.groups) {\n data[`${entity}AccessScope`] = \"groups\";\n data[`${entity}Props`] = { groups: entityPermission.groups };\n }\n\n if (entity === \"contentEntry\") {\n data[`${entity}PW`] = entityPermission.pw ? entityPermission.pw.split(\"\") : [];\n }\n }\n\n Object.assign(returnData, data);\n });\n\n return returnData;\n }, []) as CmsSecurityPermission;\n\n const locales = getFormLocales();\n\n const getSelectedContentModelGroups = useCallback(data => {\n if (data && data.contentModelGroupAccessScope === \"groups\" && data.contentModelGroupProps) {\n return data.contentModelGroupProps.groups;\n }\n }, []);\n\n return (\n <Form<CmsSecurityPermission> data={formData} onChange={onFormChange}>\n {({ data, Bind, setValue }) => {\n const endpoints = data.endpoints || [];\n const graphQLEndpointAccess =\n endpoints.includes(\"read\") ||\n endpoints.includes(\"manage\") ||\n endpoints.includes(\"preview\");\n\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <>\n <Grid>\n <Cell span={12}>\n <Bind name={\"endpoints\"}>\n <CheckboxGroup\n label={t`GraphQL API types`}\n description={t`Each type has a separate URL and a specific purpose.\n Check out the {link} key topic to learn more.`({\n link: (\n <Link\n to={GRAPHQL_API_TYPES_LINK}\n target={\"_blank\"}\n >\n Headless CMS GraphQL API\n </Link>\n )\n })}\n >\n {({ getValue, onChange }) =>\n API_ENDPOINTS.map(({ id, name }) => (\n <Checkbox\n key={id}\n label={name}\n value={getValue(id)}\n onChange={onChange(id)}\n />\n ))\n }\n </CheckboxGroup>\n </Bind>\n </Cell>\n </Grid>\n {graphQLEndpointAccess && (\n <ContentModelGroupPermission\n data={data}\n Bind={Bind}\n entity={\"contentModelGroup\"}\n title={\"Content Model Groups\"}\n locales={locales}\n />\n )}\n\n {graphQLEndpointAccess &&\n canRead(value, \"cms.contentModelGroup\") && (\n <ContentModelPermission\n locales={locales}\n data={data}\n setValue={setValue}\n Bind={Bind}\n entity={\"contentModel\"}\n title={\"Content Models\"}\n selectedContentModelGroups={getSelectedContentModelGroups(\n data\n )}\n />\n )}\n\n {graphQLEndpointAccess && canRead(value, \"cms.contentModel\") && (\n <ContentEntryPermission\n data={data}\n Bind={Bind}\n setValue={setValue}\n entity={\"contentEntry\"}\n title={\"Content Entries\"}\n />\n )}\n </>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
|