choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
236 lines (195 loc) • 8.13 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 _icon = _interopRequireDefault(require("../../../../lib/icon"));
var _index = _interopRequireWildcard(require("../../../../lib/rc-components/menu/index"));
var _enum = require("../../../../lib/trigger/enum");
var _Dropdown = _interopRequireDefault(require("../../dropdown/Dropdown"));
var _TableContext = _interopRequireDefault(require("../TableContext"));
var _enum2 = require("../../dropdown/enum");
var _Column = _interopRequireDefault(require("../Column"));
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: "render",
value: function render() {
var prefixCls = this.props.prefixCls;
return /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-columns-chooser"),
onFocus: _EventManager.stopPropagation,
onMouseDown: _EventManager.stopPropagation,
tabIndex: -1
}, /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
trigger: [_enum.Action.click],
placement: _enum2.Placements.bottomRight,
overlay: this.getMenu,
hidden: this.hidden,
onHiddenChange: this.handleHiddenChange
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "view_column",
onClick: this.handleKeyDown,
style: {
cursor: 'pointer'
}
})));
}
}, {
key: "handleMenuSelect",
value: function handleMenuSelect(_ref2) {
var value = _ref2.item.props.value;
var node = this.context.tableStore.node;
value.hidden = false;
node._cacheCells = null;
node.forceUpdate();
}
}, {
key: "handleMenuUnSelect",
value: function handleMenuUnSelect(_ref3) {
var value = _ref3.item.props.value;
var node = this.context.tableStore.node;
value.hidden = true;
node._cacheCells = null;
node.forceUpdate();
}
}, {
key: "getMenu",
value: function getMenu() {
var _this$context$tableSt = this.context.tableStore,
proPrefixCls = _this$context$tableSt.proPrefixCls,
originalChildren = _this$context$tableSt.originalChildren,
originalColumns = _this$context$tableSt.originalColumns;
var selfPrefixCls = "".concat(proPrefixCls, "-columns-chooser");
var selectedKeys = [];
var menuColumns = [];
if (originalColumns && originalColumns.length) {
originalColumns.forEach(function (column) {
var newColumn = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _Column["default"].defaultProps), column);
var hideable = newColumn.hideable,
hidden = newColumn.hidden,
title = newColumn.title,
dataIndex = newColumn.dataIndex,
key = newColumn.key;
if (hideable && title) {
var keys = key || dataIndex;
if (!hidden) {
selectedKeys.push(keys);
}
var header = typeof title === 'function' ? title() : title;
menuColumns.push([column, header, keys]);
}
});
} else if (originalChildren && originalChildren.length) {
// todo children hidden
originalChildren.forEach(function (column) {
if ( /*#__PURE__*/_react["default"].isValidElement(column)) {
var columnChildren = column.props.children;
var _column$props = column.props,
hideable = _column$props.hideable,
hidden = _column$props.hidden;
if (hideable && columnChildren[0]) {
var key = columnChildren[1].props.dataKey;
if (!hidden) {
selectedKeys.push(key);
}
menuColumns.push([column.props, columnChildren[0].props.children, key]);
}
}
});
}
return /*#__PURE__*/_react["default"].createElement(_index["default"], {
ref: this.saveMenu,
multiple: true,
defaultActiveFirst: true,
prefixCls: "".concat(proPrefixCls, "-dropdown-menu"),
className: "".concat(selfPrefixCls, "-dropdown-menu"),
selectedKeys: selectedKeys,
onSelect: this.handleMenuSelect,
onDeselect: this.handleMenuUnSelect,
onClick: handleMenuClick
}, this.getOptions(menuColumns));
}
}, {
key: "getOptions",
value: function getOptions(columns) {
return columns.map(function (_ref4) {
var _ref5 = (0, _slicedToArray2["default"])(_ref4, 3),
column = _ref5[0],
header = _ref5[1],
key = _ref5[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)([_autobind["default"], _mobx.action], ColumnFilter.prototype, "handleMenuSelect", null);
(0, _tslib.__decorate)([_autobind["default"], _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
;