@pie-element/match 4.7.3-next.133 → 4.7.3-next.1335
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 +262 -0
- package/configure/CHANGELOG.md +247 -0
- package/configure/lib/add-row.js +1 -1
- package/configure/lib/add-row.js.map +1 -1
- package/configure/lib/answer-config-block.js +73 -14
- package/configure/lib/answer-config-block.js.map +1 -1
- package/configure/lib/common.js +5 -1
- package/configure/lib/common.js.map +1 -1
- package/configure/lib/configure.js +53 -9
- package/configure/lib/configure.js.map +1 -1
- package/configure/lib/defaults.js +18 -1
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/general-config-block.js +52 -7
- package/configure/lib/general-config-block.js.map +1 -1
- package/configure/lib/index.js +18 -4
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/row.js +46 -9
- package/configure/lib/row.js.map +1 -1
- package/configure/package.json +5 -5
- package/configure/utils.js +11 -0
- package/controller/CHANGELOG.md +24 -0
- package/controller/lib/index.js +48 -5
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/config-schema.json +94 -0
- package/docs/config-schema.json.md +73 -1
- package/docs/pie-schema.json +32 -0
- package/docs/pie-schema.json.md +24 -0
- package/lib/answer-grid.js +5 -6
- package/lib/answer-grid.js.map +1 -1
- package/lib/index.js +7 -2
- package/lib/index.js.map +1 -1
- package/lib/main.js +11 -17
- package/lib/main.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
4
|
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
@@ -35,13 +35,25 @@ var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
|
|
|
35
35
|
|
|
36
36
|
var _styles = require("@material-ui/core/styles");
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
39
|
+
|
|
40
|
+
var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
|
|
41
|
+
|
|
42
|
+
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
43
|
+
|
|
44
|
+
var _utils = require("../utils");
|
|
45
|
+
|
|
46
|
+
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
|
+
|
|
48
|
+
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; }
|
|
39
49
|
|
|
40
|
-
function
|
|
50
|
+
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; }
|
|
51
|
+
|
|
52
|
+
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; }
|
|
41
53
|
|
|
42
54
|
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); }; }
|
|
43
55
|
|
|
44
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
56
|
+
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; } }
|
|
45
57
|
|
|
46
58
|
var styles = function styles(theme) {
|
|
47
59
|
return {
|
|
@@ -54,6 +66,23 @@ var styles = function styles(theme) {
|
|
|
54
66
|
},
|
|
55
67
|
inputContainer: {
|
|
56
68
|
width: '90%'
|
|
69
|
+
},
|
|
70
|
+
flexContainer: {
|
|
71
|
+
display: 'flex',
|
|
72
|
+
alignItems: 'center',
|
|
73
|
+
marginTop: '10px'
|
|
74
|
+
},
|
|
75
|
+
titleText: {
|
|
76
|
+
fontFamily: 'Cerebri Sans',
|
|
77
|
+
fontSize: '18px',
|
|
78
|
+
lineHeight: '19px',
|
|
79
|
+
color: '#495B8F',
|
|
80
|
+
marginRight: '5px'
|
|
81
|
+
},
|
|
82
|
+
tooltip: {
|
|
83
|
+
fontSize: '12px',
|
|
84
|
+
whiteSpace: 'pre',
|
|
85
|
+
maxWidth: '500px'
|
|
57
86
|
}
|
|
58
87
|
};
|
|
59
88
|
};
|
|
@@ -114,7 +143,23 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
|
|
|
114
143
|
_ref$choiceMode = _ref.choiceMode,
|
|
115
144
|
choiceMode = _ref$choiceMode === void 0 ? {} : _ref$choiceMode;
|
|
116
145
|
|
|
117
|
-
|
|
146
|
+
var validationMessage = (0, _utils.generateValidationMessage)(model);
|
|
147
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
148
|
+
className: classes.flexContainer
|
|
149
|
+
}, /*#__PURE__*/React.createElement(_Typography["default"], {
|
|
150
|
+
className: classes.titleText
|
|
151
|
+
}, "Define questions"), /*#__PURE__*/React.createElement(_Tooltip["default"], {
|
|
152
|
+
classes: {
|
|
153
|
+
tooltip: classes.tooltip
|
|
154
|
+
},
|
|
155
|
+
disableFocusListener: true,
|
|
156
|
+
disableTouchListener: true,
|
|
157
|
+
placement: 'right',
|
|
158
|
+
title: validationMessage
|
|
159
|
+
}, /*#__PURE__*/React.createElement(_Info["default"], {
|
|
160
|
+
fontSize: 'small',
|
|
161
|
+
color: 'primary'
|
|
162
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
118
163
|
className: classes.container
|
|
119
164
|
}, /*#__PURE__*/React.createElement("div", {
|
|
120
165
|
className: classes.input
|
|
@@ -143,7 +188,7 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
|
|
|
143
188
|
value: "radio"
|
|
144
189
|
}, "Radio - One Answer"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
|
|
145
190
|
value: "checkbox"
|
|
146
|
-
}, "Checkbox - Multiple Answers")))));
|
|
191
|
+
}, "Checkbox - Multiple Answers"))))));
|
|
147
192
|
}
|
|
148
193
|
}]);
|
|
149
194
|
return GeneralConfigBlock;
|
|
@@ -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","onResponseTypeChange","newModel","target","value","onLayoutChange","classes","configuration","layout","choiceMode","settings","label","e","v","onChangeColumns","select","onChangeResponseType","React","Component","PropTypes","object","isRequired","func"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA
|
|
1
|
+
{"version":3,"sources":["../src/general-config-block.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","display","input","flex","inputContainer","width","flexContainer","alignItems","titleText","fontFamily","fontSize","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","select","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 inputContainer: {\n width: '90%'\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n marginTop: '10px'\n },\n titleText: {\n fontFamily: 'Cerebri Sans',\n fontSize: '18px',\n lineHeight: '19px',\n color: '#495B8F',\n marginRight: '5px',\n },\n tooltip: {\n fontSize: '12px',\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 {\n layout = {},\n choiceMode = {}\n } = 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 <div className={classes.container}>\n <div className={classes.input}>\n {layout.settings &&\n <InputContainer\n label={layout.label}\n className={classes.inputContainer}\n >\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 />\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.onChangeResponseType('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}\n\nexport default withStyles(styles)(GeneralConfigBlock);\n"],"file":"general-config-block.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -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);
|
|
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]
|
|
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 {
|
|
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
|
|
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;;
|
|
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;;;;;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,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;;;kDAzEyCgB,W;;;iCAAvBpC,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 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\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"}
|
package/configure/lib/row.js
CHANGED
|
@@ -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.
|
|
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
|
|
|
@@ -43,17 +45,21 @@ var _reactDnd = require("react-dnd");
|
|
|
43
45
|
|
|
44
46
|
var _debug = _interopRequireDefault(require("debug"));
|
|
45
47
|
|
|
46
|
-
var _editableHtml =
|
|
48
|
+
var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
|
|
47
49
|
|
|
48
50
|
var _common = require("./common");
|
|
49
51
|
|
|
50
|
-
function
|
|
52
|
+
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); }
|
|
53
|
+
|
|
54
|
+
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; }
|
|
51
55
|
|
|
52
|
-
function
|
|
56
|
+
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; }
|
|
57
|
+
|
|
58
|
+
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; }
|
|
53
59
|
|
|
54
60
|
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); }; }
|
|
55
61
|
|
|
56
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
62
|
+
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; } }
|
|
57
63
|
|
|
58
64
|
var log = (0, _debug["default"])('@pie-element:categorize:configure:choice');
|
|
59
65
|
var _canDrag = false;
|
|
@@ -189,7 +195,12 @@ var Row = /*#__PURE__*/function (_React$Component) {
|
|
|
189
195
|
row = _this$props4.row,
|
|
190
196
|
idx = _this$props4.idx,
|
|
191
197
|
enableImages = _this$props4.enableImages,
|
|
192
|
-
toolbarOpts = _this$props4.toolbarOpts
|
|
198
|
+
toolbarOpts = _this$props4.toolbarOpts,
|
|
199
|
+
spellCheck = _this$props4.spellCheck,
|
|
200
|
+
error = _this$props4.error,
|
|
201
|
+
maxImageWidth = _this$props4.maxImageWidth,
|
|
202
|
+
maxImageHeight = _this$props4.maxImageHeight,
|
|
203
|
+
uploadSoundSupport = _this$props4.uploadSoundSupport;
|
|
193
204
|
var dialog = this.state.dialog;
|
|
194
205
|
var opacity = isDragging ? 0 : 1;
|
|
195
206
|
var rowPlugins = {
|
|
@@ -203,6 +214,9 @@ var Row = /*#__PURE__*/function (_React$Component) {
|
|
|
203
214
|
disabled: true
|
|
204
215
|
}
|
|
205
216
|
};
|
|
217
|
+
var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
|
|
218
|
+
return p !== 'bulleted-list' && p !== 'numbered-list';
|
|
219
|
+
});
|
|
206
220
|
|
|
207
221
|
var content = /*#__PURE__*/_react["default"].createElement("div", {
|
|
208
222
|
style: {
|
|
@@ -228,7 +242,17 @@ var Row = /*#__PURE__*/function (_React$Component) {
|
|
|
228
242
|
className: classes.editor,
|
|
229
243
|
pluginProps: rowPlugins,
|
|
230
244
|
toolbarOpts: toolbarOpts,
|
|
231
|
-
allowValidation: true
|
|
245
|
+
allowValidation: true,
|
|
246
|
+
activePlugins: filteredDefaultPlugins,
|
|
247
|
+
spellCheck: spellCheck,
|
|
248
|
+
maxImageWidth: maxImageWidth,
|
|
249
|
+
maxImageHeight: maxImageHeight,
|
|
250
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
251
|
+
languageCharactersProps: [{
|
|
252
|
+
language: 'spanish'
|
|
253
|
+
}, {
|
|
254
|
+
language: 'special'
|
|
255
|
+
}]
|
|
232
256
|
})), row.values.map(function (rowValue, rowIdx) {
|
|
233
257
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
234
258
|
key: rowIdx,
|
|
@@ -247,7 +271,9 @@ var Row = /*#__PURE__*/function (_React$Component) {
|
|
|
247
271
|
onClick: this.onDeleteRow(idx)
|
|
248
272
|
}, /*#__PURE__*/_react["default"].createElement(_Delete["default"], {
|
|
249
273
|
className: classes.deleteIcon
|
|
250
|
-
})))), /*#__PURE__*/_react["default"].createElement("
|
|
274
|
+
})))), error && /*#__PURE__*/_react["default"].createElement("div", {
|
|
275
|
+
className: classes.errorText
|
|
276
|
+
}, error), /*#__PURE__*/_react["default"].createElement("hr", {
|
|
251
277
|
className: classes.separator
|
|
252
278
|
}), /*#__PURE__*/_react["default"].createElement(_common.InfoDialog, {
|
|
253
279
|
title: dialog.message,
|
|
@@ -277,8 +303,13 @@ exports.Row = Row;
|
|
|
277
303
|
add: _propTypes["default"].func.isRequired,
|
|
278
304
|
"delete": _propTypes["default"].func.isRequired
|
|
279
305
|
}),
|
|
306
|
+
uploadSoundSupport: _propTypes["default"].shape({
|
|
307
|
+
add: _propTypes["default"].func.isRequired,
|
|
308
|
+
"delete": _propTypes["default"].func.isRequired
|
|
309
|
+
}),
|
|
280
310
|
enableImages: _propTypes["default"].bool,
|
|
281
|
-
toolbarOpts: _propTypes["default"].object
|
|
311
|
+
toolbarOpts: _propTypes["default"].object,
|
|
312
|
+
error: _propTypes["default"].string
|
|
282
313
|
});
|
|
283
314
|
(0, _defineProperty2["default"])(Row, "defaultProps", {});
|
|
284
315
|
|
|
@@ -331,6 +362,12 @@ var styles = function styles(theme) {
|
|
|
331
362
|
border: 0,
|
|
332
363
|
borderTop: '2px solid lightgray',
|
|
333
364
|
width: '100%'
|
|
365
|
+
},
|
|
366
|
+
errorText: {
|
|
367
|
+
fontSize: '12px',
|
|
368
|
+
color: 'red',
|
|
369
|
+
paddingTop: '10px',
|
|
370
|
+
textAlign: 'center'
|
|
334
371
|
}
|
|
335
372
|
};
|
|
336
373
|
};
|
package/configure/lib/row.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/row.jsx"],"names":["log","canDrag","Row","dialog","open","message","rowIndex","value","props","model","onChange","newModel","rows","currentRow","title","sameValue","filter","row","wasChanged","sameValueEntered","empty","length","setState","onOk","rowValueIndex","event","choiceMode","i","values","target","checked","idx","onDeleteRow","document","addEventListener","onMouseUpOnHandle","classes","imageSupport","connectDragSource","connectDropTarget","isDragging","enableImages","toolbarOpts","state","opacity","rowPlugins","image","disabled","audio","video","content","dragHandle","onMouseDownOnHandle","rowContainer","rowItem","questionText","onRowTitleChange","editor","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":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;AAEO,IAAIC,QAAO,GAAG,KAAd;;;IAEMC,G;;;;;;;;;;;;;;;8FAsBH;AACNC,MAAAA,MAAM,EAAE;AACNC,QAAAA,IAAI,EAAE,KADA;AAENC,QAAAA,OAAO,EAAE;AAFH;AADF,K;yGAWW,UAAAC,QAAQ;AAAA,aAAI,UAAAC,KAAK,EAAI;AAAA,0BACV,MAAKC,KADK;AAAA,YAC9BC,KAD8B,eAC9BA,KAD8B;AAAA,YACvBC,QADuB,eACvBA,QADuB;;AAEtC,YAAMC,QAAQ,qBAAQF,KAAR,CAAd;;AAEA,YAAMG,IAAI,GAAGD,QAAQ,CAACC,IAAT,IAAiB,EAA9B;AACA,YAAMC,UAAU,GAAID,IAAI,CAACN,QAAD,CAAJ,IAAkBM,IAAI,CAACN,QAAD,CAAJ,CAAeQ,KAArD;AAEA,YAAMC,SAAS,GAAGH,IAAI,CAACI,MAAL,CAAY,UAAAC,GAAG,EAAI;AACnC,cAAMC,UAAU,GAAGL,UAAU,KAAKN,KAAf,IAAwB,eAAQM,UAAR,gBAA+BN,KAA1E;AACA,cAAMY,gBAAgB,GAAGF,GAAG,CAACH,KAAJ,KAAcP,KAAd,IAAuB,eAAQU,GAAG,CAACH,KAAZ,gBAA8BP,KAA9E;AAEA,iBAAOW,UAAU,IAAIC,gBAArB;AACD,SALiB,CAAlB;AAOA,YAAMC,KAAK,GAAGb,KAAK,KAAK,aAAxB;;AAEA,YAAIQ,SAAS,CAACM,MAAV,IAAoBD,KAAxB,EAA+B;AAC7B,gBAAKE,QAAL,CAAc;AACZnB,YAAAA,MAAM,EAAE;AACNC,cAAAA,IAAI,EAAE,IADA;AAENC,cAAAA,OAAO,EAAE,yDAFH;AAGNkB,cAAAA,IAAI,EAAE,gBAAM;AACV,sBAAKD,QAAL,CACE;AACEnB,kBAAAA,MAAM,EAAE;AACNC,oBAAAA,IAAI,EAAE;AADA;AADV,iBADF;AAOD;AAXK;AADI,WAAd;AAeD,SAhBD,MAgBO;AACLO,UAAAA,QAAQ,CAACC,IAAT,CAAcN,QAAd,EAAwBQ,KAAxB,GAAgCP,KAAhC;AAEAG,UAAAA,QAAQ,CAACC,QAAD,CAAR;AACD;AACF,OArC0B;AAAA,K;yGAuCR,UAACL,QAAD,EAAWkB,aAAX;AAAA,aAA6B,UAAAC,KAAK,EAAI;AAAA,2BAC3B,MAAKjB,KADsB;AAAA,YAC/CC,KAD+C,gBAC/CA,KAD+C;AAAA,YACxCC,QADwC,gBACxCA,QADwC;;AAEvD,YAAMC,QAAQ,qBAAQF,KAAR,CAAd;;AAEA,YAAIA,KAAK,CAACiB,UAAN,KAAqB,OAAzB,EAAkC;AAChC,eAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhB,QAAQ,CAACC,IAAT,CAAcN,QAAd,EAAwBsB,MAAxB,CAA+BP,MAAnD,EAA2DM,CAAC,EAA5D,EAAgE;AAC9DhB,YAAAA,QAAQ,CAACC,IAAT,CAAcN,QAAd,EAAwBsB,MAAxB,CAA+BD,CAA/B,IAAoC,KAApC;AACD;AACF;;AAEDhB,QAAAA,QAAQ,CAACC,IAAT,CAAcN,QAAd,EAAwBsB,MAAxB,CAA+BJ,aAA/B,IAAgDC,KAAK,CAACI,MAAN,CAAaC,OAA7D;AAEApB,QAAAA,QAAQ,CAACC,QAAD,CAAR;AACD,OAbkB;AAAA,K;oGAeL,UAACoB,GAAD;AAAA,aAAS,YAAM;AAAA,2BACI,MAAKvB,KADT;AAAA,YACnBC,KADmB,gBACnBA,KADmB;AAAA,YACZuB,WADY,gBACZA,WADY;;AAG3B,YAAGvB,KAAK,CAACG,IAAN,IAAcH,KAAK,CAACG,IAAN,CAAWS,MAAX,KAAsB,CAAvC,EAA0C;AACxC,gBAAKC,QAAL,CAAc;AACZnB,YAAAA,MAAM,EAAE;AACNC,cAAAA,IAAI,EAAE,IADA;AAENC,cAAAA,OAAO,EAAE,4CAFH;AAGNkB,cAAAA,IAAI,EAAE,gBAAM;AACV,sBAAKD,QAAL,CACE;AACEnB,kBAAAA,MAAM,EAAE;AACNC,oBAAAA,IAAI,EAAE;AADA;AADV,iBADF;AAOD;AAXK;AADI,WAAd;AAeD,SAhBD,MAgBO;AACL4B,UAAAA,WAAW,CAACD,GAAD,CAAX;AACD;AACF,OAtBa;AAAA,K;4GAwBQ,YAAM;AAC1B,wBAAA9B,QAAO,GAAG,IAAV;AACD,K;0GAEmB,YAAM;AACxB,wBAAAA,QAAO,GAAG,KAAV;AACD,K;;;;;;WAxFD,6BAAoB;AAClBgC,MAAAA,QAAQ,CAACC,gBAAT,CAA0B,SAA1B,EAAqC,KAAKC,iBAA1C;AACD;;;WAwFD,kBAAS;AAAA;;AAAA,yBAYH,KAAK3B,KAZF;AAAA,UAEL4B,OAFK,gBAELA,OAFK;AAAA,UAGLC,YAHK,gBAGLA,YAHK;AAAA,UAILC,iBAJK,gBAILA,iBAJK;AAAA,UAKLC,iBALK,gBAKLA,iBALK;AAAA,UAMLC,UANK,gBAMLA,UANK;AAAA,UAOL/B,KAPK,gBAOLA,KAPK;AAAA,UAQLQ,GARK,gBAQLA,GARK;AAAA,UASLc,GATK,gBASLA,GATK;AAAA,UAULU,YAVK,gBAULA,YAVK;AAAA,UAWLC,WAXK,gBAWLA,WAXK;AAAA,UAaCvC,MAbD,GAaY,KAAKwC,KAbjB,CAaCxC,MAbD;AAcP,UAAMyC,OAAO,GAAGJ,UAAU,GAAG,CAAH,GAAO,CAAjC;AAEA,UAAMK,UAAU,GAAG;AACjBC,QAAAA,KAAK,EAAE;AACLC,UAAAA,QAAQ,EAAE,CAACN;AADN,SADU;AAIjBO,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAJU;AAKjBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AALU,OAAnB;;AAQA,UAAMG,OAAO,gBACX;AAAK,QAAA,KAAK,EAAE;AACVN,UAAAA,OAAO,EAAEA;AADC;AAAZ,sBAGE;AACE,QAAA,MAAM,EAAE,QADV;AAEE,QAAA,SAAS,EAAER,OAAO,CAACe,UAFrB;AAGE,QAAA,WAAW,EAAE,KAAKC;AAHpB,sBAKE,gCAAC,sBAAD;AAAY,QAAA,KAAK,EAAE;AAAnB,QALF,CAHF,eAUE;AAAK,QAAA,SAAS,EAAEhB,OAAO,CAACiB;AAAxB,sBACE;AAAK,QAAA,SAAS,EAAE,4BAAWjB,OAAO,CAACkB,OAAnB,EAA4BlB,OAAO,CAACmB,YAApC;AAAhB,sBACE,gCAAC,wBAAD;AACE,QAAA,YAAY,EAAElB,YADhB;AAEE,QAAA,gBAAgB,MAFlB;AAGE,QAAA,gBAAgB,MAHlB;AAIE,QAAA,KAAK,EAAE,OAJT;AAKE,QAAA,MAAM,EAAEpB,GAAG,CAACH,KALd;AAME,QAAA,QAAQ,EAAE,KAAK0C,gBAAL,CAAsBzB,GAAtB,CANZ;AAOE,QAAA,SAAS,EAAEK,OAAO,CAACqB,MAPrB;AAQE,QAAA,WAAW,EAAEZ,UARf;AASE,QAAA,WAAW,EAAEH,WATf;AAUE,QAAA,eAAe;AAVjB,QADF,CADF,EAeGzB,GAAG,CAACW,MAAJ,CAAW8B,GAAX,CAAe,UAACC,QAAD,EAAWC,MAAX;AAAA,4BACd;AAAK,UAAA,GAAG,EAAEA,MAAV;AAAkB,UAAA,SAAS,EAAExB,OAAO,CAACkB;AAArC,WACG7C,KAAK,CAACiB,UAAN,KAAqB,OAArB,gBACC,gCAAC,iBAAD;AACE,UAAA,QAAQ,EAAE,MAAI,CAACmC,gBAAL,CAAsB9B,GAAtB,EAA2B6B,MAA3B,CADZ;AAEE,UAAA,OAAO,EAAED,QAAQ,KAAK;AAFxB,UADD,gBAMC,gCAAC,kBAAD;AACE,UAAA,QAAQ,EAAE,MAAI,CAACE,gBAAL,CAAsB9B,GAAtB,EAA2B6B,MAA3B,CADZ;AAEE,UAAA,OAAO,EAAED,QAAQ,KAAK,IAFxB;AAGE,UAAA,KAAK,EAAE;AAHT,UAPJ,CADc;AAAA,OAAf,CAfH,eA+BE;AAAK,QAAA,SAAS,EAAEvB,OAAO,CAAC0B;AAAxB,sBACE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE,KAAK9B,WAAL,CAAiBD,GAAjB;AAAjB,sBACE,gCAAC,kBAAD;AAAQ,QAAA,SAAS,EAAEK,OAAO,CAAC0B;AAA3B,QADF,CADF,CA/BF,CAVF,eA+CE;AAAI,QAAA,SAAS,EAAE1B,OAAO,CAAC2B;AAAvB,QA/CF,eAgDE,gCAAC,kBAAD;AACE,QAAA,KAAK,EAAE5D,MAAM,CAACE,OADhB;AAEE,QAAA,IAAI,EAAEF,MAAM,CAACC,IAFf;AAGE,QAAA,IAAI,EAAED,MAAM,CAACoB;AAHf,QAhDF,CADF;;AAyDA,aAAOe,iBAAiB,CAACC,iBAAiB,CAACW,OAAD,CAAlB,CAAxB;AACD;;;EAzMsBc,kBAAMC,S;;;iCAAlB/D,G,eACQ;AACjBkC,EAAAA,OAAO,EAAE8B,sBAAUC,MAAV,CAAiBC,UADT;AAEjB3D,EAAAA,KAAK,EAAEyD,sBAAUC,MAAV,CAAiBC,UAFP;AAGjBnD,EAAAA,GAAG,EAAEiD,sBAAUC,MAAV,CAAiBC,UAHL;AAIjBrC,EAAAA,GAAG,EAAEmC,sBAAUG,MAAV,CAAiBD,UAJL;AAKjB5B,EAAAA,UAAU,EAAE0B,sBAAUI,IAAV,CAAeF,UALV;AAMjBpC,EAAAA,WAAW,EAAEkC,sBAAUK,IAAV,CAAeH,UANX;AAOjB1D,EAAAA,QAAQ,EAAEwD,sBAAUK,IAAV,CAAeH,UAPR;AAQjB9B,EAAAA,iBAAiB,EAAE4B,sBAAUK,IAAV,CAAeH,UARjB;AASjB7B,EAAAA,iBAAiB,EAAE2B,sBAAUK,IAAV,CAAeH,UATjB;AAUjBI,EAAAA,SAAS,EAAEN,sBAAUK,IAAV,CAAeH,UAVT;AAWjB/B,EAAAA,YAAY,EAAE6B,sBAAUO,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAER,sBAAUK,IAAV,CAAeH,UADQ;AAE5B,cAAQF,sBAAUK,IAAV,CAAeH;AAFK,GAAhB,CAXG;AAejB3B,EAAAA,YAAY,EAAEyB,sBAAUI,IAfP;AAgBjB5B,EAAAA,WAAW,EAAEwB,sBAAUC;AAhBN,C;iCADRjE,G,kBAoBW,E;;AAuLxB,IAAMyE,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK;AACvBC,IAAAA,OAAO,EAAE;AACPC,MAAAA,OAAO,EAAE,CADF;AAEPC,MAAAA,cAAc,EAAE;AAFT,KADc;AAKvBC,IAAAA,MAAM,EAAE;AACNF,MAAAA,OAAO,EAAEF,KAAK,CAACK,OAAN,CAAcC,IADjB;AAENC,MAAAA,QAAQ,EAAE;AAFJ,KALe;AASvBhC,IAAAA,UAAU,EAAE;AACViC,MAAAA,MAAM,EAAE;AADE,KATW;AAYvBC,IAAAA,YAAY,EAAE;AACZD,MAAAA,MAAM,EAAE;AADI,KAZS;AAgBvBE,IAAAA,SAAS,EAAE;AACTC,MAAAA,SAAS,EAAEX,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CADvB;AAETM,MAAAA,OAAO,EAAE,MAFA;AAGTC,MAAAA,aAAa,EAAE;AAHN,KAhBY;AAqBvBpC,IAAAA,YAAY,EAAE;AACZkC,MAAAA,SAAS,EAAEX,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CADpB;AAEZM,MAAAA,OAAO,EAAE,MAFG;AAGZE,MAAAA,UAAU,EAAE,QAHA;AAIZC,MAAAA,IAAI,EAAE;AAJM,KArBS;AA2BvBrC,IAAAA,OAAO,EAAE;AACPqC,MAAAA,IAAI,EAAE,CADC;AAEPH,MAAAA,OAAO,EAAE,MAFF;AAGPT,MAAAA,cAAc,EAAE,QAHT;AAIP,gBAAU;AACRa,QAAAA,KAAK,EAAE;AADC;AAJH,KA3Bc;AAmCvB9B,IAAAA,UAAU,EAAE;AACV6B,MAAAA,IAAI,EAAE,GADI;AAEVE,MAAAA,QAAQ,EAAE;AAFA,KAnCW;AAuCvBtC,IAAAA,YAAY,EAAE;AACZoC,MAAAA,IAAI,EAAE,CADM;AAEZH,MAAAA,OAAO,EAAE,MAFG;AAGZT,MAAAA,cAAc,EAAE;AAHJ,KAvCS;AA4CvBhB,IAAAA,SAAS,EAAE;AACTwB,MAAAA,SAAS,EAAEX,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CADvB;AAETY,MAAAA,MAAM,EAAE,CAFC;AAGTC,MAAAA,SAAS,EAAE,qBAHF;AAITH,MAAAA,KAAK,EAAE;AAJE;AA5CY,GAAL;AAAA,CAApB;;AAoDA,IAAMI,SAAS,GAAG,wBAAWrB,MAAX,EAAmBzE,GAAnB,CAAlB;AAEA,IAAM+F,IAAI,GAAG,YAAb;AAEO,IAAMC,YAAY,GAAG;AAC1BjG,EAAAA,OAD0B,qBAChB;AACR,WAAOA,QAAP;AACD,GAHyB;AAI1BkG,EAAAA,SAJ0B,qBAIhB3F,KAJgB,EAIT;AACf,WAAO;AACL4F,MAAAA,EAAE,EAAE5F,KAAK,CAACS,GAAN,CAAUmF,EADT;AAELC,MAAAA,KAAK,EAAE7F,KAAK,CAACuB;AAFR,KAAP;AAID;AATyB,CAArB;;AAYP,IAAMuE,YAAY,GAAG,0BAAWL,IAAX,EAAiBC,YAAjB,EAA+B,UAACK,OAAD,EAAUC,OAAV;AAAA,SAAuB;AACzElE,IAAAA,iBAAiB,EAAEiE,OAAO,CAACE,UAAR,EADsD;AAEzEjE,IAAAA,UAAU,EAAEgE,OAAO,CAAChE,UAAR;AAF6D,GAAvB;AAAA,CAA/B,EAGjBwD,SAHiB,CAArB;AAKO,IAAMU,YAAY,GAAG;AAC1BC,EAAAA,KAD0B,mBAClB;AACN3G,IAAAA,GAAG,CAAC,SAAD,CAAH;AACD,GAHyB;AAI1B4G,EAAAA,IAJ0B,gBAIrBpG,KAJqB,EAIdgG,OAJc,EAIL;AACnB,QAAMK,IAAI,GAAGL,OAAO,CAACM,OAAR,EAAb;AACA9G,IAAAA,GAAG,CAAC,eAAD,EAAkB6G,IAAlB,EAAwB,UAAxB,EAAoCL,OAAO,CAACO,OAAR,EAApC,CAAH;AACAvG,IAAAA,KAAK,CAACgE,SAAN,CAAgBqC,IAAI,CAACR,KAArB,EAA4B7F,KAAK,CAACuB,GAAlC;AACD;AARyB,CAArB;;AAWP,IAAMiF,qBAAqB,GAAG,0BAAWf,IAAX,EAAiBS,YAAjB,EAA+B,UAAAH,OAAO;AAAA,SAAK;AACvEhE,IAAAA,iBAAiB,EAAEgE,OAAO,CAACU,UAAR;AADoD,GAAL;AAAA,CAAtC,EAE1BX,YAF0B,CAA9B;eAIeU,qB","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';\nimport { InfoDialog } from './common';\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 toolbarOpts: PropTypes.object\n };\n\n static defaultProps = {};\n\n state = {\n dialog: {\n open: false,\n message: ''\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 const rows = newModel.rows || []\n const currentRow = rows[rowIndex] && rows[rowIndex].title;\n\n const sameValue = rows.filter(row => {\n const wasChanged = currentRow !== value && `<div>${currentRow}</div>` !== value;\n const sameValueEntered = row.title === value || `<div>${row.title}</div>` === value;\n\n return wasChanged && sameValueEntered;\n });\n\n const empty = value === '<div></div>';\n\n if (sameValue.length || empty) {\n this.setState({\n dialog: {\n open: true,\n message: 'The question row headings must be non-blank and unique.',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false,\n }\n }\n );\n }\n }\n });\n } else {\n newModel.rows[rowIndex].title = value;\n\n onChange(newModel);\n }\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 message: 'There has to be at least one question row.',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false,\n }\n }\n );\n }\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 } = 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\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={rowPlugins}\n toolbarOpts={toolbarOpts}\n allowValidation\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 <InfoDialog\n title={dialog.message}\n open={dialog.open}\n onOk={dialog.onOk}\n />\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","message","rowIndex","value","props","model","onChange","newModel","rows","currentRow","title","sameValue","filter","row","wasChanged","sameValueEntered","empty","length","setState","onOk","rowValueIndex","event","choiceMode","i","values","target","checked","idx","onDeleteRow","document","addEventListener","onMouseUpOnHandle","classes","imageSupport","connectDragSource","connectDropTarget","isDragging","enableImages","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","state","opacity","rowPlugins","image","disabled","audio","video","filteredDefaultPlugins","DEFAULT_PLUGINS","p","content","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","width","minWidth","border","borderTop","fontSize","color","paddingTop","textAlign","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, { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\nimport { InfoDialog } from './common';\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 message: ''\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 const rows = newModel.rows || []\n const currentRow = rows[rowIndex] && rows[rowIndex].title;\n\n const sameValue = rows.filter(row => {\n const wasChanged = currentRow !== value && `<div>${currentRow}</div>` !== value;\n const sameValueEntered = row.title === value || `<div>${row.title}</div>` === value;\n\n return wasChanged && sameValueEntered;\n });\n\n const empty = value === '<div></div>';\n\n if (sameValue.length || empty) {\n this.setState({\n dialog: {\n open: true,\n message: 'The question row headings must be non-blank and unique.',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false,\n }\n }\n );\n }\n }\n });\n } else {\n newModel.rows[rowIndex].title = value;\n\n onChange(newModel);\n }\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 message: 'There has to be at least one question row.',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false,\n }\n }\n );\n }\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 || [])\n .filter(p => p !== 'bulleted-list' && p !== 'numbered-list');\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={rowPlugins}\n toolbarOpts={toolbarOpts}\n allowValidation\n activePlugins={filteredDefaultPlugins}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\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 {error && <div className={classes.errorText}>{error}</div>}\n <hr className={classes.separator} />\n <InfoDialog\n title={dialog.message}\n open={dialog.open}\n onOk={dialog.onOk}\n />\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 errorText: {\n fontSize: '12px',\n color: 'red',\n paddingTop: '10px',\n textAlign: 'center'\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"}
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/match-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.1.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -9,11 +9,11 @@
|
|
|
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.
|
|
13
|
-
"@pie-lib/config-ui": "^
|
|
12
|
+
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
13
|
+
"@pie-lib/config-ui": "^11.0.19",
|
|
14
14
|
"@pie-lib/drag": "^1.1.52",
|
|
15
|
-
"@pie-lib/editable-html": "^
|
|
16
|
-
"@pie-lib/scoring-config": "^3.5.
|
|
15
|
+
"@pie-lib/editable-html": "^9.2.2",
|
|
16
|
+
"@pie-lib/scoring-config": "^3.5.183",
|
|
17
17
|
"classnames": "^2.2.5",
|
|
18
18
|
"debug": "^3.1.0",
|
|
19
19
|
"prop-types": "^15.6.2",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const generateValidationMessage = model => {
|
|
2
|
+
const { choiceMode } = model;
|
|
3
|
+
|
|
4
|
+
const baselineValidationMessage = '\nThere should be at least 1 question row.' +
|
|
5
|
+
'\nRow and column headings should be non-blank and unique.';
|
|
6
|
+
const correctResponseMessage = choiceMode === 'radio'
|
|
7
|
+
? '\nThere should be a correct response defined for every row.'
|
|
8
|
+
: '\nThere should be at least one correct response defined for every row.';
|
|
9
|
+
|
|
10
|
+
return 'Validation requirements:' + baselineValidationMessage + correctResponseMessage;
|
|
11
|
+
};
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
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.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)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/match-controller
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [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)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-element/match-controller
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [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)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @pie-element/match-controller
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [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)
|
|
7
31
|
|
|
8
32
|
|
package/controller/lib/index.js
CHANGED
|
@@ -5,9 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.createCorrectResponseSession = void 0;
|
|
8
9
|
exports.createDefaultModel = createDefaultModel;
|
|
9
10
|
exports.model = model;
|
|
10
|
-
exports.
|
|
11
|
+
exports.validate = exports.outcome = exports.normalize = void 0;
|
|
11
12
|
|
|
12
13
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
14
|
|
|
@@ -29,9 +30,9 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
29
30
|
|
|
30
31
|
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
31
32
|
|
|
32
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
33
|
+
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
34
|
|
|
34
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
35
|
+
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; }
|
|
35
36
|
|
|
36
37
|
var log = (0, _debug["default"])('@pie-element:match:controller');
|
|
37
38
|
|
|
@@ -48,9 +49,18 @@ var getResponseCorrectness = function getResponseCorrectness(model, answers) {
|
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
var totalCorrectAnswers = checkboxMode ? getTotalCorrectAnswers(model) : getTotalCorrect(model);
|
|
51
|
-
var correctAnswers
|
|
52
|
+
var correctAnswers;
|
|
53
|
+
var incorrectAnswers = 0;
|
|
54
|
+
|
|
55
|
+
if (checkboxMode) {
|
|
56
|
+
var checkboxes = getCheckboxes(rows, answers);
|
|
57
|
+
correctAnswers = checkboxes.correctAnswers;
|
|
58
|
+
incorrectAnswers = checkboxes.incorrectAnswers;
|
|
59
|
+
} else {
|
|
60
|
+
correctAnswers = getCorrectRadios(rows, answers);
|
|
61
|
+
}
|
|
52
62
|
|
|
53
|
-
if (totalCorrectAnswers === correctAnswers) {
|
|
63
|
+
if (totalCorrectAnswers === correctAnswers && !incorrectAnswers) {
|
|
54
64
|
return 'correct';
|
|
55
65
|
} else if (correctAnswers === 0) {
|
|
56
66
|
return 'incorrect';
|
|
@@ -318,4 +328,37 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
|
|
|
318
328
|
};
|
|
319
329
|
|
|
320
330
|
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
331
|
+
|
|
332
|
+
var validate = function validate() {
|
|
333
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
334
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
335
|
+
var rows = model.rows,
|
|
336
|
+
choiceMode = model.choiceMode;
|
|
337
|
+
var rowsErrors = {};
|
|
338
|
+
(rows || []).forEach(function (row) {
|
|
339
|
+
var id = row.id,
|
|
340
|
+
_row$values = row.values,
|
|
341
|
+
values = _row$values === void 0 ? [] : _row$values;
|
|
342
|
+
var hasCorrectResponse = false;
|
|
343
|
+
values.forEach(function (value) {
|
|
344
|
+
if (value) {
|
|
345
|
+
hasCorrectResponse = true;
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
if (!hasCorrectResponse) {
|
|
350
|
+
rowsErrors[id] = 'No correct response defined.';
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
var errors = {};
|
|
354
|
+
|
|
355
|
+
if (!(0, _isEmpty["default"])(rowsErrors)) {
|
|
356
|
+
errors.rowsErrors = rowsErrors;
|
|
357
|
+
errors.correctResponseError = choiceMode === 'radio' ? 'There should be a correct response defined for every row.' : 'There should be at least one correct response defined for every row.';
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
return errors;
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
exports.validate = validate;
|
|
321
364
|
//# sourceMappingURL=index.js.map
|