@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","FieldContainer","styled","display","flexDirection","justifyContent","alignItems","LowerCase","Info","flex","lineHeight","Actions","menuStyles","css","width","right","left","opacity","pointerEvents","allowedTitleFieldTypes","isFieldAllowedToBeTitle","field","parent","multipleValues","includes","type","Field","props","onEdit","useSnackbar","showSnackbar","useContentModelEditor","setData","data","useFieldEditor","getFieldPlugin","getFieldRendererPlugin","useConfirmationDialog","title","message","showConfirmation","lockedFields","isLocked","some","lockedField","fieldId","storageId","onDelete","useCallback","setAsTitle","titleFieldId","response","error","fieldPlugin","editorFieldOptionPlugins","plugins","byType","rendererPlugin","renderer","name","isTitleField","info","filter","Boolean","join","label","map","pl","React","cloneElement","render","key","memo"],"sources":["Field.tsx"],"sourcesContent":["import React, { Fragment, useCallback } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { ReactComponent as EditIcon } from \"~/admin/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/delete.svg\";\nimport { ReactComponent as TitleIcon } from \"~/admin/icons/title-24px.svg\";\nimport { ReactComponent as MoreVerticalIcon } from \"~/admin/icons/more_vert.svg\";\nimport { Menu, MenuItem } from \"@webiny/ui/Menu\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CmsEditorField, CmsEditorFieldOptionPlugin } from \"~/types\";\nimport { ListItemGraphic } from \"@webiny/ui/List\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useContentModelEditor } from \"~/admin/components/ContentModelEditor/useContentModelEditor\";\nimport { useFieldEditor } from \"~/admin/components/FieldEditor/useFieldEditor\";\nimport { useConfirmationDialog } from \"@webiny/app-admin\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/editor/field\");\n\nconst FieldContainer = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n});\n\nconst LowerCase = styled.span`\n text-transform: lowercase;\n`;\n\nconst Info = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n \"> *\": {\n flex: \"1 100%\",\n lineHeight: \"150%\"\n }\n});\n\nconst Actions = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"right\",\n \"> *\": {\n flex: \"1 100%\"\n }\n});\n\nconst menuStyles = css({\n width: 220,\n right: -105,\n left: \"auto !important\",\n \".disabled\": {\n opacity: 0.5,\n pointerEvents: \"none\"\n }\n});\n\nconst allowedTitleFieldTypes: string[] = [\"text\", \"number\"];\n\nconst isFieldAllowedToBeTitle = (field: CmsEditorField, parent?: CmsEditorField) => {\n if (field.multipleValues || parent) {\n return false;\n } else if (allowedTitleFieldTypes.includes(field.type) === false) {\n return false;\n }\n return true;\n};\n\nexport interface FieldProps {\n field: CmsEditorField;\n onDelete: (field: CmsEditorField) => void;\n onEdit: (field: CmsEditorField) => void;\n parent?: CmsEditorField;\n}\nconst Field: React.FC<FieldProps> = props => {\n const { field, onEdit, parent } = props;\n const { showSnackbar } = useSnackbar();\n const { setData, data } = useContentModelEditor();\n const { getFieldPlugin, getFieldRendererPlugin } = useFieldEditor();\n\n const { showConfirmation } = useConfirmationDialog({\n title: t`Warning - You are trying to delete a locked field!`,\n message: (\n <>\n <p>{t`You are about to delete a field which is used in the data storage`}</p>\n <p>{t`All data in that field will be lost and there is no going back!`}</p>\n <p> </p>\n <p>{t`Are you sure you want to continue?`}</p>\n </>\n )\n });\n const lockedFields = data ? data.lockedFields || [] : [];\n const isLocked = lockedFields.some(lockedField => lockedField.fieldId === field.storageId);\n\n const onDelete = useCallback(() => {\n if (!isLocked) {\n props.onDelete(field);\n return;\n }\n showConfirmation(() => {\n props.onDelete(field);\n });\n }, [field.fieldId, lockedFields]);\n\n const setAsTitle = useCallback(async (): Promise<void> => {\n const response = await setData(data => {\n return { ...data, titleFieldId: field.fieldId };\n });\n\n if (response && response.error) {\n return showSnackbar(response.error.message);\n }\n\n showSnackbar(t`Title field set successfully.`);\n }, [field.fieldId, setData]);\n\n const fieldPlugin = getFieldPlugin(field.type);\n const editorFieldOptionPlugins =\n plugins.byType<CmsEditorFieldOptionPlugin>(\"cms-editor-field-option\");\n\n if (!fieldPlugin) {\n return null;\n }\n\n const rendererPlugin = getFieldRendererPlugin(field.renderer.name);\n const isTitleField = data && field.fieldId === data.titleFieldId && !parent;\n\n const info = [\n rendererPlugin?.renderer.name,\n field.multipleValues ? \"multiple values\" : null,\n isTitleField ? \"entry title\" : null\n ]\n .filter(Boolean)\n .join(\", \");\n\n return (\n <Fragment>\n <FieldContainer>\n <Info>\n <Typography use={\"subtitle1\"}>{field.label}</Typography>\n <Typography use={\"caption\"}>\n {fieldPlugin.field.label} {field.multipleValues && <></>}\n <LowerCase>({info})</LowerCase>\n </Typography>\n </Info>\n <Actions>\n <IconButton\n data-testid={\"cms.editor.edit-field\"}\n icon={<EditIcon />}\n onClick={() => onEdit(field)}\n />\n <Menu\n className={menuStyles}\n handle={<IconButton icon={<MoreVerticalIcon />} />}\n >\n {editorFieldOptionPlugins.map(pl =>\n React.cloneElement(pl.render(), { key: pl.name })\n )}\n {/* We only allow this action for top-level fields. */}\n <MenuItem\n disabled={!isFieldAllowedToBeTitle(field, parent)}\n onClick={setAsTitle}\n >\n <ListItemGraphic>\n <Icon icon={<TitleIcon />} />\n </ListItemGraphic>\n {t`Use as title`}\n </MenuItem>\n <MenuItem onClick={onDelete}>\n <ListItemGraphic>\n <Icon icon={<DeleteIcon />} />\n </ListItemGraphic>\n {t`Delete`}\n </MenuItem>\n </Menu>\n </Actions>\n </FieldContainer>\n <div className={\"field-extra\"}>\n {fieldPlugin.field.render && fieldPlugin.field.render({ field, data, setData })}\n </div>\n </Fragment>\n );\n};\n\nexport default React.memo(Field);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","FieldContainer","styled","display","flexDirection","justifyContent","alignItems","LowerCase","Info","flex","lineHeight","Actions","menuStyles","css","width","right","left","opacity","pointerEvents","FieldExtra","allowedTitleFieldTypes","isFieldAllowedToBeTitle","field","parent","multipleValues","includes","type","Field","props","onEdit","useSnackbar","showSnackbar","useModelEditor","setData","data","useModelFieldEditor","getFieldPlugin","getFieldRendererPlugin","useConfirmationDialog","title","message","showConfirmation","lockedFields","isLocked","some","lockedField","fieldId","storageId","onDelete","useCallback","setAsTitle","titleFieldId","response","error","fieldPlugin","editorFieldOptionPlugins","plugins","byType","rendererPlugin","renderer","name","canEdit","canEditSettings","isTitleField","info","filter","Boolean","join","label","map","pl","React","cloneElement","render","key","memo"],"sources":["Field.tsx"],"sourcesContent":["import React, { Fragment, useCallback } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { ReactComponent as EditIcon } from \"@material-design-icons/svg/outlined/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/delete.svg\";\nimport { ReactComponent as TitleIcon } from \"~/admin/icons/title-24px.svg\";\nimport { ReactComponent as MoreVerticalIcon } from \"~/admin/icons/more_vert.svg\";\nimport { Menu, MenuItem } from \"@webiny/ui/Menu\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CmsModelField, CmsEditorFieldOptionPlugin } from \"~/types\";\nimport { ListItemGraphic } from \"@webiny/ui/List\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useModelEditor } from \"~/admin/hooks\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor/useModelFieldEditor\";\nimport { useConfirmationDialog } from \"@webiny/app-admin\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/editor/field\");\n\nconst FieldContainer = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n});\n\nconst LowerCase = styled.span`\n text-transform: lowercase;\n`;\n\nconst Info = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n \"> *\": {\n flex: \"1 100%\",\n lineHeight: \"150%\"\n }\n});\n\nconst Actions = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"right\",\n \"> *\": {\n flex: \"1 100%\"\n }\n});\n\nconst menuStyles = css({\n width: 220,\n right: -105,\n left: \"auto !important\",\n \".disabled\": {\n opacity: 0.5,\n pointerEvents: \"none\"\n }\n});\n\nconst FieldExtra = styled.div`\n padding: 10px 0 10px;\n :empty {\n display: none;\n }\n`;\n\nconst allowedTitleFieldTypes: string[] = [\"text\", \"number\"];\n\nconst isFieldAllowedToBeTitle = (field: CmsModelField, parent?: CmsModelField) => {\n if (field.multipleValues || parent) {\n return false;\n } else if (allowedTitleFieldTypes.includes(field.type) === false) {\n return false;\n }\n return true;\n};\n\nexport interface FieldProps {\n field: CmsModelField;\n onDelete: (field: CmsModelField) => void;\n onEdit: (field: CmsModelField) => void;\n parent?: CmsModelField;\n}\nconst Field: React.FC<FieldProps> = props => {\n const { field, onEdit, parent } = props;\n const { showSnackbar } = useSnackbar();\n const { setData, data } = useModelEditor();\n const { getFieldPlugin, getFieldRendererPlugin } = useModelFieldEditor();\n\n const { showConfirmation } = useConfirmationDialog({\n title: t`Warning - You are trying to delete a locked field!`,\n message: (\n <>\n <p>{t`You are about to delete a field which is used in the data storage`}</p>\n <p>{t`All data in that field will be lost and there is no going back!`}</p>\n <p> </p>\n <p>{t`Are you sure you want to continue?`}</p>\n </>\n )\n });\n const lockedFields = data ? data.lockedFields || [] : [];\n const isLocked = lockedFields.some(lockedField => lockedField.fieldId === field.storageId);\n\n const onDelete = useCallback(() => {\n if (!isLocked) {\n props.onDelete(field);\n return;\n }\n showConfirmation(() => {\n props.onDelete(field);\n });\n }, [field.fieldId, lockedFields]);\n\n const setAsTitle = useCallback(async (): Promise<void> => {\n const response = await setData(data => {\n return { ...data, titleFieldId: field.fieldId };\n });\n\n if (response && response.error) {\n return showSnackbar(response.error.message);\n }\n\n showSnackbar(t`Title field set successfully.`);\n }, [field.fieldId, setData]);\n\n const fieldPlugin = getFieldPlugin(field.type);\n const editorFieldOptionPlugins =\n plugins.byType<CmsEditorFieldOptionPlugin>(\"cms-editor-field-option\");\n\n if (!fieldPlugin) {\n return null;\n }\n\n const rendererPlugin = getFieldRendererPlugin(field.renderer.name);\n const canEdit = fieldPlugin.field.canEditSettings !== false;\n const isTitleField = data && field.fieldId === data.titleFieldId && !parent;\n\n const info = [\n rendererPlugin?.renderer.name,\n field.multipleValues ? \"multiple values\" : null,\n isTitleField ? \"entry title\" : null\n ]\n .filter(Boolean)\n .join(\", \");\n\n return (\n <Fragment>\n <FieldContainer>\n <Info>\n <Typography use={\"subtitle1\"}>{field.label}</Typography>\n <Typography use={\"caption\"}>\n {fieldPlugin.field.label} {field.multipleValues && <></>}\n <LowerCase>({info})</LowerCase>\n </Typography>\n </Info>\n <Actions>\n {canEdit ? (\n <IconButton\n data-testid={\"cms.editor.edit-field\"}\n icon={<EditIcon />}\n onClick={() => onEdit(field)}\n />\n ) : null}\n <Menu\n className={menuStyles}\n handle={<IconButton icon={<MoreVerticalIcon />} />}\n >\n {editorFieldOptionPlugins.map(pl =>\n React.cloneElement(pl.render(), { key: pl.name })\n )}\n {/* We only allow this action for top-level fields. */}\n <MenuItem\n disabled={!isFieldAllowedToBeTitle(field, parent)}\n onClick={setAsTitle}\n >\n <ListItemGraphic>\n <Icon icon={<TitleIcon />} />\n </ListItemGraphic>\n {t`Use as title`}\n </MenuItem>\n <MenuItem onClick={onDelete}>\n <ListItemGraphic>\n <Icon icon={<DeleteIcon />} />\n </ListItemGraphic>\n {t`Delete`}\n </MenuItem>\n </Menu>\n </Actions>\n </FieldContainer>\n <FieldExtra>\n {fieldPlugin.field.render && fieldPlugin.field.render({ field, data, setData })}\n </FieldExtra>\n </Fragment>\n );\n};\n\nexport default React.memo(Field);\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { CmsModelField, CmsEditorFieldsLayout } from "../../../types";
|
|
3
3
|
export interface FieldEditorProps {
|
|
4
|
-
parent?:
|
|
4
|
+
parent?: CmsModelField;
|
|
5
5
|
layout: CmsEditorFieldsLayout;
|
|
6
|
-
fields:
|
|
6
|
+
fields: CmsModelField[];
|
|
7
7
|
onChange: (params: {
|
|
8
|
-
fields:
|
|
8
|
+
fields: CmsModelField[];
|
|
9
9
|
layout: CmsEditorFieldsLayout;
|
|
10
10
|
}) => void;
|
|
11
11
|
}
|
|
@@ -31,10 +31,12 @@ var _Field = _interopRequireDefault(require("./Field"));
|
|
|
31
31
|
|
|
32
32
|
var _Styled = require("./Styled");
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _useModelFieldEditor2 = require("./useModelFieldEditor");
|
|
35
35
|
|
|
36
36
|
var _FieldEditorContext = require("./FieldEditorContext");
|
|
37
37
|
|
|
38
|
+
var _ModelFieldProvider = require("../ModelFieldProvider");
|
|
39
|
+
|
|
38
40
|
var _templateObject;
|
|
39
41
|
|
|
40
42
|
var t = _i18n.i18n.namespace("app-headless-cms/admin/components/editor");
|
|
@@ -42,29 +44,78 @@ var t = _i18n.i18n.namespace("app-headless-cms/admin/components/editor");
|
|
|
42
44
|
var fieldTypes = ["field", "newField"];
|
|
43
45
|
|
|
44
46
|
var Editor = function Editor() {
|
|
45
|
-
var
|
|
46
|
-
parent =
|
|
47
|
-
depth =
|
|
48
|
-
insertField =
|
|
49
|
-
updateField =
|
|
50
|
-
deleteField =
|
|
51
|
-
fields =
|
|
52
|
-
noConflict =
|
|
53
|
-
editField =
|
|
54
|
-
onFieldDrop =
|
|
55
|
-
onEndDrag =
|
|
56
|
-
field =
|
|
57
|
-
dropTarget =
|
|
47
|
+
var _useModelFieldEditor = (0, _useModelFieldEditor2.useModelFieldEditor)(),
|
|
48
|
+
parent = _useModelFieldEditor.parent,
|
|
49
|
+
depth = _useModelFieldEditor.depth,
|
|
50
|
+
insertField = _useModelFieldEditor.insertField,
|
|
51
|
+
updateField = _useModelFieldEditor.updateField,
|
|
52
|
+
deleteField = _useModelFieldEditor.deleteField,
|
|
53
|
+
fields = _useModelFieldEditor.fields,
|
|
54
|
+
noConflict = _useModelFieldEditor.noConflict,
|
|
55
|
+
editField = _useModelFieldEditor.editField,
|
|
56
|
+
onFieldDrop = _useModelFieldEditor.onFieldDrop,
|
|
57
|
+
onEndDrag = _useModelFieldEditor.onEndDrag,
|
|
58
|
+
field = _useModelFieldEditor.field,
|
|
59
|
+
dropTarget = _useModelFieldEditor.dropTarget,
|
|
60
|
+
getFieldPlugin = _useModelFieldEditor.getFieldPlugin;
|
|
61
|
+
|
|
62
|
+
var canDropIntoField = function canDropIntoField(field, draggable) {
|
|
63
|
+
var fieldPlugin = getFieldPlugin(field.type);
|
|
64
|
+
var canAccept = fieldPlugin.field.canAccept;
|
|
65
|
+
|
|
66
|
+
if (typeof canAccept === "function" && !canAccept(field, draggable)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return true;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var isVerticalDropzoneVisible = function isVerticalDropzoneVisible(cb) {
|
|
74
|
+
return function (item) {
|
|
75
|
+
var _fieldPlugin$field$al;
|
|
76
|
+
|
|
77
|
+
if (!parent) {
|
|
78
|
+
return cb(item);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var fieldPlugin = getFieldPlugin(parent.type);
|
|
82
|
+
var allowLayout = (_fieldPlugin$field$al = fieldPlugin.field.allowLayout) !== null && _fieldPlugin$field$al !== void 0 ? _fieldPlugin$field$al : true;
|
|
83
|
+
|
|
84
|
+
if (!allowLayout) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (!canDropIntoField(parent, item)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return cb(item);
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
var isHorizontalDropzoneVisible = function isHorizontalDropzoneVisible(cb) {
|
|
97
|
+
return function (item) {
|
|
98
|
+
if (!parent) {
|
|
99
|
+
return cb(item);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (!canDropIntoField(parent, item)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return cb(item);
|
|
107
|
+
};
|
|
108
|
+
};
|
|
58
109
|
|
|
59
110
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, fields.length === 0 && /*#__PURE__*/_react.default.createElement(_DropZone.Center, {
|
|
111
|
+
isDroppable: isHorizontalDropzoneVisible(function () {
|
|
112
|
+
return true;
|
|
113
|
+
}),
|
|
60
114
|
onDrop: function onDrop(item) {
|
|
61
115
|
return onFieldDrop(item, {
|
|
62
116
|
row: 0,
|
|
63
117
|
index: 0
|
|
64
118
|
});
|
|
65
|
-
},
|
|
66
|
-
style: {
|
|
67
|
-
padding: "5px 0 15px 0"
|
|
68
119
|
}
|
|
69
120
|
}, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Drop your first field here"])))), fields.map(function (row, index) {
|
|
70
121
|
return /*#__PURE__*/_react.default.createElement(_Draggable.default, {
|
|
@@ -95,8 +146,8 @@ var Editor = function Editor() {
|
|
|
95
146
|
}, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
96
147
|
icon: /*#__PURE__*/_react.default.createElement(_roundDrag_indicator24px.ReactComponent, null)
|
|
97
148
|
})), /*#__PURE__*/_react.default.createElement(_DropZone.Horizontal, {
|
|
149
|
+
isVisible: isHorizontalDropzoneVisible(noConflict()),
|
|
98
150
|
"data-testid": "cms-editor-row-droppable-top-".concat(index),
|
|
99
|
-
isVisible: noConflict(),
|
|
100
151
|
onDrop: function onDrop(item) {
|
|
101
152
|
return onFieldDrop(item, {
|
|
102
153
|
row: index,
|
|
@@ -106,8 +157,10 @@ var Editor = function Editor() {
|
|
|
106
157
|
}), /*#__PURE__*/_react.default.createElement(_Styled.Row, {
|
|
107
158
|
"data-testid": "cms.editor.field-row"
|
|
108
159
|
}, row.map(function (field, fieldIndex) {
|
|
109
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
110
|
-
|
|
160
|
+
return /*#__PURE__*/_react.default.createElement(_ModelFieldProvider.ModelFieldProvider, {
|
|
161
|
+
field: field,
|
|
162
|
+
key: field.fieldId
|
|
163
|
+
}, /*#__PURE__*/_react.default.createElement(_Draggable.default, {
|
|
111
164
|
beginDrag: {
|
|
112
165
|
parent: parent ? parent.fieldId : null,
|
|
113
166
|
type: "field",
|
|
@@ -131,9 +184,9 @@ var Editor = function Editor() {
|
|
|
131
184
|
index: fieldIndex
|
|
132
185
|
});
|
|
133
186
|
},
|
|
134
|
-
isVisible: noConflict(function (item) {
|
|
187
|
+
isVisible: isVerticalDropzoneVisible(noConflict(function (item) {
|
|
135
188
|
return fieldTypes.includes(item.type) && (row.length < 4 || (0, _get.default)(item, "pos.row") === index);
|
|
136
|
-
})
|
|
189
|
+
}))
|
|
137
190
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
138
191
|
className: _Styled.fieldHandle
|
|
139
192
|
}, /*#__PURE__*/_react.default.createElement(_Field.default, {
|
|
@@ -144,9 +197,9 @@ var Editor = function Editor() {
|
|
|
144
197
|
})), fieldIndex === row.length - 1 && /*#__PURE__*/_react.default.createElement(_DropZone.Vertical, {
|
|
145
198
|
last: true,
|
|
146
199
|
depth: depth,
|
|
147
|
-
isVisible: noConflict(function (item) {
|
|
200
|
+
isVisible: isVerticalDropzoneVisible(noConflict(function (item) {
|
|
148
201
|
return fieldTypes.includes(item.type) && (row.length < 4 || (0, _get.default)(item, "pos.row") === index);
|
|
149
|
-
}),
|
|
202
|
+
})),
|
|
150
203
|
onDrop: function onDrop(item) {
|
|
151
204
|
return onFieldDrop(item, {
|
|
152
205
|
row: index,
|
|
@@ -154,21 +207,22 @@ var Editor = function Editor() {
|
|
|
154
207
|
});
|
|
155
208
|
}
|
|
156
209
|
}));
|
|
157
|
-
});
|
|
158
|
-
})), index === fields.length - 1
|
|
210
|
+
}));
|
|
211
|
+
})), index === fields.length - 1 ? /*#__PURE__*/_react.default.createElement(_DropZone.Horizontal, {
|
|
159
212
|
"data-testid": "cms-editor-row-droppable-bottom-".concat(index),
|
|
160
213
|
last: true,
|
|
161
|
-
isVisible: noConflict(),
|
|
214
|
+
isVisible: isHorizontalDropzoneVisible(noConflict()),
|
|
162
215
|
onDrop: function onDrop(item) {
|
|
163
216
|
return onFieldDrop(item, {
|
|
164
217
|
row: index + 1,
|
|
165
218
|
index: null
|
|
166
219
|
});
|
|
167
220
|
}
|
|
168
|
-
}));
|
|
221
|
+
}) : null);
|
|
169
222
|
});
|
|
170
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
171
|
-
field: field
|
|
223
|
+
}), field ? /*#__PURE__*/_react.default.createElement(_ModelFieldProvider.ModelFieldProvider, {
|
|
224
|
+
field: field
|
|
225
|
+
}, /*#__PURE__*/_react.default.createElement(_EditFieldDialog.default, {
|
|
172
226
|
onClose: function onClose() {
|
|
173
227
|
return editField(null);
|
|
174
228
|
},
|
|
@@ -185,7 +239,7 @@ var Editor = function Editor() {
|
|
|
185
239
|
});
|
|
186
240
|
editField(null);
|
|
187
241
|
}
|
|
188
|
-
}));
|
|
242
|
+
})) : null);
|
|
189
243
|
};
|
|
190
244
|
|
|
191
245
|
var FieldEditor = function FieldEditor(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","namespace","fieldTypes","Editor","useFieldEditor","parent","depth","insertField","updateField","deleteField","fields","noConflict","editField","onFieldDrop","onEndDrag","field","dropTarget","length","item","row","index","padding","map","fieldId","type","pos","f","join","drag","isDragging","opacity","rowHandle","fieldIndex","fieldContainer","includes","get","fieldHandle","id","position","FieldEditor","props"],"sources":["FieldEditor.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as HandleIcon } from \"~/admin/icons/round-drag_indicator-24px.svg\";\nimport { Center, Vertical, Horizontal } from \"../DropZone\";\nimport Draggable from \"../Draggable\";\nimport EditFieldDialog from \"./EditFieldDialog\";\nimport Field from \"./Field\";\nimport { rowHandle, fieldHandle, fieldContainer, Row, RowContainer } from \"./Styled\";\nimport { useFieldEditor } from \"./useFieldEditor\";\nimport { FieldEditorProvider } from \"./FieldEditorContext\";\nimport { CmsEditorField, CmsEditorFieldsLayout } from \"~/types\";\n\nconst t = i18n.namespace(\"app-headless-cms/admin/components/editor\");\n\nconst fieldTypes: string[] = [\"field\", \"newField\"];\n\nconst Editor: React.FC = () => {\n const {\n parent,\n depth,\n insertField,\n updateField,\n deleteField,\n fields,\n noConflict,\n editField,\n onFieldDrop,\n onEndDrag,\n field,\n dropTarget\n } = useFieldEditor();\n\n return (\n <Fragment>\n {fields.length === 0 && (\n <Center\n onDrop={item =>\n onFieldDrop(item, {\n row: 0,\n index: 0\n })\n }\n style={{ padding: \"5px 0 15px 0\" }}\n >\n {t`Drop your first field here`}\n </Center>\n )}\n\n {fields.map((row, index) => (\n <Draggable\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"row\",\n fields: row,\n pos: { row: index }\n }}\n endDrag={onEndDrag}\n key={row.map(f => f.fieldId).join(\".\")}\n >\n {(\n {\n drag,\n isDragging\n } /* RowContainer start - includes drag handle, drop zones and the Row itself. */\n ) => (\n <RowContainer style={{ opacity: isDragging ? 0.3 : 1 }}>\n <div className={rowHandle} ref={drag}>\n <Icon icon={<HandleIcon />} />\n </div>\n <Horizontal\n data-testid={`cms-editor-row-droppable-top-${index}`}\n isVisible={noConflict()}\n onDrop={item => onFieldDrop(item, { row: index, index: null })}\n />\n {/* Row start - includes field drop zones and fields */}\n <Row data-testid={\"cms.editor.field-row\"}>\n {row.map((field, fieldIndex) => (\n <Draggable\n key={field.fieldId}\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"field\",\n field,\n pos: {\n row: index,\n index: fieldIndex\n }\n }}\n endDrag={onEndDrag}\n >\n {({ drag }) => (\n <div className={fieldContainer} ref={drag}>\n <Vertical\n depth={depth}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex\n })\n }\n isVisible={noConflict(\n item =>\n fieldTypes.includes(item.type) &&\n (row.length < 4 ||\n get(item, \"pos.row\") === index)\n )}\n />\n\n <div className={fieldHandle}>\n <Field\n parent={parent}\n field={field}\n onEdit={editField}\n onDelete={deleteField}\n />\n </div>\n\n {/* Field end */}\n {fieldIndex === row.length - 1 && (\n <Vertical\n last\n depth={depth}\n isVisible={noConflict(\n item =>\n fieldTypes.includes(item.type) &&\n (row.length < 4 ||\n get(item, \"pos.row\") === index)\n )}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex + 1\n })\n }\n />\n )}\n </div>\n )}\n </Draggable>\n ))}\n </Row>\n {/* Row end */}\n {index === fields.length - 1 && (\n <Horizontal\n data-testid={`cms-editor-row-droppable-bottom-${index}`}\n last\n isVisible={noConflict()}\n onDrop={item =>\n onFieldDrop(item, {\n row: index + 1,\n index: null\n })\n }\n />\n )}\n </RowContainer>\n )}\n </Draggable>\n ))}\n\n <EditFieldDialog\n field={field}\n onClose={() => editField(null)}\n onSubmit={field => {\n if (field.id) {\n updateField(field);\n editField(null);\n return;\n }\n insertField({ field, position: dropTarget });\n\n editField(null);\n }}\n />\n </Fragment>\n );\n};\n\nexport interface FieldEditorProps {\n parent?: CmsEditorField;\n layout: CmsEditorFieldsLayout;\n fields: CmsEditorField[];\n onChange: (params: { fields: CmsEditorField[]; layout: CmsEditorFieldsLayout }) => void;\n}\n\nexport const FieldEditor: React.FC<FieldEditorProps> = props => {\n return (\n <FieldEditorProvider {...props}>\n <Editor />\n </FieldEditorProvider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","namespace","fieldTypes","Editor","useModelFieldEditor","parent","depth","insertField","updateField","deleteField","fields","noConflict","editField","onFieldDrop","onEndDrag","field","dropTarget","getFieldPlugin","canDropIntoField","draggable","fieldPlugin","type","canAccept","isVerticalDropzoneVisible","cb","item","allowLayout","isHorizontalDropzoneVisible","length","row","index","map","fieldId","pos","f","join","drag","isDragging","opacity","rowHandle","fieldIndex","fieldContainer","includes","get","fieldHandle","id","position","FieldEditor","props"],"sources":["FieldEditor.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as HandleIcon } from \"~/admin/icons/round-drag_indicator-24px.svg\";\nimport { Center, Vertical, Horizontal } from \"../DropZone\";\nimport Draggable from \"../Draggable\";\nimport EditFieldDialog from \"./EditFieldDialog\";\nimport Field from \"./Field\";\nimport { rowHandle, fieldHandle, fieldContainer, Row, RowContainer } from \"./Styled\";\nimport { useModelFieldEditor } from \"./useModelFieldEditor\";\nimport { DragSource, FieldEditorProvider, IsVisibleCallable } from \"./FieldEditorContext\";\nimport { CmsModelField, CmsEditorFieldsLayout, CmsModelFieldTypePlugin } from \"~/types\";\nimport { ModelFieldProvider } from \"~/admin/components/ModelFieldProvider\";\n\nconst t = i18n.namespace(\"app-headless-cms/admin/components/editor\");\n\nconst fieldTypes: string[] = [\"field\", \"newField\"];\n\nconst Editor: React.FC = () => {\n const {\n parent,\n depth,\n insertField,\n updateField,\n deleteField,\n fields,\n noConflict,\n editField,\n onFieldDrop,\n onEndDrag,\n field,\n dropTarget,\n getFieldPlugin\n } = useModelFieldEditor();\n\n const canDropIntoField = (field: CmsModelField, draggable: DragSource) => {\n const fieldPlugin = getFieldPlugin(field.type) as CmsModelFieldTypePlugin;\n const canAccept = fieldPlugin.field.canAccept;\n if (typeof canAccept === \"function\" && !canAccept(field, draggable)) {\n return false;\n }\n\n return true;\n };\n\n const isVerticalDropzoneVisible = (cb: IsVisibleCallable) => {\n return (item: DragSource) => {\n if (!parent) {\n return cb(item);\n }\n\n const fieldPlugin = getFieldPlugin(parent.type) as CmsModelFieldTypePlugin;\n const allowLayout = fieldPlugin.field.allowLayout ?? true;\n if (!allowLayout) {\n return false;\n }\n\n if (!canDropIntoField(parent, item)) {\n return false;\n }\n\n return cb(item);\n };\n };\n\n const isHorizontalDropzoneVisible = (cb: IsVisibleCallable) => {\n return (item: DragSource) => {\n if (!parent) {\n return cb(item);\n }\n\n if (!canDropIntoField(parent, item)) {\n return false;\n }\n\n return cb(item);\n };\n };\n\n return (\n <Fragment>\n {fields.length === 0 && (\n <Center\n isDroppable={isHorizontalDropzoneVisible(() => true)}\n onDrop={item =>\n onFieldDrop(item, {\n row: 0,\n index: 0\n })\n }\n >\n {t`Drop your first field here`}\n </Center>\n )}\n\n {fields.map((row, index) => (\n <Draggable\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"row\",\n fields: row,\n pos: { row: index }\n }}\n endDrag={onEndDrag}\n key={row.map(f => f.fieldId).join(\".\")}\n >\n {(\n {\n drag,\n isDragging\n } /* RowContainer start - includes drag handle, drop zones and the Row itself. */\n ) => (\n <RowContainer style={{ opacity: isDragging ? 0.3 : 1 }}>\n <div className={rowHandle} ref={drag}>\n <Icon icon={<HandleIcon />} />\n </div>\n <Horizontal\n isVisible={isHorizontalDropzoneVisible(noConflict())}\n data-testid={`cms-editor-row-droppable-top-${index}`}\n onDrop={item => onFieldDrop(item, { row: index, index: null })}\n />\n {/* Row start - includes field drop zones and fields */}\n <Row data-testid={\"cms.editor.field-row\"}>\n {row.map((field, fieldIndex) => (\n <ModelFieldProvider field={field} key={field.fieldId}>\n <Draggable\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"field\",\n field,\n pos: {\n row: index,\n index: fieldIndex\n }\n }}\n endDrag={onEndDrag}\n >\n {({ drag }) => (\n <div className={fieldContainer} ref={drag}>\n <Vertical\n depth={depth}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex\n })\n }\n isVisible={isVerticalDropzoneVisible(\n noConflict(\n item =>\n fieldTypes.includes(\n item.type\n ) &&\n (row.length < 4 ||\n get(item, \"pos.row\") ===\n index)\n )\n )}\n />\n\n <div className={fieldHandle}>\n <Field\n parent={parent}\n field={field}\n onEdit={editField}\n onDelete={deleteField}\n />\n </div>\n\n {/* Field end */}\n {fieldIndex === row.length - 1 && (\n <Vertical\n last\n depth={depth}\n isVisible={isVerticalDropzoneVisible(\n noConflict(item => {\n return (\n fieldTypes.includes(\n item.type\n ) &&\n (row.length < 4 ||\n get(item, \"pos.row\") ===\n index)\n );\n })\n )}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex + 1\n })\n }\n />\n )}\n </div>\n )}\n </Draggable>\n </ModelFieldProvider>\n ))}\n </Row>\n {/* Row end */}\n {index === fields.length - 1 ? (\n <Horizontal\n data-testid={`cms-editor-row-droppable-bottom-${index}`}\n last\n isVisible={isHorizontalDropzoneVisible(noConflict())}\n onDrop={item =>\n onFieldDrop(item, {\n row: index + 1,\n index: null\n })\n }\n />\n ) : null}\n </RowContainer>\n )}\n </Draggable>\n ))}\n\n {field ? (\n <ModelFieldProvider field={field}>\n <EditFieldDialog\n onClose={() => editField(null)}\n onSubmit={field => {\n if (field.id) {\n updateField(field);\n editField(null);\n return;\n }\n insertField({ field, position: dropTarget });\n\n editField(null);\n }}\n />\n </ModelFieldProvider>\n ) : null}\n </Fragment>\n );\n};\n\nexport interface FieldEditorProps {\n parent?: CmsModelField;\n layout: CmsEditorFieldsLayout;\n fields: CmsModelField[];\n onChange: (params: { fields: CmsModelField[]; layout: CmsEditorFieldsLayout }) => void;\n}\n\nexport const FieldEditor: React.FC<FieldEditorProps> = props => {\n return (\n <FieldEditorProvider {...props}>\n <Editor />\n </FieldEditorProvider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,SAAL,CAAe,0CAAf,CAAV;;AAEA,IAAMC,UAAoB,GAAG,CAAC,OAAD,EAAU,UAAV,CAA7B;;AAEA,IAAMC,MAAgB,GAAG,SAAnBA,MAAmB,GAAM;EAC3B,2BAcI,IAAAC,yCAAA,GAdJ;EAAA,IACIC,MADJ,wBACIA,MADJ;EAAA,IAEIC,KAFJ,wBAEIA,KAFJ;EAAA,IAGIC,WAHJ,wBAGIA,WAHJ;EAAA,IAIIC,WAJJ,wBAIIA,WAJJ;EAAA,IAKIC,WALJ,wBAKIA,WALJ;EAAA,IAMIC,MANJ,wBAMIA,MANJ;EAAA,IAOIC,UAPJ,wBAOIA,UAPJ;EAAA,IAQIC,SARJ,wBAQIA,SARJ;EAAA,IASIC,WATJ,wBASIA,WATJ;EAAA,IAUIC,SAVJ,wBAUIA,SAVJ;EAAA,IAWIC,KAXJ,wBAWIA,KAXJ;EAAA,IAYIC,UAZJ,wBAYIA,UAZJ;EAAA,IAaIC,cAbJ,wBAaIA,cAbJ;;EAgBA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACH,KAAD,EAAuBI,SAAvB,EAAiD;IACtE,IAAMC,WAAW,GAAGH,cAAc,CAACF,KAAK,CAACM,IAAP,CAAlC;IACA,IAAMC,SAAS,GAAGF,WAAW,CAACL,KAAZ,CAAkBO,SAApC;;IACA,IAAI,OAAOA,SAAP,KAAqB,UAArB,IAAmC,CAACA,SAAS,CAACP,KAAD,EAAQI,SAAR,CAAjD,EAAqE;MACjE,OAAO,KAAP;IACH;;IAED,OAAO,IAAP;EACH,CARD;;EAUA,IAAMI,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACC,EAAD,EAA2B;IACzD,OAAO,UAACC,IAAD,EAAsB;MAAA;;MACzB,IAAI,CAACpB,MAAL,EAAa;QACT,OAAOmB,EAAE,CAACC,IAAD,CAAT;MACH;;MAED,IAAML,WAAW,GAAGH,cAAc,CAACZ,MAAM,CAACgB,IAAR,CAAlC;MACA,IAAMK,WAAW,4BAAGN,WAAW,CAACL,KAAZ,CAAkBW,WAArB,yEAAoC,IAArD;;MACA,IAAI,CAACA,WAAL,EAAkB;QACd,OAAO,KAAP;MACH;;MAED,IAAI,CAACR,gBAAgB,CAACb,MAAD,EAASoB,IAAT,CAArB,EAAqC;QACjC,OAAO,KAAP;MACH;;MAED,OAAOD,EAAE,CAACC,IAAD,CAAT;IACH,CAhBD;EAiBH,CAlBD;;EAoBA,IAAME,2BAA2B,GAAG,SAA9BA,2BAA8B,CAACH,EAAD,EAA2B;IAC3D,OAAO,UAACC,IAAD,EAAsB;MACzB,IAAI,CAACpB,MAAL,EAAa;QACT,OAAOmB,EAAE,CAACC,IAAD,CAAT;MACH;;MAED,IAAI,CAACP,gBAAgB,CAACb,MAAD,EAASoB,IAAT,CAArB,EAAqC;QACjC,OAAO,KAAP;MACH;;MAED,OAAOD,EAAE,CAACC,IAAD,CAAT;IACH,CAVD;EAWH,CAZD;;EAcA,oBACI,6BAAC,eAAD,QACKf,MAAM,CAACkB,MAAP,KAAkB,CAAlB,iBACG,6BAAC,gBAAD;IACI,WAAW,EAAED,2BAA2B,CAAC;MAAA,OAAM,IAAN;IAAA,CAAD,CAD5C;IAEI,MAAM,EAAE,gBAAAF,IAAI;MAAA,OACRZ,WAAW,CAACY,IAAD,EAAO;QACdI,GAAG,EAAE,CADS;QAEdC,KAAK,EAAE;MAFO,CAAP,CADH;IAAA;EAFhB,GASK/B,CATL,8GAFR,EAeKW,MAAM,CAACqB,GAAP,CAAW,UAACF,GAAD,EAAMC,KAAN;IAAA,oBACR,6BAAC,kBAAD;MACI,SAAS,EAAE;QACPzB,MAAM,EAAEA,MAAM,GAAGA,MAAM,CAAC2B,OAAV,GAAoB,IAD3B;QAEPX,IAAI,EAAE,KAFC;QAGPX,MAAM,EAAEmB,GAHD;QAIPI,GAAG,EAAE;UAAEJ,GAAG,EAAEC;QAAP;MAJE,CADf;MAOI,OAAO,EAAEhB,SAPb;MAQI,GAAG,EAAEe,GAAG,CAACE,GAAJ,CAAQ,UAAAG,CAAC;QAAA,OAAIA,CAAC,CAACF,OAAN;MAAA,CAAT,EAAwBG,IAAxB,CAA6B,GAA7B;IART,GAUK;IAIK;IAJL;MAAA,IAEOC,IAFP,QAEOA,IAFP;MAAA,IAGOC,UAHP,QAGOA,UAHP;MAAA,oBAMG,6BAAC,oBAAD;QAAc,KAAK,EAAE;UAAEC,OAAO,EAAED,UAAU,GAAG,GAAH,GAAS;QAA9B;MAArB,gBACI;QAAK,SAAS,EAAEE,iBAAhB;QAA2B,GAAG,EAAEH;MAAhC,gBACI,6BAAC,UAAD;QAAM,IAAI,eAAE,6BAAC,uCAAD;MAAZ,EADJ,CADJ,eAII,6BAAC,oBAAD;QACI,SAAS,EAAET,2BAA2B,CAAChB,UAAU,EAAX,CAD1C;QAEI,sDAA6CmB,KAA7C,CAFJ;QAGI,MAAM,EAAE,gBAAAL,IAAI;UAAA,OAAIZ,WAAW,CAACY,IAAD,EAAO;YAAEI,GAAG,EAAEC,KAAP;YAAcA,KAAK,EAAE;UAArB,CAAP,CAAf;QAAA;MAHhB,EAJJ,eAUI,6BAAC,WAAD;QAAK,eAAa;MAAlB,GACKD,GAAG,CAACE,GAAJ,CAAQ,UAAChB,KAAD,EAAQyB,UAAR;QAAA,oBACL,6BAAC,sCAAD;UAAoB,KAAK,EAAEzB,KAA3B;UAAkC,GAAG,EAAEA,KAAK,CAACiB;QAA7C,gBACI,6BAAC,kBAAD;UACI,SAAS,EAAE;YACP3B,MAAM,EAAEA,MAAM,GAAGA,MAAM,CAAC2B,OAAV,GAAoB,IAD3B;YAEPX,IAAI,EAAE,OAFC;YAGPN,KAAK,EAALA,KAHO;YAIPkB,GAAG,EAAE;cACDJ,GAAG,EAAEC,KADJ;cAEDA,KAAK,EAAEU;YAFN;UAJE,CADf;UAUI,OAAO,EAAE1B;QAVb,GAYK;UAAA,IAAGsB,IAAH,SAAGA,IAAH;UAAA,oBACG;YAAK,SAAS,EAAEK,sBAAhB;YAAgC,GAAG,EAAEL;UAArC,gBACI,6BAAC,kBAAD;YACI,KAAK,EAAE9B,KADX;YAEI,MAAM,EAAE,gBAAAmB,IAAI;cAAA,OACRZ,WAAW,CAACY,IAAD,EAAO;gBACdI,GAAG,EAAEC,KADS;gBAEdA,KAAK,EAAEU;cAFO,CAAP,CADH;YAAA,CAFhB;YAQI,SAAS,EAAEjB,yBAAyB,CAChCZ,UAAU,CACN,UAAAc,IAAI;cAAA,OACAvB,UAAU,CAACwC,QAAX,CACIjB,IAAI,CAACJ,IADT,MAGCQ,GAAG,CAACD,MAAJ,GAAa,CAAb,IACG,IAAAe,YAAA,EAAIlB,IAAJ,EAAU,SAAV,MACIK,KALR,CADA;YAAA,CADE,CADsB;UARxC,EADJ,eAsBI;YAAK,SAAS,EAAEc;UAAhB,gBACI,6BAAC,cAAD;YACI,MAAM,EAAEvC,MADZ;YAEI,KAAK,EAAEU,KAFX;YAGI,MAAM,EAAEH,SAHZ;YAII,QAAQ,EAAEH;UAJd,EADJ,CAtBJ,EAgCK+B,UAAU,KAAKX,GAAG,CAACD,MAAJ,GAAa,CAA5B,iBACG,6BAAC,kBAAD;YACI,IAAI,MADR;YAEI,KAAK,EAAEtB,KAFX;YAGI,SAAS,EAAEiB,yBAAyB,CAChCZ,UAAU,CAAC,UAAAc,IAAI,EAAI;cACf,OACIvB,UAAU,CAACwC,QAAX,CACIjB,IAAI,CAACJ,IADT,MAGCQ,GAAG,CAACD,MAAJ,GAAa,CAAb,IACG,IAAAe,YAAA,EAAIlB,IAAJ,EAAU,SAAV,MACIK,KALR,CADJ;YAQH,CATS,CADsB,CAHxC;YAeI,MAAM,EAAE,gBAAAL,IAAI;cAAA,OACRZ,WAAW,CAACY,IAAD,EAAO;gBACdI,GAAG,EAAEC,KADS;gBAEdA,KAAK,EAAEU,UAAU,GAAG;cAFN,CAAP,CADH;YAAA;UAfhB,EAjCR,CADH;QAAA,CAZL,CADJ,CADK;MAAA,CAAR,CADL,CAVJ,EAyFKV,KAAK,KAAKpB,MAAM,CAACkB,MAAP,GAAgB,CAA1B,gBACG,6BAAC,oBAAD;QACI,yDAAgDE,KAAhD,CADJ;QAEI,IAAI,MAFR;QAGI,SAAS,EAAEH,2BAA2B,CAAChB,UAAU,EAAX,CAH1C;QAII,MAAM,EAAE,gBAAAc,IAAI;UAAA,OACRZ,WAAW,CAACY,IAAD,EAAO;YACdI,GAAG,EAAEC,KAAK,GAAG,CADC;YAEdA,KAAK,EAAE;UAFO,CAAP,CADH;QAAA;MAJhB,EADH,GAYG,IArGR,CANH;IAAA,CAVL,CADQ;EAAA,CAAX,CAfL,EA2IKf,KAAK,gBACF,6BAAC,sCAAD;IAAoB,KAAK,EAAEA;EAA3B,gBACI,6BAAC,wBAAD;IACI,OAAO,EAAE;MAAA,OAAMH,SAAS,CAAC,IAAD,CAAf;IAAA,CADb;IAEI,QAAQ,EAAE,kBAAAG,KAAK,EAAI;MACf,IAAIA,KAAK,CAAC8B,EAAV,EAAc;QACVrC,WAAW,CAACO,KAAD,CAAX;QACAH,SAAS,CAAC,IAAD,CAAT;QACA;MACH;;MACDL,WAAW,CAAC;QAAEQ,KAAK,EAALA,KAAF;QAAS+B,QAAQ,EAAE9B;MAAnB,CAAD,CAAX;MAEAJ,SAAS,CAAC,IAAD,CAAT;IACH;EAXL,EADJ,CADE,GAgBF,IA3JR,CADJ;AA+JH,CA5ND;;AAqOO,IAAMmC,WAAuC,GAAG,SAA1CA,WAA0C,CAAAC,KAAK,EAAI;EAC5D,oBACI,6BAAC,uCAAD,EAAyBA,KAAzB,eACI,6BAAC,MAAD,OADJ,CADJ;AAKH,CANM"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { CmsModelField, CmsEditorFieldId, CmsEditorFieldRendererPlugin, CmsEditorFieldsLayout, CmsEditorFieldTypePlugin, FieldLayoutPosition } from "../../../types";
|
|
3
3
|
import { FieldEditorProps } from "./FieldEditor";
|
|
4
4
|
import { DragObjectWithType, DragSourceMonitor } from "react-dnd";
|
|
5
5
|
interface DropTarget {
|
|
@@ -15,8 +15,8 @@ export interface DragSource extends DragObjectWithType {
|
|
|
15
15
|
pos?: Partial<Position>;
|
|
16
16
|
type: "row" | "field" | "newField";
|
|
17
17
|
fieldType?: string;
|
|
18
|
-
field?:
|
|
19
|
-
fields?:
|
|
18
|
+
field?: CmsModelField | null;
|
|
19
|
+
fields?: CmsModelField[];
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Property in GetFieldParams can be any key from CmsEditorField, but TS does not allow union types
|
|
@@ -26,21 +26,21 @@ interface GetFieldParams {
|
|
|
26
26
|
fieldId?: string;
|
|
27
27
|
}
|
|
28
28
|
interface InsertFieldParams {
|
|
29
|
-
field:
|
|
29
|
+
field: CmsModelField;
|
|
30
30
|
position: FieldLayoutPosition;
|
|
31
31
|
}
|
|
32
32
|
interface MoveFieldParams {
|
|
33
|
-
field: CmsEditorFieldId |
|
|
33
|
+
field: CmsEditorFieldId | CmsModelField;
|
|
34
34
|
position: FieldLayoutPosition;
|
|
35
35
|
}
|
|
36
36
|
interface GetFieldsInLayoutCallable {
|
|
37
|
-
():
|
|
37
|
+
(): CmsModelField[][];
|
|
38
38
|
}
|
|
39
39
|
interface GetFieldPluginCallable {
|
|
40
40
|
(type: string): CmsEditorFieldTypePlugin | undefined;
|
|
41
41
|
}
|
|
42
42
|
interface GetFieldCallable {
|
|
43
|
-
(query: GetFieldParams):
|
|
43
|
+
(query: GetFieldParams): CmsModelField | undefined;
|
|
44
44
|
}
|
|
45
45
|
interface GetFieldRendererCallable {
|
|
46
46
|
(rendererName: string): CmsEditorFieldRendererPlugin | undefined;
|
|
@@ -61,19 +61,19 @@ interface MoveRowCallable {
|
|
|
61
61
|
(source: number, destination: number): void;
|
|
62
62
|
}
|
|
63
63
|
interface UpdateFieldCallable {
|
|
64
|
-
(field:
|
|
64
|
+
(field: CmsModelField): void;
|
|
65
65
|
}
|
|
66
66
|
interface DeleteFieldCallable {
|
|
67
|
-
(field: Pick<
|
|
67
|
+
(field: Pick<CmsModelField, "id">): void;
|
|
68
68
|
}
|
|
69
|
-
interface IsVisibleCallable {
|
|
69
|
+
export interface IsVisibleCallable {
|
|
70
70
|
(item: DragSource): boolean;
|
|
71
71
|
}
|
|
72
72
|
interface NoConflictCallable {
|
|
73
73
|
(cb?: IsVisibleCallable): (item: DragSource) => boolean;
|
|
74
74
|
}
|
|
75
|
-
export interface
|
|
76
|
-
fields:
|
|
75
|
+
export interface FieldEditorContext {
|
|
76
|
+
fields: CmsModelField[][];
|
|
77
77
|
noConflict: NoConflictCallable;
|
|
78
78
|
layout: CmsEditorFieldsLayout;
|
|
79
79
|
onChange?: (data: any) => void;
|
|
@@ -81,9 +81,9 @@ export interface FieldEditorContextValue {
|
|
|
81
81
|
getFieldPlugin: GetFieldPluginCallable;
|
|
82
82
|
getField: GetFieldCallable;
|
|
83
83
|
getFieldRendererPlugin: GetFieldRendererCallable;
|
|
84
|
-
editField: (field:
|
|
85
|
-
field:
|
|
86
|
-
parent?:
|
|
84
|
+
editField: (field: CmsModelField | null) => void;
|
|
85
|
+
field: CmsModelField | null;
|
|
86
|
+
parent?: CmsModelField;
|
|
87
87
|
depth: number;
|
|
88
88
|
dropTarget: DropTarget;
|
|
89
89
|
onFieldDrop: OnFieldDropCallable;
|
|
@@ -97,6 +97,6 @@ export interface FieldEditorContextValue {
|
|
|
97
97
|
interface FieldEditorProviderProps extends FieldEditorProps {
|
|
98
98
|
children: React.ReactElement;
|
|
99
99
|
}
|
|
100
|
-
export declare const FieldEditorContext: React.Context<
|
|
100
|
+
export declare const FieldEditorContext: React.Context<FieldEditorContext | undefined>;
|
|
101
101
|
export declare const FieldEditorProvider: React.FC<FieldEditorProviderProps>;
|
|
102
102
|
export {};
|
|
@@ -23,17 +23,11 @@ var _plugins = require("@webiny/plugins");
|
|
|
23
23
|
|
|
24
24
|
var utils = _interopRequireWildcard(require("./utils"));
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _useModelFieldEditor = require("./useModelFieldEditor");
|
|
27
27
|
|
|
28
28
|
var _utils2 = require("@webiny/utils");
|
|
29
29
|
|
|
30
|
-
var FieldEditorContext = /*#__PURE__*/_react.default.createContext(
|
|
31
|
-
/**
|
|
32
|
-
* Safe to cast.
|
|
33
|
-
*/
|
|
34
|
-
{
|
|
35
|
-
field: null
|
|
36
|
-
});
|
|
30
|
+
var FieldEditorContext = /*#__PURE__*/_react.default.createContext(undefined);
|
|
37
31
|
/**
|
|
38
32
|
* We try to generate the random id string but with the check that it does not exist already.
|
|
39
33
|
* Chances that the same string exists are quite small, but let's check it anyway.
|
|
@@ -71,7 +65,7 @@ var FieldEditorProvider = function FieldEditorProvider(_ref) {
|
|
|
71
65
|
var depth = 0;
|
|
72
66
|
|
|
73
67
|
try {
|
|
74
|
-
var editor = (0,
|
|
68
|
+
var editor = (0, _useModelFieldEditor.useModelFieldEditor)();
|
|
75
69
|
depth = editor.depth + 1;
|
|
76
70
|
} catch (_unused) {// There's no parent provider, so this is the top-level one.
|
|
77
71
|
}
|
|
@@ -166,17 +160,23 @@ var FieldEditorProvider = function FieldEditorProvider(_ref) {
|
|
|
166
160
|
if (!plugin) {
|
|
167
161
|
return null;
|
|
168
162
|
}
|
|
169
|
-
/**
|
|
170
|
-
* TODO @ts-refactor figure out better type for this.
|
|
171
|
-
*/
|
|
172
163
|
|
|
164
|
+
var fieldData = plugin.field.createField();
|
|
173
165
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
166
|
+
if (plugin.field.canEditSettings !== false) {
|
|
167
|
+
editField(fieldData);
|
|
168
|
+
setState(function (state) {
|
|
169
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
|
|
170
|
+
dropTarget: dropTarget
|
|
171
|
+
});
|
|
178
172
|
});
|
|
179
|
-
}
|
|
173
|
+
} else {
|
|
174
|
+
insertField({
|
|
175
|
+
field: fieldData,
|
|
176
|
+
position: dropTarget
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
180
|
return null;
|
|
181
181
|
}, []);
|
|
182
182
|
|
|
@@ -277,7 +277,7 @@ var FieldEditorProvider = function FieldEditorProvider(_ref) {
|
|
|
277
277
|
var fieldPlugin = getFieldPlugin(field.type);
|
|
278
278
|
|
|
279
279
|
if (!fieldPlugin) {
|
|
280
|
-
throw new Error("
|
|
280
|
+
throw new Error("No plugin found for field type \"".concat(field.type, "\"."));
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
setState(function (prev) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FieldEditorContext","React","createContext","field","maxGenerateIdIterations","generateFieldId","layout","id","generateAlphaNumericLowerCaseId","iteration","includes","Error","FieldEditorProvider","parent","fields","onChange","children","depth","editor","useFieldEditor","useState","dropTarget","row","index","state","setState","useDeepCompareEffect","editField","useCallback","onDropTarget","fieldId","onFieldDrop","source","pos","type","fieldType","parentId","forEach","insertField","position","undefined","moveRow","moveField","plugin","getFieldPlugin","createField","onEndDrag","monitor","didDrop","getDropResult","removeFields","deleteField","getFieldsInLayout","filter","arr","length","map","getField","Boolean","plugins","byType","find","getFieldRendererPlugin","name","renderer","rendererName","query","key","flat","fieldPlugin","prev","next","concat","utils","data","destination","updateField","i","dot","set","noConflict","isVisible","item","sameParent","draggedFields","push","some","f","join","value"],"sources":["FieldEditorContext.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport dot from \"dot-prop-immutable\";\nimport useDeepCompareEffect from \"use-deep-compare-effect\";\nimport {\n CmsEditorField,\n CmsEditorFieldId,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldsLayout,\n CmsEditorFieldTypePlugin,\n FieldLayoutPosition\n} from \"~/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport * as utils from \"./utils\";\nimport { FieldEditorProps } from \"./FieldEditor\";\nimport { DragObjectWithType, DragSourceMonitor } from \"react-dnd\";\nimport { useFieldEditor } from \"~/admin/components/FieldEditor/useFieldEditor\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\ninterface DropTarget {\n row: number;\n index: number | null;\n}\n\ninterface Position {\n row: number;\n index: number;\n}\n\nexport interface DragSource extends DragObjectWithType {\n parent?: string;\n pos?: Partial<Position>;\n type: \"row\" | \"field\" | \"newField\";\n fieldType?: string;\n field?: CmsEditorField | null;\n fields?: CmsEditorField[];\n}\n\n/**\n * Property in GetFieldParams can be any key from CmsEditorField, but TS does not allow union types\n */\ninterface GetFieldParams {\n id?: string;\n fieldId?: string;\n}\ninterface InsertFieldParams {\n field: CmsEditorField;\n position: FieldLayoutPosition;\n}\ninterface MoveFieldParams {\n field: CmsEditorFieldId | CmsEditorField;\n position: FieldLayoutPosition;\n}\ninterface GetFieldsInLayoutCallable {\n (): CmsEditorField[][];\n}\ninterface GetFieldPluginCallable {\n (type: string): CmsEditorFieldTypePlugin | undefined;\n}\ninterface GetFieldCallable {\n (query: GetFieldParams): CmsEditorField | undefined;\n}\ninterface GetFieldRendererCallable {\n (rendererName: string): CmsEditorFieldRendererPlugin | undefined;\n}\ninterface OnFieldDropCallable {\n (source: Partial<DragSource>, target: DropTarget): void;\n}\ninterface InsertFieldCallable {\n (params: InsertFieldParams): void;\n}\ninterface MoveFieldCallable {\n (params: MoveFieldParams): void;\n}\ninterface OnEndDragCallable {\n (item: DragSource, monitor: DragSourceMonitor): void;\n}\ninterface MoveRowCallable {\n (source: number, destination: number): void;\n}\ninterface UpdateFieldCallable {\n (field: Pick<CmsEditorField, \"id\">): void;\n}\ninterface DeleteFieldCallable {\n (field: Pick<CmsEditorField, \"id\">): void;\n}\ninterface IsVisibleCallable {\n (item: DragSource): boolean;\n}\ninterface NoConflictCallable {\n (cb?: IsVisibleCallable): (item: DragSource) => boolean;\n}\nexport interface FieldEditorContextValue {\n fields: CmsEditorField[][];\n noConflict: NoConflictCallable;\n layout: CmsEditorFieldsLayout;\n onChange?: (data: any) => void;\n getFieldsInLayout: GetFieldsInLayoutCallable;\n getFieldPlugin: GetFieldPluginCallable;\n getField: GetFieldCallable;\n getFieldRendererPlugin: GetFieldRendererCallable;\n editField: (field: CmsEditorField | null) => void;\n field: CmsEditorField | null;\n parent?: CmsEditorField;\n depth: number;\n dropTarget: DropTarget;\n onFieldDrop: OnFieldDropCallable;\n onEndDrag: OnEndDragCallable;\n insertField: InsertFieldCallable;\n moveField: MoveFieldCallable;\n moveRow: MoveRowCallable;\n updateField: UpdateFieldCallable;\n deleteField: DeleteFieldCallable;\n}\n\ninterface FieldEditorProviderProps extends FieldEditorProps {\n children: React.ReactElement;\n}\n\nexport const FieldEditorContext = React.createContext<FieldEditorContextValue>(\n /**\n * Safe to cast.\n */\n {\n field: null\n } as unknown as FieldEditorContextValue\n);\n/**\n * We try to generate the random id string but with the check that it does not exist already.\n * Chances that the same string exists are quite small, but let's check it anyway.\n *\n * In most cases, there will be no iterations anyway...\n */\nconst maxGenerateIdIterations = 100;\nconst generateFieldId = (layout: string[]): string => {\n let id = generateAlphaNumericLowerCaseId(8);\n\n let iteration = 0;\n while (layout.includes(id) && iteration < maxGenerateIdIterations) {\n id = generateAlphaNumericLowerCaseId(8);\n iteration++;\n }\n if (iteration >= maxGenerateIdIterations) {\n throw new Error(`Could not generate field ID in ${maxGenerateIdIterations} iterations.`);\n }\n return id;\n};\n\ninterface State {\n layout: CmsEditorFieldsLayout;\n fields: CmsEditorField[];\n field: CmsEditorField | null;\n dropTarget: DropTarget;\n}\nexport const FieldEditorProvider: React.FC<FieldEditorProviderProps> = ({\n parent,\n fields,\n layout,\n onChange,\n children\n}) => {\n // We need to determine depth of this provider so we can render drop zones with correct z-indexes.\n let depth = 0;\n try {\n const editor = useFieldEditor();\n depth = editor.depth + 1;\n } catch {\n // There's no parent provider, so this is the top-level one.\n }\n\n const [state, setState] = useState<State>({\n layout,\n fields,\n field: null,\n dropTarget: {\n row: -1,\n index: null\n }\n });\n\n useDeepCompareEffect(() => {\n onChange({ fields: state.fields, layout: state.layout });\n }, [state.fields, state.layout]);\n\n const editField = useCallback((field: CmsEditorField | null) => {\n setState(state => ({ ...state, field }));\n }, []);\n\n const onDropTarget = {\n dropTarget: parent ? parent.fieldId : null\n };\n\n const onFieldDrop = useCallback<OnFieldDropCallable>((source, dropTarget) => {\n const { pos, type, fieldType, field, fields = [] } = source;\n\n const parentId = parent ? parent.fieldId : null;\n\n if (type === \"row\") {\n if (parentId !== source.parent) {\n // We're dragging an existing row from another fieldset\n fields.forEach((field, index) => {\n insertField({\n field,\n position: {\n row: dropTarget.row,\n index: index === 0 ? null : index\n }\n });\n });\n } else if (pos && pos.row !== undefined) {\n // We're dragging a row within the same fieldset\n moveRow(pos.row, dropTarget.row);\n }\n\n return onDropTarget;\n }\n\n // If source pos is set, we are moving an existing field.\n if (pos) {\n if (!field) {\n return onDropTarget;\n }\n if (parentId !== source.parent) {\n // We're dragging an existing field from another fieldset\n insertField({ field, position: dropTarget });\n } else {\n // We're dragging a field within the same fieldset\n moveField({ field, position: dropTarget });\n }\n return onDropTarget;\n }\n\n if (!fieldType) {\n return null;\n }\n const plugin = getFieldPlugin(fieldType);\n if (!plugin) {\n return null;\n }\n /**\n * TODO @ts-refactor figure out better type for this.\n */\n editField(plugin.field.createField() as CmsEditorField);\n setState(state => ({\n ...state,\n dropTarget\n }));\n return null;\n }, []);\n\n const onEndDrag: OnEndDragCallable = ({ type, field, fields }, monitor) => {\n if (!monitor.didDrop()) {\n return;\n }\n\n // Check if we dropped outside of the source fieldset, and if yes, remove the field from the original parent.\n const { dropTarget } = monitor.getDropResult();\n const parentId = parent ? parent.fieldId : null;\n if (dropTarget === parentId) {\n return;\n }\n\n const removeFields = type === \"row\" ? fields || [] : field ? [field] : [];\n removeFields.forEach(field => deleteField(field));\n };\n\n const getFieldsInLayout: GetFieldsInLayoutCallable = () => {\n // Replace every field ID with actual field object.\n return state.layout\n .filter(arr => arr.length)\n .map(row => {\n return row\n .map(id => {\n return getField({ id });\n })\n .filter(Boolean);\n })\n .filter(row => {\n return row.length > 0;\n }) as CmsEditorField[][];\n };\n\n /**\n * Return field plugin.\n */\n const getFieldPlugin: GetFieldPluginCallable = type => {\n return plugins\n .byType<CmsEditorFieldTypePlugin>(\"cms-editor-field-type\")\n .find(plugin => plugin.field.type === type);\n };\n\n const getFieldRendererPlugin: GetFieldRendererCallable = name => {\n return plugins\n .byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\")\n .find(plugin => plugin.renderer.rendererName === name);\n };\n\n /**\n * Checks if field of given type already exists in the list of fields.\n */\n const getField: GetFieldCallable = query => {\n return state.fields.find(field => {\n for (const key in query) {\n if (!(key in field)) {\n return false;\n }\n // TODO @ts-refactor figure if there is a way to fix this.\n // @ts-ignore\n if (field[key] !== query[key]) {\n return false;\n }\n }\n\n return true;\n });\n };\n\n /**\n * Inserts a new field into the target position.\n */\n const insertField: InsertFieldCallable = ({ field, position }) => {\n if (!field.id) {\n field.id = generateFieldId(layout.flat());\n }\n\n if (!field.type) {\n throw new Error(`Field \"type\" missing.`);\n }\n\n const fieldPlugin = getFieldPlugin(field.type);\n if (!fieldPlugin) {\n throw new Error(`Invalid field \"type\".`);\n }\n\n setState(prev => {\n const next: State = {\n ...prev,\n fields: (prev.fields || []).concat(field)\n };\n\n // Move field to position where it was dropped.\n return utils.moveField({ field, position, data: next });\n });\n };\n\n /**\n * Moves field to the given target position.\n */\n const moveField: MoveFieldCallable = ({ field, position }) => {\n setState(data => {\n return utils.moveField<State>({ field, position, data });\n });\n };\n\n /**\n * Moves row to a destination row.\n */\n const moveRow: MoveRowCallable = (source, destination) => {\n setState(data => {\n return utils.moveRow({ data, source, destination });\n });\n };\n\n /**\n * Updates field.\n */\n const updateField: UpdateFieldCallable = field => {\n setState(data => {\n for (let i = 0; i < data.fields.length; i++) {\n if (data.fields[i].id === field.id) {\n return dot.set(data, `fields.${i}`, field);\n }\n }\n return data;\n });\n };\n\n /**\n * Deletes a field (both from the list of field and the layout).\n */\n const deleteField: DeleteFieldCallable = field => {\n setState(data => {\n return utils.deleteField({ field, data });\n });\n };\n\n const noConflict: NoConflictCallable = useCallback(\n (isVisible?: IsVisibleCallable) => item => {\n const sameParent = item.parent === onDropTarget.dropTarget;\n const draggedFields: string[] = [];\n switch (item.type) {\n case \"row\":\n (item.fields || []).forEach(field => draggedFields.push(field.fieldId));\n break;\n case \"field\":\n if (!item.field) {\n break;\n }\n draggedFields.push(item.field.fieldId);\n break;\n default:\n break;\n }\n\n if (\n draggedFields.length &&\n !sameParent &&\n fields.some(field => draggedFields.includes(field.fieldId))\n ) {\n return false;\n }\n\n return typeof isVisible === \"function\" ? isVisible(item) : true;\n },\n [fields.map(f => f.fieldId).join(\".\")]\n );\n\n const value: FieldEditorContextValue = {\n parent,\n depth,\n getFieldsInLayout,\n getFieldPlugin,\n getFieldRendererPlugin,\n getField,\n editField,\n field: state.field,\n dropTarget: state.dropTarget,\n onFieldDrop,\n onEndDrag,\n insertField,\n moveField,\n moveRow,\n updateField,\n deleteField,\n fields: getFieldsInLayout(),\n noConflict,\n layout: state.layout\n };\n\n return <FieldEditorContext.Provider value={value}>{children}</FieldEditorContext.Provider>;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["FieldEditorContext","React","createContext","undefined","maxGenerateIdIterations","generateFieldId","layout","id","generateAlphaNumericLowerCaseId","iteration","includes","Error","FieldEditorProvider","parent","fields","onChange","children","depth","editor","useModelFieldEditor","useState","field","dropTarget","row","index","state","setState","useDeepCompareEffect","editField","useCallback","onDropTarget","fieldId","onFieldDrop","source","pos","type","fieldType","parentId","forEach","insertField","position","moveRow","moveField","plugin","getFieldPlugin","fieldData","createField","canEditSettings","onEndDrag","monitor","didDrop","getDropResult","removeFields","deleteField","getFieldsInLayout","filter","arr","length","map","getField","Boolean","plugins","byType","find","getFieldRendererPlugin","name","renderer","rendererName","query","key","flat","fieldPlugin","prev","next","concat","utils","data","destination","updateField","i","dot","set","noConflict","isVisible","item","sameParent","draggedFields","push","some","f","join","value"],"sources":["FieldEditorContext.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport dot from \"dot-prop-immutable\";\nimport useDeepCompareEffect from \"use-deep-compare-effect\";\nimport {\n CmsModelField,\n CmsEditorFieldId,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldsLayout,\n CmsEditorFieldTypePlugin,\n FieldLayoutPosition\n} from \"~/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport * as utils from \"./utils\";\nimport { FieldEditorProps } from \"./FieldEditor\";\nimport { DragObjectWithType, DragSourceMonitor } from \"react-dnd\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor/useModelFieldEditor\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\ninterface DropTarget {\n row: number;\n index: number | null;\n}\n\ninterface Position {\n row: number;\n index: number;\n}\n\nexport interface DragSource extends DragObjectWithType {\n parent?: string;\n pos?: Partial<Position>;\n type: \"row\" | \"field\" | \"newField\";\n fieldType?: string;\n field?: CmsModelField | null;\n fields?: CmsModelField[];\n}\n\n/**\n * Property in GetFieldParams can be any key from CmsEditorField, but TS does not allow union types\n */\ninterface GetFieldParams {\n id?: string;\n fieldId?: string;\n}\ninterface InsertFieldParams {\n field: CmsModelField;\n position: FieldLayoutPosition;\n}\ninterface MoveFieldParams {\n field: CmsEditorFieldId | CmsModelField;\n position: FieldLayoutPosition;\n}\ninterface GetFieldsInLayoutCallable {\n (): CmsModelField[][];\n}\ninterface GetFieldPluginCallable {\n (type: string): CmsEditorFieldTypePlugin | undefined;\n}\ninterface GetFieldCallable {\n (query: GetFieldParams): CmsModelField | undefined;\n}\ninterface GetFieldRendererCallable {\n (rendererName: string): CmsEditorFieldRendererPlugin | undefined;\n}\ninterface OnFieldDropCallable {\n (source: Partial<DragSource>, target: DropTarget): void;\n}\ninterface InsertFieldCallable {\n (params: InsertFieldParams): void;\n}\ninterface MoveFieldCallable {\n (params: MoveFieldParams): void;\n}\ninterface OnEndDragCallable {\n (item: DragSource, monitor: DragSourceMonitor): void;\n}\ninterface MoveRowCallable {\n (source: number, destination: number): void;\n}\ninterface UpdateFieldCallable {\n (field: CmsModelField): void;\n}\ninterface DeleteFieldCallable {\n (field: Pick<CmsModelField, \"id\">): void;\n}\nexport interface IsVisibleCallable {\n (item: DragSource): boolean;\n}\ninterface NoConflictCallable {\n (cb?: IsVisibleCallable): (item: DragSource) => boolean;\n}\nexport interface FieldEditorContext {\n fields: CmsModelField[][];\n noConflict: NoConflictCallable;\n layout: CmsEditorFieldsLayout;\n onChange?: (data: any) => void;\n getFieldsInLayout: GetFieldsInLayoutCallable;\n getFieldPlugin: GetFieldPluginCallable;\n getField: GetFieldCallable;\n getFieldRendererPlugin: GetFieldRendererCallable;\n editField: (field: CmsModelField | null) => void;\n field: CmsModelField | null;\n parent?: CmsModelField;\n depth: number;\n dropTarget: DropTarget;\n onFieldDrop: OnFieldDropCallable;\n onEndDrag: OnEndDragCallable;\n insertField: InsertFieldCallable;\n moveField: MoveFieldCallable;\n moveRow: MoveRowCallable;\n updateField: UpdateFieldCallable;\n deleteField: DeleteFieldCallable;\n}\n\ninterface FieldEditorProviderProps extends FieldEditorProps {\n children: React.ReactElement;\n}\n\nexport const FieldEditorContext = React.createContext<FieldEditorContext | undefined>(undefined);\n/**\n * We try to generate the random id string but with the check that it does not exist already.\n * Chances that the same string exists are quite small, but let's check it anyway.\n *\n * In most cases, there will be no iterations anyway...\n */\nconst maxGenerateIdIterations = 100;\nconst generateFieldId = (layout: string[]): string => {\n let id = generateAlphaNumericLowerCaseId(8);\n\n let iteration = 0;\n while (layout.includes(id) && iteration < maxGenerateIdIterations) {\n id = generateAlphaNumericLowerCaseId(8);\n iteration++;\n }\n if (iteration >= maxGenerateIdIterations) {\n throw new Error(`Could not generate field ID in ${maxGenerateIdIterations} iterations.`);\n }\n return id;\n};\n\ninterface State {\n layout: CmsEditorFieldsLayout;\n fields: CmsModelField[];\n field: CmsModelField | null;\n dropTarget: DropTarget;\n}\nexport const FieldEditorProvider: React.FC<FieldEditorProviderProps> = ({\n parent,\n fields,\n layout,\n onChange,\n children\n}) => {\n // We need to determine depth of this provider so we can render drop zones with correct z-indexes.\n let depth = 0;\n try {\n const editor = useModelFieldEditor();\n depth = editor.depth + 1;\n } catch {\n // There's no parent provider, so this is the top-level one.\n }\n\n const [state, setState] = useState<State>({\n layout,\n fields,\n field: null,\n dropTarget: {\n row: -1,\n index: null\n }\n });\n\n useDeepCompareEffect(() => {\n onChange({ fields: state.fields, layout: state.layout });\n }, [state.fields, state.layout]);\n\n const editField = useCallback((field: CmsModelField | null) => {\n setState(state => ({ ...state, field }));\n }, []);\n\n const onDropTarget = {\n dropTarget: parent ? parent.fieldId : null\n };\n\n const onFieldDrop = useCallback<OnFieldDropCallable>((source, dropTarget) => {\n const { pos, type, fieldType, field, fields = [] } = source;\n\n const parentId = parent ? parent.fieldId : null;\n\n if (type === \"row\") {\n if (parentId !== source.parent) {\n // We're dragging an existing row from another fieldset\n fields.forEach((field, index) => {\n insertField({\n field,\n position: {\n row: dropTarget.row,\n index: index === 0 ? null : index\n }\n });\n });\n } else if (pos && pos.row !== undefined) {\n // We're dragging a row within the same fieldset\n moveRow(pos.row, dropTarget.row);\n }\n\n return onDropTarget;\n }\n\n // If source pos is set, we are moving an existing field.\n if (pos) {\n if (!field) {\n return onDropTarget;\n }\n if (parentId !== source.parent) {\n // We're dragging an existing field from another fieldset\n insertField({ field, position: dropTarget });\n } else {\n // We're dragging a field within the same fieldset\n moveField({ field, position: dropTarget });\n }\n return onDropTarget;\n }\n\n if (!fieldType) {\n return null;\n }\n const plugin = getFieldPlugin(fieldType);\n if (!plugin) {\n return null;\n }\n\n const fieldData = plugin.field.createField() as CmsModelField;\n\n if (plugin.field.canEditSettings !== false) {\n editField(fieldData);\n setState(state => ({\n ...state,\n dropTarget\n }));\n } else {\n insertField({ field: fieldData, position: dropTarget });\n }\n return null;\n }, []);\n\n const onEndDrag: OnEndDragCallable = ({ type, field, fields }, monitor) => {\n if (!monitor.didDrop()) {\n return;\n }\n\n // Check if we dropped outside of the source fieldset, and if yes, remove the field from the original parent.\n const { dropTarget } = monitor.getDropResult();\n const parentId = parent ? parent.fieldId : null;\n if (dropTarget === parentId) {\n return;\n }\n\n const removeFields = type === \"row\" ? fields || [] : field ? [field] : [];\n removeFields.forEach(field => deleteField(field));\n };\n\n const getFieldsInLayout: GetFieldsInLayoutCallable = () => {\n // Replace every field ID with actual field object.\n return state.layout\n .filter(arr => arr.length)\n .map(row => {\n return row\n .map(id => {\n return getField({ id });\n })\n .filter(Boolean);\n })\n .filter(row => {\n return row.length > 0;\n }) as CmsModelField[][];\n };\n\n /**\n * Return field plugin.\n */\n const getFieldPlugin: GetFieldPluginCallable = type => {\n return plugins\n .byType<CmsEditorFieldTypePlugin>(\"cms-editor-field-type\")\n .find(plugin => plugin.field.type === type);\n };\n\n const getFieldRendererPlugin: GetFieldRendererCallable = name => {\n return plugins\n .byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\")\n .find(plugin => plugin.renderer.rendererName === name);\n };\n\n /**\n * Checks if field of given type already exists in the list of fields.\n */\n const getField: GetFieldCallable = query => {\n return state.fields.find(field => {\n for (const key in query) {\n if (!(key in field)) {\n return false;\n }\n // TODO @ts-refactor figure if there is a way to fix this.\n // @ts-ignore\n if (field[key] !== query[key]) {\n return false;\n }\n }\n\n return true;\n });\n };\n\n /**\n * Inserts a new field into the target position.\n */\n const insertField: InsertFieldCallable = ({ field, position }) => {\n if (!field.id) {\n field.id = generateFieldId(layout.flat());\n }\n\n if (!field.type) {\n throw new Error(`Field \"type\" missing.`);\n }\n\n const fieldPlugin = getFieldPlugin(field.type);\n if (!fieldPlugin) {\n throw new Error(`No plugin found for field type \"${field.type}\".`);\n }\n\n setState(prev => {\n const next: State = {\n ...prev,\n fields: (prev.fields || []).concat(field)\n };\n\n // Move field to position where it was dropped.\n return utils.moveField({ field, position, data: next });\n });\n };\n\n /**\n * Moves field to the given target position.\n */\n const moveField: MoveFieldCallable = ({ field, position }) => {\n setState(data => {\n return utils.moveField<State>({ field, position, data });\n });\n };\n\n /**\n * Moves row to a destination row.\n */\n const moveRow: MoveRowCallable = (source, destination) => {\n setState(data => {\n return utils.moveRow({ data, source, destination });\n });\n };\n\n /**\n * Updates field.\n */\n const updateField: UpdateFieldCallable = field => {\n setState(data => {\n for (let i = 0; i < data.fields.length; i++) {\n if (data.fields[i].id === field.id) {\n return dot.set(data, `fields.${i}`, field);\n }\n }\n return data;\n });\n };\n\n /**\n * Deletes a field (both from the list of field and the layout).\n */\n const deleteField: DeleteFieldCallable = field => {\n setState(data => {\n return utils.deleteField({ field, data });\n });\n };\n\n const noConflict: NoConflictCallable = useCallback(\n (isVisible?: IsVisibleCallable) => item => {\n const sameParent = item.parent === onDropTarget.dropTarget;\n const draggedFields: string[] = [];\n switch (item.type) {\n case \"row\":\n (item.fields || []).forEach(field => draggedFields.push(field.fieldId));\n break;\n case \"field\":\n if (!item.field) {\n break;\n }\n draggedFields.push(item.field.fieldId);\n break;\n default:\n break;\n }\n\n if (\n draggedFields.length &&\n !sameParent &&\n fields.some(field => draggedFields.includes(field.fieldId))\n ) {\n return false;\n }\n\n return typeof isVisible === \"function\" ? isVisible(item) : true;\n },\n [fields.map(f => f.fieldId).join(\".\")]\n );\n\n const value: FieldEditorContext = {\n parent,\n depth,\n getFieldsInLayout,\n getFieldPlugin,\n getFieldRendererPlugin,\n getField,\n editField,\n field: state.field,\n dropTarget: state.dropTarget,\n onFieldDrop,\n onEndDrag,\n insertField,\n moveField,\n moveRow,\n updateField,\n deleteField,\n fields: getFieldsInLayout(),\n noConflict,\n layout: state.layout\n };\n\n return <FieldEditorContext.Provider value={value}>{children}</FieldEditorContext.Provider>;\n};\n"],"mappings":"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"}
|