@ywfe/materials-design
Version:
YwDesign for lowcode
138 lines (135 loc) • 3.81 kB
text/typescript
import { IPublicTypeComponentMetadata, IPublicTypeSnippet } from '@alilc/lowcode-types';
import {
TableBaseProps,
YwButtonBaseProps,
BaseFormItemProps,
IPublicTypeSnippetMore,
} from '../_base';
import { uuid, getRefConfig } from '../_utils';
const refConfig = getRefConfig('drawer_selector');
const YwDrawerSelectorMeta: IPublicTypeComponentMetadata = {
componentName: 'YwDrawerSelector',
title: 'YwDrawerSelector',
docUrl: '',
screenshot: '',
devMode: 'proCode',
group: '基础组件',
category: '弹窗',
npm: {
package: '@ywfe/materials-design',
version: '0.0.1-beta.6',
exportName: 'YwDrawerSelector',
main: 'src/index.tsx',
destructuring: true,
subName: '',
},
configure: {
props: [
refConfig,
{
name: 'title',
title: { label: '弹窗标题', tip: 'title | 标题' },
setter: 'StringSetter',
display: 'block',
},
...YwButtonBaseProps,
{
title: {
label: '数据筛选',
tip: 'items | 数据筛选',
},
display: 'accordion',
name: 'filterItems',
description: '数据筛选',
condition: (target) => {
return target.parent.getPropValue('hasFilter');
},
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
descriptor: 'title',
config: {
items: BaseFormItemProps,
},
},
initialValue: () => {
const mockProps: any = {};
BaseFormItemProps.forEach((item) => {
if (item.defaultValue) {
if (typeof item.defaultValue === 'function') {
mockProps[item.name] = item.defaultValue();
} else {
mockProps[item.name] = item.defaultValue;
}
}
});
return {
component: 'Input',
...mockProps,
};
},
},
},
},
},
{
title: {
label: '商品预览',
tip: 'previewConfig | 商品预览',
},
display: 'accordion',
name: '_previewConfig',
setter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'imgUrl',
title: { label: '商品图片', tip: 'imgUrl | 选择商品图片字段' },
setter: 'StringSetter',
},
{
name: 'tooltip',
title: { label: '悬浮提示', tip: 'tooltip | 选择商品图片字段' },
setter: 'StringSetter',
},
],
},
},
},
extraProps: {
setValue: (target) => {
// 获取商品名称字段和 商品图片链接字段
target.parent.setPropValue('formatPreviewItemValue', {
type: 'JSFunction',
value:
'(item)=>{return {imgUrl:item.imgUrl,tooltip:{title:item.itemName,placement:"topLeft"}}}',
});
},
},
},
...TableBaseProps,
],
},
};
const snippets: IPublicTypeSnippetMore[] = [
{
title: '商品选择器',
svgId: 'icon-shangpingxuanzeqi',
screenshot: 'https://yw-fed-static.oss-cn-hangzhou.aliyuncs.com/lowcode/goods',
schema: {
componentName: 'YwDrawerSelector',
props: {
visible: true,
},
},
},
];
export default {
...YwDrawerSelectorMeta,
snippets,
};