import React, { useState } from 'react' import { FormattedMessage } from 'react-intl' import DraftSettingSa from '../DraftSettingSa' import DraftSettingMargin from '../DraftSettingMargin' import DraftSettingComplete from '../DraftSettingComplete' import DraftSettingPaperless from '../DraftSettingPaperless' import DraftSettingAdvanced from '../DraftSettingAdvanced' import DraftSettingUnits from '../DraftSettingUnits' import DraftSettingLanguage from '../DraftSettingLanguage' import DraftSettingOnly from '../DraftSettingOnly' import RightIcon from '@material-ui/icons/KeyboardArrowRight' const DraftSettings = ({ units = 'metric', raiseEvent, updateValue, noDocs, pattern, config, data = { settings: {} } }) => { // State const [expanded, setExpanded] = useState([]) // Building blocks const noyes = [, ] const hideshow = [, ] const metricimperial = { metric: , imperial: } const labels = { sa: { none: , dflt: , custom: }, only: { dflt: , custom: }, paperless: noyes, advanced: hideshow, complete: hideshow } // Methods 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) } const getDefault = (setting, pattern = false) => { if (pattern && typeof pattern.settings[setting] !== 'undefined') return pattern.settings[setting] switch (setting) { case 'sa': return 10 case 'only': return 'dflt' case 'complete': return true case 'margin': return 2 case 'units': return units default: return false } } const addProps = (setting) => { let childProps = { raiseEvent, updateValue, units, key: setting, name: setting, labels: labels[setting], noDocs, dflt: getDefault(setting, pattern), designDflt: getDefault(setting) } childProps.title = childProps.desc = if (setting === 'only') { childProps.customDflt = [] childProps.parts = {} if (config.draftOrder) { for (let part of config.draftOrder) childProps.parts[part] = } } if (typeof data.settings[setting] !== 'undefined') childProps.value = data.settings[setting] else childProps.value = null return childProps } const groups = { advanced: [ , , , , ] } return ( <>
{data.settings.advanced && (
    {Object.keys(groups).map((group) => { let open = true if (expanded.indexOf(group) === -1) open = false let children = null if (open) children = groups[group].map((component) => component) return (
  • toggleGroup(group)}>
  • {children}
    ) })}
)} ) } export default DraftSettings