@aliretail/react-materials-components
Version:
177 lines (149 loc) • 7.05 kB
JavaScript
"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;