1
0
Fork 0
freesewing/sites/shared/components/workbench/menus/test-design-options/index.mjs

106 lines
3.2 KiB
JavaScript
Raw Normal View History

import { OptionsIcon } from 'shared/components/icons.mjs'
import { Chevron } from 'shared/components/navigation/primary.mjs'
2023-05-11 19:14:48 +02:00
import { DesignOptionGroup } from '../design-options/index.mjs'
import { Option } from './option.mjs'
2023-05-11 19:14:48 +02:00
import { Ul, Details, TopSummary, TopSumTitle } from 'shared/components/workbench/menus/index.mjs'
2022-02-12 15:23:37 +01:00
import { useTranslation } from 'next-i18next'
2022-09-06 15:33:38 +02:00
import { optionsMenuStructure } from 'shared/utils.mjs'
2022-09-14 15:02:39 +02:00
import { adult, doll, giant } from '@freesewing/models'
2022-09-06 17:46:51 +02:00
const groups = { adult, doll, giant }
const SampleDesignOption = (props) => {
2022-09-06 17:46:51 +02:00
const { t } = useTranslation(['app'])
return (
<Option
updateGist={props.updateGist}
option={props.option}
design={props.design}
active={props.gist.sample?.option}
label={t(`o_${props.design.designConfig.data.name}:${props.option}.t`)}
sampleSettings={{ type: 'option', option: props.option }}
/>
)
2022-09-06 17:46:51 +02:00
}
2022-02-12 15:23:37 +01:00
export const TestDesignOptions = (props) => {
const { t } = useTranslation(['app'])
const optionsMenu = optionsMenuStructure(props.design.patternConfig.options)
2022-02-12 15:23:37 +01:00
2022-09-06 17:46:51 +02:00
const measies = props.draft?.config?.measurements || []
2022-02-12 15:23:37 +01:00
return (
2022-09-06 17:46:51 +02:00
<>
<Details open>
<TopSummary icon={<OptionsIcon />}>
<TopSumTitle>{t('designOptions')}</TopSumTitle>
<Chevron />
</TopSummary>
<Ul className="pl-5 list-inside">
{Object.entries(optionsMenu).map(([group, options]) =>
typeof options === 'string' ? (
2023-02-12 11:26:25 -06:00
<SampleDesignOption
{...props}
type={options}
option={group}
key={group}
sampleSettings={{ type: 'option', options }}
/>
) : (
2023-05-11 19:14:48 +02:00
<DesignOptionGroup
{...props}
group={group}
options={options}
key={group}
Option={SampleDesignOption}
/>
)
)}
</Ul>
</Details>
2022-09-06 17:46:51 +02:00
<Details open>
<TopSummary icon={<OptionsIcon />}>
<TopSumTitle>{t('measurements')}</TopSumTitle>
<Chevron />
</TopSummary>
<Ul className="pl-5 list-inside">
{measies.map((m) => (
<Option
updateGist={props.updateGist}
option={m}
design={props.design}
active={props.gist.sample?.option}
key={m}
label={m}
sampleSettings={{ type: 'measurement', measurement: m }}
/>
))}
</Ul>
</Details>
2022-09-06 17:46:51 +02:00
<Details open>
<TopSummary icon={<OptionsIcon />}>
<TopSumTitle>{t('models')}</TopSumTitle>
<Chevron />
</TopSummary>
<Ul className="pl-5 list-inside">
{Object.entries(groups).map(([group, modelGroups]) =>
Object.entries(modelGroups).map(([name, models]) => (
<Option
updateGist={props.updateGist}
label={`${group} - ${name}`}
design={props.design}
active={props.gist.sample?.option}
key={name}
sampleSettings={{ type: 'models', models }}
/>
))
)}
</Ul>
</Details>
2022-09-06 17:46:51 +02:00
</>
2022-02-12 15:23:37 +01:00
)
}