choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
188 lines (150 loc) • 5.55 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _react = _interopRequireWildcard(require("react"));
var _Button = _interopRequireDefault(require("../button/Button"));
var _SelectTrigger = _interopRequireDefault(require("../rc-components/select/SelectTrigger"));
var _menu = require("../rc-components/menu");
var _util = require("../rc-components/select/util");
var _util2 = require("./util");
var _enum = require("../_util/enum");
var _configure = require("../configure");
function _createSuper(Derived) {
function isNativeReflectConstruct() {
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
if (Reflect.construct.sham) return false;
if (typeof Proxy === "function") return true;
try {
Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
return true;
} catch (e) {
return false;
}
}
return function () {
var Super = (0, _getPrototypeOf2["default"])(Derived),
result;
if (isNativeReflectConstruct()) {
var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget);
} else {
result = Super.apply(this, arguments);
}
return (0, _possibleConstructorReturn2["default"])(this, result);
};
}
var ColumnFilter =
/*#__PURE__*/
function (_Component) {
(0, _inherits2["default"])(ColumnFilter, _Component);
var _super = _createSuper(ColumnFilter);
function ColumnFilter() {
var _this;
(0, _classCallCheck2["default"])(this, ColumnFilter);
_this = _super.apply(this, arguments);
_this.state = {
open: false
};
_this.onMenuSelect = function (item) {
item.item.props.value.hidden = false;
_this.fireChange(item);
};
_this.onMenuDeselect = function (item) {
item.item.props.value.hidden = true;
_this.fireChange(item);
};
_this.onDropdownVisibleChange = function (open) {
var _assertThisInitialize = (0, _assertThisInitialized2["default"])(_this),
state = _assertThisInitialize.state;
if (state.open !== open) {
_this.setState({
open: open
});
}
};
return _this;
}
(0, _createClass2["default"])(ColumnFilter, [{
key: "render",
value: function render() {
var _this$props = this.props,
prefixCls = _this$props.prefixCls,
getPopupContainer = _this$props.getPopupContainer;
var open = this.state.open;
return _react["default"].createElement("div", {
className: "".concat(prefixCls, "-columns-chooser")
}, _react["default"].createElement(_SelectTrigger["default"], {
prefixCls: (0, _configure.getPrefixCls)('select'),
showAction: ['click'],
options: this.getOptions(),
value: this.getVisibleColumns(),
getPopupContainer: getPopupContainer,
multiple: true,
onDropdownVisibleChange: this.onDropdownVisibleChange,
onMenuSelect: this.onMenuSelect,
onMenuDeselect: this.onMenuDeselect,
visible: open,
popupPlacement: "bottomRight",
dropdownMatchSelectWidth: false,
dropdownStyle: {
minWidth: 187
}
}, _react["default"].createElement(_Button["default"], {
shape: "circle",
icon: "view_column",
size: _enum.Size.small
})));
}
}, {
key: "fireChange",
value: function fireChange(item) {
var onColumnFilterChange = this.props.onColumnFilterChange;
if (onColumnFilterChange) {
onColumnFilterChange(item);
}
}
}, {
key: "getOptions",
value: function getOptions() {
var columns = this.props.columns;
var options = [];
(columns || []).forEach(function (column, i) {
var title = column.title,
notDisplay = column.notDisplay,
disableClick = column.disableClick;
if (title && !notDisplay) {
options.push(_react["default"].createElement(_menu.Item, {
disabled: disableClick,
style: _util.UNSELECTABLE_STYLE,
attribute: _util.UNSELECTABLE_ATTRIBUTE,
value: column,
key: (0, _util2.getColumnKey)(column, i)
}, title));
}
});
return options;
}
}, {
key: "getVisibleColumns",
value: function getVisibleColumns() {
var columns = this.props.columns;
return (columns || []).filter(function (column) {
return !column.hidden;
});
}
}]);
return ColumnFilter;
}(_react.Component);
exports["default"] = ColumnFilter;
ColumnFilter.displayName = 'ColumnFilter';
//# sourceMappingURL=ColumnFilter.js.map