index.d.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import React from 'react';
  2. import type { SliderProps as RcSliderProps } from 'rc-slider';
  3. import type { SliderRef } from 'rc-slider/lib/Slider';
  4. import type { GetProp } from '../_util/type';
  5. import type { AbstractTooltipProps, TooltipPlacement } from '../tooltip';
  6. export type SliderMarks = RcSliderProps['marks'];
  7. export type SemanticName = 'root' | 'tracks' | 'track' | 'rail' | 'handle';
  8. export type SliderClassNames = Partial<Record<SemanticName, string>>;
  9. export type SliderStyles = Partial<Record<SemanticName, React.CSSProperties>>;
  10. export interface SliderProps extends RcSliderProps {
  11. classNames?: SliderClassNames;
  12. styles?: SliderStyles;
  13. }
  14. interface HandleGeneratorInfo {
  15. value?: number;
  16. dragging?: boolean;
  17. index: number;
  18. }
  19. export type HandleGeneratorFn = (config: {
  20. tooltipPrefixCls?: string;
  21. prefixCls?: string;
  22. info: HandleGeneratorInfo;
  23. }) => React.ReactElement;
  24. export type Formatter = ((value?: number) => React.ReactNode) | null;
  25. export interface SliderTooltipProps extends AbstractTooltipProps {
  26. prefixCls?: string;
  27. open?: boolean;
  28. placement?: TooltipPlacement;
  29. getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
  30. formatter?: Formatter;
  31. autoAdjustOverflow?: boolean;
  32. }
  33. export interface SliderBaseProps {
  34. prefixCls?: string;
  35. reverse?: boolean;
  36. min?: number;
  37. max?: number;
  38. step?: null | number;
  39. marks?: SliderMarks;
  40. dots?: boolean;
  41. included?: boolean;
  42. disabled?: boolean;
  43. keyboard?: boolean;
  44. vertical?: boolean;
  45. className?: string;
  46. rootClassName?: string;
  47. id?: string;
  48. style?: React.CSSProperties;
  49. tooltip?: SliderTooltipProps;
  50. autoFocus?: boolean;
  51. styles?: SliderProps['styles'];
  52. classNames?: SliderProps['classNames'];
  53. onFocus?: React.FocusEventHandler<HTMLDivElement>;
  54. onBlur?: React.FocusEventHandler<HTMLDivElement>;
  55. /** @deprecated `tooltipPrefixCls` is deprecated. Please use `tooltip.prefixCls` instead. */
  56. tooltipPrefixCls?: string;
  57. /** @deprecated `tipFormatter` is deprecated. Please use `tooltip.formatter` instead. */
  58. tipFormatter?: Formatter;
  59. /** @deprecated `tooltipVisible` is deprecated. Please use `tooltip.open` instead. */
  60. tooltipVisible?: boolean;
  61. /**
  62. * @deprecated `getTooltipPopupContainer` is deprecated. Please use `tooltip.getPopupContainer`
  63. * instead.
  64. */
  65. getTooltipPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
  66. /** @deprecated `tooltipPlacement` is deprecated. Please use `tooltip.placement` instead. */
  67. tooltipPlacement?: TooltipPlacement;
  68. tabIndex?: SliderProps['tabIndex'];
  69. ariaLabelForHandle?: SliderProps['ariaLabelForHandle'];
  70. ariaLabelledByForHandle?: SliderProps['ariaLabelledByForHandle'];
  71. ariaRequired?: SliderProps['ariaRequired'];
  72. ariaValueTextFormatterForHandle?: SliderProps['ariaValueTextFormatterForHandle'];
  73. }
  74. export interface SliderSingleProps extends SliderBaseProps {
  75. range?: false;
  76. value?: number;
  77. defaultValue?: number;
  78. onChange?: (value: number) => void;
  79. /** @deprecated Please use `onChangeComplete` instead */
  80. onAfterChange?: (value: number) => void;
  81. onChangeComplete?: (value: number) => void;
  82. /** @deprecated Please use `styles.handle` instead */
  83. handleStyle?: React.CSSProperties;
  84. /** @deprecated Please use `styles.track` instead */
  85. trackStyle?: React.CSSProperties;
  86. /** @deprecated Please use `styles.rail` instead */
  87. railStyle?: React.CSSProperties;
  88. }
  89. export interface SliderRangeProps extends SliderBaseProps {
  90. range: true | SliderRange;
  91. value?: number[];
  92. defaultValue?: number[];
  93. onChange?: (value: number[]) => void;
  94. /** @deprecated Please use `onChangeComplete` instead */
  95. onAfterChange?: (value: number[]) => void;
  96. onChangeComplete?: (value: number[]) => void;
  97. /** @deprecated Please use `styles.handle` instead */
  98. handleStyle?: React.CSSProperties[];
  99. /** @deprecated Please use `styles.track` instead */
  100. trackStyle?: React.CSSProperties[];
  101. /** @deprecated Please use `styles.rail` instead */
  102. railStyle?: React.CSSProperties;
  103. }
  104. type SliderRange = Exclude<GetProp<RcSliderProps, 'range'>, boolean>;
  105. export type Opens = {
  106. [index: number]: boolean;
  107. };
  108. declare const Slider: React.ForwardRefExoticComponent<(SliderSingleProps | SliderRangeProps) & React.RefAttributes<SliderRef>>;
  109. export default Slider;