import _defineProperty from"babel-runtime/helpers/defineProperty";import _classCallCheck from"babel-runtime/helpers/classCallCheck";import _createClass from"babel-runtime/helpers/createClass";import _possibleConstructorReturn from"babel-runtime/helpers/possibleConstructorReturn";import _inherits from"babel-runtime/helpers/inherits";import*as React from"react";import Checkbox from"../checkbox";import Dropdown from"../dropdown";import Menu from"../menu";import Icon from"../icon";import classNames from"classnames";var SelectionCheckboxAll=function(e){function t(e){_classCallCheck(this,t);var n=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.handleSelectAllChagne=function(e){var t=e.target.checked;n.props.onSelect(t?"all":"removeAll",0,null)},n.defaultSelections=e.hideDefaultSelections?[]:[{key:"all",text:e.locale.selectAll,onSelect:function(){}},{key:"invert",text:e.locale.selectInvert,onSelect:function(){}}],n.state={checked:n.getCheckState(e),indeterminate:n.getIndeterminateState(e)},n}return _inherits(t,e),_createClass(t,[{key:"componentDidMount",value:function(){this.subscribe()}},{key:"componentWillReceiveProps",value:function(e){this.setCheckState(e)}},{key:"componentWillUnmount",value:function(){this.unsubscribe&&this.unsubscribe()}},{key:"subscribe",value:function(){var e=this,t=this.props.store;this.unsubscribe=t.subscribe(function(){e.setCheckState(e.props)})}},{key:"checkSelection",value:function(e,t,n){var c=this.props,r=c.store,i=c.getCheckboxPropsByItem,o=c.getRecordKey;return("every"===t||"some"===t)&&(n?e[t](function(e,t){return i(e,t).defaultChecked}):e[t](function(e,t){return r.getState().selectedRowKeys.indexOf(o(e,t))>=0}))}},{key:"setCheckState",value:function(e){var t=this.getCheckState(e),n=this.getIndeterminateState(e);t!==this.state.checked&&this.setState({checked:t}),n!==this.state.indeterminate&&this.setState({indeterminate:n})}},{key:"getCheckState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"every",!1):this.checkSelection(n,"every",!1)||this.checkSelection(n,"every",!0))}},{key:"getIndeterminateState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1):this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1)||this.checkSelection(n,"some",!0)&&!this.checkSelection(n,"every",!0))}},{key:"renderMenus",value:function(e){var t=this;return e.map(function(e,n){return React.createElement(Menu.Item,{key:e.key||n},React.createElement("div",{onClick:function(){t.props.onSelect(e.key,n,e.onSelect)}},e.text))})}},{key:"render",value:function(){var e=this.props,t=e.disabled,n=e.prefixCls,c=e.selections,r=e.getPopupContainer,i=this.state,o=i.checked,s=i.indeterminate,l=n+"-selection",a=null;if(c){var h=Array.isArray(c)?this.defaultSelections.concat(c):this.defaultSelections,u=React.createElement(Menu,{className:l+"-menu",selectedKeys:[]},this.renderMenus(h));a=h.length>0?React.createElement(Dropdown,{overlay:u,getPopupContainer:r},React.createElement("div",{className:l+"-down"},React.createElement(Icon,{type:"down"}))):null}return React.createElement("div",{className:l},React.createElement(Checkbox,{className:classNames(_defineProperty({},l+"-select-all-custom",a)),checked:o,indeterminate:s,disabled:t,onChange:this.handleSelectAllChagne}),a)}}]),t}(React.Component);export default SelectionCheckboxAll;