custom-app
Version:
ITIMS��Ʒ�鿪��ר��React���,�Dz��ý��ּ�dhcc-app���������
284 lines (231 loc) • 10.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classnames = _interopRequireDefault(require("classnames"));
var PropTypes = _interopRequireWildcard(require("prop-types"));
var _raf = _interopRequireDefault(require("raf"));
var _rcTrigger = _interopRequireDefault(require("rc-trigger"));
var React = _interopRequireWildcard(require("react"));
var ReactDOM = _interopRequireWildcard(require("react-dom"));
var _DropdownMenu = _interopRequireDefault(require("./DropdownMenu"));
var _util = require("./util");
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
var __rest = void 0 && (void 0).__rest || function (s, e) {
var t = {};
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
}
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
_rcTrigger["default"].displayName = 'Trigger';
var BUILT_IN_PLACEMENTS = {
bottomLeft: {
points: ['tl', 'bl'],
offset: [0, 4],
overflow: {
adjustX: 0,
adjustY: 1
}
},
topLeft: {
points: ['bl', 'tl'],
offset: [0, -4],
overflow: {
adjustX: 0,
adjustY: 1
}
}
};
var SelectTrigger =
/*#__PURE__*/
function (_React$Component) {
_inherits(SelectTrigger, _React$Component);
function SelectTrigger(props) {
var _this;
_classCallCheck(this, SelectTrigger);
_this = _possibleConstructorReturn(this, _getPrototypeOf(SelectTrigger).call(this, props));
_this.dropdownMenuRef = null;
_this.rafInstance = null;
_this.setDropdownWidth = function () {
_this.cancelRafInstance();
_this.rafInstance = (0, _raf["default"])(function () {
var dom = ReactDOM.findDOMNode(_assertThisInitialized(_this));
var width = dom.offsetWidth;
if (width !== _this.state.dropdownWidth) {
_this.setState({
dropdownWidth: width
});
}
});
};
_this.cancelRafInstance = function () {
if (_this.rafInstance) {
_raf["default"].cancel(_this.rafInstance);
}
};
_this.getInnerMenu = function () {
return _this.dropdownMenuRef && _this.dropdownMenuRef.menuRef;
};
_this.getPopupDOMNode = function () {
return _this.triggerRef.getPopupDomNode();
};
_this.getDropdownElement = function (newProps) {
var props = _this.props;
var dropdownRender = props.dropdownRender,
ariaId = props.ariaId;
var menuNode = React.createElement(_DropdownMenu["default"], _extends({
ref: _this.saveDropdownMenuRef
}, newProps, {
ariaId: ariaId,
prefixCls: _this.getDropdownPrefixCls(),
onMenuSelect: props.onMenuSelect,
onMenuDeselect: props.onMenuDeselect,
onPopupScroll: props.onPopupScroll,
value: props.value,
backfillValue: props.backfillValue,
firstActiveValue: props.firstActiveValue,
defaultActiveFirstOption: props.defaultActiveFirstOption,
dropdownMenuStyle: props.dropdownMenuStyle,
menuItemSelectedIcon: props.menuItemSelectedIcon
}));
if (dropdownRender) {
return dropdownRender(menuNode, props);
}
return null;
};
_this.getDropdownTransitionName = function () {
var props = _this.props;
var transitionName = props.transitionName;
if (!transitionName && props.animation) {
transitionName = "".concat(_this.getDropdownPrefixCls(), "-").concat(props.animation);
}
return transitionName;
};
_this.getDropdownPrefixCls = function () {
return "".concat(_this.props.prefixCls, "-dropdown");
};
_this.saveDropdownMenuRef = (0, _util.saveRef)(_assertThisInitialized(_this), 'dropdownMenuRef');
_this.saveTriggerRef = (0, _util.saveRef)(_assertThisInitialized(_this), 'triggerRef');
_this.state = {
dropdownWidth: 0
};
return _this;
}
_createClass(SelectTrigger, [{
key: "componentDidMount",
value: function componentDidMount() {
this.setDropdownWidth();
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {
this.setDropdownWidth();
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.cancelRafInstance();
}
}, {
key: "render",
value: function render() {
var _popupClassName;
var _a = this.props,
onPopupFocus = _a.onPopupFocus,
empty = _a.empty,
props = __rest(_a, ["onPopupFocus", "empty"]);
var multiple = props.multiple,
visible = props.visible,
inputValue = props.inputValue,
dropdownAlign = props.dropdownAlign,
disabled = props.disabled,
showSearch = props.showSearch,
dropdownClassName = props.dropdownClassName,
dropdownStyle = props.dropdownStyle,
dropdownMatchSelectWidth = props.dropdownMatchSelectWidth;
var dropdownPrefixCls = this.getDropdownPrefixCls();
var popupClassName = (_popupClassName = {}, _defineProperty(_popupClassName, dropdownClassName, !!dropdownClassName), _defineProperty(_popupClassName, "".concat(dropdownPrefixCls, "--").concat(multiple ? 'multiple' : 'single'), 1), _defineProperty(_popupClassName, "".concat(dropdownPrefixCls, "--empty"), empty), _popupClassName);
var popupElement = this.getDropdownElement({
menuItems: props.options,
onPopupFocus: onPopupFocus,
multiple: multiple,
inputValue: inputValue,
visible: visible
});
var hideAction;
if (disabled) {
hideAction = [];
} else if ((0, _util.isSingleMode)(props) && !showSearch) {
hideAction = ['click'];
} else {
hideAction = ['blur'];
}
var popupStyle = _extends({}, dropdownStyle);
var widthProp = dropdownMatchSelectWidth ? 'width' : 'minWidth';
if (this.state.dropdownWidth) {
popupStyle[widthProp] = "".concat(this.state.dropdownWidth, "px");
}
return React.createElement(_rcTrigger["default"], _extends({}, props, {
showAction: disabled ? [] : this.props.showAction,
hideAction: hideAction,
ref: this.saveTriggerRef,
popupPlacement: "bottomLeft",
builtinPlacements: BUILT_IN_PLACEMENTS,
prefixCls: dropdownPrefixCls,
popupTransitionName: this.getDropdownTransitionName(),
onPopupVisibleChange: props.onDropdownVisibleChange,
popup: popupElement,
popupAlign: dropdownAlign,
popupVisible: visible,
getPopupContainer: props.getPopupContainer,
popupClassName: (0, _classnames["default"])(popupClassName),
popupStyle: popupStyle
}), props.children);
}
}]);
return SelectTrigger;
}(React.Component);
exports["default"] = SelectTrigger;
SelectTrigger.defaultProps = {
dropdownRender: function dropdownRender(menu) {
return menu;
}
};
SelectTrigger.propTypes = {
onPopupFocus: PropTypes.func,
onPopupScroll: PropTypes.func,
dropdownMatchSelectWidth: PropTypes.bool,
dropdownAlign: PropTypes.object,
visible: PropTypes.bool,
disabled: PropTypes.bool,
showSearch: PropTypes.bool,
dropdownClassName: PropTypes.string,
multiple: PropTypes.bool,
inputValue: PropTypes.string,
filterOption: PropTypes.any,
options: PropTypes.any,
prefixCls: PropTypes.string,
popupClassName: PropTypes.string,
children: PropTypes.any,
showAction: PropTypes.arrayOf(PropTypes.string),
menuItemSelectedIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
dropdownRender: PropTypes.func,
ariaId: PropTypes.string
};
SelectTrigger.displayName = 'SelectTrigger';