@pareto-engineering/design-system 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/cjs/a/ToggleSwitch/ToggleSwitch.js +10 -5
  2. package/dist/cjs/f/FormInput/FormInput.js +7 -0
  3. package/dist/cjs/f/fields/EditorInput/EditorInput.js +9 -7
  4. package/dist/cjs/f/fields/SelectInput/SelectInput.js +4 -5
  5. package/dist/cjs/f/fields/SelectInput/common/Single/Single.js +3 -3
  6. package/dist/cjs/g/FormBuilder/FormBuilder.js +77 -0
  7. package/dist/cjs/g/FormBuilder/common/Builder/Builder.js +156 -0
  8. package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.js +229 -0
  9. package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/index.js +13 -0
  10. package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +192 -0
  11. package/dist/cjs/g/FormBuilder/common/Builder/common/Section/Section.js +133 -0
  12. package/dist/cjs/g/FormBuilder/common/Builder/common/Section/index.js +13 -0
  13. package/dist/cjs/g/FormBuilder/common/Builder/common/index.js +19 -0
  14. package/dist/cjs/g/FormBuilder/common/Builder/index.js +13 -0
  15. package/dist/cjs/g/FormBuilder/common/Builder/styles.scss +106 -0
  16. package/dist/cjs/g/FormBuilder/common/Renderer/Renderer.js +119 -0
  17. package/dist/cjs/g/FormBuilder/common/Renderer/common/Section/Section.js +60 -0
  18. package/dist/cjs/g/FormBuilder/common/Renderer/common/Section/index.js +13 -0
  19. package/dist/cjs/g/FormBuilder/common/Renderer/common/index.js +12 -0
  20. package/dist/cjs/g/FormBuilder/common/Renderer/index.js +13 -0
  21. package/dist/cjs/g/FormBuilder/common/Renderer/styles.scss +15 -0
  22. package/dist/cjs/g/FormBuilder/common/index.js +19 -0
  23. package/dist/cjs/g/FormBuilder/index.js +13 -0
  24. package/dist/cjs/g/FormBuilder/styles.scss +7 -0
  25. package/dist/cjs/g/index.js +8 -1
  26. package/dist/es/a/ToggleSwitch/ToggleSwitch.js +10 -5
  27. package/dist/es/f/FormInput/FormInput.js +7 -0
  28. package/dist/es/f/fields/EditorInput/EditorInput.js +9 -7
  29. package/dist/es/f/fields/SelectInput/SelectInput.js +4 -3
  30. package/dist/es/f/fields/SelectInput/common/Single/Single.js +3 -3
  31. package/dist/es/g/FormBuilder/FormBuilder.js +65 -0
  32. package/dist/es/g/FormBuilder/common/Builder/Builder.js +142 -0
  33. package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.js +216 -0
  34. package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/index.js +2 -0
  35. package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +192 -0
  36. package/dist/es/g/FormBuilder/common/Builder/common/Section/Section.js +120 -0
  37. package/dist/es/g/FormBuilder/common/Builder/common/Section/index.js +2 -0
  38. package/dist/es/g/FormBuilder/common/Builder/common/index.js +2 -0
  39. package/dist/es/g/FormBuilder/common/Builder/index.js +2 -0
  40. package/dist/es/g/FormBuilder/common/Builder/styles.scss +106 -0
  41. package/dist/es/g/FormBuilder/common/Renderer/Renderer.js +113 -0
  42. package/dist/es/g/FormBuilder/common/Renderer/common/Section/Section.js +52 -0
  43. package/dist/es/g/FormBuilder/common/Renderer/common/Section/index.js +2 -0
  44. package/dist/es/g/FormBuilder/common/Renderer/common/index.js +1 -0
  45. package/dist/es/g/FormBuilder/common/Renderer/index.js +2 -0
  46. package/dist/es/g/FormBuilder/common/Renderer/styles.scss +15 -0
  47. package/dist/es/g/FormBuilder/common/index.js +2 -0
  48. package/dist/es/g/FormBuilder/index.js +2 -0
  49. package/dist/es/g/FormBuilder/styles.scss +7 -0
  50. package/dist/es/g/index.js +2 -1
  51. package/package.json +3 -3
  52. package/src/stories/a/ToggleSwitch.stories.jsx +8 -2
  53. package/src/stories/g/FormBuilder.stories.jsx +97 -0
  54. package/src/ui/a/ToggleSwitch/ToggleSwitch.jsx +9 -3
  55. package/src/ui/f/FormInput/FormInput.jsx +10 -0
  56. package/src/ui/f/fields/EditorInput/EditorInput.jsx +5 -6
  57. package/src/ui/f/fields/SelectInput/SelectInput.jsx +5 -2
  58. package/src/ui/f/fields/SelectInput/common/Single/Single.jsx +2 -1
  59. package/src/ui/g/FormBuilder/FormBuilder.jsx +85 -0
  60. package/src/ui/g/FormBuilder/common/Builder/Builder.jsx +175 -0
  61. package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.jsx +279 -0
  62. package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/index.js +2 -0
  63. package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +192 -0
  64. package/src/ui/g/FormBuilder/common/Builder/common/Section/Section.jsx +156 -0
  65. package/src/ui/g/FormBuilder/common/Builder/common/Section/index.js +2 -0
  66. package/src/ui/g/FormBuilder/common/Builder/common/index.js +2 -0
  67. package/src/ui/g/FormBuilder/common/Builder/index.js +2 -0
  68. package/src/ui/g/FormBuilder/common/Builder/styles.scss +106 -0
  69. package/src/ui/g/FormBuilder/common/Renderer/Renderer.jsx +145 -0
  70. package/src/ui/g/FormBuilder/common/Renderer/common/Section/Section.jsx +75 -0
  71. package/src/ui/g/FormBuilder/common/Renderer/common/Section/index.js +2 -0
  72. package/src/ui/g/FormBuilder/common/Renderer/common/index.js +1 -0
  73. package/src/ui/g/FormBuilder/common/Renderer/index.js +2 -0
  74. package/src/ui/g/FormBuilder/common/Renderer/styles.scss +15 -0
  75. package/src/ui/g/FormBuilder/common/index.js +2 -0
  76. package/src/ui/g/FormBuilder/index.js +2 -0
  77. package/src/ui/g/FormBuilder/styles.scss +7 -0
  78. package/src/ui/g/index.js +1 -0
  79. package/tests/__snapshots__/Storyshots.test.js.snap +793 -1
@@ -0,0 +1,192 @@
1
+ /* @pareto-engineering/generator-front 1.1.1-alpha.2 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ $default-padding: 1rem;
6
+ $default-margin: 1rem;
7
+ $default-list-width: var(--action-button-width, 18rem);
8
+
9
+ .#{bem.$base}.input-builder {
10
+ border: var(--theme-default-border-style) var(--ui-lines);
11
+ border-radius: calc(var(--theme-default-border-radius) / 2);
12
+ display: flex;
13
+ margin-top: $default-margin;
14
+ padding: $default-padding;
15
+
16
+ > .drag-icon {
17
+ margin-right: $default-margin;
18
+ }
19
+
20
+ > .input-options-container {
21
+ flex: auto;
22
+
23
+ > .controls-container {
24
+ display: flex;
25
+ justify-content: space-between;
26
+ margin-bottom: $default-margin;
27
+
28
+ .#{bem.$base}.select-input {
29
+ flex: .3;
30
+ }
31
+
32
+ >.controls {
33
+ display: flex;
34
+ gap: var(--gap);
35
+
36
+ /* stylelint-disable selector-max-compound-selectors -- required */
37
+ > .is-required {
38
+ display: flex;
39
+ }
40
+
41
+ /* stylelint-disable selector-max-universal -- required */
42
+ > * {
43
+ height: fit-content;
44
+ }
45
+
46
+ > button {
47
+ background-color: transparent;
48
+ border: 0;
49
+ cursor: pointer;
50
+
51
+ /* stylelint-disable max-nesting-depth -- required */
52
+ > .ai-icon,
53
+ .icon {
54
+ font-size: calc(var(--s1) * 1rem);
55
+ }
56
+ }
57
+
58
+ > .actions {
59
+ position: relative;
60
+
61
+ > button {
62
+ background-color: transparent;
63
+ border: 0;
64
+ cursor: pointer;
65
+ }
66
+
67
+ > .#{bem.$base}.popover {
68
+ background-color: var(--background-cards);
69
+ border: var(--theme-default-border-style) var(--main2);
70
+ border-radius: calc(var(--theme-default-border-radius) / 2);
71
+ cursor: default;
72
+ padding: $default-padding;
73
+ width: $default-list-width;
74
+
75
+ > p {
76
+ margin: 0;
77
+ }
78
+
79
+ > ul {
80
+ list-style: none;
81
+ margin: 0;
82
+ padding: 0;
83
+ white-space: nowrap;
84
+
85
+ > .option {
86
+ cursor: pointer;
87
+ padding-block: calc($default-padding / 4);
88
+
89
+ &:not(.with-check-mark) {
90
+ padding-inline: $default-padding;
91
+ }
92
+
93
+ > button {
94
+ background: transparent;
95
+ border: 0;
96
+ color: var(--paragraph);
97
+ cursor: pointer;
98
+ font-size: calc(var(--s0) * .875rem);
99
+ text-align: left;
100
+ width: 100%;
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ > .input-name-description {
110
+ display: flex;
111
+ flex-direction: column;
112
+ gap: var(--gap);
113
+ margin-bottom: $default-margin;
114
+ }
115
+
116
+ > .input-options {
117
+ display: flex;
118
+ flex-direction: column;
119
+ gap: var(--gap);
120
+
121
+ > p {
122
+ margin: 0;
123
+ }
124
+
125
+ > .option-container {
126
+ align-items: center;
127
+ display: flex;
128
+ gap: calc(var(--gap) / 2);
129
+
130
+ > .input-icon-sample {
131
+ border: var(--theme-default-border-style) var(--outline-inputs);
132
+ border-radius: var(--theme-default-border-radius);
133
+ cursor: default;
134
+ height: 1.6rem;
135
+ width: 1.6rem;
136
+
137
+ &.checkbox {
138
+ border-radius: calc(var(--theme-default-border-radius) / 4);
139
+ }
140
+ }
141
+
142
+
143
+ > .#{bem.$base}.text-input {
144
+ flex: .5;
145
+ }
146
+
147
+ > .#{bem.$base}.select-input {
148
+ flex: .3;
149
+ }
150
+
151
+ > button {
152
+ background-color: transparent;
153
+ border: 0;
154
+ color: var(--ui-icons);
155
+ cursor: pointer;
156
+ }
157
+ }
158
+
159
+ >.add-option-cta {
160
+ --color: var(--interactive);
161
+ --border-color: var(--interactive);
162
+ align-items: center;
163
+ align-self: flex-start;
164
+ background-color: transparent;
165
+ border: 0;
166
+ color: var(--color);
167
+ cursor: pointer;
168
+ display: flex;
169
+ gap: calc(var(--gap) / 1.5);
170
+ padding: 0;
171
+ transition: all .2s;
172
+
173
+ &:hover {
174
+ --color: var(--soft-interactive);
175
+ --border-color: var(--soft-interactive);
176
+ }
177
+
178
+ > .icon-container {
179
+ align-items: center;
180
+ border: 2px solid var(--border-color);
181
+ border-radius: 50%;
182
+ display: flex;
183
+ height: 1.6rem;
184
+ justify-content: center;
185
+ width: 1.6rem;
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+
192
+
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _formik = require("formik");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
12
+ var _f = require("../../../../../../f");
13
+ var _ = require("../../../../..");
14
+ var _InputBuilder = require("../InputBuilder");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ /* @pareto-engineering/generator-front 1.1.1-alpha.2 */
19
+
20
+ // Local Definitions
21
+
22
+ const baseClassName = _exports.default.base;
23
+ const componentClassName = 'section';
24
+
25
+ /**
26
+ * This is the component description.
27
+ */
28
+ const Section = _ref => {
29
+ let {
30
+ id,
31
+ className: userClassName,
32
+ style,
33
+ index
34
+ // ...otherProps
35
+ } = _ref;
36
+ const {
37
+ values,
38
+ setFieldValue
39
+ } = (0, _formik.useFormikContext)();
40
+ const section = values.sections[index];
41
+ const handleDeleteInput = inputIndex => {
42
+ const newInputs = [...section.inputs];
43
+ newInputs.splice(inputIndex, 1);
44
+ setFieldValue(`sections.${index}.inputs`, newInputs);
45
+ };
46
+ const handleCopyInput = inputIndex => {
47
+ const inputToCopy = section.inputs[inputIndex];
48
+ const newInputs = [...section.inputs, {
49
+ ...inputToCopy,
50
+ name: `section_${index}_input_${section.inputs.length}`
51
+ }];
52
+ setFieldValue(`sections.${index}.inputs`, newInputs);
53
+ };
54
+ const [draggableInputs, setDraggableInputs] = (0, _react.useState)([]);
55
+ const {
56
+ inputs
57
+ } = section;
58
+ (0, _react.useEffect)(() => {
59
+ const items = inputs.map((input, indx) => ({
60
+ Content: /*#__PURE__*/React.createElement(_InputBuilder.InputBuilder, {
61
+ key: input.name,
62
+ sectionIndex: index,
63
+ inputIndex: indx,
64
+ onDelete: handleDeleteInput,
65
+ onCopy: handleCopyInput
66
+ }),
67
+ identifier: input.name
68
+ }));
69
+ setDraggableInputs(items);
70
+ }, [inputs.length, index]);
71
+ return /*#__PURE__*/React.createElement("div", {
72
+ id: id,
73
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
74
+ style: style
75
+ }, /*#__PURE__*/React.createElement("p", {
76
+ className: "h4"
77
+ }, index === 0 ? 'Form title' : `Section ${index + 1}`), /*#__PURE__*/React.createElement(_f.TextInput, {
78
+ name: `sections.${index}.title`,
79
+ placeholder: `Title of the ${index === 0 ? 'form' : 'section'}`
80
+ }), /*#__PURE__*/React.createElement(_f.EditorInput, {
81
+ name: `sections.${index}.description`,
82
+ label: `${index === 0 ? 'Form' : 'Section'} description`
83
+ }), /*#__PURE__*/React.createElement(_formik.FieldArray, {
84
+ name: `sections.${index}.inputs`
85
+ }, _ref2 => {
86
+ let {
87
+ push
88
+ } = _ref2;
89
+ return /*#__PURE__*/React.createElement(_formik.Form, null, /*#__PURE__*/React.createElement(_.DragAndDrop, {
90
+ items: draggableInputs,
91
+ onOrderChange: reOrderedItems => {
92
+ setDraggableInputs(reOrderedItems);
93
+ const ids = reOrderedItems.map(e => e.identifier);
94
+ setFieldValue(`sections.${index}.orderedInputDragIds`, ids);
95
+ },
96
+ key: draggableInputs.length
97
+ }), /*#__PURE__*/React.createElement("button", {
98
+ type: "button",
99
+ className: "add-question-cta",
100
+ onClick: () => push({
101
+ name: `section_${index}_input_${section.inputs.length}`,
102
+ label: '',
103
+ type: 'text',
104
+ required: false,
105
+ options: [],
106
+ conditionalLogic: null,
107
+ description: ''
108
+ })
109
+ }, /*#__PURE__*/React.createElement("div", {
110
+ className: "icon-container"
111
+ }, /*#__PURE__*/React.createElement("span", {
112
+ className: "icon "
113
+ }, "+")), "Add question"));
114
+ }));
115
+ };
116
+ Section.propTypes = {
117
+ /**
118
+ * The HTML id for this element
119
+ */
120
+ id: _propTypes.default.string,
121
+ /**
122
+ * The HTML class names for this element
123
+ */
124
+ className: _propTypes.default.string,
125
+ /**
126
+ * The React-written, css properties for this element.
127
+ */
128
+ style: _propTypes.default.objectOf(_propTypes.default.string)
129
+ };
130
+ Section.defaultProps = {
131
+ // someProp:false
132
+ };
133
+ var _default = exports.default = Section;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Section", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Section.default;
10
+ }
11
+ });
12
+ var _Section = _interopRequireDefault(require("./Section"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "InputBuilder", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _InputBuilder.InputBuilder;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Section", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _Section.Section;
16
+ }
17
+ });
18
+ var _Section = require("./Section");
19
+ var _InputBuilder = require("./InputBuilder");
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Builder", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Builder.default;
10
+ }
11
+ });
12
+ var _Builder = _interopRequireDefault(require("./Builder"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,106 @@
1
+ /* @pareto-engineering/generator-front 1.1.1-alpha.2 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ $default-margin: 1rem;
6
+
7
+ .#{bem.$base}.builder {
8
+ > form {
9
+ > .section-footer {
10
+ align-items: center;
11
+ display: flex;
12
+ justify-content: space-between;
13
+ margin-top: calc($default-margin * 1.5);
14
+
15
+
16
+ >.add-section-cta {
17
+ --color: var(--interactive);
18
+ --border-color: var(--interactive);
19
+ align-items: center;
20
+ background-color: transparent;
21
+ border: 0;
22
+ color: var(--color);
23
+ cursor: pointer;
24
+ display: flex;
25
+ gap: calc(var(--gap) / 1.5);
26
+ padding: 0;
27
+ transition: all .2s;
28
+
29
+ &:hover {
30
+ --color: var(--soft-interactive);
31
+ --border-color: var(--soft-interactive);
32
+ }
33
+
34
+ /* stylelint-disable-next-line selector-max-compound-selectors -- required */
35
+ > .icon-container {
36
+ align-items: center;
37
+ border: 2px solid var(--border-color);
38
+ border-radius: 50%;
39
+ display: flex;
40
+ height: 1.6rem;
41
+ justify-content: center;
42
+ width: 1.6rem;
43
+ }
44
+ }
45
+
46
+ > .section-navigation {
47
+ align-items: center;
48
+ display: flex;
49
+ flex: .4;
50
+ gap: var(--gap);
51
+
52
+ > .#{bem.$base}.select-input {
53
+ flex: auto;
54
+ }
55
+ }
56
+ }
57
+ > .#{bem.$base}.section {
58
+ border-bottom: var(--theme-default-border-style) var(--on-background-inputs);
59
+
60
+ > .#{bem.$base}.editor-input {
61
+ margin-top: $default-margin;
62
+ }
63
+
64
+ > form {
65
+ /* stylelint-disable selector-max-compound-selectors -- required */
66
+ > .add-question-cta {
67
+ align-items: center;
68
+ background-color: transparent;
69
+ border: 0;
70
+ color: var(--hard-interactive);
71
+ cursor: pointer;
72
+ display: flex;
73
+ gap: var(--gap);
74
+ margin-block: calc($default-margin * 1.5);
75
+ margin-left: auto;
76
+ padding: 0;
77
+ transition: all .2s;
78
+
79
+ /* stylelint-disable-next-line max-nesting-depth -- required */
80
+ &:hover {
81
+ color: var(--interactive);
82
+
83
+ /* stylelint-disable max-nesting-depth -- required */
84
+ > .icon-container {
85
+ background-color: var(--interactive);
86
+ }
87
+ }
88
+
89
+ > .icon-container {
90
+ align-items: center;
91
+ background-color: var(--hard-interactive);
92
+ border-radius: 50%;
93
+ display: flex;
94
+ height: 1.6rem;
95
+ justify-content: center;
96
+ width: 1.6rem;
97
+
98
+ > .icon {
99
+ color: var(--on-interactive);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _formik = require("formik");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
12
+ var _b = require("../../../../b");
13
+ require("./styles.scss");
14
+ var _common = require("./common");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /* @pareto-engineering/generator-front 1.1.1-alpha.2 */ // Local Definitions
19
+ const baseClassName = _exports.default.base;
20
+ const componentClassName = 'renderer';
21
+
22
+ /**
23
+ * This is the component description.
24
+ */
25
+ const Renderer = _ref => {
26
+ let {
27
+ id,
28
+ className: userClassName,
29
+ style,
30
+ formData,
31
+ onSave
32
+ // ...otherProps
33
+ } = _ref;
34
+ const [currentSectionIndex, setCurrentSectionIndex] = (0, _react.useState)(0);
35
+ const [sectionHistory, setSectionHistory] = (0, _react.useState)([]);
36
+ const initialValues = formData.sections.reduce((acc, section) => {
37
+ section.inputs.forEach(input => {
38
+ acc[input.name] = '';
39
+ });
40
+ return acc;
41
+ }, {});
42
+ const handleSubmit = values => {
43
+ const currentSection = formData.sections[currentSectionIndex];
44
+ // by default, 'next' section is the immediate section after the current one
45
+ let nextSectionIndex = currentSectionIndex + 1;
46
+
47
+ // Any other value is either submit or an index to a section
48
+ if (currentSection.navigation.nextSection !== 'next') {
49
+ nextSectionIndex = currentSection.navigation.nextSection === 'submit' ? formData.sections.length // submit
50
+ : parseInt(currentSection.navigation.nextSection, 10); // go to specific section
51
+ }
52
+ if (nextSectionIndex >= formData.sections.length) {
53
+ // submit
54
+ onSave(values);
55
+ } else {
56
+ // Record index history to navigate back
57
+ setSectionHistory([...sectionHistory, currentSectionIndex]);
58
+ // go to evaluated next section
59
+ setCurrentSectionIndex(nextSectionIndex);
60
+ }
61
+ };
62
+ const handlePrevious = () => {
63
+ if (sectionHistory.length > 0) {
64
+ // get the last index of array(the immediate last section)
65
+ const previousSectionIndex = sectionHistory.pop();
66
+ // set the immediate last section indx as current
67
+ setCurrentSectionIndex(previousSectionIndex);
68
+ setSectionHistory([...sectionHistory]);
69
+ }
70
+ };
71
+ return /*#__PURE__*/React.createElement("div", {
72
+ id: id,
73
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
74
+ style: style
75
+ }, /*#__PURE__*/React.createElement(_formik.Formik, {
76
+ initialValues: initialValues,
77
+ onSubmit: handleSubmit
78
+ }, /*#__PURE__*/React.createElement(_formik.Form, null, formData.sections.map((section, sectionIndex) => sectionIndex === currentSectionIndex && /*#__PURE__*/React.createElement(_common.Section, _extends({
79
+ key: `${section.title}`
80
+ }, section))), /*#__PURE__*/React.createElement("div", {
81
+ className: "navigator-container"
82
+ }, /*#__PURE__*/React.createElement(_b.Button, {
83
+ color: "interactive",
84
+ isGradient: true,
85
+ isGhost: true,
86
+ onClick: handlePrevious,
87
+ disabled: sectionHistory.length === 0
88
+ }, "Previous"), /*#__PURE__*/React.createElement(_b.Button, {
89
+ color: "interactive",
90
+ isGradient: true,
91
+ type: "submit"
92
+ }, formData.sections[currentSectionIndex].navigation.nextSection === 'submit' ? 'Submit' : 'Next')))));
93
+ };
94
+ Renderer.propTypes = {
95
+ /**
96
+ * The HTML id for this element
97
+ */
98
+ id: _propTypes.default.string,
99
+ /**
100
+ * The HTML class names for this element
101
+ */
102
+ className: _propTypes.default.string,
103
+ /**
104
+ * The React-written, css properties for this element.
105
+ */
106
+ style: _propTypes.default.objectOf(_propTypes.default.string),
107
+ /**
108
+ * The children JSX
109
+ */
110
+ formData: _propTypes.default.shape({
111
+ formTitle: _propTypes.default.string.isRequired,
112
+ formDescription: _propTypes.default.string.isRequired,
113
+ sections: _propTypes.default.arrayOf(_propTypes.default.objectOf(_propTypes.default.any))
114
+ })
115
+ };
116
+ Renderer.defaultProps = {
117
+ // someProp:false
118
+ };
119
+ var _default = exports.default = Renderer;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _f = require("../../../../../../f");
10
+ var _ = require("../../../../..");
11
+ var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /* @pareto-engineering/generator-front 1.1.1-alpha.2 */ // Local Definitions
16
+ const baseClassName = _exports.default.base;
17
+ const componentClassName = 'section';
18
+
19
+ /**
20
+ * This is the component description.
21
+ */
22
+ const Section = _ref => {
23
+ let {
24
+ id,
25
+ className: userClassName,
26
+ style,
27
+ title,
28
+ description,
29
+ inputs
30
+ // ...otherProps
31
+ } = _ref;
32
+ return /*#__PURE__*/React.createElement("div", {
33
+ id: id,
34
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
35
+ style: style
36
+ }, /*#__PURE__*/React.createElement("h3", null, title), /*#__PURE__*/React.createElement(_.ExpandableLexicalPreview, {
37
+ nodes: description,
38
+ name: "instructions"
39
+ }), inputs.map(input => /*#__PURE__*/React.createElement(_f.FormInput, _extends({
40
+ key: input.name
41
+ }, input))));
42
+ };
43
+ Section.propTypes = {
44
+ /**
45
+ * The HTML id for this element
46
+ */
47
+ id: _propTypes.default.string,
48
+ /**
49
+ * The HTML class names for this element
50
+ */
51
+ className: _propTypes.default.string,
52
+ /**
53
+ * The React-written, css properties for this element.
54
+ */
55
+ style: _propTypes.default.objectOf(_propTypes.default.string)
56
+ };
57
+ Section.defaultProps = {
58
+ // someProp:false
59
+ };
60
+ var _default = exports.default = Section;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Section", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Section.default;
10
+ }
11
+ });
12
+ var _Section = _interopRequireDefault(require("./Section"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Section", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Section.Section;
10
+ }
11
+ });
12
+ var _Section = require("./Section");