choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
436 lines (357 loc) • 14.9 kB
JavaScript
"use strict";
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
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 _mobxReact = require("mobx-react");
var _mobx = require("mobx");
var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
var _noop = _interopRequireDefault(require("lodash/noop"));
var _classnames = _interopRequireDefault(require("classnames"));
var _icon = _interopRequireDefault(require("../../../../lib/icon"));
var _utils = require("../../../../lib/configure/utils");
var _TableButtons = _interopRequireDefault(require("./TableButtons"));
var _button = _interopRequireDefault(require("../../button"));
var _TableContext = _interopRequireDefault(require("../TableContext"));
var _enum = require("../../button/enum");
var _form = _interopRequireDefault(require("../../form"));
var _enum2 = require("../../form/enum");
var _localeContext = require("../../locale-context");
var _autobind = _interopRequireDefault(require("../../_util/autobind"));
var _enum3 = require("../../core/enum");
var TableProfessionalBar = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(TableProfessionalBar, _Component);
var _super = (0, _createSuper2["default"])(TableProfessionalBar);
function TableProfessionalBar() {
var _this;
(0, _classCallCheck2["default"])(this, TableProfessionalBar);
_this = _super.apply(this, arguments);
_this.openMore = function (fields) {
var tableStore = _this.context.tableStore;
if (_this.moreFields && _this.moreFields.length) {
_this.moreFields = [];
} else {
_this.moreFields = fields;
}
if (tableStore.node) {
tableStore.node.handleHeightTypeChange();
}
return _this.moreFields;
};
return _this;
}
(0, _createClass2["default"])(TableProfessionalBar, [{
key: "queryFields",
get: function get() {
var queryFields = this.props.queryFields;
return queryFields.filter(function (component) {
return !component.props.hidden;
});
}
}, {
key: "prefixCls",
get: function get() {
var prefixCls = this.props.prefixCls;
var _this$context$tableSt = this.context.tableStore.getProPrefixCls,
getProPrefixCls = _this$context$tableSt === void 0 ? _utils.getProPrefixCls : _this$context$tableSt;
return getProPrefixCls('table', prefixCls);
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
var _this$props = this.props,
queryFieldsLimit = _this$props.queryFieldsLimit,
queryFields = _this$props.queryFields,
queryDataSet = _this$props.queryDataSet,
defaultExpanded = _this$props.defaultExpanded;
if (queryDataSet && queryFields.length && defaultExpanded) {
(0, _mobx.runInAction)(function () {
_this2.moreFields = _this2.createFields(queryFields.filter(function (f) {
return !f.props.hidden;
}).slice(queryFieldsLimit));
});
}
this.processDataSetListener(true);
}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps, _) {
var _this3 = this;
var queryFieldsLimit = nextProps.queryFieldsLimit,
queryFields = nextProps.queryFields,
queryDataSet = nextProps.queryDataSet,
defaultExpanded = nextProps.defaultExpanded;
if (queryDataSet && queryFields.length && (defaultExpanded || this.moreFields && this.moreFields.length)) {
(0, _mobx.runInAction)(function () {
_this3.moreFields = _this3.createFields(queryFields.filter(function (f) {
return !f.props.hidden;
}).slice(queryFieldsLimit));
});
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.processDataSetListener(false);
}
}, {
key: "processDataSetListener",
value: function processDataSetListener(flag) {
var queryDataSet = this.props.queryDataSet;
if (queryDataSet) {
var handler = flag ? queryDataSet.addEventListener : queryDataSet.removeEventListener;
handler.call(queryDataSet, 'validate', this.handleDataSetValidate);
}
}
/**
* queryDataSet 查询前校验事件 触发展开动态字段
* @param dataSet 查询DS
* @param result
*/
}, {
key: "handleDataSetValidate",
value: function () {
var _handleDataSetValidate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
var _this4 = this;
var result, queryFieldsLimit, moreFields;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
result = _ref.result;
queryFieldsLimit = this.props.queryFieldsLimit;
moreFields = this.createFields(this.queryFields.slice(queryFieldsLimit));
_context.next = 5;
return result;
case 5:
if (_context.sent) {
_context.next = 7;
break;
}
(0, _mobx.runInAction)(function () {
_this4.moreFields = moreFields;
});
case 7:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function handleDataSetValidate(_x) {
return _handleDataSetValidate.apply(this, arguments);
}
return handleDataSetValidate;
}()
}, {
key: "handleFieldEnter",
value: function handleFieldEnter() {
this.handleQuery();
}
}, {
key: "handleQuery",
value: function () {
var _handleQuery = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(collapse) {
var _this$props2, dataSet, queryDataSet, _this$props2$onQuery, onQuery;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_this$props2 = this.props, dataSet = _this$props2.dataSet, queryDataSet = _this$props2.queryDataSet, _this$props2$onQuery = _this$props2.onQuery, onQuery = _this$props2$onQuery === void 0 ? _noop["default"] : _this$props2$onQuery;
_context2.t0 = queryDataSet;
if (!_context2.t0) {
_context2.next = 6;
break;
}
_context2.next = 5;
return queryDataSet.validate();
case 5:
_context2.t0 = _context2.sent;
case 6:
if (!_context2.t0) {
_context2.next = 12;
break;
}
_context2.next = 9;
return dataSet.query();
case 9:
if (collapse) {
_context2.next = 12;
break;
}
_context2.next = 12;
return onQuery();
case 12:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function handleQuery(_x2) {
return _handleQuery.apply(this, arguments);
}
return handleQuery;
}()
}, {
key: "getResetButton",
value: function getResetButton() {
var prefixCls = this.prefixCls;
return /*#__PURE__*/_react["default"].createElement(_button["default"], {
key: 'lov_reset_btn',
className: "".concat(prefixCls, "-professional-reset-btn"),
funcType: _enum.FuncType.raised,
onClick: this.handleQueryReset
}, (0, _localeContext.$l)('Table', 'reset_button'));
}
}, {
key: "getMoreFieldsButton",
value: function getMoreFieldsButton(fields) {
var _this5 = this;
var prefixCls = this.prefixCls;
if (fields.length) {
return /*#__PURE__*/_react["default"].createElement(_button["default"], {
className: "".concat(prefixCls, "-professional-query-more"),
funcType: _enum.FuncType.raised,
onClick: function onClick() {
return _this5.openMore(fields);
}
}, (0, _localeContext.$l)('Table', 'more'), this.moreFields && this.moreFields.length ? /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: 'expand_less'
}) : /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: 'expand_more'
}));
}
}
/**
* 注入 onEnterDown 事件
* @param elements
*/
}, {
key: "createFields",
value: function createFields(elements) {
var _this6 = this;
return elements.map(function (element) {
var onEnterDown = element.props.onEnterDown;
if (onEnterDown && (0, _isFunction["default"])(onEnterDown)) {
return element;
}
var props = {
onEnterDown: _this6.handleFieldEnter
};
return /*#__PURE__*/(0, _react.cloneElement)(element, props);
});
}
}, {
key: "getQueryBar",
value: function getQueryBar() {
var _this7 = this;
var _this$props3 = this.props,
queryFieldsLimit = _this$props3.queryFieldsLimit,
queryFields = _this$props3.queryFields,
queryDataSet = _this$props3.queryDataSet,
formProps = _this$props3.formProps;
var prefixCls = this.prefixCls;
if (queryDataSet && queryFields.length) {
var currentFields = /*#__PURE__*/_react["default"].createElement(_form["default"], (0, _extends2["default"])({
dataSet: queryDataSet,
columns: queryFieldsLimit,
labelTooltip: _enum3.Tooltip.overflow,
labelWidth: 80
}, formProps), this.createFields(this.queryFields.slice(0, queryFieldsLimit)), this.moreFields);
var moreFields = this.createFields(this.queryFields.slice(queryFieldsLimit));
var moreFieldsButton = this.getMoreFieldsButton(moreFields);
var noVerticalFlag = false;
var labelLayout = formProps && formProps.labelLayout || (0, _utils.getConfig)('labelLayout');
if (labelLayout !== _enum2.LabelLayout.vertical) {
noVerticalFlag = true;
}
return /*#__PURE__*/_react["default"].createElement("div", {
key: "query_bar",
className: "".concat(prefixCls, "-professional-query-bar")
}, currentFields, /*#__PURE__*/_react["default"].createElement("span", {
className: (0, _classnames["default"])("".concat(prefixCls, "-professional-query-bar-button"), (0, _defineProperty2["default"])({}, "".concat(prefixCls, "-professional-query-bar-button-vertical"), !noVerticalFlag))
}, moreFieldsButton, this.getResetButton(), /*#__PURE__*/_react["default"].createElement(_button["default"], {
color: _enum.ButtonColor.primary,
wait: 500,
onClick: function onClick() {
return _this7.handleQuery();
}
}, (0, _localeContext.$l)('Table', 'query_button'))));
}
}
}, {
key: "handleQueryReset",
value: function handleQueryReset() {
var _this$props4 = this.props,
queryDataSet = _this$props4.queryDataSet,
autoQueryAfterReset = _this$props4.autoQueryAfterReset,
_this$props4$onReset = _this$props4.onReset,
onReset = _this$props4$onReset === void 0 ? _noop["default"] : _this$props4$onReset;
if (queryDataSet) {
var current = queryDataSet.current;
if (current) {
current.reset();
onReset();
if (autoQueryAfterReset) {
this.handleQuery(true);
}
}
}
}
}, {
key: "render",
value: function render() {
var _this$props5 = this.props,
buttons = _this$props5.buttons,
summaryBar = _this$props5.summaryBar;
var prefixCls = this.prefixCls;
var queryBar = this.getQueryBar();
var tableButtons = buttons.length ? /*#__PURE__*/_react["default"].createElement("div", {
key: "professional_toolbar",
className: "".concat(prefixCls, "-professional-toolbar")
}, /*#__PURE__*/_react["default"].createElement(_TableButtons["default"], {
key: "table_buttons",
prefixCls: prefixCls,
buttons: buttons
}, summaryBar)) : /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-toolbar"),
key: "professional_toolbar"
}, summaryBar);
return [queryBar, tableButtons];
}
}], [{
key: "contextType",
get: function get() {
return _TableContext["default"];
}
}]);
return TableProfessionalBar;
}(_react.Component);
TableProfessionalBar.defaultProps = {
queryFieldsLimit: 3,
autoQueryAfterReset: true
};
(0, _tslib.__decorate)([_mobx.observable], TableProfessionalBar.prototype, "moreFields", void 0);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleDataSetValidate", null);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleFieldEnter", null);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleQuery", null);
(0, _tslib.__decorate)([_mobx.action], TableProfessionalBar.prototype, "openMore", void 0);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleQueryReset", null);
TableProfessionalBar = (0, _tslib.__decorate)([_mobxReact.observer], TableProfessionalBar);
var _default = TableProfessionalBar;
exports["default"] = _default;
//# sourceMappingURL=TableProfessionalBar.js.map