UNPKG

@aliretail/react-materials-components

Version:
177 lines (149 loc) 7.05 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _button = _interopRequireDefault(require("@alifd/next/lib/button")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _SelectLogic = _interopRequireDefault(require("./SelectLogic")); var _LogicConditionGroup = _interopRequireDefault(require("./LogicConditionGroup")); var _utils = require("./utils"); var _classnames = _interopRequireDefault(require("classnames")); var _context = require("./context"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /* eslint-disable react/prop-types */ var LogicalEditor = /*#__PURE__*/React.forwardRef(function (props, ref) { var value = props.value, onChange = props.onChange, dataSource = props.dataSource, _props$mode = props.mode, mode = _props$mode === void 0 ? 'multiple' : _props$mode, _props$disabled = props.disabled, disabled = _props$disabled === void 0 ? false : _props$disabled, useCompact = props.useCompact; var isSingleMode = mode === 'single'; var _ref = value || { calcType: 'AND', conditionGroups: [{ id: 'lorem', calcType: 'AND', conditions: [{ id: 'ipsum' }] }] }, calcType = _ref.calcType, _ref$conditionGroups = _ref.conditionGroups, conditionGroups = _ref$conditionGroups === void 0 ? [] : _ref$conditionGroups; /** 关系组 且、或修改 */ var handleGroupLogicChange = function handleGroupLogicChange(v) { onChange === null || onChange === void 0 ? void 0 : onChange((0, _extends2["default"])({}, value, { calcType: v })); }; /** 新增组 */ var handleGroupAdd = function handleGroupAdd(v) { var newGroups = conditionGroups.concat(v); // 新增之后为两条,同时要改一下logic if (newGroups.length === 2) { onChange === null || onChange === void 0 ? void 0 : onChange({ calcType: 'AND', conditionGroups: newGroups }); } else { onChange === null || onChange === void 0 ? void 0 : onChange((0, _extends2["default"])({}, value, { conditionGroups: newGroups })); } }; /** 修改组 */ var handleGroupUpdate = function handleGroupUpdate(groupId, payload) { var newGroups = conditionGroups.map(function (group) { if (group.id === groupId) { return (0, _extends2["default"])({}, group, payload); } return (0, _extends2["default"])({}, group); }); onChange === null || onChange === void 0 ? void 0 : onChange({ calcType: calcType !== null && calcType !== void 0 ? calcType : 'AND', conditionGroups: newGroups }); }; /** 删除组 */ var handleGroupRemove = function handleGroupRemove(groupId) { var newGroups = conditionGroups.filter(function (g) { return g.id !== groupId; }); // 删除之后如果少于两条,要把logic 改成 且 if (newGroups.length < 2) { onChange === null || onChange === void 0 ? void 0 : onChange({ calcType: 'AND', conditionGroups: newGroups }); } else { onChange === null || onChange === void 0 ? void 0 : onChange((0, _extends2["default"])({}, value, { conditionGroups: newGroups })); } }; return /*#__PURE__*/React.createElement(_context.Provider, { value: { config: dataSource, disabled: disabled } }, /*#__PURE__*/React.createElement("div", { ref: ref, className: "aliretail-logic-editor", style: { minWidth: useCompact ? 730 : 930, padding: useCompact ? '8px' : '20px 20px 20px 10px' } }, /*#__PURE__*/React.createElement("div", { className: "aliretail-logic-editor-body" }, !isSingleMode && /*#__PURE__*/React.createElement("div", { className: (0, _classnames["default"])('aliretail-logic-editor-select-logic', conditionGroups.length >= 2 && 'has-border'), style: { width: useCompact ? 30 : 44, marginRight: useCompact ? 6 : 9 } }, /*#__PURE__*/React.createElement(_SelectLogic["default"], { disabled: conditionGroups.length < 2, value: calcType, onChange: handleGroupLogicChange })), /*#__PURE__*/React.createElement("div", { className: "aliretail-logic-editor-group-container" }, conditionGroups === null || conditionGroups === void 0 ? void 0 : conditionGroups.map(function (group) { var _conditionGroups$, _conditionGroups$$con; if (!group.id) { // eslint-disable-next-line no-param-reassign group.id = (0, _utils.uniqueGroupKey)(); } return /*#__PURE__*/React.createElement(_LogicConditionGroup["default"], { useCompact: useCompact, key: group.id, group: group, conditionRemovable: conditionGroups.length > 1 || (((_conditionGroups$ = conditionGroups[0]) === null || _conditionGroups$ === void 0 ? void 0 : (_conditionGroups$$con = _conditionGroups$.conditions) === null || _conditionGroups$$con === void 0 ? void 0 : _conditionGroups$$con.length) || 0) > 1, onUpdate: handleGroupUpdate, onRemove: handleGroupRemove }); }))), !(disabled || isSingleMode) && /*#__PURE__*/React.createElement(_button["default"], { className: "aliretail-logic-editor-new-group", style: { height: '40px', color: '#034cfa', border: 'unset', marginLeft: useCompact ? 'calc(30px + 6px)' : 'calc(44px + 9px)', width: useCompact ? 'calc(100% - 30px - 6px)' : 'calc(100% - 44px - 9px)' }, onClick: function onClick() { return handleGroupAdd({ id: (0, _utils.uniqueGroupKey)(), calcType: 'AND', conditions: [{ id: (0, _utils.uniqueConditionKey)() }] }); } }, "+ \u65B0\u589E\u5173\u7CFB\u7EC4"))); }); var _default = LogicalEditor; exports["default"] = _default;