@websolutespa/payload-plugin-bowl
Version:
Bowl PayloadCms plugin of the BOM Repository
60 lines (59 loc) • 1.93 kB
JavaScript
import { deepMerge, withCollectionHook } from '@websolutespa/payload-utils';
import 'isomorphic-fetch';
import { options } from '../../options';
import { afterCollectionReadHook, collectionDetailGet, collectionIndexGet } from '../api/collection.service';
import { staticCollections } from '../api/static.service';
import { translateCollection } from '../translations';
export const StaticCollectionDefault = {
admin: {
group: options.group.i18n,
useAsTitle: 'name',
defaultColumns: [
'name',
'id'
],
listSearchableFields: [
'name',
'id'
]
},
access: {
read: ()=>true,
create: ()=>false,
update: ()=>false,
delete: ()=>false,
admin: ()=>true,
unlock: ()=>false
},
versions: false
};
const DEFAULT_DURATION = 24 * 60 * 60;
/**
* @param {CollectionConfig & StaticCollectionConfig} config
* @returns {CollectionConfig} Return a `CollectionConfig` from static or remote dataset.
*/ export const withStaticCollection = ({ src, map, duration = DEFAULT_DURATION, ...config })=>{
staticCollections.push(config.slug);
const staticConfig = deepMerge(StaticCollectionDefault, config);
staticConfig.custom = {
...staticConfig.custom,
type: 'static',
src,
map,
duration
};
staticConfig.fields.forEach((field)=>{
const admin = field.admin || {};
admin.readOnly = true;
field.admin = admin;
});
if (!staticConfig.endpoints) {
staticConfig.endpoints = [
collectionIndexGet(staticConfig.slug),
collectionDetailGet(staticConfig.slug)
];
}
withCollectionHook(staticConfig, 'afterRead', afterCollectionReadHook(staticConfig));
translateCollection(staticConfig);
return staticConfig;
};
//# sourceMappingURL=withStaticCollection.js.map