@scenid/react-formulator 0.1.9 → 0.1.11
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/index.cjs.js +44 -28
- package/dist/index.esm.js +44 -28
- package/package.json +3 -1
- package/src/Editable/FormField.jsx +2 -3
- package/src/Editable/FormSelect.jsx +3 -1
- package/src/FormulatorFormSection.jsx +18 -13
- package/src/ReadOnly/FormReadOnlyField.jsx +3 -3
- package/src/ReadOnly/FormReadOnlyText.jsx +17 -7
- package/stories/Forms.stories.jsx +17 -13
- package/stories/forms/rlp.render.schema.json +22 -116
- package/stories/forms/rlp.validation.schema.json +1 -560
package/dist/index.cjs.js
CHANGED
|
@@ -9,6 +9,7 @@ var cx = require('classnames');
|
|
|
9
9
|
var styles$n = require('@material-ui/styles');
|
|
10
10
|
var AutorenewIcon = require('@material-ui/icons/Autorenew');
|
|
11
11
|
var icons = require('@material-ui/icons');
|
|
12
|
+
var luxon = require('luxon');
|
|
12
13
|
var path$3 = require('path');
|
|
13
14
|
var proc = require('process');
|
|
14
15
|
var url = require('url');
|
|
@@ -29170,7 +29171,6 @@ var useStyles = styles$n.makeStyles(function (theme) {
|
|
|
29170
29171
|
var FormControlField$1 = function FormControlField(_ref) {
|
|
29171
29172
|
var variant = _ref.variant,
|
|
29172
29173
|
type = _ref.type,
|
|
29173
|
-
isRender = _ref.isRender,
|
|
29174
29174
|
name = _ref.name,
|
|
29175
29175
|
label = _ref.label,
|
|
29176
29176
|
component = _ref.component,
|
|
@@ -29199,6 +29199,8 @@ var FormControlField$1 = function FormControlField(_ref) {
|
|
|
29199
29199
|
onChange: onChange
|
|
29200
29200
|
});
|
|
29201
29201
|
|
|
29202
|
+
var isRender = type === 'render';
|
|
29203
|
+
|
|
29202
29204
|
if (validating) {
|
|
29203
29205
|
finalProps.endAdornment = [/*#__PURE__*/React__default["default"].createElement(core$1.InputAdornment, {
|
|
29204
29206
|
position: "end"
|
|
@@ -29248,7 +29250,6 @@ var FormControlField$1 = function FormControlField(_ref) {
|
|
|
29248
29250
|
|
|
29249
29251
|
FormControlField$1.propTypes = {
|
|
29250
29252
|
variant: PropTypes__default["default"].oneOf(['standard', 'filled', 'outlined']),
|
|
29251
|
-
isRender: PropTypes__default["default"].bool,
|
|
29252
29253
|
component: PropTypes__default["default"].any.isRequired,
|
|
29253
29254
|
componentProps: PropTypes__default["default"].object,
|
|
29254
29255
|
type: PropTypes__default["default"].string.isRequired,
|
|
@@ -29292,7 +29293,6 @@ var FormField = function FormField(_ref2) {
|
|
|
29292
29293
|
|
|
29293
29294
|
FormField.propTypes = {
|
|
29294
29295
|
variant: PropTypes__default["default"].oneOf(['standard', 'filled', 'outlined']),
|
|
29295
|
-
isRender: PropTypes__default["default"].bool,
|
|
29296
29296
|
component: PropTypes__default["default"].any.isRequired,
|
|
29297
29297
|
componentProps: PropTypes__default["default"].object,
|
|
29298
29298
|
type: PropTypes__default["default"].string.isRequired,
|
|
@@ -29399,11 +29399,12 @@ FormNumber.propTypes = {
|
|
|
29399
29399
|
onChange: PropTypes__default["default"].func.isRequired
|
|
29400
29400
|
};
|
|
29401
29401
|
|
|
29402
|
-
var _excluded$3 = ["options", "required"];
|
|
29402
|
+
var _excluded$3 = ["options", "required", "value"];
|
|
29403
29403
|
|
|
29404
29404
|
var FormSelect = function FormSelect(_ref) {
|
|
29405
29405
|
var options = _ref.options,
|
|
29406
29406
|
required = _ref.required,
|
|
29407
|
+
value = _ref.value,
|
|
29407
29408
|
props = _objectWithoutProperties(_ref, _excluded$3);
|
|
29408
29409
|
|
|
29409
29410
|
var unselectOption = [];
|
|
@@ -29419,7 +29420,9 @@ var FormSelect = function FormSelect(_ref) {
|
|
|
29419
29420
|
return l.label.localeCompare(r.label);
|
|
29420
29421
|
})));
|
|
29421
29422
|
return /*#__PURE__*/React__default["default"].createElement(core$1.TextField, _extends({
|
|
29422
|
-
select: true
|
|
29423
|
+
select: true,
|
|
29424
|
+
required: required,
|
|
29425
|
+
value: value === undefined ? '' : value
|
|
29423
29426
|
}, props), allOptions.map(function (_ref2) {
|
|
29424
29427
|
var itemLabel = _ref2.label,
|
|
29425
29428
|
itemValue = _ref2.value;
|
|
@@ -29701,7 +29704,7 @@ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if
|
|
|
29701
29704
|
function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
29702
29705
|
|
|
29703
29706
|
var FormControlField = function FormControlField(_ref) {
|
|
29704
|
-
var
|
|
29707
|
+
var type = _ref.type,
|
|
29705
29708
|
name = _ref.name,
|
|
29706
29709
|
label = _ref.label,
|
|
29707
29710
|
component = _ref.component,
|
|
@@ -29724,7 +29727,7 @@ var FormControlField = function FormControlField(_ref) {
|
|
|
29724
29727
|
}
|
|
29725
29728
|
|
|
29726
29729
|
var control;
|
|
29727
|
-
if (
|
|
29730
|
+
if (type === 'render') control = /*#__PURE__*/React__default["default"].cloneElement(component, finalProps);else control = /*#__PURE__*/React__default["default"].createElement(component, finalProps);
|
|
29728
29731
|
return /*#__PURE__*/React__default["default"].createElement(core$1.Box, {
|
|
29729
29732
|
width: "100%",
|
|
29730
29733
|
display: "flex",
|
|
@@ -29737,10 +29740,10 @@ var FormControlField = function FormControlField(_ref) {
|
|
|
29737
29740
|
};
|
|
29738
29741
|
|
|
29739
29742
|
FormControlField.propTypes = {
|
|
29740
|
-
isRender: PropTypes__default["default"].bool,
|
|
29741
29743
|
component: PropTypes__default["default"].any.isRequired,
|
|
29742
29744
|
componentProps: PropTypes__default["default"].object,
|
|
29743
29745
|
name: PropTypes__default["default"].string.isRequired,
|
|
29746
|
+
type: PropTypes__default["default"].string.isRequired,
|
|
29744
29747
|
label: PropTypes__default["default"].string.isRequired,
|
|
29745
29748
|
value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number, PropTypes__default["default"].bool, PropTypes__default["default"].array]),
|
|
29746
29749
|
options: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
|
|
@@ -29799,14 +29802,21 @@ FormReadOnlyField.propTypes = {
|
|
|
29799
29802
|
};
|
|
29800
29803
|
var FormReadOnlyField$1 = /*#__PURE__*/React__default["default"].memo(FormReadOnlyField);
|
|
29801
29804
|
|
|
29802
|
-
var
|
|
29803
|
-
var value = _ref.value
|
|
29805
|
+
var FormReadOnlyText = function FormReadOnlyText(_ref) {
|
|
29806
|
+
var value = _ref.value,
|
|
29807
|
+
type = _ref.type;
|
|
29808
|
+
var finalValue = value;
|
|
29809
|
+
|
|
29810
|
+
if (type === 'date' || type === 'datetime-local') {
|
|
29811
|
+
finalValue = luxon.DateTime.fromISO(value).toLocaleString(luxon.DateTime.DATE_MED_WITH_WEEKDAY);
|
|
29812
|
+
}
|
|
29813
|
+
|
|
29804
29814
|
return /*#__PURE__*/React__default["default"].createElement(core$1.Typography, {
|
|
29805
29815
|
variant: "body1"
|
|
29806
|
-
},
|
|
29816
|
+
}, finalValue);
|
|
29807
29817
|
};
|
|
29808
29818
|
|
|
29809
|
-
|
|
29819
|
+
FormReadOnlyText.propTypes = {
|
|
29810
29820
|
value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].number, PropTypes__default["default"].string])
|
|
29811
29821
|
};
|
|
29812
29822
|
|
|
@@ -68021,7 +68031,7 @@ FormReadOnlyMarkdown.propTypes = {
|
|
|
68021
68031
|
|
|
68022
68032
|
var FormReadOnlyNumber = function FormReadOnlyNumber(_ref) {
|
|
68023
68033
|
var value = _ref.value;
|
|
68024
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
68034
|
+
return /*#__PURE__*/React__default["default"].createElement(FormReadOnlyText, {
|
|
68025
68035
|
value: castToNumber(value)
|
|
68026
68036
|
});
|
|
68027
68037
|
};
|
|
@@ -68035,7 +68045,7 @@ var FormReadOnlySelect = function FormReadOnlySelect(_ref) {
|
|
|
68035
68045
|
|
|
68036
68046
|
var value = _ref.value,
|
|
68037
68047
|
options = _ref.options;
|
|
68038
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
68048
|
+
return /*#__PURE__*/React__default["default"].createElement(FormReadOnlyText, {
|
|
68039
68049
|
value: (_options$find = options.find(function (o) {
|
|
68040
68050
|
return o.value === value;
|
|
68041
68051
|
})) === null || _options$find === void 0 ? void 0 : _options$find.label
|
|
@@ -75447,9 +75457,9 @@ function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeRefl
|
|
|
75447
75457
|
|
|
75448
75458
|
function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
75449
75459
|
var formReadOnlyComponentMap = {
|
|
75450
|
-
"default":
|
|
75460
|
+
"default": FormReadOnlyText,
|
|
75451
75461
|
markdown: FormReadOnlyMarkdown,
|
|
75452
|
-
string:
|
|
75462
|
+
string: FormReadOnlyText,
|
|
75453
75463
|
number: FormReadOnlyNumber,
|
|
75454
75464
|
select: FormReadOnlySelect,
|
|
75455
75465
|
"boolean": FormReadOnlyBoolean,
|
|
@@ -75491,17 +75501,23 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75491
75501
|
errorMessages = _this$props.errorMessages,
|
|
75492
75502
|
results = _this$props.results,
|
|
75493
75503
|
data = _this$props.data,
|
|
75494
|
-
fieldStates = _this$props.fieldStates
|
|
75504
|
+
fieldStates = _this$props.fieldStates,
|
|
75505
|
+
renderComponentMap = _this$props.renderComponentMap;
|
|
75495
75506
|
var field = fieldEntry,
|
|
75496
75507
|
specialProps = {};
|
|
75497
75508
|
|
|
75498
75509
|
if (Array.isArray(fieldEntry)) {
|
|
75499
75510
|
if (fieldEntry[0] === '@@render') {
|
|
75500
75511
|
field = fieldEntry[1];
|
|
75501
|
-
|
|
75502
|
-
|
|
75503
|
-
|
|
75504
|
-
|
|
75512
|
+
return {
|
|
75513
|
+
type: 'render',
|
|
75514
|
+
name: field,
|
|
75515
|
+
component: renderComponentMap[field],
|
|
75516
|
+
componentProps: fieldEntry[2] || {}
|
|
75517
|
+
};
|
|
75518
|
+
}
|
|
75519
|
+
|
|
75520
|
+
if (fieldEntry[0] === '@@markdown') {
|
|
75505
75521
|
return {
|
|
75506
75522
|
type: 'markdown',
|
|
75507
75523
|
name: fieldEntry[1],
|
|
@@ -75510,10 +75526,11 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75510
75526
|
content: fieldEntry[2]
|
|
75511
75527
|
}
|
|
75512
75528
|
};
|
|
75513
|
-
} else {
|
|
75514
|
-
field = fieldEntry[0];
|
|
75515
|
-
specialProps = fieldEntry[1];
|
|
75516
75529
|
}
|
|
75530
|
+
|
|
75531
|
+
field = fieldEntry[0];
|
|
75532
|
+
if (!fieldEntry[1]) throw new Error("field \"".concat(field, "\" is defined in an array, but has no props definition"));
|
|
75533
|
+
specialProps = fieldEntry[1];
|
|
75517
75534
|
}
|
|
75518
75535
|
|
|
75519
75536
|
var _specialProps = specialProps,
|
|
@@ -75534,8 +75551,8 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75534
75551
|
type = _schema$properties$fi.type,
|
|
75535
75552
|
defaultValue = _schema$properties$fi["default"];
|
|
75536
75553
|
var mapKey;
|
|
75537
|
-
if (
|
|
75538
|
-
var mapEntry =
|
|
75554
|
+
if (componentMap[field] !== undefined) mapKey = field;else if (typeof type === 'string' && componentMap[type] !== undefined) mapKey = type;else if (Array.isArray(type)) mapKey = 'select';else if (componentMap["default"] !== undefined) mapKey = 'default';else throw new Error("Could not find a Component to render for \"".concat(field, "\""));
|
|
75555
|
+
var mapEntry = componentMap[mapKey];
|
|
75539
75556
|
var component = mapEntry,
|
|
75540
75557
|
props = {};
|
|
75541
75558
|
|
|
@@ -75639,7 +75656,6 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75639
75656
|
type: _type,
|
|
75640
75657
|
label: _label,
|
|
75641
75658
|
value: _value,
|
|
75642
|
-
isRender: true,
|
|
75643
75659
|
required: _required,
|
|
75644
75660
|
hasErrors: _hasErrors,
|
|
75645
75661
|
errors: _errors,
|
|
@@ -76439,7 +76455,7 @@ exports.FormReadOnlyMarkdown = FormReadOnlyMarkdown;
|
|
|
76439
76455
|
exports.FormReadOnlyNumber = FormReadOnlyNumber;
|
|
76440
76456
|
exports.FormReadOnlyRepeater = FormReadOnlyRepeater;
|
|
76441
76457
|
exports.FormReadOnlySelect = FormReadOnlySelect;
|
|
76442
|
-
exports.FormReadOnlyText =
|
|
76458
|
+
exports.FormReadOnlyText = FormReadOnlyText;
|
|
76443
76459
|
exports.FormRepeater = FormRepeater;
|
|
76444
76460
|
exports.FormSelect = FormSelect;
|
|
76445
76461
|
exports.FormText = FormText;
|
package/dist/index.esm.js
CHANGED
|
@@ -7,6 +7,7 @@ import cx from 'classnames';
|
|
|
7
7
|
import { makeStyles as makeStyles$1 } from '@material-ui/styles';
|
|
8
8
|
import AutorenewIcon from '@material-ui/icons/Autorenew';
|
|
9
9
|
import { Delete, Save, Clear } from '@material-ui/icons';
|
|
10
|
+
import { DateTime } from 'luxon';
|
|
10
11
|
import path$3 from 'path';
|
|
11
12
|
import proc from 'process';
|
|
12
13
|
import { fileURLToPath } from 'url';
|
|
@@ -29126,7 +29127,6 @@ var useStyles = makeStyles$1(function (theme) {
|
|
|
29126
29127
|
var FormControlField$1 = function FormControlField(_ref) {
|
|
29127
29128
|
var variant = _ref.variant,
|
|
29128
29129
|
type = _ref.type,
|
|
29129
|
-
isRender = _ref.isRender,
|
|
29130
29130
|
name = _ref.name,
|
|
29131
29131
|
label = _ref.label,
|
|
29132
29132
|
component = _ref.component,
|
|
@@ -29155,6 +29155,8 @@ var FormControlField$1 = function FormControlField(_ref) {
|
|
|
29155
29155
|
onChange: onChange
|
|
29156
29156
|
});
|
|
29157
29157
|
|
|
29158
|
+
var isRender = type === 'render';
|
|
29159
|
+
|
|
29158
29160
|
if (validating) {
|
|
29159
29161
|
finalProps.endAdornment = [/*#__PURE__*/React__default.createElement(InputAdornment, {
|
|
29160
29162
|
position: "end"
|
|
@@ -29204,7 +29206,6 @@ var FormControlField$1 = function FormControlField(_ref) {
|
|
|
29204
29206
|
|
|
29205
29207
|
FormControlField$1.propTypes = {
|
|
29206
29208
|
variant: PropTypes__default.oneOf(['standard', 'filled', 'outlined']),
|
|
29207
|
-
isRender: PropTypes__default.bool,
|
|
29208
29209
|
component: PropTypes__default.any.isRequired,
|
|
29209
29210
|
componentProps: PropTypes__default.object,
|
|
29210
29211
|
type: PropTypes__default.string.isRequired,
|
|
@@ -29248,7 +29249,6 @@ var FormField = function FormField(_ref2) {
|
|
|
29248
29249
|
|
|
29249
29250
|
FormField.propTypes = {
|
|
29250
29251
|
variant: PropTypes__default.oneOf(['standard', 'filled', 'outlined']),
|
|
29251
|
-
isRender: PropTypes__default.bool,
|
|
29252
29252
|
component: PropTypes__default.any.isRequired,
|
|
29253
29253
|
componentProps: PropTypes__default.object,
|
|
29254
29254
|
type: PropTypes__default.string.isRequired,
|
|
@@ -29355,11 +29355,12 @@ FormNumber.propTypes = {
|
|
|
29355
29355
|
onChange: PropTypes__default.func.isRequired
|
|
29356
29356
|
};
|
|
29357
29357
|
|
|
29358
|
-
var _excluded$3 = ["options", "required"];
|
|
29358
|
+
var _excluded$3 = ["options", "required", "value"];
|
|
29359
29359
|
|
|
29360
29360
|
var FormSelect = function FormSelect(_ref) {
|
|
29361
29361
|
var options = _ref.options,
|
|
29362
29362
|
required = _ref.required,
|
|
29363
|
+
value = _ref.value,
|
|
29363
29364
|
props = _objectWithoutProperties(_ref, _excluded$3);
|
|
29364
29365
|
|
|
29365
29366
|
var unselectOption = [];
|
|
@@ -29375,7 +29376,9 @@ var FormSelect = function FormSelect(_ref) {
|
|
|
29375
29376
|
return l.label.localeCompare(r.label);
|
|
29376
29377
|
})));
|
|
29377
29378
|
return /*#__PURE__*/React__default.createElement(TextField, _extends({
|
|
29378
|
-
select: true
|
|
29379
|
+
select: true,
|
|
29380
|
+
required: required,
|
|
29381
|
+
value: value === undefined ? '' : value
|
|
29379
29382
|
}, props), allOptions.map(function (_ref2) {
|
|
29380
29383
|
var itemLabel = _ref2.label,
|
|
29381
29384
|
itemValue = _ref2.value;
|
|
@@ -29657,7 +29660,7 @@ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if
|
|
|
29657
29660
|
function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
29658
29661
|
|
|
29659
29662
|
var FormControlField = function FormControlField(_ref) {
|
|
29660
|
-
var
|
|
29663
|
+
var type = _ref.type,
|
|
29661
29664
|
name = _ref.name,
|
|
29662
29665
|
label = _ref.label,
|
|
29663
29666
|
component = _ref.component,
|
|
@@ -29680,7 +29683,7 @@ var FormControlField = function FormControlField(_ref) {
|
|
|
29680
29683
|
}
|
|
29681
29684
|
|
|
29682
29685
|
var control;
|
|
29683
|
-
if (
|
|
29686
|
+
if (type === 'render') control = /*#__PURE__*/React__default.cloneElement(component, finalProps);else control = /*#__PURE__*/React__default.createElement(component, finalProps);
|
|
29684
29687
|
return /*#__PURE__*/React__default.createElement(Box, {
|
|
29685
29688
|
width: "100%",
|
|
29686
29689
|
display: "flex",
|
|
@@ -29693,10 +29696,10 @@ var FormControlField = function FormControlField(_ref) {
|
|
|
29693
29696
|
};
|
|
29694
29697
|
|
|
29695
29698
|
FormControlField.propTypes = {
|
|
29696
|
-
isRender: PropTypes__default.bool,
|
|
29697
29699
|
component: PropTypes__default.any.isRequired,
|
|
29698
29700
|
componentProps: PropTypes__default.object,
|
|
29699
29701
|
name: PropTypes__default.string.isRequired,
|
|
29702
|
+
type: PropTypes__default.string.isRequired,
|
|
29700
29703
|
label: PropTypes__default.string.isRequired,
|
|
29701
29704
|
value: PropTypes__default.oneOfType([PropTypes__default.string, PropTypes__default.number, PropTypes__default.bool, PropTypes__default.array]),
|
|
29702
29705
|
options: PropTypes__default.arrayOf(PropTypes__default.shape({
|
|
@@ -29755,14 +29758,21 @@ FormReadOnlyField.propTypes = {
|
|
|
29755
29758
|
};
|
|
29756
29759
|
var FormReadOnlyField$1 = /*#__PURE__*/React__default.memo(FormReadOnlyField);
|
|
29757
29760
|
|
|
29758
|
-
var
|
|
29759
|
-
var value = _ref.value
|
|
29761
|
+
var FormReadOnlyText = function FormReadOnlyText(_ref) {
|
|
29762
|
+
var value = _ref.value,
|
|
29763
|
+
type = _ref.type;
|
|
29764
|
+
var finalValue = value;
|
|
29765
|
+
|
|
29766
|
+
if (type === 'date' || type === 'datetime-local') {
|
|
29767
|
+
finalValue = DateTime.fromISO(value).toLocaleString(DateTime.DATE_MED_WITH_WEEKDAY);
|
|
29768
|
+
}
|
|
29769
|
+
|
|
29760
29770
|
return /*#__PURE__*/React__default.createElement(Typography, {
|
|
29761
29771
|
variant: "body1"
|
|
29762
|
-
},
|
|
29772
|
+
}, finalValue);
|
|
29763
29773
|
};
|
|
29764
29774
|
|
|
29765
|
-
|
|
29775
|
+
FormReadOnlyText.propTypes = {
|
|
29766
29776
|
value: PropTypes__default.oneOfType([PropTypes__default.number, PropTypes__default.string])
|
|
29767
29777
|
};
|
|
29768
29778
|
|
|
@@ -67977,7 +67987,7 @@ FormReadOnlyMarkdown.propTypes = {
|
|
|
67977
67987
|
|
|
67978
67988
|
var FormReadOnlyNumber = function FormReadOnlyNumber(_ref) {
|
|
67979
67989
|
var value = _ref.value;
|
|
67980
|
-
return /*#__PURE__*/React__default.createElement(
|
|
67990
|
+
return /*#__PURE__*/React__default.createElement(FormReadOnlyText, {
|
|
67981
67991
|
value: castToNumber(value)
|
|
67982
67992
|
});
|
|
67983
67993
|
};
|
|
@@ -67991,7 +68001,7 @@ var FormReadOnlySelect = function FormReadOnlySelect(_ref) {
|
|
|
67991
68001
|
|
|
67992
68002
|
var value = _ref.value,
|
|
67993
68003
|
options = _ref.options;
|
|
67994
|
-
return /*#__PURE__*/React__default.createElement(
|
|
68004
|
+
return /*#__PURE__*/React__default.createElement(FormReadOnlyText, {
|
|
67995
68005
|
value: (_options$find = options.find(function (o) {
|
|
67996
68006
|
return o.value === value;
|
|
67997
68007
|
})) === null || _options$find === void 0 ? void 0 : _options$find.label
|
|
@@ -75403,9 +75413,9 @@ function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeRefl
|
|
|
75403
75413
|
|
|
75404
75414
|
function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
75405
75415
|
var formReadOnlyComponentMap = {
|
|
75406
|
-
"default":
|
|
75416
|
+
"default": FormReadOnlyText,
|
|
75407
75417
|
markdown: FormReadOnlyMarkdown,
|
|
75408
|
-
string:
|
|
75418
|
+
string: FormReadOnlyText,
|
|
75409
75419
|
number: FormReadOnlyNumber,
|
|
75410
75420
|
select: FormReadOnlySelect,
|
|
75411
75421
|
"boolean": FormReadOnlyBoolean,
|
|
@@ -75447,17 +75457,23 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75447
75457
|
errorMessages = _this$props.errorMessages,
|
|
75448
75458
|
results = _this$props.results,
|
|
75449
75459
|
data = _this$props.data,
|
|
75450
|
-
fieldStates = _this$props.fieldStates
|
|
75460
|
+
fieldStates = _this$props.fieldStates,
|
|
75461
|
+
renderComponentMap = _this$props.renderComponentMap;
|
|
75451
75462
|
var field = fieldEntry,
|
|
75452
75463
|
specialProps = {};
|
|
75453
75464
|
|
|
75454
75465
|
if (Array.isArray(fieldEntry)) {
|
|
75455
75466
|
if (fieldEntry[0] === '@@render') {
|
|
75456
75467
|
field = fieldEntry[1];
|
|
75457
|
-
|
|
75458
|
-
|
|
75459
|
-
|
|
75460
|
-
|
|
75468
|
+
return {
|
|
75469
|
+
type: 'render',
|
|
75470
|
+
name: field,
|
|
75471
|
+
component: renderComponentMap[field],
|
|
75472
|
+
componentProps: fieldEntry[2] || {}
|
|
75473
|
+
};
|
|
75474
|
+
}
|
|
75475
|
+
|
|
75476
|
+
if (fieldEntry[0] === '@@markdown') {
|
|
75461
75477
|
return {
|
|
75462
75478
|
type: 'markdown',
|
|
75463
75479
|
name: fieldEntry[1],
|
|
@@ -75466,10 +75482,11 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75466
75482
|
content: fieldEntry[2]
|
|
75467
75483
|
}
|
|
75468
75484
|
};
|
|
75469
|
-
} else {
|
|
75470
|
-
field = fieldEntry[0];
|
|
75471
|
-
specialProps = fieldEntry[1];
|
|
75472
75485
|
}
|
|
75486
|
+
|
|
75487
|
+
field = fieldEntry[0];
|
|
75488
|
+
if (!fieldEntry[1]) throw new Error("field \"".concat(field, "\" is defined in an array, but has no props definition"));
|
|
75489
|
+
specialProps = fieldEntry[1];
|
|
75473
75490
|
}
|
|
75474
75491
|
|
|
75475
75492
|
var _specialProps = specialProps,
|
|
@@ -75490,8 +75507,8 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75490
75507
|
type = _schema$properties$fi.type,
|
|
75491
75508
|
defaultValue = _schema$properties$fi["default"];
|
|
75492
75509
|
var mapKey;
|
|
75493
|
-
if (
|
|
75494
|
-
var mapEntry =
|
|
75510
|
+
if (componentMap[field] !== undefined) mapKey = field;else if (typeof type === 'string' && componentMap[type] !== undefined) mapKey = type;else if (Array.isArray(type)) mapKey = 'select';else if (componentMap["default"] !== undefined) mapKey = 'default';else throw new Error("Could not find a Component to render for \"".concat(field, "\""));
|
|
75511
|
+
var mapEntry = componentMap[mapKey];
|
|
75495
75512
|
var component = mapEntry,
|
|
75496
75513
|
props = {};
|
|
75497
75514
|
|
|
@@ -75595,7 +75612,6 @@ var FormulatorFormSection = /*#__PURE__*/function (_React$Component) {
|
|
|
75595
75612
|
type: _type,
|
|
75596
75613
|
label: _label,
|
|
75597
75614
|
value: _value,
|
|
75598
|
-
isRender: true,
|
|
75599
75615
|
required: _required,
|
|
75600
75616
|
hasErrors: _hasErrors,
|
|
75601
75617
|
errors: _errors,
|
|
@@ -76386,4 +76402,4 @@ FormulatorForm.defaultProps = {
|
|
|
76386
76402
|
errorMessages: {}
|
|
76387
76403
|
};
|
|
76388
76404
|
|
|
76389
|
-
export { FormBoolean, FormField$1 as FormField, FormNumber, FormReadOnlyBoolean, FormReadOnlyField$1 as FormReadOnlyField, FormReadOnlyMarkdown, FormReadOnlyNumber, FormReadOnlyRepeater, FormReadOnlySelect,
|
|
76405
|
+
export { FormBoolean, FormField$1 as FormField, FormNumber, FormReadOnlyBoolean, FormReadOnlyField$1 as FormReadOnlyField, FormReadOnlyMarkdown, FormReadOnlyNumber, FormReadOnlyRepeater, FormReadOnlySelect, FormReadOnlyText, FormRepeater, FormSelect, FormText, FormulatorForm };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scenid/react-formulator",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"module": "dist/index.esm.js",
|
|
6
6
|
"repository": "https://dennykoch@bitbucket.org/scenid/react-formulator.git",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"@material-ui/icons": "^4.11.3",
|
|
22
22
|
"@material-ui/styles": "^4.11.5",
|
|
23
23
|
"classnames": "^2.3.1",
|
|
24
|
+
"luxon": "^2.3.2",
|
|
24
25
|
"prop-types": "^15.8.1",
|
|
25
26
|
"react": "16.11.0",
|
|
26
27
|
"react-dom": "16.11.0"
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
"@storybook/testing-library": "^0.0.11",
|
|
47
48
|
"babel-loader": "^8.2.5",
|
|
48
49
|
"classnames": "^2.3.1",
|
|
50
|
+
"luxon": "^2.3.2",
|
|
49
51
|
"cross-env": "^7.0.3",
|
|
50
52
|
"eslint": "^7.11.0",
|
|
51
53
|
"eslint-config-airbnb": "^18.0.1",
|
|
@@ -21,7 +21,6 @@ const useStyles = makeStyles(theme => ({ error: { color: theme.palette.error.mai
|
|
|
21
21
|
const FormControlField = ({
|
|
22
22
|
variant,
|
|
23
23
|
type,
|
|
24
|
-
isRender,
|
|
25
24
|
name,
|
|
26
25
|
label,
|
|
27
26
|
component,
|
|
@@ -51,6 +50,8 @@ const FormControlField = ({
|
|
|
51
50
|
onChange
|
|
52
51
|
}
|
|
53
52
|
|
|
53
|
+
const isRender = type === 'render'
|
|
54
|
+
|
|
54
55
|
if (validating) {
|
|
55
56
|
finalProps.endAdornment = [(
|
|
56
57
|
<InputAdornment position="end">
|
|
@@ -127,7 +128,6 @@ const FormControlField = ({
|
|
|
127
128
|
|
|
128
129
|
FormControlField.propTypes = {
|
|
129
130
|
variant: PropTypes.oneOf(['standard', 'filled', 'outlined']),
|
|
130
|
-
isRender: PropTypes.bool,
|
|
131
131
|
component: PropTypes.any.isRequired,
|
|
132
132
|
componentProps: PropTypes.object,
|
|
133
133
|
type: PropTypes.string.isRequired,
|
|
@@ -190,7 +190,6 @@ const FormField = ({
|
|
|
190
190
|
|
|
191
191
|
FormField.propTypes = {
|
|
192
192
|
variant: PropTypes.oneOf(['standard', 'filled', 'outlined']),
|
|
193
|
-
isRender: PropTypes.bool,
|
|
194
193
|
component: PropTypes.any.isRequired,
|
|
195
194
|
componentProps: PropTypes.object,
|
|
196
195
|
type: PropTypes.string.isRequired,
|
|
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
|
|
|
3
3
|
|
|
4
4
|
import { TextField, MenuItem } from '@material-ui/core'
|
|
5
5
|
|
|
6
|
-
const FormSelect = ({ options, required, ...props }) => {
|
|
6
|
+
const FormSelect = ({ options, required, value, ...props }) => {
|
|
7
7
|
let unselectOption = []
|
|
8
8
|
|
|
9
9
|
if (!required) {
|
|
@@ -18,6 +18,8 @@ const FormSelect = ({ options, required, ...props }) => {
|
|
|
18
18
|
return (
|
|
19
19
|
<TextField
|
|
20
20
|
select
|
|
21
|
+
required={required}
|
|
22
|
+
value={value === undefined ? '' : value}
|
|
21
23
|
{...props}
|
|
22
24
|
>
|
|
23
25
|
{
|
|
@@ -60,18 +60,23 @@ class FormulatorFormSection extends React.Component {
|
|
|
60
60
|
errorMessages,
|
|
61
61
|
results,
|
|
62
62
|
data,
|
|
63
|
-
fieldStates
|
|
63
|
+
fieldStates,
|
|
64
|
+
renderComponentMap
|
|
64
65
|
} = this.props
|
|
65
66
|
|
|
66
67
|
let field = fieldEntry, specialProps = {}
|
|
67
68
|
if (Array.isArray(fieldEntry)) {
|
|
68
69
|
if (fieldEntry[0] === '@@render') {
|
|
69
70
|
field = fieldEntry[1]
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
return ({
|
|
72
|
+
type: 'render',
|
|
73
|
+
name: field,
|
|
74
|
+
component: renderComponentMap[field],
|
|
75
|
+
componentProps: fieldEntry[2] || {}
|
|
76
|
+
})
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (fieldEntry[0] === '@@markdown') {
|
|
75
80
|
return ({
|
|
76
81
|
type: 'markdown',
|
|
77
82
|
name: fieldEntry[1],
|
|
@@ -80,10 +85,12 @@ class FormulatorFormSection extends React.Component {
|
|
|
80
85
|
content: fieldEntry[2]
|
|
81
86
|
}
|
|
82
87
|
})
|
|
83
|
-
} else {
|
|
84
|
-
field = fieldEntry[0]
|
|
85
|
-
specialProps = fieldEntry[1]
|
|
86
88
|
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
field = fieldEntry[0]
|
|
92
|
+
if (!fieldEntry[1]) throw new Error(`field "${field}" is defined in an array, but has no props definition`)
|
|
93
|
+
specialProps = fieldEntry[1]
|
|
87
94
|
}
|
|
88
95
|
|
|
89
96
|
const { hidden, hideLabel, ...extraProps } = specialProps
|
|
@@ -97,14 +104,13 @@ class FormulatorFormSection extends React.Component {
|
|
|
97
104
|
const { type, default: defaultValue } = schema.properties[field]
|
|
98
105
|
|
|
99
106
|
let mapKey
|
|
100
|
-
if (
|
|
101
|
-
else if (componentMap[field] !== undefined) mapKey = field
|
|
107
|
+
if (componentMap[field] !== undefined) mapKey = field
|
|
102
108
|
else if (typeof type === 'string' && componentMap[type] !== undefined) mapKey = type
|
|
103
109
|
else if (Array.isArray(type)) mapKey = 'select'
|
|
104
110
|
else if (componentMap.default !== undefined) mapKey = 'default'
|
|
105
111
|
else throw new Error(`Could not find a Component to render for "${field}"`)
|
|
106
112
|
|
|
107
|
-
const mapEntry =
|
|
113
|
+
const mapEntry = componentMap[mapKey]
|
|
108
114
|
let component = mapEntry, props = {}
|
|
109
115
|
|
|
110
116
|
if (mapKey === 'select') {
|
|
@@ -218,7 +224,6 @@ class FormulatorFormSection extends React.Component {
|
|
|
218
224
|
type,
|
|
219
225
|
label,
|
|
220
226
|
value,
|
|
221
|
-
isRender: true,
|
|
222
227
|
required,
|
|
223
228
|
hasErrors,
|
|
224
229
|
errors,
|
|
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types'
|
|
|
4
4
|
import { Typography, Box } from '@material-ui/core'
|
|
5
5
|
|
|
6
6
|
const FormControlField = ({
|
|
7
|
-
|
|
7
|
+
type,
|
|
8
8
|
name,
|
|
9
9
|
label,
|
|
10
10
|
component,
|
|
@@ -28,7 +28,7 @@ const FormControlField = ({
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
let control
|
|
31
|
-
if (
|
|
31
|
+
if (type === 'render') control = React.cloneElement(component, finalProps)
|
|
32
32
|
else control = React.createElement(component, finalProps)
|
|
33
33
|
|
|
34
34
|
return (
|
|
@@ -55,10 +55,10 @@ const FormControlField = ({
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
FormControlField.propTypes = {
|
|
58
|
-
isRender: PropTypes.bool,
|
|
59
58
|
component: PropTypes.any.isRequired,
|
|
60
59
|
componentProps: PropTypes.object,
|
|
61
60
|
name: PropTypes.string.isRequired,
|
|
61
|
+
type: PropTypes.string.isRequired,
|
|
62
62
|
label: PropTypes.string.isRequired,
|
|
63
63
|
value: PropTypes.oneOfType([
|
|
64
64
|
PropTypes.string,
|
|
@@ -3,17 +3,27 @@ import PropTypes from 'prop-types'
|
|
|
3
3
|
|
|
4
4
|
import { Typography } from '@material-ui/core'
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
<Typography variant="body1">
|
|
8
|
-
{value}
|
|
9
|
-
</Typography>
|
|
10
|
-
)
|
|
6
|
+
import { DateTime } from 'luxon'
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
const FormReadOnlyText = ({ value, type }) => {
|
|
9
|
+
let finalValue = value
|
|
10
|
+
|
|
11
|
+
if (type === 'date' || type === 'datetime-local') {
|
|
12
|
+
finalValue = DateTime.fromISO(value).toLocaleString(DateTime.DATE_MED_WITH_WEEKDAY)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<Typography variant="body1">
|
|
17
|
+
{finalValue}
|
|
18
|
+
</Typography>
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
FormReadOnlyText.propTypes = {
|
|
13
23
|
value: PropTypes.oneOfType([
|
|
14
24
|
PropTypes.number,
|
|
15
25
|
PropTypes.string
|
|
16
26
|
])
|
|
17
27
|
}
|
|
18
28
|
|
|
19
|
-
export default
|
|
29
|
+
export default FormReadOnlyText
|