import React, {Component, Fragment} from 'react'; import {StyleSheet, ScrollView} from 'react-native'; import { Constants, Colors, View, Text, Button, Icon, Slider, GradientSlider, ColorSliderGroup } from 'react-native-ui-lib'; import {renderBooleanOption} from '../ExampleScreenPresenter'; interface SliderScreenProps { componentId: string; } interface SliderScreenState { alpha: number; color: string; sliderValue: number; sliderMinValue: number; sliderMaxValue: number; sliderMinValue2: number; sliderMaxValue2: number; forceLTR: boolean; } const INITIAL_VALUE = 20; const RANGE_INITIAL_MIN = 0; const RANGE_INITIAL_MAX = 100; const COLOR = Colors.blue30; export default class SliderScreen extends Component { state = { alpha: 1, color: COLOR, sliderValue: INITIAL_VALUE, sliderMinValue: RANGE_INITIAL_MIN, sliderMaxValue: RANGE_INITIAL_MAX, sliderMinValue2: 25, sliderMaxValue2: 80, forceLTR: false }; slider = React.createRef(); rangeSlider = React.createRef(); gradientSlider = React.createRef(); resetSlider = () => { // @ts-expect-error this.slider.current?.reset(); // @ts-expect-error this.rangeSlider.current?.reset(); // @ts-expect-error this.gradientSlider.current?.reset(); }; onSliderRangeChange = (values: {min: number; max: number}) => { const {min, max} = values; this.setState({sliderMinValue: min, sliderMaxValue: max}); }; onSliderRangeChange2 = (values: {min: number; max: number}) => { const {min, max} = values; this.setState({sliderMinValue2: min, sliderMaxValue2: max}); }; onSliderValueChange = (value: number) => { this.setState({sliderValue: value}); }; onSliderReset = () => { this.setState({sliderValue: INITIAL_VALUE}); }; onRangeSliderReset = () => { this.setState({sliderMinValue: RANGE_INITIAL_MIN, sliderMaxValue: RANGE_INITIAL_MAX}); }; onGradientValueChange = (value: string, alpha: number) => { this.setState({color: value, alpha}); }; onGroupValueChange = (value: string) => { console.warn('onGroupValueChange: ', value); }; getReverseStyle = () => { return Constants.isRTL && this.state.forceLTR && styles.ltr; }; renderDefaultSliderExample() { const {sliderValue, forceLTR} = this.state; return ( Default slider ${sliderValue} ); } renderNegativeSliderExample() { return ( Negatives ); } renderDisabledSliderExample() { return ( Disabled ); } renderCustomSlider() { return ( <> Custom with Steps ); } renderRangeSliderExample() { const {sliderMinValue, sliderMaxValue, forceLTR} = this.state; return ( Range Slider min. {sliderMinValue}% max. {sliderMaxValue}% ); } renderRangeSliderWithValuesExample() { const {sliderMinValue2, sliderMaxValue2, forceLTR} = this.state; return ( Range w/ initial values and no default gap min. {sliderMinValue2}% max. {sliderMaxValue2}% ); } renderGradientSlidersExample() { const {color, alpha} = this.state; return ( Gradient Sliders DEFAULT HUE ); } renderColorSliderGroupExample() { const {color} = this.state; return ( Color Slider Group ); } render() { return ( Sliders