choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
257 lines (207 loc) • 9.21 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"] = exports.SelectionsPosition = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
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 _defaultTo = _interopRequireDefault(require("lodash/defaultTo"));
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
var _mobx = require("mobx");
var _mobxReact = require("mobx-react");
var _utils = require("../../../lib/configure/utils");
var _tag = _interopRequireDefault(require("../../../lib/tag"));
var _UnitConvertor = require("../../../lib/_util/UnitConvertor");
var _animate = _interopRequireDefault(require("../animate"));
var _icon = _interopRequireDefault(require("../icon"));
var _localeContext = require("../locale-context");
var _autobind = _interopRequireDefault(require("../_util/autobind"));
var SelectionsPosition;
exports.SelectionsPosition = SelectionsPosition;
(function (SelectionsPosition) {
SelectionsPosition["side"] = "side";
SelectionsPosition["below"] = "below";
})(SelectionsPosition || (exports.SelectionsPosition = SelectionsPosition = {}));
var SelectionList = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(SelectionList, _Component);
var _super = (0, _createSuper2["default"])(SelectionList);
function SelectionList() {
var _this;
(0, _classCallCheck2["default"])(this, SelectionList);
_this = _super.apply(this, arguments);
_this.prefixCls = (0, _utils.getProPrefixCls)('modal');
_this.unSelect = function (record) {
var _this$props = _this.props,
dataSet = _this$props.dataSet,
treeFlag = _this$props.treeFlag;
if (treeFlag === 'Y') {
dataSet.treeUnSelect(record);
} else {
dataSet.unSelect(record);
}
if (!(0, _isUndefined["default"])(record.parent)) {
dataSet.unSelect(record.parent);
}
};
_this.renderBelow = function () {
var _this$props2 = _this.props,
dataSet = _this$props2.dataSet,
treeFlag = _this$props2.treeFlag,
_this$props2$valueFie = _this$props2.valueField,
valueField = _this$props2$valueFie === void 0 ? '' : _this$props2$valueFie,
_this$props2$textFiel = _this$props2.textField,
textField = _this$props2$textFiel === void 0 ? '' : _this$props2$textFiel;
var records = treeFlag === 'Y' ? dataSet.treeSelected : dataSet.selected;
if ((0, _isEmpty["default"])(records)) {
return null;
}
var classString = "".concat(_this.prefixCls, "-selection-list-below");
var animateChildren = _this.getRecords(records).map(function (record) {
return /*#__PURE__*/_react["default"].createElement("li", {
key: record.get(valueField),
className: "".concat(classString, "-item")
}, /*#__PURE__*/_react["default"].createElement(_tag["default"], {
closable: true,
onClose: function onClose() {
_this.unSelect(record);
}
}, /*#__PURE__*/_react["default"].createElement("span", null, record.get(textField))));
});
return /*#__PURE__*/_react["default"].createElement("div", {
className: classString
}, /*#__PURE__*/_react["default"].createElement("p", {
className: "".concat(classString, "-intro")
}, (0, _localeContext.$l)('Lov', 'selection_tips', {
count: /*#__PURE__*/_react["default"].createElement("b", {
key: "count"
}, records.length)
})), /*#__PURE__*/_react["default"].createElement(_animate["default"], {
className: "".concat(classString, "-list"),
transitionAppear: true,
transitionName: "fade",
component: "ul"
}, animateChildren));
};
return _this;
}
(0, _createClass2["default"])(SelectionList, [{
key: "contentRef",
value: function contentRef(node) {
this.selectionNode = node;
}
}, {
key: "getRecords",
value: function getRecords(records) {
return (0, _sortBy["default"])(records, function (item) {
return (0, _defaultTo["default"])(item.selectedTimestamp, -1);
});
}
}, {
key: "renderSide",
value: function renderSide() {
var _this2 = this;
var _this$props3 = this.props,
dataSet = _this$props3.dataSet,
treeFlag = _this$props3.treeFlag,
_this$props3$valueFie = _this$props3.valueField,
valueField = _this$props3$valueFie === void 0 ? '' : _this$props3$valueFie,
_this$props3$textFiel = _this$props3.textField,
textField = _this$props3$textFiel === void 0 ? '' : _this$props3$textFiel,
_this$props3$selectio = _this$props3.selectionProps,
selectionProps = _this$props3$selectio === void 0 ? {} : _this$props3$selectio;
var nodeRenderer = selectionProps.nodeRenderer,
placeholder = selectionProps.placeholder;
var records = treeFlag === 'Y' ? dataSet.treeSelected : dataSet.selected;
var isEmptyList = (0, _isEmpty["default"])(records);
if (isEmptyList && !placeholder) {
return null;
}
var classString = "".concat(this.prefixCls, "-selection-list");
var animateChildren = this.getRecords(records).map(function (record) {
return /*#__PURE__*/_react["default"].createElement("li", {
key: record.get(valueField),
className: "".concat(classString, "-item")
}, nodeRenderer ? (0, _mobx.toJS)(nodeRenderer(record)) : /*#__PURE__*/_react["default"].createElement("span", null, record.get(textField)), /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "cancel",
onClick: function onClick() {
_this2.unSelect(record);
}
}));
});
return /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(classString, "-container"),
ref: this.contentRef
}, /*#__PURE__*/_react["default"].createElement("p", {
className: "".concat(classString, "-intro")
}, isEmptyList ? placeholder : (0, _localeContext.$l)('Lov', 'selection_tips', {
count: /*#__PURE__*/_react["default"].createElement("b", {
key: "count"
}, records.length)
})), /*#__PURE__*/_react["default"].createElement(_animate["default"], {
className: "".concat(classString, "-list"),
transitionAppear: true,
transitionName: "slide-right",
component: "ul"
}, animateChildren));
}
}, {
key: "updateModalStyle",
value: function updateModalStyle() {
if (!this.modalNode && this.selectionNode) {
var offsetParent = this.selectionNode.offsetParent;
if (this.selectionNode && offsetParent && offsetParent.parentNode) {
var parentNode = offsetParent.parentNode;
this.modalNode = parentNode;
var _parentNode$getBoundi = parentNode.getBoundingClientRect(),
width = _parentNode$getBoundi.width;
(0, _extends2["default"])(parentNode.style, {
width: (0, _UnitConvertor.pxToRem)(width + 300)
});
}
} else if (this.modalNode && !this.selectionNode) {
(0, _extends2["default"])(this.modalNode.style, {
width: (0, _UnitConvertor.pxToRem)(this.modalNode.offsetWidth - 300)
});
this.modalNode = null;
}
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
this.updateModalStyle();
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {
this.updateModalStyle();
}
}, {
key: "render",
value: function render() {
var selectionsPosition = this.props.selectionsPosition;
if (selectionsPosition === SelectionsPosition.side) {
return this.renderSide();
}
if (selectionsPosition === SelectionsPosition.below) {
return this.renderBelow();
}
return null;
}
}]);
return SelectionList;
}(_react.Component);
(0, _tslib.__decorate)([_autobind["default"]], SelectionList.prototype, "contentRef", null);
(0, _tslib.__decorate)([_mobx.action], SelectionList.prototype, "unSelect", void 0);
SelectionList = (0, _tslib.__decorate)([_mobxReact.observer], SelectionList);
var _default = SelectionList;
exports["default"] = _default;
//# sourceMappingURL=SelectionList.js.map