1
0
Fork 0

🚧 More work on React components

This commit is contained in:
Joost De Cock 2019-04-27 12:21:41 +02:00
parent e7b7c5a7dd
commit f8e3d6ceb5
27 changed files with 25 additions and 233 deletions

View file

@ -1,59 +0,0 @@
import React, { useState } from "react";
import PropTypes from "prop-types";
import Slider from "@material-ui/lab/Slider";
import { withStyles } from "@material-ui/core/styles";
const PaddedSlider = withStyles({
container: {
padding: "25px 0",
//overflowX: "hidden" // See: https://github.com/mui-org/material-ui/issues/14234
},
track: { height: "4px" },
thumb: { width: "16px", height: "16px" }
})(Slider);
const FormFieldSlider = props => {
const [value, setValue] = useState(props.value);
const update = (evt, newValue) => {
props.updateValue(props.name, newValue, evt);
setValue(newValue);
};
// Force state update when rerendering due to props change
if (props.value !== value) setValue(props.value);
return (
<PaddedSlider
value={value}
min={props.min}
max={props.max}
step={props.step}
onChange={update}
onDragEnd={update}
classes={{
track: "slider-track",
thumb: "slider-thumb"
}}
aria-labelledby={props.label}
/>
);
};
FormFieldSlider.propTypes = {
min: PropTypes.number,
max: PropTypes.number,
step: PropTypes.number,
updateValue: PropTypes.func.isRequired,
name: PropTypes.string.isRequired,
label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])])
};
FormFieldSlider.defaultProps = {
min: 0,
max: 100,
step: 0.1,
label: false
};
export default FormFieldSlider;