1 | import * as React from "react";
|
2 | import { AbstractPureComponent2, Intent } from "../../common";
|
3 | import { IntentProps, Props } from "../../common/props";
|
4 | export interface ISliderBaseProps extends Props, IntentProps {
|
5 | /**
|
6 | * Whether the slider is non-interactive.
|
7 | *
|
8 | * @default false
|
9 | */
|
10 | disabled?: boolean;
|
11 | /**
|
12 | * Increment between successive labels. Must be greater than zero.
|
13 | *
|
14 | * @default inferred (if labelStepSize is undefined)
|
15 | */
|
16 | labelStepSize?: number;
|
17 | /**
|
18 | * Array of specific values for the label placement. This prop is mutually exclusive with
|
19 | * `labelStepSize`.
|
20 | */
|
21 | labelValues?: number[];
|
22 | /**
|
23 | * Number of decimal places to use when rendering label value. Default value is the number of
|
24 | * decimals used in the `stepSize` prop. This prop has _no effect_ if you supply a custom
|
25 | * `labelRenderer` callback.
|
26 | *
|
27 | * @default inferred from stepSize
|
28 | */
|
29 | labelPrecision?: number;
|
30 | /**
|
31 | * Maximum value of the slider.
|
32 | *
|
33 | * @default 10
|
34 | */
|
35 | max?: number;
|
36 | /**
|
37 | * Minimum value of the slider.
|
38 | *
|
39 | * @default 0
|
40 | */
|
41 | min?: number;
|
42 | /**
|
43 | * Whether a solid bar should be rendered on the track between current and initial values,
|
44 | * or between handles for `RangeSlider`.
|
45 | *
|
46 | * @default true
|
47 | */
|
48 | showTrackFill?: boolean;
|
49 | /**
|
50 | * Increment between successive values; amount by which the handle moves. Must be greater than zero.
|
51 | *
|
52 | * @default 1
|
53 | */
|
54 | stepSize?: number;
|
55 | /**
|
56 | * Callback to render a single label. Useful for formatting numbers as currency or percentages.
|
57 | * If `true`, labels will use number value formatted to `labelPrecision` decimal places.
|
58 | * If `false`, labels will not be shown.
|
59 | *
|
60 | * The callback is provided a numeric value and optional rendering options, which include:
|
61 | * - isHandleTooltip: whether this label is being rendered within a handle tooltip
|
62 | *
|
63 | * @default true
|
64 | */
|
65 | labelRenderer?: boolean | ((value: number, opts?: {
|
66 | isHandleTooltip: boolean;
|
67 | }) => string | JSX.Element);
|
68 | /**
|
69 | * Whether to show the slider in a vertical orientation.
|
70 | *
|
71 | * @default false
|
72 | */
|
73 | vertical?: boolean;
|
74 | }
|
75 | export declare type MultiSliderProps = IMultiSliderProps;
|
76 | /** @deprecated use MultiSliderProps */
|
77 | export interface IMultiSliderProps extends ISliderBaseProps {
|
78 | /** Default intent of a track segment, used only if no handle specifies `intentBefore/After`. */
|
79 | defaultTrackIntent?: Intent;
|
80 | /** Callback invoked when a handle value changes. Receives handle values in sorted order. */
|
81 | onChange?(values: number[]): void;
|
82 | /** Callback invoked when a handle is released. Receives handle values in sorted order. */
|
83 | onRelease?(values: number[]): void;
|
84 | }
|
85 | export interface ISliderState {
|
86 | labelPrecision: number;
|
87 | /** the client size, in pixels, of one tick */
|
88 | tickSize: number;
|
89 | /** the size of one tick as a ratio of the component's client size */
|
90 | tickSizeRatio: number;
|
91 | }
|
92 | export declare class MultiSlider extends AbstractPureComponent2<MultiSliderProps, ISliderState> {
|
93 | static defaultSliderProps: ISliderBaseProps;
|
94 | static defaultProps: MultiSliderProps;
|
95 | static displayName: string;
|
96 | static Handle: React.FunctionComponent<import("./handleProps").IHandleProps>;
|
97 | static getDerivedStateFromProps(props: MultiSliderProps): {
|
98 | labelPrecision: number;
|
99 | };
|
100 | private static getLabelPrecision;
|
101 | state: ISliderState;
|
102 | private handleElements;
|
103 | private trackElement;
|
104 | getSnapshotBeforeUpdate(prevProps: MultiSliderProps): null;
|
105 | render(): JSX.Element;
|
106 | componentDidMount(): void;
|
107 | componentDidUpdate(prevProps: MultiSliderProps, prevState: ISliderState): void;
|
108 | protected validateProps(props: React.PropsWithChildren<MultiSliderProps>): void;
|
109 | private formatLabel;
|
110 | private renderLabels;
|
111 | private renderTracks;
|
112 | private renderTrackFill;
|
113 | private renderHandles;
|
114 | private addHandleRef;
|
115 | private maybeHandleTrackClick;
|
116 | private maybeHandleTrackTouch;
|
117 | private canHandleTrackEvent;
|
118 | private nearestHandleForValue;
|
119 | private getHandlerForIndex;
|
120 | private getNewHandleValues;
|
121 | private findFirstLockedHandleIndex;
|
122 | private handleChange;
|
123 | private handleRelease;
|
124 | private getLabelValues;
|
125 | private getOffsetRatio;
|
126 | private getTrackIntent;
|
127 | private updateTickSize;
|
128 | }
|