antd
Version:
An enterprise-class UI design language and React components implementation
83 lines (82 loc) • 3.75 kB
JavaScript
;
"use client";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useIcons;
var React = _interopRequireWildcard(require("react"));
var _CheckOutlined = _interopRequireDefault(require("@ant-design/icons/CheckOutlined"));
var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons/CloseCircleFilled"));
var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons/CloseOutlined"));
var _DownOutlined = _interopRequireDefault(require("@ant-design/icons/DownOutlined"));
var _LoadingOutlined = _interopRequireDefault(require("@ant-design/icons/LoadingOutlined"));
var _SearchOutlined = _interopRequireDefault(require("@ant-design/icons/SearchOutlined"));
var _fallbackProp = _interopRequireDefault(require("../_util/fallbackProp"));
var _warning = require("../_util/warning");
function useIcons({
suffixIcon,
contextSuffixIcon,
clearIcon,
contextClearIcon,
menuItemSelectedIcon,
contextMenuItemSelectedIcon,
removeIcon,
contextRemoveIcon,
loading,
loadingIcon,
contextLoadingIcon,
searchIcon,
contextSearchIcon,
multiple,
hasFeedback,
showSuffixIcon,
feedbackIcon,
showArrow,
componentName
}) {
if (process.env.NODE_ENV !== 'production') {
const warning = (0, _warning.devUseWarning)(componentName);
warning.deprecated(!clearIcon, 'clearIcon', 'allowClear={{ clearIcon: React.ReactNode }}');
}
return React.useMemo(() => {
// Clear Icon
const mergedClearIcon = (0, _fallbackProp.default)(clearIcon, contextClearIcon, /*#__PURE__*/React.createElement(_CloseCircleFilled.default, null));
// Validation Feedback Icon
const getSuffixIconNode = arrowIcon => {
if (suffixIcon === null && !hasFeedback && !showArrow) {
return null;
}
return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);
};
// Arrow item icon
let mergedSuffixIcon = null;
if (suffixIcon !== undefined) {
mergedSuffixIcon = getSuffixIconNode(suffixIcon);
} else if (loading) {
mergedSuffixIcon = getSuffixIconNode((0, _fallbackProp.default)(loadingIcon, contextLoadingIcon, /*#__PURE__*/React.createElement(_LoadingOutlined.default, {
spin: true
})));
} else {
mergedSuffixIcon = ({
open,
showSearch
}) => {
if (open && showSearch) {
return getSuffixIconNode((0, _fallbackProp.default)(searchIcon, contextSearchIcon, /*#__PURE__*/React.createElement(_SearchOutlined.default, null)));
}
return getSuffixIconNode((0, _fallbackProp.default)(contextSuffixIcon, /*#__PURE__*/React.createElement(_DownOutlined.default, null)));
};
}
// Checked item icon
const mergedItemIcon = (0, _fallbackProp.default)(menuItemSelectedIcon, contextMenuItemSelectedIcon, multiple ? /*#__PURE__*/React.createElement(_CheckOutlined.default, null) : null);
const mergedRemoveIcon = (0, _fallbackProp.default)(removeIcon, contextRemoveIcon, /*#__PURE__*/React.createElement(_CloseOutlined.default, null));
return {
clearIcon: mergedClearIcon,
suffixIcon: mergedSuffixIcon,
itemIcon: mergedItemIcon,
removeIcon: mergedRemoveIcon
};
}, [suffixIcon, contextSuffixIcon, clearIcon, contextClearIcon, menuItemSelectedIcon, contextMenuItemSelectedIcon, removeIcon, contextRemoveIcon, loading, loadingIcon, contextLoadingIcon, searchIcon, contextSearchIcon, multiple, hasFeedback, showSuffixIcon, feedbackIcon, showArrow]);
}