@pie-element/match 4.6.0 → 4.6.1-beta.587

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 (38) hide show
  1. package/CHANGELOG.md +508 -0
  2. package/configure/CHANGELOG.md +465 -0
  3. package/configure/lib/add-row.js +1 -1
  4. package/configure/lib/add-row.js.map +1 -1
  5. package/configure/lib/answer-config-block.js +151 -51
  6. package/configure/lib/answer-config-block.js.map +1 -1
  7. package/configure/lib/common.js +46 -0
  8. package/configure/lib/common.js.map +1 -0
  9. package/configure/lib/configure.js +98 -36
  10. package/configure/lib/configure.js.map +1 -1
  11. package/configure/lib/defaults.js +31 -2
  12. package/configure/lib/defaults.js.map +1 -1
  13. package/configure/lib/general-config-block.js +86 -33
  14. package/configure/lib/general-config-block.js.map +1 -1
  15. package/configure/lib/index.js +18 -4
  16. package/configure/lib/index.js.map +1 -1
  17. package/configure/lib/row.js +122 -34
  18. package/configure/lib/row.js.map +1 -1
  19. package/configure/package.json +7 -7
  20. package/configure/utils.js +12 -0
  21. package/controller/CHANGELOG.md +103 -0
  22. package/controller/lib/defaults.js.map +1 -1
  23. package/controller/lib/index.js +159 -16
  24. package/controller/lib/index.js.map +1 -1
  25. package/controller/package.json +3 -3
  26. package/docs/config-schema.json +153 -0
  27. package/docs/config-schema.json.md +117 -1
  28. package/docs/demo/config.js +2 -2
  29. package/docs/demo/generate.js +11 -9
  30. package/docs/pie-schema.json +48 -0
  31. package/docs/pie-schema.json.md +39 -0
  32. package/lib/answer-grid.js +12 -12
  33. package/lib/answer-grid.js.map +1 -1
  34. package/lib/index.js +7 -2
  35. package/lib/index.js.map +1 -1
  36. package/lib/main.js +16 -20
  37. package/lib/main.js.map +1 -1
  38. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/general-config-block.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","display","input","flex","inputContainer","width","GeneralConfigBlock","name","event","props","model","onLayoutChange","onResponseTypeChange","newModel","target","value","classes","configuration","layout","choiceMode","settings","label","select","onChange","React","Component","PropTypes","object","isRequired","func"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n },\n input: {\n flex: 1\n },\n inputContainer: {\n width: '90%'\n }\n});\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onResponseTypeChange: PropTypes.func.isRequired,\n onLayoutChange: PropTypes.func.isRequired\n };\n\n onChange = (name) => event => {\n const { model, onLayoutChange, onResponseTypeChange } = this.props;\n const newModel = { ...model };\n\n newModel[name] = event.target.value;\n\n if (name === 'layout') {\n onLayoutChange(newModel[name]);\n } else {\n onResponseTypeChange(newModel[name]);\n }\n };\n\n render() {\n const { classes, model, configuration } = this.props;\n const {\n layout = {},\n choiceMode = {}\n } = configuration || {};\n\n return (\n <div className={classes.container}>\n <div className={classes.input}>\n {layout.settings &&\n <InputContainer\n label={layout.label}\n className={classes.inputContainer}\n >\n <Select\n className={classes.select}\n onChange={this.onChange('layout')}\n value={model.layout}\n >\n <MenuItem value={3}>3 Columns</MenuItem>\n <MenuItem value={4}>4 Columns</MenuItem>\n <MenuItem value={5}>5 Columns</MenuItem>\n </Select>\n </InputContainer>\n }\n </div>\n <div className={classes.input}>\n {\n choiceMode.settings &&\n <InputContainer label={choiceMode.label} className={classes.inputContainer}>\n <Select\n className={classes.select}\n onChange={this.onChange('choiceMode')}\n value={model.choiceMode}\n >\n <MenuItem value=\"radio\">Radio - One Answer</MenuItem>\n <MenuItem value=\"checkbox\">Checkbox - Multiple Answers</MenuItem>\n </Select>\n </InputContainer>\n }\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(GeneralConfigBlock);\n"],"file":"general-config-block.js"}
1
+ {"version":3,"sources":["../src/general-config-block.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","display","input","flex","numberTextField","flexDirection","inputContainer","width","flexContainer","alignItems","titleText","fontFamily","fontSize","typography","lineHeight","color","marginRight","tooltip","whiteSpace","maxWidth","GeneralConfigBlock","name","event","props","model","onResponseTypeChange","newModel","target","value","onLayoutChange","classes","configuration","layout","choiceMode","validationMessage","settings","label","e","v","onChangeColumns","onChangeResponseType","React","Component","PropTypes","object","isRequired","func"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { InputContainer, NumberTextField } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { generateValidationMessage } from '../utils';\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n },\n input: {\n flex: 1,\n },\n numberTextField: {\n flexDirection: 'unset',\n },\n inputContainer: {\n width: '65%',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n marginTop: theme.spacing.unit,\n },\n titleText: {\n fontFamily: 'Cerebri Sans',\n fontSize: theme.typography.fontSize + 2,\n lineHeight: '19px',\n color: '#495B8F',\n marginRight: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n});\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onResponseTypeChange: PropTypes.func.isRequired,\n onLayoutChange: PropTypes.func.isRequired,\n };\n\n onChangeResponseType = (name) => (event) => {\n const { model, onResponseTypeChange } = this.props;\n const newModel = { ...model };\n\n newModel[name] = event.target.value;\n\n onResponseTypeChange(newModel[name]);\n };\n\n onChangeColumns = (name, value) => {\n const { model, onLayoutChange } = this.props;\n const newModel = { ...model };\n\n newModel[name] = value;\n\n onLayoutChange(newModel[name]);\n };\n\n render() {\n const { classes, model, configuration } = this.props;\n const { layout = {}, choiceMode = {} } = configuration || {};\n\n const validationMessage = generateValidationMessage(model);\n\n return (\n <>\n <div className={classes.flexContainer}>\n <Typography className={classes.titleText}>Define questions</Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n <div className={classes.container}>\n <div className={classes.input}>\n {layout.settings && (\n <InputContainer label={layout.label} className={classes.inputContainer}>\n <NumberTextField\n type=\"number\"\n min={3}\n max={10}\n value={model.layout}\n onChange={(e, v) => this.onChangeColumns('layout', v)}\n suffix={'Columns'}\n className={classes.numberTextField}\n />\n </InputContainer>\n )}\n </div>\n\n <div className={classes.input}>\n {choiceMode.settings && (\n <InputContainer label={choiceMode.label} className={classes.inputContainer}>\n <Select onChange={this.onChangeResponseType('choiceMode')} value={model.choiceMode}>\n <MenuItem value=\"radio\">Radio - One Answer</MenuItem>\n <MenuItem value=\"checkbox\">Checkbox - Multiple Answers</MenuItem>\n </Select>\n </InputContainer>\n )}\n </div>\n </div>\n </>\n );\n }\n}\n\nexport default withStyles(styles)(GeneralConfigBlock);\n"],"file":"general-config-block.js"}
@@ -33,13 +33,13 @@ var _debug = _interopRequireDefault(require("debug"));
33
33
 
34
34
  var _defaults = _interopRequireDefault(require("./defaults"));
35
35
 
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
36
+ 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; }
37
37
 
38
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
38
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
39
39
 
40
40
  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); }; }
41
41
 
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
42
+ 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; } }
43
43
 
44
44
  var log = (0, _debug["default"])('pie-elements:match:configure');
45
45
 
@@ -80,7 +80,7 @@ var MatchConfigure = /*#__PURE__*/function (_HTMLElement) {
80
80
 
81
81
  this._render();
82
82
 
83
- this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, true));
83
+ this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model));
84
84
  }
85
85
  }, {
86
86
  key: "onConfigurationChanged",
@@ -104,6 +104,16 @@ var MatchConfigure = /*#__PURE__*/function (_HTMLElement) {
104
104
  value: function onDeleteImage(src, done) {
105
105
  this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
106
106
  }
107
+ }, {
108
+ key: "insertSound",
109
+ value: function insertSound(handler) {
110
+ this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
111
+ }
112
+ }, {
113
+ key: "onDeleteSound",
114
+ value: function onDeleteSound(src, done) {
115
+ this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
116
+ }
107
117
  }, {
108
118
  key: "_render",
109
119
  value: function _render() {
@@ -116,6 +126,10 @@ var MatchConfigure = /*#__PURE__*/function (_HTMLElement) {
116
126
  imageSupport: {
117
127
  add: this.insertImage.bind(this),
118
128
  "delete": this.onDeleteImage.bind(this)
129
+ },
130
+ uploadSoundSupport: {
131
+ add: this.insertSound.bind(this),
132
+ "delete": this.onDeleteSound.bind(this)
119
133
  }
120
134
  });
121
135
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","MatchConfigure","_model","createDefaultModel","_configuration","defaultValues","configuration","m","_render","c","model","dispatchEvent","ModelUpdatedEvent","config","handler","InsertImageEvent","src","done","DeleteImageEvent","el","React","createElement","Configure","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAKA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,8BAAN,CAAZ;;IAEqBC,c;;;;;AAOnB,4BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,MAAL,GAAcD,cAAc,CAACE,kBAAf,EAAd;AACA,UAAKC,cAAL,GAAsBC,qBAAcC,aAApC;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKL,MAAL,GAAcD,cAAc,CAACE,kBAAf,CAAkCI,CAAlC,CAAd;;AACA,WAAKC,OAAL;AACD;;;SAED,aAAkBC,CAAlB,EAAqB;AACnB,WAAKL,cAAL,GAAsBK,CAAtB;;AACA,WAAKD,OAAL;AACD;;;WAED,wBAAeE,KAAf,EAAsB;AACpB,WAAKR,MAAL,GAAcQ,KAAd;AACAV,MAAAA,GAAG,CAAC,oBAAD,EAAuB,KAAKE,MAA5B,CAAH;;AACA,WAAKM,OAAL;;AACA,WAAKG,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,KAAKV,MAA3B,EAAmC,IAAnC,CAAnB;AACD;;;WAED,gCAAuBW,MAAvB,EAA+B;AAC7B,WAAKT,cAAL,GAAsBS,MAAtB;;AACA,WAAKL,OAAL;AACD;AAED;AACF;AACA;AACA;;;;WACE,qBAAYM,OAAZ,EAAqB;AACnB,WAAKH,aAAL,CAAmB,IAAII,oCAAJ,CAAqBD,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKN,aAAL,CAAmB,IAAIO,oCAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,mBAAU;AACR,UAAI,KAAKf,MAAT,EAAiB;AACf,YAAMiB,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,qBAApB,EAA+B;AACxCC,UAAAA,cAAc,EAAE,KAAKA,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CADwB;AAExCC,UAAAA,sBAAsB,EAAE,KAAKA,sBAAL,CAA4BD,IAA5B,CAAiC,IAAjC,CAFgB;AAGxCd,UAAAA,KAAK,EAAE,KAAKR,MAH4B;AAIxCI,UAAAA,aAAa,EAAE,KAAKF,cAJoB;AAKxCsB,UAAAA,YAAY,EAAE;AACZC,YAAAA,GAAG,EAAE,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CADO;AAEZ,sBAAQ,KAAKK,aAAL,CAAmBL,IAAnB,CAAwB,IAAxB;AAFI;AAL0B,SAA/B,CAAX;;AAUAM,6BAASC,MAAT,CAAgBZ,EAAhB,EAAoB,IAApB;AACD;AACF;;;kDA7DyCa,W;;;iCAAvB/B,c,wBACS;AAAA,MAACS,KAAD,uEAAS,EAAT;AAAA,yCACrBL,qBAAcK,KADO,GAErBA,KAFqB;AAAA,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Configure from './configure';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent\n} from '@pie-framework/pie-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults';\n\nconst log = debug('pie-elements:match:configure');\n\nexport default class MatchConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaultValues.model,\n ...model\n }\n );\n\n constructor() {\n super();\n this._model = MatchConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = MatchConfigure.createDefaultModel(m);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this._render();\n }\n\n onModelChanged(model) {\n this._model = model;\n log('[onModelChanged]: ', this._model);\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model, true));\n }\n\n onConfigurationChanged(config) {\n this._configuration = config;\n this._render();\n }\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n }\n });\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","MatchConfigure","_model","createDefaultModel","_configuration","defaultValues","configuration","m","_render","c","model","dispatchEvent","ModelUpdatedEvent","config","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","el","React","createElement","Configure","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAOA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,8BAAN,CAAZ;;IAEqBC,c;;;;;AAMnB,4BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,MAAL,GAAcD,cAAc,CAACE,kBAAf,EAAd;AACA,UAAKC,cAAL,GAAsBC,qBAAcC,aAApC;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKL,MAAL,GAAcD,cAAc,CAACE,kBAAf,CAAkCI,CAAlC,CAAd;;AACA,WAAKC,OAAL;AACD;;;SAED,aAAkBC,CAAlB,EAAqB;AACnB,WAAKL,cAAL,GAAsBK,CAAtB;;AACA,WAAKD,OAAL;AACD;;;WAED,wBAAeE,KAAf,EAAsB;AACpB,WAAKR,MAAL,GAAcQ,KAAd;AACAV,MAAAA,GAAG,CAAC,oBAAD,EAAuB,KAAKE,MAA5B,CAAH;;AACA,WAAKM,OAAL;;AACA,WAAKG,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,KAAKV,MAA3B,CAAnB;AACD;;;WAED,gCAAuBW,MAAvB,EAA+B;AAC7B,WAAKT,cAAL,GAAsBS,MAAtB;;AACA,WAAKL,OAAL;AACD;AAED;AACF;AACA;AACA;;;;WACE,qBAAYM,OAAZ,EAAqB;AACnB,WAAKH,aAAL,CAAmB,IAAII,oCAAJ,CAAqBD,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKN,aAAL,CAAmB,IAAIO,oCAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,qBAAYH,OAAZ,EAAqB;AACnB,WAAKH,aAAL,CAAmB,IAAIQ,oCAAJ,CAAqBL,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKN,aAAL,CAAmB,IAAIS,oCAAJ,CAAqBJ,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,mBAAU;AACR,UAAI,KAAKf,MAAT,EAAiB;AACf,YAAMmB,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,qBAApB,EAA+B;AACxCC,UAAAA,cAAc,EAAE,KAAKA,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CADwB;AAExCC,UAAAA,sBAAsB,EAAE,KAAKA,sBAAL,CAA4BD,IAA5B,CAAiC,IAAjC,CAFgB;AAGxChB,UAAAA,KAAK,EAAE,KAAKR,MAH4B;AAIxCI,UAAAA,aAAa,EAAE,KAAKF,cAJoB;AAKxCwB,UAAAA,YAAY,EAAE;AACZC,YAAAA,GAAG,EAAE,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CADO;AAEZ,sBAAQ,KAAKK,aAAL,CAAmBL,IAAnB,CAAwB,IAAxB;AAFI,WAL0B;AASxCM,UAAAA,kBAAkB,EAAE;AAClBH,YAAAA,GAAG,EAAE,KAAKI,WAAL,CAAiBP,IAAjB,CAAsB,IAAtB,CADa;AAElB,sBAAQ,KAAKQ,aAAL,CAAmBR,IAAnB,CAAwB,IAAxB;AAFU;AAToB,SAA/B,CAAX;;AAcAS,6BAASC,MAAT,CAAgBf,EAAhB,EAAoB,IAApB;AACD;AACF;;;kDAxEyCgB,W;;;iCAAvBpC,c,wBACS;AAAA,MAACS,KAAD,uEAAS,EAAT;AAAA,yCACvBL,qBAAcK,KADS,GAEvBA,KAFuB;AAAA,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Configure from './configure';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults';\n\nconst log = debug('pie-elements:match:configure');\n\nexport default class MatchConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaultValues.model,\n ...model,\n });\n\n constructor() {\n super();\n this._model = MatchConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = MatchConfigure.createDefaultModel(m);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this._render();\n }\n\n onModelChanged(model) {\n this._model = model;\n log('[onModelChanged]: ', this._model);\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n }\n\n onConfigurationChanged(config) {\n this._configuration = config;\n this._render();\n }\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
@@ -2,10 +2,12 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
- exports["default"] = exports.choiceTarget = exports.choiceSource = exports.Row = exports.canDrag = void 0;
10
+ exports["default"] = exports.choiceTarget = exports.choiceSource = exports.canDrag = exports.Row = void 0;
9
11
 
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
@@ -35,7 +37,7 @@ var _DragHandle = _interopRequireDefault(require("@material-ui/icons/DragHandle"
35
37
 
36
38
  var _Radio = _interopRequireDefault(require("@material-ui/core/Radio"));
37
39
 
38
- var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
40
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
39
41
 
40
42
  var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
41
43
 
@@ -43,15 +45,19 @@ var _reactDnd = require("react-dnd");
43
45
 
44
46
  var _debug = _interopRequireDefault(require("debug"));
45
47
 
46
- var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
48
+ var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
49
+
50
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
47
51
 
48
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
52
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
49
53
 
50
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
54
+ 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; }
55
+
56
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
51
57
 
52
58
  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); }; }
53
59
 
54
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
60
+ 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; } }
55
61
 
56
62
  var log = (0, _debug["default"])('@pie-element:categorize:configure:choice');
57
63
  var _canDrag = false;
@@ -72,6 +78,12 @@ var Row = /*#__PURE__*/function (_React$Component) {
72
78
  }
73
79
 
74
80
  _this = _super.call.apply(_super, [this].concat(args));
81
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
82
+ dialog: {
83
+ open: false,
84
+ text: ''
85
+ }
86
+ });
75
87
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRowTitleChange", function (rowIndex) {
76
88
  return function (value) {
77
89
  var _this$props = _this.props,
@@ -104,7 +116,20 @@ var Row = /*#__PURE__*/function (_React$Component) {
104
116
  });
105
117
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDeleteRow", function (idx) {
106
118
  return function () {
107
- _this.props.onDeleteRow(idx);
119
+ var _this$props3 = _this.props,
120
+ model = _this$props3.model,
121
+ onDeleteRow = _this$props3.onDeleteRow;
122
+
123
+ if (model.rows && model.rows.length === 1) {
124
+ _this.setState({
125
+ dialog: {
126
+ open: true,
127
+ text: 'There has to be at least one question row.'
128
+ }
129
+ });
130
+ } else {
131
+ onDeleteRow(idx);
132
+ }
108
133
  };
109
134
  });
110
135
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onMouseDownOnHandle", function () {
@@ -126,21 +151,43 @@ var Row = /*#__PURE__*/function (_React$Component) {
126
151
  value: function render() {
127
152
  var _this2 = this;
128
153
 
129
- var _this$props3 = this.props,
130
- classes = _this$props3.classes,
131
- imageSupport = _this$props3.imageSupport,
132
- connectDragSource = _this$props3.connectDragSource,
133
- connectDropTarget = _this$props3.connectDropTarget,
134
- isDragging = _this$props3.isDragging,
135
- model = _this$props3.model,
136
- row = _this$props3.row,
137
- idx = _this$props3.idx,
138
- enableImages = _this$props3.enableImages;
154
+ var _this$props4 = this.props,
155
+ classes = _this$props4.classes,
156
+ imageSupport = _this$props4.imageSupport,
157
+ connectDragSource = _this$props4.connectDragSource,
158
+ connectDropTarget = _this$props4.connectDropTarget,
159
+ isDragging = _this$props4.isDragging,
160
+ model = _this$props4.model,
161
+ row = _this$props4.row,
162
+ idx = _this$props4.idx,
163
+ enableImages = _this$props4.enableImages,
164
+ toolbarOpts = _this$props4.toolbarOpts,
165
+ spellCheck = _this$props4.spellCheck,
166
+ error = _this$props4.error,
167
+ maxImageWidth = _this$props4.maxImageWidth,
168
+ maxImageHeight = _this$props4.maxImageHeight,
169
+ uploadSoundSupport = _this$props4.uploadSoundSupport;
170
+ var dialog = this.state.dialog;
139
171
  var opacity = isDragging ? 0 : 1;
172
+ var rowPlugins = {
173
+ image: {
174
+ disabled: !enableImages
175
+ },
176
+ audio: {
177
+ disabled: true
178
+ },
179
+ video: {
180
+ disabled: true
181
+ }
182
+ };
183
+ var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
184
+ return p !== 'bulleted-list' && p !== 'numbered-list';
185
+ });
140
186
 
141
187
  var content = /*#__PURE__*/_react["default"].createElement("div", {
142
188
  style: {
143
- opacity: opacity
189
+ opacity: opacity,
190
+ width: 'fit-content'
144
191
  }
145
192
  }, /*#__PURE__*/_react["default"].createElement("span", {
146
193
  itemID: 'handle',
@@ -160,11 +207,19 @@ var Row = /*#__PURE__*/function (_React$Component) {
160
207
  markup: row.title,
161
208
  onChange: this.onRowTitleChange(idx),
162
209
  className: classes.editor,
163
- pluginProps: {
164
- image: {
165
- disabled: !enableImages
166
- }
167
- }
210
+ pluginProps: rowPlugins,
211
+ toolbarOpts: toolbarOpts,
212
+ activePlugins: filteredDefaultPlugins,
213
+ spellCheck: spellCheck,
214
+ maxImageWidth: maxImageWidth,
215
+ maxImageHeight: maxImageHeight,
216
+ uploadSoundSupport: uploadSoundSupport,
217
+ languageCharactersProps: [{
218
+ language: 'spanish'
219
+ }, {
220
+ language: 'special'
221
+ }],
222
+ error: error && error !== 'No correct response defined.'
168
223
  })), row.values.map(function (rowValue, rowIdx) {
169
224
  return /*#__PURE__*/_react["default"].createElement("div", {
170
225
  key: rowIdx,
@@ -179,12 +234,24 @@ var Row = /*#__PURE__*/function (_React$Component) {
179
234
  }));
180
235
  }), /*#__PURE__*/_react["default"].createElement("div", {
181
236
  className: classes.deleteIcon
182
- }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
183
- onClick: this.onDeleteRow(idx)
184
- }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], {
185
- className: classes.deleteIcon
186
- })))), /*#__PURE__*/_react["default"].createElement("hr", {
237
+ }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
238
+ onClick: this.onDeleteRow(idx),
239
+ "aria-label": "Delete"
240
+ }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)))), error && /*#__PURE__*/_react["default"].createElement("div", {
241
+ className: classes.errorText
242
+ }, error), /*#__PURE__*/_react["default"].createElement("hr", {
187
243
  className: classes.separator
244
+ }), /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
245
+ open: dialog.open,
246
+ title: "Warning",
247
+ text: dialog.text,
248
+ onConfirm: function onConfirm() {
249
+ return _this2.setState({
250
+ dialog: {
251
+ open: false
252
+ }
253
+ });
254
+ }
188
255
  }));
189
256
 
190
257
  return connectDragSource(connectDropTarget(content));
@@ -209,7 +276,13 @@ exports.Row = Row;
209
276
  add: _propTypes["default"].func.isRequired,
210
277
  "delete": _propTypes["default"].func.isRequired
211
278
  }),
212
- enableImages: _propTypes["default"].bool
279
+ uploadSoundSupport: _propTypes["default"].shape({
280
+ add: _propTypes["default"].func.isRequired,
281
+ "delete": _propTypes["default"].func.isRequired
282
+ }),
283
+ enableImages: _propTypes["default"].bool,
284
+ toolbarOpts: _propTypes["default"].object,
285
+ error: _propTypes["default"].string
213
286
  });
214
287
  (0, _defineProperty2["default"])(Row, "defaultProps", {});
215
288
 
@@ -244,24 +317,39 @@ var styles = function styles(theme) {
244
317
  flex: 1,
245
318
  display: 'flex',
246
319
  justifyContent: 'center',
247
- '&> div': {
248
- width: '100%'
249
- }
320
+ minWidth: '150px',
321
+ padding: "0 ".concat(theme.spacing.unit, "px")
250
322
  },
251
323
  deleteIcon: {
252
324
  flex: 0.5,
253
- minWidth: '88px'
325
+ display: 'flex',
326
+ justifyContent: 'center',
327
+ minWidth: '48px',
328
+ padding: "0 ".concat(theme.spacing.unit, "px")
254
329
  },
255
330
  questionText: {
256
331
  flex: 2,
257
332
  display: 'flex',
258
- justifyContent: 'flex-start'
333
+ justifyContent: 'flex-start',
334
+ padding: 0,
335
+ maxWidth: 'unset',
336
+ textAlign: 'left',
337
+ minWidth: '350px',
338
+ marginRight: theme.spacing.unit,
339
+ '&> div': {
340
+ width: '100%'
341
+ }
259
342
  },
260
343
  separator: {
261
344
  marginTop: theme.spacing.unit * 2,
262
345
  border: 0,
263
346
  borderTop: '2px solid lightgray',
264
347
  width: '100%'
348
+ },
349
+ errorText: {
350
+ fontSize: theme.typography.fontSize - 2,
351
+ color: 'red',
352
+ paddingTop: theme.spacing.unit
265
353
  }
266
354
  };
267
355
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/row.jsx"],"names":["log","canDrag","Row","rowIndex","value","props","model","onChange","newModel","rows","title","rowValueIndex","event","choiceMode","i","values","length","target","checked","idx","onDeleteRow","document","addEventListener","onMouseUpOnHandle","classes","imageSupport","connectDragSource","connectDropTarget","isDragging","row","enableImages","opacity","content","dragHandle","onMouseDownOnHandle","rowContainer","rowItem","questionText","onRowTitleChange","editor","image","disabled","map","rowValue","rowIdx","onRowValueChange","deleteIcon","separator","React","Component","PropTypes","object","isRequired","number","bool","func","onMoveRow","shape","add","styles","theme","actions","padding","justifyContent","choice","spacing","unit","overflow","cursor","dragDisabled","container","marginTop","display","flexDirection","alignItems","flex","width","minWidth","border","borderTop","StyledRow","NAME","choiceSource","beginDrag","id","index","StyledSource","connect","monitor","dragSource","choiceTarget","hover","drop","item","getItem","didDrop","StyledSourceAndTarget","dropTarget"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Checkbox } from '@pie-lib/config-ui';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport Radio from '@material-ui/core/Radio';\nimport Button from '@material-ui/core/Button';\nimport Delete from '@material-ui/icons/Delete';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport EditableHtml from '@pie-lib/editable-html';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nexport let canDrag = false;\n\nexport class Row extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n row: PropTypes.object.isRequired,\n idx: PropTypes.number.isRequired,\n isDragging: PropTypes.bool.isRequired,\n onDeleteRow: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDropTarget: PropTypes.func.isRequired,\n onMoveRow: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n }),\n enableImages: PropTypes.bool\n };\n\n static defaultProps = {};\n\n componentDidMount() {\n document.addEventListener('mouseup', this.onMouseUpOnHandle);\n }\n\n onRowTitleChange = rowIndex => value => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.rows[rowIndex].title = value;\n\n onChange(newModel);\n };\n\n onRowValueChange = (rowIndex, rowValueIndex) => event => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (model.choiceMode === 'radio') {\n for (let i = 0; i < newModel.rows[rowIndex].values.length; i++) {\n newModel.rows[rowIndex].values[i] = false;\n }\n }\n\n newModel.rows[rowIndex].values[rowValueIndex] = event.target.checked;\n\n onChange(newModel);\n };\n\n onDeleteRow = (idx) => () => {\n this.props.onDeleteRow(idx)\n };\n\n onMouseDownOnHandle = () => {\n canDrag = true;\n };\n\n onMouseUpOnHandle = () => {\n canDrag = false;\n };\n\n render() {\n const {\n classes,\n imageSupport,\n connectDragSource,\n connectDropTarget,\n isDragging,\n model,\n row,\n idx,\n enableImages\n } = this.props;\n const opacity = isDragging ? 0 : 1;\n\n const content = (\n <div style={{\n opacity: opacity\n }}>\n <span\n itemID={'handle'}\n className={classes.dragHandle}\n onMouseDown={this.onMouseDownOnHandle}\n >\n <DragHandle color={'primary'} />\n </span>\n <div className={classes.rowContainer}>\n <div className={classNames(classes.rowItem, classes.questionText)}>\n <EditableHtml\n imageSupport={imageSupport}\n autoWidthToolbar\n disableUnderline\n label={'label'}\n markup={row.title}\n onChange={this.onRowTitleChange(idx)}\n className={classes.editor}\n pluginProps={{\n image: {\n disabled: !enableImages\n }\n }}\n />\n </div>\n {row.values.map((rowValue, rowIdx) => (\n <div key={rowIdx} className={classes.rowItem}>\n {model.choiceMode === 'radio' ? (\n <Radio\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n />\n ) : (\n <Checkbox\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n label={''}\n />\n )}\n </div>\n ))}\n <div className={classes.deleteIcon}>\n <Button onClick={this.onDeleteRow(idx)}>\n <Delete className={classes.deleteIcon} />\n </Button>\n </div>\n </div>\n <hr className={classes.separator} />\n </div>\n );\n\n return connectDragSource(connectDropTarget(content));\n }\n}\nconst styles = theme => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between'\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible'\n },\n dragHandle: {\n cursor: 'move'\n },\n dragDisabled: {\n cursor: 'inherit'\n },\n\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column'\n },\n rowContainer: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n alignItems: 'center',\n flex: 1\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n '&> div': {\n width: '100%'\n }\n },\n deleteIcon: {\n flex: 0.5,\n minWidth: '88px',\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start'\n },\n separator: {\n marginTop: theme.spacing.unit * 2,\n border: 0,\n borderTop: '2px solid lightgray',\n width: '100%'\n }\n});\n\nconst StyledRow = withStyles(styles)(Row);\n\nconst NAME = 'row-config';\n\nexport const choiceSource = {\n canDrag() {\n return canDrag;\n },\n beginDrag(props) {\n return {\n id: props.row.id,\n index: props.idx\n };\n }\n};\n\nconst StyledSource = DragSource(NAME, choiceSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n}))(StyledRow);\n\nexport const choiceTarget = {\n hover() {\n log('[hover]');\n },\n drop(props, monitor) {\n const item = monitor.getItem();\n log('[drop] item: ', item, 'didDrop?', monitor.didDrop());\n props.onMoveRow(item.index, props.idx);\n }\n};\n\nconst StyledSourceAndTarget = DropTarget(NAME, choiceTarget, connect => ({\n connectDropTarget: connect.dropTarget()\n}))(StyledSource);\n\nexport default StyledSourceAndTarget;\n"],"file":"row.js"}
1
+ {"version":3,"sources":["../src/row.jsx"],"names":["log","canDrag","Row","dialog","open","text","rowIndex","value","props","model","onChange","newModel","rows","title","rowValueIndex","event","choiceMode","i","values","length","target","checked","idx","onDeleteRow","setState","document","addEventListener","onMouseUpOnHandle","classes","imageSupport","connectDragSource","connectDropTarget","isDragging","row","enableImages","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","state","opacity","rowPlugins","image","disabled","audio","video","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","content","width","dragHandle","onMouseDownOnHandle","rowContainer","rowItem","questionText","onRowTitleChange","editor","language","map","rowValue","rowIdx","onRowValueChange","deleteIcon","errorText","separator","React","Component","PropTypes","object","isRequired","number","bool","func","onMoveRow","shape","add","string","styles","theme","actions","padding","justifyContent","choice","spacing","unit","overflow","cursor","dragDisabled","container","marginTop","display","flexDirection","alignItems","flex","minWidth","maxWidth","textAlign","marginRight","border","borderTop","fontSize","typography","color","paddingTop","StyledRow","NAME","choiceSource","beginDrag","id","index","StyledSource","connect","monitor","dragSource","choiceTarget","hover","drop","item","getItem","didDrop","StyledSourceAndTarget","dropTarget"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { AlertDialog, Checkbox } from '@pie-lib/config-ui';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport Radio from '@material-ui/core/Radio';\nimport IconButton from '@material-ui/core/IconButton';\nimport Delete from '@material-ui/icons/Delete';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport EditableHtml, { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nexport let canDrag = false;\n\nexport class Row extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n row: PropTypes.object.isRequired,\n idx: PropTypes.number.isRequired,\n isDragging: PropTypes.bool.isRequired,\n onDeleteRow: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDropTarget: PropTypes.func.isRequired,\n onMoveRow: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n enableImages: PropTypes.bool,\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n };\n\n static defaultProps = {};\n\n state = {\n dialog: {\n open: false,\n text: '',\n },\n };\n\n componentDidMount() {\n document.addEventListener('mouseup', this.onMouseUpOnHandle);\n }\n\n onRowTitleChange = (rowIndex) => (value) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.rows[rowIndex].title = value;\n onChange(newModel);\n };\n\n onRowValueChange = (rowIndex, rowValueIndex) => (event) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (model.choiceMode === 'radio') {\n for (let i = 0; i < newModel.rows[rowIndex].values.length; i++) {\n newModel.rows[rowIndex].values[i] = false;\n }\n }\n\n newModel.rows[rowIndex].values[rowValueIndex] = event.target.checked;\n\n onChange(newModel);\n };\n\n onDeleteRow = (idx) => () => {\n const { model, onDeleteRow } = this.props;\n\n if (model.rows && model.rows.length === 1) {\n this.setState({\n dialog: {\n open: true,\n text: 'There has to be at least one question row.',\n },\n });\n } else {\n onDeleteRow(idx);\n }\n };\n\n onMouseDownOnHandle = () => {\n canDrag = true;\n };\n\n onMouseUpOnHandle = () => {\n canDrag = false;\n };\n\n render() {\n const {\n classes,\n imageSupport,\n connectDragSource,\n connectDropTarget,\n isDragging,\n model,\n row,\n idx,\n enableImages,\n toolbarOpts,\n spellCheck,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n const { dialog } = this.state;\n const opacity = isDragging ? 0 : 1;\n\n const rowPlugins = {\n image: {\n disabled: !enableImages,\n },\n audio: { disabled: true },\n video: { disabled: true },\n };\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'bulleted-list' && p !== 'numbered-list',\n );\n\n const content = (\n <div style={{ opacity: opacity, width: 'fit-content' }}>\n <span itemID={'handle'} className={classes.dragHandle} onMouseDown={this.onMouseDownOnHandle}>\n <DragHandle color={'primary'} />\n </span>\n\n <div className={classes.rowContainer}>\n <div className={classNames(classes.rowItem, classes.questionText)}>\n <EditableHtml\n imageSupport={imageSupport}\n autoWidthToolbar\n disableUnderline\n label={'label'}\n markup={row.title}\n onChange={this.onRowTitleChange(idx)}\n className={classes.editor}\n pluginProps={rowPlugins}\n toolbarOpts={toolbarOpts}\n activePlugins={filteredDefaultPlugins}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={error && error !== 'No correct response defined.'}\n />\n </div>\n\n {row.values.map((rowValue, rowIdx) => (\n <div key={rowIdx} className={classes.rowItem}>\n {model.choiceMode === 'radio' ? (\n <Radio onChange={this.onRowValueChange(idx, rowIdx)} checked={rowValue === true} />\n ) : (\n <Checkbox onChange={this.onRowValueChange(idx, rowIdx)} checked={rowValue === true} label={''} />\n )}\n </div>\n ))}\n\n <div className={classes.deleteIcon}>\n <IconButton onClick={this.onDeleteRow(idx)} aria-label=\"Delete\">\n <Delete />\n </IconButton>\n </div>\n </div>\n\n {error && <div className={classes.errorText}>{error}</div>}\n <hr className={classes.separator} />\n\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n </div>\n );\n\n return connectDragSource(connectDropTarget(content));\n }\n}\n\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n },\n rowContainer: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n minWidth: '150px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n deleteIcon: {\n flex: 0.5,\n display: 'flex',\n justifyContent: 'center',\n minWidth: '48px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '350px',\n marginRight: theme.spacing.unit,\n '&> div': {\n width: '100%',\n },\n },\n separator: {\n marginTop: theme.spacing.unit * 2,\n border: 0,\n borderTop: '2px solid lightgray',\n width: '100%',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: 'red',\n paddingTop: theme.spacing.unit,\n },\n});\n\nconst StyledRow = withStyles(styles)(Row);\n\nconst NAME = 'row-config';\n\nexport const choiceSource = {\n canDrag() {\n return canDrag;\n },\n beginDrag(props) {\n return {\n id: props.row.id,\n index: props.idx,\n };\n },\n};\n\nconst StyledSource = DragSource(NAME, choiceSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(StyledRow);\n\nexport const choiceTarget = {\n hover() {\n log('[hover]');\n },\n drop(props, monitor) {\n const item = monitor.getItem();\n\n log('[drop] item: ', item, 'didDrop?', monitor.didDrop());\n\n props.onMoveRow(item.index, props.idx);\n },\n};\n\nconst StyledSourceAndTarget = DropTarget(NAME, choiceTarget, (connect) => ({\n connectDropTarget: connect.dropTarget(),\n}))(StyledSource);\n\nexport default StyledSourceAndTarget;\n"],"file":"row.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/match-configure",
3
3
  "private": true,
4
- "version": "4.1.24",
4
+ "version": "5.5.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -9,16 +9,16 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@material-ui/icons": "^3.0.1",
12
- "@pie-framework/pie-configure-events": "^1.2.0",
13
- "@pie-lib/config-ui": "^10.8.57",
14
- "@pie-lib/drag": "^1.1.50",
15
- "@pie-lib/editable-html": "^7.16.16",
16
- "@pie-lib/scoring-config": "^3.5.125",
12
+ "@pie-framework/pie-configure-events": "^1.3.0",
13
+ "@pie-lib/config-ui": "12.0.0-beta.3",
14
+ "@pie-lib/drag": "^2.1.12",
15
+ "@pie-lib/editable-html": "10.0.0-beta.4",
16
+ "@pie-lib/scoring-config": "4.0.0-beta.2",
17
17
  "classnames": "^2.2.5",
18
18
  "debug": "^3.1.0",
19
19
  "prop-types": "^15.6.2",
20
20
  "react": "^16.8.1",
21
- "react-dnd": "^9.3.2",
21
+ "react-dnd": "^14.0.5",
22
22
  "react-dom": "^16.8.1",
23
23
  "react-swipeable-views": "^0.12.17"
24
24
  },
@@ -0,0 +1,12 @@
1
+ export const generateValidationMessage = (model) => {
2
+ const { choiceMode } = model;
3
+
4
+ const baselineValidationMessage =
5
+ '\nThere should be at least 1 question row.' + '\nRow and column headings should be non-blank and unique.';
6
+ const correctResponseMessage =
7
+ choiceMode === 'radio'
8
+ ? '\nThere should be a correct response defined for every row.'
9
+ : '\nThere should be at least one correct response defined for every row.';
10
+
11
+ return 'Validation requirements:' + baselineValidationMessage + correctResponseMessage;
12
+ };
@@ -3,6 +3,109 @@
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
+ ## [4.6.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.6.0...@pie-element/match-controller@4.6.1) (2023-01-17)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **match:** remove domparser from controller PD-2496 ([290d63b](https://github.com/pie-framework/pie-elements/commit/290d63b81a5eb1be9c512b8a443dc9663a7356ff))
12
+
13
+
14
+
15
+
16
+
17
+ # [4.6.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.5.1...@pie-element/match-controller@4.6.0) (2023-01-05)
18
+
19
+
20
+ ### Features
21
+
22
+ * **match:** add validation PD-2417 ([157c19b](https://github.com/pie-framework/pie-elements/commit/157c19b4ceee5decfd47c50e23a7004d27136ca0))
23
+ * **match:** added some configurable validation PD-2417. Started to update validation method ([dc459a1](https://github.com/pie-framework/pie-elements/commit/dc459a140a54772e6d9ec5dfaa1c620215cdf4c2))
24
+ * **match:** clean up ([40809d9](https://github.com/pie-framework/pie-elements/commit/40809d9a29baeba7f50f4f5510a0e18537224930))
25
+
26
+
27
+
28
+
29
+
30
+ ## [4.5.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.5.0...@pie-element/match-controller@4.5.1) (2022-12-07)
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * update libs ([441f403](https://github.com/pie-framework/pie-elements/commit/441f403870b7bec0d61fab58b8d93dbe0ead4c32))
36
+
37
+
38
+
39
+
40
+
41
+ # [4.5.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.4.8...@pie-element/match-controller@4.5.0) (2022-08-03)
42
+
43
+
44
+ ### Bug Fixes
45
+
46
+ * **match:** Scoring is broken for checkbox-based Match items where student has checked all the correct answers and also incorrect answers PD-1930 ([d471d0b](https://github.com/pie-framework/pie-elements/commit/d471d0b0d2ad1ff87a5509395478a431f0d69ce5))
47
+
48
+
49
+ ### Features
50
+
51
+ * **match:** added validation PD-1710 ([9a7ff92](https://github.com/pie-framework/pie-elements/commit/9a7ff928926219d82b33d6a97df271bdbafff17d))
52
+ * **match:** implement validation ui/ux PD-1711 ([85cdff1](https://github.com/pie-framework/pie-elements/commit/85cdff133bb3373c33733b0e627241bf6880a738))
53
+
54
+
55
+
56
+
57
+
58
+ ## [4.4.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.4.7...@pie-element/match-controller@4.4.8) (2022-05-16)
59
+
60
+ **Note:** Version bump only for package @pie-element/match-controller
61
+
62
+
63
+
64
+
65
+
66
+ ## [4.4.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.4.2...@pie-element/match-controller@4.4.4) (2021-11-11)
67
+
68
+ **Note:** Version bump only for package @pie-element/match-controller
69
+
70
+
71
+
72
+
73
+
74
+ ## [4.4.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.4.2...@pie-element/match-controller@4.4.3) (2021-11-11)
75
+
76
+ **Note:** Version bump only for package @pie-element/match-controller
77
+
78
+
79
+
80
+
81
+
82
+ ## [4.4.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.4.0...@pie-element/match-controller@4.4.2) (2021-08-05)
83
+
84
+
85
+ ### Bug Fixes
86
+
87
+ * force bump ([5ea7295](https://github.com/pie-framework/pie-elements/commit/5ea7295e4755fbc492a76e7ec69e5fc35b196919))
88
+
89
+
90
+
91
+
92
+
93
+ # [4.4.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.3.13...@pie-element/match-controller@4.4.0) (2021-06-29)
94
+
95
+
96
+ ### Bug Fixes
97
+
98
+ * **match:** remove rationale and teacher instructions from the item model returned by the API PD-1158 ([#591](https://github.com/pie-framework/pie-elements/issues/591)) ([e33786a](https://github.com/pie-framework/pie-elements/commit/e33786ad0bc788872c3624805790c82b3819c879))
99
+
100
+
101
+ ### Features
102
+
103
+ * **match:** change partial scoring method for match items that use checkboxes PD-741 ([#588](https://github.com/pie-framework/pie-elements/issues/588)) ([65cd5dd](https://github.com/pie-framework/pie-elements/commit/65cd5dd6adb2307f89f53248b0d4489b0dd71e39))
104
+
105
+
106
+
107
+
108
+
6
109
  ## [4.3.13](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.3.10...@pie-element/match-controller@4.3.13) (2021-03-03)
7
110
 
8
111
  **Note:** Version bump only for package @pie-element/match-controller