@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
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.TemplateGallery = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
13
|
+
|
|
14
|
+
var _highlight_off = require("@material-design-icons/svg/outlined/highlight_off.svg");
|
|
15
|
+
|
|
16
|
+
var _Button = require("@webiny/ui/Button");
|
|
17
|
+
|
|
18
|
+
var _hooks = require("../../../hooks");
|
|
19
|
+
|
|
20
|
+
var _TemplateCard = require("./TemplateCard");
|
|
21
|
+
|
|
22
|
+
var GalleryContainer = /*#__PURE__*/(0, _styled.default)("div", {
|
|
23
|
+
label: "GalleryContainer",
|
|
24
|
+
target: "e1pydjsn0"
|
|
25
|
+
})();
|
|
26
|
+
var GalleryCards = /*#__PURE__*/(0, _styled.default)("div", {
|
|
27
|
+
label: "GalleryCards",
|
|
28
|
+
target: "e1pydjsn1"
|
|
29
|
+
})("display:flex;flex-wrap:wrap;justify-content:center;padding:10px;");
|
|
30
|
+
|
|
31
|
+
var TemplateGallery = function TemplateGallery(_ref) {
|
|
32
|
+
var _field$settings;
|
|
33
|
+
|
|
34
|
+
var onTemplate = _ref.onTemplate,
|
|
35
|
+
onClose = _ref.onClose;
|
|
36
|
+
|
|
37
|
+
var _useModelField = (0, _hooks.useModelField)(),
|
|
38
|
+
field = _useModelField.field;
|
|
39
|
+
|
|
40
|
+
var templates = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.templates) || [];
|
|
41
|
+
return /*#__PURE__*/_react.default.createElement(GalleryContainer, null, /*#__PURE__*/_react.default.createElement(GalleryCards, null, templates.map(function (template) {
|
|
42
|
+
return /*#__PURE__*/_react.default.createElement(_TemplateCard.TemplateCard, {
|
|
43
|
+
key: template.id,
|
|
44
|
+
template: template,
|
|
45
|
+
onTemplate: onTemplate
|
|
46
|
+
});
|
|
47
|
+
})), /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
48
|
+
onClick: onClose,
|
|
49
|
+
icon: /*#__PURE__*/_react.default.createElement(_highlight_off.ReactComponent, null)
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
exports.TemplateGallery = TemplateGallery;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GalleryContainer","styled","GalleryCards","TemplateGallery","onTemplate","onClose","useModelField","field","templates","settings","map","template","id"],"sources":["TemplateGallery.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { ReactComponent as CloseIcon } from \"@material-design-icons/svg/outlined/highlight_off.svg\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { CmsDynamicZoneTemplate } from \"~/types\";\nimport { useModelField } from \"~/admin/hooks\";\nimport { TemplateCard } from \"./TemplateCard\";\n\nconst GalleryContainer = styled.div``;\n\nconst GalleryCards = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n padding: 10px;\n`;\n\ninterface TemplateGalleryProps {\n onTemplate: (template: CmsDynamicZoneTemplate) => void;\n onClose: () => void;\n}\n\nexport const TemplateGallery = ({ onTemplate, onClose }: TemplateGalleryProps) => {\n const { field } = useModelField();\n const templates = field.settings?.templates || [];\n\n return (\n <GalleryContainer>\n <GalleryCards>\n {templates.map(template => (\n <TemplateCard key={template.id} template={template} onTemplate={onTemplate} />\n ))}\n </GalleryCards>\n <IconButton onClick={onClose} icon={<CloseIcon />} />\n </GalleryContainer>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA,IAAMA,gBAAgB,oBAAGC,eAAH;EAAA;EAAA;AAAA,IAAtB;AAEA,IAAMC,YAAY,oBAAGD,eAAH;EAAA;EAAA;AAAA,sEAAlB;;AAYO,IAAME,eAAe,GAAG,SAAlBA,eAAkB,OAAmD;EAAA;;EAAA,IAAhDC,UAAgD,QAAhDA,UAAgD;EAAA,IAApCC,OAAoC,QAApCA,OAAoC;;EAC9E,qBAAkB,IAAAC,oBAAA,GAAlB;EAAA,IAAQC,KAAR,kBAAQA,KAAR;;EACA,IAAMC,SAAS,GAAG,oBAAAD,KAAK,CAACE,QAAN,oEAAgBD,SAAhB,KAA6B,EAA/C;EAEA,oBACI,6BAAC,gBAAD,qBACI,6BAAC,YAAD,QACKA,SAAS,CAACE,GAAV,CAAc,UAAAC,QAAQ;IAAA,oBACnB,6BAAC,0BAAD;MAAc,GAAG,EAAEA,QAAQ,CAACC,EAA5B;MAAgC,QAAQ,EAAED,QAA1C;MAAoD,UAAU,EAAEP;IAAhE,EADmB;EAAA,CAAtB,CADL,CADJ,eAMI,6BAAC,kBAAD;IAAY,OAAO,EAAEC,OAArB;IAA8B,IAAI,eAAE,6BAAC,6BAAD;EAApC,EANJ,CADJ;AAUH,CAdM"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.TemplateIcon = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
13
|
+
|
|
14
|
+
var TemplateIcon = function TemplateIcon(_ref) {
|
|
15
|
+
var icon = _ref.icon;
|
|
16
|
+
var faIcon = icon ? icon.split("/") : undefined;
|
|
17
|
+
return faIcon ? /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
18
|
+
icon: faIcon
|
|
19
|
+
}) : null;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.TemplateIcon = TemplateIcon;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TemplateIcon","icon","faIcon","split","undefined"],"sources":["TemplateIcon.tsx"],"sourcesContent":["import React from \"react\";\nimport { FontAwesomeIcon, FontAwesomeIconProps } from \"@fortawesome/react-fontawesome\";\n\ninterface TemplateIconProps {\n icon: string;\n}\n\nexport const TemplateIcon = ({ icon }: TemplateIconProps) => {\n const faIcon = icon ? (icon.split(\"/\") as FontAwesomeIconProps[\"icon\"]) : undefined;\n\n return faIcon ? <FontAwesomeIcon icon={faIcon} /> : null;\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAMO,IAAMA,YAAY,GAAG,SAAfA,YAAe,OAAiC;EAAA,IAA9BC,IAA8B,QAA9BA,IAA8B;EACzD,IAAMC,MAAM,GAAGD,IAAI,GAAIA,IAAI,CAACE,KAAL,CAAW,GAAX,CAAJ,GAAuDC,SAA1E;EAEA,OAAOF,MAAM,gBAAG,6BAAC,iCAAD;IAAiB,IAAI,EAAEA;EAAvB,EAAH,GAAuC,IAApD;AACH,CAJM"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.dynamicZoneFieldRenderer = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _emotion = require("emotion");
|
|
13
|
+
|
|
14
|
+
var _Accordion = require("@webiny/ui/Accordion");
|
|
15
|
+
|
|
16
|
+
var _SingleValueDynamicZone = require("./SingleValueDynamicZone");
|
|
17
|
+
|
|
18
|
+
var _MultiValueDynamicZone = require("./MultiValueDynamicZone");
|
|
19
|
+
|
|
20
|
+
var _FormElementMessage = require("@webiny/ui/FormElementMessage");
|
|
21
|
+
|
|
22
|
+
var noBottomPadding = /*#__PURE__*/(0, _emotion.css)("> .webiny-ui-accordion-item__content{padding-bottom:0 !important;}label:noBottomPadding;");
|
|
23
|
+
|
|
24
|
+
var DynamicZoneContent = function DynamicZoneContent(_ref) {
|
|
25
|
+
var field = _ref.field,
|
|
26
|
+
getBind = _ref.getBind,
|
|
27
|
+
contentModel = _ref.contentModel;
|
|
28
|
+
var isMultipleValues = field.multipleValues === true;
|
|
29
|
+
var Bind = getBind();
|
|
30
|
+
var Component = isMultipleValues ? _MultiValueDynamicZone.MultiValueDynamicZone : _SingleValueDynamicZone.SingleValueDynamicZone;
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(Bind, null, function (bind) {
|
|
32
|
+
var _bind$validation = bind.validation,
|
|
33
|
+
isValid = _bind$validation.isValid,
|
|
34
|
+
message = _bind$validation.message;
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Accordion.Accordion, null, /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
|
|
36
|
+
title: field.label,
|
|
37
|
+
description: field.helpText,
|
|
38
|
+
className: isMultipleValues ? noBottomPadding : undefined
|
|
39
|
+
}, /*#__PURE__*/_react.default.createElement(Component, {
|
|
40
|
+
bind: bind,
|
|
41
|
+
field: field,
|
|
42
|
+
getBind: getBind,
|
|
43
|
+
contentModel: contentModel
|
|
44
|
+
}))), isValid === false && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, {
|
|
45
|
+
error: true
|
|
46
|
+
}, message));
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
var dynamicZoneFieldRenderer = {
|
|
51
|
+
type: "cms-editor-field-renderer",
|
|
52
|
+
name: "cms-editor-field-renderer-dynamic-zone",
|
|
53
|
+
renderer: {
|
|
54
|
+
rendererName: "dynamicZone",
|
|
55
|
+
name: "Dynamic Zone",
|
|
56
|
+
description: "Renders a dynamic zone.",
|
|
57
|
+
canUse: function canUse(_ref2) {
|
|
58
|
+
var field = _ref2.field;
|
|
59
|
+
return field.type === "dynamicZone";
|
|
60
|
+
},
|
|
61
|
+
render: function render(props) {
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement(DynamicZoneContent, props);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.dynamicZoneFieldRenderer = dynamicZoneFieldRenderer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["noBottomPadding","css","DynamicZoneContent","field","getBind","contentModel","isMultipleValues","multipleValues","Bind","Component","MultiValueDynamicZone","SingleValueDynamicZone","bind","validation","isValid","message","label","helpText","undefined","dynamicZoneFieldRenderer","type","name","renderer","rendererName","description","canUse","render","props"],"sources":["dynamicZoneRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { CmsEditorFieldRendererPlugin, CmsEditorFieldRendererProps } from \"~/types\";\nimport { SingleValueDynamicZone } from \"./SingleValueDynamicZone\";\nimport { MultiValueDynamicZone } from \"./MultiValueDynamicZone\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\n\nconst noBottomPadding = css`\n > .webiny-ui-accordion-item__content {\n padding-bottom: 0 !important;\n }\n`;\n\nconst DynamicZoneContent = ({ field, getBind, contentModel }: CmsEditorFieldRendererProps) => {\n const isMultipleValues = field.multipleValues === true;\n const Bind = getBind();\n\n const Component = isMultipleValues ? MultiValueDynamicZone : SingleValueDynamicZone;\n\n return (\n <Bind>\n {bind => {\n const { isValid, message } = bind.validation;\n return (\n <>\n <Accordion>\n <AccordionItem\n title={field.label}\n description={field.helpText}\n className={isMultipleValues ? noBottomPadding : undefined}\n >\n <Component\n bind={bind}\n field={field}\n getBind={getBind}\n contentModel={contentModel}\n />\n </AccordionItem>\n </Accordion>\n {isValid === false && (\n <FormElementMessage error={true}>{message}</FormElementMessage>\n )}\n </>\n );\n }}\n </Bind>\n );\n};\n\nexport const dynamicZoneFieldRenderer: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-dynamic-zone\",\n renderer: {\n rendererName: \"dynamicZone\",\n name: \"Dynamic Zone\",\n description: \"Renders a dynamic zone.\",\n canUse({ field }) {\n return field.type === \"dynamicZone\";\n },\n render(props) {\n return <DynamicZoneContent {...props} />;\n }\n }\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA,IAAMA,eAAe,oBAAGC,YAAH,6FAArB;;AAMA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,OAAmE;EAAA,IAAhEC,KAAgE,QAAhEA,KAAgE;EAAA,IAAzDC,OAAyD,QAAzDA,OAAyD;EAAA,IAAhDC,YAAgD,QAAhDA,YAAgD;EAC1F,IAAMC,gBAAgB,GAAGH,KAAK,CAACI,cAAN,KAAyB,IAAlD;EACA,IAAMC,IAAI,GAAGJ,OAAO,EAApB;EAEA,IAAMK,SAAS,GAAGH,gBAAgB,GAAGI,4CAAH,GAA2BC,8CAA7D;EAEA,oBACI,6BAAC,IAAD,QACK,UAAAC,IAAI,EAAI;IACL,uBAA6BA,IAAI,CAACC,UAAlC;IAAA,IAAQC,OAAR,oBAAQA,OAAR;IAAA,IAAiBC,OAAjB,oBAAiBA,OAAjB;IACA,oBACI,yEACI,6BAAC,oBAAD,qBACI,6BAAC,wBAAD;MACI,KAAK,EAAEZ,KAAK,CAACa,KADjB;MAEI,WAAW,EAAEb,KAAK,CAACc,QAFvB;MAGI,SAAS,EAAEX,gBAAgB,GAAGN,eAAH,GAAqBkB;IAHpD,gBAKI,6BAAC,SAAD;MACI,IAAI,EAAEN,IADV;MAEI,KAAK,EAAET,KAFX;MAGI,OAAO,EAAEC,OAHb;MAII,YAAY,EAAEC;IAJlB,EALJ,CADJ,CADJ,EAeKS,OAAO,KAAK,KAAZ,iBACG,6BAAC,sCAAD;MAAoB,KAAK,EAAE;IAA3B,GAAkCC,OAAlC,CAhBR,CADJ;EAqBH,CAxBL,CADJ;AA4BH,CAlCD;;AAoCO,IAAMI,wBAAsD,GAAG;EAClEC,IAAI,EAAE,2BAD4D;EAElEC,IAAI,EAAE,wCAF4D;EAGlEC,QAAQ,EAAE;IACNC,YAAY,EAAE,aADR;IAENF,IAAI,EAAE,cAFA;IAGNG,WAAW,EAAE,yBAHP;IAINC,MAJM,yBAIY;MAAA,IAATtB,KAAS,SAATA,KAAS;MACd,OAAOA,KAAK,CAACiB,IAAN,KAAe,aAAtB;IACH,CANK;IAONM,MAPM,kBAOCC,KAPD,EAOQ;MACV,oBAAO,6BAAC,kBAAD,EAAwBA,KAAxB,CAAP;IACH;EATK;AAHwD,CAA/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","FileUploadWrapper","styled","position","opacity","pointerEvents","color","FieldRenderer","getBind","Label","field","Bind","imagesOnly","settings","bind","onChange","value","Array","isArray","filter","Boolean","imageWrapperStyles","showFileManager","selectFiles","index","files","urls","map","f","src","slice","label","url","dotProp","delete","defaultProps","validation","isValid","styles","width","height","plugin","type","name","renderer","rendererName","description","canUse","multipleValues","render"],"sources":["fileFields.tsx"],"sourcesContent":["import React from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport {
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","FileUploadWrapper","styled","position","opacity","pointerEvents","color","FieldRenderer","getBind","Label","field","Bind","imagesOnly","settings","bind","onChange","value","Array","isArray","filter","Boolean","imageWrapperStyles","showFileManager","selectFiles","index","files","urls","map","f","src","slice","label","url","dotProp","delete","defaultProps","validation","isValid","styles","width","height","plugin","type","name","renderer","rendererName","description","canUse","multipleValues","render"],"sources":["fileFields.tsx"],"sourcesContent":["import React from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport { CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Cell, GridInner } from \"@webiny/ui/Grid\";\nimport { imageWrapperStyles } from \"./utils\";\nimport { FileManager } from \"@webiny/app-admin/components\";\nimport styled from \"@emotion/styled\";\nimport File from \"./File\";\nimport { GetBindCallable } from \"~/admin/components/ContentEntryForm/useBind\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/file\");\n\nconst FileUploadWrapper = styled(\"div\")({\n position: \"relative\",\n \".disabled\": {\n opacity: 0.75,\n pointerEvents: \"none\"\n },\n \".mdc-text-field-helper-text\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n});\n\ninterface FieldRendererProps {\n getBind: GetBindCallable;\n Label: React.FC;\n field: CmsModelField;\n}\nconst FieldRenderer: React.FC<FieldRendererProps> = ({ getBind, Label, field }) => {\n const Bind = getBind();\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n return (\n <Bind>\n {bind => {\n const { onChange } = bind;\n\n // We need to make sure the value is an array, since this is a multi-value component.\n const value: string[] = (\n Array.isArray(bind.value) ? bind.value : [bind.value]\n ).filter(Boolean);\n\n return (\n <FileUploadWrapper className={imageWrapperStyles}>\n <FileManager\n multiple\n images={imagesOnly}\n render={({ showFileManager }) => {\n const selectFiles = (index = -1) => {\n showFileManager(files => {\n const urls = files.map(f => f.src);\n if (index === -1) {\n onChange([...value, ...urls]);\n } else {\n onChange([\n ...value.slice(0, index),\n ...urls,\n ...value.slice(index + 1)\n ]);\n }\n });\n };\n return (\n <GridInner>\n <Cell span={12}>\n <Label>{field.label}</Label>\n </Cell>\n\n <>\n {value.map((url: string, index: number) => (\n <Cell span={3} key={url}>\n <File\n url={url}\n showFileManager={() => selectFiles(index)}\n onRemove={() =>\n onChange(dotProp.delete(value, index))\n }\n placeholder={t`Select a file\"`}\n data-testid={`fr.input.file.${field.label}.${index}`}\n />\n </Cell>\n ))}\n </>\n\n <Cell span={3}>\n <File\n url={\"\"}\n onRemove={() => {\n return void 0;\n }}\n {...bind}\n showFileManager={() => selectFiles()}\n placeholder={t`Select a file\"`}\n data-testid={`fr.input.file.${field.label}`}\n />\n </Cell>\n </GridInner>\n );\n }}\n />\n </FileUploadWrapper>\n );\n }}\n </Bind>\n );\n};\n/**\n * Not used?\n */\n// TODO @ts-refactor\nFieldRenderer.defaultProps = {\n validation: {\n isValid: null\n },\n styles: { width: \"100%\", height: \"auto\" }\n} as Partial<FieldRendererProps>;\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-files\",\n renderer: {\n rendererName: \"file-inputs\",\n name: t`File Inputs`,\n description: t`Enables selecting multiple files via File Manager.`,\n canUse({ field }) {\n return field.type === \"file\" && !!field.multipleValues;\n },\n render({ field, getBind, Label }) {\n return <FieldRenderer field={field} getBind={getBind} Label={Label} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { CmsModelField } from "../../../../../types";
|
|
3
3
|
import { BindComponentRenderProp } from "@webiny/form";
|
|
4
4
|
interface ContentEntriesAutocompleteProps {
|
|
5
5
|
bind: BindComponentRenderProp;
|
|
6
|
-
field:
|
|
6
|
+
field: CmsModelField;
|
|
7
7
|
}
|
|
8
8
|
declare const ContentEntriesAutocomplete: React.FC<ContentEntriesAutocompleteProps>;
|
|
9
9
|
export default ContentEntriesAutocomplete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","unpublishedLabel","publishedLabel","getItemOption","options","id","length","parseIdentifier","entryId","find","item","ContentEntriesAutocomplete","bind","field","useReference","setSearch","value","loading","onChange","entryInfo","published","link","createEntryUrl","publishItLink","here","useNewRefEntry","renderNewEntryModal","refModelId","helpText","entry","renderItem","undefined","label","debounce","search"],"sources":["ContentEntriesAutocomplete.tsx"],"sourcesContent":["import React from \"react\";\nimport debounce from \"lodash/debounce\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { AutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Link } from \"@webiny/react-router\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport { useReference } from \"./useReference\";\nimport { renderItem } from \"./renderItem\";\nimport { createEntryUrl } from \"./createEntryUrl\";\nimport {
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","unpublishedLabel","publishedLabel","getItemOption","options","id","length","parseIdentifier","entryId","find","item","ContentEntriesAutocomplete","bind","field","useReference","setSearch","value","loading","onChange","entryInfo","published","link","createEntryUrl","publishItLink","here","useNewRefEntry","renderNewEntryModal","refModelId","helpText","entry","renderItem","undefined","label","debounce","search"],"sources":["ContentEntriesAutocomplete.tsx"],"sourcesContent":["import React from \"react\";\nimport debounce from \"lodash/debounce\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { AutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Link } from \"@webiny/react-router\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport { useReference } from \"./useReference\";\nimport { renderItem } from \"./renderItem\";\nimport { createEntryUrl } from \"./createEntryUrl\";\nimport { CmsModelField } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { OptionItem } from \"./types\";\nimport { EntryStatus } from \"./EntryStatus\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst unpublishedLabel = t`Selected content entry is not published. Make sure to {publishItLink} before publishing the main content entry.`;\nconst publishedLabel = t`Selected content entry is published. You can view it {here}.`;\n\nconst getItemOption = (options: OptionItem[], id?: string | null): OptionItem | null => {\n if (!id || !options || options.length === 0) {\n return null;\n }\n const { id: entryId } = parseIdentifier(id);\n return options.find(item => item.entryId === entryId) || null;\n};\n\ninterface ContentEntriesAutocompleteProps {\n bind: BindComponentRenderProp;\n field: CmsModelField;\n}\nconst ContentEntriesAutocomplete: React.FC<ContentEntriesAutocompleteProps> = ({ bind, field }) => {\n const { options, setSearch, value, loading, onChange } = useReference({\n bind,\n field\n });\n\n let entryInfo: string | null = null;\n if (value && !value.published) {\n const link = createEntryUrl(value);\n entryInfo = unpublishedLabel({ publishItLink: <Link to={link}>{t`publish it`}</Link> });\n } else if (value) {\n const link = createEntryUrl(value);\n entryInfo = publishedLabel({\n here: <Link to={link}>{t`here`}</Link>\n });\n }\n const { renderNewEntryModal, refModelId, helpText } = useNewRefEntry({ field });\n\n const item = getItemOption(options, bind.value ? bind.value.id : null);\n /*\n * Wrap AutoComplete input in NewRefEntry modal.\n */\n if (renderNewEntryModal) {\n return (\n <NewRefEntryFormDialog\n modelId={refModelId}\n onChange={entry => {\n /**\n * TODO @ts-refactor @ashutosh\n * Need to figure out correct types.\n */\n // @ts-ignore\n return onChange(entry, entry);\n }}\n >\n <AutoComplete\n {...bind}\n renderItem={renderItem}\n onChange={onChange}\n loading={loading}\n value={value || undefined}\n options={options}\n label={field.label}\n data-testid={`fr.input.autocomplete.${field.label}`}\n description={\n <>\n {field.helpText}\n <EntryStatus item={item}>{entryInfo}</EntryStatus>\n </>\n }\n onInput={debounce(search => setSearch(search), 250)}\n noResultFound={<NewEntryButton />}\n />\n </NewRefEntryFormDialog>\n );\n }\n\n return (\n <AutoComplete\n {...bind}\n renderItem={renderItem}\n onChange={onChange}\n loading={loading}\n value={value || undefined}\n options={options}\n label={field.label}\n description={\n <>\n {field.helpText}\n <EntryStatus item={item}>{entryInfo}</EntryStatus>\n </>\n }\n onInput={debounce(search => setSearch(search), 250)}\n noResultFound={helpText}\n />\n );\n};\n\nexport default ContentEntriesAutocomplete;\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { CmsModelField } from "../../../../../types";
|
|
3
3
|
import { BindComponentRenderProp } from "@webiny/form";
|
|
4
4
|
interface ContentEntriesMultiAutocompleteProps {
|
|
5
5
|
bind: BindComponentRenderProp;
|
|
6
|
-
field:
|
|
6
|
+
field: CmsModelField;
|
|
7
7
|
}
|
|
8
8
|
declare const ContentEntriesMultiAutocomplete: React.FC<ContentEntriesMultiAutocompleteProps>;
|
|
9
9
|
export default ContentEntriesMultiAutocomplete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","warn","ContentEntriesMultiAutocomplete","bind","field","useReferences","options","setSearch","entries","loading","onChange","useNewRefEntry","renderNewEntryModal","refModelId","helpText","entryWarning","entry","index","id","modelId","name","published","encodeURIComponent","warning","filter","item","length","map","refEntryOnChange","useCallback","value","renderItem","renderListItemOptions","label","debounce"],"sources":["ContentEntriesMultiAutoComplete.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { Link } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useReferences } from \"./useReferences\";\nimport { renderItem, renderListItemOptions } from \"./renderItem\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport {
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","warn","ContentEntriesMultiAutocomplete","bind","field","useReferences","options","setSearch","entries","loading","onChange","useNewRefEntry","renderNewEntryModal","refModelId","helpText","entryWarning","entry","index","id","modelId","name","published","encodeURIComponent","warning","filter","item","length","map","refEntryOnChange","useCallback","value","renderItem","renderListItemOptions","label","debounce"],"sources":["ContentEntriesMultiAutoComplete.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { Link } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useReferences } from \"./useReferences\";\nimport { renderItem, renderListItemOptions } from \"./renderItem\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport { CmsModelField } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { OptionItem } from \"./types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst warn = t`Before publishing the main content entry, make sure you publish the following referenced entries: {entries}`;\n\ninterface ContentEntriesMultiAutocompleteProps {\n bind: BindComponentRenderProp;\n field: CmsModelField;\n}\nconst ContentEntriesMultiAutocomplete: React.FC<ContentEntriesMultiAutocompleteProps> = ({\n bind,\n field\n}) => {\n const { options, setSearch, entries, loading, onChange } = useReferences({ bind, field });\n\n const { renderNewEntryModal, refModelId, helpText } = useNewRefEntry({ field });\n\n const entryWarning = (entry: OptionItem, index: number): React.ReactElement | null => {\n const { id, modelId, name, published } = entry;\n if (published) {\n return null;\n }\n return (\n <React.Fragment key={id}>\n {index > 0 && \", \"}\n <Link to={`/cms/content-entries/${modelId}?id=${encodeURIComponent(id)}`}>\n {name}\n </Link>\n </React.Fragment>\n );\n };\n\n let warning = entries.filter(item => !item.published);\n if (warning.length > 0) {\n warning = warn({\n entries: <>{warning.map(entryWarning)}</>\n });\n }\n\n const refEntryOnChange = useCallback(\n // TODO @ts-refactor figure out which type is this\n value => {\n /**\n * Append new selected entry at the end of existing entries.\n */\n onChange([...entries, value]);\n },\n [onChange, entries]\n );\n\n if (renderNewEntryModal) {\n return (\n <NewRefEntryFormDialog modelId={refModelId} onChange={refEntryOnChange}>\n <MultiAutoComplete\n {...bind}\n renderItem={renderItem}\n renderListItemLabel={renderItem}\n renderListItemOptions={renderListItemOptions}\n useMultipleSelectionList\n onChange={onChange}\n loading={loading}\n value={entries}\n options={options}\n label={field.label}\n onInput={debounce(setSearch, 250)}\n description={\n <>\n {field.helpText}\n {warning}\n </>\n }\n noResultFound={<NewEntryButton />}\n />\n </NewRefEntryFormDialog>\n );\n }\n\n return (\n <MultiAutoComplete\n {...bind}\n renderItem={renderItem}\n renderListItemLabel={renderItem}\n renderListItemOptions={renderListItemOptions}\n useMultipleSelectionList\n onChange={onChange}\n loading={loading}\n value={entries}\n options={options}\n label={field.label}\n onInput={debounce(setSearch, 250)}\n description={\n <>\n {field.helpText}\n {warning}\n </>\n }\n noResultFound={helpText}\n />\n );\n};\n\nexport default ContentEntriesMultiAutocomplete;\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAKA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,mCAAR,CAAV;;AAEA,IAAMC,IAAI,GAAGH,CAAH,8LAAV;;AAMA,IAAMI,+BAA+E,GAAG,SAAlFA,+BAAkF,OAGlF;EAAA,IAFFC,IAEE,QAFFA,IAEE;EAAA,IADFC,KACE,QADFA,KACE;;EACF,qBAA2D,IAAAC,6BAAA,EAAc;IAAEF,IAAI,EAAJA,IAAF;IAAQC,KAAK,EAALA;EAAR,CAAd,CAA3D;EAAA,IAAQE,OAAR,kBAAQA,OAAR;EAAA,IAAiBC,SAAjB,kBAAiBA,SAAjB;EAAA,IAA4BC,OAA5B,kBAA4BA,OAA5B;EAAA,IAAqCC,OAArC,kBAAqCA,OAArC;EAAA,IAA8CC,QAA9C,kBAA8CA,QAA9C;;EAEA,sBAAsD,IAAAC,+BAAA,EAAe;IAAEP,KAAK,EAALA;EAAF,CAAf,CAAtD;EAAA,IAAQQ,mBAAR,mBAAQA,mBAAR;EAAA,IAA6BC,UAA7B,mBAA6BA,UAA7B;EAAA,IAAyCC,QAAzC,mBAAyCA,QAAzC;;EAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAAoBC,KAApB,EAAiE;IAClF,IAAQC,EAAR,GAAyCF,KAAzC,CAAQE,EAAR;IAAA,IAAYC,OAAZ,GAAyCH,KAAzC,CAAYG,OAAZ;IAAA,IAAqBC,IAArB,GAAyCJ,KAAzC,CAAqBI,IAArB;IAAA,IAA2BC,SAA3B,GAAyCL,KAAzC,CAA2BK,SAA3B;;IACA,IAAIA,SAAJ,EAAe;MACX,OAAO,IAAP;IACH;;IACD,oBACI,6BAAC,cAAD,CAAO,QAAP;MAAgB,GAAG,EAAEH;IAArB,GACKD,KAAK,GAAG,CAAR,IAAa,IADlB,eAEI,6BAAC,iBAAD;MAAM,EAAE,iCAA0BE,OAA1B,iBAAwCG,kBAAkB,CAACJ,EAAD,CAA1D;IAAR,GACKE,IADL,CAFJ,CADJ;EAQH,CAbD;;EAeA,IAAIG,OAAO,GAAGf,OAAO,CAACgB,MAAR,CAAe,UAAAC,IAAI;IAAA,OAAI,CAACA,IAAI,CAACJ,SAAV;EAAA,CAAnB,CAAd;;EACA,IAAIE,OAAO,CAACG,MAAR,GAAiB,CAArB,EAAwB;IACpBH,OAAO,GAAGtB,IAAI,CAAC;MACXO,OAAO,eAAE,4DAAGe,OAAO,CAACI,GAAR,CAAYZ,YAAZ,CAAH;IADE,CAAD,CAAd;EAGH;;EAED,IAAMa,gBAAgB,GAAG,IAAAC,kBAAA,GACrB;EACA,UAAAC,KAAK,EAAI;IACL;AACZ;AACA;IACYpB,QAAQ,4CAAKF,OAAL,IAAcsB,KAAd,GAAR;EACH,CAPoB,EAQrB,CAACpB,QAAD,EAAWF,OAAX,CARqB,CAAzB;;EAWA,IAAII,mBAAJ,EAAyB;IACrB,oBACI,6BAAC,8BAAD;MAAuB,OAAO,EAAEC,UAAhC;MAA4C,QAAQ,EAAEe;IAAtD,gBACI,6BAAC,+BAAD,oBACQzB,IADR;MAEI,UAAU,EAAE4B,sBAFhB;MAGI,mBAAmB,EAAEA,sBAHzB;MAII,qBAAqB,EAAEC,iCAJ3B;MAKI,wBAAwB,MAL5B;MAMI,QAAQ,EAAEtB,QANd;MAOI,OAAO,EAAED,OAPb;MAQI,KAAK,EAAED,OARX;MASI,OAAO,EAAEF,OATb;MAUI,KAAK,EAAEF,KAAK,CAAC6B,KAVjB;MAWI,OAAO,EAAE,IAAAC,iBAAA,EAAS3B,SAAT,EAAoB,GAApB,CAXb;MAYI,WAAW,eACP,4DACKH,KAAK,CAACU,QADX,EAEKS,OAFL,CAbR;MAkBI,aAAa,eAAE,6BAAC,qCAAD;IAlBnB,GADJ,CADJ;EAwBH;;EAED,oBACI,6BAAC,+BAAD,oBACQpB,IADR;IAEI,UAAU,EAAE4B,sBAFhB;IAGI,mBAAmB,EAAEA,sBAHzB;IAII,qBAAqB,EAAEC,iCAJ3B;IAKI,wBAAwB,MAL5B;IAMI,QAAQ,EAAEtB,QANd;IAOI,OAAO,EAAED,OAPb;IAQI,KAAK,EAAED,OARX;IASI,OAAO,EAAEF,OATb;IAUI,KAAK,EAAEF,KAAK,CAAC6B,KAVjB;IAWI,OAAO,EAAE,IAAAC,iBAAA,EAAS3B,SAAT,EAAoB,GAApB,CAXb;IAYI,WAAW,eACP,4DACKH,KAAK,CAACU,QADX,EAEKS,OAFL,CAbR;IAkBI,aAAa,EAAET;EAlBnB,GADJ;AAsBH,CA1FD;;eA4FeZ,+B"}
|
|
@@ -47,6 +47,8 @@ var _useContentEntry3 = require("../../../../views/contentEntries/hooks/useConte
|
|
|
47
47
|
|
|
48
48
|
var _useNewRefEntryDialog3 = require("../hooks/useNewRefEntryDialog");
|
|
49
49
|
|
|
50
|
+
var _ModelProvider = require("../../../../components/ModelProvider");
|
|
51
|
+
|
|
50
52
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
51
53
|
|
|
52
54
|
var t = _i18n.i18n.ns("app-headless-cms/admin/fields/ref");
|
|
@@ -61,8 +63,9 @@ var EntryForm = function EntryForm(_ref) {
|
|
|
61
63
|
setFormRef = _useContentEntry.setFormRef,
|
|
62
64
|
contentModel = _useContentEntry.contentModel;
|
|
63
65
|
|
|
64
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
65
|
-
|
|
66
|
+
return /*#__PURE__*/_react.default.createElement(_ModelProvider.ModelProvider, {
|
|
67
|
+
model: contentModel
|
|
68
|
+
}, /*#__PURE__*/_react.default.createElement(_ContentEntryForm.ContentEntryForm, {
|
|
66
69
|
onSubmit: function onSubmit(data) {
|
|
67
70
|
/**
|
|
68
71
|
* We know that data is CmsEditorContentEntry.
|
|
@@ -74,18 +77,16 @@ var EntryForm = function EntryForm(_ref) {
|
|
|
74
77
|
},
|
|
75
78
|
entry: {},
|
|
76
79
|
addEntryToListCache: false
|
|
77
|
-
});
|
|
80
|
+
}));
|
|
78
81
|
};
|
|
79
82
|
|
|
80
83
|
var DialogSaveButton = function DialogSaveButton() {
|
|
81
84
|
var _useContentEntry2 = (0, _useContentEntry3.useContentEntry)(),
|
|
82
85
|
form = _useContentEntry2.form;
|
|
83
86
|
|
|
84
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
85
|
-
onClick:
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
}, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Save"]))));
|
|
87
|
+
return /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
88
|
+
onClick: form.current.submit
|
|
89
|
+
}, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Create Entry"]))));
|
|
89
90
|
};
|
|
90
91
|
|
|
91
92
|
var DefaultButton = /*#__PURE__*/(0, _styled.default)(_Button.ButtonDefault, {
|
|
@@ -114,7 +115,7 @@ var NewRefEntryFormDialog = function NewRefEntryFormDialog(_ref2) {
|
|
|
114
115
|
children = _ref2.children,
|
|
115
116
|
onChange = _ref2.onChange;
|
|
116
117
|
|
|
117
|
-
var _useState = (0, _react.useState)(
|
|
118
|
+
var _useState = (0, _react.useState)(undefined),
|
|
118
119
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
119
120
|
contentModel = _useState2[0],
|
|
120
121
|
setContentModel = _useState2[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","dialogContentStyles","css","dialogContainerStyles","EntryForm","onCreate","useContentEntry","setFormRef","contentModel","data","form","DialogSaveButton","
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","dialogContentStyles","css","dialogContainerStyles","EntryForm","onCreate","useContentEntry","setFormRef","contentModel","data","form","DialogSaveButton","current","submit","DefaultButton","styled","ButtonDefault","NewEntryButton","useNewRefEntryDialog","setOpen","NewRefEntryFormDialog","modelId","children","onChange","useState","undefined","setContentModel","useSnackbar","showSnackbar","useQuery","GET_CONTENT_MODEL","skip","variables","onCompleted","contentModelData","get","open","hideDialog","useCallback","entry","published","modelName","name"],"sources":["NewRefEntryFormDialog.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { Dialog, DialogActions, DialogCancel, DialogContent, DialogTitle } from \"@webiny/ui/Dialog\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { Provider as ContentEntriesProvider } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { Provider as ContentEntryProvider } from \"~/admin/views/contentEntries/ContentEntry/ContentEntryContext\";\nimport { ContentEntryForm } from \"~/admin/components/ContentEntryForm/ContentEntryForm\";\nimport { useQuery } from \"~/admin/hooks\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n} from \"~/admin/graphql/contentModels\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\nimport { useNewRefEntryDialog } from \"../hooks/useNewRefEntryDialog\";\nimport { CmsEditorContentEntry, CmsModel } from \"~/types\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst dialogContentStyles = css`\n width: 786px;\n`;\n\nconst dialogContainerStyles = css`\n /*\n* By default, a Dialog component has the \"z-index\" value of 20.\n* As we are rendering the content entry form in a \"Dialog\", the File Manager view triggered by a \"file\" field\n* will render below the source form, rendering it useless for the user.\n*\n* To fix that issue, we're setting the \"z-index\" CSS property for this particular Dialog to less than 18,\n* which is the \"z-index\" value assigned to File Manager view, so that it will render below the File Manager view as expected.\n*/\n\n &.mdc-dialog {\n z-index: 17;\n }\n`;\n\ninterface EntryFormProps {\n onCreate: (entry: CmsEditorContentEntry) => void;\n}\nconst EntryForm: React.FC<EntryFormProps> = ({ onCreate }) => {\n const { setFormRef, contentModel } = useContentEntry();\n\n return (\n <ModelProvider model={contentModel}>\n <ContentEntryForm\n onSubmit={data => {\n /**\n * We know that data is CmsEditorContentEntry.\n */\n return onCreate(data as unknown as CmsEditorContentEntry);\n }}\n onForm={form => setFormRef(form)}\n entry={{}}\n addEntryToListCache={false}\n />\n </ModelProvider>\n );\n};\n\nconst DialogSaveButton: React.FC = () => {\n const { form } = useContentEntry();\n\n return <ButtonPrimary onClick={form.current.submit}>{t`Create Entry`}</ButtonPrimary>;\n};\n\nconst DefaultButton = styled(ButtonDefault)`\n margin-left: 32px;\n`;\n\nexport const NewEntryButton = () => {\n const { setOpen } = useNewRefEntryDialog();\n return (\n <DefaultButton small={true} onClick={() => setOpen(true)}>\n <ButtonIcon icon={<AddIcon />} />\n {t`New Entry`}\n </DefaultButton>\n );\n};\n\ninterface NewRefEntryProps {\n modelId: string;\n children: React.ReactElement;\n onChange: (entry: CmsEditorContentEntry) => void;\n}\n\nconst NewRefEntryFormDialog: React.FC<NewRefEntryProps> = ({ modelId, children, onChange }) => {\n const [contentModel, setContentModel] = useState<CmsModel | undefined>(undefined);\n\n const { showSnackbar } = useSnackbar();\n\n useQuery<GetCmsModelQueryResponse, GetCmsModelQueryVariables>(GET_CONTENT_MODEL, {\n skip: !modelId,\n variables: { modelId },\n onCompleted: data => {\n const contentModelData = get(data, \"getContentModel.data\") as unknown as CmsModel;\n if (contentModelData) {\n setContentModel(contentModelData);\n return;\n }\n\n showSnackbar(\n t`Could not load content for model \"{modelId}\". Redirecting...`({\n modelId\n })\n );\n }\n });\n\n const { open, setOpen } = useNewRefEntryDialog();\n const hideDialog = useCallback(() => setOpen(false), []);\n\n const onCreate = useCallback(\n (entry: CmsEditorContentEntry) => {\n if (!contentModel) {\n setOpen(false);\n return;\n }\n onChange({\n ...entry,\n /*\n * Format data for AutoComplete.\n */\n published: get(entry, \"meta.status\") === \"published\",\n modelId: contentModel.modelId,\n modelName: contentModel.name\n });\n setOpen(false);\n },\n [onChange, contentModel]\n );\n\n if (!contentModel) {\n return children;\n }\n\n return (\n <ContentEntriesProvider\n contentModel={contentModel}\n key={contentModel.modelId}\n insideDialog={true}\n >\n <ContentEntryProvider isNewEntry={() => true} getContentId={() => null}>\n <Dialog open={open} onClose={hideDialog} className={dialogContainerStyles}>\n <DialogTitle>\n {t`New {modelName} Entry`({ modelName: contentModel.name })}\n </DialogTitle>\n <DialogContent className={dialogContentStyles}>\n <EntryForm onCreate={onCreate} />\n </DialogContent>\n <DialogActions>\n <DialogCancel>{t`Cancel`}</DialogCancel>\n <DialogSaveButton />\n </DialogActions>\n </Dialog>\n {children}\n </ContentEntryProvider>\n </ContentEntriesProvider>\n );\n};\n\nexport default NewRefEntryFormDialog;\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CmsModelField } from "../../../../../types";
|
|
2
2
|
import { BindComponentRenderProp } from "@webiny/form";
|
|
3
3
|
import { OptionItem } from "./types";
|
|
4
4
|
interface UseReferenceHookArgs {
|
|
5
5
|
bind: BindComponentRenderProp;
|
|
6
|
-
field:
|
|
6
|
+
field: CmsModelField;
|
|
7
7
|
}
|
|
8
8
|
interface UseReferenceHookValue {
|
|
9
9
|
onChange: (value: any, entry: OptionItem) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getValueHash","value","id","entryId","parseIdentifier","useReference","bind","field","allEntries","useRef","client","useApolloClient","useState","search","setSearch","loading","setLoading","entries","setEntries","latestEntries","setLatestEntries","valueEntry","setValueEntry","models","settings","modelsHash","map","model","modelId","join","valueHash","searchEntries","query","SEARCH_CONTENT_ENTRIES","variables","modelIds","m","limit","data","collection","convertReferenceEntriesToOptionCollection","content","current","useEffect","length","fetchPolicy","then","latestEntryData","entry","GET_CONTENT_ENTRY","res","dataEntry","latest","option","convertReferenceEntryToOption","published","prev","onChange","useCallback","options","useMemo","Object","values","defaultOptions","outputOptions","some","opt","push"],"sources":["useReference.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useApolloClient } from \"~/admin/hooks\";\nimport {\n SEARCH_CONTENT_ENTRIES,\n GET_CONTENT_ENTRY,\n CmsEntryGetQueryResponse,\n CmsEntryGetQueryVariables,\n CmsEntrySearchQueryResponse,\n CmsEntrySearchQueryVariables\n} from \"./graphql\";\nimport { CmsEditorField, CmsModel } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { OptionItem, OptionItemCollection } from \"./types\";\nimport {\n convertReferenceEntriesToOptionCollection,\n convertReferenceEntryToOption\n} from \"./helpers\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\ninterface UseReferenceHookArgs {\n bind: BindComponentRenderProp;\n field: CmsEditorField;\n}\n\ninterface UseReferenceHookValue {\n onChange: (value: any, entry: OptionItem) => void;\n setSearch: (value: string) => void;\n value: OptionItem | null;\n loading: boolean;\n options: OptionItem[];\n}\n\ntype UseReferenceHook = (args: UseReferenceHookArgs) => UseReferenceHookValue;\n\nconst getValueHash = (value: any): string | null => {\n if (!value || (!value.id && !value.entryId)) {\n return null;\n } else if (value.entryId) {\n return value.entryId;\n }\n const { id } = parseIdentifier(value.id);\n return id;\n};\n\nexport const useReference: UseReferenceHook = ({ bind, field }) => {\n const allEntries = useRef<OptionItemCollection>({});\n const client = useApolloClient();\n const [search, setSearch] = useState<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [entries, setEntries] = useState<OptionItemCollection>({});\n const [latestEntries, setLatestEntries] = useState<OptionItemCollection>({});\n const [valueEntry, setValueEntry] = useState<OptionItem | null>(null);\n\n const models = (field.settings ? field.settings.models || [] : []) as Pick<\n CmsModel,\n \"modelId\" | \"name\"\n >[];\n const modelsHash = models.map(model => model.modelId).join(\",\");\n\n const value = bind.value;\n const valueHash = getValueHash(value);\n\n const searchEntries = async () => {\n if (!search) {\n return;\n }\n\n setLoading(true);\n const { data } = await client.query<\n CmsEntrySearchQueryResponse,\n CmsEntrySearchQueryVariables\n >({\n query: SEARCH_CONTENT_ENTRIES,\n variables: {\n modelIds: models.map(m => m.modelId),\n query: search,\n limit: 10\n }\n });\n setLoading(false);\n\n const collection = convertReferenceEntriesToOptionCollection(data.content.data);\n if (valueEntry) {\n collection[valueEntry.entryId] = valueEntry;\n }\n allEntries.current = {\n ...allEntries.current,\n ...collection\n };\n\n setEntries(collection);\n };\n\n useEffect(() => {\n searchEntries();\n }, [search]);\n\n useEffect(() => {\n if (models.length === 0) {\n return;\n }\n client\n .query<CmsEntrySearchQueryResponse, CmsEntrySearchQueryVariables>({\n query: SEARCH_CONTENT_ENTRIES,\n variables: {\n modelIds: models.map(m => m.modelId),\n limit: 10\n },\n /**\n * We cannot update this query response in cache after a reference entry being created/deleted,\n * which result in cached response being stale, therefore, we're setting the fetchPolicy to \"network-only\" to by passing cache.\n */\n fetchPolicy: \"network-only\"\n })\n .then(({ data }) => {\n const latestEntryData = convertReferenceEntriesToOptionCollection(\n data.content.data\n );\n if (valueEntry) {\n latestEntryData[valueEntry.entryId] = valueEntry;\n }\n\n setLatestEntries(latestEntryData);\n allEntries.current = {\n ...allEntries.current,\n ...latestEntryData\n };\n });\n }, [modelsHash]);\n\n useEffect(() => {\n if (!value || !models) {\n setValueEntry(() => null);\n return;\n }\n\n const entry = valueHash ? allEntries.current[valueHash] : null;\n if (entry) {\n /**\n * if entry exists set valueEntry to that one so we do not load new one\n */\n setValueEntry(() => {\n return entry;\n });\n return;\n }\n\n setLoading(true);\n /**\n * Query loads both latest and published entries.\n * We do this in a single query because there might not be a published entry so we can use the latest one.\n */\n client\n .query<CmsEntryGetQueryResponse, CmsEntryGetQueryVariables>({\n query: GET_CONTENT_ENTRY,\n variables: {\n entry: {\n modelId: value.modelId,\n id: value.id\n }\n }\n })\n .then(res => {\n setLoading(false);\n const dataEntry = res.data.latest.data;\n if (!dataEntry) {\n return;\n }\n const option: OptionItem = {\n ...convertReferenceEntryToOption(dataEntry),\n latest: dataEntry.id,\n published: res.data.published.data ? res.data.published.data.id : null\n };\n allEntries.current[option.entryId] = option;\n setLatestEntries(prev => {\n return {\n ...prev,\n [option.entryId]: {\n ...option\n }\n };\n });\n /**\n * Calculate a couple of props for the Autocomplete component.\n */\n setValueEntry(() => {\n return option;\n });\n });\n }, [valueHash, modelsHash]);\n\n const onChange = useCallback((value: string, entry: OptionItem) => {\n if (value !== null) {\n setSearch(\"\");\n\n setValueEntry(() => {\n return entry;\n });\n bind.onChange({\n modelId: entry.modelId,\n id: entry.id\n });\n return;\n }\n\n setValueEntry(() => null);\n bind.onChange(null);\n }, []);\n\n /**\n * Format options for the Autocomplete component.\n */\n const options = useMemo(() => Object.values(entries), [valueHash, entries]);\n\n /**\n * Format default options for the Autocomplete component.\n */\n const defaultOptions = useMemo(() => {\n return Object.values(latestEntries);\n }, [valueHash, latestEntries]);\n\n const outputOptions: OptionItem[] = (search && options ? options : defaultOptions) || [];\n\n if (valueEntry && outputOptions.some(opt => opt.entryId === valueEntry.entryId) === false) {\n outputOptions.push(valueEntry);\n }\n\n return {\n onChange,\n setSearch,\n value: valueEntry,\n loading,\n options: outputOptions\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["getValueHash","value","id","entryId","parseIdentifier","useReference","bind","field","allEntries","useRef","client","useApolloClient","useState","search","setSearch","loading","setLoading","entries","setEntries","latestEntries","setLatestEntries","valueEntry","setValueEntry","models","settings","modelsHash","map","model","modelId","join","valueHash","searchEntries","query","SEARCH_CONTENT_ENTRIES","variables","modelIds","m","limit","data","collection","convertReferenceEntriesToOptionCollection","content","current","useEffect","length","fetchPolicy","then","latestEntryData","entry","GET_CONTENT_ENTRY","res","dataEntry","latest","option","convertReferenceEntryToOption","published","prev","onChange","useCallback","options","useMemo","Object","values","defaultOptions","outputOptions","some","opt","push"],"sources":["useReference.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useApolloClient } from \"~/admin/hooks\";\nimport {\n SEARCH_CONTENT_ENTRIES,\n GET_CONTENT_ENTRY,\n CmsEntryGetQueryResponse,\n CmsEntryGetQueryVariables,\n CmsEntrySearchQueryResponse,\n CmsEntrySearchQueryVariables\n} from \"./graphql\";\nimport { CmsModelField, CmsModel } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { OptionItem, OptionItemCollection } from \"./types\";\nimport {\n convertReferenceEntriesToOptionCollection,\n convertReferenceEntryToOption\n} from \"./helpers\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\ninterface UseReferenceHookArgs {\n bind: BindComponentRenderProp;\n field: CmsModelField;\n}\n\ninterface UseReferenceHookValue {\n onChange: (value: any, entry: OptionItem) => void;\n setSearch: (value: string) => void;\n value: OptionItem | null;\n loading: boolean;\n options: OptionItem[];\n}\n\ntype UseReferenceHook = (args: UseReferenceHookArgs) => UseReferenceHookValue;\n\nconst getValueHash = (value: any): string | null => {\n if (!value || (!value.id && !value.entryId)) {\n return null;\n } else if (value.entryId) {\n return value.entryId;\n }\n const { id } = parseIdentifier(value.id);\n return id;\n};\n\nexport const useReference: UseReferenceHook = ({ bind, field }) => {\n const allEntries = useRef<OptionItemCollection>({});\n const client = useApolloClient();\n const [search, setSearch] = useState<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [entries, setEntries] = useState<OptionItemCollection>({});\n const [latestEntries, setLatestEntries] = useState<OptionItemCollection>({});\n const [valueEntry, setValueEntry] = useState<OptionItem | null>(null);\n\n const models = (field.settings ? field.settings.models || [] : []) as Pick<\n CmsModel,\n \"modelId\" | \"name\"\n >[];\n const modelsHash = models.map(model => model.modelId).join(\",\");\n\n const value = bind.value;\n const valueHash = getValueHash(value);\n\n const searchEntries = async () => {\n if (!search) {\n return;\n }\n\n setLoading(true);\n const { data } = await client.query<\n CmsEntrySearchQueryResponse,\n CmsEntrySearchQueryVariables\n >({\n query: SEARCH_CONTENT_ENTRIES,\n variables: {\n modelIds: models.map(m => m.modelId),\n query: search,\n limit: 10\n }\n });\n setLoading(false);\n\n const collection = convertReferenceEntriesToOptionCollection(data.content.data);\n if (valueEntry) {\n collection[valueEntry.entryId] = valueEntry;\n }\n allEntries.current = {\n ...allEntries.current,\n ...collection\n };\n\n setEntries(collection);\n };\n\n useEffect(() => {\n searchEntries();\n }, [search]);\n\n useEffect(() => {\n if (models.length === 0) {\n return;\n }\n client\n .query<CmsEntrySearchQueryResponse, CmsEntrySearchQueryVariables>({\n query: SEARCH_CONTENT_ENTRIES,\n variables: {\n modelIds: models.map(m => m.modelId),\n limit: 10\n },\n /**\n * We cannot update this query response in cache after a reference entry being created/deleted,\n * which result in cached response being stale, therefore, we're setting the fetchPolicy to \"network-only\" to by passing cache.\n */\n fetchPolicy: \"network-only\"\n })\n .then(({ data }) => {\n const latestEntryData = convertReferenceEntriesToOptionCollection(\n data.content.data\n );\n if (valueEntry) {\n latestEntryData[valueEntry.entryId] = valueEntry;\n }\n\n setLatestEntries(latestEntryData);\n allEntries.current = {\n ...allEntries.current,\n ...latestEntryData\n };\n });\n }, [modelsHash]);\n\n useEffect(() => {\n if (!value || !models) {\n setValueEntry(() => null);\n return;\n }\n\n const entry = valueHash ? allEntries.current[valueHash] : null;\n if (entry) {\n /**\n * if entry exists set valueEntry to that one so we do not load new one\n */\n setValueEntry(() => {\n return entry;\n });\n return;\n }\n\n setLoading(true);\n /**\n * Query loads both latest and published entries.\n * We do this in a single query because there might not be a published entry so we can use the latest one.\n */\n client\n .query<CmsEntryGetQueryResponse, CmsEntryGetQueryVariables>({\n query: GET_CONTENT_ENTRY,\n variables: {\n entry: {\n modelId: value.modelId,\n id: value.id\n }\n }\n })\n .then(res => {\n setLoading(false);\n const dataEntry = res.data.latest.data;\n if (!dataEntry) {\n return;\n }\n const option: OptionItem = {\n ...convertReferenceEntryToOption(dataEntry),\n latest: dataEntry.id,\n published: res.data.published.data ? res.data.published.data.id : null\n };\n allEntries.current[option.entryId] = option;\n setLatestEntries(prev => {\n return {\n ...prev,\n [option.entryId]: {\n ...option\n }\n };\n });\n /**\n * Calculate a couple of props for the Autocomplete component.\n */\n setValueEntry(() => {\n return option;\n });\n });\n }, [valueHash, modelsHash]);\n\n const onChange = useCallback((value: string, entry: OptionItem) => {\n if (value !== null) {\n setSearch(\"\");\n\n setValueEntry(() => {\n return entry;\n });\n bind.onChange({\n modelId: entry.modelId,\n id: entry.id\n });\n return;\n }\n\n setValueEntry(() => null);\n bind.onChange(null);\n }, []);\n\n /**\n * Format options for the Autocomplete component.\n */\n const options = useMemo(() => Object.values(entries), [valueHash, entries]);\n\n /**\n * Format default options for the Autocomplete component.\n */\n const defaultOptions = useMemo(() => {\n return Object.values(latestEntries);\n }, [valueHash, latestEntries]);\n\n const outputOptions: OptionItem[] = (search && options ? options : defaultOptions) || [];\n\n if (valueEntry && outputOptions.some(opt => opt.entryId === valueEntry.entryId) === false) {\n outputOptions.push(valueEntry);\n }\n\n return {\n onChange,\n setSearch,\n value: valueEntry,\n loading,\n options: outputOptions\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { CmsModelField } from "../../../../../types";
|
|
3
3
|
import { BindComponentRenderProp } from "@webiny/form";
|
|
4
4
|
import { OptionItem } from "./types";
|
|
5
5
|
interface UseReferencesParams {
|
|
6
6
|
bind: BindComponentRenderProp;
|
|
7
|
-
field:
|
|
7
|
+
field: CmsModelField;
|
|
8
8
|
}
|
|
9
9
|
export declare const useReferences: ({ bind, field }: UseReferencesParams) => {
|
|
10
10
|
onChange: (values: OptionItem[]) => void;
|