24 lines
933 B
JavaScript
24 lines
933 B
JavaScript
import { useMemo } from 'react';
|
||
export const useAllowClear = (prefixCls, displayValues, allowClear, clearIcon, disabled = false, mergedSearchValue, mode) => {
|
||
// Convert boolean to object first
|
||
const allowClearConfig = useMemo(() => {
|
||
if (typeof allowClear === 'boolean') {
|
||
return {
|
||
allowClear
|
||
};
|
||
}
|
||
if (allowClear && typeof allowClear === 'object') {
|
||
return allowClear;
|
||
}
|
||
return {
|
||
allowClear: false
|
||
};
|
||
}, [allowClear]);
|
||
return useMemo(() => {
|
||
const mergedAllowClear = !disabled && allowClearConfig.allowClear !== false && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '');
|
||
return {
|
||
allowClear: mergedAllowClear,
|
||
clearIcon: mergedAllowClear ? allowClearConfig.clearIcon || clearIcon || '×' : null
|
||
};
|
||
}, [allowClearConfig, clearIcon, disabled, displayValues.length, mergedSearchValue, mode]);
|
||
}; |