UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

264 lines (219 loc) 9.03 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _tslib = require("tslib"); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _Select2 = require("../select/Select"); var _Option = _interopRequireDefault(require("../option/Option")); var _OptGroup = _interopRequireDefault(require("../option/OptGroup")); var _TransferList = _interopRequireDefault(require("./TransferList")); var _TransferOperation = _interopRequireDefault(require("./TransferOperation")); var _autobind = _interopRequireDefault(require("../_util/autobind")); var _isSameLike = _interopRequireDefault(require("../_util/isSameLike")); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var Transfer = /*#__PURE__*/ function (_Select) { (0, _inherits2["default"])(Transfer, _Select); var _super = _createSuper(Transfer); function Transfer(props, context) { var _this; (0, _classCallCheck2["default"])(this, Transfer); _this = _super.call(this, props, context); (0, _mobx.runInAction)(function () { _this.sourceSelected = []; _this.targetSelected = []; }); return _this; } (0, _createClass2["default"])(Transfer, [{ key: "sourceFilter", value: function sourceFilter(record, index, array) { var valueField = this.valueField, optionsFilter = this.props.optionsFilter; if (optionsFilter && !optionsFilter(record, index, array)) { return false; } var values = this.getValues(); if (values.length) { return values.every(function (v) { return !(0, _isSameLike["default"])(record.get(valueField), v); }); } return true; } }, { key: "targetFilter", value: function targetFilter(record, index, array) { var valueField = this.valueField, optionsFilter = this.props.optionsFilter; if (optionsFilter && !optionsFilter(record, index, array)) { return false; } var values = this.getValues(); if (values.length) { return values.some(function (v) { return (0, _isSameLike["default"])(record.get(valueField), v); }); } return false; } }, { key: "handleMenuClick", value: function handleMenuClick(_ref) { var value = _ref.item.props.value; if (this.multiple) { this.selectRecord(value, this.sourceSelected); } else { this.prepareSetValue(this.processRecordToObject(value)); } } }, { key: "handleTargetMenuClick", value: function handleTargetMenuClick(_ref2) { var value = _ref2.item.props.value; if (this.multiple) { this.selectRecord(value, this.targetSelected); } else { this.removeValue(value); } } }, { key: "handleMoveToLeft", value: function handleMoveToLeft() { var valueField = this.valueField; this.removeValues(this.targetSelected.map(function (record) { return record.get(valueField); })); this.targetSelected = []; } }, { key: "handleMoveToRight", value: function handleMoveToRight() { var valueField = this.valueField; this.prepareSetValue.apply(this, (0, _toConsumableArray2["default"])(this.sourceSelected.map(function (record) { return record.get(valueField); }))); this.sourceSelected = []; } }, { key: "handleSourceSelectAllChange", value: function handleSourceSelectAllChange(selected) { this.sourceSelected = selected; } }, { key: "handleTargetSelectAllChange", value: function handleTargetSelectAllChange(selected) { this.targetSelected = selected; } }, { key: "selectRecord", value: function selectRecord(value, selected) { var index = selected.indexOf(value); if (index !== -1) { selected.splice(index, 1); } else { selected.push(value); } } }, { key: "renderWrapper", value: function renderWrapper() { var disabled = this.disabled, prefixCls = this.prefixCls, targetSelected = this.targetSelected, sourceSelected = this.sourceSelected, multiple = this.multiple, _this$props$titles = this.props.titles, titles = _this$props$titles === void 0 ? [] : _this$props$titles; return _react["default"].createElement("span", { key: "wrapper", className: "".concat(prefixCls, "-wrapper") }, _react["default"].createElement(_TransferList["default"], (0, _extends2["default"])({}, this.props, { options: this.options, selected: sourceSelected, header: titles[0], onSelectAll: this.handleSourceSelectAllChange, onSelect: this.handleMenuClick, optionsFilter: this.sourceFilter })), _react["default"].createElement(_TransferOperation["default"], { className: "".concat(prefixCls, "-operation"), leftActive: !(!targetSelected.length || disabled), rightActive: !(!sourceSelected.length || disabled), moveToLeft: this.handleMoveToLeft, moveToRight: this.handleMoveToRight, multiple: multiple }), _react["default"].createElement(_TransferList["default"], (0, _extends2["default"])({}, this.props, { options: this.options, selected: targetSelected, header: titles[1], onSelectAll: this.handleTargetSelectAllChange, onSelect: this.handleTargetMenuClick, optionsFilter: this.targetFilter }))); } }]); return Transfer; }(_Select2.Select); Transfer.displayName = 'Transfer'; Transfer.propTypes = (0, _objectSpread2["default"])({}, _Select2.Select.propTypes, { titles: _propTypes["default"].arrayOf(_propTypes["default"].node) }); Transfer.defaultProps = (0, _objectSpread2["default"])({}, _Select2.Select.defaultProps, { suffixCls: 'transfer', multiple: true }); Transfer.Option = _Option["default"]; Transfer.OptGroup = _OptGroup["default"]; (0, _tslib.__decorate)([_mobx.observable], Transfer.prototype, "sourceSelected", void 0); (0, _tslib.__decorate)([_mobx.observable], Transfer.prototype, "targetSelected", void 0); (0, _tslib.__decorate)([_autobind["default"]], Transfer.prototype, "sourceFilter", null); (0, _tslib.__decorate)([_autobind["default"]], Transfer.prototype, "targetFilter", null); (0, _tslib.__decorate)([_autobind["default"]], Transfer.prototype, "handleMenuClick", null); (0, _tslib.__decorate)([_autobind["default"]], Transfer.prototype, "handleTargetMenuClick", null); (0, _tslib.__decorate)([_autobind["default"], _mobx.action], Transfer.prototype, "handleMoveToLeft", null); (0, _tslib.__decorate)([_autobind["default"], _mobx.action], Transfer.prototype, "handleMoveToRight", null); (0, _tslib.__decorate)([_autobind["default"], _mobx.action], Transfer.prototype, "handleSourceSelectAllChange", null); (0, _tslib.__decorate)([_autobind["default"], _mobx.action], Transfer.prototype, "handleTargetSelectAllChange", null); (0, _tslib.__decorate)([_mobx.action], Transfer.prototype, "selectRecord", null); Transfer = (0, _tslib.__decorate)([_mobxReact.observer], Transfer); var _default = Transfer; exports["default"] = _default; //# sourceMappingURL=Transfer.js.map