@websolutespa/payload-plugin-bowl
Version:
Bowl PayloadCms plugin of the BOM Repository
94 lines (93 loc) • 2.8 kB
JavaScript
import { hasRole, isRole } from '../core';
import { afterCategoryChangeHook, afterCategoryDeleteHook } from '../core/api';
import { roles } from '../types';
export const Category = (options)=>({
type: 'withCollection',
slug: options.slug.category,
admin: {
group: options.group.nav,
useAsTitle: 'id',
defaultColumns: [
'id',
'title',
'category',
'order'
],
components: {
beforeList: [
'@websolutespa/payload-plugin-bowl/client#CategoryMenu'
]
},
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)
},
hooks: {
afterChange: [
afterCategoryChangeHook
],
afterDelete: [
afterCategoryDeleteHook
]
},
views: {
CategoryTree: {
path: `/tree/${options.slug.category}`,
exact: true,
Component: '@websolutespa/payload-plugin-bowl/rsc#CategoryTreeRoute'
},
CategoryTreeDetail: {
path: `/tree/${options.slug.category}/:itemId`,
exact: true,
Component: '@websolutespa/payload-plugin-bowl/rsc#CategoryTreeRoute'
}
},
fields: [
// inherited fields: id, createdAt, updatedAt
{
type: 'withId',
required: true
},
{
type: 'withTitle',
required: true
},
{
type: 'withSlug',
fieldToUse: 'title',
unique: false,
admin: {
position: 'sidebar'
}
},
{
type: 'withCheckbox',
name: 'isHidden',
defaultValue: false,
admin: {
position: 'sidebar'
}
},
{
type: 'withMedia'
},
{
type: 'withCategory',
admin: {
position: 'sidebar'
}
},
{
type: 'withOrder',
slug: options.slug.category,
admin: {
position: 'sidebar'
}
}
]
});
//# sourceMappingURL=Category.js.map