Files
mixtape/zero.Backoffice.UI/app/editor/editor-canvas.ts
T
2021-12-21 13:58:48 +01:00

65 lines
1.4 KiB
TypeScript

import { ZeroEditorField } from "zero/schemas";
import { ZeroEditorFieldImpl, ZeroEditorFieldConfiguration, createFieldProxy } from "./editor-field";
export class ZeroEditorCanvasBase
{
fields: ZeroEditorField[] = [];
sort: number = 0;
field(path: string, config?: ZeroEditorFieldConfiguration): ZeroEditorField
{
const field = new ZeroEditorFieldImpl(path, config);
if (!config || typeof config.sort === 'undefined')
{
field.configuration.sort = (this.fields.length + 1) * 10;
}
const proxy = createFieldProxy(field) as ZeroEditorField;
this.fields.push(proxy);
return proxy;
}
}
export class ZeroEditorCanvasBaseWithFieldset extends ZeroEditorCanvasBase
{
fieldsets: ZeroEditorCanvasBase[] = [];
fieldset(): ZeroEditorCanvasBase
{
const fieldset = new ZeroEditorCanvasBase();
fieldset.sort = (this.fieldsets.length + 1) * 10;
this.fieldsets.push(fieldset);
return fieldset;
}
}
export class ZeroEditorCanvas extends ZeroEditorCanvasBaseWithFieldset
{
tabs: ZeroEditorTab[] = [];
tab(alias: string, name: string): ZeroEditorTab
{
const tab = new ZeroEditorTab(alias, name);
tab.sort = (this.tabs.length + 1) * 10;
this.tabs.push(tab);
return tab;
}
}
export class ZeroEditorTab extends ZeroEditorCanvasBaseWithFieldset
{
alias: string;
name: string;
constructor(alias: string, name: string)
{
super();
this.alias = alias;
this.name = name;
}
}