UNPKG

qt-public-ui

Version:

新设计规范下业务组件库

105 lines (104 loc) 5.49 kB
"use strict"; 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _antd = require("antd"); var _icons = require("@ant-design/icons"); var _ = require(".."); var _option = _interopRequireDefault(require("./option")); var _classnames = _interopRequireDefault(require("classnames")); require("./style.less"); var _excluded = ["showSearch", "children", "options", "onChange", "onSelect", "loading", "suffixIcon", "style", "forbidRotate", "className", "styleType", "dropdownMatchSelectWidth"], _excluded2 = ["key", "extra", "icon"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var DEFAULT_SELECT_PROPS = { optionFilterProp: 'children', showArrow: true }; var Select = _react["default"].forwardRef(function (props, ref) { var showSearch = props.showSearch, children = props.children, options = props.options, _onChange = props.onChange, _onSelect = props.onSelect, loading = props.loading, suffixIcon = props.suffixIcon, style = props.style, forbidRotate = props.forbidRotate, className = props.className, _props$styleType = props.styleType, styleType = _props$styleType === void 0 ? 'default' : _props$styleType, dropdownMatchSelectWidth = props.dropdownMatchSelectWidth, antProps = (0, _objectWithoutProperties2["default"])(props, _excluded); var getIcon = function getIcon() { if (loading) return /*#__PURE__*/_react["default"].createElement(_icons.LoadingOutlined, null); if (suffixIcon) return suffixIcon; if (styleType === 'underline') return /*#__PURE__*/_react["default"].createElement(_.IconSlim, { type: "umicon-triangle-down" }); if (styleType === 'button') return /*#__PURE__*/_react["default"].createElement(_.IconSlim, { type: "umicon-filter" }); return /*#__PURE__*/_react["default"].createElement(_.IconSlim, { type: "umicon-arrow-select" }); }; var getStyle = function getStyle() { if (['underline', 'borderless', 'button'].includes(styleType)) { return _objectSpread({ minWidth: 100, width: 'auto' }, style); } return style; }; return /*#__PURE__*/_react["default"].createElement(_antd.Select, (0, _extends2["default"])({}, DEFAULT_SELECT_PROPS, { style: getStyle(), suffixIcon: getIcon(), ref: ref, onChange: function onChange(value, option) { var _option$props; var extra = Array.isArray(option) ? option.map(function (opt) { var _opt$props; return opt === null || opt === void 0 ? void 0 : (_opt$props = opt.props) === null || _opt$props === void 0 ? void 0 : _opt$props.extra; }) : option === null || option === void 0 ? void 0 : (_option$props = option.props) === null || _option$props === void 0 ? void 0 : _option$props.extra; _onChange && _onChange(value, extra); }, onSelect: function onSelect(value, option) { var _option$props2; _onSelect && _onSelect(value, option === null || option === void 0 ? void 0 : (_option$props2 = option.props) === null || _option$props2 === void 0 ? void 0 : _option$props2.extra); }, className: (0, _classnames["default"])('umui-select', className, { 'umui-select-round': styleType === 'round', 'umui-select-borderless': styleType === 'borderless', 'umui-select-underline': styleType === 'underline', 'umui-select-button': styleType === 'button', 'umui-forbid-rotate': forbidRotate || styleType === 'button' }), showSearch: showSearch, dropdownMatchSelectWidth: ['underline', 'borderless'].includes(styleType) ? false : dropdownMatchSelectWidth, notFoundContent: /*#__PURE__*/_react["default"].createElement(_.Default, { type: "nothing" }) }, antProps), Array.isArray(options) ? options.map(function (opt) { var key = opt.key, extra = opt.extra, icon = opt.icon, antdOptionsProps = (0, _objectWithoutProperties2["default"])(opt, _excluded2); return /*#__PURE__*/_react["default"].createElement(_option["default"], (0, _extends2["default"])({ key: key || opt.value, value: opt.value || key, extra: opt.extra }, antdOptionsProps), opt.icon && /*#__PURE__*/_react["default"].createElement(_.IconSlim, { type: opt.icon }), opt.title || opt.name || opt.text); }) : children); }); var _default = exports["default"] = Select;