UNPKG

@websolutespa/payload-plugin-bowl

Version:

Bowl PayloadCms plugin of the BOM Repository

90 lines (89 loc) 2.94 kB
import { RedirectReason } from '@websolutespa/bom-core'; import { hasRole, isRole } from '../core'; import { roles } from '../types'; export const RedirectStatusOptions = Object.entries(RedirectReason).map(([k, v])=>({ value: v, label: `${v} - ${k}` })); export const Redirect = (options)=>({ type: 'withCollection', slug: options.slug.redirect, admin: { group: options.group.nav, useAsTitle: 'from', defaultColumns: [ 'from', 'to', 'status', 'name', 'order', 'isActive' ], components: { afterList: [ '@websolutespa/payload-plugin-bowl/client#ImportExportRedirect' ] }, hidden: (args)=>!hasRole(args.user, roles.Admin, roles.Contributor) }, access: { create: isRole(roles.Admin, roles.Contributor), read: isRole(), update: isRole(roles.Admin, roles.Contributor), delete: isRole(roles.Admin, roles.Contributor) }, fields: [ // inherited fields: id, createdAt, updatedAt { type: 'withSelect', name: 'status', required: true, options: RedirectStatusOptions }, { type: 'text', name: 'from', required: true, unique: true, index: true }, { type: 'text', name: 'to', validate: (value, { siblingData })=>{ // console.log(value, siblingData); if (!siblingData.status) { return 'please select a status code'; } if (!value && parseInt(siblingData.status) < 400) { return 'a redirect path is required for status codes 300'; } if (value && siblingData.from === value) { return 'from and to values should differs'; } return true; }, admin: { condition: (_, siblingData)=>siblingData.status && parseInt(siblingData.status) !== 410 } }, { type: 'text', name: 'name' }, { type: 'withOrder', slug: options.slug.redirect, admin: { position: 'sidebar' } }, { type: 'withIsActive', admin: { position: 'sidebar' } } ] }); //# sourceMappingURL=Redirect.js.map