import { Ref } from 'react'; import { RangeSliderValue, SingleSliderValue } from '@mezzanine-ui/core/slider'; import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types'; import { UseRangeSliderProps, UseSingleSliderProps } from './useSlider'; import { IconDefinition } from '@mezzanine-ui/icons'; export interface SliderBaseProps extends Omit, 'defaultChecked' | 'defaultValue' | 'onChange'> { /** * Whether the slider is disabled. * @default false */ disabled?: boolean; /** * The ref for Slider root. */ innerRef?: Ref; /** * The maximum permitted value * @default 100 */ max?: number; /** * The minimum permitted value * @default 0 */ min?: number; /** * The stepping interval. * @default 0 */ step?: number; /** * Whether to show tick marks on the slider. * If a number is given, it represents the number of equally spaced segments between min and max to display tick marks (excluding min and max). * If a number array is given, the values represent the actual slider values at which to show the tick marks (not percentages). * @example * 3 // means show tick marks at values 25, 50, and 75 (for min=0, max=100) * [20, 50, 80] // means show tick marks at values 20, 50, and 80 */ withTick?: number | number[]; } export type SliderWithInputProps = SliderBaseProps & { /** 此配置下不適用。 */ onPrefixIconClick?: never; /** 此配置下不適用。 */ onSuffixIconClick?: never; /** 此配置下不適用。 */ prefixIcon?: never; /** 此配置下不適用。 */ suffixIcon?: never; /** * Whether to show input box to allow user to input value. */ withInput: true; }; export type SliderWithIconProps = SliderBaseProps & { /** * Set prefix icon. */ prefixIcon: IconDefinition; /** * Custom click handler for prefix icon. If not provided, defaults to decrementing the value by step. */ onPrefixIconClick?: () => void; /** * Set suffix icon. */ suffixIcon: IconDefinition; /** * Custom click handler for suffix icon. If not provided, defaults to incrementing the value by step. */ onSuffixIconClick?: () => void; withInput?: never; }; export type SliderWithoutAddonsProps = SliderBaseProps & { /** 此配置下不適用。 */ onPrefixIconClick?: never; /** 此配置下不適用。 */ onSuffixIconClick?: never; /** 此配置下不適用。 */ prefixIcon?: never; /** 此配置下不適用。 */ suffixIcon?: never; /** 此配置下不適用。 */ withInput?: never; }; export type SliderAddonProps = SliderWithInputProps | SliderWithIconProps | SliderWithoutAddonsProps; export type SingleSliderProps = SliderAddonProps & { /** 滑桿值變更時的回呼函式。 */ onChange?: (value: SingleSliderValue) => void; /** * The value of the slider. */ value: UseSingleSliderProps['value']; }; export type RangeSliderProps = SliderAddonProps & { /** 範圍滑桿值變更時的回呼函式,回傳 [min, max] 元組。 */ onChange?: (value: RangeSliderValue) => void; /** * The value of the slider. */ value: UseRangeSliderProps['value']; }; export type SliderComponentProps = SingleSliderProps | RangeSliderProps; export type SliderProps = Omit; /** * The react component for `mezzanine` slider. * The outcome will be base on the type of given value. * Notice that slider is a fully controlled component. Property value is always needed. */ declare const Slider: import("react").ForwardRefExoticComponent>; export default Slider;