oadp-material
Version:
oadp-material
382 lines (376 loc) • 12.7 kB
text/typescript
import { IPublicTypeComponentMetadata, IPublicTypeSnippet } from '@alilc/lowcode-types';
const OadpTabMeta: IPublicTypeComponentMetadata = {
"componentName": "OadpTab",
"title": "选项卡",
"docUrl": "",
"category": "高级组件",
"group": "低代码组件",
"screenshot": "https://img.alicdn.com/imgextra/i4/O1CN01mh9LPG268B90t8DaA_!!6000000007616-55-tps-56-56.svg",
"devMode": "proCode",
"npm": {
"package": "oadp-material",
"version": "{{version}}",
"exportName": "OadpTab",
"main": "src/index.tsx",
"destructuring": true,
"subName": ""
},
"configure": {
"props": [
{
"name": "DataSetting",
"title": "数据设置",
"type": "group",
"display": "block",
"items": [
{
"name": "name",
"title": {
"label": {
"type": "i18n",
"zh_CN": "表单标识",
"en_US": "Name",
},
"tip": {
"type": "i18n",
"zh_CN": "属性: name | 说明: 表单标识",
"en_US": "prop: name | description: switch name",
},
},
"setter": "StringSetter",
"supportVariable": false,
},
{
"name": "id",
"title": {
"label": {
"type": "i18n",
"zh_CN": "唯一标识",
"en_US": "ID",
},
"tip": {
"type": "i18n",
"zh_CN": "属性: id | 说明: 唯一标识",
"en_US": "prop: id | description: switch id",
},
},
"setter": "StringSetter"
},
{
"name": "items",
"title": "选项",
"setter": {
"componentName": "ArraySetter",
"props": {
"itemSetter": {
"componentName": "ObjectSetter",
"props": {
"config": {
"items": [
{
"name": "title",
"title": "名称",
"defaultValue": "选项",
"important": true,
"setter": "StringSetter",
},
{
"name": "primaryKey",
"title": "项目编号",
"condition": () => false,
"setter": "StringSetter",
},
{
"name": "closeable",
"title": "可关闭",
"initialValue": false,
"setter": "BoolSetter",
},
{
"name": "disabled",
"title": "是否禁用",
"initialValue": false,
"setter": "BoolSetter",
},
],
},
},
"initialValue": () => {
return {
"primaryKey": String(Math.floor(Math.random() * 10000)),
"title": "选项",
"closeable": false,
"disabled": false,
};
},
},
},
},
"extraProps": {
getValue(target) {
const map = target.node.children.map((child) => {
const primaryKey = child.getPropValue('primaryKey')
? String(child.getPropValue('primaryKey'))
: child.id;
return {
primaryKey,
title: child.getPropValue('title') || '标签项',
closeable: child.getPropValue('closeable'),
disabled: child.getPropValue('disabled'),
};
});
return map;
},
setValue(target, value) {
const { node } = target;
const map = {};
if (!Array.isArray(value)) {
value = [];
}
value.forEach((item) => {
const tabitem = Object.assign({}, item);
map[item.primaryKey] = tabitem;
});
node.children.mergeChildren(
(child) => {
const primaryKey = String(child.getPropValue('primaryKey'));
if (Object.hasOwnProperty.call(map, primaryKey)) {
child.setPropValue('title', map[primaryKey].title);
child.setPropValue('closeable', map[primaryKey].closeable);
child.setPropValue('disabled', map[primaryKey].disabled);
delete map[primaryKey];
return false;
}
return true;
},
() => {
const items = [];
for (const primaryKey in map) {
if (Object.hasOwnProperty.call(map, primaryKey)) {
items.push({
"componentName": "OadpTabItem",
"props": map[primaryKey],
});
}
}
return items;
},
(child1, child2) => {
const a = value.findIndex(
(item) => String(item.primaryKey) === String(child1.getPropValue('primaryKey')),
);
const b = value.findIndex(
(item) => String(item.primaryKey) === String(child2.getPropValue('primaryKey')),
);
return a - b;
},
);
},
},
},
]
},
{
"name": "DisplaySetting",
"title": "显示设置",
"type": "group",
"display": "block",
"items": [
{
"name": "size",
"title": {
"label": {
"type": "i18n",
"en-US": "Size",
"zh-CN": "尺寸模式"
},
"tip": {
"type": "i18n",
"zh_CN": "属性: size | 说明: 尺寸模式,可选值:small=紧凑模式, medium=普通模式。默认为:medium。",
"en_US": "prop: size | description: Size mode, optional values: small=compact mode, medium=normal mode. The default is: medium.",
},
},
"description": "属性: size | 说明: 尺寸模式,可选值:small=紧凑模式, medium=普通模式。默认为:medium。",
"setter": {
"componentName": "RadioGroupSetter",
"props": {
"dataSource": [
{
"label": "普通模式",
"value": "medium"
},
{
"label": "紧凑模式",
"value": "small"
},
],
"options": [
{
"label": "普通模式",
"value": "medium"
},
{
"label": "紧凑模式",
"value": "small"
},
]
},
"initialValue": "medium"
}
},
{
"name": "shape",
"title": {
"label": {
"type": "i18n",
"en-US": "Shape",
"zh-CN": "外观形态"
},
"tip": {
"type": "i18n",
"zh_CN": "属性: shape | 说明: 外观形态,可选值:pure=普通模式, wrapped=包裹模式, text=文本模式, capsule=胶囊模式。默认为:pure。",
"en_US": "prop: shape | description: shape mode, optional values: pure=normal mode, wrapped=package mode, text=text mode, capsule=capsule mode. Default: pure.",
},
},
"description": "属性: mode | 说明: 外观形态,可选值:pure=普通模式, wrapped=包裹模式, text=文本模式, capsule=胶囊模式。默认为:pure。",
"setter": {
"componentName": "RadioGroupSetter",
"props": {
"dataSource": [
{
"label": "普通模式",
"value": "pure"
},
{
"label": "包裹模式",
"value": "wrapped"
},
{
"label": "文本模式",
"value": "text"
},
{
"label": "胶囊模式",
"value": "capsule"
}
],
"options": [
{
"label": "普通模式",
"value": "pure"
},
{
"label": "包裹模式",
"value": "wrapped"
},
{
"label": "文本模式",
"value": "text"
},
{
"label": "胶囊模式",
"value": "capsule"
}
]
},
"initialValue": "pure"
}
},
]
},
{
"name": "InteractionSetting",
"title": "交互设置",
"type": "group",
"display": "block",
"items": [
{
"name": "excessMode",
"title": {
"label": {
"type": "i18n",
"en-US": "Excess Mode",
"zh-CN": "展示更多"
},
"tip": {
"type": "i18n",
"zh_CN": "属性: excessMode | 说明: 展示更多,选项卡过多时的滑动模式,可选值:slide=滑动模式, dropdown=下拉模式。默认为:slide。",
"en_US": "prop: excessMode | description: Display more, sliding mode with too many tabs, optional values: slide=sliding mode, dropout=drop-down mode. Default is: slide.",
},
},
"description": "属性: size | 说明: 展示更多,选项卡过多时的滑动模式,可选值:slide=滑动模式, dropdown=下拉模式。默认为:slide。",
"setter": {
"componentName": "RadioGroupSetter",
"props": {
"dataSource": [
{
"label": "滑动模式",
"value": "slide"
},
{
"label": "下拉模式",
"value": "dropdown"
}
],
"options": [
{
"label": "滑动模式",
"value": "slide"
},
{
"label": "下拉模式",
"value": "dropdown"
}
]
},
"initialValue": "slide"
}
},
]
},
],
"supports": {
"style": true
},
"component": {
"isContainer": true,
"nestingRule": {
"childWhitelist": ["OadpTabItem"],
},
}
}
};
const snippets: IPublicTypeSnippet[] = [
{
"title": "选项卡",
"screenshot": "https://img.alicdn.com/imgextra/i4/O1CN01mh9LPG268B90t8DaA_!!6000000007616-55-tps-56-56.svg",
"schema": {
"componentName": "OadpTab",
"props": {
"shape": "pure",
"size": "medium",
"excessMode": "slide",
},
"children": [
{
"componentName": "OadpTabItem",
"props": {
"title": '选项1',
"primaryKey": 'tab-item-1',
},
},
{
"componentName": "OadpTabItem",
"props": {
"title": '选项2',
"primaryKey": 'tab-item-2',
},
},
],
},
}
];
export default {
...OadpTabMeta,
snippets
};