useAllowClear.js 1.2 KB

123456789101112131415161718192021222324252627282930
  1. import _typeof from "@babel/runtime/helpers/esm/typeof";
  2. import TransBtn from "../TransBtn";
  3. import React from 'react';
  4. export var useAllowClear = function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {
  5. var disabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
  6. var mergedSearchValue = arguments.length > 6 ? arguments[6] : undefined;
  7. var mode = arguments.length > 7 ? arguments[7] : undefined;
  8. var mergedClearIcon = React.useMemo(function () {
  9. if (_typeof(allowClear) === 'object') {
  10. return allowClear.clearIcon;
  11. }
  12. if (clearIcon) {
  13. return clearIcon;
  14. }
  15. }, [allowClear, clearIcon]);
  16. var mergedAllowClear = React.useMemo(function () {
  17. if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {
  18. return true;
  19. }
  20. return false;
  21. }, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);
  22. return {
  23. allowClear: mergedAllowClear,
  24. clearIcon: /*#__PURE__*/React.createElement(TransBtn, {
  25. className: "".concat(prefixCls, "-clear"),
  26. onMouseDown: onClearMouseDown,
  27. customizeIcon: mergedClearIcon
  28. }, "\xD7")
  29. };
  30. };