UNPKG

@yamada-ui/slider

Version:

Yamada UI slider components

185 lines (182 loc) • 6.4 kB
import * as _yamada_ui_core from '@yamada-ui/core'; import { ThemeProps, HTMLUIProps, CSSUIProps, PropGetter, RequiredPropGetter, HTMLProps } from '@yamada-ui/core'; import { FormControlOptions } from '@yamada-ui/form-control'; import { Merge } from '@yamada-ui/utils'; interface UseRangeSliderOptions { /** * 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, string] | string; /** * The minimum distance between slider thumbs. * Useful for preventing the thumbs from being too close together. * * @default 0 */ betweenThumbs?: number; /** * The initial value of the slider. */ defaultValue?: [number, 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, number]; /** * Function called whenever the slider value changes. */ onChange?: (value: [number, number]) => void; /** * Function called when the user is done selecting a new value. */ onChangeEnd?: (value: [number, number]) => void; /** * Function called when the user starts selecting a new value. */ onChangeStart?: (value: [number, number]) => void; } interface UseRangeSliderProps extends Merge<HTMLUIProps, FormControlOptions & UseRangeSliderOptions> { } declare const useRangeSlider: ({ focusThumbOnChange, ...props }: UseRangeSliderProps) => { dragging: boolean; focused: boolean; getInputId: (i: number) => string; getMarkerId: (i: number) => string; getThumbId: (i: number) => string; reset: () => void; stepDown: (i: number, step?: number) => void; stepUp: (i: number, step?: number) => void; values: [number, number]; vertical: boolean; getContainerProps: PropGetter<"div", undefined>; getFilledTrackProps: PropGetter<"div", undefined>; getInputProps: RequiredPropGetter<{ index: number; } & HTMLProps<"input">, HTMLProps<"input">>; getMarkProps: RequiredPropGetter<{ value: number; } & HTMLProps, HTMLProps>; getThumbProps: RequiredPropGetter<{ index: number; } & _yamada_ui_core.UIProps & Omit<HTMLProps<"div">, keyof _yamada_ui_core.UIProps>, HTMLUIProps>; getTrackProps: PropGetter<"div", undefined>; }; type ReturnUseRangeSliderProps = ReturnType<typeof useRangeSlider>; interface RangeSliderOptions { /** * 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 range slider filled track element. */ filledTrackProps?: RangeSliderFilledTrackProps; /** * Props for range slider input element. */ inputProps?: HTMLUIProps<"input">; /** * Props for range slider thumb element. */ thumbProps?: RangeSliderThumbProps; /** * Props for range slider track element. */ trackProps?: RangeSliderTrackProps; } interface RangeSliderProps extends ThemeProps<"RangeSlider">, UseRangeSliderProps, RangeSliderOptions { } /** * `RangeSlider` is a component used for users to select a range of related values. * * @see Docs https://yamada-ui.com/components/forms/range-slider */ declare const RangeSlider: _yamada_ui_core.Component<"div", RangeSliderProps>; interface RangeSliderTrackProps extends HTMLUIProps, Pick<RangeSliderOptions, "filledTrackProps"> { } declare const RangeSliderTrack: _yamada_ui_core.Component<"div", RangeSliderTrackProps>; interface RangeSliderFilledTrackProps extends HTMLUIProps { } declare const RangeSliderFilledTrack: _yamada_ui_core.Component<"div", RangeSliderFilledTrackProps>; interface RangeSliderMarkProps extends HTMLUIProps { value: number; } declare const RangeSliderMark: _yamada_ui_core.Component<"div", RangeSliderMarkProps>; interface RangeSliderThumbProps extends HTMLUIProps { } declare const RangeSliderStartThumb: _yamada_ui_core.Component<"div", RangeSliderThumbProps>; declare const RangeSliderEndThumb: _yamada_ui_core.Component<"div", RangeSliderThumbProps>; export { RangeSlider, RangeSliderEndThumb, RangeSliderFilledTrack, type RangeSliderFilledTrackProps, RangeSliderMark, type RangeSliderMarkProps, type RangeSliderProps, RangeSliderStartThumb, type RangeSliderThumbProps, RangeSliderTrack, type RangeSliderTrackProps, type ReturnUseRangeSliderProps, type UseRangeSliderOptions, type UseRangeSliderProps, useRangeSlider };