UNPKG

choerodon-ui

Version:

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

224 lines (180 loc) 7.35 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); 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 _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _tslib = require("tslib"); var React = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _reactLifecyclesCompat = require("react-lifecycles-compat"); var _mobxReact = require("mobx-react"); var _checkbox = _interopRequireDefault(require("../../../lib/checkbox")); var _dropdown = _interopRequireDefault(require("../dropdown")); var _menu = _interopRequireDefault(require("../menu")); var _icon = _interopRequireDefault(require("../icon")); function checkSelection(_ref) { var store = _ref.store, getCheckboxPropsByItem = _ref.getCheckboxPropsByItem, getRecordKey = _ref.getRecordKey, data = _ref.data, type = _ref.type, byDefaultChecked = _ref.byDefaultChecked; return byDefaultChecked ? data[type](function (item, i) { return getCheckboxPropsByItem(item, i).defaultChecked; }) : data[type](function (item, i) { return store.selectedRowKeys.indexOf(getRecordKey(item, i)) >= 0; }); } function getIndeterminateState(props) { var store = props.store, data = props.data; if (!data.length) { return false; } var someCheckedNotByDefaultChecked = checkSelection((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, { data: data, type: 'some', byDefaultChecked: false })) && !checkSelection((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, { data: data, type: 'every', byDefaultChecked: false })); var someCheckedByDefaultChecked = checkSelection((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, { data: data, type: 'some', byDefaultChecked: true })) && !checkSelection((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, { data: data, type: 'every', byDefaultChecked: true })); if (store.selectionDirty) { return someCheckedNotByDefaultChecked; } return someCheckedNotByDefaultChecked || someCheckedByDefaultChecked; } function getCheckState(props) { var store = props.store, data = props.data; if (!data.length) { return false; } if (store.selectionDirty) { return checkSelection((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, { data: data, type: 'every', byDefaultChecked: false })); } return checkSelection((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, { data: data, type: 'every', byDefaultChecked: false })) || checkSelection((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, { data: data, type: 'every', byDefaultChecked: true })); } var SelectionCheckboxAll = /*#__PURE__*/function (_React$Component) { (0, _inherits2["default"])(SelectionCheckboxAll, _React$Component); var _super = (0, _createSuper2["default"])(SelectionCheckboxAll); function SelectionCheckboxAll(props) { var _this; (0, _classCallCheck2["default"])(this, SelectionCheckboxAll); _this = _super.call(this, props); _this.handleSelectAllChange = function (e) { var checked = e.target.checked; _this.props.onSelect(checked ? 'all' : 'removeAll', 0, null); }; _this.defaultSelections = props.hideDefaultSelections ? [] : [{ key: 'all', text: 'SelectAll' }, { key: 'invert', text: 'SelectInvert' }]; return _this; } (0, _createClass2["default"])(SelectionCheckboxAll, [{ key: "setCheckState", value: function setCheckState(props) { var checked = getCheckState(props); var indeterminate = getIndeterminateState(props); this.setState(function (prevState) { var newState = {}; if (indeterminate !== prevState.indeterminate) { newState.indeterminate = indeterminate; } if (checked !== prevState.checked) { newState.checked = checked; } return newState; }); } }, { key: "renderMenus", value: function renderMenus(selections) { var _this2 = this; return selections.map(function (selection, index) { return /*#__PURE__*/React.createElement(_menu["default"].Item, { key: selection.key || index }, /*#__PURE__*/React.createElement("div", { onClick: function onClick() { _this2.props.onSelect(selection.key, index, selection.onSelect); } }, selection.text)); }); } }, { key: "render", value: function render() { var _this$props = this.props, disabled = _this$props.disabled, prefixCls = _this$props.prefixCls, selections = _this$props.selections; var checked = getCheckState(this.props); var indeterminate = getIndeterminateState(this.props); var selectionPrefixCls = "".concat(prefixCls, "-selection"); var customSelections = null; if (selections) { var newSelections = Array.isArray(selections) ? this.defaultSelections.concat(selections) : this.defaultSelections; var menu = /*#__PURE__*/React.createElement(_menu["default"], { className: "".concat(selectionPrefixCls, "-menu"), selectedKeys: [] }, this.renderMenus(newSelections)); customSelections = newSelections.length > 0 ? /*#__PURE__*/React.createElement(_dropdown["default"], { overlay: menu }, /*#__PURE__*/React.createElement("div", { className: "".concat(selectionPrefixCls, "-down") }, /*#__PURE__*/React.createElement(_icon["default"], { type: "down" }))) : null; } return /*#__PURE__*/React.createElement("div", { className: selectionPrefixCls }, /*#__PURE__*/React.createElement(_checkbox["default"], { className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, "".concat(selectionPrefixCls, "-select-all-custom"), customSelections)), checked: checked, indeterminate: indeterminate, disabled: disabled, onChange: this.handleSelectAllChange }), customSelections); } }]); return SelectionCheckboxAll; }(React.Component); SelectionCheckboxAll = (0, _tslib.__decorate)([_mobxReact.observer], SelectionCheckboxAll); (0, _reactLifecyclesCompat.polyfill)(SelectionCheckboxAll); var _default = SelectionCheckboxAll; exports["default"] = _default; //# sourceMappingURL=SelectionCheckboxAll.js.map