55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import { ZeroPlugin, ZeroPluginOptions } from '../../core';
|
|
import { defineAsyncComponent } from 'vue';
|
|
|
|
export default {
|
|
name: "zero.spaces",
|
|
|
|
install(app: ZeroPluginOptions)
|
|
{
|
|
app.schema('pages:zero.folder', () => import('./schemas/folder-editor'));
|
|
|
|
app.linkArea('zero.pages', '@zero.config.linkareas.pages', () => import('./partials/linkpicker.vue'));
|
|
|
|
app.route({
|
|
name: 'pages',
|
|
path: '/pages',
|
|
component: () => import('./pages.vue'),
|
|
children: [
|
|
{
|
|
name: 'pages-edit',
|
|
path: 'edit/:id?',
|
|
props: true,
|
|
component: () => import('./page.vue')
|
|
},
|
|
{
|
|
name: 'pages-create',
|
|
path: 'create/:flavor/:parent?',
|
|
props: true,
|
|
component: () => import('./page.vue')
|
|
},
|
|
]
|
|
});
|
|
|
|
app.vue.component('ui-pagepicker', defineAsyncComponent(() => import('./picker/ui-pagepicker.vue')));
|
|
app.fieldType('pagePicker', defineAsyncComponent(() => import('./picker/field-pagepicker.vue')));
|
|
}
|
|
} as ZeroPlugin;
|
|
|
|
|
|
declare module 'zero/schemas'
|
|
{
|
|
export interface ZeroEditorField
|
|
{
|
|
/**
|
|
* Renders a page picker
|
|
* @param {PagePickerFieldOptions} [options] - Custom options
|
|
*/
|
|
pagePicker(options?: PagePickerFieldOptions): ZeroEditorField;
|
|
}
|
|
|
|
export interface PagePickerFieldOptions extends PickerFieldOptions
|
|
{
|
|
rootId?: string | ((model: any) => string);
|
|
disabledIds?: string[] | ((model: any) => string[]);
|
|
}
|
|
} |