UNPKG

choerodon-ui

Version:

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

257 lines (214 loc) 9.02 kB
"use strict"; 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactDom = _interopRequireDefault(require("react-dom")); var _trigger = _interopRequireDefault(require("../trigger")); var _placements = _interopRequireDefault(require("./placements")); 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 Dropdown = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(Dropdown, _Component); var _super = _createSuper(Dropdown); function Dropdown(_props) { var _this; (0, _classCallCheck2["default"])(this, Dropdown); _this = _super.call(this, _props); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onClick", function (e) { var props = _this.props; var overlay = props.overlay; var element = typeof overlay === 'function' ? overlay() : overlay; var overlayProps = element.props; // do no call onVisibleChange, if you need click to hide, use onClick and control visible if (!('visible' in props)) { _this.setState({ visible: false }); } if (props.onOverlayClick) { props.onOverlayClick(e); } if (overlayProps.onClick) { overlayProps.onClick(e); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onVisibleChange", function (visible) { var props = _this.props; if (!('visible' in props)) { _this.setState({ visible: visible }); } props.onVisibleChange(visible); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getMenuElement", function () { var _this$props = _this.props, overlay = _this$props.overlay, prefixCls = _this$props.prefixCls; var element = typeof overlay === 'function' ? overlay() : overlay; if (element) { var extraOverlayProps = { prefixCls: "".concat(prefixCls, "-menu"), onClick: _this.onClick }; if (typeof element.type === 'string') { delete extraOverlayProps.prefixCls; } return (0, _react.cloneElement)(element, extraOverlayProps); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "afterVisibleChange", function (visible) { if (visible && _this.props.minOverlayWidthMatchTrigger) { var overlayNode = _this.getPopupDomNode(); var rootNode = _reactDom["default"].findDOMNode((0, _assertThisInitialized2["default"])(_this)); if (rootNode && overlayNode && rootNode.offsetWidth > overlayNode.offsetWidth) { overlayNode.style.minWidth = "".concat(rootNode.offsetWidth, "px"); if (_this.trigger && _this.trigger._component && _this.trigger._component.alignInstance) { _this.trigger._component.alignInstance.forceAlign(); } } } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "saveTrigger", function (node) { _this.trigger = node; }); if ('visible' in _props) { _this.state = { visible: _props.visible }; } else { _this.state = { visible: _props.defaultVisible }; } return _this; } (0, _createClass2["default"])(Dropdown, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(_ref) { var visible = _ref.visible; if (visible !== undefined) { this.setState({ visible: visible }); } } }, { key: "getPopupDomNode", value: function getPopupDomNode() { return this.trigger.getPopupDomNode(); } }, { key: "render", value: function render() { var _this$props2 = this.props, prefixCls = _this$props2.prefixCls, children = _this$props2.children, transitionName = _this$props2.transitionName, animation = _this$props2.animation, align = _this$props2.align, placement = _this$props2.placement, getPopupContainer = _this$props2.getPopupContainer, showAction = _this$props2.showAction, hideAction = _this$props2.hideAction, overlayClassName = _this$props2.overlayClassName, overlayPlacements = _this$props2.overlayPlacements, overlayStyle = _this$props2.overlayStyle, trigger = _this$props2.trigger, otherProps = (0, _objectWithoutProperties2["default"])(_this$props2, ["prefixCls", "children", "transitionName", "animation", "align", "placement", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayPlacements", "overlayStyle", "trigger"]); var builtinPlacements = overlayPlacements || _placements["default"]; return _react["default"].createElement(_trigger["default"], (0, _extends2["default"])({}, otherProps, { prefixCls: prefixCls, ref: this.saveTrigger, popupClassName: overlayClassName, popupStyle: overlayStyle, builtinPlacements: builtinPlacements, action: trigger, showAction: showAction, hideAction: hideAction, popupPlacement: placement, popupAlign: align, popupTransitionName: transitionName, popupAnimation: animation, popupVisible: this.state.visible, afterPopupVisibleChange: this.afterVisibleChange, popup: this.getMenuElement, onPopupVisibleChange: this.onVisibleChange, getPopupContainer: getPopupContainer }), children); } }]); return Dropdown; }(_react.Component); exports["default"] = Dropdown; (0, _defineProperty2["default"])(Dropdown, "propTypes", { minOverlayWidthMatchTrigger: _propTypes["default"].bool, onVisibleChange: _propTypes["default"].func, onOverlayClick: _propTypes["default"].func, prefixCls: _propTypes["default"].string, children: _propTypes["default"].any, transitionName: _propTypes["default"].string, overlayClassName: _propTypes["default"].string, animation: _propTypes["default"].any, align: _propTypes["default"].object, overlayStyle: _propTypes["default"].object, placement: _propTypes["default"].string, overlay: _propTypes["default"].oneOfType([_propTypes["default"].node, _propTypes["default"].func]), trigger: _propTypes["default"].array, showAction: _propTypes["default"].array, hideAction: _propTypes["default"].array, getPopupContainer: _propTypes["default"].func, visible: _propTypes["default"].bool, defaultVisible: _propTypes["default"].bool, overlayPlacements: _propTypes["default"].object }); (0, _defineProperty2["default"])(Dropdown, "defaultProps", { minOverlayWidthMatchTrigger: true, prefixCls: 'rc-dropdown', trigger: ['hover'], showAction: [], hideAction: [], overlayClassName: '', overlayStyle: {}, defaultVisible: false, onVisibleChange: function onVisibleChange() {}, placement: 'bottomLeft' }); //# sourceMappingURL=Dropdown.js.map