@jdlinker/ui
Version:
jdLinker UI库,基于ant-design-vue封装
139 lines (123 loc) • 5.57 kB
JavaScript
import { addContainerWidgetSchema, addCustomWidgetSchema } from '../form-designer/widget-panel/widgetsConfig';
import * as PERegister from '../form-designer/setting-panel/propertyRegister';
import * as PEFactory from '../form-designer/setting-panel/property-editor-factory.jsx';
import { cardSchema } from './samples/extension-schema';
import CardWidget from './samples/card/card-widget.vue';
import CardItem from './samples/card/card-item.vue';
import { registerCWGenerator, registerFWGenerator } from '@jdlinker/utils';
import { cardTemplateGenerator } from './samples/extension-sfc-generator';
import { alertSchema } from './samples/extension-schema';
import AlertWidget from './samples/alert/alert-widget.vue';
import { alertTemplateGenerator } from './samples/extension-sfc-generator';
export const loadExtension = function (app) {
/**
* 加载容器组件步骤:
* 1. 加载组件Json Schema;
* 2. 全局注册容器组件,容器组件有两种状态——设计期和运行期,故需要注册两个组件;
* 3. 全局注册属性编辑器组件(基本属性、高级属性、事件属性);
* 4. 注册容器组件的代码生成器;
* 5. 加载完毕。
*/
addContainerWidgetSchema(cardSchema); //加载组件Json Schema
/* -------------------------------------------------- */
app.component(CardWidget.name, CardWidget); //注册设计期的容器组件
app.component(CardItem.name, CardItem); //注册运行期的容器组件
/* -------------------------------------------------- */
PERegister.registerCPEditor(app, 'card-folded', 'card-folded-editor', PEFactory.createBooleanEditor('folded', 'extension.setting.cardFolded'));
PERegister.registerCPEditor(
app,
'card-showFold',
'card-showFold-editor',
PEFactory.createBooleanEditor('showFold', 'extension.setting.cardShowFold')
);
PERegister.registerCPEditor(
app,
'card-cardWidth',
'card-cardWidth-editor',
PEFactory.createInputTextEditor('cardWidth', 'extension.setting.cardWidth')
);
let shadowOptions = [
{ label: 'never', value: 'never' },
{ label: 'hover', value: 'hover' },
{ label: 'always', value: 'always' }
];
PERegister.registerCPEditor(
app,
'card-shadow',
'card-shadow-editor',
PEFactory.createSelectEditor('shadow', 'extension.setting.cardShadow', { optionItems: shadowOptions })
);
/* -------------------------------------------------- */
registerCWGenerator('card', cardTemplateGenerator); //注册容器组件的代码生成器
/* -------------------------------------------------- */
/* 容器组件加载完毕 end */
/**
* 加载字段组件步骤:
* 1. 加载组件Json Schema;
* 2. 全局注册字段组件,字段组件设计期和运行期共用,故仅需注册一个组件;
* 3. 全局注册属性编辑器组件(基本属性、高级属性、事件属性);
* 4. 注册字段组件的代码生成器;
* 5. 加载完毕。
*/
addCustomWidgetSchema(alertSchema); //加载组件Json Schema
/* -------------------------------------------------- */
app.component(AlertWidget.name, AlertWidget); //注册组件
/* -------------------------------------------------- */
PERegister.registerCPEditor(
app,
'alert-title',
'alert-title-editor',
PEFactory.createInputTextEditor('title', 'extension.setting.alertTitle')
);
let typeOptions = [
{ label: 'success', value: 'success' },
{ label: 'warning', value: 'warning' },
{ label: 'info', value: 'info' },
{ label: 'error', value: 'error' }
];
// PERegister.registerCPEditor(app, 'alert-type', 'alert-type-editor',
// PEFactory.createSelectEditor('type', 'extension.setting.alertType',
// {optionItems: typeOptions}))
/* type属性映射已存在,无须再注册,故只需注册属性编辑器即可!! */
app.component('AlertTypeEditor', PEFactory.createSelectEditor('type', 'extension.setting.alertType', { optionItems: typeOptions }));
PERegister.registerCPEditor(
app,
'alert-description',
'alert-description-editor',
PEFactory.createInputTextEditor('description', 'extension.setting.description')
);
PERegister.registerCPEditor(
app,
'alert-closable',
'alert-closable-editor',
PEFactory.createBooleanEditor('closable', 'extension.setting.closable')
);
PERegister.registerCPEditor(
app,
'alert-closeText',
'alert-closeText-editor',
PEFactory.createInputTextEditor('closeText', 'extension.setting.closeText')
);
PERegister.registerCPEditor(app, 'alert-center', 'alert-center-editor', PEFactory.createBooleanEditor('center', 'extension.setting.center'));
PERegister.registerCPEditor(
app,
'alert-showIcon',
'alert-showIcon-editor',
PEFactory.createBooleanEditor('showIcon', 'extension.setting.showIcon')
);
let effectOptions = [
{ label: 'light', value: 'light' },
{ label: 'dark', value: 'dark' }
];
PERegister.registerCPEditor(
app,
'alert-effect',
'alert-effect-editor',
PEFactory.createRadioButtonGroupEditor('effect', 'extension.setting.effect', { optionItems: effectOptions })
);
PERegister.registerEPEditor(app, 'alert-onClose', 'alert-onClose-editor', PEFactory.createEventHandlerEditor('onClose', []));
/* -------------------------------------------------- */
registerFWGenerator('alert', alertTemplateGenerator); //注册字段组件的代码生成器
/* -------------------------------------------------- */
/* 字段组件加载完毕 end */
};