diff --git a/packages/components/src/DraftActions/index.js b/packages/components/src/DraftActions/index.js
new file mode 100644
index 00000000000..464d2511488
--- /dev/null
+++ b/packages/components/src/DraftActions/index.js
@@ -0,0 +1,89 @@
+import React, { useState } from "react";
+import PropTypes from "prop-types";
+import { gistDefaults } from "../utils";
+import { patternInfo, patternList } from "@freesewing/patterns";
+import { FormattedMessage } from "react-intl";
+import List from "@material-ui/core/List";
+import DraftSettingSa from "../DraftSettingSa";
+import DraftSettingMargin from "../DraftSettingMargin";
+import DraftSettingComplete from "../DraftSettingComplete";
+import DraftSettingPaperless from "../DraftSettingPaperless";
+import DraftSettingUnits from "../DraftSettingUnits";
+import DraftSettingLanguage from "../DraftSettingLanguage";
+import DraftSettingOnly from "../DraftSettingOnly";
+import DownIcon from "@material-ui/icons/KeyboardArrowDown";
+
+const DraftActions = 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 paperSizes = ["A4", "Letter", "A3", "Tabloid", "A2", "A1", "A0"];
+ let groups = {
+ saveDraft: [
+
+
+ ,
+
+
+ ,
+
+
+ ,
+
+
+
+ ],
+ exportDraft: [
+
+ : PDF
+ ,
+ paperSizes.map(size => (
+
+ : {size}
+
+ ))
+ ]
+ };
+
+ return (
+
+ {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}
+
+ );
+ })}
+
+ );
+};
+
+DraftActions.propTypes = {};
+
+DraftActions.defaultProps = {};
+
+export default DraftActions;
diff --git a/packages/components/src/DraftActions/stories.js b/packages/components/src/DraftActions/stories.js
new file mode 100644
index 00000000000..6b39d8c0c0e
--- /dev/null
+++ b/packages/components/src/DraftActions/stories.js
@@ -0,0 +1,31 @@
+import React from "react";
+import { storiesOf } from "@storybook/react";
+import DraftSettings from ".";
+
+const props = {
+ triggerAction: (type, data) =>
+ console.log(`Action of type ${type} triggered, data passed is`, data),
+ updateValue: (type, data) =>
+ console.log(`Update ${type} with new value`, data),
+ gist: {
+ settings: {
+ options: {}
+ }
+ },
+ languages: {
+ de: "German",
+ en: "English",
+ es: "Spanish",
+ fr: "French",
+ nl: "Dutch"
+ },
+ language: "en"
+};
+
+storiesOf("DraftActions", module)
+ .add("Simon metric", () => (
+
+ ))
+ .add("Trayvon imperial", () => (
+
+ ));
diff --git a/packages/components/src/DraftSettingLanguage/index.js b/packages/components/src/DraftSettingLanguage/index.js
index 7a4ebba385e..eed59874f81 100644
--- a/packages/components/src/DraftSettingLanguage/index.js
+++ b/packages/components/src/DraftSettingLanguage/index.js
@@ -5,6 +5,7 @@ import OptionPreamble from "../OptionPreamble";
const DraftSettingLanguage = props => {
const [value, setValue] = useState(props.dflt);
+ const [expanded, setExpanded] = useState(false);
const update = (name, newValue, evt) => {
props.updateValue(props.name, newValue);
@@ -16,8 +17,22 @@ const DraftSettingLanguage = props => {
props.updateValue(props.name, props.dflt);
};
+ const toggleExpanded = () => setExpanded(!expanded);
+
+ const option = (
+
+ );
+
return (
-
+
{
id={"po-list-" + props.name}
displayValue={props.languages[value]}
reset={reset}
+ toggleExpanded={toggleExpanded}
+ expanded={expanded}
showHelp={() =>
props.triggerAction("showHelp", {
type: "draftSetting",
value: props.name
})
}
+ option={option}
/>
-
-
+
);
};
diff --git a/packages/components/src/DraftSettingOnly/index.js b/packages/components/src/DraftSettingOnly/index.js
index 81cfef1c500..be348937932 100644
--- a/packages/components/src/DraftSettingOnly/index.js
+++ b/packages/components/src/DraftSettingOnly/index.js
@@ -8,6 +8,7 @@ import OptionPreamble from "../OptionPreamble";
const DraftSettingOnly = props => {
const [value, setValue] = useState(props.dflt);
const [parts, setParts] = useState([]);
+ const [expanded, setExpanded] = useState(false);
const update = (name, newValue, evt) => {
setValue(newValue);
@@ -26,38 +27,28 @@ const DraftSettingOnly = props => {
setParts(newValue);
};
+ const toggleExpanded = () => setExpanded(!expanded);
+
const list = {
dflt: props.labels.dflt,
custom: props.labels.custom
};
- return (
-
-
- props.triggerAction("showHelp", {
- type: "draftSetting",
- value: "only"
- })
- }
- />
-
- {value === "custom" ? (
+ let option = (
+
+ );
+ if (value === "custom")
+ option = (
+
+ {option}
{
updateValue={updateCustom}
list={list}
/>
- ) : (
- ""
- )}
-
+
+ );
+
+ return (
+
+
+ props.triggerAction("showHelp", {
+ type: "draftSetting",
+ value: "only"
+ })
+ }
+ option={option}
+ />
+
);
};
diff --git a/packages/components/src/DraftSettingSa/index.js b/packages/components/src/DraftSettingSa/index.js
index 015cd308bb8..2fc06657c8d 100644
--- a/packages/components/src/DraftSettingSa/index.js
+++ b/packages/components/src/DraftSettingSa/index.js
@@ -9,6 +9,7 @@ const DraftSettingSa = props => {
const [value, setValue] = useState("dflt");
const [saValue, setSaValue] = useState(defaultSa[props.units]);
const [customValue, setCustomValue] = useState(10);
+ const [expanded, setExpanded] = useState(false);
const update = (name, newValue, evt) => {
switch (newValue) {
@@ -35,6 +36,7 @@ const DraftSettingSa = props => {
setSaValue(defaultSa[props.units]);
props.updateValue("sa", defaultSa[props.units]);
};
+ const toggleExpanded = () => setExpanded(!expanded);
const updateCustom = (name, newValue, evt) => {
newValue = roundMm(newValue);
@@ -56,33 +58,21 @@ const DraftSettingSa = props => {
custom: props.labels.custom
};
- return (
-
-
- props.triggerAction("showHelp", {
- type: "draftSetting",
- value: "sa"
- })
- }
- />
-
- {value === "custom" ? (
+ let option = (
+
+ );
+ if (value === "custom")
+ option = (
+
+ {option}
{
max={25.4}
step={sliderStep[props.units]}
/>
- ) : (
- ""
- )}
-
+
+ );
+
+ return (
+
+
+ props.triggerAction("showHelp", {
+ type: "draftSetting",
+ value: "sa"
+ })
+ }
+ option={option}
+ />
+
);
};
diff --git a/packages/components/src/DraftSettingUnits/index.js b/packages/components/src/DraftSettingUnits/index.js
index f886e5a86a9..6a47603f324 100644
--- a/packages/components/src/DraftSettingUnits/index.js
+++ b/packages/components/src/DraftSettingUnits/index.js
@@ -4,6 +4,7 @@ import OptionPreamble from "../OptionPreamble";
const DraftSettingUnits = props => {
const [value, setValue] = useState(props.dflt);
+ const [expanded, setExpanded] = useState(false);
const update = (name, newValue, evt) => {
props.updateValue(props.name, newValue);
@@ -15,8 +16,22 @@ const DraftSettingUnits = props => {
props.updateValue(props.name, props.dflt);
};
+ const toggleExpanded = () => setExpanded(!expanded);
+
+ let option = (
+
+ );
+
return (
-
+
{
id="po-list-units"
displayValue={props.list[value]}
reset={reset}
+ toggleExpanded={toggleExpanded}
+ expanded={expanded}
showHelp={() =>
props.triggerAction("showHelp", {
type: "draftSetting",
value: "units"
})
}
+ option={option}
/>
-
-
+
);
};
diff --git a/packages/components/src/DraftSettings/index.js b/packages/components/src/DraftSettings/index.js
index dc101d450c9..7c42a9a0eb7 100644
--- a/packages/components/src/DraftSettings/index.js
+++ b/packages/components/src/DraftSettings/index.js
@@ -4,9 +4,6 @@ import { 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/KeyboardArrowDown";
-import ExpandedIcon from "@material-ui/icons/ArrowRight";
import DraftSettingSa from "../DraftSettingSa";
import DraftSettingMargin from "../DraftSettingMargin";
import DraftSettingComplete from "../DraftSettingComplete";
@@ -14,6 +11,7 @@ import DraftSettingPaperless from "../DraftSettingPaperless";
import DraftSettingUnits from "../DraftSettingUnits";
import DraftSettingLanguage from "../DraftSettingLanguage";
import DraftSettingOnly from "../DraftSettingOnly";
+import DownIcon from "@material-ui/icons/KeyboardArrowDown";
const DraftSettings = props => {
const [expanded, setExpanded] = useState([]);
@@ -104,27 +102,24 @@ const DraftSettings = props => {
{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)}
+
+
-
- {open ? (
-
- ) : (
-
- )}
+ toggleGroup(group)}>
+
-
- {expanded.indexOf(group) === -1
- ? null
- : groups[group].map(component => component)}
+
+ {children}
);
})}
diff --git a/packages/components/src/GistConfigurator/index.js b/packages/components/src/GistConfigurator/index.js
index 9ee3397d412..d5146d97231 100644
--- a/packages/components/src/GistConfigurator/index.js
+++ b/packages/components/src/GistConfigurator/index.js
@@ -13,6 +13,7 @@ import CollapsedIcon from "@material-ui/icons/ArrowDropDown";
import ExpandedIcon from "@material-ui/icons/ArrowRight";
import PatternOptions from "../PatternOptions";
import DraftSettings from "../DraftSettings";
+import DraftActions from "../DraftActions";
const GistConfigurator = props => {
console.log(languages);
@@ -60,6 +61,12 @@ const GistConfigurator = props => {
languages={languages[props.intl.locale]}
/>
+
+
+
+
+
+
);
};
diff --git a/packages/components/src/PatternOptions/index.js b/packages/components/src/PatternOptions/index.js
index 90a7d6cf7bd..ff6217ca3b1 100644
--- a/packages/components/src/PatternOptions/index.js
+++ b/packages/components/src/PatternOptions/index.js
@@ -9,7 +9,6 @@ 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 DownIcon from "@material-ui/icons/KeyboardArrowDown";
const PatternOptions = props => {
@@ -48,7 +47,9 @@ const PatternOptions = props => {
output.push(
toggleGroup(group)}>
-
+
{children}
diff --git a/packages/css-theme/src/components/_pattern-options.scss b/packages/css-theme/src/components/_pattern-options.scss
index a06f1abf776..d71e749707e 100644
--- a/packages/css-theme/src/components/_pattern-options.scss
+++ b/packages/css-theme/src/components/_pattern-options.scss
@@ -40,7 +40,7 @@ ul.nav span.custom {
font-weight: bold;
}
.col-exp {
- transition: max-height 0.3s ease-in-out, opacity 0.2s ease 0.2s;
+ transition: max-height 0.2s ease-in-out, opacity 0.1s cubic-bezier(.55,.06,.68,.19) 0.05s;
}
.col-exp.expanded {
@@ -64,6 +64,7 @@ svg.icon-col-exp.expanded {
opacity: 1;
}
+ul.nav.l2 div.col-exp,
ul.nav.l3 div.col-exp {
margin: 0 27px;
}