@websolutespa/payload-plugin-bowl 2.0.1 → 3.0.1
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/CHANGELOG.md +23 -4
- package/README.md +1 -1
- package/dist/blocks/MenuItem.js +219 -0
- package/dist/blocks/MenuItem.js.map +1 -0
- package/dist/blocks/index.js +4 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/withComponentBlock.js +31 -0
- package/dist/blocks/withComponentBlock.js.map +1 -0
- package/dist/bowl.js +331 -0
- package/dist/bowl.js.map +1 -0
- package/dist/collections/Address.js +7 -0
- package/dist/collections/Address.js.map +1 -0
- package/dist/collections/Category.js +94 -0
- package/dist/collections/Category.js.map +1 -0
- package/dist/collections/ConsentPreference.js +34 -0
- package/dist/collections/ConsentPreference.js.map +1 -0
- package/dist/collections/Continent.js +24 -0
- package/dist/collections/Continent.js.map +1 -0
- package/dist/collections/Country.js +66 -0
- package/dist/collections/Country.js.map +1 -0
- package/dist/collections/CountryZone.js +24 -0
- package/dist/collections/CountryZone.js.map +1 -0
- package/dist/collections/EmailConfig.js +84 -0
- package/dist/collections/EmailConfig.js.map +1 -0
- package/dist/collections/EndUsers.js +24 -0
- package/dist/collections/EndUsers.js.map +1 -0
- package/dist/collections/Label.js +26 -0
- package/dist/collections/Label.js.map +1 -0
- package/dist/collections/Language.js +35 -0
- package/dist/collections/Language.js.map +1 -0
- package/dist/collections/LegalNotice.js +29 -0
- package/dist/collections/LegalNotice.js.map +1 -0
- package/dist/collections/Market.js +106 -0
- package/dist/collections/Market.js.map +1 -0
- package/dist/collections/Media.js +40 -0
- package/dist/collections/Media.js.map +1 -0
- package/dist/collections/Menu.js +49 -0
- package/dist/collections/Menu.js.map +1 -0
- package/dist/collections/Municipality.js +68 -0
- package/dist/collections/Municipality.js.map +1 -0
- package/dist/collections/Province.js +59 -0
- package/dist/collections/Province.js.map +1 -0
- package/dist/collections/Redirect.js +90 -0
- package/dist/collections/Redirect.js.map +1 -0
- package/dist/collections/Region.js +45 -0
- package/dist/collections/Region.js.map +1 -0
- package/dist/collections/SubContinent.js +36 -0
- package/dist/collections/SubContinent.js.map +1 -0
- package/dist/collections/Template.js +79 -0
- package/dist/collections/Template.js.map +1 -0
- package/dist/collections/Users.js +11 -0
- package/dist/collections/Users.js.map +1 -0
- package/dist/components/Category/CategoryMenu.js +47 -0
- package/dist/components/Category/CategoryMenu.js.map +1 -0
- package/dist/components/Category/CategoryTree.js +430 -0
- package/dist/components/Category/CategoryTree.js.map +1 -0
- package/dist/components/Category/CategoryTree.scss +330 -0
- package/dist/components/Category/CategoryTreeRoute.js +51 -0
- package/dist/components/Category/CategoryTreeRoute.js.map +1 -0
- package/dist/components/Category/category.service.js +32 -0
- package/dist/components/Category/category.service.js.map +1 -0
- package/dist/components/DataTree/DataTree.js +281 -0
- package/dist/components/DataTree/DataTree.js.map +1 -0
- package/dist/components/DataTree/DataTree.scss +363 -0
- package/dist/components/DataTree/DataTreeProvider.js +67 -0
- package/dist/components/DataTree/DataTreeProvider.js.map +1 -0
- package/dist/components/DataTree/EventEmitter.js +38 -0
- package/dist/components/DataTree/EventEmitter.js.map +1 -0
- package/dist/components/DataTree/useDataTree.js +52 -0
- package/dist/components/DataTree/useDataTree.js.map +1 -0
- package/dist/components/DecoratedList/DecoratedList.js +17 -0
- package/dist/components/DecoratedList/DecoratedList.js.map +1 -0
- package/dist/components/IconServer/IconServer.js +15 -0
- package/dist/components/IconServer/IconServer.js.map +1 -0
- package/dist/components/IconServer/IconServer.scss +14 -0
- package/dist/components/ImportExport/ImportExportList.js +91 -0
- package/dist/components/ImportExport/ImportExportList.js.map +1 -0
- package/dist/components/ImportExport/ImportExportList.scss +70 -0
- package/dist/components/ImportExport/ImportExportRedirect.js +142 -0
- package/dist/components/ImportExport/ImportExportRedirect.js.map +1 -0
- package/dist/components/ImportExport/ImportModal.js +458 -0
- package/dist/components/ImportExport/ImportModal.js.map +1 -0
- package/dist/components/ImportExport/ImportModal.scss +99 -0
- package/dist/components/ImportExport/types.js +3 -0
- package/dist/components/ImportExport/types.js.map +1 -0
- package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js +83 -0
- package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js.map +1 -0
- package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.scss +46 -0
- package/dist/components/LeaveWithoutSaving/usePreventLeave.js +119 -0
- package/dist/components/LeaveWithoutSaving/usePreventLeave.js.map +1 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js +15 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js.map +1 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js +13 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js.map +1 -0
- package/dist/components/LogoServer/LogoServer.js +20 -0
- package/dist/components/LogoServer/LogoServer.js.map +1 -0
- package/dist/components/LogoServer/LogoServer.scss +21 -0
- package/dist/core/access/access.js +181 -0
- package/dist/core/access/access.js.map +1 -0
- package/dist/core/access/access.test.js +454 -0
- package/dist/core/access/access.test.js.map +1 -0
- package/dist/core/access/index.js +3 -0
- package/dist/core/access/index.js.map +1 -0
- package/dist/core/api/action.service.js +441 -0
- package/dist/core/api/action.service.js.map +1 -0
- package/dist/core/api/action.service.test.js +218 -0
- package/dist/core/api/action.service.test.js.map +1 -0
- package/dist/core/api/cache.service.js +33 -0
- package/dist/core/api/cache.service.js.map +1 -0
- package/dist/core/api/cache.service.test.js +33 -0
- package/dist/core/api/cache.service.test.js.map +1 -0
- package/dist/core/api/category.service.js +53 -0
- package/dist/core/api/category.service.js.map +1 -0
- package/dist/core/api/collection.service.js +457 -0
- package/dist/core/api/collection.service.js.map +1 -0
- package/dist/core/api/collection.service.test.js +318 -0
- package/dist/core/api/collection.service.test.js.map +1 -0
- package/dist/core/api/email.service.js +84 -0
- package/dist/core/api/email.service.js.map +1 -0
- package/dist/core/api/global.service.js +18 -0
- package/dist/core/api/global.service.js.map +1 -0
- package/dist/core/api/health.service.js +12 -0
- package/dist/core/api/health.service.js.map +1 -0
- package/dist/core/api/index.js +16 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/locale.service.js +58 -0
- package/dist/core/api/locale.service.js.map +1 -0
- package/dist/core/api/locale.service.test.js +46 -0
- package/dist/core/api/locale.service.test.js.map +1 -0
- package/dist/core/api/menu.service.js +81 -0
- package/dist/core/api/menu.service.js.map +1 -0
- package/dist/core/api/menu.service.test.js +300 -0
- package/dist/core/api/menu.service.test.js.map +1 -0
- package/dist/core/api/page.service.js +171 -0
- package/dist/core/api/page.service.js.map +1 -0
- package/dist/core/api/page.service.test.js +68 -0
- package/dist/core/api/page.service.test.js.map +1 -0
- package/dist/core/api/pagination.service.js +29 -0
- package/dist/core/api/pagination.service.js.map +1 -0
- package/dist/core/api/pagination.service.test.js +175 -0
- package/dist/core/api/pagination.service.test.js.map +1 -0
- package/dist/core/api/redirect.service.js +106 -0
- package/dist/core/api/redirect.service.js.map +1 -0
- package/dist/core/api/redirect.service.test.js +106 -0
- package/dist/core/api/redirect.service.test.js.map +1 -0
- package/dist/core/api/route.service.js +451 -0
- package/dist/core/api/route.service.js.map +1 -0
- package/dist/core/api/route.service.test.js +214 -0
- package/dist/core/api/route.service.test.js.map +1 -0
- package/dist/core/api/static.service.js +249 -0
- package/dist/core/api/static.service.js.map +1 -0
- package/dist/core/api/static.service.test.js +240 -0
- package/dist/core/api/static.service.test.js.map +1 -0
- package/dist/core/api/store.service.js +336 -0
- package/dist/core/api/store.service.js.map +1 -0
- package/dist/core/api/store.service.test.js +105 -0
- package/dist/core/api/store.service.test.js.map +1 -0
- package/dist/core/api/types.js +21 -0
- package/dist/core/api/types.js.map +1 -0
- package/dist/core/api/utils.js +83 -0
- package/dist/core/api/utils.js.map +1 -0
- package/dist/core/api/where.service.js +231 -0
- package/dist/core/api/where.service.js.map +1 -0
- package/dist/core/collections/index.js +12 -0
- package/dist/core/collections/index.js.map +1 -0
- package/dist/core/collections/withAction.js +91 -0
- package/dist/core/collections/withAction.js.map +1 -0
- package/dist/core/collections/withAction.test.js +68 -0
- package/dist/core/collections/withAction.test.js.map +1 -0
- package/dist/core/collections/withAddress.js +122 -0
- package/dist/core/collections/withAddress.js.map +1 -0
- package/dist/core/collections/withBlock.js +17 -0
- package/dist/core/collections/withBlock.js.map +1 -0
- package/dist/core/collections/withBlock.test.js +68 -0
- package/dist/core/collections/withBlock.test.js.map +1 -0
- package/dist/core/collections/withCollection.js +61 -0
- package/dist/core/collections/withCollection.js.map +1 -0
- package/dist/core/collections/withCollection.test.js +64 -0
- package/dist/core/collections/withCollection.test.js.map +1 -0
- package/dist/core/collections/withEndUser.js +301 -0
- package/dist/core/collections/withEndUser.js.map +1 -0
- package/dist/core/collections/withGlobal.js +27 -0
- package/dist/core/collections/withGlobal.js.map +1 -0
- package/dist/core/collections/withGlobal.test.js +57 -0
- package/dist/core/collections/withGlobal.test.js.map +1 -0
- package/dist/core/collections/withMenu.js +19 -0
- package/dist/core/collections/withMenu.js.map +1 -0
- package/dist/core/collections/withMenu.test.js +63 -0
- package/dist/core/collections/withMenu.test.js.map +1 -0
- package/dist/core/collections/withPage.js +126 -0
- package/dist/core/collections/withPage.js.map +1 -0
- package/dist/core/collections/withPage.test.js +103 -0
- package/dist/core/collections/withPage.test.js.map +1 -0
- package/dist/core/collections/withStaticCollection.js +60 -0
- package/dist/core/collections/withStaticCollection.js.map +1 -0
- package/dist/core/collections/withStaticCollection.test.js +84 -0
- package/dist/core/collections/withStaticCollection.test.js.map +1 -0
- package/dist/core/collections/withUser.js +56 -0
- package/dist/core/collections/withUser.js.map +1 -0
- package/dist/core/decorators/category.js +28 -0
- package/dist/core/decorators/category.js.map +1 -0
- package/dist/core/decorators/components.js +9 -0
- package/dist/core/decorators/components.js.map +1 -0
- package/dist/core/decorators/href.js +25 -0
- package/dist/core/decorators/href.js.map +1 -0
- package/dist/core/decorators/index.js +11 -0
- package/dist/core/decorators/index.js.map +1 -0
- package/dist/core/decorators/localize.js +27 -0
- package/dist/core/decorators/localize.js.map +1 -0
- package/dist/core/decorators/menu.js +246 -0
- package/dist/core/decorators/menu.js.map +1 -0
- package/dist/core/decorators/nav.js +42 -0
- package/dist/core/decorators/nav.js.map +1 -0
- package/dist/core/decorators/rich-text.js +39 -0
- package/dist/core/decorators/rich-text.js.map +1 -0
- package/dist/core/decorators/schema.js +16 -0
- package/dist/core/decorators/schema.js.map +1 -0
- package/dist/core/decorators/upload.js +44 -0
- package/dist/core/decorators/upload.js.map +1 -0
- package/dist/core/encryption/encryption.js +66 -0
- package/dist/core/encryption/encryption.js.map +1 -0
- package/dist/core/encryption/index.js +3 -0
- package/dist/core/encryption/index.js.map +1 -0
- package/dist/core/fields/index.js +28 -0
- package/dist/core/fields/index.js.map +1 -0
- package/dist/core/fields/withAbstract.js +15 -0
- package/dist/core/fields/withAbstract.js.map +1 -0
- package/dist/core/fields/withAbstract.test.js +72 -0
- package/dist/core/fields/withAbstract.test.js.map +1 -0
- package/dist/core/fields/withAnchor.js +56 -0
- package/dist/core/fields/withAnchor.js.map +1 -0
- package/dist/core/fields/withCategory.js +21 -0
- package/dist/core/fields/withCategory.js.map +1 -0
- package/dist/core/fields/withCategory.test.js +63 -0
- package/dist/core/fields/withCategory.test.js.map +1 -0
- package/dist/core/fields/withCheckbox.js +19 -0
- package/dist/core/fields/withCheckbox.js.map +1 -0
- package/dist/core/fields/withCheckbox.test.js +59 -0
- package/dist/core/fields/withCheckbox.test.js.map +1 -0
- package/dist/core/fields/withComponents.js +17 -0
- package/dist/core/fields/withComponents.js.map +1 -0
- package/dist/core/fields/withComponents.test.js +62 -0
- package/dist/core/fields/withComponents.test.js.map +1 -0
- package/dist/core/fields/withDate.js +18 -0
- package/dist/core/fields/withDate.js.map +1 -0
- package/dist/core/fields/withDate.test.js +56 -0
- package/dist/core/fields/withDate.test.js.map +1 -0
- package/dist/core/fields/withDescription.js +15 -0
- package/dist/core/fields/withDescription.js.map +1 -0
- package/dist/core/fields/withDescription.test.js +72 -0
- package/dist/core/fields/withDescription.test.js.map +1 -0
- package/dist/core/fields/withId.js +19 -0
- package/dist/core/fields/withId.js.map +1 -0
- package/dist/core/fields/withId.test.js +61 -0
- package/dist/core/fields/withId.test.js.map +1 -0
- package/dist/core/fields/withIsActive.js +15 -0
- package/dist/core/fields/withIsActive.js.map +1 -0
- package/dist/core/fields/withIsActive.test.js +59 -0
- package/dist/core/fields/withIsActive.test.js.map +1 -0
- package/dist/core/fields/withIsDefault.js +15 -0
- package/dist/core/fields/withIsDefault.js.map +1 -0
- package/dist/core/fields/withIsDefault.test.js +59 -0
- package/dist/core/fields/withIsDefault.test.js.map +1 -0
- package/dist/core/fields/withLink.js +116 -0
- package/dist/core/fields/withLink.js.map +1 -0
- package/dist/core/fields/withLink.test.js +144 -0
- package/dist/core/fields/withLink.test.js.map +1 -0
- package/dist/core/fields/withMarkets.js +21 -0
- package/dist/core/fields/withMarkets.js.map +1 -0
- package/dist/core/fields/withMarkets.test.js +65 -0
- package/dist/core/fields/withMarkets.test.js.map +1 -0
- package/dist/core/fields/withMedia.js +20 -0
- package/dist/core/fields/withMedia.js.map +1 -0
- package/dist/core/fields/withMedia.test.js +41 -0
- package/dist/core/fields/withMedia.test.js.map +1 -0
- package/dist/core/fields/withMedias.js +25 -0
- package/dist/core/fields/withMedias.js.map +1 -0
- package/dist/core/fields/withMedias.test.js +46 -0
- package/dist/core/fields/withMedias.test.js.map +1 -0
- package/dist/core/fields/withName.js +17 -0
- package/dist/core/fields/withName.js.map +1 -0
- package/dist/core/fields/withName.test.js +59 -0
- package/dist/core/fields/withName.test.js.map +1 -0
- package/dist/core/fields/withNav.js +28 -0
- package/dist/core/fields/withNav.js.map +1 -0
- package/dist/core/fields/withNavs.js +53 -0
- package/dist/core/fields/withNavs.js.map +1 -0
- package/dist/core/fields/withOrder.js +80 -0
- package/dist/core/fields/withOrder.js.map +1 -0
- package/dist/core/fields/withOrder.test.js +56 -0
- package/dist/core/fields/withOrder.test.js.map +1 -0
- package/dist/core/fields/withRelated.js +18 -0
- package/dist/core/fields/withRelated.js.map +1 -0
- package/dist/core/fields/withRelated.test.js +62 -0
- package/dist/core/fields/withRelated.test.js.map +1 -0
- package/dist/core/fields/withRichText.js +68 -0
- package/dist/core/fields/withRichText.js.map +1 -0
- package/dist/core/fields/withRichText.test.js +72 -0
- package/dist/core/fields/withRichText.test.js.map +1 -0
- package/dist/core/fields/withRoles.js +27 -0
- package/dist/core/fields/withRoles.js.map +1 -0
- package/dist/core/fields/withRoles.test.js +49 -0
- package/dist/core/fields/withRoles.test.js.map +1 -0
- package/dist/core/fields/withSelect.js +23 -0
- package/dist/core/fields/withSelect.js.map +1 -0
- package/dist/core/fields/withSelect.test.js +59 -0
- package/dist/core/fields/withSelect.test.js.map +1 -0
- package/dist/core/fields/withSeoWeight.js +19 -0
- package/dist/core/fields/withSeoWeight.js.map +1 -0
- package/dist/core/fields/withSlug.js +33 -0
- package/dist/core/fields/withSlug.js.map +1 -0
- package/dist/core/fields/withSlug.test.js +71 -0
- package/dist/core/fields/withSlug.test.js.map +1 -0
- package/dist/core/fields/withTemplate.js +49 -0
- package/dist/core/fields/withTemplate.js.map +1 -0
- package/dist/core/fields/withTemplate.test.js +93 -0
- package/dist/core/fields/withTemplate.test.js.map +1 -0
- package/dist/core/fields/withTenants.js +21 -0
- package/dist/core/fields/withTenants.js.map +1 -0
- package/dist/core/fields/withTenants.test.js +42 -0
- package/dist/core/fields/withTenants.test.js.map +1 -0
- package/dist/core/fields/withText.js +18 -0
- package/dist/core/fields/withText.js.map +1 -0
- package/dist/core/fields/withText.test.js +56 -0
- package/dist/core/fields/withText.test.js.map +1 -0
- package/dist/core/fields/withTitle.js +17 -0
- package/dist/core/fields/withTitle.js.map +1 -0
- package/dist/core/fields/withTitle.test.js +58 -0
- package/dist/core/fields/withTitle.test.js.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger/index.js +3 -0
- package/dist/core/logger/index.js.map +1 -0
- package/dist/core/logger/logger.js +9 -0
- package/dist/core/logger/logger.js.map +1 -0
- package/dist/core/translations/index.js +3 -0
- package/dist/core/translations/index.js.map +1 -0
- package/dist/core/translations/translations.js +137 -0
- package/dist/core/translations/translations.js.map +1 -0
- package/dist/core/translations/translations.test.js +72 -0
- package/dist/core/translations/translations.test.js.map +1 -0
- package/dist/core/utils/findByIDHandler.js +28 -0
- package/dist/core/utils/findByIDHandler.js.map +1 -0
- package/dist/core/utils/findHandler.js +31 -0
- package/dist/core/utils/findHandler.js.map +1 -0
- package/dist/core/utils/getPreviewURL.js +45 -0
- package/dist/core/utils/getPreviewURL.js.map +1 -0
- package/dist/core/utils/getRequestCollection.js +49 -0
- package/dist/core/utils/getRequestCollection.js.map +1 -0
- package/dist/core/utils/index.js +7 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/mergeCollections.js +18 -0
- package/dist/core/utils/mergeCollections.js.map +1 -0
- package/dist/core/utils/mergeFields.js +20 -0
- package/dist/core/utils/mergeFields.js.map +1 -0
- package/dist/core/utils/mergeGlobals.js +17 -0
- package/dist/core/utils/mergeGlobals.js.map +1 -0
- package/dist/core/utils/richText.js +29 -0
- package/dist/core/utils/richText.js.map +1 -0
- package/dist/core/utils/sortByGroup.js +36 -0
- package/dist/core/utils/sortByGroup.js.map +1 -0
- package/dist/debug.js +25 -0
- package/dist/debug.js.map +1 -0
- package/dist/declaration.d.js +3 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/exports/client.d.ts +36 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +8 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/rsc.d.ts +18 -0
- package/dist/exports/rsc.d.ts.map +1 -0
- package/dist/exports/rsc.js +5 -0
- package/dist/exports/rsc.js.map +1 -0
- package/dist/fields/color-picker/ColorCell.js +19 -0
- package/dist/fields/color-picker/ColorCell.js.map +1 -0
- package/dist/fields/color-picker/ColorField.js +131 -0
- package/dist/fields/color-picker/ColorField.js.map +1 -0
- package/dist/fields/color-picker/index.js +26 -0
- package/dist/fields/color-picker/index.js.map +1 -0
- package/dist/fields/color-picker/styles.scss +113 -0
- package/dist/fields/color-picker/utils.js +6 -0
- package/dist/fields/color-picker/utils.js.map +1 -0
- package/dist/fields/index.js +3 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/globals/App.js +97 -0
- package/dist/globals/App.js.map +1 -0
- package/dist/globals/Locale.js +82 -0
- package/dist/globals/Locale.js.map +1 -0
- package/dist/globals/LocaleRowLabel.js +16 -0
- package/dist/globals/LocaleRowLabel.js.map +1 -0
- package/dist/index.d.ts +891 -844
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -9263
- package/dist/index.js.map +1 -0
- package/dist/mapper.js +199 -0
- package/dist/mapper.js.map +1 -0
- package/dist/options.js +76 -0
- package/dist/options.js.map +1 -0
- package/dist/test/blocks/blocks.js +13 -0
- package/dist/test/blocks/blocks.js.map +1 -0
- package/dist/test/collections/ActionCollection.js +12 -0
- package/dist/test/collections/ActionCollection.js.map +1 -0
- package/dist/test/collections/AdminCollection.js +18 -0
- package/dist/test/collections/AdminCollection.js.map +1 -0
- package/dist/test/collections/BlockCollection.js +16 -0
- package/dist/test/collections/BlockCollection.js.map +1 -0
- package/dist/test/collections/Collection.js +12 -0
- package/dist/test/collections/Collection.js.map +1 -0
- package/dist/test/collections/FieldCollection.js +84 -0
- package/dist/test/collections/FieldCollection.js.map +1 -0
- package/dist/test/collections/GlobalCollection.js +12 -0
- package/dist/test/collections/GlobalCollection.js.map +1 -0
- package/dist/test/collections/LinkCollection.js +12 -0
- package/dist/test/collections/LinkCollection.js.map +1 -0
- package/dist/test/collections/MenuCollection.js +12 -0
- package/dist/test/collections/MenuCollection.js.map +1 -0
- package/dist/test/collections/PageCollection.js +12 -0
- package/dist/test/collections/PageCollection.js.map +1 -0
- package/dist/test/collections/RoleCollection.js +19 -0
- package/dist/test/collections/RoleCollection.js.map +1 -0
- package/dist/test/collections/RoleFieldCollection.js +40 -0
- package/dist/test/collections/RoleFieldCollection.js.map +1 -0
- package/dist/test/collections/StaticCollection.js +56 -0
- package/dist/test/collections/StaticCollection.js.map +1 -0
- package/dist/test/collections/StorePageCollection.js +12 -0
- package/dist/test/collections/StorePageCollection.js.map +1 -0
- package/dist/test/collections/TenantCollection.js +22 -0
- package/dist/test/collections/TenantCollection.js.map +1 -0
- package/dist/test/collections/TranslationCollection.js +16 -0
- package/dist/test/collections/TranslationCollection.js.map +1 -0
- package/dist/test/collections/TypeACollection.js +18 -0
- package/dist/test/collections/TypeACollection.js.map +1 -0
- package/dist/test/collections/TypeBCollection.js +18 -0
- package/dist/test/collections/TypeBCollection.js.map +1 -0
- package/dist/test/collections/actions/NewsletterAction.js +29 -0
- package/dist/test/collections/actions/NewsletterAction.js.map +1 -0
- package/dist/test/collections/actions/RegisterAction.js +44 -0
- package/dist/test/collections/actions/RegisterAction.js.map +1 -0
- package/dist/test/collections/users/EndUsers.js +40 -0
- package/dist/test/collections/users/EndUsers.js.map +1 -0
- package/dist/test/collections/users/Users.js +20 -0
- package/dist/test/collections/users/Users.js.map +1 -0
- package/dist/test/index.js +32 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/payload.config.js +106 -0
- package/dist/test/payload.config.js.map +1 -0
- package/dist/test/utils.js +52 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/translations.js +467 -0
- package/dist/translations.js.map +1 -0
- package/dist/types.js +31 -0
- package/dist/types.js.map +1 -0
- package/package.json +119 -37
- package/scss/styles.scss +0 -1
- package/dist/index.css +0 -796
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
describe('withOrder field', ()=>{
|
|
6
|
+
let payload;
|
|
7
|
+
let client;
|
|
8
|
+
let userToken;
|
|
9
|
+
let endUserToken;
|
|
10
|
+
let apiKey;
|
|
11
|
+
let testConfig;
|
|
12
|
+
beforeAll(async ()=>{
|
|
13
|
+
const context = await getContext(config);
|
|
14
|
+
payload = context.payload;
|
|
15
|
+
client = context.client;
|
|
16
|
+
userToken = await client.getToken('users', users.admin);
|
|
17
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
18
|
+
apiKey = users.api.apiKey;
|
|
19
|
+
testConfig = await getTestConfig(client, userToken);
|
|
20
|
+
});
|
|
21
|
+
afterAll(async ()=>{
|
|
22
|
+
await clearContext();
|
|
23
|
+
});
|
|
24
|
+
describe('Field config', ()=>{
|
|
25
|
+
let collection;
|
|
26
|
+
let field;
|
|
27
|
+
beforeAll(async ()=>{
|
|
28
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
29
|
+
});
|
|
30
|
+
it('should have a field named "order" of type "number"', ()=>{
|
|
31
|
+
field = collection.fields.find((field)=>field.type === 'number' && field.name === 'order');
|
|
32
|
+
expect(field).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('Document creation', ()=>{
|
|
36
|
+
let fieldsDoc;
|
|
37
|
+
let postData;
|
|
38
|
+
beforeAll(async ()=>{
|
|
39
|
+
postData = {
|
|
40
|
+
_id: uuid(),
|
|
41
|
+
title: uuid(),
|
|
42
|
+
order: 999
|
|
43
|
+
};
|
|
44
|
+
({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
45
|
+
headers: {
|
|
46
|
+
Authorization: `users API-Key ${users.api.apiKey}`
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
});
|
|
50
|
+
it('should have a valid "order" field', async ()=>{
|
|
51
|
+
expect(fieldsDoc.order).toEqual(postData.order);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=withOrder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withOrder.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { NumberField, Payload, SanitizedCollectionConfig } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withOrder field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: NumberField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"order\" of type \"number\"', () => {\r\n field = collection.fields.find(field => field.type === 'number' && field.name === 'order') as NumberField;\r\n expect(field).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n order: 999,\r\n };\r\n\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `users API-Key ${users.api.apiKey}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"order\" field', async () => {\r\n expect(fieldsDoc.order).toEqual(postData.order);\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","fieldsDoc","postData","_id","title","order","doc","post","defaultLocale","headers","Authorization","toEqual"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,mBAAmB;IAE1B,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWL;QACjCc,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMjB,cAAca,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQd,MAAM,CAAC2B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK7B,gBAAgB6B,IAAI;QACnF;QAEAjB,GAAG,sDAAsD;YACvDa,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,YAAYN,MAAMO,IAAI,KAAK;YAClFrB,OAAOc,OAAOQ,WAAW;QAC3B;IACF;IAEAvB,SAAS,qBAAqB;QAC5B,IAAIwB;QACJ,IAAIC;QAEJ1B,UAAU;YACR0B,WAAW;gBACTC,KAAK7B;gBACL8B,OAAO9B;gBACP+B,OAAO;YACT;YAEC,CAAA,EAAEC,KAAKL,SAAS,EAAE,GAAG,MAAMpB,OAAO0B,IAAI,CAAC,CAAC,CAAC,EAAExC,gBAAgB6B,IAAI,CAAC,QAAQ,EAAEX,WAAWuB,aAAa,CAAC,CAAC,EAAEN,UAAU;gBAC/GO,SAAS;oBACPC,eAAe,CAAC,cAAc,EAAEtC,MAAMkB,GAAG,CAACN,MAAM,CAAC,CAAC;gBACpD;YACF,EAAC;QACH;QAEAL,GAAG,qCAAqC;YACtCD,OAAOuB,UAAUI,KAAK,EAAEM,OAAO,CAACT,SAASG,KAAK;QAChD;IACF;AACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
export const RelatedDefaults = {
|
|
3
|
+
name: 'related',
|
|
4
|
+
type: 'blocks',
|
|
5
|
+
blocks: [],
|
|
6
|
+
maxRows: 1,
|
|
7
|
+
admin: {
|
|
8
|
+
initCollapsed: true
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export const withRelated = (options)=>{
|
|
12
|
+
const field = deepMerge({
|
|
13
|
+
...RelatedDefaults
|
|
14
|
+
}, options);
|
|
15
|
+
return field;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=withRelated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withRelated.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { BlocksField } from 'payload';\r\nimport { BowlBlock } from '../../types';\r\n\r\nexport type WithRelatedProps = Omit<Partial<BlocksField>, 'type' | 'name' | 'blocks'> & { name?: string, blocks: BowlBlock[] };\r\nexport type WithRelated = WithRelatedProps & { type: 'withRelated' };\r\n\r\nexport const RelatedDefaults: BlocksField = {\r\n name: 'related',\r\n type: 'blocks',\r\n blocks: [],\r\n maxRows: 1,\r\n admin: {\r\n initCollapsed: true,\r\n },\r\n};\r\n\r\nexport const withRelated = (options: WithRelatedProps): BlocksField => {\r\n const field = deepMerge<WithRelatedProps>({\r\n ...RelatedDefaults,\r\n }, options);\r\n return field as BlocksField;\r\n};\r\n"],"names":["deepMerge","RelatedDefaults","name","type","blocks","maxRows","admin","initCollapsed","withRelated","options","field"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAOxD,OAAO,MAAMC,kBAA+B;IAC1CC,MAAM;IACNC,MAAM;IACNC,QAAQ,EAAE;IACVC,SAAS;IACTC,OAAO;QACLC,eAAe;IACjB;AACF,EAAE;AAEF,OAAO,MAAMC,cAAc,CAACC;IAC1B,MAAMC,QAAQV,UAA4B;QACxC,GAAGC,eAAe;IACpB,GAAGQ;IACH,OAAOC;AACT,EAAE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig, withBlockOption } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
describe('withRelated field', ()=>{
|
|
6
|
+
let payload;
|
|
7
|
+
let client;
|
|
8
|
+
let userToken;
|
|
9
|
+
let endUserToken;
|
|
10
|
+
let apiKey;
|
|
11
|
+
let testConfig;
|
|
12
|
+
beforeAll(async ()=>{
|
|
13
|
+
const context = await getContext(config);
|
|
14
|
+
payload = context.payload;
|
|
15
|
+
client = context.client;
|
|
16
|
+
userToken = await client.getToken('users', users.admin);
|
|
17
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
18
|
+
apiKey = users.api.apiKey;
|
|
19
|
+
testConfig = await getTestConfig(client, userToken);
|
|
20
|
+
});
|
|
21
|
+
afterAll(async ()=>{
|
|
22
|
+
await clearContext();
|
|
23
|
+
});
|
|
24
|
+
describe('Field config', ()=>{
|
|
25
|
+
let collection;
|
|
26
|
+
let field;
|
|
27
|
+
beforeAll(async ()=>{
|
|
28
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
29
|
+
});
|
|
30
|
+
it('should have a field named "related"', ()=>{
|
|
31
|
+
field = collection.fields.find((field)=>field.type === 'blocks' && field.name === 'related');
|
|
32
|
+
expect(field).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('Document creation', ()=>{
|
|
36
|
+
let fieldsDoc;
|
|
37
|
+
let postData;
|
|
38
|
+
beforeAll(async ()=>{
|
|
39
|
+
postData = {
|
|
40
|
+
_id: uuid(),
|
|
41
|
+
title: uuid(),
|
|
42
|
+
related: [
|
|
43
|
+
{
|
|
44
|
+
blockType: withBlockOption.slug,
|
|
45
|
+
customField: uuid()
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
};
|
|
49
|
+
({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
50
|
+
headers: {
|
|
51
|
+
Authorization: `JWT ${userToken}`
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
});
|
|
55
|
+
it('should have a valid "related" field', async ()=>{
|
|
56
|
+
const [block] = fieldsDoc.related;
|
|
57
|
+
expect(block).toBeDefined();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=withRelated.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withRelated.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig, withBlockOption } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { BlocksField, Payload, SanitizedCollectionConfig } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\nimport { BowlBlock } from '../../types';\r\n\r\ndescribe('withRelated field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: BlocksField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"related\"', () => {\r\n field = collection.fields.find((field) => field.type === 'blocks' && field.name === 'related') as BlocksField;\r\n expect(field).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n related: [\r\n {\r\n blockType: withBlockOption.slug,\r\n customField: uuid(),\r\n },\r\n ],\r\n };\r\n\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"related\" field', async () => {\r\n const [block] = fieldsDoc.related as BowlBlock[];\r\n expect(block).toBeDefined();\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","withBlockOption","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","fieldsDoc","postData","_id","title","related","blockType","customField","doc","post","defaultLocale","headers","Authorization","block"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,EAAcC,eAAe,QAAQ,SAAS;AAC7F,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAGnEF,SAAS,qBAAqB;IAE5B,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWN;QACjCe,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMlB,cAAcc,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQf,MAAM,CAAC4B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK9B,gBAAgB8B,IAAI;QACnF;QAEAjB,GAAG,uCAAuC;YACxCa,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAAC,CAACF,QAAUA,MAAMM,IAAI,KAAK,YAAYN,MAAMO,IAAI,KAAK;YACpFrB,OAAOc,OAAOQ,WAAW;QAC3B;IACF;IAEAvB,SAAS,qBAAqB;QAC5B,IAAIwB;QACJ,IAAIC;QAEJ1B,UAAU;YACR0B,WAAW;gBACTC,KAAK7B;gBACL8B,OAAO9B;gBACP+B,SAAS;oBACP;wBACEC,WAAWtC,gBAAgB4B,IAAI;wBAC/BW,aAAajC;oBACf;iBACD;YACH;YAEC,CAAA,EAAEkC,KAAKP,SAAS,EAAE,GAAG,MAAMpB,OAAO4B,IAAI,CAAC,CAAC,CAAC,EAAE3C,gBAAgB8B,IAAI,CAAC,QAAQ,EAAEX,WAAWyB,aAAa,CAAC,CAAC,EAAER,UAAU;gBAC/GS,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE9B,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAH,GAAG,uCAAuC;YACxC,MAAM,CAACkC,MAAM,GAAGZ,UAAUI,OAAO;YACjC3B,OAAOmC,OAAOb,WAAW;QAC3B;IACF;AACF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { isEntity, isMedia } from '@websolutespa/bom-core';
|
|
2
|
+
import { deepMerge, hasUnresolvedRelations } from '@websolutespa/payload-utils';
|
|
3
|
+
import { richTextToHTMLAsync } from '../utils/richText';
|
|
4
|
+
const RICH_TEXT_AFTER_READ_ENABLED = true;
|
|
5
|
+
export function getMedia(payload) {
|
|
6
|
+
return async (node)=>{
|
|
7
|
+
if (isMedia(node.value)) {
|
|
8
|
+
return node.value;
|
|
9
|
+
} else if (isEntity(node.value)) {
|
|
10
|
+
const fallbackLng = payload.config?.i18n.fallbackLanguage;
|
|
11
|
+
const media = await payload.findByID({
|
|
12
|
+
collection: node.relationTo,
|
|
13
|
+
id: node.value.id,
|
|
14
|
+
fallbackLocale: typeof fallbackLng === 'string' ? fallbackLng : undefined,
|
|
15
|
+
overrideAccess: true
|
|
16
|
+
});
|
|
17
|
+
return media;
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export const richTextAfterReadHook = async (args)=>{
|
|
23
|
+
const { data, findMany, context, operation, originalDoc, req, siblingData, value } = args;
|
|
24
|
+
if (value && (req.query?.richText === 'false' || typeof req.context.market === 'string' && typeof req.context.locale === 'string' && req.context.richText !== true)) {
|
|
25
|
+
// console.log('richTextAfterReadHook', operation, value);
|
|
26
|
+
if (hasUnresolvedRelations(value)) {
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
return await richTextToHTMLAsync(value, req.payload.config, context || req.context);
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
};
|
|
33
|
+
export const RichTextDefaults = {
|
|
34
|
+
name: 'richText',
|
|
35
|
+
type: 'richText',
|
|
36
|
+
localized: true
|
|
37
|
+
};
|
|
38
|
+
export const withRichText = (options = {})=>{
|
|
39
|
+
const field = deepMerge(RichTextDefaults, options);
|
|
40
|
+
if (RICH_TEXT_AFTER_READ_ENABLED) {
|
|
41
|
+
field.hooks = {
|
|
42
|
+
...field.hooks,
|
|
43
|
+
afterRead: [
|
|
44
|
+
...field.hooks?.afterRead || [],
|
|
45
|
+
richTextAfterReadHook
|
|
46
|
+
]
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return field;
|
|
50
|
+
};
|
|
51
|
+
export const withRichTextRequired = (options = {})=>{
|
|
52
|
+
const field = deepMerge({
|
|
53
|
+
...RichTextDefaults,
|
|
54
|
+
required: true
|
|
55
|
+
}, options);
|
|
56
|
+
if (RICH_TEXT_AFTER_READ_ENABLED) {
|
|
57
|
+
field.hooks = {
|
|
58
|
+
...field.hooks,
|
|
59
|
+
afterRead: [
|
|
60
|
+
...field.hooks?.afterRead || [],
|
|
61
|
+
richTextAfterReadHook
|
|
62
|
+
]
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return field;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=withRichText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withRichText.ts"],"sourcesContent":["import { IMedia, isEntity, isMedia } from '@websolutespa/bom-core';\r\nimport { deepMerge, hasUnresolvedRelations, UploadNode } from '@websolutespa/payload-utils';\r\nimport { FieldHook, Payload, RichTextField } from 'payload';\r\nimport { richTextToHTMLAsync } from '../utils/richText';\r\n\r\nconst RICH_TEXT_AFTER_READ_ENABLED = true;\r\n\r\nexport function getMedia(payload: Payload) {\r\n return async (node: UploadNode): Promise<IMedia | null> => {\r\n if (isMedia(node.value)) {\r\n return node.value;\r\n } else if (isEntity(node.value)) {\r\n const fallbackLng = payload.config?.i18n.fallbackLanguage;\r\n const media = await payload.findByID({\r\n collection: node.relationTo,\r\n id: node.value.id,\r\n fallbackLocale: typeof fallbackLng === 'string' ? fallbackLng : undefined,\r\n overrideAccess: true,\r\n }) as IMedia;\r\n return media;\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport type WithRichTextProps = (Omit<RichTextField, 'type' | 'name'> & { name?: string });\r\nexport type WithRichText = WithRichTextProps & { type: 'withRichText' };\r\n\r\nexport const richTextAfterReadHook: FieldHook = async (args) => {\r\n const {\r\n data, // Typed as a Partial of your ExampleDocumentType\r\n findMany,\r\n context,\r\n operation,\r\n originalDoc, // Typed as ExampleDocumentType\r\n req,\r\n siblingData, // Typed as a Partial of SiblingDataType\r\n value, // Typed as `string` as shown above\r\n } = args;\r\n if (\r\n value && (\r\n req.query?.richText === 'false' ||\r\n (\r\n typeof req.context.market === 'string' &&\r\n typeof req.context.locale === 'string' &&\r\n req.context.richText !== true\r\n )\r\n )\r\n ) {\r\n // console.log('richTextAfterReadHook', operation, value);\r\n if (hasUnresolvedRelations(value)) {\r\n return value;\r\n }\r\n return await richTextToHTMLAsync(value, req.payload.config, context || req.context);\r\n }\r\n return value;\r\n};\r\n\r\nexport const RichTextDefaults: RichTextField = {\r\n name: 'richText',\r\n type: 'richText',\r\n localized: true,\r\n};\r\n\r\nexport const withRichText = (options: Partial<RichTextField> = {}): RichTextField => {\r\n const field = deepMerge<RichTextField>(RichTextDefaults, options);\r\n if (RICH_TEXT_AFTER_READ_ENABLED) {\r\n field.hooks = {\r\n ...field.hooks,\r\n afterRead: [\r\n ...(field.hooks?.afterRead || []),\r\n richTextAfterReadHook,\r\n ],\r\n };\r\n }\r\n return field;\r\n};\r\n\r\nexport const withRichTextRequired = (options: Partial<RichTextField> = {}): RichTextField => {\r\n const field = deepMerge<RichTextField>({\r\n ...RichTextDefaults,\r\n required: true,\r\n }, options);\r\n if (RICH_TEXT_AFTER_READ_ENABLED) {\r\n field.hooks = {\r\n ...field.hooks,\r\n afterRead: [\r\n ...(field.hooks?.afterRead || []),\r\n richTextAfterReadHook,\r\n ],\r\n };\r\n }\r\n return field;\r\n};\r\n"],"names":["isEntity","isMedia","deepMerge","hasUnresolvedRelations","richTextToHTMLAsync","RICH_TEXT_AFTER_READ_ENABLED","getMedia","payload","node","value","fallbackLng","config","i18n","fallbackLanguage","media","findByID","collection","relationTo","id","fallbackLocale","undefined","overrideAccess","richTextAfterReadHook","args","data","findMany","context","operation","originalDoc","req","siblingData","query","richText","market","locale","RichTextDefaults","name","type","localized","withRichText","options","field","hooks","afterRead","withRichTextRequired","required"],"mappings":"AAAA,SAAiBA,QAAQ,EAAEC,OAAO,QAAQ,yBAAyB;AACnE,SAASC,SAAS,EAAEC,sBAAsB,QAAoB,8BAA8B;AAE5F,SAASC,mBAAmB,QAAQ,oBAAoB;AAExD,MAAMC,+BAA+B;AAErC,OAAO,SAASC,SAASC,OAAgB;IACvC,OAAO,OAAOC;QACZ,IAAIP,QAAQO,KAAKC,KAAK,GAAG;YACvB,OAAOD,KAAKC,KAAK;QACnB,OAAO,IAAIT,SAASQ,KAAKC,KAAK,GAAG;YAC/B,MAAMC,cAAcH,QAAQI,MAAM,EAAEC,KAAKC;YACzC,MAAMC,QAAQ,MAAMP,QAAQQ,QAAQ,CAAC;gBACnCC,YAAYR,KAAKS,UAAU;gBAC3BC,IAAIV,KAAKC,KAAK,CAACS,EAAE;gBACjBC,gBAAgB,OAAOT,gBAAgB,WAAWA,cAAcU;gBAChEC,gBAAgB;YAClB;YACA,OAAOP;QACT;QACA,OAAO;IACT;AACF;AAKA,OAAO,MAAMQ,wBAAmC,OAAOC;IACrD,MAAM,EACJC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,GAAG,EACHC,WAAW,EACXrB,KAAK,EACN,GAAGc;IACJ,IACEd,SACEoB,CAAAA,IAAIE,KAAK,EAAEC,aAAa,WAEtB,OAAOH,IAAIH,OAAO,CAACO,MAAM,KAAK,YAC9B,OAAOJ,IAAIH,OAAO,CAACQ,MAAM,KAAK,YAC9BL,IAAIH,OAAO,CAACM,QAAQ,KAAK,IAC3B,GAEF;QACA,0DAA0D;QAC1D,IAAI7B,uBAAuBM,QAAQ;YACjC,OAAOA;QACT;QACA,OAAO,MAAML,oBAAoBK,OAAOoB,IAAItB,OAAO,CAACI,MAAM,EAAEe,WAAWG,IAAIH,OAAO;IACpF;IACA,OAAOjB;AACT,EAAE;AAEF,OAAO,MAAM0B,mBAAkC;IAC7CC,MAAM;IACNC,MAAM;IACNC,WAAW;AACb,EAAE;AAEF,OAAO,MAAMC,eAAe,CAACC,UAAkC,CAAC,CAAC;IAC/D,MAAMC,QAAQvC,UAAyBiC,kBAAkBK;IACzD,IAAInC,8BAA8B;QAChCoC,MAAMC,KAAK,GAAG;YACZ,GAAGD,MAAMC,KAAK;YACdC,WAAW;mBACLF,MAAMC,KAAK,EAAEC,aAAa,EAAE;gBAChCrB;aACD;QACH;IACF;IACA,OAAOmB;AACT,EAAE;AAEF,OAAO,MAAMG,uBAAuB,CAACJ,UAAkC,CAAC,CAAC;IACvE,MAAMC,QAAQvC,UAAyB;QACrC,GAAGiC,gBAAgB;QACnBU,UAAU;IACZ,GAAGL;IACH,IAAInC,8BAA8B;QAChCoC,MAAMC,KAAK,GAAG;YACZ,GAAGD,MAAMC,KAAK;YACdC,WAAW;mBACLF,MAAMC,KAAK,EAAEC,aAAa,EAAE;gBAChCrB;aACD;QACH;IACF;IACA,OAAOmB;AACT,EAAE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
describe('withRichText field', ()=>{
|
|
6
|
+
let payload;
|
|
7
|
+
let client;
|
|
8
|
+
let userToken;
|
|
9
|
+
let endUserToken;
|
|
10
|
+
let apiKey;
|
|
11
|
+
let testConfig;
|
|
12
|
+
beforeAll(async ()=>{
|
|
13
|
+
const context = await getContext(config);
|
|
14
|
+
payload = context.payload;
|
|
15
|
+
client = context.client;
|
|
16
|
+
userToken = await client.getToken('users', users.admin);
|
|
17
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
18
|
+
apiKey = users.api.apiKey;
|
|
19
|
+
testConfig = await getTestConfig(client, userToken);
|
|
20
|
+
});
|
|
21
|
+
afterAll(async ()=>{
|
|
22
|
+
await clearContext();
|
|
23
|
+
});
|
|
24
|
+
describe('Field config', ()=>{
|
|
25
|
+
let collection;
|
|
26
|
+
let field;
|
|
27
|
+
beforeAll(async ()=>{
|
|
28
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
29
|
+
});
|
|
30
|
+
it('should have a field named "richText" of type "richText"', ()=>{
|
|
31
|
+
field = collection.fields.find((field)=>field.type === 'richText' && field.name === 'richText');
|
|
32
|
+
expect(field).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
it('should be localized', ()=>{
|
|
35
|
+
expect(field.localized).toEqual(true);
|
|
36
|
+
});
|
|
37
|
+
it('should have a "afterRead" hook defined', ()=>{
|
|
38
|
+
expect(field.hooks.afterRead).toBeDefined();
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('Document creation', ()=>{
|
|
42
|
+
let fieldsDoc;
|
|
43
|
+
let postData;
|
|
44
|
+
beforeAll(async ()=>{
|
|
45
|
+
postData = {
|
|
46
|
+
_id: uuid(),
|
|
47
|
+
title: uuid(),
|
|
48
|
+
richText: [
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: uuid()
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
};
|
|
55
|
+
const { doc } = await client.post(`/${FieldCollection.slug}?market=${testConfig.documents.market.id}&locale=${testConfig.defaultLocale}`, postData, {
|
|
56
|
+
headers: {
|
|
57
|
+
Authorization: `JWT ${userToken}`
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
fieldsDoc = await client.get(`/${FieldCollection.slug}/${doc.id}?market=${testConfig.documents.market.id}&locale=${testConfig.defaultLocale}`, {
|
|
61
|
+
headers: {
|
|
62
|
+
Authorization: `users API-Key ${users.api.apiKey}`
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
it('should have a valid "richText" field', async ()=>{
|
|
67
|
+
expect(fieldsDoc.richText).toEqual(`<span>${postData.richText[0].text}</span>`);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=withRichText.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withRichText.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, RichTextField, SanitizedCollectionConfig } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withRichText field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: RichTextField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"richText\" of type \"richText\"', () => {\r\n field = collection.fields.find(field => field.type === 'richText' && field.name === 'richText') as RichTextField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should be localized', () => {\r\n expect(field.localized).toEqual(true);\r\n });\r\n\r\n it('should have a \"afterRead\" hook defined', () => {\r\n expect(field.hooks!.afterRead).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n richText: [{\r\n type: 'text',\r\n text: uuid(),\r\n }],\r\n };\r\n const { doc } = await client.post(`/${FieldCollection.slug}?market=${testConfig.documents.market.id}&locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n });\r\n fieldsDoc = await client.get(`/${FieldCollection.slug}/${doc.id}?market=${testConfig.documents.market.id}&locale=${testConfig.defaultLocale}`, {\r\n headers: {\r\n Authorization: `users API-Key ${users.api.apiKey}`,\r\n },\r\n });\r\n });\r\n\r\n it('should have a valid \"richText\" field', async () => {\r\n expect(fieldsDoc.richText).toEqual(`<span>${postData.richText[0].text}</span>`);\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","localized","toEqual","hooks","afterRead","fieldsDoc","postData","_id","title","richText","text","doc","post","documents","market","id","defaultLocale","headers","Authorization","get"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,sBAAsB;IAE7B,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWL;QACjCc,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMjB,cAAca,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQd,MAAM,CAAC2B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK7B,gBAAgB6B,IAAI;QACnF;QAEAjB,GAAG,2DAA2D;YAC5Da,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,cAAcN,MAAMO,IAAI,KAAK;YACpFrB,OAAOc,OAAOQ,WAAW;QAC3B;QAEArB,GAAG,uBAAuB;YACxBD,OAAOc,MAAMS,SAAS,EAAEC,OAAO,CAAC;QAClC;QAEAvB,GAAG,0CAA0C;YAC3CD,OAAOc,MAAMW,KAAK,CAAEC,SAAS,EAAEJ,WAAW;QAC5C;IACF;IAEAvB,SAAS,qBAAqB;QAC5B,IAAI4B;QACJ,IAAIC;QAEJ9B,UAAU;YACR8B,WAAW;gBACTC,KAAKjC;gBACLkC,OAAOlC;gBACPmC,UAAU;oBAAC;wBACTX,MAAM;wBACNY,MAAMpC;oBACR;iBAAE;YACJ;YACA,MAAM,EAAEqC,GAAG,EAAE,GAAG,MAAM9B,OAAO+B,IAAI,CAAC,CAAC,CAAC,EAAE7C,gBAAgB6B,IAAI,CAAC,QAAQ,EAAEX,WAAW4B,SAAS,CAACC,MAAM,CAACC,EAAE,CAAC,QAAQ,EAAE9B,WAAW+B,aAAa,CAAC,CAAC,EAAEV,UAAU;gBAClJW,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAEpC,UAAU,CAAC;gBACnC;YACF;YACAuB,YAAY,MAAMxB,OAAOsC,GAAG,CAAC,CAAC,CAAC,EAAEpD,gBAAgB6B,IAAI,CAAC,CAAC,EAAEe,IAAII,EAAE,CAAC,QAAQ,EAAE9B,WAAW4B,SAAS,CAACC,MAAM,CAACC,EAAE,CAAC,QAAQ,EAAE9B,WAAW+B,aAAa,CAAC,CAAC,EAAE;gBAC7IC,SAAS;oBACPC,eAAe,CAAC,cAAc,EAAE9C,MAAMkB,GAAG,CAACN,MAAM,CAAC,CAAC;gBACpD;YACF;QACF;QAEAL,GAAG,wCAAwC;YACzCD,OAAO2B,UAAUI,QAAQ,EAAEP,OAAO,CAAC,CAAC,MAAM,EAAEI,SAASG,QAAQ,CAAC,EAAE,CAACC,IAAI,CAAC,OAAO,CAAC;QAChF;IACF;AACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
import { options } from '../../options';
|
|
3
|
+
import { isAdmin } from '../access';
|
|
4
|
+
export const UserRolesDefaults = {
|
|
5
|
+
name: 'roles',
|
|
6
|
+
type: 'select',
|
|
7
|
+
hasMany: true,
|
|
8
|
+
options: [],
|
|
9
|
+
required: true,
|
|
10
|
+
access: {
|
|
11
|
+
create: isAdmin,
|
|
12
|
+
update: isAdmin
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export const withRoles = ({ roles, ...fieldOptions } = {})=>{
|
|
16
|
+
const field = UserRolesDefaults;
|
|
17
|
+
roles = roles || options.rolesList;
|
|
18
|
+
field.options = Object.entries(options.roles).filter(([k, v])=>{
|
|
19
|
+
return roles.includes(v);
|
|
20
|
+
}).map(([k, v])=>({
|
|
21
|
+
value: v,
|
|
22
|
+
label: k
|
|
23
|
+
}));
|
|
24
|
+
return deepMerge(field, fieldOptions);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=withRoles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withRoles.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { SelectField } from 'payload';\r\nimport { options } from '../../options';\r\nimport { BowlRole } from '../../types';\r\nimport { isAdmin } from '../access';\r\n\r\nexport type WithRolesProps = (Omit<SelectField, 'type' | 'name' | 'options'> & {\r\n name?: string;\r\n roles?: BowlRole[];\r\n});\r\nexport type WithRoles = WithRolesProps & { type: 'withRoles' };\r\n\r\nexport const UserRolesDefaults: SelectField = {\r\n name: 'roles',\r\n type: 'select',\r\n hasMany: true,\r\n options: [],\r\n required: true,\r\n access: {\r\n create: isAdmin,\r\n update: isAdmin,\r\n },\r\n};\r\n\r\nexport const withRoles = ({ roles, ...fieldOptions }: WithRolesProps = {}): SelectField => {\r\n const field = UserRolesDefaults;\r\n roles = roles || options.rolesList;\r\n field.options = Object.entries(options.roles).filter(([k, v]) => {\r\n return roles.includes(v);\r\n }).map(([k, v]) => ({\r\n value: v,\r\n label: k,\r\n }));\r\n return deepMerge<SelectField>(field, fieldOptions as Partial<SelectField>);\r\n};\r\n"],"names":["deepMerge","options","isAdmin","UserRolesDefaults","name","type","hasMany","required","access","create","update","withRoles","roles","fieldOptions","field","rolesList","Object","entries","filter","k","v","includes","map","value","label"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,OAAO,QAAQ,gBAAgB;AAExC,SAASC,OAAO,QAAQ,YAAY;AAQpC,OAAO,MAAMC,oBAAiC;IAC5CC,MAAM;IACNC,MAAM;IACNC,SAAS;IACTL,SAAS,EAAE;IACXM,UAAU;IACVC,QAAQ;QACNC,QAAQP;QACRQ,QAAQR;IACV;AACF,EAAE;AAEF,OAAO,MAAMS,YAAY,CAAC,EAAEC,KAAK,EAAE,GAAGC,cAA8B,GAAG,CAAC,CAAC;IACvE,MAAMC,QAAQX;IACdS,QAAQA,SAASX,QAAQc,SAAS;IAClCD,MAAMb,OAAO,GAAGe,OAAOC,OAAO,CAAChB,QAAQW,KAAK,EAAEM,MAAM,CAAC,CAAC,CAACC,GAAGC,EAAE;QAC1D,OAAOR,MAAMS,QAAQ,CAACD;IACxB,GAAGE,GAAG,CAAC,CAAC,CAACH,GAAGC,EAAE,GAAM,CAAA;YAClBG,OAAOH;YACPI,OAAOL;QACT,CAAA;IACA,OAAOnB,UAAuBc,OAAOD;AACvC,EAAE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { config } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { optionIsObject } from 'payload/shared';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
import { options } from '../../options';
|
|
6
|
+
// todo: update this test to match the new implementation
|
|
7
|
+
describe('withRoles field', ()=>{
|
|
8
|
+
let payload;
|
|
9
|
+
let client;
|
|
10
|
+
let userToken;
|
|
11
|
+
let endUserToken;
|
|
12
|
+
let apiKey;
|
|
13
|
+
beforeAll(async ()=>{
|
|
14
|
+
const context = await getContext(config);
|
|
15
|
+
payload = context.payload;
|
|
16
|
+
client = context.client;
|
|
17
|
+
userToken = await client.getToken('users', users.admin);
|
|
18
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
19
|
+
apiKey = users.api.apiKey;
|
|
20
|
+
});
|
|
21
|
+
afterAll(async ()=>{
|
|
22
|
+
await clearContext();
|
|
23
|
+
});
|
|
24
|
+
describe('Field config', ()=>{
|
|
25
|
+
let collection;
|
|
26
|
+
let field;
|
|
27
|
+
beforeAll(async ()=>{
|
|
28
|
+
collection = payload.config.collections.find((collection)=>collection.slug === options.slug.users);
|
|
29
|
+
});
|
|
30
|
+
it('should have a field named "roles" of type "select"', ()=>{
|
|
31
|
+
field = collection.fields.find((field)=>field.type === 'select' && field.name === 'roles');
|
|
32
|
+
expect(field).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
it('should be required', ()=>{
|
|
35
|
+
expect(field.required).toEqual(true);
|
|
36
|
+
});
|
|
37
|
+
it('options should match the roles defined in options.rolesUser', ()=>{
|
|
38
|
+
Object.entries(options.roles).forEach(([k, v])=>{
|
|
39
|
+
if (options.rolesUser.includes(v)) {
|
|
40
|
+
const option = field.options.find((x)=>optionIsObject(x) && x.value === v);
|
|
41
|
+
expect(option).toBeDefined();
|
|
42
|
+
expect(option.label).toEqual(k);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=withRoles.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withRoles.test.ts"],"sourcesContent":["import { config } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { OptionObject, Payload, SanitizedCollectionConfig, SelectField } from 'payload';\r\nimport { optionIsObject } from 'payload/shared';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\nimport { options } from '../../options';\r\n\r\n// todo: update this test to match the new implementation\r\n\r\ndescribe('withRoles field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: SelectField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(collection => collection.slug === options.slug.users)!;\r\n });\r\n\r\n it('should have a field named \"roles\" of type \"select\"', () => {\r\n field = collection.fields.find(field => field.type === 'select' && field.name === 'roles') as SelectField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should be required', () => {\r\n expect(field.required).toEqual(true);\r\n });\r\n\r\n it('options should match the roles defined in options.rolesUser', () => {\r\n Object.entries(options.roles).forEach(([k, v]) => {\r\n if (options.rolesUser.includes(v)) {\r\n const option = field.options.find(x => optionIsObject(x) && x.value === v) as OptionObject;\r\n expect(option).toBeDefined();\r\n expect(option.label).toEqual(k);\r\n }\r\n });\r\n });\r\n });\r\n});\r\n"],"names":["config","clearContext","endUsers","getContext","users","optionIsObject","afterAll","beforeAll","describe","expect","it","options","payload","client","userToken","endUserToken","apiKey","context","getToken","admin","user","api","collection","field","collections","find","slug","fields","type","name","toBeDefined","required","toEqual","Object","entries","roles","forEach","k","v","rolesUser","includes","option","x","value","label"],"mappings":"AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,cAAc,QAAQ,iBAAiB;AAChD,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AACnE,SAASC,OAAO,QAAQ,gBAAgB;AAExC,yDAAyD;AAEzDH,SAAS,mBAAmB;IAE1B,IAAII;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMd,WAAWH;QACjCY,UAAUK,QAAQL,OAAO;QACzBC,SAASI,QAAQJ,MAAM;QACvBC,YAAY,MAAMD,OAAOK,QAAQ,CAAC,SAASd,MAAMe,KAAK;QACtDJ,eAAe,MAAMF,OAAOK,QAAQ,CAAC,aAAahB,SAASkB,IAAI;QAC/DJ,SAASZ,MAAMiB,GAAG,CAACL,MAAM;IAC3B;IAEAV,SAAS;QACP,MAAML;IACR;IAEAO,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaV,QAAQZ,MAAM,CAACwB,WAAW,CAACC,IAAI,CAACH,CAAAA,aAAcA,WAAWI,IAAI,KAAKf,QAAQe,IAAI,CAACtB,KAAK;QACnG;QAEAM,GAAG,sDAAsD;YACvDa,QAAQD,WAAWK,MAAM,CAACF,IAAI,CAACF,CAAAA,QAASA,MAAMK,IAAI,KAAK,YAAYL,MAAMM,IAAI,KAAK;YAClFpB,OAAOc,OAAOO,WAAW;QAC3B;QAEApB,GAAG,sBAAsB;YACvBD,OAAOc,MAAMQ,QAAQ,EAAEC,OAAO,CAAC;QACjC;QAEAtB,GAAG,+DAA+D;YAChEuB,OAAOC,OAAO,CAACvB,QAAQwB,KAAK,EAAEC,OAAO,CAAC,CAAC,CAACC,GAAGC,EAAE;gBAC3C,IAAI3B,QAAQ4B,SAAS,CAACC,QAAQ,CAACF,IAAI;oBACjC,MAAMG,SAASlB,MAAMZ,OAAO,CAACc,IAAI,CAACiB,CAAAA,IAAKrC,eAAeqC,MAAMA,EAAEC,KAAK,KAAKL;oBACxE7B,OAAOgC,QAAQX,WAAW;oBAC1BrB,OAAOgC,OAAOG,KAAK,EAAEZ,OAAO,CAACK;gBAC/B;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
export const SelectDefaults = {
|
|
3
|
+
name: 'select',
|
|
4
|
+
type: 'select',
|
|
5
|
+
hasMany: false,
|
|
6
|
+
admin: {
|
|
7
|
+
isClearable: true
|
|
8
|
+
},
|
|
9
|
+
options: []
|
|
10
|
+
};
|
|
11
|
+
export const withSelect = (options = {})=>{
|
|
12
|
+
const field = deepMerge(SelectDefaults, options);
|
|
13
|
+
return field;
|
|
14
|
+
};
|
|
15
|
+
export const withSelectRequired = (options = {})=>{
|
|
16
|
+
const field = deepMerge({
|
|
17
|
+
...SelectDefaults,
|
|
18
|
+
required: true
|
|
19
|
+
}, options);
|
|
20
|
+
return field;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=withSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withSelect.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { SelectField } from 'payload';\r\n\r\nexport type WithSelectProps = (Omit<SelectField, 'type' | 'name'> & { name?: string });\r\nexport type WithSelect = WithSelectProps & { type: 'withSelect' };\r\n\r\nexport const SelectDefaults: SelectField = {\r\n name: 'select',\r\n type: 'select',\r\n hasMany: false,\r\n admin: {\r\n isClearable: true,\r\n },\r\n options: [],\r\n};\r\n\r\nexport const withSelect = (options: Partial<WithSelectProps> = {}): SelectField => {\r\n const field = deepMerge<SelectField>(SelectDefaults, options as Partial<SelectField>);\r\n return field;\r\n};\r\n\r\nexport const withSelectRequired = (options: Partial<WithSelectProps> = {}): SelectField => {\r\n const field = deepMerge<SelectField>({\r\n ...SelectDefaults,\r\n required: true,\r\n }, options as Partial<SelectField>);\r\n return field;\r\n};\r\n"],"names":["deepMerge","SelectDefaults","name","type","hasMany","admin","isClearable","options","withSelect","field","withSelectRequired","required"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAMxD,OAAO,MAAMC,iBAA8B;IACzCC,MAAM;IACNC,MAAM;IACNC,SAAS;IACTC,OAAO;QACLC,aAAa;IACf;IACAC,SAAS,EAAE;AACb,EAAE;AAEF,OAAO,MAAMC,aAAa,CAACD,UAAoC,CAAC,CAAC;IAC/D,MAAME,QAAQT,UAAuBC,gBAAgBM;IACrD,OAAOE;AACT,EAAE;AAEF,OAAO,MAAMC,qBAAqB,CAACH,UAAoC,CAAC,CAAC;IACvE,MAAME,QAAQT,UAAuB;QACnC,GAAGC,cAAc;QACjBU,UAAU;IACZ,GAAGJ;IACH,OAAOE;AACT,EAAE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
describe('withSelect field', ()=>{
|
|
6
|
+
let payload;
|
|
7
|
+
let client;
|
|
8
|
+
let userToken;
|
|
9
|
+
let endUserToken;
|
|
10
|
+
let apiKey;
|
|
11
|
+
let testConfig;
|
|
12
|
+
beforeAll(async ()=>{
|
|
13
|
+
const context = await getContext(config);
|
|
14
|
+
payload = context.payload;
|
|
15
|
+
client = context.client;
|
|
16
|
+
userToken = await client.getToken('users', users.admin);
|
|
17
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
18
|
+
apiKey = users.api.apiKey;
|
|
19
|
+
testConfig = await getTestConfig(client, userToken);
|
|
20
|
+
});
|
|
21
|
+
afterAll(async ()=>{
|
|
22
|
+
await clearContext();
|
|
23
|
+
});
|
|
24
|
+
describe('Field config', ()=>{
|
|
25
|
+
let collection;
|
|
26
|
+
let field;
|
|
27
|
+
beforeAll(async ()=>{
|
|
28
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
29
|
+
});
|
|
30
|
+
it('should have a field named "select" of type "select"', ()=>{
|
|
31
|
+
field = collection.fields.find((field)=>field.type === 'select' && field.name === 'select');
|
|
32
|
+
expect(field).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
it('should allow only one relation', ()=>{
|
|
35
|
+
expect(field.hasMany).toEqual(false);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('Document creation', ()=>{
|
|
39
|
+
let fieldsDoc;
|
|
40
|
+
let postData;
|
|
41
|
+
beforeAll(async ()=>{
|
|
42
|
+
postData = {
|
|
43
|
+
_id: uuid(),
|
|
44
|
+
title: uuid(),
|
|
45
|
+
select: 'with_select_option'
|
|
46
|
+
};
|
|
47
|
+
({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
48
|
+
headers: {
|
|
49
|
+
Authorization: `JWT ${userToken}`
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
});
|
|
53
|
+
it('should have a valid "select" field', async ()=>{
|
|
54
|
+
expect(fieldsDoc.select).toEqual(postData.select);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=withSelect.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withSelect.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, SanitizedCollectionConfig, SelectField } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withSelect field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: SelectField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"select\" of type \"select\"', () => {\r\n field = collection.fields.find(field => field.type === 'select' && field.name === 'select') as SelectField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should allow only one relation', () => {\r\n expect(field.hasMany).toEqual(false);\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n select: 'with_select_option',\r\n };\r\n\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"select\" field', async () => {\r\n expect(fieldsDoc.select).toEqual(postData.select);\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","hasMany","toEqual","fieldsDoc","postData","_id","title","select","doc","post","defaultLocale","headers","Authorization"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,oBAAoB;IAE3B,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWL;QACjCc,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMjB,cAAca,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQd,MAAM,CAAC2B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK7B,gBAAgB6B,IAAI;QACnF;QAEAjB,GAAG,uDAAuD;YACxDa,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,YAAYN,MAAMO,IAAI,KAAK;YAClFrB,OAAOc,OAAOQ,WAAW;QAC3B;QAEArB,GAAG,kCAAkC;YACnCD,OAAOc,MAAMS,OAAO,EAAEC,OAAO,CAAC;QAChC;IACF;IAEAzB,SAAS,qBAAqB;QAC5B,IAAI0B;QACJ,IAAIC;QAEJ5B,UAAU;YACR4B,WAAW;gBACTC,KAAK/B;gBACLgC,OAAOhC;gBACPiC,QAAQ;YACV;YAEC,CAAA,EAAEC,KAAKL,SAAS,EAAE,GAAG,MAAMtB,OAAO4B,IAAI,CAAC,CAAC,CAAC,EAAE1C,gBAAgB6B,IAAI,CAAC,QAAQ,EAAEX,WAAWyB,aAAa,CAAC,CAAC,EAAEN,UAAU;gBAC/GO,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE9B,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAH,GAAG,sCAAsC;YACvCD,OAAOyB,UAAUI,MAAM,EAAEL,OAAO,CAACE,SAASG,MAAM;QAClD;IACF;AACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
import { withSelect } from './withSelect';
|
|
3
|
+
export const SeoWeightDefaults = {
|
|
4
|
+
name: 'seoWeight',
|
|
5
|
+
options: [
|
|
6
|
+
'h1',
|
|
7
|
+
'h2',
|
|
8
|
+
'h3',
|
|
9
|
+
'h4',
|
|
10
|
+
'h5',
|
|
11
|
+
'h6'
|
|
12
|
+
]
|
|
13
|
+
};
|
|
14
|
+
export const withSeoWeight = (options = {})=>{
|
|
15
|
+
const field = withSelect(deepMerge(SeoWeightDefaults, options));
|
|
16
|
+
return field;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=withSeoWeight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withSeoWeight.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { Option, SelectField } from 'payload';\r\nimport { withSelect } from './withSelect';\r\n\r\nexport type WithSeoWeightProps = (Omit<SelectField, 'type' | 'name' | 'options'> & {\r\n name?: string,\r\n options?: Option[]\r\n});\r\nexport type WithSeoWeight = WithSeoWeightProps & { type: 'withSeoWeight' };\r\n\r\nexport const SeoWeightDefaults = {\r\n name: 'seoWeight',\r\n options: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\r\n};\r\n\r\nexport const withSeoWeight = (options: WithSeoWeightProps = {}): SelectField => {\r\n const field = withSelect(\r\n deepMerge<SelectField>(SeoWeightDefaults, options as Partial<SelectField>)\r\n );\r\n return field;\r\n};\r\n"],"names":["deepMerge","withSelect","SeoWeightDefaults","name","options","withSeoWeight","field"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,UAAU,QAAQ,eAAe;AAQ1C,OAAO,MAAMC,oBAAoB;IAC/BC,MAAM;IACNC,SAAS;QAAC;QAAM;QAAM;QAAM;QAAM;QAAM;KAAK;AAC/C,EAAE;AAEF,OAAO,MAAMC,gBAAgB,CAACD,UAA8B,CAAC,CAAC;IAC5D,MAAME,QAAQL,WACZD,UAAuBE,mBAAmBE;IAE5C,OAAOE;AACT,EAAE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { deepMerge, formatSlug } from '@websolutespa/payload-utils';
|
|
2
|
+
import { withText } from './withText';
|
|
3
|
+
export const withSlug = ({ fieldToUse, ...options } = {
|
|
4
|
+
fieldToUse: 'title'
|
|
5
|
+
})=>{
|
|
6
|
+
return withText(deepMerge({
|
|
7
|
+
name: 'slug',
|
|
8
|
+
localized: true,
|
|
9
|
+
unique: true,
|
|
10
|
+
hooks: {
|
|
11
|
+
beforeValidate: [
|
|
12
|
+
formatSlug(fieldToUse)
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}, options));
|
|
16
|
+
};
|
|
17
|
+
export const withSlugRequired = ({ fieldToUse, ...options } = {
|
|
18
|
+
fieldToUse: 'title'
|
|
19
|
+
})=>{
|
|
20
|
+
return withText(deepMerge({
|
|
21
|
+
name: 'slug',
|
|
22
|
+
localized: true,
|
|
23
|
+
unique: true,
|
|
24
|
+
required: true,
|
|
25
|
+
hooks: {
|
|
26
|
+
beforeValidate: [
|
|
27
|
+
formatSlug(fieldToUse)
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}, options));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=withSlug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withSlug.ts"],"sourcesContent":["import { deepMerge, formatSlug } from '@websolutespa/payload-utils';\r\nimport { TextField } from 'payload';\r\nimport { withText } from './withText';\r\n\r\nexport type WithSlugProps = (Omit<TextField, 'type' | 'name' | 'hasMany'> & { fieldToUse: string });\r\nexport type WithSlug = WithSlugProps & { type: 'withSlug' };\r\n\r\nexport const withSlug = ({ fieldToUse, ...options }: WithSlugProps = { fieldToUse: 'title' }): TextField => {\r\n return withText(deepMerge<TextField>({\r\n name: 'slug',\r\n localized: true,\r\n unique: true,\r\n hooks: {\r\n beforeValidate: [formatSlug(fieldToUse)],\r\n },\r\n }, options as Partial<TextField>));\r\n};\r\n\r\nexport const withSlugRequired = ({ fieldToUse, ...options }: WithSlugProps = { fieldToUse: 'title' }): TextField => {\r\n return withText(deepMerge<TextField>({\r\n name: 'slug',\r\n localized: true,\r\n unique: true,\r\n required: true,\r\n hooks: {\r\n beforeValidate: [formatSlug(fieldToUse)],\r\n },\r\n }, options as Partial<TextField>));\r\n};\r\n"],"names":["deepMerge","formatSlug","withText","withSlug","fieldToUse","options","name","localized","unique","hooks","beforeValidate","withSlugRequired","required"],"mappings":"AAAA,SAASA,SAAS,EAAEC,UAAU,QAAQ,8BAA8B;AAEpE,SAASC,QAAQ,QAAQ,aAAa;AAKtC,OAAO,MAAMC,WAAW,CAAC,EAAEC,UAAU,EAAE,GAAGC,SAAwB,GAAG;IAAED,YAAY;AAAQ,CAAC;IAC1F,OAAOF,SAASF,UAAqB;QACnCM,MAAM;QACNC,WAAW;QACXC,QAAQ;QACRC,OAAO;YACLC,gBAAgB;gBAACT,WAAWG;aAAY;QAC1C;IACF,GAAGC;AACL,EAAE;AAEF,OAAO,MAAMM,mBAAmB,CAAC,EAAEP,UAAU,EAAE,GAAGC,SAAwB,GAAG;IAAED,YAAY;AAAQ,CAAC;IAClG,OAAOF,SAASF,UAAqB;QACnCM,MAAM;QACNC,WAAW;QACXC,QAAQ;QACRI,UAAU;QACVH,OAAO;YACLC,gBAAgB;gBAACT,WAAWG;aAAY;QAC1C;IACF,GAAGC;AACL,EAAE"}
|