UNPKG

@websolutespa/payload-plugin-bowl

Version:

Bowl PayloadCms plugin of the BOM Repository

53 lines (52 loc) 1.8 kB
import { deepMerge } from '@websolutespa/payload-utils'; import { MenuItem } from '../../blocks'; import { toField } from '../../mapper'; import { options } from '../../options'; export const NavsDefaults = { name: 'navs', type: 'array', fields: [], admin: { initCollapsed: true } }; export const withNavs = ({ maxDepth, disallow, ...options })=>{ const arrayField = deepMerge(NavsDefaults, options); arrayField.fields = navFields({ maxDepth, disallow }).map((x)=>toField(x)); const field = { label: options.label || arrayField.name, type: 'collapsible', fields: [ arrayField ], admin: { initCollapsed: true } }; return field; }; export function navFields(props = {}) { const pages = props.pages || options.pages; const blocks = props.blocks || options.menu.blocks; const maxDepth = props.maxDepth || 0; const disallow = props.disallow ? Array.isArray(props.disallow) ? props.disallow : [ props.disallow ] : [ 'group' ]; const menuBlock = MenuItem(pages, blocks, 0, maxDepth); const fields = menuBlock.fields; // remove "defaultValue" from type field delete fields[0]['defaultValue']; // remove "group" option fields[0]['options'] = fields[0]['options'].filter((option)=>!disallow.includes(option.value)); // remove visibility condition from fields inside the tab "Data" (it does not work outside the block context) fields[1]['tabs'][0]['fields'].forEach(({ fields, admin })=>fields && admin && delete admin.condition); // make link href field localizable fields[1]['tabs'][0]['fields'][3]['fields'][0]['localized'] = true; return fields; } //# sourceMappingURL=withNavs.js.map