@pie-lib/config-ui 10.10.23 → 10.11.1

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/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [10.11.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@10.11.0...@pie-lib/config-ui@10.11.1) (2022-04-28)
7
+
8
+ **Note:** Version bump only for package @pie-lib/config-ui
9
+
10
+
11
+
12
+
13
+
14
+ # [10.11.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@10.10.24...@pie-lib/config-ui@10.11.0) (2022-04-12)
15
+
16
+
17
+ ### Features
18
+
19
+ * PD-1679 remove unwanted changes ([61982ef](https://github.com/pie-framework/pie-lib/commit/61982efc31296b0ed3e84d1bd1f74dcd4dbe9ac2))
20
+ * **config-ui, editable-html:** add ui/ux validation for choices and editable html fields ([d40148f](https://github.com/pie-framework/pie-lib/commit/d40148f0f4b1232ce1506867a7424aa56e26c5ec))
21
+
22
+
23
+
24
+
25
+
26
+ ## [10.10.24](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@10.10.23...@pie-lib/config-ui@10.10.24) (2022-03-21)
27
+
28
+ **Note:** Version bump only for package @pie-lib/config-ui
29
+
30
+
31
+
32
+
33
+
6
34
  ## [10.10.23](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@10.10.22...@pie-lib/config-ui@10.10.23) (2022-03-08)
7
35
 
8
36
  **Note:** Version bump only for package @pie-lib/config-ui
@@ -78,7 +78,8 @@ var EditableHtmlContainer = (0, _styles.withStyles)(function (theme) {
78
78
  disabled = _ref.disabled,
79
79
  spellCheck = _ref.spellCheck,
80
80
  nonEmpty = _ref.nonEmpty,
81
- toolbarOpts = _ref.toolbarOpts;
81
+ toolbarOpts = _ref.toolbarOpts,
82
+ error = _ref.error;
82
83
  var names = (0, _classnames["default"])(classes.labelContainer, className);
83
84
  return /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
84
85
  label: label,
@@ -93,7 +94,8 @@ var EditableHtmlContainer = (0, _styles.withStyles)(function (theme) {
93
94
  onChange: onChange,
94
95
  imageSupport: imageSupport,
95
96
  className: classes.editor,
96
- toolbarOpts: toolbarOpts
97
+ toolbarOpts: toolbarOpts,
98
+ error: error
97
99
  })));
98
100
  });
99
101
  var Feedback = (0, _styles.withStyles)(function () {
@@ -248,7 +250,9 @@ var ChoiceConfiguration = /*#__PURE__*/function (_React$Component) {
248
250
  nonEmpty = _this$props5.nonEmpty,
249
251
  allowFeedBack = _this$props5.allowFeedBack,
250
252
  allowDelete = _this$props5.allowDelete,
251
- toolbarOpts = _this$props5.toolbarOpts;
253
+ toolbarOpts = _this$props5.toolbarOpts,
254
+ error = _this$props5.error,
255
+ noCorrectAnswerError = _this$props5.noCorrectAnswerError;
252
256
  var InputToggle = mode === 'checkbox' ? _inputs.InputCheckbox : _inputs.InputRadio;
253
257
  var names = (0, _classnames["default"])(classes.choiceConfiguration, className);
254
258
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -262,7 +266,8 @@ var ChoiceConfiguration = /*#__PURE__*/function (_React$Component) {
262
266
  className: classes.toggle,
263
267
  onChange: this.onCheckedChange,
264
268
  label: !noLabels ? 'Correct' : '',
265
- checked: !!data.correct
269
+ checked: !!data.correct,
270
+ error: noCorrectAnswerError
266
271
  }), /*#__PURE__*/_react["default"].createElement("div", {
267
272
  className: classes.middleColumn
268
273
  }, /*#__PURE__*/_react["default"].createElement(EditableHtmlContainer, {
@@ -273,8 +278,11 @@ var ChoiceConfiguration = /*#__PURE__*/function (_React$Component) {
273
278
  disabled: disabled,
274
279
  spellCheck: spellCheck,
275
280
  nonEmpty: nonEmpty,
276
- toolbarOpts: toolbarOpts
277
- }), allowFeedBack && /*#__PURE__*/_react["default"].createElement(Feedback, _extends({}, data.feedback, {
281
+ toolbarOpts: toolbarOpts,
282
+ error: error
283
+ }), error && /*#__PURE__*/_react["default"].createElement("div", {
284
+ className: classes.errorText
285
+ }, error), allowFeedBack && /*#__PURE__*/_react["default"].createElement(Feedback, _extends({}, data.feedback, {
278
286
  correct: data.correct,
279
287
  defaults: defaultFeedback,
280
288
  onChange: this.onFeedbackValueChange,
@@ -387,6 +395,10 @@ var styles = function styles(theme) {
387
395
  display: 'flex',
388
396
  flex: 1,
389
397
  flexDirection: 'column'
398
+ },
399
+ errorText: {
400
+ fontSize: '12px',
401
+ color: 'red'
390
402
  }
391
403
  };
392
404
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/choice-configuration/index.jsx"],"names":["EditableHtmlContainer","theme","labelContainer","editorHolder","marginTop","spacing","unit","label","classes","onChange","value","className","imageSupport","disabled","spellCheck","nonEmpty","toolbarOpts","names","editor","Feedback","text","width","feedbackContainer","position","arrowIcon","fill","left","top","type","correct","defaults","incorrect","ChoiceConfiguration","key","update","props","data","_changeFn","event","target","checked","v","feedback","fb","t","undefined","mode","onDelete","defaultFeedback","index","noLabels","useLetterOrdering","allowFeedBack","allowDelete","InputToggle","InputCheckbox","InputRadio","choiceConfiguration","topRow","String","fromCharCode","toUpperCase","toggle","onCheckedChange","middleColumn","onLabelChange","onFeedbackValueChange","onFeedbackTypeChange","icon","feedbackIcon","deleteIcon","React","Component","PropTypes","object","isRequired","bool","string","oneOf","shape","func","number","add","styles","padding","display","flex","paddingRight","paddingTop","paddingLeft","marginLeft","margin","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport { InputContainer } from '@pie-lib/render-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { InputCheckbox, InputRadio } from '../inputs';\nimport FeedbackMenu from './feedback-menu';\nimport ActionDelete from '@material-ui/icons/Delete';\nimport ArrowRight from '@material-ui/icons/SubdirectoryArrowRight';\nimport IconButton from '@material-ui/core/IconButton';\n\nconst EditableHtmlContainer = withStyles(theme => ({\n labelContainer: {},\n editorHolder: {\n marginTop: theme.spacing.unit * 2\n }\n}))(\n ({\n label,\n classes,\n onChange,\n value,\n className,\n imageSupport,\n disabled,\n spellCheck,\n nonEmpty,\n toolbarOpts\n }) => {\n const names = classNames(classes.labelContainer, className);\n\n return (\n <InputContainer label={label} className={names}>\n <div className={classes.editorHolder}>\n <EditableHtml\n markup={value || ''}\n disabled={disabled}\n spellCheck = {spellCheck}\n nonEmpty={nonEmpty}\n onChange={onChange}\n imageSupport={imageSupport}\n className={classes.editor}\n toolbarOpts={toolbarOpts}\n />\n </div>\n </InputContainer>\n );\n }\n);\n\nconst Feedback = withStyles(() => ({\n text: {\n width: '100%'\n },\n feedbackContainer: {\n position: 'relative'\n },\n arrowIcon: {\n fill: '#ccc',\n left: -56,\n position: 'absolute',\n top: 20\n }\n}))(({ value, onChange, type, correct, classes, defaults, toolbarOpts }) => {\n if (!type || type === 'none') {\n return null;\n } else if (type === 'default') {\n return (\n <div className={classes.feedbackContainer}>\n <ArrowRight className={classes.arrowIcon} />\n <TextField\n className={classes.text}\n label=\"Feedback Text\"\n value={correct ? defaults.correct : defaults.incorrect}\n />\n </div>\n );\n } else {\n return (\n <div className={classes.feedbackContainer}>\n <ArrowRight className={classes.arrowIcon} />\n <EditableHtmlContainer\n className={classes.text}\n label=\"Feedback Text\"\n value={value}\n onChange={onChange}\n toolbarOpts={toolbarOpts}\n />\n </div>\n );\n }\n});\n\nexport class ChoiceConfiguration extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n noLabels: PropTypes.bool,\n useLetterOrdering: PropTypes.bool,\n className: PropTypes.string,\n mode: PropTypes.oneOf(['checkbox', 'radio']),\n defaultFeedback: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n data: PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n correct: PropTypes.bool,\n feedback: PropTypes.shape({\n type: PropTypes.string,\n value: PropTypes.string\n })\n }),\n onDelete: PropTypes.func,\n onChange: PropTypes.func,\n index: PropTypes.number,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n }),\n allowFeedBack: PropTypes.bool,\n allowDelete: PropTypes.bool,\n toolbarOpts: PropTypes.object\n };\n\n static defaultProps = {\n index: -1,\n noLabels: false,\n useLetterOrdering: false,\n allowFeedBack: true,\n allowDelete: true\n };\n\n _changeFn = key => update => {\n const { data, onChange } = this.props;\n if (onChange) {\n onChange({ ...data, [key]: update });\n }\n };\n\n onLabelChange = this._changeFn('label');\n\n onCheckedChange = event => {\n const correct = event.target.checked;\n const { data, onChange } = this.props;\n\n if (onChange) {\n onChange({ ...data, correct });\n }\n };\n\n onFeedbackValueChange = v => {\n const { data, onChange } = this.props;\n\n if (data.feedback.type !== 'custom') {\n return;\n }\n\n const fb = { ...data.feedback, value: v };\n\n if (onChange) onChange({ ...data, feedback: fb });\n };\n\n onFeedbackTypeChange = t => {\n const { data, onChange } = this.props;\n const fb = { ...data.feedback, type: t };\n if (fb.type !== 'custom') {\n fb.value = undefined;\n }\n\n if (onChange) onChange({ ...data, feedback: fb });\n };\n\n render() {\n const {\n data,\n classes,\n mode,\n onDelete,\n defaultFeedback,\n index,\n className,\n noLabels,\n useLetterOrdering,\n imageSupport,\n disabled,\n spellCheck,\n nonEmpty,\n allowFeedBack,\n allowDelete,\n toolbarOpts\n } = this.props;\n\n const InputToggle = mode === 'checkbox' ? InputCheckbox : InputRadio;\n const names = classNames(classes.choiceConfiguration, className);\n return (\n <div className={names}>\n <div className={classes.topRow}>\n {index > 0 && (\n <span className={classes.index} type=\"title\">\n {useLetterOrdering ? String.fromCharCode(96 + index).toUpperCase() : index}\n </span>\n )}\n <InputToggle\n className={classes.toggle}\n onChange={this.onCheckedChange}\n label={!noLabels ? 'Correct' : ''}\n checked={!!data.correct}\n />\n <div className={classes.middleColumn}>\n <EditableHtmlContainer\n label={!noLabels ? 'Label' : ''}\n value={data.label}\n onChange={this.onLabelChange}\n imageSupport={imageSupport}\n disabled={disabled}\n spellCheck = {spellCheck}\n nonEmpty={nonEmpty}\n toolbarOpts={toolbarOpts}\n />\n\n {allowFeedBack && (\n <Feedback\n {...data.feedback}\n correct={data.correct}\n defaults={defaultFeedback}\n onChange={this.onFeedbackValueChange}\n toolbarOpts={toolbarOpts}\n />\n )}\n </div>\n {allowFeedBack && (\n <InputContainer className={classes.feedback} label={!noLabels ? 'Feedback' : ''}>\n <FeedbackMenu\n onChange={this.onFeedbackTypeChange}\n value={data.feedback}\n classes={{\n icon: classes.feedbackIcon\n }}\n />\n </InputContainer>\n )}\n {allowDelete && (\n <InputContainer className={classes.delete} label={!noLabels ? 'Delete' : ''}>\n <IconButton aria-label=\"delete\" className={classes.deleteIcon} onClick={onDelete}>\n <ActionDelete />\n </IconButton>\n </InputContainer>\n )}\n </div>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n index: {\n padding: '24px 10px 0 0'\n },\n choiceConfiguration: {},\n topRow: {\n display: 'flex'\n },\n value: {\n flex: '0.5',\n paddingRight: theme.spacing.unit\n },\n editorHolder: {\n marginTop: theme.spacing.unit * 2\n },\n toggle: {\n flex: '0 1 auto'\n },\n feedback: {\n flex: '0 1 auto',\n paddingTop: theme.spacing.unit,\n paddingLeft: 0,\n marginLeft: 0,\n paddingRight: theme.spacing.unit * 3\n },\n feedbackIcon: {\n margin: 0,\n paddingLeft: 0,\n width: 'inherit'\n },\n deleteIcon: {\n margin: 0,\n width: 'inherit'\n },\n delete: {\n flex: '0 1 auto',\n paddingTop: theme.spacing.unit,\n paddingLeft: 0,\n marginLeft: 0\n },\n middleColumn: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column'\n }\n});\n\nexport default withStyles(styles)(ChoiceConfiguration);\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/choice-configuration/index.jsx"],"names":["EditableHtmlContainer","theme","labelContainer","editorHolder","marginTop","spacing","unit","label","classes","onChange","value","className","imageSupport","disabled","spellCheck","nonEmpty","toolbarOpts","error","names","editor","Feedback","text","width","feedbackContainer","position","arrowIcon","fill","left","top","type","correct","defaults","incorrect","ChoiceConfiguration","key","update","props","data","_changeFn","event","target","checked","v","feedback","fb","t","undefined","mode","onDelete","defaultFeedback","index","noLabels","useLetterOrdering","allowFeedBack","allowDelete","noCorrectAnswerError","InputToggle","InputCheckbox","InputRadio","choiceConfiguration","topRow","String","fromCharCode","toUpperCase","toggle","onCheckedChange","middleColumn","onLabelChange","errorText","onFeedbackValueChange","onFeedbackTypeChange","icon","feedbackIcon","deleteIcon","React","Component","PropTypes","object","isRequired","bool","string","oneOf","shape","func","number","add","styles","padding","display","flex","paddingRight","paddingTop","paddingLeft","marginLeft","margin","flexDirection","fontSize","color"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport { InputContainer } from '@pie-lib/render-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { InputCheckbox, InputRadio } from '../inputs';\nimport FeedbackMenu from './feedback-menu';\nimport ActionDelete from '@material-ui/icons/Delete';\nimport ArrowRight from '@material-ui/icons/SubdirectoryArrowRight';\nimport IconButton from '@material-ui/core/IconButton';\n\nconst EditableHtmlContainer = withStyles(theme => ({\n labelContainer: {},\n editorHolder: {\n marginTop: theme.spacing.unit * 2\n }\n}))(\n ({\n label,\n classes,\n onChange,\n value,\n className,\n imageSupport,\n disabled,\n spellCheck,\n nonEmpty,\n toolbarOpts,\n error\n }) => {\n const names = classNames(classes.labelContainer, className);\n\n return (\n <InputContainer label={label} className={names}>\n <div className={classes.editorHolder}>\n <EditableHtml\n markup={value || ''}\n disabled={disabled}\n spellCheck={spellCheck}\n nonEmpty={nonEmpty}\n onChange={onChange}\n imageSupport={imageSupport}\n className={classes.editor}\n toolbarOpts={toolbarOpts}\n error={error}\n />\n </div>\n </InputContainer>\n );\n }\n);\n\nconst Feedback = withStyles(() => ({\n text: {\n width: '100%'\n },\n feedbackContainer: {\n position: 'relative'\n },\n arrowIcon: {\n fill: '#ccc',\n left: -56,\n position: 'absolute',\n top: 20\n }\n}))(({ value, onChange, type, correct, classes, defaults, toolbarOpts }) => {\n if (!type || type === 'none') {\n return null;\n } else if (type === 'default') {\n return (\n <div className={classes.feedbackContainer}>\n <ArrowRight className={classes.arrowIcon} />\n <TextField\n className={classes.text}\n label=\"Feedback Text\"\n value={correct ? defaults.correct : defaults.incorrect}\n />\n </div>\n );\n } else {\n return (\n <div className={classes.feedbackContainer}>\n <ArrowRight className={classes.arrowIcon} />\n <EditableHtmlContainer\n className={classes.text}\n label=\"Feedback Text\"\n value={value}\n onChange={onChange}\n toolbarOpts={toolbarOpts}\n />\n </div>\n );\n }\n});\n\nexport class ChoiceConfiguration extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n noLabels: PropTypes.bool,\n useLetterOrdering: PropTypes.bool,\n className: PropTypes.string,\n mode: PropTypes.oneOf(['checkbox', 'radio']),\n defaultFeedback: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n data: PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n correct: PropTypes.bool,\n feedback: PropTypes.shape({\n type: PropTypes.string,\n value: PropTypes.string\n })\n }),\n onDelete: PropTypes.func,\n onChange: PropTypes.func,\n index: PropTypes.number,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n }),\n allowFeedBack: PropTypes.bool,\n allowDelete: PropTypes.bool,\n toolbarOpts: PropTypes.object\n };\n\n static defaultProps = {\n index: -1,\n noLabels: false,\n useLetterOrdering: false,\n allowFeedBack: true,\n allowDelete: true\n };\n\n _changeFn = key => update => {\n const { data, onChange } = this.props;\n if (onChange) {\n onChange({ ...data, [key]: update });\n }\n };\n\n onLabelChange = this._changeFn('label');\n\n onCheckedChange = event => {\n const correct = event.target.checked;\n const { data, onChange } = this.props;\n\n if (onChange) {\n onChange({ ...data, correct });\n }\n };\n\n onFeedbackValueChange = v => {\n const { data, onChange } = this.props;\n\n if (data.feedback.type !== 'custom') {\n return;\n }\n\n const fb = { ...data.feedback, value: v };\n\n if (onChange) onChange({ ...data, feedback: fb });\n };\n\n onFeedbackTypeChange = t => {\n const { data, onChange } = this.props;\n const fb = { ...data.feedback, type: t };\n if (fb.type !== 'custom') {\n fb.value = undefined;\n }\n\n if (onChange) onChange({ ...data, feedback: fb });\n };\n\n render() {\n const {\n data,\n classes,\n mode,\n onDelete,\n defaultFeedback,\n index,\n className,\n noLabels,\n useLetterOrdering,\n imageSupport,\n disabled,\n spellCheck,\n nonEmpty,\n allowFeedBack,\n allowDelete,\n toolbarOpts,\n error,\n noCorrectAnswerError\n } = this.props;\n\n const InputToggle = mode === 'checkbox' ? InputCheckbox : InputRadio;\n const names = classNames(classes.choiceConfiguration, className);\n return (\n <div className={names}>\n <div className={classes.topRow}>\n {index > 0 && (\n <span className={classes.index} type=\"title\">\n {useLetterOrdering ? String.fromCharCode(96 + index).toUpperCase() : index}\n </span>\n )}\n <InputToggle\n className={classes.toggle}\n onChange={this.onCheckedChange}\n label={!noLabels ? 'Correct' : ''}\n checked={!!data.correct}\n error={noCorrectAnswerError}\n />\n <div className={classes.middleColumn}>\n <EditableHtmlContainer\n label={!noLabels ? 'Label' : ''}\n value={data.label}\n onChange={this.onLabelChange}\n imageSupport={imageSupport}\n disabled={disabled}\n spellCheck={spellCheck}\n nonEmpty={nonEmpty}\n toolbarOpts={toolbarOpts}\n error={error}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n\n {allowFeedBack && (\n <Feedback\n {...data.feedback}\n correct={data.correct}\n defaults={defaultFeedback}\n onChange={this.onFeedbackValueChange}\n toolbarOpts={toolbarOpts}\n />\n )}\n </div>\n {allowFeedBack && (\n <InputContainer className={classes.feedback} label={!noLabels ? 'Feedback' : ''}>\n <FeedbackMenu\n onChange={this.onFeedbackTypeChange}\n value={data.feedback}\n classes={{\n icon: classes.feedbackIcon\n }}\n />\n </InputContainer>\n )}\n {allowDelete && (\n <InputContainer className={classes.delete} label={!noLabels ? 'Delete' : ''}>\n <IconButton aria-label=\"delete\" className={classes.deleteIcon} onClick={onDelete}>\n <ActionDelete />\n </IconButton>\n </InputContainer>\n )}\n </div>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n index: {\n padding: '24px 10px 0 0'\n },\n choiceConfiguration: {},\n topRow: {\n display: 'flex'\n },\n value: {\n flex: '0.5',\n paddingRight: theme.spacing.unit\n },\n editorHolder: {\n marginTop: theme.spacing.unit * 2\n },\n toggle: {\n flex: '0 1 auto'\n },\n feedback: {\n flex: '0 1 auto',\n paddingTop: theme.spacing.unit,\n paddingLeft: 0,\n marginLeft: 0,\n paddingRight: theme.spacing.unit * 3\n },\n feedbackIcon: {\n margin: 0,\n paddingLeft: 0,\n width: 'inherit'\n },\n deleteIcon: {\n margin: 0,\n width: 'inherit'\n },\n delete: {\n flex: '0 1 auto',\n paddingTop: theme.spacing.unit,\n paddingLeft: 0,\n marginLeft: 0\n },\n middleColumn: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column'\n },\n errorText: {\n fontSize: '12px',\n color: 'red'\n }\n});\n\nexport default withStyles(styles)(ChoiceConfiguration);\n"],"file":"index.js"}
package/lib/inputs.js CHANGED
@@ -19,6 +19,8 @@ var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
19
19
 
20
20
  var _styles = require("@material-ui/core/styles");
21
21
 
22
+ var _classnames = _interopRequireDefault(require("classnames"));
23
+
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
25
 
24
26
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -33,7 +35,8 @@ var InputTypes = {
33
35
  label: _propTypes["default"].string,
34
36
  checked: _propTypes["default"].bool,
35
37
  onChange: _propTypes["default"].func,
36
- disabled: _propTypes["default"].bool
38
+ disabled: _propTypes["default"].bool,
39
+ error: _propTypes["default"].string
37
40
  };
38
41
 
39
42
  var RawInputSwitch = function RawInputSwitch(_ref) {
@@ -68,12 +71,13 @@ var RawInputCheckbox = function RawInputCheckbox(props) {
68
71
  label = props.label,
69
72
  checked = props.checked,
70
73
  onChange = props.onChange,
71
- disabled = props.disabled;
74
+ disabled = props.disabled,
75
+ error = props.error;
72
76
  return /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
73
77
  className: className,
74
78
  label: label
75
79
  }, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
76
- className: classes.checkboxRoot,
80
+ className: (0, _classnames["default"])(classes.checkboxRoot, error && classes.error),
77
81
  disabled: disabled,
78
82
  checked: checked,
79
83
  onChange: onChange,
@@ -89,12 +93,13 @@ var RawInputRadio = function RawInputRadio(props) {
89
93
  label = props.label,
90
94
  checked = props.checked,
91
95
  onChange = props.onChange,
92
- disabled = props.disabled;
96
+ disabled = props.disabled,
97
+ error = props.error;
93
98
  return /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
94
99
  className: className,
95
100
  label: label
96
101
  }, /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
97
- className: classes.radioRoot,
102
+ className: (0, _classnames["default"])(classes.radioRoot, error && classes.error),
98
103
  disabled: disabled,
99
104
  checked: checked,
100
105
  onChange: onChange,
@@ -106,6 +111,9 @@ RawInputRadio.propTypes = _objectSpread({}, InputTypes);
106
111
  var InputCheckbox = (0, _styles.withStyles)({
107
112
  checkboxRoot: {
108
113
  transform: 'translate(-25%, 20%)'
114
+ },
115
+ error: {
116
+ color: 'red'
109
117
  }
110
118
  })(RawInputCheckbox);
111
119
  exports.InputCheckbox = InputCheckbox;
@@ -113,6 +121,9 @@ var InputRadio = (0, _styles.withStyles)(function () {
113
121
  return {
114
122
  radioRoot: {
115
123
  transform: 'translate(-20%, 20%)'
124
+ },
125
+ error: {
126
+ color: 'red'
116
127
  }
117
128
  };
118
129
  })(RawInputRadio);
package/lib/inputs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/inputs.jsx"],"names":["InputTypes","classes","PropTypes","object","isRequired","className","string","label","checked","bool","onChange","func","disabled","RawInputSwitch","switchRoot","propTypes","InputSwitch","justifyContent","transform","RawInputCheckbox","props","checkboxRoot","RawInputRadio","radioRoot","InputCheckbox","InputRadio"],"mappings":"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","sourcesContent":["import Checkbox from '@material-ui/core/Checkbox';\nimport Radio from '@material-ui/core/Radio';\nimport { InputContainer } from '@pie-lib/render-ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Switch from '@material-ui/core/Switch';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst InputTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n label: PropTypes.string,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n disabled: PropTypes.bool\n};\n\nconst RawInputSwitch = ({ classes, className, label, checked, onChange }) => {\n return (\n <InputContainer className={className} label={label}>\n <Switch\n className={classes.switchRoot}\n checked={checked}\n onChange={onChange}\n aria-label={label}\n />\n </InputContainer>\n );\n};\n\nRawInputSwitch.propTypes = { ...InputTypes };\n\nconst InputSwitch = withStyles({\n switchRoot: {\n justifyContent: 'inherit',\n transform: 'translate(-20%, 20%)'\n }\n})(RawInputSwitch);\n\nconst RawInputCheckbox = props => {\n const { classes, className, label, checked, onChange, disabled } = props;\n\n return (\n <InputContainer className={className} label={label}>\n <Checkbox\n className={classes.checkboxRoot}\n disabled={disabled}\n checked={checked}\n onChange={onChange}\n aria-label={label}\n />\n </InputContainer>\n );\n};\n\nRawInputCheckbox.propTypes = { ...InputTypes };\n\nconst RawInputRadio = props => {\n const { classes, className, label, checked, onChange, disabled } = props;\n\n return (\n <InputContainer className={className} label={label}>\n <Radio\n className={classes.radioRoot}\n disabled={disabled}\n checked={checked}\n onChange={onChange}\n aria-label={label}\n />\n </InputContainer>\n );\n};\n\nRawInputRadio.propTypes = { ...InputTypes };\n\nconst InputCheckbox = withStyles({\n checkboxRoot: {\n transform: 'translate(-25%, 20%)'\n }\n})(RawInputCheckbox);\n\nconst InputRadio = withStyles(() => ({\n radioRoot: {\n transform: 'translate(-20%, 20%)'\n }\n}))(RawInputRadio);\n\nexport { InputSwitch, InputCheckbox, InputRadio };\n"],"file":"inputs.js"}
1
+ {"version":3,"sources":["../src/inputs.jsx"],"names":["InputTypes","classes","PropTypes","object","isRequired","className","string","label","checked","bool","onChange","func","disabled","error","RawInputSwitch","switchRoot","propTypes","InputSwitch","justifyContent","transform","RawInputCheckbox","props","checkboxRoot","RawInputRadio","radioRoot","InputCheckbox","color","InputRadio"],"mappings":"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","sourcesContent":["import Checkbox from '@material-ui/core/Checkbox';\nimport Radio from '@material-ui/core/Radio';\nimport { InputContainer } from '@pie-lib/render-ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Switch from '@material-ui/core/Switch';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nconst InputTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n label: PropTypes.string,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string\n};\n\nconst RawInputSwitch = ({ classes, className, label, checked, onChange }) => {\n return (\n <InputContainer className={className} label={label}>\n <Switch\n className={classes.switchRoot}\n checked={checked}\n onChange={onChange}\n aria-label={label}\n />\n </InputContainer>\n );\n};\n\nRawInputSwitch.propTypes = { ...InputTypes };\n\nconst InputSwitch = withStyles({\n switchRoot: {\n justifyContent: 'inherit',\n transform: 'translate(-20%, 20%)'\n }\n})(RawInputSwitch);\n\nconst RawInputCheckbox = props => {\n const { classes, className, label, checked, onChange, disabled, error } = props;\n\n return (\n <InputContainer className={className} label={label}>\n <Checkbox\n className={classNames(classes.checkboxRoot, error && classes.error)}\n disabled={disabled}\n checked={checked}\n onChange={onChange}\n aria-label={label}\n />\n </InputContainer>\n );\n};\n\nRawInputCheckbox.propTypes = { ...InputTypes };\n\nconst RawInputRadio = props => {\n const { classes, className, label, checked, onChange, disabled, error } = props;\n\n return (\n <InputContainer className={className} label={label}>\n <Radio\n className={classNames(classes.radioRoot, error && classes.error)}\n disabled={disabled}\n checked={checked}\n onChange={onChange}\n aria-label={label}\n />\n </InputContainer>\n );\n};\n\nRawInputRadio.propTypes = { ...InputTypes };\n\nconst InputCheckbox = withStyles({\n checkboxRoot: {\n transform: 'translate(-25%, 20%)'\n },\n error: {\n color: 'red'\n }\n})(RawInputCheckbox);\n\nconst InputRadio = withStyles(() => ({\n radioRoot: {\n transform: 'translate(-20%, 20%)'\n },\n error: {\n color: 'red'\n }\n}))(RawInputRadio);\n\nexport { InputSwitch, InputCheckbox, InputRadio };\n"],"file":"inputs.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/config-ui",
3
- "version": "10.10.23",
3
+ "version": "10.11.1",
4
4
  "main": "lib/index.js",
5
5
  "module": "src/index.js",
6
6
  "publishConfig": {
@@ -10,9 +10,9 @@
10
10
  "dependencies": {
11
11
  "@material-ui/core": "^3.8.3",
12
12
  "@material-ui/icons": "^3.0.2",
13
- "@pie-lib/editable-html": "^7.19.2",
13
+ "@pie-lib/editable-html": "^7.21.0",
14
14
  "@pie-lib/icons": "^2.4.25",
15
- "@pie-lib/render-ui": "^4.12.4",
15
+ "@pie-lib/render-ui": "^4.12.6",
16
16
  "classnames": "^2.2.6",
17
17
  "debug": "^4.1.1",
18
18
  "lodash": "^4.17.11",
@@ -26,5 +26,5 @@
26
26
  "peerDependencies": {
27
27
  "react": "^16.8.1"
28
28
  },
29
- "gitHead": "26e69e5feb2c3f322db4d6a3403b6cdc05f4c3d9"
29
+ "gitHead": "15c7a1364de782a095f8387f6be54af23e45fa10"
30
30
  }
@@ -27,7 +27,8 @@ const EditableHtmlContainer = withStyles(theme => ({
27
27
  disabled,
28
28
  spellCheck,
29
29
  nonEmpty,
30
- toolbarOpts
30
+ toolbarOpts,
31
+ error
31
32
  }) => {
32
33
  const names = classNames(classes.labelContainer, className);
33
34
 
@@ -37,12 +38,13 @@ const EditableHtmlContainer = withStyles(theme => ({
37
38
  <EditableHtml
38
39
  markup={value || ''}
39
40
  disabled={disabled}
40
- spellCheck = {spellCheck}
41
+ spellCheck={spellCheck}
41
42
  nonEmpty={nonEmpty}
42
43
  onChange={onChange}
43
44
  imageSupport={imageSupport}
44
45
  className={classes.editor}
45
46
  toolbarOpts={toolbarOpts}
47
+ error={error}
46
48
  />
47
49
  </div>
48
50
  </InputContainer>
@@ -189,7 +191,9 @@ export class ChoiceConfiguration extends React.Component {
189
191
  nonEmpty,
190
192
  allowFeedBack,
191
193
  allowDelete,
192
- toolbarOpts
194
+ toolbarOpts,
195
+ error,
196
+ noCorrectAnswerError
193
197
  } = this.props;
194
198
 
195
199
  const InputToggle = mode === 'checkbox' ? InputCheckbox : InputRadio;
@@ -207,6 +211,7 @@ export class ChoiceConfiguration extends React.Component {
207
211
  onChange={this.onCheckedChange}
208
212
  label={!noLabels ? 'Correct' : ''}
209
213
  checked={!!data.correct}
214
+ error={noCorrectAnswerError}
210
215
  />
211
216
  <div className={classes.middleColumn}>
212
217
  <EditableHtmlContainer
@@ -215,10 +220,12 @@ export class ChoiceConfiguration extends React.Component {
215
220
  onChange={this.onLabelChange}
216
221
  imageSupport={imageSupport}
217
222
  disabled={disabled}
218
- spellCheck = {spellCheck}
223
+ spellCheck={spellCheck}
219
224
  nonEmpty={nonEmpty}
220
225
  toolbarOpts={toolbarOpts}
226
+ error={error}
221
227
  />
228
+ {error && <div className={classes.errorText}>{error}</div>}
222
229
 
223
230
  {allowFeedBack && (
224
231
  <Feedback
@@ -298,6 +305,10 @@ const styles = theme => ({
298
305
  display: 'flex',
299
306
  flex: 1,
300
307
  flexDirection: 'column'
308
+ },
309
+ errorText: {
310
+ fontSize: '12px',
311
+ color: 'red'
301
312
  }
302
313
  });
303
314
 
package/src/inputs.jsx CHANGED
@@ -5,6 +5,7 @@ import PropTypes from 'prop-types';
5
5
  import React from 'react';
6
6
  import Switch from '@material-ui/core/Switch';
7
7
  import { withStyles } from '@material-ui/core/styles';
8
+ import classNames from 'classnames';
8
9
 
9
10
  const InputTypes = {
10
11
  classes: PropTypes.object.isRequired,
@@ -12,7 +13,8 @@ const InputTypes = {
12
13
  label: PropTypes.string,
13
14
  checked: PropTypes.bool,
14
15
  onChange: PropTypes.func,
15
- disabled: PropTypes.bool
16
+ disabled: PropTypes.bool,
17
+ error: PropTypes.string
16
18
  };
17
19
 
18
20
  const RawInputSwitch = ({ classes, className, label, checked, onChange }) => {
@@ -38,12 +40,12 @@ const InputSwitch = withStyles({
38
40
  })(RawInputSwitch);
39
41
 
40
42
  const RawInputCheckbox = props => {
41
- const { classes, className, label, checked, onChange, disabled } = props;
43
+ const { classes, className, label, checked, onChange, disabled, error } = props;
42
44
 
43
45
  return (
44
46
  <InputContainer className={className} label={label}>
45
47
  <Checkbox
46
- className={classes.checkboxRoot}
48
+ className={classNames(classes.checkboxRoot, error && classes.error)}
47
49
  disabled={disabled}
48
50
  checked={checked}
49
51
  onChange={onChange}
@@ -56,12 +58,12 @@ const RawInputCheckbox = props => {
56
58
  RawInputCheckbox.propTypes = { ...InputTypes };
57
59
 
58
60
  const RawInputRadio = props => {
59
- const { classes, className, label, checked, onChange, disabled } = props;
61
+ const { classes, className, label, checked, onChange, disabled, error } = props;
60
62
 
61
63
  return (
62
64
  <InputContainer className={className} label={label}>
63
65
  <Radio
64
- className={classes.radioRoot}
66
+ className={classNames(classes.radioRoot, error && classes.error)}
65
67
  disabled={disabled}
66
68
  checked={checked}
67
69
  onChange={onChange}
@@ -76,12 +78,18 @@ RawInputRadio.propTypes = { ...InputTypes };
76
78
  const InputCheckbox = withStyles({
77
79
  checkboxRoot: {
78
80
  transform: 'translate(-25%, 20%)'
81
+ },
82
+ error: {
83
+ color: 'red'
79
84
  }
80
85
  })(RawInputCheckbox);
81
86
 
82
87
  const InputRadio = withStyles(() => ({
83
88
  radioRoot: {
84
89
  transform: 'translate(-20%, 20%)'
90
+ },
91
+ error: {
92
+ color: 'red'
85
93
  }
86
94
  }))(RawInputRadio);
87
95