antd
Version:
An enterprise-class UI design language and React components implementation
92 lines (91 loc) • 4.08 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 _util = require("@rc-component/util");
var _fallbackProp = _interopRequireDefault(require("../_util/fallbackProp"));
var _is = require("../_util/is");
var _warning = require("../_util/warning");
function useIcons({
suffix,
contextSuffix,
clearIcon,
contextClearIcon,
menuItemSelectedIcon,
contextMenuItemSelectedIcon,
removeIcon,
contextRemoveIcon,
loading,
loadingIcon,
contextLoadingIcon,
searchIcon,
contextSearchIcon,
multiple,
hasFeedback,
showSuffix,
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 getSuffixNode = suffixNode => {
if (!(0, _util.isReactRenderable)(suffixNode) && !hasFeedback && !showArrow) {
return null;
}
return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffix !== false && suffixNode, hasFeedback && feedbackIcon);
};
// Suffix
let mergedSuffix = null;
if (suffix !== undefined) {
mergedSuffix = (0, _is.isFunction)(suffix) ? props => getSuffixNode(suffix(props)) : getSuffixNode(suffix);
} else if (loading) {
mergedSuffix = getSuffixNode((0, _fallbackProp.default)(loadingIcon, contextLoadingIcon, /*#__PURE__*/React.createElement(_LoadingOutlined.default, {
spin: true,
"aria-hidden": "true"
})));
} else {
mergedSuffix = props => {
const {
open,
showSearch
} = props;
if (open && showSearch) {
return getSuffixNode((0, _fallbackProp.default)(searchIcon, contextSearchIcon, /*#__PURE__*/React.createElement(_SearchOutlined.default, {
"aria-hidden": "true"
})));
}
const fallbackSuffix = (0, _fallbackProp.default)(contextSuffix, /*#__PURE__*/React.createElement(_DownOutlined.default, {
"aria-hidden": "true"
}));
return getSuffixNode((0, _is.isFunction)(fallbackSuffix) ? fallbackSuffix(props) : fallbackSuffix);
};
}
// 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,
suffix: mergedSuffix,
itemIcon: mergedItemIcon,
removeIcon: mergedRemoveIcon
};
}, [suffix, contextSuffix, clearIcon, contextClearIcon, menuItemSelectedIcon, contextMenuItemSelectedIcon, removeIcon, contextRemoveIcon, loading, loadingIcon, contextLoadingIcon, searchIcon, contextSearchIcon, multiple, hasFeedback, showSuffix, feedbackIcon, showArrow]);
}