UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

199 lines (172 loc) 6.94 kB
import _extends from "@babel/runtime/helpers/extends"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import _get from "@babel/runtime/helpers/get"; import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf"; import _inherits from "@babel/runtime/helpers/inherits"; import _createSuper from "@babel/runtime/helpers/createSuper"; import { __decorate } from "tslib"; import React from 'react'; import { observer } from 'mobx-react'; import { toJS } from 'mobx'; import classNames from 'classnames'; import noop from 'lodash/noop'; import { pxToRem } from '../../../es/_util/UnitConvertor'; import C7NRate from '../../../es/rate'; import { FIELD_SUFFIX } from '../form/utils'; import { FormField } from '../field/FormField'; import { renderValidationMessage } from '../field/utils'; import Icon from '../icon'; import { LabelLayout, ShowValidation } from '../form/enum'; import autobind from '../_util/autobind'; import { hide, show } from '../tooltip/singleton'; import { ShowHelp } from '../field/enum'; var Rate = /*#__PURE__*/function (_FormField) { _inherits(Rate, _FormField); var _super = _createSuper(Rate); function Rate() { var _this; _classCallCheck(this, Rate); _this = _super.apply(this, arguments); _this.onChange = function (value) { _this.setValue(value); }; return _this; } _createClass(Rate, [{ key: "hasFloatLabel", get: function get() { var labelLayout = this.labelLayout; if (labelLayout) { return [LabelLayout["float"], LabelLayout.placeholder].includes(labelLayout); } return false; } }, { key: "renderValidationResult", value: function renderValidationResult(validationResult) { var validationMessage = this.getValidationMessage(validationResult); var _this$context = this.context, labelLayout = _this$context.labelLayout, showValidation = _this$context.showValidation, getProPrefixCls = _this$context.getProPrefixCls; if (validationMessage) { var showIcon = !(labelLayout && [LabelLayout["float"], LabelLayout.placeholder].includes(labelLayout) || showValidation === ShowValidation.newLine); return renderValidationMessage(validationMessage, showIcon, getProPrefixCls); } } }, { key: "handleHelpMouseEnter", value: function handleHelpMouseEnter(e) { var _this$context2 = this.context, getTooltipTheme = _this$context2.getTooltipTheme, getTooltipPlacement = _this$context2.getTooltipPlacement; var helpTooltipProps = this.helpTooltipProps; var helpTooltipCls = "".concat(this.getContextConfig('proPrefixCls'), "-tooltip-popup-help"); if (helpTooltipProps && helpTooltipProps.popupClassName) { helpTooltipCls = helpTooltipCls.concat(' ', helpTooltipProps.popupClassName); } show(e.currentTarget, _objectSpread(_objectSpread({ title: this.getDisplayProp('help'), theme: getTooltipTheme('help'), placement: getTooltipPlacement('help') }, helpTooltipProps), {}, { popupClassName: helpTooltipCls })); } }, { key: "handleHelpMouseLeave", value: function handleHelpMouseLeave() { hide(); } }, { key: "renderTooltipHelp", value: function renderTooltipHelp() { var help = this.getDisplayProp('help'); if (help) { return /*#__PURE__*/React.createElement(Icon, { type: "help", onMouseEnter: this.handleHelpMouseEnter, onMouseLeave: this.handleHelpMouseLeave }); } } }, { key: "renderFloatLabel", value: function renderFloatLabel() { if (this.hasFloatLabel) { var label = this.getLabel(); if (label) { var _classNames; var floatLabelOffsetX = this.floatLabelOffsetX; var prefixCls = this.getContextProPrefixCls(FIELD_SUFFIX); var required = this.getProp('required'); var classString = classNames("".concat(prefixCls, "-label"), (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-required"), required), _defineProperty(_classNames, "".concat(prefixCls, "-readonly"), this.readOnly), _classNames)); var style = floatLabelOffsetX ? { marginLeft: pxToRem(floatLabelOffsetX, true) } : undefined; return /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-label-wrapper"), style: style }, /*#__PURE__*/React.createElement("div", { className: classString, onMouseEnter: this.handleFloatLabelMouseEnter, onMouseLeave: this.handleFloatLabelMouseLeave }, label), this.renderTooltipHelp()); } } } }, { key: "getOtherProps", value: function getOtherProps() { var otherProps = _get(_getPrototypeOf(Rate.prototype), "getOtherProps", this).call(this); otherProps.onFocus = noop; otherProps.onBlur = noop; return otherProps; } }, { key: "renderWrapper", value: function renderWrapper() { var value = this.getValue(); return /*#__PURE__*/React.createElement("label", _extends({ key: "wrapper" }, this.getWrapperProps()), this.renderFloatLabel(), /*#__PURE__*/React.createElement("div", { onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, /*#__PURE__*/React.createElement(C7NRate, _extends({}, this.getOtherProps(), { onChange: this.onChange, value: value })))); } }, { key: "renderHelpMessage", value: function renderHelpMessage() { var showHelp = this.showHelp; var label = this.getLabel(); if ([ShowHelp.none, ShowHelp.label].includes(showHelp)) return; if (!this.hasFloatLabel || !label) { var help = this.getDisplayProp('help'); if (help) { return /*#__PURE__*/React.createElement("div", { key: "help", className: "".concat(this.getContextProPrefixCls(FIELD_SUFFIX), "-help") }, toJS(help)); } } } }]); return Rate; }(FormField); Rate.displayName = 'Rate'; Rate.defaultProps = _objectSpread(_objectSpread(_objectSpread({}, C7NRate.defaultProps), FormField.defaultProps), {}, { suffixCls: 'rate' }); // eslint-disable-next-line camelcase Rate.__PRO_RATE = true; // eslint-disable-next-line camelcase Rate.__IS_IN_CELL_EDITOR = true; __decorate([autobind], Rate.prototype, "renderValidationResult", null); __decorate([autobind], Rate.prototype, "handleHelpMouseEnter", null); Rate = __decorate([observer], Rate); export default Rate; //# sourceMappingURL=Rate.js.map