UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

34 lines (33 loc) • 1.69 kB
"use client"; import React, { useMemo } from 'react'; import CloseCircleFilled from "@ant-design/icons/es/icons/CloseCircleFilled"; import fallbackProp from '../fallbackProp'; import { isPlainObject } from '../is'; import { devUseWarning } from '../warning'; export const useAllowClear = options => { const { allowClear, clearIcon, contextAllowClear, contextClearIcon, defaultAllowClear, defaultLabel, componentName } = options; if (process.env.NODE_ENV !== 'production') { const warning = devUseWarning(componentName); warning.deprecated(!clearIcon, 'clearIcon', 'allowClear={{ clearIcon: React.ReactNode }}'); } return useMemo(() => { const mergedAllowClear = allowClear ?? contextAllowClear ?? defaultAllowClear; if (!mergedAllowClear) { return false; } return { clearIcon: fallbackProp(isPlainObject(allowClear) ? allowClear.clearIcon : undefined, clearIcon, isPlainObject(contextAllowClear) ? contextAllowClear.clearIcon : undefined, contextClearIcon, /*#__PURE__*/React.createElement(CloseCircleFilled, null)), disabled: (isPlainObject(allowClear) ? allowClear?.disabled : undefined) ?? (isPlainObject(contextAllowClear) ? contextAllowClear?.disabled : undefined), tabIndex: (isPlainObject(allowClear) ? allowClear?.tabIndex : undefined) ?? (isPlainObject(contextAllowClear) ? contextAllowClear?.tabIndex : undefined), label: (isPlainObject(allowClear) ? allowClear.label : undefined) ?? (isPlainObject(contextAllowClear) ? contextAllowClear.label : undefined) ?? defaultLabel }; }, [allowClear, clearIcon, contextAllowClear, contextClearIcon, defaultAllowClear, defaultLabel]); };