payload 0.20.1 → 0.20.4-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/.eslintrc.js +21 -0
- package/CHANGELOG.md +33 -1
- package/components/elements.ts +1 -0
- package/components/index.js +2 -2
- package/components/styles.css +1 -1
- package/dist/admin/assets/fonts/SuisseIntl-Medium.woff +0 -0
- package/dist/admin/assets/fonts/SuisseIntl-Medium.woff2 +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-700.woff +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-700.woff2 +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-700italic.woff +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-700italic.woff2 +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-italic.woff +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-italic.woff2 +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-regular.woff +0 -0
- package/dist/admin/assets/fonts/merriweather-v30-latin-regular.woff2 +0 -0
- package/dist/admin/components/{forms/DraggableSection/ActionPanel → elements/ArrayAction}/index.d.ts +1 -2
- package/dist/admin/components/elements/ArrayAction/index.js +44 -0
- package/dist/admin/components/elements/ArrayAction/index.scss +54 -0
- package/dist/admin/components/elements/ArrayAction/types.d.ts +8 -0
- package/dist/admin/components/{forms/DraggableSection/ActionPanel → elements/ArrayAction}/types.js +0 -0
- package/dist/admin/components/elements/Banner/index.scss +13 -12
- package/dist/admin/components/elements/Button/index.js +2 -1
- package/dist/admin/components/elements/Button/index.scss +22 -21
- package/dist/admin/components/elements/Button/types.d.ts +2 -0
- package/dist/admin/components/elements/Card/index.js +3 -2
- package/dist/admin/components/elements/Card/index.scss +2 -2
- package/dist/admin/components/elements/Card/types.d.ts +1 -0
- package/dist/admin/components/{forms/DraggableSection/PositionPanel → elements/Collapsible}/index.d.ts +1 -2
- package/dist/admin/components/elements/Collapsible/index.js +43 -0
- package/dist/admin/components/elements/Collapsible/index.scss +113 -0
- package/dist/admin/components/elements/Collapsible/provider.d.ts +8 -0
- package/dist/admin/components/elements/Collapsible/provider.js +7 -0
- package/dist/admin/components/{forms/FieldTypeGutter → elements/Collapsible}/types.d.ts +7 -4
- package/dist/admin/components/{forms/DraggableSection/PositionPanel → elements/Collapsible}/types.js +0 -0
- package/dist/admin/components/elements/ColumnSelector/index.js +6 -3
- package/dist/admin/components/elements/ColumnSelector/index.scss +10 -1
- package/dist/admin/components/elements/DatePicker/index.scss +92 -47
- package/dist/admin/components/elements/DeleteDocument/index.js +5 -5
- package/dist/admin/components/elements/DeleteDocument/index.scss +5 -0
- package/dist/admin/components/elements/DeleteDocument/types.d.ts +1 -0
- package/dist/admin/components/elements/DuplicateDocument/index.js +1 -1
- package/dist/admin/components/elements/Eyebrow/index.js +4 -2
- package/dist/admin/components/elements/Eyebrow/index.scss +10 -6
- package/dist/admin/components/elements/FileDetails/index.scss +4 -4
- package/dist/admin/components/elements/GenerateConfirmation/index.js +1 -1
- package/dist/admin/components/elements/GenerateConfirmation/index.scss +5 -0
- package/dist/admin/components/elements/Gutter/index.d.ts +13 -0
- package/dist/admin/components/elements/Gutter/index.js +16 -0
- package/dist/admin/components/elements/Gutter/index.scss +19 -0
- package/dist/admin/components/elements/IDLabel/index.scss +2 -2
- package/dist/admin/components/elements/Loading/index.js +1 -1
- package/dist/admin/components/elements/Localizer/index.scss +2 -1
- package/dist/admin/components/elements/Nav/index.scss +12 -7
- package/dist/admin/components/elements/Paginator/ClickableArrow/index.scss +2 -2
- package/dist/admin/components/elements/Paginator/index.scss +5 -5
- package/dist/admin/components/elements/PerPage/index.js +1 -1
- package/dist/admin/components/elements/PerPage/index.scss +1 -2
- package/dist/admin/components/elements/Pill/index.scss +20 -16
- package/dist/admin/components/elements/Popup/PopupButton/index.js +2 -1
- package/dist/admin/components/elements/Popup/PopupButton/types.d.ts +1 -0
- package/dist/admin/components/elements/Popup/index.js +7 -7
- package/dist/admin/components/elements/Popup/index.scss +20 -17
- package/dist/admin/components/elements/Popup/types.d.ts +1 -0
- package/dist/admin/components/elements/ReactSelect/index.scss +20 -12
- package/dist/admin/components/elements/SortComplex/index.scss +3 -2
- package/dist/admin/components/elements/Status/index.js +2 -2
- package/dist/admin/components/elements/Status/index.scss +5 -0
- package/dist/admin/components/elements/StepNav/index.scss +0 -6
- package/dist/admin/components/elements/Table/index.js +2 -2
- package/dist/admin/components/elements/Table/index.scss +7 -4
- package/dist/admin/components/elements/Tooltip/index.scss +9 -9
- package/dist/admin/components/elements/UploadCard/index.scss +1 -1
- package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.scss +3 -3
- package/dist/admin/components/elements/WhereBuilder/Condition/index.js +2 -2
- package/dist/admin/components/elements/WhereBuilder/index.js +1 -1
- package/dist/admin/components/elements/WhereBuilder/index.scss +1 -1
- package/dist/admin/components/forms/Error/index.scss +2 -3
- package/dist/admin/components/forms/FieldDescription/index.js +6 -2
- package/dist/admin/components/forms/FieldDescription/index.scss +1 -1
- package/dist/admin/components/forms/FieldDescription/types.d.ts +3 -2
- package/dist/admin/components/forms/FieldDescription/types.js +1 -1
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +17 -0
- package/dist/admin/components/forms/Form/fieldReducer.js +18 -0
- package/dist/admin/components/forms/Label/index.scss +2 -2
- package/dist/admin/components/forms/RenderFields/index.js +2 -2
- package/dist/admin/components/forms/RenderFields/types.d.ts +1 -0
- package/dist/admin/components/forms/Submit/index.js +2 -2
- package/dist/admin/components/forms/field-types/Array/Array.js +93 -12
- package/dist/admin/components/forms/field-types/Array/index.scss +33 -35
- package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSelection/index.scss +3 -1
- package/dist/admin/components/forms/field-types/Blocks/Blocks.js +83 -37
- package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/index.d.ts +0 -0
- package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/index.js +8 -6
- package/dist/admin/components/forms/field-types/Blocks/SectionTitle/index.scss +49 -0
- package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/types.d.ts +0 -1
- package/dist/admin/components/forms/{DraggableSection → field-types/Blocks}/SectionTitle/types.js +0 -0
- package/dist/admin/components/forms/field-types/Blocks/index.scss +53 -27
- package/dist/admin/components/forms/field-types/Checkbox/index.js +1 -1
- package/dist/admin/components/forms/field-types/Checkbox/index.scss +2 -2
- package/dist/admin/components/forms/field-types/Code/Code.js +4 -4
- package/dist/admin/components/forms/field-types/Code/index.scss +4 -4
- package/dist/admin/components/forms/{FieldTypeGutter → field-types/Collapsible}/index.d.ts +2 -2
- package/dist/admin/components/forms/field-types/Collapsible/index.js +44 -0
- package/dist/admin/components/forms/field-types/Collapsible/index.scss +11 -0
- package/dist/admin/components/forms/field-types/Collapsible/types.d.ts +8 -0
- package/dist/admin/components/forms/{DraggableSection → field-types/Collapsible}/types.js +0 -0
- package/dist/admin/components/forms/field-types/ConfirmPassword/index.js +2 -2
- package/dist/admin/components/forms/field-types/ConfirmPassword/index.scss +9 -9
- package/dist/admin/components/forms/field-types/DateTime/index.js +1 -1
- package/dist/admin/components/forms/field-types/DateTime/index.scss +1 -1
- package/dist/admin/components/forms/field-types/Email/index.js +1 -1
- package/dist/admin/components/forms/field-types/Email/index.scss +8 -8
- package/dist/admin/components/forms/field-types/Group/index.js +11 -14
- package/dist/admin/components/forms/field-types/Group/index.scss +25 -37
- package/dist/admin/components/forms/field-types/HiddenInput/index.js +1 -1
- package/dist/admin/components/forms/field-types/Number/index.js +2 -2
- package/dist/admin/components/forms/field-types/Number/index.scss +9 -9
- package/dist/admin/components/forms/field-types/Password/index.js +2 -2
- package/dist/admin/components/forms/field-types/Password/index.scss +9 -9
- package/dist/admin/components/forms/field-types/Point/index.js +4 -4
- package/dist/admin/components/forms/field-types/Point/index.scss +9 -9
- package/dist/admin/components/forms/field-types/RadioGroup/Input.d.ts +22 -0
- package/dist/admin/components/forms/field-types/RadioGroup/Input.js +41 -0
- package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.js +1 -1
- package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.scss +4 -4
- package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/types.d.ts +2 -1
- package/dist/admin/components/forms/field-types/RadioGroup/index.d.ts +0 -1
- package/dist/admin/components/forms/field-types/RadioGroup/index.js +2 -35
- package/dist/admin/components/forms/field-types/RadioGroup/types.d.ts +1 -0
- package/dist/admin/components/forms/field-types/Relationship/index.js +1 -1
- package/dist/admin/components/forms/field-types/Relationship/index.scss +4 -4
- package/dist/admin/components/forms/field-types/RichText/RichText.js +30 -31
- package/dist/admin/components/forms/field-types/RichText/elements/link/index.js +1 -1
- package/dist/admin/components/forms/field-types/RichText/elements/link/index.scss +6 -6
- package/dist/admin/components/forms/field-types/RichText/elements/ol/index.d.ts +1 -0
- package/dist/admin/components/forms/field-types/RichText/elements/ol/index.js +2 -1
- package/dist/admin/components/forms/field-types/RichText/elements/ol/index.scss +7 -0
- package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/index.js +1 -1
- package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/index.scss +5 -3
- package/dist/admin/components/forms/field-types/RichText/elements/relationship/Element/index.scss +13 -2
- package/dist/admin/components/forms/field-types/RichText/elements/ul/index.d.ts +1 -0
- package/dist/admin/components/forms/field-types/RichText/elements/ul/index.js +2 -1
- package/dist/admin/components/forms/field-types/RichText/elements/ul/index.scss +7 -0
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.scss +6 -2
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.js +1 -1
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.scss +17 -4
- package/dist/admin/components/forms/field-types/RichText/elements/upload/addSwapModals.scss +2 -0
- package/dist/admin/components/forms/field-types/RichText/index.scss +66 -20
- package/dist/admin/components/forms/field-types/Select/Input.js +1 -1
- package/dist/admin/components/forms/field-types/Select/index.scss +1 -1
- package/dist/admin/components/forms/field-types/Tabs/index.d.ts +5 -0
- package/dist/admin/components/forms/field-types/Tabs/index.js +36 -0
- package/dist/admin/components/forms/field-types/Tabs/index.scss +91 -0
- package/dist/admin/components/forms/field-types/Tabs/types.d.ts +8 -0
- package/dist/admin/components/forms/{FieldTypeGutter → field-types/Tabs}/types.js +0 -0
- package/dist/admin/components/forms/field-types/Text/Input.js +2 -2
- package/dist/admin/components/forms/field-types/Text/index.scss +9 -9
- package/dist/admin/components/forms/field-types/Textarea/Input.js +2 -2
- package/dist/admin/components/forms/field-types/Textarea/index.scss +1 -1
- package/dist/admin/components/forms/field-types/Upload/Add/index.js +1 -3
- package/dist/admin/components/forms/field-types/Upload/Add/index.scss +2 -0
- package/dist/admin/components/forms/field-types/Upload/SelectExisting/index.scss +2 -0
- package/dist/admin/components/forms/field-types/Upload/index.scss +2 -2
- package/dist/admin/components/forms/field-types/index.d.ts +2 -0
- package/dist/admin/components/forms/field-types/index.js +4 -0
- package/dist/admin/components/forms/field-types/rowReducer.d.ts +39 -1
- package/dist/admin/components/forms/field-types/rowReducer.js +18 -5
- package/dist/admin/components/forms/useField/index.js +4 -5
- package/dist/admin/components/graphics/Account/index.js +14 -4
- package/dist/admin/components/graphics/Icon/index.js +9 -3
- package/dist/admin/components/graphics/Logo/index.js +16 -10
- package/dist/admin/components/icons/Calendar/index.scss +1 -1
- package/dist/admin/components/icons/Check/index.scss +1 -1
- package/dist/admin/components/icons/Chevron/index.scss +1 -1
- package/dist/admin/components/icons/CloseMenu/index.scss +1 -1
- package/dist/admin/components/icons/Copy/index.scss +1 -1
- package/dist/admin/components/icons/Drag/index.d.ts +6 -0
- package/dist/admin/components/icons/Drag/index.js +13 -0
- package/dist/admin/components/icons/Drag/index.scss +10 -0
- package/dist/admin/components/icons/Edit/index.scss +1 -1
- package/dist/admin/components/icons/IndentLeft/index.scss +2 -2
- package/dist/admin/components/icons/IndentRight/index.js +1 -1
- package/dist/admin/components/icons/IndentRight/index.scss +2 -2
- package/dist/admin/components/icons/LogOut/index.scss +1 -1
- package/dist/admin/components/icons/Menu/index.d.ts +1 -0
- package/dist/admin/components/icons/Menu/index.js +5 -4
- package/dist/admin/components/icons/Menu/index.scss +7 -0
- package/dist/admin/components/icons/More/index.d.ts +6 -0
- package/dist/admin/components/icons/More/index.js +10 -0
- package/dist/admin/components/icons/More/index.scss +10 -0
- package/dist/admin/components/icons/Plus/index.scss +1 -1
- package/dist/admin/components/icons/Relationship/index.scss +1 -1
- package/dist/admin/components/icons/Search/index.d.ts +1 -0
- package/dist/admin/components/icons/Search/index.js +4 -3
- package/dist/admin/components/icons/Search/index.scss +11 -0
- package/dist/admin/components/icons/Swap/index.scss +1 -1
- package/dist/admin/components/icons/Upload/index.scss +1 -1
- package/dist/admin/components/icons/X/index.d.ts +3 -1
- package/dist/admin/components/icons/X/index.js +4 -1
- package/dist/admin/components/icons/X/index.scss +1 -1
- package/dist/admin/components/modals/LeaveWithoutSaving/index.js +1 -1
- package/dist/admin/components/modals/LeaveWithoutSaving/index.scss +5 -0
- package/dist/admin/components/modals/StayLoggedIn/index.js +1 -1
- package/dist/admin/components/modals/StayLoggedIn/index.scss +5 -0
- package/dist/admin/components/templates/Default/index.scss +1 -7
- package/dist/admin/components/utilities/DocumentInfo/index.js +11 -0
- package/dist/admin/components/utilities/DocumentInfo/types.d.ts +2 -0
- package/dist/admin/components/utilities/Theme/index.d.ts +13 -0
- package/dist/admin/components/utilities/Theme/index.js +47 -0
- package/dist/admin/components/views/Account/Default.js +9 -4
- package/dist/admin/components/views/Account/ToggleTheme/index.d.ts +2 -0
- package/dist/admin/components/views/Account/ToggleTheme/index.js +23 -0
- package/dist/admin/components/views/Account/index.js +12 -14
- package/dist/admin/components/views/Account/index.scss +37 -21
- package/dist/admin/components/views/CreateFirstUser/index.js +4 -6
- package/dist/admin/components/views/Dashboard/Default.js +5 -4
- package/dist/admin/components/views/Dashboard/index.scss +3 -11
- package/dist/admin/components/views/Global/Default.js +3 -2
- package/dist/admin/components/views/Global/index.js +12 -14
- package/dist/admin/components/views/Global/index.scss +22 -22
- package/dist/admin/components/views/NotFound/index.d.ts +0 -1
- package/dist/admin/components/views/NotFound/index.js +2 -2
- package/dist/admin/components/views/Version/Compare/index.scss +3 -3
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +4 -4
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +1 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +1 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +7 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.scss +1 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.d.ts +6 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.js +3 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/styles.d.ts +13 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/styles.js +13 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +5 -1
- package/dist/admin/components/views/Version/Restore/index.js +1 -1
- package/dist/admin/components/views/Version/Restore/index.scss +5 -0
- package/dist/admin/components/views/Version/Version.js +2 -1
- package/dist/admin/components/views/Version/index.scss +4 -7
- package/dist/admin/components/views/Versions/index.js +3 -2
- package/dist/admin/components/views/Versions/index.scss +2 -12
- package/dist/admin/components/views/collections/Edit/Auth/index.scss +3 -2
- package/dist/admin/components/views/collections/Edit/Default.js +5 -4
- package/dist/admin/components/views/collections/Edit/Upload/index.scss +5 -5
- package/dist/admin/components/views/collections/Edit/index.js +16 -18
- package/dist/admin/components/views/collections/Edit/index.scss +20 -21
- package/dist/admin/components/views/collections/List/Cell/field-types/Checkbox/index.scss +4 -4
- package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.scss +4 -4
- package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.d.ts +1 -0
- package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.js +41 -34
- package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.scss +3 -0
- package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.d.ts +0 -5
- package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.js +0 -4
- package/dist/admin/components/views/collections/List/Cell/field-types/index.d.ts +1 -3
- package/dist/admin/components/views/collections/List/Cell/field-types/index.js +1 -2
- package/dist/admin/components/views/collections/List/Default.js +8 -6
- package/dist/admin/components/views/collections/List/RelationshipProvider/index.d.ts +19 -0
- package/dist/admin/components/views/collections/List/RelationshipProvider/index.js +46 -0
- package/dist/admin/components/views/collections/List/RelationshipProvider/reducer.d.ts +18 -0
- package/dist/admin/components/views/collections/List/RelationshipProvider/reducer.js +34 -0
- package/dist/admin/components/views/collections/List/buildColumns.js +26 -31
- package/dist/admin/components/views/collections/List/getInitialColumns.js +25 -23
- package/dist/admin/components/views/collections/List/index.js +2 -2
- package/dist/admin/components/views/collections/List/index.scss +4 -15
- package/dist/admin/index.js +7 -5
- package/dist/admin/scss/app.scss +52 -14
- package/dist/admin/scss/colors.scss +245 -0
- package/dist/admin/scss/fonts.scss +41 -14
- package/dist/admin/scss/resets.scss +1 -0
- package/dist/admin/scss/styles.scss +0 -2
- package/dist/admin/scss/toastify.scss +12 -8
- package/dist/admin/scss/type.scss +11 -9
- package/dist/admin/scss/vars.scss +50 -53
- package/dist/admin/utilities/flattenTopLevelFields.d.ts +3 -0
- package/dist/admin/utilities/flattenTopLevelFields.js +30 -0
- package/dist/admin/utilities/getOffsetTop.d.ts +1 -2
- package/dist/admin/utilities/getOffsetTop.js +1 -1
- package/dist/admin/utilities/scrollToID.d.ts +1 -0
- package/dist/admin/utilities/scrollToID.js +10 -0
- package/dist/auth/operations/access.js +6 -1
- package/dist/bin/generateTypes.js +11 -2
- package/dist/collections/graphql/init.js +2 -2
- package/dist/collections/operations/local/create.js +1 -1
- package/dist/collections/tests/collections.spec.js +1 -78
- package/dist/config/defaults.js +1 -2
- package/dist/config/schema.js +2 -2
- package/dist/config/types.d.ts +2 -2
- package/dist/express/admin.js +2 -2
- package/dist/fields/config/sanitize.js +8 -1
- package/dist/fields/config/schema.d.ts +2 -0
- package/dist/fields/config/schema.js +19 -7
- package/dist/fields/config/types.d.ts +19 -11
- package/dist/fields/config/types.js +2 -2
- package/dist/fields/hooks/afterChange/promise.js +18 -2
- package/dist/fields/hooks/afterRead/promise.js +22 -2
- package/dist/fields/hooks/beforeChange/promise.js +25 -2
- package/dist/fields/hooks/beforeValidate/promise.js +20 -2
- package/dist/fields/richText/recurseNestedFields.js +15 -1
- package/dist/graphql/schema/buildMutationInputType.d.ts +4 -1
- package/dist/graphql/schema/buildMutationInputType.js +94 -70
- package/dist/graphql/schema/buildObjectType.d.ts +5 -3
- package/dist/graphql/schema/buildObjectType.js +114 -71
- package/dist/graphql/schema/buildPoliciesType.js +9 -1
- package/dist/graphql/schema/buildWhereInputType.js +2 -2
- package/dist/graphql/schema/fieldToWhereInputSchemaMap.js +56 -7
- package/dist/graphql/schema/withNullableType.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +9 -7
- package/dist/mongoose/buildSchema.js +28 -7
- package/dist/mongoose/connect.d.ts +1 -1
- package/dist/mongoose/connect.js +24 -19
- package/dist/mongoose/testCredentials.d.ts +7 -7
- package/dist/mongoose/testCredentials.js +1 -1
- package/dist/utilities/mapAsync.d.ts +1 -0
- package/dist/utilities/mapAsync.js +8 -0
- package/dist/webpack/getBaseConfig.js +1 -2
- package/docs/admin/customizing-css.mdx +16 -28
- package/docs/fields/collapsible.mdx +44 -0
- package/docs/fields/date.mdx +1 -1
- package/docs/fields/email.mdx +1 -1
- package/docs/fields/group.mdx +1 -1
- package/docs/fields/number.mdx +1 -1
- package/docs/fields/overview.mdx +1 -0
- package/docs/fields/point.mdx +1 -1
- package/docs/fields/radio.mdx +1 -1
- package/docs/fields/relationship.mdx +1 -1
- package/docs/fields/rich-text.mdx +1 -1
- package/docs/fields/row.mdx +1 -1
- package/docs/fields/select.mdx +1 -1
- package/docs/fields/tabs.mdx +9 -0
- package/docs/fields/text.mdx +1 -1
- package/docs/fields/textarea.mdx +1 -1
- package/docs/fields/ui.mdx +1 -1
- package/docs/fields/upload.mdx +1 -1
- package/package.json +13 -11
- package/scss/index.scss +0 -7
- package/dist/admin/assets/fonts/SuisseIntl-Light.woff +0 -0
- package/dist/admin/assets/fonts/SuisseIntl-Light.woff2 +0 -0
- package/dist/admin/assets/fonts/SuisseIntl-Thin.woff +0 -0
- package/dist/admin/assets/fonts/SuisseIntl-Thin.woff2 +0 -0
- package/dist/admin/components/forms/DraggableSection/ActionPanel/index.js +0 -22
- package/dist/admin/components/forms/DraggableSection/ActionPanel/index.scss +0 -12
- package/dist/admin/components/forms/DraggableSection/ActionPanel/types.d.ts +0 -11
- package/dist/admin/components/forms/DraggableSection/PositionPanel/index.js +0 -18
- package/dist/admin/components/forms/DraggableSection/PositionPanel/index.scss +0 -21
- package/dist/admin/components/forms/DraggableSection/PositionPanel/types.d.ts +0 -6
- package/dist/admin/components/forms/DraggableSection/SectionTitle/index.scss +0 -37
- package/dist/admin/components/forms/DraggableSection/index.d.ts +0 -5
- package/dist/admin/components/forms/DraggableSection/index.js +0 -40
- package/dist/admin/components/forms/DraggableSection/index.scss +0 -113
- package/dist/admin/components/forms/DraggableSection/types.d.ts +0 -24
- package/dist/admin/components/forms/FieldTypeGutter/context.d.ts +0 -6
- package/dist/admin/components/forms/FieldTypeGutter/context.js +0 -9
- package/dist/admin/components/forms/FieldTypeGutter/index.js +0 -18
- package/dist/admin/components/forms/FieldTypeGutter/index.scss +0 -87
- package/dist/admin/components/views/NotFound/index.scss +0 -10
- package/dist/collections/tests/uploads.spec.d.ts +0 -1
- package/dist/collections/tests/uploads.spec.js +0 -365
- package/dist/errors/errors.spec.d.ts +0 -1
- package/dist/errors/errors.spec.js +0 -29
- package/dist/utilities/flattenTopLevelFields.d.ts +0 -2
- package/dist/utilities/flattenTopLevelFields.js +0 -16
|
@@ -41,7 +41,7 @@ const Restore = ({ collection, global, className, versionID, originalDocID, vers
|
|
|
41
41
|
return (React.createElement(Fragment, null,
|
|
42
42
|
React.createElement(Pill, { onClick: () => toggle(modalSlug), className: [baseClass, className].filter(Boolean).join(' ') }, "Restore this version"),
|
|
43
43
|
React.createElement(Modal, { slug: modalSlug, className: `${baseClass}__modal` },
|
|
44
|
-
React.createElement(MinimalTemplate,
|
|
44
|
+
React.createElement(MinimalTemplate, { className: `${baseClass}__modal-template` },
|
|
45
45
|
React.createElement("h1", null, "Confirm version restoration"),
|
|
46
46
|
React.createElement("p", null, restoreMessage),
|
|
47
47
|
React.createElement(Button, { buttonStyle: "secondary", type: "button", onClick: processing ? undefined : () => toggle(modalSlug) }, "Cancel"),
|
|
@@ -16,6 +16,7 @@ import RenderFieldsToDiff from './RenderFieldsToDiff';
|
|
|
16
16
|
import fieldComponents from './RenderFieldsToDiff/fields';
|
|
17
17
|
import { fieldAffectsData } from '../../../../fields/config/types';
|
|
18
18
|
import { useLocale } from '../../utilities/Locale';
|
|
19
|
+
import { Gutter } from '../../elements/Gutter';
|
|
19
20
|
import './index.scss';
|
|
20
21
|
const baseClass = 'view-version';
|
|
21
22
|
const VersionView = ({ collection, global }) => {
|
|
@@ -142,7 +143,7 @@ const VersionView = ({ collection, global }) => {
|
|
|
142
143
|
return (React.createElement("div", { className: baseClass },
|
|
143
144
|
React.createElement(Meta, { title: metaTitle, description: metaDesc }),
|
|
144
145
|
React.createElement(Eyebrow, null),
|
|
145
|
-
React.createElement(
|
|
146
|
+
React.createElement(Gutter, { className: `${baseClass}__wrap` },
|
|
146
147
|
React.createElement("div", { className: `${baseClass}__intro` },
|
|
147
148
|
(doc === null || doc === void 0 ? void 0 : doc.autosave) ? 'Autosaved version ' : 'Version',
|
|
148
149
|
' ',
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
margin-bottom: base(2);
|
|
6
6
|
|
|
7
7
|
&__wrap {
|
|
8
|
-
padding: base(
|
|
9
|
-
margin-right: base(2);
|
|
10
|
-
background: white;
|
|
8
|
+
padding-top: base(1);
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
&__header {
|
|
@@ -27,7 +25,7 @@
|
|
|
27
25
|
margin-left: base(-.5);
|
|
28
26
|
margin-right: base(-.5);
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
>* {
|
|
31
29
|
margin-left: base(.5);
|
|
32
30
|
margin-right: base(.5);
|
|
33
31
|
flex-basis: 100%;
|
|
@@ -40,8 +38,7 @@
|
|
|
40
38
|
|
|
41
39
|
@include mid-break {
|
|
42
40
|
&__wrap {
|
|
43
|
-
padding:
|
|
44
|
-
margin-right: 0;
|
|
41
|
+
padding-top: 0;
|
|
45
42
|
}
|
|
46
43
|
|
|
47
44
|
&__intro,
|
|
@@ -53,7 +50,7 @@
|
|
|
53
50
|
display: block;
|
|
54
51
|
margin: 0 base(-.5) base(2);
|
|
55
52
|
|
|
56
|
-
|
|
53
|
+
>* {
|
|
57
54
|
margin-bottom: base(.5);
|
|
58
55
|
}
|
|
59
56
|
}
|
|
@@ -14,8 +14,9 @@ import Paginator from '../../elements/Paginator';
|
|
|
14
14
|
import PerPage from '../../elements/PerPage';
|
|
15
15
|
import { useSearchParams } from '../../utilities/SearchParams';
|
|
16
16
|
import { Banner, Pill } from '../..';
|
|
17
|
-
import './index.scss';
|
|
18
17
|
import { shouldIncrementVersionCount } from '../../../../versions/shouldIncrementVersionCount';
|
|
18
|
+
import { Gutter } from '../../elements/Gutter';
|
|
19
|
+
import './index.scss';
|
|
19
20
|
const baseClass = 'versions';
|
|
20
21
|
const Versions = ({ collection, global }) => {
|
|
21
22
|
var _a, _b, _c;
|
|
@@ -142,7 +143,7 @@ const Versions = ({ collection, global }) => {
|
|
|
142
143
|
return (React.createElement("div", { className: baseClass },
|
|
143
144
|
React.createElement(Meta, { title: metaTitle, description: metaDesc }),
|
|
144
145
|
React.createElement(Eyebrow, null),
|
|
145
|
-
React.createElement(
|
|
146
|
+
React.createElement(Gutter, { className: `${baseClass}__wrap` },
|
|
146
147
|
React.createElement("header", { className: `${baseClass}__header` },
|
|
147
148
|
React.createElement("div", { className: `${baseClass}__intro` }, "Showing versions for:"),
|
|
148
149
|
useIDLabel && (React.createElement(IDLabel, { id: doc === null || doc === void 0 ? void 0 : doc.id })),
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
margin-bottom: base(2);
|
|
6
6
|
|
|
7
7
|
&__wrap {
|
|
8
|
-
padding: base(
|
|
9
|
-
margin-right: base(2);
|
|
10
|
-
background: white;
|
|
8
|
+
padding-top: base(1);
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
&__header {
|
|
@@ -52,15 +50,7 @@
|
|
|
52
50
|
|
|
53
51
|
@include mid-break {
|
|
54
52
|
&__wrap {
|
|
55
|
-
padding:
|
|
56
|
-
margin-right: 0;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
&__header,
|
|
60
|
-
.table,
|
|
61
|
-
&__page-controls {
|
|
62
|
-
padding-left: $baseline;
|
|
63
|
-
padding-right: $baseline;
|
|
53
|
+
padding-top: 0;
|
|
64
54
|
}
|
|
65
55
|
|
|
66
56
|
&__page-controls {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
.auth-fields {
|
|
4
4
|
margin: base(1.5) 0 base(2);
|
|
5
5
|
padding: base(2) base(2) base(1.5);
|
|
6
|
-
background:
|
|
6
|
+
background: var(--theme-elevation-50);
|
|
7
7
|
|
|
8
8
|
.btn {
|
|
9
9
|
margin-top: 0;
|
|
@@ -25,8 +25,9 @@
|
|
|
25
25
|
|
|
26
26
|
@keyframes highlight {
|
|
27
27
|
0% {
|
|
28
|
-
background:
|
|
28
|
+
background: var(--theme-success-500);
|
|
29
29
|
}
|
|
30
|
+
|
|
30
31
|
100% {
|
|
31
32
|
background: none;
|
|
32
33
|
}
|
|
@@ -24,6 +24,7 @@ import Publish from '../../../elements/Publish';
|
|
|
24
24
|
import SaveDraft from '../../../elements/SaveDraft';
|
|
25
25
|
import { useDocumentInfo } from '../../../utilities/DocumentInfo';
|
|
26
26
|
import { OperationContext } from '../../../utilities/OperationProvider';
|
|
27
|
+
import { Gutter } from '../../../elements/Gutter';
|
|
27
28
|
import './index.scss';
|
|
28
29
|
const baseClass = 'collection-edit';
|
|
29
30
|
const DefaultEditView = (props) => {
|
|
@@ -46,7 +47,7 @@ const DefaultEditView = (props) => {
|
|
|
46
47
|
React.createElement(Meta, { title: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, description: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, keywords: `${collection.labels.singular}, Payload, CMS` }),
|
|
47
48
|
React.createElement(Eyebrow, null),
|
|
48
49
|
!(((_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) && ((_c = (_b = collection.versions) === null || _b === void 0 ? void 0 : _b.drafts) === null || _c === void 0 ? void 0 : _c.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
|
|
49
|
-
React.createElement(
|
|
50
|
+
React.createElement(Gutter, { className: `${baseClass}__edit` },
|
|
50
51
|
React.createElement("header", { className: `${baseClass}__header` },
|
|
51
52
|
React.createElement("h1", null,
|
|
52
53
|
React.createElement(RenderTitle, { ...{ data, useAsTitle, fallback: '[Untitled]' } }))),
|
|
@@ -59,18 +60,18 @@ const DefaultEditView = (props) => {
|
|
|
59
60
|
React.createElement("ul", { className: `${baseClass}__collection-actions` },
|
|
60
61
|
((_d = permissions === null || permissions === void 0 ? void 0 : permissions.create) === null || _d === void 0 ? void 0 : _d.permission) && (React.createElement(React.Fragment, null,
|
|
61
62
|
React.createElement("li", null,
|
|
62
|
-
React.createElement(Link, { to: `${admin}/collections/${slug}/create` }, "Create New")),
|
|
63
|
+
React.createElement(Link, { id: "action-create", to: `${admin}/collections/${slug}/create` }, "Create New")),
|
|
63
64
|
!disableDuplicate && (React.createElement("li", null,
|
|
64
65
|
React.createElement(DuplicateDocument, { slug: slug }))))),
|
|
65
66
|
((_e = permissions === null || permissions === void 0 ? void 0 : permissions.delete) === null || _e === void 0 ? void 0 : _e.permission) && (React.createElement("li", null,
|
|
66
|
-
React.createElement(DeleteDocument, { collection: collection, id: id })))),
|
|
67
|
+
React.createElement(DeleteDocument, { collection: collection, id: id, buttonId: "action-delete" })))),
|
|
67
68
|
React.createElement("div", { className: `${baseClass}__document-actions${((((_f = collection.versions) === null || _f === void 0 ? void 0 : _f.drafts) && !((_h = (_g = collection.versions) === null || _g === void 0 ? void 0 : _g.drafts) === null || _h === void 0 ? void 0 : _h.autosave)) || (isEditing && preview)) ? ` ${baseClass}__document-actions--has-2` : ''}` },
|
|
68
69
|
(preview && (!((_j = collection.versions) === null || _j === void 0 ? void 0 : _j.drafts) || ((_l = (_k = collection.versions) === null || _k === void 0 ? void 0 : _k.drafts) === null || _l === void 0 ? void 0 : _l.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
|
|
69
70
|
hasSavePermission && (React.createElement(React.Fragment, null,
|
|
70
71
|
((_m = collection.versions) === null || _m === void 0 ? void 0 : _m.drafts) && (React.createElement(React.Fragment, null,
|
|
71
72
|
!collection.versions.drafts.autosave && (React.createElement(SaveDraft, null)),
|
|
72
73
|
React.createElement(Publish, null))),
|
|
73
|
-
!((_o = collection.versions) === null || _o === void 0 ? void 0 : _o.drafts) && (React.createElement(FormSubmit,
|
|
74
|
+
!((_o = collection.versions) === null || _o === void 0 ? void 0 : _o.drafts) && (React.createElement(FormSubmit, { buttonId: "action-save" }, "Save"))))),
|
|
74
75
|
React.createElement("div", { className: `${baseClass}__sidebar-fields` },
|
|
75
76
|
(isEditing && preview && (((_p = collection.versions) === null || _p === void 0 ? void 0 : _p.drafts) && !((_r = (_q = collection.versions) === null || _q === void 0 ? void 0 : _q.drafts) === null || _r === void 0 ? void 0 : _r.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
|
|
76
77
|
((_s = collection.versions) === null || _s === void 0 ? void 0 : _s.drafts) && (React.createElement(React.Fragment, null,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
.file-field {
|
|
4
4
|
position: relative;
|
|
5
5
|
margin: base(1.5) 0 base(2);
|
|
6
|
-
background:
|
|
6
|
+
background: var(--theme-elevation-50);
|
|
7
7
|
|
|
8
8
|
.tooltip.error-message {
|
|
9
9
|
z-index: 3;
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
&__file-selected,
|
|
24
24
|
&__drop-zone {
|
|
25
|
-
background:
|
|
25
|
+
background: var(--theme-elevation-100);
|
|
26
26
|
position: relative;
|
|
27
27
|
z-index: 2;
|
|
28
28
|
padding: base(2);
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
&__drop-zone {
|
|
34
|
-
border: 1px dotted
|
|
34
|
+
border: 1px dotted var(--theme-elevation-400);
|
|
35
35
|
|
|
36
36
|
.btn {
|
|
37
37
|
margin: 0 $baseline 0 0;
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
|
|
53
53
|
&--dragging {
|
|
54
54
|
.file-field__drop-zone {
|
|
55
|
-
border-color:
|
|
56
|
-
background:
|
|
55
|
+
border-color: var(--theme-success-500);
|
|
56
|
+
background: var(--theme-success-150);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -8,7 +8,6 @@ import RenderCustomComponent from '../../../utilities/RenderCustomComponent';
|
|
|
8
8
|
import DefaultEdit from './Default';
|
|
9
9
|
import formatFields from './formatFields';
|
|
10
10
|
import buildStateFromSchema from '../../../forms/Form/buildStateFromSchema';
|
|
11
|
-
import { NegativeFieldGutterProvider } from '../../../forms/FieldTypeGutter/context';
|
|
12
11
|
import { useLocale } from '../../../utilities/Locale';
|
|
13
12
|
import { useDocumentInfo } from '../../../utilities/DocumentInfo';
|
|
14
13
|
const EditView = (props) => {
|
|
@@ -25,7 +24,7 @@ const EditView = (props) => {
|
|
|
25
24
|
const { setStepNav } = useStepNav();
|
|
26
25
|
const [initialState, setInitialState] = useState({});
|
|
27
26
|
const { permissions, user } = useAuth();
|
|
28
|
-
const { getVersions } = useDocumentInfo();
|
|
27
|
+
const { getVersions, preferences } = useDocumentInfo();
|
|
29
28
|
const onSave = useCallback(async (json) => {
|
|
30
29
|
var _a;
|
|
31
30
|
getVersions();
|
|
@@ -37,7 +36,7 @@ const EditView = (props) => {
|
|
|
37
36
|
setInitialState(state);
|
|
38
37
|
}
|
|
39
38
|
}, [admin, collection, history, isEditing, getVersions, user, id, locale]);
|
|
40
|
-
const [{ data, isLoading, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
|
|
39
|
+
const [{ data, isLoading: isLoadingDocument, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
|
|
41
40
|
const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
|
|
42
41
|
useEffect(() => {
|
|
43
42
|
const nav = [{
|
|
@@ -71,7 +70,7 @@ const EditView = (props) => {
|
|
|
71
70
|
setStepNav(nav);
|
|
72
71
|
}, [setStepNav, isEditing, pluralLabel, dataToRender, slug, useAsTitle, admin]);
|
|
73
72
|
useEffect(() => {
|
|
74
|
-
if (
|
|
73
|
+
if (isLoadingDocument) {
|
|
75
74
|
return;
|
|
76
75
|
}
|
|
77
76
|
const awaitInitialState = async () => {
|
|
@@ -79,7 +78,7 @@ const EditView = (props) => {
|
|
|
79
78
|
setInitialState(state);
|
|
80
79
|
};
|
|
81
80
|
awaitInitialState();
|
|
82
|
-
}, [dataToRender, fields, isEditing, id, user, locale,
|
|
81
|
+
}, [dataToRender, fields, isEditing, id, user, locale, isLoadingDocument]);
|
|
83
82
|
if (isError) {
|
|
84
83
|
return (React.createElement(Redirect, { to: `${admin}/not-found` }));
|
|
85
84
|
}
|
|
@@ -87,18 +86,17 @@ const EditView = (props) => {
|
|
|
87
86
|
const apiURL = `${serverURL}${api}/${slug}/${id}${collection.versions.drafts ? '?draft=true' : ''}`;
|
|
88
87
|
const action = `${serverURL}${api}/${slug}${isEditing ? `/${id}` : ''}?locale=${locale}&depth=0&fallback-locale=null`;
|
|
89
88
|
const hasSavePermission = (isEditing && ((_b = collectionPermissions === null || collectionPermissions === void 0 ? void 0 : collectionPermissions.update) === null || _b === void 0 ? void 0 : _b.permission)) || (!isEditing && ((_c = collectionPermissions === null || collectionPermissions === void 0 ? void 0 : collectionPermissions.create) === null || _c === void 0 ? void 0 : _c.permission));
|
|
90
|
-
return (React.createElement(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
} })));
|
|
89
|
+
return (React.createElement(RenderCustomComponent, { DefaultComponent: DefaultEdit, CustomComponent: CustomEdit, componentProps: {
|
|
90
|
+
isLoading: isLoadingDocument || !preferences,
|
|
91
|
+
data: dataToRender,
|
|
92
|
+
collection,
|
|
93
|
+
permissions: collectionPermissions,
|
|
94
|
+
isEditing,
|
|
95
|
+
onSave,
|
|
96
|
+
initialState,
|
|
97
|
+
hasSavePermission,
|
|
98
|
+
apiURL,
|
|
99
|
+
action,
|
|
100
|
+
} }));
|
|
103
101
|
};
|
|
104
102
|
export default EditView;
|
|
@@ -35,10 +35,8 @@
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
&__edit {
|
|
38
|
-
|
|
39
|
-
padding: base(
|
|
40
|
-
margin-bottom: base(1.5);
|
|
41
|
-
overflow-x: auto;
|
|
38
|
+
padding-top: base(1);
|
|
39
|
+
padding-bottom: base(2);
|
|
42
40
|
flex-grow: 1;
|
|
43
41
|
}
|
|
44
42
|
|
|
@@ -49,6 +47,7 @@
|
|
|
49
47
|
top: 0;
|
|
50
48
|
right: 0;
|
|
51
49
|
overflow: visible;
|
|
50
|
+
border-left: 1px solid var(--theme-elevation-100);
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
&__sidebar {
|
|
@@ -76,20 +75,25 @@
|
|
|
76
75
|
position: sticky;
|
|
77
76
|
top: 0;
|
|
78
77
|
z-index: $z-nav;
|
|
78
|
+
|
|
79
|
+
>* {
|
|
80
|
+
position: relative;
|
|
81
|
+
z-index: 1;
|
|
82
|
+
}
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
&__document-actions--has-2 {
|
|
82
86
|
display: flex;
|
|
83
87
|
|
|
84
|
-
|
|
88
|
+
>* {
|
|
85
89
|
width: calc(50% - #{base(.5)});
|
|
86
90
|
}
|
|
87
91
|
|
|
88
|
-
|
|
92
|
+
>*:first-child {
|
|
89
93
|
margin-right: base(.5);
|
|
90
94
|
}
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
>*:last-child {
|
|
93
97
|
margin-left: base(.5);
|
|
94
98
|
}
|
|
95
99
|
|
|
@@ -134,12 +138,14 @@
|
|
|
134
138
|
}
|
|
135
139
|
|
|
136
140
|
&__label {
|
|
137
|
-
color:
|
|
141
|
+
color: var(--theme-elevation-400);
|
|
138
142
|
}
|
|
139
143
|
|
|
140
144
|
&__collection-actions,
|
|
141
145
|
&__api-url {
|
|
142
|
-
|
|
146
|
+
|
|
147
|
+
a,
|
|
148
|
+
button {
|
|
143
149
|
cursor: pointer;
|
|
144
150
|
font-weight: 600;
|
|
145
151
|
text-decoration: none;
|
|
@@ -156,12 +162,6 @@
|
|
|
156
162
|
}
|
|
157
163
|
}
|
|
158
164
|
|
|
159
|
-
@include large-break {
|
|
160
|
-
&__edit {
|
|
161
|
-
padding: base(3.5);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
165
|
@include mid-break {
|
|
166
166
|
&__main {
|
|
167
167
|
width: 100%;
|
|
@@ -179,8 +179,8 @@
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
&__edit {
|
|
182
|
-
padding:
|
|
183
|
-
|
|
182
|
+
padding-top: 0;
|
|
183
|
+
padding-bottom: 0;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
&__document-actions {
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
&__document-actions,
|
|
196
196
|
&__meta,
|
|
197
197
|
&__sidebar-fields {
|
|
198
|
-
padding-left:
|
|
198
|
+
padding-left: var(--gutter-h);
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
&__sidebar-fields {
|
|
@@ -205,9 +205,8 @@
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
&__collection-actions {
|
|
208
|
-
|
|
209
|
-
padding
|
|
210
|
-
padding-bottom: 0;
|
|
208
|
+
border-top: 1px solid var(--theme-elevation-100);
|
|
209
|
+
padding: base(1) 0 0 base(1);
|
|
211
210
|
order: 1;
|
|
212
211
|
|
|
213
212
|
li {
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
border: 0;
|
|
7
7
|
display: inline-flex;
|
|
8
8
|
vertical-align: middle;
|
|
9
|
-
background:
|
|
10
|
-
color:
|
|
9
|
+
background: var(--theme-elevation-150);
|
|
10
|
+
color: var(--theme-elevation-800);
|
|
11
11
|
border-radius: $style-radius-s;
|
|
12
12
|
padding: 0 base(0.25);
|
|
13
13
|
padding-left: base(0.0875 + 0.25);
|
|
14
14
|
|
|
15
|
-
background:
|
|
16
|
-
color:
|
|
15
|
+
background: var(--theme-elevation-100);
|
|
16
|
+
color: var(--theme-elevation-800);
|
|
17
17
|
}
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
border: 0;
|
|
7
7
|
display: inline-flex;
|
|
8
8
|
vertical-align: middle;
|
|
9
|
-
background:
|
|
10
|
-
color:
|
|
9
|
+
background: var(--theme-elevation-150);
|
|
10
|
+
color: var(--theme-elevation-800);
|
|
11
11
|
border-radius: $style-radius-s;
|
|
12
12
|
padding: 0 base(0.25);
|
|
13
13
|
padding-left: base(0.0875 + 0.25);
|
|
14
14
|
|
|
15
|
-
background:
|
|
16
|
-
color:
|
|
15
|
+
background: var(--theme-elevation-100);
|
|
16
|
+
color: var(--theme-elevation-800);
|
|
17
17
|
}
|
|
@@ -1,43 +1,50 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { useConfig } from '../../../../../../utilities/Config';
|
|
3
|
+
import useIntersect from '../../../../../../../hooks/useIntersect';
|
|
4
|
+
import { useListRelationships } from '../../../RelationshipProvider';
|
|
5
|
+
import './index.scss';
|
|
6
|
+
const baseClass = 'relationship-cell';
|
|
7
|
+
const totalToShow = 3;
|
|
3
8
|
const RelationshipCell = (props) => {
|
|
9
|
+
var _a;
|
|
4
10
|
const { field, data: cellData } = props;
|
|
5
|
-
const {
|
|
6
|
-
const
|
|
7
|
-
const [
|
|
11
|
+
const { collections, routes } = useConfig();
|
|
12
|
+
const [intersectionRef, entry] = useIntersect();
|
|
13
|
+
const [values, setValues] = useState([]);
|
|
14
|
+
const { getRelationships, documents } = useListRelationships();
|
|
15
|
+
const [hasRequested, setHasRequested] = useState(false);
|
|
16
|
+
const isAboveViewport = ((_a = entry === null || entry === void 0 ? void 0 : entry.boundingClientRect) === null || _a === void 0 ? void 0 : _a.top) > 0;
|
|
8
17
|
useEffect(() => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const collection = collections.find((coll) => coll.slug === relation);
|
|
16
|
-
if (collection) {
|
|
17
|
-
const useAsTitle = collection.admin.useAsTitle ? collection.admin.useAsTitle : 'id';
|
|
18
|
-
let title;
|
|
19
|
-
if (typeof doc === 'string') {
|
|
20
|
-
title = doc;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
title = (doc === null || doc === void 0 ? void 0 : doc[useAsTitle]) ? doc[useAsTitle] : doc;
|
|
24
|
-
}
|
|
25
|
-
return newData ? `${newData}, ${title}` : title;
|
|
26
|
-
}
|
|
27
|
-
return newData;
|
|
28
|
-
}, ''));
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
const relation = hasManyRelations ? cellData === null || cellData === void 0 ? void 0 : cellData.relationTo : relationTo;
|
|
32
|
-
const doc = hasManyRelations ? cellData.value : cellData;
|
|
33
|
-
const collection = collections.find((coll) => coll.slug === relation);
|
|
34
|
-
if (collection && doc) {
|
|
35
|
-
const useAsTitle = collection.admin.useAsTitle ? collection.admin.useAsTitle : 'id';
|
|
36
|
-
setData(doc[useAsTitle] ? doc[useAsTitle] : doc);
|
|
18
|
+
if (cellData && isAboveViewport && !hasRequested) {
|
|
19
|
+
const formattedValues = [];
|
|
20
|
+
const arrayCellData = Array.isArray(cellData) ? cellData : [cellData];
|
|
21
|
+
arrayCellData.slice(0, (arrayCellData.length < totalToShow ? arrayCellData.length : totalToShow)).forEach((cell) => {
|
|
22
|
+
if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {
|
|
23
|
+
formattedValues.push(cell);
|
|
37
24
|
}
|
|
38
|
-
|
|
25
|
+
if ((typeof cell === 'number' || typeof cell === 'string') && typeof field.relationTo === 'string') {
|
|
26
|
+
formattedValues.push({
|
|
27
|
+
value: cell,
|
|
28
|
+
relationTo: field.relationTo,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
getRelationships(formattedValues);
|
|
33
|
+
setHasRequested(true);
|
|
34
|
+
setValues(formattedValues);
|
|
39
35
|
}
|
|
40
|
-
}, [cellData,
|
|
41
|
-
return (React.createElement(
|
|
36
|
+
}, [cellData, field, collections, isAboveViewport, routes.api, hasRequested, getRelationships]);
|
|
37
|
+
return (React.createElement("div", { className: baseClass, ref: intersectionRef },
|
|
38
|
+
values.map(({ relationTo, value }, i) => {
|
|
39
|
+
const document = documents[relationTo][value];
|
|
40
|
+
const relatedCollection = collections.find(({ slug }) => slug === relationTo);
|
|
41
|
+
return (React.createElement(React.Fragment, { key: i },
|
|
42
|
+
document === false && `Untitled - ID: ${value}`,
|
|
43
|
+
document === null && 'Loading...',
|
|
44
|
+
document && (document[relatedCollection.admin.useAsTitle] ? document[relatedCollection.admin.useAsTitle] : `Untitled - ID: ${value}`),
|
|
45
|
+
values.length > i + 1 && ', '));
|
|
46
|
+
}),
|
|
47
|
+
Array.isArray(cellData) && cellData.length > totalToShow && ` and ${cellData.length - totalToShow} more`,
|
|
48
|
+
values.length === 0 && `No <${field.label}>`));
|
|
42
49
|
};
|
|
43
50
|
export default RelationshipCell;
|
|
@@ -7,7 +7,6 @@ import relationship from './Relationship';
|
|
|
7
7
|
import richText from './Richtext';
|
|
8
8
|
import select from './Select';
|
|
9
9
|
import textarea from './Textarea';
|
|
10
|
-
import upload from './Upload';
|
|
11
10
|
export default {
|
|
12
11
|
array,
|
|
13
12
|
blocks,
|
|
@@ -18,5 +17,5 @@ export default {
|
|
|
18
17
|
richText,
|
|
19
18
|
select,
|
|
20
19
|
textarea,
|
|
21
|
-
upload,
|
|
20
|
+
upload: relationship,
|
|
22
21
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { Fragment } from 'react';
|
|
2
|
-
import { useHistory
|
|
2
|
+
import { useHistory } from 'react-router-dom';
|
|
3
3
|
import { useConfig } from '../../../utilities/Config';
|
|
4
4
|
import UploadGallery from '../../../elements/UploadGallery';
|
|
5
5
|
import Eyebrow from '../../../elements/Eyebrow';
|
|
@@ -9,28 +9,30 @@ import Pill from '../../../elements/Pill';
|
|
|
9
9
|
import Button from '../../../elements/Button';
|
|
10
10
|
import Table from '../../../elements/Table';
|
|
11
11
|
import Meta from '../../../utilities/Meta';
|
|
12
|
-
import './index.scss';
|
|
13
12
|
import ViewDescription from '../../../elements/ViewDescription';
|
|
14
13
|
import PerPage from '../../../elements/PerPage';
|
|
14
|
+
import { Gutter } from '../../../elements/Gutter';
|
|
15
|
+
import { RelationshipProvider } from './RelationshipProvider';
|
|
16
|
+
import './index.scss';
|
|
15
17
|
const baseClass = 'collection-list';
|
|
16
18
|
const DefaultList = (props) => {
|
|
17
19
|
var _a, _b;
|
|
18
20
|
const { collection, collection: { upload, slug, labels: { singular: singularLabel, plural: pluralLabel, }, admin: { description, } = {}, }, data, newDocumentURL, limit, tableColumns, columnNames, setColumns, hasCreatePermission, } = props;
|
|
19
21
|
const { routes: { admin } } = useConfig();
|
|
20
22
|
const history = useHistory();
|
|
21
|
-
const { pathname, search } = useLocation();
|
|
22
23
|
return (React.createElement("div", { className: baseClass },
|
|
23
24
|
React.createElement(Meta, { title: collection.labels.plural }),
|
|
24
25
|
React.createElement(Eyebrow, null),
|
|
25
|
-
React.createElement(
|
|
26
|
+
React.createElement(Gutter, { className: `${baseClass}__wrap` },
|
|
26
27
|
React.createElement("header", { className: `${baseClass}__header` },
|
|
27
28
|
React.createElement("h1", null, pluralLabel),
|
|
28
29
|
hasCreatePermission && (React.createElement(Pill, { to: newDocumentURL }, "Create New")),
|
|
29
30
|
description && (React.createElement("div", { className: `${baseClass}__sub-header` },
|
|
30
31
|
React.createElement(ViewDescription, { description: description })))),
|
|
31
32
|
React.createElement(ListControls, { collection: collection, columns: columnNames, setColumns: setColumns, enableColumns: Boolean(!upload), enableSort: Boolean(upload) }),
|
|
32
|
-
(data.docs && data.docs.length > 0) && (React.createElement(React.Fragment,
|
|
33
|
-
!upload && (React.createElement(
|
|
33
|
+
(data.docs && data.docs.length > 0) && (React.createElement(React.Fragment, null,
|
|
34
|
+
!upload && (React.createElement(RelationshipProvider, null,
|
|
35
|
+
React.createElement(Table, { data: data.docs, columns: tableColumns }))),
|
|
34
36
|
upload && (React.createElement(UploadGallery, { docs: data.docs, collection: collection, onCardClick: (doc) => history.push(`${admin}/collections/${slug}/${doc.id}`) })))),
|
|
35
37
|
data.docs && data.docs.length === 0 && (React.createElement("div", { className: `${baseClass}__no-results` },
|
|
36
38
|
React.createElement("p", null,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TypeWithID } from '../../../../../../collections/config/types';
|
|
3
|
+
export declare type Documents = {
|
|
4
|
+
[slug: string]: {
|
|
5
|
+
[id: string | number]: TypeWithID | null | false;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
declare type ListRelationshipContext = {
|
|
9
|
+
getRelationships: (docs: {
|
|
10
|
+
relationTo: string;
|
|
11
|
+
value: number | string;
|
|
12
|
+
}[]) => void;
|
|
13
|
+
documents: Documents;
|
|
14
|
+
};
|
|
15
|
+
export declare const RelationshipProvider: React.FC<{
|
|
16
|
+
children?: React.ReactNode;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const useListRelationships: () => ListRelationshipContext;
|
|
19
|
+
export {};
|