@yamada-ui/slider
Version:
Yamada UI slider components
186 lines (183 loc) • 5.92 kB
TypeScript
import * as _yamada_ui_core from '@yamada-ui/core';
import { ThemeProps, HTMLUIProps, CSSUIProps, CSSUIObject, PropGetter, RequiredPropGetter, HTMLProps } from '@yamada-ui/core';
import { FormControlOptions } from '@yamada-ui/form-control';
import { Merge } from '@yamada-ui/utils';
declare const getThumbSize: (thumbSize: CSSUIProps["boxSize"] | undefined, styles: {
[key: string]: CSSUIObject | undefined;
}) => CSSUIProps["boxSize"] | undefined;
interface UseSliderOptions {
/**
* The base `id` to use for the slider.
*/
id?: string;
/**
* The name attribute of the hidden `input` field.
* This is particularly useful in forms.
*/
name?: string;
/**
* The initial value of the slider.
*/
defaultValue?: number;
/**
* If `false`, the slider handle will not capture focus when value changes.
*
* @default true
*/
focusThumbOnChange?: boolean;
/**
* This is used to format the value so that screen readers
* can speak out a more human-friendly value.
*
* It is used to set the `aria-valuetext` property of the input.
*/
getAriaValueText?: (value: number) => string | undefined;
/**
* If `true`, the value will be incremented or decremented in reverse.
*
* @deprecated Use `reversed` instead.
*/
isReversed?: boolean;
/**
* The maximum allowed value of the slider. Cannot be less than min.
*
* @default 100
*/
max?: number;
/**
* The minimum allowed value of the slider. Cannot be greater than max.
*
* @default 0
*/
min?: number;
/**
* The orientation of the slider.
*
* @default 'horizontal'
*/
orientation?: "horizontal" | "vertical";
/**
* If `true`, the value will be incremented or decremented in reverse.
*/
reversed?: boolean;
/**
* The step in which increments or decrements have to be made.
*
* @default 1
*/
step?: number;
/**
* The CSS `box-size` property.
* Used for calculating the width, height, and percentage of the container element.
*/
thumbSize?: CSSUIProps["boxSize"];
/**
* The value of the slider.
*/
value?: number;
/**
* Function called whenever the slider value changes.
*/
onChange?: (value: number) => void;
/**
* Function called when the user is done selecting a new value.
*/
onChangeEnd?: (value: number) => void;
/**
* Function called when the user starts selecting a new value.
*/
onChangeStart?: (value: number) => void;
}
interface UseSliderProps extends Merge<HTMLUIProps, FormControlOptions & UseSliderOptions> {
}
declare const useSlider: ({ focusThumbOnChange, ...props }: UseSliderProps) => {
dragging: boolean;
focused: boolean;
/**
* @deprecated Use `dragging` instead.
*/
isDragging: boolean;
/**
* @deprecated Use `focused` instead.
*/
isFocused: boolean;
/**
* @deprecated Use `vertical` instead.
*/
isVertical: boolean;
reset: () => void;
stepDown: (step?: number) => void;
stepTo: (value: number) => void;
stepUp: (step?: number) => void;
value: number;
vertical: boolean;
getContainerProps: PropGetter<"div", undefined>;
getFilledTrackProps: PropGetter<"div", undefined>;
getInputProps: PropGetter<"input", undefined>;
getMarkProps: RequiredPropGetter<{
value: number;
} & HTMLProps, HTMLProps>;
getThumbProps: PropGetter<"div", undefined>;
getTrackProps: PropGetter<"div", undefined>;
};
type ReturnUseSlider = ReturnType<typeof useSlider>;
interface SliderOptions {
/**
* The CSS `color` property. Used in `color` of filled track element.
*/
filledTrackColor?: CSSUIProps["color"];
/**
* The CSS `background` property. Used in `background` of thumb element.
*/
thumbColor?: CSSUIProps["bg"];
/**
* The CSS `box-size` property. Used in `box-size` of thumb element.
*/
thumbSize?: CSSUIProps["boxSize"];
/**
* The CSS `color` property. Used in `color` of track element.
*/
trackColor?: CSSUIProps["color"];
/**
* The CSS `height` property. Used in `height` of track element.
*/
trackSize?: CSSUIProps["h"];
/**
* Props for slider filled track element.
*/
filledTrackProps?: SliderFilledTrackProps;
/**
* Props for slider input element.
*/
inputProps?: HTMLUIProps<"input">;
/**
* Props for slider thumb element.
*/
thumbProps?: SliderThumbProps;
/**
* Props for slider track element.
*/
trackProps?: SliderTrackProps;
}
interface SliderProps extends ThemeProps<"Slider">, UseSliderProps, SliderOptions {
}
/**
* `Slider` is a component used for allowing users to select a value from a range.
*
* @see Docs https://yamada-ui.com/components/forms/slider
*/
declare const Slider: _yamada_ui_core.Component<"input", SliderProps>;
interface SliderTrackProps extends HTMLUIProps, Pick<SliderOptions, "filledTrackProps"> {
}
declare const SliderTrack: _yamada_ui_core.Component<"div", SliderTrackProps>;
interface SliderFilledTrackProps extends HTMLUIProps {
}
declare const SliderFilledTrack: _yamada_ui_core.Component<"div", SliderFilledTrackProps>;
interface SliderMarkProps extends HTMLUIProps {
value: number;
}
declare const SliderMark: _yamada_ui_core.Component<"div", SliderMarkProps>;
interface SliderThumbProps extends HTMLUIProps {
}
declare const SliderThumb: _yamada_ui_core.Component<"div", SliderThumbProps>;
export { type ReturnUseSlider, Slider, SliderFilledTrack, type SliderFilledTrackProps, SliderMark, type SliderMarkProps, type SliderProps, SliderThumb, type SliderThumbProps, SliderTrack, type SliderTrackProps, type UseSliderOptions, type UseSliderProps, getThumbSize, useSlider };