choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
331 lines (283 loc) • 12.1 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "TriggerViewMode", {
enumerable: true,
get: function get() {
return _enum2.TriggerViewMode;
}
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
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 _get3 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
var _tslib = require("tslib");
var _react = _interopRequireDefault(require("react"));
var _reactDom = require("react-dom");
var _noop = _interopRequireDefault(require("lodash/noop"));
var _mobx = require("mobx");
var _Trigger = _interopRequireDefault(require("../../../lib/trigger/Trigger"));
var _enum = require("../../../lib/trigger/enum");
var _utils = require("../data-set/utils");
var _TextField2 = require("../text-field/TextField");
var _autobind = _interopRequireDefault(require("../_util/autobind"));
var _icon = _interopRequireDefault(require("../icon"));
var _TaskRunner = _interopRequireDefault(require("../_util/TaskRunner"));
var _placements = _interopRequireDefault(require("./placements"));
var _enum2 = require("./enum");
var _singleton = require("../tooltip/singleton");
var TriggerField = /*#__PURE__*/function (_TextField) {
(0, _inherits2["default"])(TriggerField, _TextField);
var _super = (0, _createSuper2["default"])(TriggerField);
function TriggerField(props, context) {
var _this;
(0, _classCallCheck2["default"])(this, TriggerField);
_this = _super.call(this, props, context);
(0, _mobx.runInAction)(function () {
_this.statePopup = false;
});
return _this;
}
(0, _createClass2["default"])(TriggerField, [{
key: "popup",
get: function get() {
return this.statePopup;
}
}, {
key: "saveTrigger",
value: function saveTrigger(node) {
this.trigger = node;
}
}, {
key: "isValidationMessageHidden",
value: function isValidationMessageHidden(message) {
return (0, _get3["default"])((0, _getPrototypeOf2["default"])(TriggerField.prototype), "isValidationMessageHidden", this).call(this, message) || this.popup;
}
}, {
key: "setPopup",
value: function setPopup(statePopup) {
var _this$props$trigger = this.props.trigger,
trigger = _this$props$trigger === void 0 ? this.getContextConfig('selectTrigger') : _this$props$trigger;
if (statePopup !== this.statePopup) {
this.statePopup = statePopup;
var _this$props$onPopupHi = this.props.onPopupHiddenChange,
onPopupHiddenChange = _this$props$onPopupHi === void 0 ? _noop["default"] : _this$props$onPopupHi;
onPopupHiddenChange(!statePopup);
if (statePopup && !trigger.includes(_enum.Action.hover)) {
(0, _singleton.hide)();
}
}
}
}, {
key: "getRootDomNode",
value: function getRootDomNode() {
return (0, _reactDom.findDOMNode)(this);
}
}, {
key: "getOmitPropsKeys",
value: function getOmitPropsKeys() {
return (0, _get3["default"])((0, _getPrototypeOf2["default"])(TriggerField.prototype), "getOmitPropsKeys", this).call(this).concat(['popupContent', 'popupCls', 'popupStyle', 'popupPlacement', 'editable', 'trigger', 'triggerShowDelay', 'triggerHiddenDelay', 'onPopupHiddenChange', 'getPopupContainer', 'getPopupAlignTarget', 'extraFooterPlacement', 'renderExtraFooter', 'treeDefaultExpandedKeys', 'treeDefaultExpandAll', 'tabIntoPopupContent', 'viewMode']);
}
}, {
key: "getObservableProps",
value: function getObservableProps(props, context) {
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _get3["default"])((0, _getPrototypeOf2["default"])(TriggerField.prototype), "getObservableProps", this).call(this, props, context)), {}, {
viewMode: props.viewMode
});
}
}, {
key: "getPopupProps",
value: function getPopupProps() {
return {
setValue: this.setValue.bind(this),
setPopup: this.setPopup.bind(this),
content: this.getPopupContent()
};
}
}, {
key: "getPopupClassName",
value: function getPopupClassName(defaultClassName) {
return defaultClassName;
}
}, {
key: "getPopupWrapper",
value: function getPopupWrapper() {
var trigger = this.trigger;
if (trigger) {
return trigger.getPopupWrapper();
}
}
}, {
key: "renderPopupContent",
value: function renderPopupContent() {
var popupContent = this.props.popupContent;
if (popupContent === undefined) {
return this.getPopupContent();
}
if (popupContent instanceof Function) {
return popupContent(this.getPopupProps());
}
return popupContent;
}
}, {
key: "getDefaultAction",
value: function getDefaultAction() {
return [_enum.Action.focus, _enum.Action.click];
}
}, {
key: "getWrappedEditor",
value: function getWrappedEditor(renderedValue) {
var prefixCls = this.prefixCls,
_this$props = this.props,
popupCls = _this$props.popupCls,
popupStyle = _this$props.popupStyle,
popupPlacement = _this$props.popupPlacement,
hidden = _this$props.hidden,
_this$props$trigger2 = _this$props.trigger,
trigger = _this$props$trigger2 === void 0 ? this.getDefaultAction() : _this$props$trigger2,
triggerShowDelay = _this$props.triggerShowDelay,
triggerHiddenDelay = _this$props.triggerHiddenDelay,
getPopupContainer = _this$props.getPopupContainer,
tabIntoPopupContent = _this$props.tabIntoPopupContent,
_this$props$getPopupA = _this$props.getPopupAlignTarget,
getPopupAlignTarget = _this$props$getPopupA === void 0 ? this.getRootDomNode : _this$props$getPopupA;
return /*#__PURE__*/_react["default"].createElement(_Trigger["default"], {
ref: this.saveTrigger,
action: this.readOnly || this.disabled ? [] : trigger,
focusDelay: triggerShowDelay,
blurDelay: triggerHiddenDelay,
mouseEnterDelay: triggerShowDelay,
mouseLeaveDelay: triggerHiddenDelay,
prefixCls: prefixCls,
popupCls: this.getPopupClassName(popupCls),
popupStyle: popupStyle,
popupContent: this.renderPopupContent,
popupPlacement: popupPlacement,
popupHidden: hidden || !this.popup,
builtinPlacements: _placements["default"],
onPopupAnimateAppear: this.handlePopupAnimateAppear,
onPopupAnimateEnd: this.handlePopupAnimateEnd,
onPopupHiddenChange: this.handlePopupHiddenChange,
getPopupStyleFromAlign: this.getPopupStyleFromAlign,
getRootDomNode: getPopupAlignTarget,
getPopupContainer: getPopupContainer,
tabIntoPopupContent: tabIntoPopupContent,
childrenProps: renderedValue,
getContextConfig: this.getContextConfig
}, this.getEditor);
}
}, {
key: "getWrapperClassNames",
value: function getWrapperClassNames() {
var _get2, _ref;
var prefixCls = this.prefixCls;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (_get2 = (0, _get3["default"])((0, _getPrototypeOf2["default"])(TriggerField.prototype), "getWrapperClassNames", this)).call.apply(_get2, [this].concat(args, [(_ref = {}, (0, _defineProperty2["default"])(_ref, "".concat(prefixCls, "-expand"), this.popup), (0, _defineProperty2["default"])(_ref, "".concat(prefixCls, "-not-editable"), !this.disabled && !this.editable), _ref)]));
}
}, {
key: "getDefaultSuffix",
value: function getDefaultSuffix() {
var prefixCls = this.prefixCls;
return /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: this.getTriggerIconFont(),
className: "".concat(prefixCls, "-trigger")
});
}
}, {
key: "handleTagAnimateEnd",
value: function handleTagAnimateEnd() {
this.forcePopupAlign();
}
}, {
key: "handlePopupMouseDown",
value: function handlePopupMouseDown(e) {
e.preventDefault();
var _this$props$onMouseDo = this.props.onMouseDown,
onMouseDown = _this$props$onMouseDo === void 0 ? _noop["default"] : _this$props$onMouseDo;
onMouseDown(e);
}
}, {
key: "handlePopupHiddenChange",
value: function handlePopupHiddenChange(hidden) {
this.setPopup(!hidden);
}
}, {
key: "forcePositionChanged",
value: function forcePositionChanged() {
this.forcePopupAlign();
}
}, {
key: "forcePopupAlign",
value: function forcePopupAlign() {
if (this.trigger) {
this.trigger.forcePopupAlign();
}
}
}, {
key: "expand",
value: function expand() {
var _this2 = this;
var popupTask = (0, _utils.getIf)(this, 'popupTask', function () {
return new _TaskRunner["default"]();
});
popupTask.cancel();
if (!this.readOnly && !this.popup) {
popupTask.delay(this.props.triggerShowDelay, function () {
_this2.setPopup(true);
});
}
}
}, {
key: "collapse",
value: function collapse() {
var _this3 = this;
var popupTask = (0, _utils.getIf)(this, 'popupTask', function () {
return new _TaskRunner["default"]();
});
popupTask.cancel();
if (!this.readOnly && this.popup) {
var element = this.element; // 如果当前焦点在popup中,将焦点换给输入框
var triggerHiddenDelay = this.props.triggerHiddenDelay;
if (this.isFocused && element !== document.activeElement) {
element.focus();
var triggerShowDelay = this.props.triggerShowDelay;
triggerHiddenDelay += triggerShowDelay;
}
popupTask.delay(triggerHiddenDelay, function () {
_this3.setPopup(false);
});
}
}
}]);
return TriggerField;
}(_TextField2.TextField);
exports["default"] = TriggerField;
TriggerField.displayName = 'TriggerField';
TriggerField.defaultProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _TextField2.TextField.defaultProps), {}, {
suffixCls: 'trigger',
clearButton: true,
popupPlacement: 'bottomLeft',
triggerShowDelay: 150,
triggerHiddenDelay: 50,
viewMode: _enum2.TriggerViewMode.popup
});
(0, _tslib.__decorate)([_mobx.observable], TriggerField.prototype, "statePopup", void 0);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "saveTrigger", null);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "isValidationMessageHidden", null);
(0, _tslib.__decorate)([_mobx.action], TriggerField.prototype, "setPopup", null);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "getRootDomNode", null);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "getPopupWrapper", null);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "renderPopupContent", null);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "handleTagAnimateEnd", null);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "handlePopupMouseDown", null);
(0, _tslib.__decorate)([_autobind["default"]], TriggerField.prototype, "handlePopupHiddenChange", null);
//# sourceMappingURL=TriggerField.js.map