UNPKG

choerodon-ui

Version:

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

200 lines (172 loc) 6.21 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import _inherits from "@babel/runtime/helpers/inherits"; import _createSuper from "@babel/runtime/helpers/createSuper"; import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import { __decorate } from "tslib"; import * as React from 'react'; import classNames from 'classnames'; import { polyfill } from 'react-lifecycles-compat'; import { observer } from 'mobx-react'; import Checkbox from '../../../es/checkbox'; import Dropdown from '../dropdown'; import Menu from '../menu'; import Icon from '../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(_objectSpread(_objectSpread({}, props), {}, { data: data, type: 'some', byDefaultChecked: false })) && !checkSelection(_objectSpread(_objectSpread({}, props), {}, { data: data, type: 'every', byDefaultChecked: false })); var someCheckedByDefaultChecked = checkSelection(_objectSpread(_objectSpread({}, props), {}, { data: data, type: 'some', byDefaultChecked: true })) && !checkSelection(_objectSpread(_objectSpread({}, 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(_objectSpread(_objectSpread({}, props), {}, { data: data, type: 'every', byDefaultChecked: false })); } return checkSelection(_objectSpread(_objectSpread({}, props), {}, { data: data, type: 'every', byDefaultChecked: false })) || checkSelection(_objectSpread(_objectSpread({}, props), {}, { data: data, type: 'every', byDefaultChecked: true })); } var SelectionCheckboxAll = /*#__PURE__*/function (_React$Component) { _inherits(SelectionCheckboxAll, _React$Component); var _super = _createSuper(SelectionCheckboxAll); function SelectionCheckboxAll(props) { var _this; _classCallCheck(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; } _createClass(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.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, { className: "".concat(selectionPrefixCls, "-menu"), selectedKeys: [] }, this.renderMenus(newSelections)); customSelections = newSelections.length > 0 ? /*#__PURE__*/React.createElement(Dropdown, { overlay: menu }, /*#__PURE__*/React.createElement("div", { className: "".concat(selectionPrefixCls, "-down") }, /*#__PURE__*/React.createElement(Icon, { type: "down" }))) : null; } return /*#__PURE__*/React.createElement("div", { className: selectionPrefixCls }, /*#__PURE__*/React.createElement(Checkbox, { className: classNames(_defineProperty({}, "".concat(selectionPrefixCls, "-select-all-custom"), customSelections)), checked: checked, indeterminate: indeterminate, disabled: disabled, onChange: this.handleSelectAllChange }), customSelections); } }]); return SelectionCheckboxAll; }(React.Component); SelectionCheckboxAll = __decorate([observer], SelectionCheckboxAll); polyfill(SelectionCheckboxAll); export default SelectionCheckboxAll; //# sourceMappingURL=SelectionCheckboxAll.js.map