UNPKG

react-garden

Version:

React + TypeScript + ThreeJS app using Material UI on NextJS, Apollo Client, GraphQL + WordPress REST APIs, for ThreeD web development.. a part of the threed.ai code family.

68 lines (60 loc) 1.68 kB
// ** React Imports import { useState } from 'react' // ** MUI Imports import Slider from '@mui/material/Slider' const valuetext = value => { return `${value}°C` } const minDistance = 10 const SliderMinimumDistance = () => { // ** States const [value1, setValue1] = useState([20, 37]) const [value2, setValue2] = useState([20, 37]) const handleChange1 = (event, newValue, activeThumb) => { if (!Array.isArray(newValue)) { return } if (activeThumb === 0) { setValue1([Math.min(newValue[0], value1[1] - minDistance), value1[1]]) } else { setValue1([value1[0], Math.max(newValue[1], value1[0] + minDistance)]) } } const handleChange2 = (event, newValue, activeThumb) => { if (!Array.isArray(newValue)) { return } if (newValue[1] - newValue[0] < minDistance) { if (activeThumb === 0) { const clamped = Math.min(newValue[0], 100 - minDistance) setValue2([clamped, clamped + minDistance]) } else { const clamped = Math.max(newValue[1], minDistance) setValue2([clamped - minDistance, clamped]) } } else { setValue2(newValue) } } return ( <div> <Slider disableSwap value={value1} onChange={handleChange1} valueLabelDisplay='auto' getAriaValueText={valuetext} getAriaLabel={() => 'Minimum distance'} /> <Slider disableSwap value={value2} onChange={handleChange2} valueLabelDisplay='auto' getAriaValueText={valuetext} getAriaLabel={() => 'Minimum distance shift'} /> </div> ) } export default SliderMinimumDistance