UNPKG

jjb-lc-designable

Version:

基于alibaba-designable源码二次封装的表单设计器。

54 lines 1.89 kB
import React from 'react'; import { clone, toArr } from 'jjb-lc-formily/shared'; import { observer } from 'jjb-lc-formily/reactive-react'; import { IconWidget, TextWidget, usePrefix } from 'jjb-lc-designable/react'; import { traverseTree } from './shared'; import './styles.less'; export const Title = observer(props => { const prefix = usePrefix('data-source-setter-node-title'); const getTitleValue = dataSource => { const optionalKeys = ['label', 'title', 'header']; let nodeTitle; optionalKeys.some(key => { const title = toArr(dataSource).find(item => item.label === key)?.value; if (title !== undefined) { nodeTitle = title; return true; } return false; }); if (nodeTitle === undefined) { toArr(dataSource || []).some(item => { if (item.value && typeof item.value === 'string') { nodeTitle = item.value; return true; } return false; }); } return nodeTitle; }; const renderTitle = dataSource => { const nodeTitle = getTitleValue(dataSource); if (nodeTitle === undefined) return /*#__PURE__*/React.createElement(TextWidget, { token: "SettingComponents.DataSourceSetter.defaultTitle" });else return nodeTitle + ''; }; return /*#__PURE__*/React.createElement("div", { className: prefix }, /*#__PURE__*/React.createElement("span", { style: { marginRight: '5px' } }, renderTitle(props?.map || [])), /*#__PURE__*/React.createElement(IconWidget, { className: prefix + '-icon', infer: "Remove", onClick: () => { const newDataSource = clone(props?.treeDataSource?.dataSource); traverseTree(newDataSource || [], (dataItem, i, data) => { if (data[i].key === props.duplicateKey) toArr(data).splice(i, 1); }); props.treeDataSource.dataSource = newDataSource; } })); });