diff --git a/sites/shared/components/icons.mjs b/sites/shared/components/icons.mjs index 619d11cea5c..830fdcbe8cd 100644 --- a/sites/shared/components/icons.mjs +++ b/sites/shared/components/icons.mjs @@ -282,6 +282,12 @@ export const EmailIcon = (props) => ( ) +export const ExpandIcon = (props) => ( + + + +) + export const ExportIcon = (props) => ( diff --git a/sites/shared/components/workbench/gist.mjs b/sites/shared/components/workbench/gist.mjs index bcec5daad2c..497db143b8e 100644 --- a/sites/shared/components/workbench/gist.mjs +++ b/sites/shared/components/workbench/gist.mjs @@ -27,6 +27,7 @@ export const defaultGist = { margin: 2, renderer: 'react', embed: true, + expand: false, } export const preloadGist = { diff --git a/sites/shared/components/workbench/menus/core-settings/config.mjs b/sites/shared/components/workbench/menus/core-settings/config.mjs index ba8c4339b23..ef9d5509011 100644 --- a/sites/shared/components/workbench/menus/core-settings/config.mjs +++ b/sites/shared/components/workbench/menus/core-settings/config.mjs @@ -8,6 +8,7 @@ import { DetailIcon, IncludeIcon, MarginIcon, + ExpandIcon, } from 'shared/components/icons.mjs' export const defaultSamm = (units, inMm = true) => { @@ -106,6 +107,20 @@ export const loadSettingsConfig = ({ }, icon: DetailIcon, }, + expand: { + control: 4, // Show when control > 3 + list: [0, 1], + dflt: 0, + choiceTitles: { + 0: 'expandNo', + 1: 'expandYes', + }, + valueTitles: { + 0: 'no', + 1: 'yes', + }, + icon: ExpandIcon, + }, only: { control: 4, // Show when control > 3 dflt: false, diff --git a/sites/shared/components/workbench/menus/core-settings/en.yaml b/sites/shared/components/workbench/menus/core-settings/en.yaml index f4ca2d81e62..1740f71c875 100644 --- a/sites/shared/components/workbench/menus/core-settings/en.yaml +++ b/sites/shared/components/workbench/menus/core-settings/en.yaml @@ -9,6 +9,8 @@ sabool.t: Include Seam Allowance sabool.d: Controls whether or not to include seam allowance in your pattern complete.t: Details complete.d: Controls how detailed the pattern is; Either a complete pattern with all details, or a basic outline of the pattern parts +expand.t: Expand +expand.d: Controls efforts to save paper. Disable this to expand all pattern parts at the cost of using more space. only.t: Included Parts only.d: Use this to control exactly which pattern parts will be included in your pattern locale.t: Language @@ -35,6 +37,10 @@ completeYes.t: Generate a complete pattern completeYes.d: This will generate a complete pattern with all notations, lines, markings. Use this if you are not certain what to choose. completeNo.t: Generate a pattern outline completeNo.d: Only generate the outline of the pattern parts. Use this if you are looking to use a lasercutter or have other specific needs. +expandYes.t: Expand all pattern parts +expandYes.d: This will generate a pattern where all pattern parts are drawn to their full size, even if they are simple rectangles. +expandNo.t: Keep patterns parts compact where possible +expandNo.d: This will draw a more dense representation of the pattern which includes all info without using up too much space & paper. paperlessNo.t: Generate a regular pattern paperlessNo.d: This will generate a regular pattern, which you can then print out. paperlessYes.t: Generate a paperless pattern diff --git a/sites/shared/components/workbench/menus/core-settings/inputs.mjs b/sites/shared/components/workbench/menus/core-settings/inputs.mjs index 7767c3799b4..e2c786c0e6d 100644 --- a/sites/shared/components/workbench/menus/core-settings/inputs.mjs +++ b/sites/shared/components/workbench/menus/core-settings/inputs.mjs @@ -13,6 +13,7 @@ const OnlySettingInput = (props) => { export const inputs = { complete: ListInput, + expand: ListInput, locale: ListInput, margin: MmInput, only: OnlySettingInput, diff --git a/sites/shared/components/workbench/menus/core-settings/values.mjs b/sites/shared/components/workbench/menus/core-settings/values.mjs index 075957bf321..8cfc51c8299 100644 --- a/sites/shared/components/workbench/menus/core-settings/values.mjs +++ b/sites/shared/components/workbench/menus/core-settings/values.mjs @@ -14,6 +14,7 @@ const OnlySettingValue = ({ current, config }) => ( export const values = { complete: ListValue, + expand: ListValue, locale: ListValue, margin: MmValue, only: OnlySettingValue, diff --git a/sites/shared/components/workbench/views/view-header.mjs b/sites/shared/components/workbench/views/view-header.mjs index 68be0136588..fe138b83bd6 100644 --- a/sites/shared/components/workbench/views/view-header.mjs +++ b/sites/shared/components/workbench/views/view-header.mjs @@ -21,6 +21,7 @@ import { BookmarkIcon, ZoomInIcon, ZoomOutIcon, + ExpandIcon, } from 'shared/components/icons.mjs' import { shownHeaderSelector } from 'shared/components/wrappers/header.mjs' @@ -158,6 +159,17 @@ export const ViewHeader = ({ update, settings, ui, control, account, design, set } title={t('core-settings:complete.t')} /> + + update.settings( + ['expand'], + typeof settings.expand === 'undefined' ? 1 : settings.expand ? 0 : 1 + ) + } + title={t('core-settings:expand.t')} + />