qt-public-ui
Version:
新设计规范下业务组件库
105 lines (104 loc) • 5.49 kB
JavaScript
;
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;