import React, { useState } from "react"; import PropTypes from "prop-types"; import Pct from "../PatternOptionPercentage"; import Deg from "../PatternOptionDegree"; import Mm from "../PatternOptionMillimeter"; import Bool from "../PatternOptionBool"; import OptionGroup from "../OptionGroup"; import { optionType, defaultGist, gistDefaults } from "../utils"; import { patternInfo, patternList } from "@freesewing/patterns"; import { FormattedMessage } from "react-intl"; import List from "@material-ui/core/List"; import ListSubheader from "@material-ui/core/ListSubheader"; import CollapsedIcon from "@material-ui/icons/ArrowDropDown"; import ExpandedIcon from "@material-ui/icons/ArrowRight"; const PatternOptions = props => { const [expanded, setExpanded] = useState([]); const toggleGroup = group => { let shown = expanded.slice(0); let index = shown.indexOf(group); if (index === -1) shown.push(group); else shown.splice(index, 1); setExpanded(shown); }; let pattern = patternInfo[props.pattern]; let dflts = gistDefaults(pattern.config, props.gist); return ( } className="pattern-options gist-side"> {Object.keys(pattern.optionGroups).map(group => { let open = true; if (expanded.indexOf(group) === -1) open = false; return ( toggleGroup(group)} >

{open ? ( ) : ( )}

{expanded.indexOf(group) === -1 ? null : ( )}
); })}
); }; PatternOptions.propTypes = { pattern: PropTypes.oneOf(patternList), units: PropTypes.oneOf(["metric", "imperial"]).isRequired }; PatternOptions.defaultProps = {}; export default PatternOptions;