@pie-lib/config-ui 11.1.5-next.4 → 11.1.5-next.48

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 (66) hide show
  1. package/lib/alert-dialog.js +4 -10
  2. package/lib/alert-dialog.js.map +1 -1
  3. package/lib/checkbox.js +5 -17
  4. package/lib/checkbox.js.map +1 -1
  5. package/lib/choice-configuration/feedback-menu.js +5 -38
  6. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  7. package/lib/choice-configuration/index.js +48 -94
  8. package/lib/choice-configuration/index.js.map +1 -1
  9. package/lib/choice-utils.js +1 -11
  10. package/lib/choice-utils.js.map +1 -1
  11. package/lib/feedback-config/feedback-selector.js +9 -41
  12. package/lib/feedback-config/feedback-selector.js.map +1 -1
  13. package/lib/feedback-config/group.js +5 -16
  14. package/lib/feedback-config/group.js.map +1 -1
  15. package/lib/feedback-config/index.js +6 -46
  16. package/lib/feedback-config/index.js.map +1 -1
  17. package/lib/form-section.js +4 -12
  18. package/lib/form-section.js.map +1 -1
  19. package/lib/help.js +6 -37
  20. package/lib/help.js.map +1 -1
  21. package/lib/index.js +0 -29
  22. package/lib/index.js.map +1 -1
  23. package/lib/input.js +9 -37
  24. package/lib/input.js.map +1 -1
  25. package/lib/inputs.js +16 -35
  26. package/lib/inputs.js.map +1 -1
  27. package/lib/langs.js +10 -39
  28. package/lib/langs.js.map +1 -1
  29. package/lib/layout/config-layout.js +11 -29
  30. package/lib/layout/config-layout.js.map +1 -1
  31. package/lib/layout/index.js +0 -3
  32. package/lib/layout/index.js.map +1 -1
  33. package/lib/layout/layout-contents.js +53 -59
  34. package/lib/layout/layout-contents.js.map +1 -1
  35. package/lib/layout/settings-box.js +3 -24
  36. package/lib/layout/settings-box.js.map +1 -1
  37. package/lib/mui-box/index.js +3 -10
  38. package/lib/mui-box/index.js.map +1 -1
  39. package/lib/number-text-field-custom.js +29 -82
  40. package/lib/number-text-field-custom.js.map +1 -1
  41. package/lib/number-text-field.js +16 -66
  42. package/lib/number-text-field.js.map +1 -1
  43. package/lib/radio-with-label.js +4 -11
  44. package/lib/radio-with-label.js.map +1 -1
  45. package/lib/settings/display-size.js +3 -15
  46. package/lib/settings/display-size.js.map +1 -1
  47. package/lib/settings/index.js +4 -27
  48. package/lib/settings/index.js.map +1 -1
  49. package/lib/settings/panel.js +40 -102
  50. package/lib/settings/panel.js.map +1 -1
  51. package/lib/settings/settings-radio-label.js +4 -11
  52. package/lib/settings/settings-radio-label.js.map +1 -1
  53. package/lib/settings/toggle.js +3 -10
  54. package/lib/settings/toggle.js.map +1 -1
  55. package/lib/tabs/index.js +6 -28
  56. package/lib/tabs/index.js.map +1 -1
  57. package/lib/tags-input/index.js +4 -41
  58. package/lib/tags-input/index.js.map +1 -1
  59. package/lib/two-choice.js +14 -48
  60. package/lib/two-choice.js.map +1 -1
  61. package/lib/with-stateful-model.js +0 -19
  62. package/lib/with-stateful-model.js.map +1 -1
  63. package/package.json +3 -3
  64. package/src/layout/config-layout.jsx +9 -9
  65. package/src/layout/layout-contents.jsx +38 -33
  66. package/src/tabs/index.jsx +1 -1
package/lib/two-choice.js CHANGED
@@ -1,42 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = exports.NChoice = void 0;
9
-
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
10
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
11
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
12
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
13
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
15
  var _renderUi = require("@pie-lib/render-ui");
25
-
26
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
17
  var _radioWithLabel = _interopRequireDefault(require("./radio-with-label"));
29
-
30
18
  var _react = _interopRequireDefault(require("react"));
31
-
32
19
  var _classnames = _interopRequireDefault(require("classnames"));
33
-
34
20
  var _styles = require("@material-ui/core/styles");
35
-
36
21
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
-
38
22
  function _isNativeReflectConstruct() { 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; } }
39
-
40
23
  var styles = function styles(theme) {
41
24
  return {
42
25
  group: {
@@ -50,41 +33,33 @@ var styles = function styles(theme) {
50
33
  }
51
34
  };
52
35
  };
53
-
54
36
  var RawNChoice = /*#__PURE__*/function (_React$Component) {
55
37
  (0, _inherits2["default"])(RawNChoice, _React$Component);
56
-
57
38
  var _super = _createSuper(RawNChoice);
58
-
59
39
  function RawNChoice() {
60
40
  var _this;
61
-
62
41
  (0, _classCallCheck2["default"])(this, RawNChoice);
63
-
64
42
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
65
43
  args[_key] = arguments[_key];
66
44
  }
67
-
68
45
  _this = _super.call.apply(_super, [this].concat(args));
69
46
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleChange", function (event) {
70
47
  _this.props.onChange(event.currentTarget.value);
71
48
  });
72
49
  return _this;
73
50
  }
74
-
75
51
  (0, _createClass2["default"])(RawNChoice, [{
76
52
  key: "render",
77
53
  value: function render() {
78
54
  var _this2 = this;
79
-
80
55
  var _this$props = this.props,
81
- header = _this$props.header,
82
- className = _this$props.className,
83
- classes = _this$props.classes,
84
- customLabel = _this$props.customLabel,
85
- opts = _this$props.opts,
86
- value = _this$props.value,
87
- direction = _this$props.direction;
56
+ header = _this$props.header,
57
+ className = _this$props.className,
58
+ classes = _this$props.classes,
59
+ customLabel = _this$props.customLabel,
60
+ opts = _this$props.opts,
61
+ value = _this$props.value,
62
+ direction = _this$props.direction;
88
63
  var preppedOpts = opts.map(function (o) {
89
64
  return typeof o === 'string' ? {
90
65
  label: o,
@@ -110,7 +85,6 @@ var RawNChoice = /*#__PURE__*/function (_React$Component) {
110
85
  }]);
111
86
  return RawNChoice;
112
87
  }(_react["default"].Component);
113
-
114
88
  (0, _defineProperty2["default"])(RawNChoice, "propTypes", {
115
89
  header: _propTypes["default"].string.isRequired,
116
90
  className: _propTypes["default"].string,
@@ -123,33 +97,28 @@ var RawNChoice = /*#__PURE__*/function (_React$Component) {
123
97
  });
124
98
  var NChoice = (0, _styles.withStyles)(styles)(RawNChoice);
125
99
  exports.NChoice = NChoice;
126
-
127
100
  var labelValue = _propTypes["default"].shape({
128
101
  label: _propTypes["default"].string,
129
102
  value: _propTypes["default"].string
130
103
  });
131
-
132
104
  var TwoChoice = /*#__PURE__*/function (_React$Component2) {
133
105
  (0, _inherits2["default"])(TwoChoice, _React$Component2);
134
-
135
106
  var _super2 = _createSuper(TwoChoice);
136
-
137
107
  function TwoChoice() {
138
108
  (0, _classCallCheck2["default"])(this, TwoChoice);
139
109
  return _super2.apply(this, arguments);
140
110
  }
141
-
142
111
  (0, _createClass2["default"])(TwoChoice, [{
143
112
  key: "render",
144
113
  value: function render() {
145
114
  var _this$props2 = this.props,
146
- one = _this$props2.one,
147
- two = _this$props2.two,
148
- header = _this$props2.header,
149
- className = _this$props2.className,
150
- customLabel = _this$props2.customLabel,
151
- value = _this$props2.value,
152
- onChange = _this$props2.onChange;
115
+ one = _this$props2.one,
116
+ two = _this$props2.two,
117
+ header = _this$props2.header,
118
+ className = _this$props2.className,
119
+ customLabel = _this$props2.customLabel,
120
+ value = _this$props2.value,
121
+ onChange = _this$props2.onChange;
153
122
  var opts = [one, two];
154
123
  return /*#__PURE__*/_react["default"].createElement(NChoice, {
155
124
  customLabel: customLabel,
@@ -163,7 +132,6 @@ var TwoChoice = /*#__PURE__*/function (_React$Component2) {
163
132
  }]);
164
133
  return TwoChoice;
165
134
  }(_react["default"].Component);
166
-
167
135
  (0, _defineProperty2["default"])(TwoChoice, "propTypes", {
168
136
  header: _propTypes["default"].string.isRequired,
169
137
  value: _propTypes["default"].string.isRequired,
@@ -173,8 +141,6 @@ var TwoChoice = /*#__PURE__*/function (_React$Component2) {
173
141
  className: _propTypes["default"].string,
174
142
  customLabel: _propTypes["default"].func
175
143
  });
176
-
177
144
  var _default = (0, _styles.withStyles)(styles)(TwoChoice);
178
-
179
145
  exports["default"] = _default;
180
146
  //# sourceMappingURL=two-choice.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/two-choice.jsx"],"names":["styles","theme","group","display","flexWrap","paddingLeft","marginTop","spacing","unit","vertical","flexDirection","RawNChoice","event","props","onChange","currentTarget","value","header","className","classes","customLabel","opts","direction","preppedOpts","map","o","label","LabelComponent","RadioWithLabel","index","handleChange","React","Component","PropTypes","string","isRequired","func","array","oneOf","object","NChoice","labelValue","shape","TwoChoice","one","two","oneOfType"],"mappings":"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","sourcesContent":["import { InputContainer } from '@pie-lib/render-ui';\nimport PropTypes from 'prop-types';\nimport RadioWithLabel from './radio-with-label';\nimport React from 'react';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = (theme) => ({\n group: {\n display: 'flex',\n flexWrap: 'wrap',\n paddingLeft: 0,\n marginTop: theme.spacing.unit,\n },\n vertical: {\n flexDirection: 'column',\n },\n});\n\nclass RawNChoice extends React.Component {\n static propTypes = {\n header: PropTypes.string.isRequired,\n className: PropTypes.string,\n customLabel: PropTypes.func,\n opts: PropTypes.array.isRequired,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n classes: PropTypes.object.isRequired,\n };\n\n handleChange = (event) => {\n this.props.onChange(event.currentTarget.value);\n };\n\n render() {\n const { header, className, classes, customLabel, opts, value, direction } = this.props;\n\n const preppedOpts = opts.map((o) => {\n return typeof o === 'string' ? { label: o, value: o } : o;\n });\n const LabelComponent = customLabel || RadioWithLabel;\n\n return (\n <InputContainer label={header} className={className}>\n <div className={classNames(classes.group, classes[direction])}>\n {preppedOpts.map((o, index) => (\n <LabelComponent\n value={o.value}\n key={index}\n checked={o.value === value}\n onChange={this.handleChange}\n label={o.label}\n />\n ))}\n </div>\n </InputContainer>\n );\n }\n}\n\nexport const NChoice = withStyles(styles)(RawNChoice);\n\nconst labelValue = PropTypes.shape({ label: PropTypes.string, value: PropTypes.string });\n\nclass TwoChoice extends React.Component {\n static propTypes = {\n header: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n one: PropTypes.oneOfType([labelValue, PropTypes.string]),\n two: PropTypes.oneOfType([labelValue, PropTypes.string]),\n className: PropTypes.string,\n customLabel: PropTypes.func,\n };\n\n render() {\n const { one, two, header, className, customLabel, value, onChange } = this.props;\n const opts = [one, two];\n\n return (\n <NChoice\n customLabel={customLabel}\n header={header}\n className={className}\n opts={opts}\n value={value}\n onChange={onChange}\n />\n );\n }\n}\n\nexport default withStyles(styles)(TwoChoice);\n"],"file":"two-choice.js"}
1
+ {"version":3,"file":"two-choice.js","names":["styles","theme","group","display","flexWrap","paddingLeft","marginTop","spacing","unit","vertical","flexDirection","RawNChoice","event","props","onChange","currentTarget","value","header","className","classes","customLabel","opts","direction","preppedOpts","map","o","label","LabelComponent","RadioWithLabel","classNames","index","handleChange","React","Component","PropTypes","string","isRequired","func","array","oneOf","object","NChoice","withStyles","labelValue","shape","TwoChoice","one","two","oneOfType"],"sources":["../src/two-choice.jsx"],"sourcesContent":["import { InputContainer } from '@pie-lib/render-ui';\nimport PropTypes from 'prop-types';\nimport RadioWithLabel from './radio-with-label';\nimport React from 'react';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = (theme) => ({\n group: {\n display: 'flex',\n flexWrap: 'wrap',\n paddingLeft: 0,\n marginTop: theme.spacing.unit,\n },\n vertical: {\n flexDirection: 'column',\n },\n});\n\nclass RawNChoice extends React.Component {\n static propTypes = {\n header: PropTypes.string.isRequired,\n className: PropTypes.string,\n customLabel: PropTypes.func,\n opts: PropTypes.array.isRequired,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n classes: PropTypes.object.isRequired,\n };\n\n handleChange = (event) => {\n this.props.onChange(event.currentTarget.value);\n };\n\n render() {\n const { header, className, classes, customLabel, opts, value, direction } = this.props;\n\n const preppedOpts = opts.map((o) => {\n return typeof o === 'string' ? { label: o, value: o } : o;\n });\n const LabelComponent = customLabel || RadioWithLabel;\n\n return (\n <InputContainer label={header} className={className}>\n <div className={classNames(classes.group, classes[direction])}>\n {preppedOpts.map((o, index) => (\n <LabelComponent\n value={o.value}\n key={index}\n checked={o.value === value}\n onChange={this.handleChange}\n label={o.label}\n />\n ))}\n </div>\n </InputContainer>\n );\n }\n}\n\nexport const NChoice = withStyles(styles)(RawNChoice);\n\nconst labelValue = PropTypes.shape({ label: PropTypes.string, value: PropTypes.string });\n\nclass TwoChoice extends React.Component {\n static propTypes = {\n header: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n one: PropTypes.oneOfType([labelValue, PropTypes.string]),\n two: PropTypes.oneOfType([labelValue, PropTypes.string]),\n className: PropTypes.string,\n customLabel: PropTypes.func,\n };\n\n render() {\n const { one, two, header, className, customLabel, value, onChange } = this.props;\n const opts = [one, two];\n\n return (\n <NChoice\n customLabel={customLabel}\n header={header}\n className={className}\n opts={opts}\n value={value}\n onChange={onChange}\n />\n );\n }\n}\n\nexport default withStyles(styles)(TwoChoice);\n"],"mappings":"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"}
@@ -1,43 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
10
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
11
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
12
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
13
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
15
  var _react = _interopRequireDefault(require("react"));
25
-
26
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
17
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
29
-
30
18
  function _isNativeReflectConstruct() { 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; } }
31
-
32
19
  var withStatefulModel = function withStatefulModel(Component) {
33
20
  var Stateful = /*#__PURE__*/function (_React$Component) {
34
21
  (0, _inherits2["default"])(Stateful, _React$Component);
35
-
36
22
  var _super = _createSuper(Stateful);
37
-
38
23
  function Stateful(props) {
39
24
  var _this;
40
-
41
25
  (0, _classCallCheck2["default"])(this, Stateful);
42
26
  _this = _super.call(this, props);
43
27
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (model) {
@@ -52,7 +36,6 @@ var withStatefulModel = function withStatefulModel(Component) {
52
36
  };
53
37
  return _this;
54
38
  }
55
-
56
39
  (0, _createClass2["default"])(Stateful, [{
57
40
  key: "componentWillReceiveProps",
58
41
  value: function componentWillReceiveProps(props) {
@@ -71,14 +54,12 @@ var withStatefulModel = function withStatefulModel(Component) {
71
54
  }]);
72
55
  return Stateful;
73
56
  }(_react["default"].Component);
74
-
75
57
  (0, _defineProperty2["default"])(Stateful, "propTypes", {
76
58
  model: _propTypes["default"].object.isRequired,
77
59
  onChange: _propTypes["default"].func.isRequired
78
60
  });
79
61
  return Stateful;
80
62
  };
81
-
82
63
  var _default = withStatefulModel;
83
64
  exports["default"] = _default;
84
65
  //# sourceMappingURL=with-stateful-model.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/with-stateful-model.jsx"],"names":["withStatefulModel","Component","Stateful","props","model","setState","onChange","state","React","PropTypes","object","isRequired","func"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,SAAD,EAAe;AAAA,MACjCC,QADiC;AAAA;;AAAA;;AAOrC,sBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,gCAAMA,KAAN;AADiB,mGAWR,UAACC,KAAD,EAAW;AACpB,cAAKC,QAAL,CAAc;AAAED,UAAAA,KAAK,EAALA;AAAF,SAAd,EAAyB,YAAM;AAC7B,gBAAKD,KAAL,CAAWG,QAAX,CAAoB,MAAKC,KAAL,CAAWH,KAA/B;AACD,SAFD;AAGD,OAfkB;AAEjB,YAAKG,KAAL,GAAa;AACXH,QAAAA,KAAK,EAAED,KAAK,CAACC;AADF,OAAb;AAFiB;AAKlB;;AAZoC;AAAA;AAAA,aAcrC,mCAA0BD,KAA1B,EAAiC;AAC/B,aAAKE,QAAL,CAAc;AAAED,UAAAA,KAAK,EAAED,KAAK,CAACC;AAAf,SAAd;AACD;AAhBoC;AAAA;AAAA,aAwBrC,kBAAS;AACP,4BAAO,gCAAC,SAAD;AAAW,UAAA,KAAK,EAAE,KAAKG,KAAL,CAAWH,KAA7B;AAAoC,UAAA,QAAQ,EAAE,KAAKE;AAAnD,UAAP;AACD;AA1BoC;AAAA;AAAA,IAChBE,kBAAMP,SADU;;AAAA,mCACjCC,QADiC,eAElB;AACjBE,IAAAA,KAAK,EAAEK,sBAAUC,MAAV,CAAiBC,UADP;AAEjBL,IAAAA,QAAQ,EAAEG,sBAAUG,IAAV,CAAeD;AAFR,GAFkB;AA6BvC,SAAOT,QAAP;AACD,CA9BD;;eAgCeF,iB","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst withStatefulModel = (Component) => {\n class Stateful extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n };\n }\n\n componentWillReceiveProps(props) {\n this.setState({ model: props.model });\n }\n\n onChange = (model) => {\n this.setState({ model }, () => {\n this.props.onChange(this.state.model);\n });\n };\n\n render() {\n return <Component model={this.state.model} onChange={this.onChange} />;\n }\n }\n\n return Stateful;\n};\n\nexport default withStatefulModel;\n"],"file":"with-stateful-model.js"}
1
+ {"version":3,"file":"with-stateful-model.js","names":["withStatefulModel","Component","Stateful","props","model","setState","onChange","state","React","PropTypes","object","isRequired","func"],"sources":["../src/with-stateful-model.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst withStatefulModel = (Component) => {\n class Stateful extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n };\n }\n\n componentWillReceiveProps(props) {\n this.setState({ model: props.model });\n }\n\n onChange = (model) => {\n this.setState({ model }, () => {\n this.props.onChange(this.state.model);\n });\n };\n\n render() {\n return <Component model={this.state.model} onChange={this.onChange} />;\n }\n }\n\n return Stateful;\n};\n\nexport default withStatefulModel;\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAAmC;AAAA;AAEnC,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIC,SAAS,EAAK;EAAA,IACjCC,QAAQ;IAAA;IAAA;IAMZ,kBAAYC,KAAK,EAAE;MAAA;MAAA;MACjB,0BAAMA,KAAK;MAAE,6FAUJ,UAACC,KAAK,EAAK;QACpB,MAAKC,QAAQ,CAAC;UAAED,KAAK,EAALA;QAAM,CAAC,EAAE,YAAM;UAC7B,MAAKD,KAAK,CAACG,QAAQ,CAAC,MAAKC,KAAK,CAACH,KAAK,CAAC;QACvC,CAAC,CAAC;MACJ,CAAC;MAbC,MAAKG,KAAK,GAAG;QACXH,KAAK,EAAED,KAAK,CAACC;MACf,CAAC;MAAC;IACJ;IAAC;MAAA;MAAA,OAED,mCAA0BD,KAAK,EAAE;QAC/B,IAAI,CAACE,QAAQ,CAAC;UAAED,KAAK,EAAED,KAAK,CAACC;QAAM,CAAC,CAAC;MACvC;IAAC;MAAA;MAAA,OAQD,kBAAS;QACP,oBAAO,gCAAC,SAAS;UAAC,KAAK,EAAE,IAAI,CAACG,KAAK,CAACH,KAAM;UAAC,QAAQ,EAAE,IAAI,CAACE;QAAS,EAAG;MACxE;IAAC;IAAA;EAAA,EAzBoBE,iBAAK,CAACP,SAAS;EAAA,iCAAhCC,QAAQ,eACO;IACjBE,KAAK,EAAEK,qBAAS,CAACC,MAAM,CAACC,UAAU;IAClCL,QAAQ,EAAEG,qBAAS,CAACG,IAAI,CAACD;EAC3B,CAAC;EAwBH,OAAOT,QAAQ;AACjB,CAAC;AAAC,eAEaF,iBAAiB;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/config-ui",
3
- "version": "11.1.5-next.4+19db4f8b",
3
+ "version": "11.1.5-next.48+cbb2d706",
4
4
  "main": "lib/index.js",
5
5
  "module": "src/index.js",
6
6
  "publishConfig": {
@@ -10,7 +10,7 @@
10
10
  "dependencies": {
11
11
  "@material-ui/core": "^3.8.3",
12
12
  "@material-ui/icons": "^3.0.2",
13
- "@pie-lib/editable-html": "^9.3.0",
13
+ "@pie-lib/editable-html": "^9.3.1-next.53+cbb2d706",
14
14
  "@pie-lib/icons": "^2.4.26",
15
15
  "@pie-lib/render-ui": "^4.13.7",
16
16
  "classnames": "^2.2.6",
@@ -26,5 +26,5 @@
26
26
  "peerDependencies": {
27
27
  "react": "^16.8.1"
28
28
  },
29
- "gitHead": "19db4f8b84587d9d3a1542d8c06c5cb86458b1f3"
29
+ "gitHead": "cbb2d70637263fd7d0bf2a0a7d0b4b75e2a7370c"
30
30
  }
@@ -7,21 +7,21 @@ import SettingsBox from './settings-box';
7
7
  class ConfigLayout extends React.Component {
8
8
  static propTypes = {
9
9
  children: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.element), PropTypes.element]),
10
- settings: PropTypes.element,
11
10
  className: PropTypes.string,
12
11
  classes: PropTypes.object,
12
+ settings: PropTypes.element,
13
13
  sidePanelMinWidth: PropTypes.number,
14
+ hideSettings: PropTypes.bool,
14
15
  };
15
16
 
16
17
  static defaultProps = {
17
18
  sidePanelMinWidth: 950,
19
+ hideSettings: false,
18
20
  };
19
21
 
20
22
  constructor(props) {
21
23
  super(props);
22
- this.state = {
23
- layoutMode: undefined,
24
- };
24
+ this.state = { layoutMode: undefined };
25
25
  }
26
26
 
27
27
  onResize = (contentRect) => {
@@ -36,15 +36,15 @@ class ConfigLayout extends React.Component {
36
36
  return (
37
37
  <Measure bounds onResize={this.onResize}>
38
38
  {({ measureRef }) => {
39
- const { settings, children } = this.props;
39
+ const { children, settings, hideSettings } = this.props;
40
40
  const { layoutMode } = this.state;
41
41
 
42
+ const settingsPanel = layoutMode === 'inline' ? <SettingsBox>{settings}</SettingsBox> : settings;
43
+ const secondaryContent = hideSettings ? null : settingsPanel;
44
+
42
45
  return (
43
46
  <div ref={measureRef}>
44
- <LayoutContents
45
- mode={layoutMode}
46
- secondary={layoutMode === 'inline' ? <SettingsBox>{settings}</SettingsBox> : settings}
47
- >
47
+ <LayoutContents mode={layoutMode} secondary={secondaryContent}>
48
48
  {children}
49
49
  </LayoutContents>
50
50
  </div>
@@ -12,12 +12,42 @@ class RawLayoutContents extends React.Component {
12
12
  classes: PropTypes.object,
13
13
  };
14
14
 
15
+ getConfiguration = () => {
16
+ const { secondary } = this.props;
17
+ // in config-layout, secondary can be: <SettingsBox>{settings}</SettingsBox>, settings, null
18
+
19
+ return secondary?.props?.configuration || secondary?.props?.children?.props?.configuration || undefined;
20
+ };
21
+
22
+ // // eslint-disable-next-line no-unused-vars
23
+ // componentDidUpdate(prevProps, prevState, snapshot) {
24
+ // const configuration = this.getConfiguration();
25
+ // const { mode } = this.props;
26
+ //
27
+ // // promptHolder class is used to wrap up inputs:
28
+ // // we don't want inputs to fill the entire scrollable container,
29
+ // // but instead we want inputs to fit in the first view,
30
+ // // so we calculate the maximum space inputs need
31
+ // try {
32
+ // if (
33
+ // configuration?.maxWidth &&
34
+ // getComputedStyle(document.documentElement).getPropertyValue('--pie-prompt-holder-max-width') !==
35
+ // configuration?.maxWidth
36
+ // ) {
37
+ // document.documentElement.style.setProperty(
38
+ // '--pie-prompt-holder-max-width',
39
+ // mode === 'inline' ? `calc(${configuration.maxWidth} - 340px)` : configuration.maxWidth,
40
+ // );
41
+ // }
42
+ // } catch (e) {
43
+ // console.log(e.toString());
44
+ // }
45
+ // }
46
+
15
47
  render() {
16
48
  const { mode, secondary, children, classes } = this.props;
17
- // in config-layout, layout content gets called like this:
18
- // <LayoutContents secondary={layoutMode === 'inline' ? <SettingsBox>{settings}</SettingsBox> : settings}>
19
- const configuration =
20
- secondary?.props?.configuration || secondary?.props?.children?.props?.configuration || undefined;
49
+ const configuration = this.getConfiguration();
50
+
21
51
  let hasSettingsPanel = Object.entries(configuration || {}).some(([propName, obj]) => !!obj?.settings);
22
52
  // ebsr has configuration.partA and configuration.partB
23
53
  // because we might have nested configuration for other item types as well, let's add this simple regex to check values for settings
@@ -33,32 +63,14 @@ class RawLayoutContents extends React.Component {
33
63
  return (
34
64
  <div className={classnames(classes.container)}>
35
65
  {mode === 'inline' && (
36
- <div className={classes.flow} style={{ maxWidth: configuration.maxWidth || 'unset' }}>
37
- <div
38
- className={classnames(
39
- classes.configContainer,
40
- configuration.maxWidth && classes.contentContainerMaxWidth,
41
- )}
42
- style={{ maxWidth: configuration.maxWidth ? `calc(${configuration.maxWidth} - 330px)` : 'unset' }}
43
- >
44
- {children}
45
- </div>
66
+ <div className={classes.flow}>
67
+ <div className={classes.configContainer}>{children}</div>
46
68
  {hasSettingsPanel && <div>{secondary}</div>}
47
69
  </div>
48
70
  )}
49
71
  {mode === 'tabbed' && hasSettingsPanel && (
50
- <Tabs
51
- onChange={this.onTabsChange}
52
- contentClassName={classnames(
53
- classes.contentContainer,
54
- configuration.maxWidth && classes.contentContainerMaxWidth,
55
- )}
56
- contentStyle={{ maxWidth: configuration.maxWidth || 'unset' }}
57
- indicatorColor="primary"
58
- >
59
- <div className={configuration.contentContainerDesign} title="Design">
60
- {children}
61
- </div>
72
+ <Tabs onChange={this.onTabsChange} contentClassName={classes.contentContainer} indicatorColor="primary">
73
+ <div title="Design">{children}</div>
62
74
  <div title="settings">{secondary}</div>
63
75
  </Tabs>
64
76
  )}
@@ -81,17 +93,10 @@ const styles = () => ({
81
93
  contentContainer: {
82
94
  padding: '32px 16px 0 16px',
83
95
  },
84
- contentContainerMaxWidth: {
85
- display: 'flex',
86
- overflow: 'scroll',
87
- },
88
96
  configContainer: {
89
97
  flex: '1',
90
98
  marginRight: '20px',
91
99
  },
92
- contentContainerDesign: {
93
- width: '100%',
94
- },
95
100
  });
96
101
 
97
102
  export default withStyles(styles)(RawLayoutContents);
@@ -27,7 +27,7 @@ export class Tabs extends React.Component {
27
27
 
28
28
  render() {
29
29
  const { value } = this.state;
30
- const { children, className, contentClassName, contentStyle, classes } = this.props;
30
+ const { children, className, contentClassName, contentStyle = {}, classes } = this.props;
31
31
 
32
32
  const tabClasses = {
33
33
  root: classes.tabRoot,