UNPKG

@wufengteam/inputs

Version:

平台提供的右侧属性编辑器,需要在主工程中注册

575 lines (574 loc) 25.4 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _immutabilityHelper = _interopRequireDefault(require("immutability-helper")); var _antd = require("antd"); var _icons = require("@ant-design/icons"); var _reactDnd = require("react-dnd"); var _reactDndHtml5Backend = require("react-dnd-html5-backend"); var _move = _interopRequireDefault(require("../assets/img/TabsSet/move.png")); var _delete = _interopRequireDefault(require("../assets/img/TabsSet/delete.png")); var _hide = _interopRequireDefault(require("../assets/img/TabsSet/hide.png")); var _show = _interopRequireDefault(require("../assets/img/TabsSet/show.png")); var _utils = require("../utils"); require("./index.css"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } //@ts-ignore //@ts-ignore //@ts-ignore //@ts-ignore var cssCls = "".concat(_utils.cssPrefixCls, "-tabsSet"); var InnerTabsSet = function InnerTabsSet(props) { var _a, _b; var onChange = props.onChange, compCreators = props.compCreators, DSLCore = props.DSLCore, selectedComp = props.selectedComp; var _useState = (0, _react.useState)(((_b = (_a = props === null || props === void 0 ? void 0 : props.selectedComp) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.tabsItems) || []), _useState2 = _slicedToArray(_useState, 2), tabsItems = _useState2[0], setTabsItems = _useState2[1]; (0, _react.useEffect)(function () { var _a, _b; var NodeList = DSLCore.current.children(); var ids = []; if (Array.isArray(NodeList)) { NodeList.forEach(function (item) { ids.push(item.id); }); } var oldVal = (_b = (_a = props === null || props === void 0 ? void 0 : props.selectedComp) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.tabsItems; if (Array.isArray(oldVal)) { var newVal = oldVal.filter(function (item) { if (ids.includes(item.id)) { return true; } return false; }); if (newVal.length !== oldVal.length) { setTabsItems(newVal); onChange === null || onChange === void 0 ? void 0 : onChange(newVal); } } }, []); var WFTabPaneCompCreator = compCreators().WFTabPane; var addTabPanel = (0, _react.useCallback)(function () { var _a, _b, _c, _d, _e, _f, _g, _h; if (Array.isArray(tabsItems) && tabsItems.length > 9) { _antd.message.warning('最多允许添加 10 个标签页'); return; } var id = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.createComponentId('WFTabPane'); var formNodeList = DSLCore.rootNode.children(); var formNode = formNodeList === null || formNodeList === void 0 ? void 0 : formNodeList[0]; var _ref = ((_a = formNode === null || formNode === void 0 ? void 0 : formNode.attribute) === null || _a === void 0 ? void 0 : _a.props) || {}, layout = _ref.layout, rowSpace = _ref.rowSpace, colSpan = _ref.colSpan, colon = _ref.colon, labelAlign = _ref.labelAlign, labelCol = _ref.labelCol, wrapperCol = _ref.wrapperCol, colSpace = _ref.colSpace; if (Array.isArray(tabsItems) && tabsItems.length > 0) { var num = Number((_c = (_b = tabsItems[tabsItems.length - 1]) === null || _b === void 0 ? void 0 : _b.props) === null || _c === void 0 ? void 0 : _c.index); var nodeJSON = WFTabPaneCompCreator === null || WFTabPaneCompCreator === void 0 ? void 0 : WFTabPaneCompCreator({ id: id, props: { fieldName: id, fieldNameAlias: id, name: "\u6807\u7B7E\u9875".concat(num + 1), index: "".concat(num + 1), key: id, layout: layout, rowSpace: rowSpace, colSpan: colSpan, colon: colon, labelAlign: labelAlign, labelCol: labelCol, wrapperCol: wrapperCol, colSpace: colSpace } }); var lastId = tabsItems[tabsItems.length - 1].id; (_d = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.current) === null || _d === void 0 ? void 0 : _d.insertChildAfterById(lastId, nodeJSON); var newTabsItems = JSON.parse(JSON.stringify(tabsItems)); newTabsItems.push(nodeJSON); onChange === null || onChange === void 0 ? void 0 : onChange(newTabsItems); setTabsItems(function (oldVlaue) { oldVlaue.push(nodeJSON); return oldVlaue; }); } else { var _nodeJSON = WFTabPaneCompCreator === null || WFTabPaneCompCreator === void 0 ? void 0 : WFTabPaneCompCreator({ id: id, props: { fieldName: id, fieldNameAlias: id, name: '标签页1', index: 1, key: id, layout: layout, rowSpace: rowSpace, colSpan: colSpan, colon: colon, labelAlign: labelAlign, labelCol: labelCol, wrapperCol: wrapperCol, colSpace: colSpace } }); (_e = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.current) === null || _e === void 0 ? void 0 : _e.appendChild(_nodeJSON); var _newTabsItems = JSON.parse(JSON.stringify(tabsItems)); _newTabsItems.push(_nodeJSON); onChange === null || onChange === void 0 ? void 0 : onChange(_newTabsItems); setTabsItems(function (oldVlaue) { oldVlaue.push(_nodeJSON); return oldVlaue; }); } (_f = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.current) === null || _f === void 0 ? void 0 : _f.render({ mode: '12000', id: (_g = props === null || props === void 0 ? void 0 : props.selectedComp) === null || _g === void 0 ? void 0 : _g.id }); DSLCore.setCurrent((_h = props === null || props === void 0 ? void 0 : props.selectedComp) === null || _h === void 0 ? void 0 : _h.id); }, [tabsItems]); var TabsItem = function TabsItem(_ref2) { var index = _ref2.index, children = _ref2.children, accept = _ref2.accept, DSLCore = _ref2.DSLCore, setTabsItems = _ref2.setTabsItems, onChange = _ref2.onChange, parentId = _ref2.parentId; var _useDrop = (0, _reactDnd.useDrop)({ accept: accept, hover: function hover(item) { // 被拖拽元素的数据 var dragIndex = item.index, data = item.data; var dropIndex = index; if (dragIndex === dropIndex) { return; } setTabsItems(function (oldVal) { var newVal = (0, _immutabilityHelper.default)(oldVal, { $splice: [[dragIndex, 1], [dropIndex, 0, data]] }); return newVal; }); item.index = dropIndex; }, drop: function drop(item) { var _a; // 被放置元素的数据 var dropIndex = item.index, data = item.data; if ((data === null || data === void 0 ? void 0 : data.id) && parentId) { (_a = DSLCore.query(data.id)) === null || _a === void 0 ? void 0 : _a.moveTo(parentId, dropIndex); } setTabsItems(function (oldVal) { var newVal = (0, _immutabilityHelper.default)(oldVal, { $splice: [[dropIndex, 1], [dropIndex, 0, data]] }); onChange === null || onChange === void 0 ? void 0 : onChange(newVal); return newVal; }); } }), _useDrop2 = _slicedToArray(_useDrop, 2), _ = _useDrop2[0], dropRef = _useDrop2[1]; return /*#__PURE__*/_react.default.createElement("div", { className: "".concat(cssCls, "-item"), ref: dropRef }, children); }; var MoveComp = function MoveComp(_ref3) { var index = _ref3.index, type = _ref3.type, data = _ref3.data; var _useDrag = (0, _reactDnd.useDrag)({ item: { index: index, type: type, data: data }, collect: function collect(monitor) { return { isDragging: !!monitor.isDragging() }; }, previewOptions: { captureDraggingState: true } }), _useDrag2 = _slicedToArray(_useDrag, 2), _ = _useDrag2[0], dragRef = _useDrag2[1]; return /*#__PURE__*/_react.default.createElement("img", { src: _move.default, alt: "", ref: dragRef, className: "".concat(cssCls, "-move-icon") }); }; var CustomDragLayer = function CustomDragLayer() { var _a; var _useDragLayer = (0, _reactDnd.useDragLayer)(function (monitor) { return { item: monitor.getItem(), currentOffset: monitor.getSourceClientOffset(), isDragging: monitor.isDragging() }; }), isDragging = _useDragLayer.isDragging, item = _useDragLayer.item, currentOffset = _useDragLayer.currentOffset; if (!isDragging) { return null; } function getItemStyles() { if (currentOffset) { var y = currentOffset.y; return { position: 'fixed', right: '12px', top: y, pointerEvents: 'none', zIndex: 10000, background: '#F6F6F8', width: '256px' }; } return { visibility: 'hidden' }; } var _ref4 = ((_a = item === null || item === void 0 ? void 0 : item.data) === null || _a === void 0 ? void 0 : _a.props) || {}, isActive = _ref4.isActive, name = _ref4.name, basicStatus = _ref4.basicStatus; return /*#__PURE__*/_react.default.createElement("div", { style: getItemStyles(), className: "".concat(cssCls, "-item") }, /*#__PURE__*/_react.default.createElement(_antd.Radio, { checked: isActive }), /*#__PURE__*/_react.default.createElement(_antd.Input, { value: name, size: "small", className: "".concat(cssCls, "-label") }), /*#__PURE__*/_react.default.createElement("img", { src: _move.default, alt: "", className: "".concat(cssCls, "-move-icon") }), /*#__PURE__*/_react.default.createElement("img", { src: _delete.default, alt: "", className: "".concat(cssCls, "-delete-icon") }), basicStatus === 1 ? /*#__PURE__*/_react.default.createElement("img", { src: _show.default, alt: "", className: "".concat(cssCls, "-show-icon") }) : /*#__PURE__*/_react.default.createElement("img", { src: _hide.default, alt: "", className: "".concat(cssCls, "-hide-icon") })); }; var ActiveComp = function ActiveComp(_ref5) { var data = _ref5.data, setTabsItems = _ref5.setTabsItems, onChange = _ref5.onChange; var _useState3 = (0, _react.useState)(function () { var _a; return ((_a = data === null || data === void 0 ? void 0 : data.props) === null || _a === void 0 ? void 0 : _a.isActive) ? true : false; }), _useState4 = _slicedToArray(_useState3, 2), isActive = _useState4[0], setIsActive = _useState4[1]; var onActiveChange = function onActiveChange(e) { var _a; var isChecked = (_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.checked; setTabsItems(function (oldVal) { var newVal = (0, _immutabilityHelper.default)(oldVal, { $apply: function $apply(oldData) { var newData = oldData.map(function (item) { var _a; var node = (_a = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.query) === null || _a === void 0 ? void 0 : _a.call(DSLCore, item.id); if (item.id === (data === null || data === void 0 ? void 0 : data.id)) { node.setProps({ isActive: isChecked }); item.props.isActive = isChecked; } else { node.setProps({ isActive: !isChecked }); item.props.isActive = !isChecked; } return item; }); return newData; } }); onChange === null || onChange === void 0 ? void 0 : onChange(newVal); return newVal; }); setIsActive(isChecked); }; return /*#__PURE__*/_react.default.createElement(_antd.Radio, { checked: isActive, onChange: onActiveChange }); }; var LabelComp = function LabelComp(_ref6) { var data = _ref6.data, DSLCore = _ref6.DSLCore, setTabsItems = _ref6.setTabsItems, onChange = _ref6.onChange; var _a; var _useState5 = (0, _react.useState)((_a = data === null || data === void 0 ? void 0 : data.props) === null || _a === void 0 ? void 0 : _a.name), _useState6 = _slicedToArray(_useState5, 2), label = _useState6[0], setLabel = _useState6[1]; var onTabChange = function onTabChange(e) { var _a; setLabel((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value); }; var onBlur = function onBlur(e) { var _a, _b; var node = (_a = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.query) === null || _a === void 0 ? void 0 : _a.call(DSLCore, data === null || data === void 0 ? void 0 : data.id); var name = (_b = e === null || e === void 0 ? void 0 : e.target) === null || _b === void 0 ? void 0 : _b.value; node.setProps({ name: name }); setTabsItems(function (oldVal) { var newVal = (0, _immutabilityHelper.default)(oldVal, { $apply: function $apply(oldData) { var newData = oldData.map(function (item) { if (item.id === (data === null || data === void 0 ? void 0 : data.id)) { item.props.name = name; } return item; }); return newData; } }); onChange === null || onChange === void 0 ? void 0 : onChange(newVal); return newVal; }); }; return /*#__PURE__*/_react.default.createElement(_antd.Input, { value: label, onChange: onTabChange, onBlur: onBlur, size: "small", className: "".concat(cssCls, "-label") }); }; var DelComp = function DelComp(_ref7) { var data = _ref7.data, DSLCore = _ref7.DSLCore, parentId = _ref7.parentId, tabsItems = _ref7.tabsItems, setTabsItems = _ref7.setTabsItems, onChange = _ref7.onChange; var _useState7 = (0, _react.useState)(false), _useState8 = _slicedToArray(_useState7, 2), isOpenPopover = _useState8[0], setIsOpenPopover = _useState8[1]; return /*#__PURE__*/_react.default.createElement(_antd.Popover, { placement: "bottomRight", trigger: "click", open: isOpenPopover, onOpenChange: function onOpenChange(newOpen) { setIsOpenPopover(newOpen); }, content: function content() { return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", { className: "".concat(cssCls, "-delete-popover-info") }, "\u5220\u9664\u540E\uFF0C\u8BE5\u5B50\u9762\u677F\u4E2D\u6240\u6709\u8868\u5355\u9879\u90FD\u4F1A\u88AB\u6E05\u9664\u3002"), /*#__PURE__*/_react.default.createElement("div", { className: "".concat(cssCls, "-delete-popover-btn-warp") }, /*#__PURE__*/_react.default.createElement(_antd.Button, { size: "small", className: "".concat(cssCls, "-delete-popover-cancel-btn"), onClick: function onClick() { setIsOpenPopover(false); } }, "\u53D6\u6D88"), /*#__PURE__*/_react.default.createElement(_antd.Button, { type: "primary", size: "small", className: "".concat(cssCls, "-delete-popover-confirm-btn"), onClick: function onClick() { var _a, _b; if (Array.isArray(tabsItems) && tabsItems.length > 2) { (_a = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.current) === null || _a === void 0 ? void 0 : _a.removeChildById(data === null || data === void 0 ? void 0 : data.id); (_b = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.current) === null || _b === void 0 ? void 0 : _b.render({ mode: '12001', id: parentId }); DSLCore.setCurrent(parentId); setTabsItems(function (oldVal) { var _a; if (data.props.isActive) { var newTabsItems = oldVal.filter(function (item) { return item.id !== (data === null || data === void 0 ? void 0 : data.id); }); newTabsItems[0].props.isActive = true; var node = (_a = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.query) === null || _a === void 0 ? void 0 : _a.call(DSLCore, newTabsItems[0].id); node.setProps({ isActive: true }); onChange === null || onChange === void 0 ? void 0 : onChange(newTabsItems); return newTabsItems; } var newVal = oldVal.filter(function (item) { return item.id !== (data === null || data === void 0 ? void 0 : data.id); }); onChange === null || onChange === void 0 ? void 0 : onChange(newVal); return newVal; }); } else { _antd.message.warn('至少保存两个标签页'); } } }, "\u786E\u8BA4"))); } }, /*#__PURE__*/_react.default.createElement("img", { src: _delete.default, alt: "", className: "".concat(cssCls, "-delete-icon") })); }; var ViewComp = function ViewComp(_ref8) { var data = _ref8.data, DSLCore = _ref8.DSLCore, tabsItems = _ref8.tabsItems, setTabsItems = _ref8.setTabsItems, onChange = _ref8.onChange; var _a; var handleViewNode = function handleViewNode() { var _a; var node = (_a = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.query) === null || _a === void 0 ? void 0 : _a.call(DSLCore, data === null || data === void 0 ? void 0 : data.id); node.setProps({ basicStatus: 1 }); var newTabsItems = tabsItems.map(function (item) { var itemCopy = JSON.parse(JSON.stringify(item)); if (itemCopy.id === (data === null || data === void 0 ? void 0 : data.id)) { itemCopy.props.basicStatus = 1; } return itemCopy; }); setTabsItems(newTabsItems); onChange === null || onChange === void 0 ? void 0 : onChange(newTabsItems); }; var handleHideNode = function handleHideNode() { var _a; var node = (_a = DSLCore === null || DSLCore === void 0 ? void 0 : DSLCore.query) === null || _a === void 0 ? void 0 : _a.call(DSLCore, data === null || data === void 0 ? void 0 : data.id); node.setProps({ basicStatus: 2 }); var newTabsItems = tabsItems.map(function (item) { var itemCopy = JSON.parse(JSON.stringify(item)); if (itemCopy.id === (data === null || data === void 0 ? void 0 : data.id)) { itemCopy.props.basicStatus = 2; } return itemCopy; }); setTabsItems(newTabsItems); onChange === null || onChange === void 0 ? void 0 : onChange(newTabsItems); }; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, ((_a = data === null || data === void 0 ? void 0 : data.props) === null || _a === void 0 ? void 0 : _a.basicStatus) === 1 ? /*#__PURE__*/_react.default.createElement("img", { src: _show.default, alt: "", className: "".concat(cssCls, "-show-icon"), onClick: handleHideNode }) : /*#__PURE__*/_react.default.createElement("img", { src: _hide.default, alt: "", className: "".concat(cssCls, "-hide-icon"), onClick: handleViewNode })); }; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactDnd.DndProvider, { backend: _reactDndHtml5Backend.HTML5Backend }, /*#__PURE__*/_react.default.createElement(CustomDragLayer, null), /*#__PURE__*/_react.default.createElement("div", { className: "".concat(cssCls) }, tabsItems === null || tabsItems === void 0 ? void 0 : tabsItems.map(function (item, index) { return /*#__PURE__*/_react.default.createElement(TabsItem, { accept: 'box', index: index, key: item.id, parentId: selectedComp === null || selectedComp === void 0 ? void 0 : selectedComp.id, DSLCore: DSLCore, setTabsItems: setTabsItems, onChange: onChange }, /*#__PURE__*/_react.default.createElement(ActiveComp, { data: item, setTabsItems: setTabsItems, onChange: onChange }), /*#__PURE__*/_react.default.createElement(LabelComp, { data: item, DSLCore: DSLCore, setTabsItems: setTabsItems, onChange: onChange }), /*#__PURE__*/_react.default.createElement(MoveComp, { index: index, type: 'box', data: item }), /*#__PURE__*/_react.default.createElement(DelComp, { data: item, DSLCore: DSLCore, parentId: selectedComp === null || selectedComp === void 0 ? void 0 : selectedComp.id, tabsItems: tabsItems, setTabsItems: setTabsItems, onChange: onChange }), /*#__PURE__*/_react.default.createElement(ViewComp, { data: item, DSLCore: DSLCore, tabsItems: tabsItems, setTabsItems: setTabsItems, onChange: onChange })); }))), /*#__PURE__*/_react.default.createElement(_antd.Button, { className: "".concat(cssCls, "-addBtn"), onClick: addTabPanel, icon: /*#__PURE__*/_react.default.createElement(_icons.PlusOutlined, { style: { color: 'rgba(28,36,46,0.55)', fontSize: '12px' } }), type: "dashed", size: "middle", block: true }, /*#__PURE__*/_react.default.createElement("span", { className: "".concat(cssCls, "-addBtn-text") }, "\u6DFB\u52A0\u9762\u677F"))); }; var TabsSet = function TabsSet(props) { var name = props.name; return /*#__PURE__*/_react.default.createElement(_antd.Form.Item, { name: name, labelCol: { span: 0 }, wrapperCol: { span: 24 } }, /*#__PURE__*/_react.default.createElement(InnerTabsSet, Object.assign({}, props))); }; var _default = exports.default = TabsSet;