UNPKG

dtd

Version:

根据数梦工场视觉规范打造的组件库,感谢react-components和ant design

1 lines 6.17 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _defineProperty2=require("babel-runtime/helpers/defineProperty"),_defineProperty3=_interopRequireDefault(_defineProperty2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_createClass2=require("babel-runtime/helpers/createClass"),_createClass3=_interopRequireDefault(_createClass2),_possibleConstructorReturn2=require("babel-runtime/helpers/possibleConstructorReturn"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require("babel-runtime/helpers/inherits"),_inherits3=_interopRequireDefault(_inherits2),_react=require("react"),React=_interopRequireWildcard(_react),_reactDom=require("react-dom"),ReactDOM=_interopRequireWildcard(_reactDom),_rcMenu=require("rc-menu"),_rcMenu2=_interopRequireDefault(_rcMenu),_domClosest=require("dom-closest"),_domClosest2=_interopRequireDefault(_domClosest),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames),_dropdown=require("../dropdown"),_dropdown2=_interopRequireDefault(_dropdown),_icon=require("../icon"),_icon2=_interopRequireDefault(_icon),_checkbox=require("../checkbox"),_checkbox2=_interopRequireDefault(_checkbox),_radio=require("../radio"),_radio2=_interopRequireDefault(_radio),_FilterDropdownMenuWrapper=require("./FilterDropdownMenuWrapper"),_FilterDropdownMenuWrapper2=_interopRequireDefault(_FilterDropdownMenuWrapper);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var FilterMenu=function(e){function r(e){(0,_classCallCheck3.default)(this,r);var s=(0,_possibleConstructorReturn3.default)(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e));s.setNeverShown=function(e){var t=ReactDOM.findDOMNode(s);!!(0,_domClosest2.default)(t,".dt-table-scroll")&&(s.neverShown=!!e.fixed)},s.setSelectedKeys=function(e){var t=e.selectedKeys;s.setState({selectedKeys:t})},s.handleClearFilters=function(){s.setState({selectedKeys:[]},s.handleConfirm)},s.handleConfirm=function(){s.setVisible(!1),s.confirmFilter()},s.onVisibleChange=function(e){s.setVisible(e),e||s.confirmFilter()},s.handleMenuItemClick=function(e){if(!(e.keyPath.length<=1)){var t=s.state.keyPathOfSelectedItem;0<=s.state.selectedKeys.indexOf(e.key)?delete t[e.key]:t[e.key]=e.keyPath,s.setState({keyPathOfSelectedItem:t})}},s.renderFilterIcon=function(){var e=s.props,t=e.column,r=e.locale,n=e.prefixCls,l=t.filterIcon,i=0<s.props.selectedKeys.length?n+"-selected":"";return l?React.cloneElement(l,{title:r.filterTitle,className:(0,_classnames2.default)(l.className,(0,_defineProperty3.default)({},n+"-icon",!0))}):React.createElement(_icon2.default,{title:r.filterTitle,type:"filter",className:i})};var t="filterDropdownVisible"in e.column&&e.column.filterDropdownVisible;return s.state={selectedKeys:e.selectedKeys,keyPathOfSelectedItem:{},visible:t},s}return(0,_inherits3.default)(r,e),(0,_createClass3.default)(r,[{key:"componentDidMount",value:function(){var e=this.props.column;this.setNeverShown(e)}},{key:"componentWillReceiveProps",value:function(e){var t=e.column;this.setNeverShown(t);var r={};"selectedKeys"in e&&(r.selectedKeys=e.selectedKeys),"filterDropdownVisible"in t&&(r.visible=t.filterDropdownVisible),0<Object.keys(r).length&&this.setState(r)}},{key:"setVisible",value:function(e){var t=this.props.column;"filterDropdownVisible"in t||this.setState({visible:e}),t.onFilterDropdownVisibleChange&&t.onFilterDropdownVisibleChange(e)}},{key:"confirmFilter",value:function(){this.state.selectedKeys!==this.props.selectedKeys&&this.props.confirmFilter(this.props.column,this.state.selectedKeys)}},{key:"renderMenuItem",value:function(e){var t=this.props.column,r=!("filterMultiple"in t)||t.filterMultiple?React.createElement(_checkbox2.default,{checked:0<=this.state.selectedKeys.indexOf(e.value.toString())}):React.createElement(_radio2.default,{checked:0<=this.state.selectedKeys.indexOf(e.value.toString())});return React.createElement(_rcMenu.Item,{key:e.value},r,React.createElement("span",null,e.text))}},{key:"hasSubMenu",value:function(){var e=this.props.column.filters;return(void 0===e?[]:e).some(function(e){return!!(e.children&&0<e.children.length)})}},{key:"renderMenus",value:function(e){var n=this;return e.map(function(t){if(t.children&&0<t.children.length){var r=n.state.keyPathOfSelectedItem,e=Object.keys(r).some(function(e){return 0<=r[e].indexOf(t.value)})?n.props.dropdownPrefixCls+"-submenu-contain-selected":"";return React.createElement(_rcMenu.SubMenu,{title:t.text,className:e,key:t.value.toString()},n.renderMenus(t.children))}return n.renderMenuItem(t)})}},{key:"render",value:function(){var e=this.props,t=e.column,r=e.locale,n=e.prefixCls,l=e.dropdownPrefixCls,i=e.getPopupContainer,s=!("filterMultiple"in t)||t.filterMultiple,o=(0,_classnames2.default)((0,_defineProperty3.default)({},l+"-menu-without-submenu",!this.hasSubMenu())),a=t.filterDropdown?React.createElement(_FilterDropdownMenuWrapper2.default,null,t.filterDropdown):React.createElement(_FilterDropdownMenuWrapper2.default,{className:n+"-dropdown"},React.createElement(_rcMenu2.default,{multiple:s,onClick:this.handleMenuItemClick,prefixCls:l+"-menu",className:o,onSelect:this.setSelectedKeys,onDeselect:this.setSelectedKeys,selectedKeys:this.state.selectedKeys},this.renderMenus(t.filters)),React.createElement("div",{className:n+"-dropdown-btns"},React.createElement("a",{className:n+"-dropdown-link confirm",onClick:this.handleConfirm},r.filterConfirm),React.createElement("a",{className:n+"-dropdown-link clear",onClick:this.handleClearFilters},r.filterReset)));return React.createElement(_dropdown2.default,{trigger:["click"],overlay:a,visible:!this.neverShown&&this.state.visible,onVisibleChange:this.onVisibleChange,getPopupContainer:i,forceRender:!0},this.renderFilterIcon())}}]),r}(React.Component);(exports.default=FilterMenu).defaultProps={handleFilter:function(){},column:{}},module.exports=exports.default;