Range
The Range component is similar to the Slider component built with react-compound-slider, but allows the user to select start and end values. Developers can specify eventIndicators as custom icons that will be positioned relative to tick marks.
Result
Loading...
Live Editor
<Range label="Range" minValue={0} maxValue={10} selectedStartValue={2} selectedEndValue={8} />
With event indicators
Result
Loading...
Live Editor
<Range label="Range with Event Indicators" minValue={0} maxValue={10} selectedStartValue={2} selectedEndValue={8} eventIndicators={{ 2: { icon: 'icon-coins-01', tooltipTextItems: ['Single Line'], }, 8: { icon: 'icon-sunset', tooltipTextItems: ['Multi', 'Line', 'Tooltip'], }, 6: { icon: 'icon-moon-eclipse', tooltipTextItems: ['Eclipse'], }, }} />
Within a form
Result
Loading...
Live Editor
<div data-testid="within-form"> <Form initialValues={{ range: { selectedStartValue: 1, selectedEndValue: 9, }, }} onSubmit={async (values, { setSubmitting }) => { console.log(values); setSubmitting(false); }} validationSchema={object().shape({ range: object().shape({ selectedStartValue: number().required().min(1, 'Start value must be at least 1'), selectedEndValue: number().required().min(3, 'End value must be at least 3'), }), })} > {({ values: { range: { selectedStartValue, selectedEndValue }, }, }) => ( <> <FormField> <Range label="Range" name="range" minValue={0} maxValue={10} /> </FormField> <NumberField label="Selected Start Value" value={selectedStartValue} /> <NumberField label="Selected End Value" value={selectedEndValue} /> </> )} </Form> </div>
Analytics
The Range component is trackable through Kyber Analytics. This is the default analytics config.
export default {
value: 'Range',
actions: {
onChange: { type: 'RANGE_CHANGE', payload: 'Change' },
},
};