@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.
- package/dist/cjs/a/ToggleSwitch/ToggleSwitch.js +10 -5
- package/dist/cjs/f/FormInput/FormInput.js +7 -0
- package/dist/cjs/f/fields/EditorInput/EditorInput.js +9 -7
- package/dist/cjs/f/fields/SelectInput/SelectInput.js +4 -5
- package/dist/cjs/f/fields/SelectInput/common/Single/Single.js +3 -3
- package/dist/cjs/g/FormBuilder/FormBuilder.js +77 -0
- package/dist/cjs/g/FormBuilder/common/Builder/Builder.js +156 -0
- package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.js +229 -0
- package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/index.js +13 -0
- package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +192 -0
- package/dist/cjs/g/FormBuilder/common/Builder/common/Section/Section.js +133 -0
- package/dist/cjs/g/FormBuilder/common/Builder/common/Section/index.js +13 -0
- package/dist/cjs/g/FormBuilder/common/Builder/common/index.js +19 -0
- package/dist/cjs/g/FormBuilder/common/Builder/index.js +13 -0
- package/dist/cjs/g/FormBuilder/common/Builder/styles.scss +106 -0
- package/dist/cjs/g/FormBuilder/common/Renderer/Renderer.js +119 -0
- package/dist/cjs/g/FormBuilder/common/Renderer/common/Section/Section.js +60 -0
- package/dist/cjs/g/FormBuilder/common/Renderer/common/Section/index.js +13 -0
- package/dist/cjs/g/FormBuilder/common/Renderer/common/index.js +12 -0
- package/dist/cjs/g/FormBuilder/common/Renderer/index.js +13 -0
- package/dist/cjs/g/FormBuilder/common/Renderer/styles.scss +15 -0
- package/dist/cjs/g/FormBuilder/common/index.js +19 -0
- package/dist/cjs/g/FormBuilder/index.js +13 -0
- package/dist/cjs/g/FormBuilder/styles.scss +7 -0
- package/dist/cjs/g/index.js +8 -1
- package/dist/es/a/ToggleSwitch/ToggleSwitch.js +10 -5
- package/dist/es/f/FormInput/FormInput.js +7 -0
- package/dist/es/f/fields/EditorInput/EditorInput.js +9 -7
- package/dist/es/f/fields/SelectInput/SelectInput.js +4 -3
- package/dist/es/f/fields/SelectInput/common/Single/Single.js +3 -3
- package/dist/es/g/FormBuilder/FormBuilder.js +65 -0
- package/dist/es/g/FormBuilder/common/Builder/Builder.js +142 -0
- package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.js +216 -0
- package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/index.js +2 -0
- package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +192 -0
- package/dist/es/g/FormBuilder/common/Builder/common/Section/Section.js +120 -0
- package/dist/es/g/FormBuilder/common/Builder/common/Section/index.js +2 -0
- package/dist/es/g/FormBuilder/common/Builder/common/index.js +2 -0
- package/dist/es/g/FormBuilder/common/Builder/index.js +2 -0
- package/dist/es/g/FormBuilder/common/Builder/styles.scss +106 -0
- package/dist/es/g/FormBuilder/common/Renderer/Renderer.js +113 -0
- package/dist/es/g/FormBuilder/common/Renderer/common/Section/Section.js +52 -0
- package/dist/es/g/FormBuilder/common/Renderer/common/Section/index.js +2 -0
- package/dist/es/g/FormBuilder/common/Renderer/common/index.js +1 -0
- package/dist/es/g/FormBuilder/common/Renderer/index.js +2 -0
- package/dist/es/g/FormBuilder/common/Renderer/styles.scss +15 -0
- package/dist/es/g/FormBuilder/common/index.js +2 -0
- package/dist/es/g/FormBuilder/index.js +2 -0
- package/dist/es/g/FormBuilder/styles.scss +7 -0
- package/dist/es/g/index.js +2 -1
- package/package.json +3 -3
- package/src/stories/a/ToggleSwitch.stories.jsx +8 -2
- package/src/stories/g/FormBuilder.stories.jsx +97 -0
- package/src/ui/a/ToggleSwitch/ToggleSwitch.jsx +9 -3
- package/src/ui/f/FormInput/FormInput.jsx +10 -0
- package/src/ui/f/fields/EditorInput/EditorInput.jsx +5 -6
- package/src/ui/f/fields/SelectInput/SelectInput.jsx +5 -2
- package/src/ui/f/fields/SelectInput/common/Single/Single.jsx +2 -1
- package/src/ui/g/FormBuilder/FormBuilder.jsx +85 -0
- package/src/ui/g/FormBuilder/common/Builder/Builder.jsx +175 -0
- package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.jsx +279 -0
- package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/index.js +2 -0
- package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +192 -0
- package/src/ui/g/FormBuilder/common/Builder/common/Section/Section.jsx +156 -0
- package/src/ui/g/FormBuilder/common/Builder/common/Section/index.js +2 -0
- package/src/ui/g/FormBuilder/common/Builder/common/index.js +2 -0
- package/src/ui/g/FormBuilder/common/Builder/index.js +2 -0
- package/src/ui/g/FormBuilder/common/Builder/styles.scss +106 -0
- package/src/ui/g/FormBuilder/common/Renderer/Renderer.jsx +145 -0
- package/src/ui/g/FormBuilder/common/Renderer/common/Section/Section.jsx +75 -0
- package/src/ui/g/FormBuilder/common/Renderer/common/Section/index.js +2 -0
- package/src/ui/g/FormBuilder/common/Renderer/common/index.js +1 -0
- package/src/ui/g/FormBuilder/common/Renderer/index.js +2 -0
- package/src/ui/g/FormBuilder/common/Renderer/styles.scss +15 -0
- package/src/ui/g/FormBuilder/common/index.js +2 -0
- package/src/ui/g/FormBuilder/index.js +2 -0
- package/src/ui/g/FormBuilder/styles.scss +7 -0
- package/src/ui/g/index.js +1 -0
- package/tests/__snapshots__/Storyshots.test.js.snap +793 -1
|
@@ -28,7 +28,8 @@ const ToggleSwitch = _ref => {
|
|
|
28
28
|
style,
|
|
29
29
|
handleOnChange,
|
|
30
30
|
checked,
|
|
31
|
-
size
|
|
31
|
+
size,
|
|
32
|
+
inputId
|
|
32
33
|
// ...otherProps
|
|
33
34
|
} = _ref;
|
|
34
35
|
return /*#__PURE__*/React.createElement("button", {
|
|
@@ -42,11 +43,11 @@ const ToggleSwitch = _ref => {
|
|
|
42
43
|
// {...otherProps}
|
|
43
44
|
}, /*#__PURE__*/React.createElement("input", {
|
|
44
45
|
type: "checkbox",
|
|
45
|
-
id:
|
|
46
|
+
id: inputId,
|
|
46
47
|
checked: checked,
|
|
47
48
|
onChange: handleOnChange
|
|
48
49
|
}), /*#__PURE__*/React.createElement("label", {
|
|
49
|
-
htmlFor:
|
|
50
|
+
htmlFor: inputId
|
|
50
51
|
}));
|
|
51
52
|
};
|
|
52
53
|
ToggleSwitch.propTypes = {
|
|
@@ -73,9 +74,13 @@ ToggleSwitch.propTypes = {
|
|
|
73
74
|
/**
|
|
74
75
|
* The size of this element
|
|
75
76
|
*/
|
|
76
|
-
size: _propTypes.default.string
|
|
77
|
+
size: _propTypes.default.string,
|
|
78
|
+
/**
|
|
79
|
+
* The ID of the elelment to be toggled
|
|
80
|
+
*/
|
|
81
|
+
inputId: _propTypes.default.string
|
|
77
82
|
};
|
|
78
83
|
ToggleSwitch.defaultProps = {
|
|
79
|
-
|
|
84
|
+
inputId: 'switch'
|
|
80
85
|
};
|
|
81
86
|
var _default = exports.default = ToggleSwitch;
|
|
@@ -37,6 +37,13 @@ const FormInput = _ref => {
|
|
|
37
37
|
disabled: disabled
|
|
38
38
|
}, otherProps));
|
|
39
39
|
}
|
|
40
|
+
if (type === 'multiple') {
|
|
41
|
+
return /*#__PURE__*/React.createElement(_fields.ChoicesInput, _extends({
|
|
42
|
+
className: newClassName,
|
|
43
|
+
disabled: disabled,
|
|
44
|
+
multiple: true
|
|
45
|
+
}, otherProps));
|
|
46
|
+
}
|
|
40
47
|
if (type === 'choices') {
|
|
41
48
|
return /*#__PURE__*/React.createElement(_fields.ChoicesInput, _extends({
|
|
42
49
|
className: newClassName,
|
|
@@ -70,11 +70,15 @@ const EditorInput = _ref2 => {
|
|
|
70
70
|
showDebugger,
|
|
71
71
|
stopPropagationKeys,
|
|
72
72
|
setEditorState
|
|
73
|
+
// handleOnChange,
|
|
73
74
|
// ...otherProps
|
|
74
75
|
} = _ref2;
|
|
75
|
-
const
|
|
76
|
+
const {
|
|
77
|
+
values,
|
|
78
|
+
setFieldValue
|
|
79
|
+
} = (0, _formik.useFormikContext)();
|
|
76
80
|
const setInitialValue = () => {
|
|
77
|
-
const value =
|
|
81
|
+
const value = values[name];
|
|
78
82
|
try {
|
|
79
83
|
JSON.parse(value);
|
|
80
84
|
return value;
|
|
@@ -109,10 +113,7 @@ const EditorInput = _ref2 => {
|
|
|
109
113
|
}
|
|
110
114
|
};
|
|
111
115
|
const onChange = state => {
|
|
112
|
-
|
|
113
|
-
...formik.values,
|
|
114
|
-
[name]: JSON.stringify(state)
|
|
115
|
-
});
|
|
116
|
+
setFieldValue(name, JSON.stringify(state));
|
|
116
117
|
};
|
|
117
118
|
const initialConfig = {
|
|
118
119
|
nameSpace: name,
|
|
@@ -149,7 +150,8 @@ const EditorInput = _ref2 => {
|
|
|
149
150
|
}, label), !disabled && /*#__PURE__*/React.createElement(_common2.ToolbarPlugin, null), /*#__PURE__*/React.createElement(_LexicalRichTextPlugin.RichTextPlugin, {
|
|
150
151
|
contentEditable: /*#__PURE__*/React.createElement(_LexicalContentEditable.ContentEditable, {
|
|
151
152
|
className: "content-editable",
|
|
152
|
-
id: name
|
|
153
|
+
id: name,
|
|
154
|
+
name: name
|
|
153
155
|
}),
|
|
154
156
|
ErrorBoundary: _LexicalErrorBoundary.default
|
|
155
157
|
}), /*#__PURE__*/React.createElement(_LexicalListPlugin.ListPlugin, null), /*#__PURE__*/React.createElement(_LexicalCheckListPlugin.CheckListPlugin, null), /*#__PURE__*/React.createElement(_LexicalOnChangePlugin.OnChangePlugin, {
|
|
@@ -13,8 +13,7 @@ var _common = require("./common");
|
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
14
|
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); }
|
|
15
15
|
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; }
|
|
16
|
-
/* @pareto-engineering/generator-front 1.0.12 */
|
|
17
|
-
|
|
16
|
+
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.0.12 */
|
|
18
17
|
// Local Definitions
|
|
19
18
|
|
|
20
19
|
const baseClassName = _exports.default.base;
|
|
@@ -42,8 +41,8 @@ const SelectInput = _ref => {
|
|
|
42
41
|
autoComplete,
|
|
43
42
|
placeholder,
|
|
44
43
|
getTagColor,
|
|
45
|
-
multiple
|
|
46
|
-
|
|
44
|
+
multiple,
|
|
45
|
+
...otherProps
|
|
47
46
|
} = _ref;
|
|
48
47
|
const inputProps = {
|
|
49
48
|
name,
|
|
@@ -66,7 +65,7 @@ const SelectInput = _ref => {
|
|
|
66
65
|
id: id,
|
|
67
66
|
className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
|
|
68
67
|
style: style
|
|
69
|
-
}, /*#__PURE__*/React.createElement(Input, inputProps));
|
|
68
|
+
}, /*#__PURE__*/React.createElement(Input, _extends({}, inputProps, otherProps)));
|
|
70
69
|
};
|
|
71
70
|
SelectInput.propTypes = {
|
|
72
71
|
/**
|
|
@@ -39,8 +39,8 @@ const Single = _ref => {
|
|
|
39
39
|
description,
|
|
40
40
|
disabled,
|
|
41
41
|
isLoading,
|
|
42
|
-
autoComplete
|
|
43
|
-
|
|
42
|
+
autoComplete,
|
|
43
|
+
...otherProps
|
|
44
44
|
} = _ref;
|
|
45
45
|
const [field,, helpers] = (0, _formik.useField)({
|
|
46
46
|
name,
|
|
@@ -72,7 +72,7 @@ const Single = _ref => {
|
|
|
72
72
|
id: name,
|
|
73
73
|
disabled: disabled,
|
|
74
74
|
autoComplete: autoComplete
|
|
75
|
-
}), options.map(option => {
|
|
75
|
+
}, otherProps), options.map(option => {
|
|
76
76
|
// i.e if option is a string like "blah", return { value: "blah", label: "blah" }
|
|
77
77
|
const newOption = typeof option === 'string' ? {
|
|
78
78
|
value: option,
|
|
@@ -0,0 +1,77 @@
|
|
|
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 _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
|
|
10
|
+
require("./styles.scss");
|
|
11
|
+
var _common = require("./common");
|
|
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
|
+
/* @pareto-engineering/generator-front 1.1.1-alpha.2 */
|
|
16
|
+
|
|
17
|
+
// Local Definitions
|
|
18
|
+
|
|
19
|
+
const baseClassName = _exports.default.base;
|
|
20
|
+
const componentClassName = 'form-builder';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* This is the component description.
|
|
24
|
+
*/
|
|
25
|
+
const FormBuilder = _ref => {
|
|
26
|
+
let {
|
|
27
|
+
id,
|
|
28
|
+
className: userClassName,
|
|
29
|
+
style,
|
|
30
|
+
mode,
|
|
31
|
+
formData,
|
|
32
|
+
formBuilderId,
|
|
33
|
+
onBuilderFormSave,
|
|
34
|
+
onRendererFormSave
|
|
35
|
+
// ...otherProps
|
|
36
|
+
} = _ref;
|
|
37
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
38
|
+
id: id,
|
|
39
|
+
className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
|
|
40
|
+
style: style
|
|
41
|
+
// {...otherProps}
|
|
42
|
+
}, mode === 'build' && /*#__PURE__*/React.createElement(_common.Builder, {
|
|
43
|
+
formBuilderId: formBuilderId,
|
|
44
|
+
onSave: onBuilderFormSave
|
|
45
|
+
}), mode === 'render' && /*#__PURE__*/React.createElement(_common.Renderer, {
|
|
46
|
+
formData: formData,
|
|
47
|
+
onSave: onRendererFormSave
|
|
48
|
+
}));
|
|
49
|
+
};
|
|
50
|
+
FormBuilder.propTypes = {
|
|
51
|
+
/**
|
|
52
|
+
* The HTML id for this element
|
|
53
|
+
*/
|
|
54
|
+
id: _propTypes.default.string,
|
|
55
|
+
/**
|
|
56
|
+
* The HTML class names for this element
|
|
57
|
+
*/
|
|
58
|
+
className: _propTypes.default.string,
|
|
59
|
+
/**
|
|
60
|
+
* The React-written, css properties for this element.
|
|
61
|
+
*/
|
|
62
|
+
style: _propTypes.default.objectOf(_propTypes.default.string),
|
|
63
|
+
/**
|
|
64
|
+
* The mode of the form builder to determine whether to render a form or build a form
|
|
65
|
+
*/
|
|
66
|
+
mode: _propTypes.default.oneOf(['build', 'render']),
|
|
67
|
+
/**
|
|
68
|
+
* This is the ID of the form element in the <Builder /> component
|
|
69
|
+
*/
|
|
70
|
+
formBuilderId: _propTypes.default.string.isRequired
|
|
71
|
+
};
|
|
72
|
+
FormBuilder.defaultProps = {
|
|
73
|
+
mode: 'build'
|
|
74
|
+
};
|
|
75
|
+
FormBuilder.Builder = _common.Builder;
|
|
76
|
+
FormBuilder.Renderer = _common.Renderer;
|
|
77
|
+
var _default = exports.default = FormBuilder;
|
|
@@ -0,0 +1,156 @@
|
|
|
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 _formik = require("formik");
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
|
|
11
|
+
var _f = require("../../../../f");
|
|
12
|
+
var _common = require("./common");
|
|
13
|
+
require("./styles.scss");
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
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); }
|
|
16
|
+
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; }
|
|
17
|
+
/* @pareto-engineering/generator-front 1.1.1-alpha.2 */
|
|
18
|
+
|
|
19
|
+
// Local Definitions
|
|
20
|
+
|
|
21
|
+
const baseClassName = _exports.default.base;
|
|
22
|
+
const componentClassName = 'builder';
|
|
23
|
+
const reorderInputs = values => {
|
|
24
|
+
const valuesCopy = JSON.parse(JSON.stringify(values));
|
|
25
|
+
valuesCopy.sections.forEach(section => {
|
|
26
|
+
const orderMap = new Map();
|
|
27
|
+
section.orderedInputDragIds.forEach((id, index) => orderMap.set(id, index));
|
|
28
|
+
section.inputs.sort((a, b) => orderMap.get(a.name) - orderMap.get(b.name));
|
|
29
|
+
});
|
|
30
|
+
return valuesCopy;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
*/
|
|
35
|
+
const Builder = _ref => {
|
|
36
|
+
let {
|
|
37
|
+
id,
|
|
38
|
+
className: userClassName,
|
|
39
|
+
style,
|
|
40
|
+
onSave,
|
|
41
|
+
formBuilderId
|
|
42
|
+
// ...otherProps
|
|
43
|
+
} = _ref;
|
|
44
|
+
const handleSubmit = values => {
|
|
45
|
+
const reOrderedValues = reorderInputs(values);
|
|
46
|
+
onSave(reOrderedValues);
|
|
47
|
+
};
|
|
48
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
49
|
+
id: id,
|
|
50
|
+
className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
|
|
51
|
+
style: style
|
|
52
|
+
}, /*#__PURE__*/React.createElement("p", {
|
|
53
|
+
className: "h3"
|
|
54
|
+
}, "Form Builder"), /*#__PURE__*/React.createElement(_formik.Formik, {
|
|
55
|
+
initialValues: {
|
|
56
|
+
sections: [{
|
|
57
|
+
title: '',
|
|
58
|
+
description: '',
|
|
59
|
+
key: 'section-0',
|
|
60
|
+
inputs: [],
|
|
61
|
+
orderedInputDragIds: [],
|
|
62
|
+
navigation: {
|
|
63
|
+
nextSection: 'next'
|
|
64
|
+
}
|
|
65
|
+
}]
|
|
66
|
+
},
|
|
67
|
+
onSubmit: handleSubmit
|
|
68
|
+
}, _ref2 => {
|
|
69
|
+
let {
|
|
70
|
+
values
|
|
71
|
+
} = _ref2;
|
|
72
|
+
const availableSections = values.sections.map((section, idx) => ({
|
|
73
|
+
value: idx,
|
|
74
|
+
label: `Go to ${section.title || `Untitled Section ${idx + 1}`}`
|
|
75
|
+
}));
|
|
76
|
+
return /*#__PURE__*/React.createElement(_formik.Form, {
|
|
77
|
+
id: formBuilderId
|
|
78
|
+
}, /*#__PURE__*/React.createElement(_formik.FieldArray, {
|
|
79
|
+
name: "sections"
|
|
80
|
+
}, _ref3 => {
|
|
81
|
+
let {
|
|
82
|
+
push
|
|
83
|
+
} = _ref3;
|
|
84
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, values.sections.map((section, index) => /*#__PURE__*/React.createElement(_common.Section, {
|
|
85
|
+
key: section.key,
|
|
86
|
+
index: index
|
|
87
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
88
|
+
className: "section-footer"
|
|
89
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
90
|
+
className: "add-section-cta",
|
|
91
|
+
type: "button",
|
|
92
|
+
onClick: () => {
|
|
93
|
+
const currentIndex = values.sections.length;
|
|
94
|
+
return push({
|
|
95
|
+
title: '',
|
|
96
|
+
description: '',
|
|
97
|
+
key: `section-${currentIndex}`,
|
|
98
|
+
inputs: [{
|
|
99
|
+
type: 'text',
|
|
100
|
+
options: [],
|
|
101
|
+
required: true,
|
|
102
|
+
description: '',
|
|
103
|
+
name: `section_${values.sections.length}_input_0`,
|
|
104
|
+
label: ''
|
|
105
|
+
}],
|
|
106
|
+
orderedInputDragIds: [],
|
|
107
|
+
navigation: {
|
|
108
|
+
nextSection: 'next'
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
113
|
+
className: "icon-container"
|
|
114
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
115
|
+
className: "icon"
|
|
116
|
+
}, "+")), /*#__PURE__*/React.createElement("span", {
|
|
117
|
+
className: "text x-paragraph c-x"
|
|
118
|
+
}, "Add Section")), /*#__PURE__*/React.createElement("div", {
|
|
119
|
+
className: "section-navigation"
|
|
120
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
121
|
+
className: "x-paragraph c-x"
|
|
122
|
+
}, "After Section", ' ', values.sections.length), /*#__PURE__*/React.createElement(_f.SelectInput, {
|
|
123
|
+
name: `sections.${values.sections.length - 1}.navigation.nextSection`,
|
|
124
|
+
options: [{
|
|
125
|
+
label: 'Select section',
|
|
126
|
+
value: '',
|
|
127
|
+
disabled: true
|
|
128
|
+
}, {
|
|
129
|
+
label: 'Continue to next section',
|
|
130
|
+
value: 'next'
|
|
131
|
+
}, ...availableSections, {
|
|
132
|
+
label: 'Submit form',
|
|
133
|
+
value: 'submit'
|
|
134
|
+
}]
|
|
135
|
+
}))));
|
|
136
|
+
}));
|
|
137
|
+
}));
|
|
138
|
+
};
|
|
139
|
+
Builder.propTypes = {
|
|
140
|
+
/**
|
|
141
|
+
* The HTML id for this element
|
|
142
|
+
*/
|
|
143
|
+
id: _propTypes.default.string,
|
|
144
|
+
/**
|
|
145
|
+
* The HTML class names for this element
|
|
146
|
+
*/
|
|
147
|
+
className: _propTypes.default.string,
|
|
148
|
+
/**
|
|
149
|
+
* The React-written, css properties for this element.
|
|
150
|
+
*/
|
|
151
|
+
style: _propTypes.default.objectOf(_propTypes.default.string)
|
|
152
|
+
};
|
|
153
|
+
Builder.defaultProps = {
|
|
154
|
+
// someProp:false
|
|
155
|
+
};
|
|
156
|
+
var _default = exports.default = Builder;
|
|
@@ -0,0 +1,229 @@
|
|
|
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 _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _formik = require("formik");
|
|
11
|
+
var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
|
|
12
|
+
var _f = require("../../../../../../f");
|
|
13
|
+
var _a = require("../../../../../../a");
|
|
14
|
+
var _utils = require("../../../../../../utils");
|
|
15
|
+
require("./styles.scss");
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
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); }
|
|
18
|
+
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; }
|
|
19
|
+
/* @pareto-engineering/generator-front 1.1.1-alpha.2 */
|
|
20
|
+
|
|
21
|
+
// Local Definitions
|
|
22
|
+
|
|
23
|
+
const baseClassName = _exports.default.base;
|
|
24
|
+
const componentClassName = 'input-builder';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* This is the component description.
|
|
28
|
+
*/
|
|
29
|
+
const InputBuilder = _ref => {
|
|
30
|
+
let {
|
|
31
|
+
id,
|
|
32
|
+
className: userClassName,
|
|
33
|
+
style,
|
|
34
|
+
sectionIndex,
|
|
35
|
+
inputIndex,
|
|
36
|
+
onDelete,
|
|
37
|
+
// onCopy,
|
|
38
|
+
preferredPopoverOrder
|
|
39
|
+
// ...otherProps
|
|
40
|
+
} = _ref;
|
|
41
|
+
const {
|
|
42
|
+
values,
|
|
43
|
+
setFieldValue
|
|
44
|
+
} = (0, _formik.useFormikContext)();
|
|
45
|
+
const input = values.sections[sectionIndex].inputs[inputIndex];
|
|
46
|
+
const handleToggleRequired = () => {
|
|
47
|
+
setFieldValue(`sections.${sectionIndex}.inputs.${inputIndex}.required`, !input.required);
|
|
48
|
+
};
|
|
49
|
+
const toggleSwitchStyles = {
|
|
50
|
+
...(!input?.required ? {
|
|
51
|
+
'--slider-background-color': 'var(--disabled)'
|
|
52
|
+
} : {})
|
|
53
|
+
};
|
|
54
|
+
const parentRef = (0, _react.useRef)(null);
|
|
55
|
+
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
56
|
+
(0, _utils.useOutsideClick)(parentRef, () => setIsOpen(false));
|
|
57
|
+
const [hasDescription, setHasDescription] = (0, _react.useState)(false);
|
|
58
|
+
const handleToggleConditionalNavigation = () => {
|
|
59
|
+
setFieldValue(`sections.${sectionIndex}.inputs.${inputIndex}.conditionalNavigation`, !input.conditionalNavigation);
|
|
60
|
+
};
|
|
61
|
+
const availableSections = values.sections.map((section, idx) => ({
|
|
62
|
+
value: idx,
|
|
63
|
+
label: `Go to ${section.title || `Untitled Section ${idx + 1}`}`
|
|
64
|
+
}));
|
|
65
|
+
const shouldRenderOptions = input?.type === 'select' || input?.type === 'multiple' || input?.type === 'choices';
|
|
66
|
+
const handleSelectOptionBlur = (e, optionIndex) => {
|
|
67
|
+
const {
|
|
68
|
+
value
|
|
69
|
+
} = e.target;
|
|
70
|
+
setFieldValue(`sections.${sectionIndex}.inputs.${inputIndex}.options.${optionIndex}.label`, value);
|
|
71
|
+
};
|
|
72
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
73
|
+
id: id,
|
|
74
|
+
className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
|
|
75
|
+
style: style
|
|
76
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
77
|
+
className: "drag-icon"
|
|
78
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
79
|
+
className: "ai-icon"
|
|
80
|
+
}, "H")), /*#__PURE__*/React.createElement("div", {
|
|
81
|
+
className: "input-options-container"
|
|
82
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
83
|
+
className: "controls-container"
|
|
84
|
+
}, /*#__PURE__*/React.createElement(_f.SelectInput, {
|
|
85
|
+
name: `sections.${sectionIndex}.inputs.${inputIndex}.type`,
|
|
86
|
+
options: [{
|
|
87
|
+
value: '',
|
|
88
|
+
label: 'Select an option',
|
|
89
|
+
disabled: true
|
|
90
|
+
}, {
|
|
91
|
+
value: 'text',
|
|
92
|
+
label: 'Basic input'
|
|
93
|
+
}, {
|
|
94
|
+
value: 'textarea',
|
|
95
|
+
label: 'Long paragraph'
|
|
96
|
+
}, {
|
|
97
|
+
value: 'select',
|
|
98
|
+
label: 'Dropdown select'
|
|
99
|
+
}, {
|
|
100
|
+
value: 'editor',
|
|
101
|
+
label: 'Editor input'
|
|
102
|
+
}, {
|
|
103
|
+
value: 'multiple',
|
|
104
|
+
label: 'Checkboxes'
|
|
105
|
+
}, {
|
|
106
|
+
value: 'choices',
|
|
107
|
+
label: 'Radio buttons'
|
|
108
|
+
}]
|
|
109
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
110
|
+
className: "controls"
|
|
111
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
112
|
+
type: "button",
|
|
113
|
+
onClick: () => onDelete(inputIndex)
|
|
114
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
115
|
+
className: "icon x-ui-icons c-x"
|
|
116
|
+
}, "D")), /*#__PURE__*/React.createElement("div", {
|
|
117
|
+
className: "is-required"
|
|
118
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
119
|
+
className: "s0"
|
|
120
|
+
}, "Required"), /*#__PURE__*/React.createElement(_a.ToggleSwitch, {
|
|
121
|
+
handleOnChange: handleToggleRequired,
|
|
122
|
+
checked: input?.required,
|
|
123
|
+
style: toggleSwitchStyles,
|
|
124
|
+
inputId: `sections_${sectionIndex}_inputs.${inputIndex}_toggle`
|
|
125
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
126
|
+
className: "actions",
|
|
127
|
+
ref: parentRef
|
|
128
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
129
|
+
type: "button",
|
|
130
|
+
onClick: () => setIsOpen(!isOpen)
|
|
131
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
132
|
+
className: "icon x-ui-icons c-x"
|
|
133
|
+
}, "!")), /*#__PURE__*/React.createElement(_a.Popover, {
|
|
134
|
+
isOpen: isOpen,
|
|
135
|
+
parentRef: parentRef,
|
|
136
|
+
preferredPrimaryOrder: preferredPopoverOrder
|
|
137
|
+
}, /*#__PURE__*/React.createElement("p", null, "Show"), /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", {
|
|
138
|
+
className: `option ${hasDescription ? 'with-check-mark' : ''}`
|
|
139
|
+
}, hasDescription && /*#__PURE__*/React.createElement("span", {
|
|
140
|
+
className: "x-ui-icons c-x icon"
|
|
141
|
+
}, "I"), /*#__PURE__*/React.createElement("button", {
|
|
142
|
+
onClick: () => setHasDescription(!hasDescription),
|
|
143
|
+
type: "button"
|
|
144
|
+
}, "Description")), /*#__PURE__*/React.createElement("li", {
|
|
145
|
+
className: `option ${input?.conditionalNavigation ? 'with-check-mark' : ''}`
|
|
146
|
+
}, input?.conditionalNavigation && /*#__PURE__*/React.createElement("span", {
|
|
147
|
+
className: "x-ui-icons c-x icon"
|
|
148
|
+
}, "I"), /*#__PURE__*/React.createElement("button", {
|
|
149
|
+
onClick: handleToggleConditionalNavigation,
|
|
150
|
+
type: "button"
|
|
151
|
+
}, "Go to section based on answer"))))))), /*#__PURE__*/React.createElement("div", {
|
|
152
|
+
className: "input-name-description"
|
|
153
|
+
}, /*#__PURE__*/React.createElement(_f.TextInput, {
|
|
154
|
+
label: "Input name",
|
|
155
|
+
name: `sections.${sectionIndex}.inputs.${inputIndex}.label`,
|
|
156
|
+
placeholder: "Question"
|
|
157
|
+
}), hasDescription && /*#__PURE__*/React.createElement(_f.TextInput, {
|
|
158
|
+
label: "Description(optional)",
|
|
159
|
+
name: `sections.${sectionIndex}.inputs.${inputIndex}.description`,
|
|
160
|
+
placeholder: "Describe details for the question"
|
|
161
|
+
})), shouldRenderOptions && /*#__PURE__*/React.createElement(_formik.FieldArray, {
|
|
162
|
+
name: `sections.${sectionIndex}.inputs.${inputIndex}.options`
|
|
163
|
+
}, _ref2 => {
|
|
164
|
+
let {
|
|
165
|
+
push,
|
|
166
|
+
remove
|
|
167
|
+
} = _ref2;
|
|
168
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
169
|
+
className: "input-options"
|
|
170
|
+
}, /*#__PURE__*/React.createElement("p", null, "Options"), input?.options.map((option, optionIndex) => /*#__PURE__*/React.createElement("div", {
|
|
171
|
+
key: option.key,
|
|
172
|
+
className: "option-container"
|
|
173
|
+
}, input.type !== 'select' && /*#__PURE__*/React.createElement("div", {
|
|
174
|
+
className: `input-icon-sample ${input.type}`
|
|
175
|
+
}), /*#__PURE__*/React.createElement(_f.TextInput, {
|
|
176
|
+
name: `sections.${sectionIndex}.inputs.${inputIndex}.options.${optionIndex}.value`,
|
|
177
|
+
placeholder: `Option ${optionIndex + 1}`,
|
|
178
|
+
onBlur: e => handleSelectOptionBlur(e, optionIndex)
|
|
179
|
+
}), input?.conditionalNavigation && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_f.SelectInput, {
|
|
180
|
+
options: [{
|
|
181
|
+
label: 'Select section',
|
|
182
|
+
value: '',
|
|
183
|
+
disabled: true
|
|
184
|
+
}, ...availableSections],
|
|
185
|
+
name: `sections.${sectionIndex}.inputs.${inputIndex}.options.${optionIndex}.nextSection`
|
|
186
|
+
})), /*#__PURE__*/React.createElement("button", {
|
|
187
|
+
className: "icon",
|
|
188
|
+
type: "button",
|
|
189
|
+
onClick: () => remove(optionIndex)
|
|
190
|
+
}, "Y"))), /*#__PURE__*/React.createElement("button", {
|
|
191
|
+
className: "add-option-cta",
|
|
192
|
+
type: "button",
|
|
193
|
+
onClick: () => push({
|
|
194
|
+
key: `sections-${sectionIndex}-inputs-${inputIndex}-options-${input.options.length - 1}`,
|
|
195
|
+
value: '',
|
|
196
|
+
label: '',
|
|
197
|
+
nextSection: ''
|
|
198
|
+
})
|
|
199
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
200
|
+
className: "icon-container"
|
|
201
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
202
|
+
className: "icon"
|
|
203
|
+
}, "+")), /*#__PURE__*/React.createElement("span", {
|
|
204
|
+
className: "text x-paragraph c-x"
|
|
205
|
+
}, "Add Option")));
|
|
206
|
+
})));
|
|
207
|
+
};
|
|
208
|
+
InputBuilder.propTypes = {
|
|
209
|
+
/**
|
|
210
|
+
* The HTML id for this element
|
|
211
|
+
*/
|
|
212
|
+
id: _propTypes.default.string,
|
|
213
|
+
/**
|
|
214
|
+
* The HTML class names for this element
|
|
215
|
+
*/
|
|
216
|
+
className: _propTypes.default.string,
|
|
217
|
+
/**
|
|
218
|
+
* The React-written, css properties for this element.
|
|
219
|
+
*/
|
|
220
|
+
style: _propTypes.default.objectOf(_propTypes.default.string),
|
|
221
|
+
/**
|
|
222
|
+
* The preferred primary order of the popover
|
|
223
|
+
*/
|
|
224
|
+
preferredPopoverOrder: _propTypes.default.arrayOf(_propTypes.default.string)
|
|
225
|
+
};
|
|
226
|
+
InputBuilder.defaultProps = {
|
|
227
|
+
preferredPopoverOrder: ['right', 'bottom', 'left', 'top']
|
|
228
|
+
};
|
|
229
|
+
var _default = exports.default = InputBuilder;
|
|
@@ -0,0 +1,13 @@
|
|
|
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.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _InputBuilder = _interopRequireDefault(require("./InputBuilder"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|