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