choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
216 lines (179 loc) • 7.11 kB
JavaScript
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
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 _tslib = require("tslib");
var _react = _interopRequireWildcard(require("react"));
var _mobx = require("mobx");
var _mobxReact = require("mobx-react");
var _index = _interopRequireWildcard(require("../../../../lib/rc-components/menu/index"));
var _Button = _interopRequireDefault(require("../../button/Button"));
var _Dropdown = _interopRequireDefault(require("../../dropdown/Dropdown"));
var _enum = require("../../core/enum");
var _enum2 = require("../../button/enum");
var _TableContext = _interopRequireDefault(require("../TableContext"));
var _utils = require("../utils");
var _enum3 = require("../../dropdown/enum");
var _EventManager = require("../../_util/EventManager");
var _autobind = _interopRequireDefault(require("../../_util/autobind"));
function handleMenuClick(_ref) {
var domEvent = _ref.domEvent;
domEvent.preventDefault();
}
var ColumnFilter = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(ColumnFilter, _Component);
var _super = (0, _createSuper2["default"])(ColumnFilter);
function ColumnFilter(props, context) {
var _this;
(0, _classCallCheck2["default"])(this, ColumnFilter);
_this = _super.call(this, props, context);
_this.setDropDownHidden(true);
return _this;
}
(0, _createClass2["default"])(ColumnFilter, [{
key: "saveMenu",
value: function saveMenu(node) {
this.menu = node;
}
}, {
key: "handleHiddenChange",
value: function handleHiddenChange(hidden) {
this.setDropDownHidden(hidden);
}
}, {
key: "handleKeyDown",
value: function handleKeyDown(e) {
if (this.menu && this.menu.onKeyDown(e)) {
(0, _EventManager.stopEvent)(e);
}
}
}, {
key: "setDropDownHidden",
value: function setDropDownHidden(hidden) {
this.hidden = hidden;
}
}, {
key: "getPrefixCls",
value: function getPrefixCls() {
var prefixCls = this.props.prefixCls;
return "".concat(prefixCls, "-columns-chooser");
}
}, {
key: "render",
value: function render() {
var prefixCls = this.getPrefixCls();
return /*#__PURE__*/_react["default"].createElement("div", {
className: prefixCls,
onFocus: _EventManager.stopPropagation,
onMouseDown: _EventManager.stopPropagation,
tabIndex: -1
}, /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
placement: _enum3.Placements.bottomRight,
overlay: this.getMenu,
hidden: this.hidden,
onHiddenChange: this.handleHiddenChange
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
funcType: _enum2.FuncType.flat,
icon: "view_column",
size: _enum.Size.small,
onKeyDown: this.handleKeyDown
})));
}
}, {
key: "handleMenuSelect",
value: function handleMenuSelect(_ref2) {
var value = _ref2.item.props.value;
value.hidden = false;
}
}, {
key: "handleMenuUnSelect",
value: function handleMenuUnSelect(_ref3) {
var value = _ref3.item.props.value;
value.hidden = true;
}
}, {
key: "getMenu",
value: function getMenu() {
var prefixCls = this.props.prefixCls;
var selfPrefixCls = this.getPrefixCls();
var _this$context = this.context,
tableStore = _this$context.tableStore,
dataSet = _this$context.dataSet,
aggregation = _this$context.aggregation;
var allLeafs = tableStore.columnGroups.allLeafs;
var selectedKeys = [];
var columns = [];
allLeafs.forEach(function (_ref4) {
var column = _ref4.column,
key = _ref4.key,
headerGroup = _ref4.headerGroup;
if (column.hideable) {
var header = (0, _utils.getHeader)((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, column), {}, {
dataSet: dataSet,
aggregation: aggregation,
group: headerGroup
}));
if (header) {
if (!column.hidden) {
selectedKeys.push(key);
}
columns.push([column, header, key]);
}
}
});
return /*#__PURE__*/_react["default"].createElement(_index["default"], {
ref: this.saveMenu,
multiple: true,
defaultActiveFirst: true,
prefixCls: "".concat(prefixCls, "-dropdown-menu"),
className: "".concat(selfPrefixCls, "-dropdown-menu"),
selectedKeys: selectedKeys,
onSelect: this.handleMenuSelect,
onDeselect: this.handleMenuUnSelect,
onClick: handleMenuClick
}, this.getOptions(columns));
}
}, {
key: "getOptions",
value: function getOptions(columns) {
return columns.map(function (_ref5) {
var _ref6 = (0, _slicedToArray2["default"])(_ref5, 3),
column = _ref6[0],
header = _ref6[1],
key = _ref6[2];
return /*#__PURE__*/_react["default"].createElement(_index.Item, {
key: key,
value: column
}, /*#__PURE__*/_react["default"].createElement("span", null, header));
});
}
}], [{
key: "contextType",
get: function get() {
return _TableContext["default"];
}
}]);
return ColumnFilter;
}(_react.Component);
ColumnFilter.displayName = 'ColumnFilter';
(0, _tslib.__decorate)([_mobx.observable], ColumnFilter.prototype, "hidden", void 0);
(0, _tslib.__decorate)([_autobind["default"]], ColumnFilter.prototype, "saveMenu", null);
(0, _tslib.__decorate)([_autobind["default"]], ColumnFilter.prototype, "handleHiddenChange", null);
(0, _tslib.__decorate)([_autobind["default"]], ColumnFilter.prototype, "handleKeyDown", null);
(0, _tslib.__decorate)([_mobx.action], ColumnFilter.prototype, "setDropDownHidden", null);
(0, _tslib.__decorate)([_mobx.action], ColumnFilter.prototype, "handleMenuSelect", null);
(0, _tslib.__decorate)([_mobx.action], ColumnFilter.prototype, "handleMenuUnSelect", null);
(0, _tslib.__decorate)([_autobind["default"]], ColumnFilter.prototype, "getMenu", null);
ColumnFilter = (0, _tslib.__decorate)([_mobxReact.observer], ColumnFilter);
var _default = ColumnFilter;
exports["default"] = _default;
//# sourceMappingURL=ColumnFilter.js.map
;