UNPKG

zent

Version:

一套前端设计语言和基于React的实现

165 lines (119 loc) 4.66 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _checkbox = require('../checkbox'); var _checkbox2 = _interopRequireDefault(_checkbox); var _size = require('lodash/size'); var _size2 = _interopRequireDefault(_size); var _every = require('lodash/every'); var _every2 = _interopRequireDefault(_every); var _some = require('lodash/some'); var _some2 = _interopRequireDefault(_some); var _includes = require('lodash/includes'); var _includes2 = _interopRequireDefault(_includes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var SelectionCheckboxAll = function (_ref) { (0, _inherits3['default'])(SelectionCheckboxAll, _ref); function SelectionCheckboxAll(props) { (0, _classCallCheck3['default'])(this, SelectionCheckboxAll); var _this = (0, _possibleConstructorReturn3['default'])(this, (SelectionCheckboxAll.__proto__ || Object.getPrototypeOf(SelectionCheckboxAll)).call(this, props)); _initialiseProps.call(_this); _this.state = { checked: _this.getCheckState(props), indeterminate: _this.getIndeterminateState(props) }; return _this; } (0, _createClass3['default'])(SelectionCheckboxAll, [{ key: 'componentDidMount', value: function componentDidMount() { this.subscribe(); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { this.setCheckState(nextProps); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { if (this.unsubscribe) { this.unsubscribe(); } } }, { key: 'render', value: function render() { var _state = this.state, checked = _state.checked, indeterminate = _state.indeterminate; var disabled = this.props.disabled; var props = { checked: checked, indeterminate: indeterminate && checked ? false : indeterminate }; return _react2['default'].createElement(_checkbox2['default'], (0, _extends3['default'])({}, props, { onChange: this.onChange, disabled: disabled })); } }]); return SelectionCheckboxAll; }(_react.PureComponent || _react.Component); var _initialiseProps = function _initialiseProps() { var _this2 = this; this.subscribe = function () { var store = _this2.props.store; _this2.unsubscribe = store.subscribe('selectedRowKeys', function () { _this2.setCheckState(_this2.props); }); }; this.getCheckBoxState = function (props, type) { var datasets = props.datasets, store = props.store, getDataKey = props.getDataKey; var state = void 0; var func = type === 'every' ? _every2['default'] : _some2['default']; if ((0, _size2['default'])(datasets) === 0) { state = false; } else { var selectedRowKeys = store.getState('selectedRowKeys'); state = func(datasets, function (data, index) { return (0, _includes2['default'])(selectedRowKeys, getDataKey(data, index)); }); } return state; }; this.getCheckState = function (props) { return _this2.getCheckBoxState(props, 'every'); }; this.getIndeterminateState = function (props) { return _this2.getCheckBoxState(props, 'some'); }; this.setCheckState = function (props) { var checked = _this2.getCheckState(props); var indeterminate = _this2.getIndeterminateState(props); if (checked !== _this2.state.checked) { _this2.setState({ checked: checked }); } if (indeterminate !== _this2.state.indeterminate) { _this2.setState({ indeterminate: indeterminate }); } }; this.onChange = function (e) { var datasets = _this2.props.datasets; var checked = e.target.checked; _this2.props.onSelect(checked ? 'selectAll' : 'removeAll', datasets); }; }; exports['default'] = SelectionCheckboxAll;