@pie-element/matrix 0.25.1-next.0 → 0.25.1-next.33

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.
@@ -66,6 +66,11 @@ var styles = function styles(theme) {
66
66
  width: '100%',
67
67
  paddingBottom: theme.spacing.unit * 2.5,
68
68
  justifyContent: 'space-around'
69
+ },
70
+ errorText: {
71
+ fontSize: theme.typography.fontSize - 2,
72
+ color: theme.palette.error.main,
73
+ paddingTop: theme.spacing.unit
69
74
  }
70
75
  };
71
76
  };
@@ -97,9 +102,13 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
97
102
  teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi;
98
103
 
99
104
  var _ref2 = model || {},
105
+ _ref2$errors = _ref2.errors,
106
+ errors = _ref2$errors === void 0 ? {} : _ref2$errors,
100
107
  teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
101
108
  spellCheckEnabled = _ref2.spellCheckEnabled;
102
109
 
110
+ var promptError = errors.prompt,
111
+ teacherInstructionsError = errors.teacherInstructions;
103
112
  var panelProperties = {
104
113
  teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
105
114
  spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
@@ -131,11 +140,14 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
131
140
  markup: model.teacherInstructions || '',
132
141
  onChange: onTeacherInstructionsChanged,
133
142
  imageSupport: imageSupport,
143
+ error: teacherInstructionsError,
134
144
  pluginProps: getPluginProps(teacherInstructions === null || teacherInstructions === void 0 ? void 0 : teacherInstructions.inputConfiguration),
135
145
  nonEmpty: false,
136
146
  spellCheck: spellCheckEnabled,
137
147
  uploadSoundSupport: uploadSoundSupport
138
- })), /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
148
+ }), teacherInstructionsError && /*#__PURE__*/_react["default"].createElement("div", {
149
+ className: classes.errorText
150
+ }, teacherInstructionsError)), /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
139
151
  label: prompt.label,
140
152
  className: classes.promptHolder
141
153
  }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
@@ -143,12 +155,15 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
143
155
  markup: model.prompt,
144
156
  onChange: onPromptChanged,
145
157
  imageSupport: imageSupport,
158
+ error: promptError,
146
159
  pluginProps: getPluginProps(prompt === null || prompt === void 0 ? void 0 : prompt.inputConfiguration),
147
160
  nonEmpty: !prompt.settings,
148
161
  spellCheck: spellCheckEnabled,
149
162
  uploadSoundSupport: uploadSoundSupport,
150
163
  disableUnderline: true
151
- })), /*#__PURE__*/_react["default"].createElement("div", {
164
+ }), promptError && /*#__PURE__*/_react["default"].createElement("div", {
165
+ className: classes.errorText
166
+ }, promptError)), /*#__PURE__*/_react["default"].createElement("div", {
152
167
  className: classes.matrixHeaderOptionsHolder
153
168
  }, /*#__PURE__*/_react["default"].createElement(_MatrixRowsSizeHeaderInput["default"], {
154
169
  model: model,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Main.jsx"],"names":["Panel","settings","toggle","radio","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","matrixHeaderOptionsHolder","display","flexWrap","paddingBottom","justifyContent","Design","props","classes","model","configuration","onPromptChanged","imageSupport","uploadSoundSupport","onChangeModel","onConfigurationChanged","onTeacherInstructionsChanged","baseInputConfiguration","contentDimensions","prompt","scoringType","settingsPanelDisabled","spellCheck","teacherInstructions","teacherInstructionsEnabled","spellCheckEnabled","panelProperties","label","getPluginProps","Properties","inputConfiguration","Main","onModelChanged","data","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { InputContainer, settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport MatrixColumnsSizeHeaderInput from './MatrixColumnsSizeHeaderInput';\nimport MatrixRowsSizeHeaderInput from './MatrixRowsSizeHeaderInput';\nimport MatrixLabelTypeHeaderInput from './MatrixLabelTypeHeaderInput';\nimport MatrixValues from './MatrixValues';\n\nconst { Panel, toggle, radio } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n matrixHeaderOptionsHolder: {\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n paddingBottom: theme.spacing.unit * 2.5,\n justifyContent: 'space-around',\n },\n});\n\nconst Design = withStyles(styles)((props) => {\n const {\n classes,\n model,\n configuration,\n onPromptChanged,\n imageSupport,\n uploadSoundSupport,\n onChangeModel,\n onConfigurationChanged,\n onTeacherInstructionsChanged,\n } = props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n prompt = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n } = configuration || {};\n const { teacherInstructionsEnabled, spellCheckEnabled } = model || {};\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChangeModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n </InputContainer>\n )}\n\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n nonEmpty={!prompt.settings}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n disableUnderline\n />\n </InputContainer>\n\n <div className={classes.matrixHeaderOptionsHolder}>\n <MatrixRowsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixColumnsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixLabelTypeHeaderInput model={model} onChangeModel={onChangeModel} />\n </div>\n\n <MatrixValues model={model} onChangeModel={onChangeModel} />\n </layout.ConfigLayout>\n );\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onChangeModel = (data) => {\n this.props.onModelChanged({ ...this.props.model, ...data });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n render() {\n return (\n <Design\n {...this.props}\n onChangeModel={this.props.onModelChanged}\n onPromptChanged={this.onPromptChanged}\n onTeacherInstructionsChanged={this.onTeacherInstructionsChanged}\n />\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"Main.js"}
1
+ {"version":3,"sources":["../src/Main.jsx"],"names":["Panel","settings","toggle","radio","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","matrixHeaderOptionsHolder","display","flexWrap","paddingBottom","justifyContent","errorText","fontSize","typography","color","palette","error","main","Design","props","classes","model","configuration","onPromptChanged","imageSupport","uploadSoundSupport","onChangeModel","onConfigurationChanged","onTeacherInstructionsChanged","baseInputConfiguration","contentDimensions","prompt","scoringType","settingsPanelDisabled","spellCheck","teacherInstructions","errors","teacherInstructionsEnabled","spellCheckEnabled","promptError","teacherInstructionsError","panelProperties","label","getPluginProps","Properties","inputConfiguration","Main","onModelChanged","data","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { InputContainer, settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport MatrixColumnsSizeHeaderInput from './MatrixColumnsSizeHeaderInput';\nimport MatrixRowsSizeHeaderInput from './MatrixRowsSizeHeaderInput';\nimport MatrixLabelTypeHeaderInput from './MatrixLabelTypeHeaderInput';\nimport MatrixValues from './MatrixValues';\n\nconst { Panel, toggle, radio } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n matrixHeaderOptionsHolder: {\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n paddingBottom: theme.spacing.unit * 2.5,\n justifyContent: 'space-around',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nconst Design = withStyles(styles)((props) => {\n const {\n classes,\n model,\n configuration,\n onPromptChanged,\n imageSupport,\n uploadSoundSupport,\n onChangeModel,\n onConfigurationChanged,\n onTeacherInstructionsChanged,\n } = props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n prompt = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n } = configuration || {};\n const { errors = {}, teacherInstructionsEnabled, spellCheckEnabled } = model || {};\n const { prompt: promptError, teacherInstructions: teacherInstructionsError } = errors;\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChangeModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n nonEmpty={!prompt.settings}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n disableUnderline\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n\n <div className={classes.matrixHeaderOptionsHolder}>\n <MatrixRowsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixColumnsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixLabelTypeHeaderInput model={model} onChangeModel={onChangeModel} />\n </div>\n\n <MatrixValues model={model} onChangeModel={onChangeModel} />\n </layout.ConfigLayout>\n );\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onChangeModel = (data) => {\n this.props.onModelChanged({ ...this.props.model, ...data });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n render() {\n return (\n <Design\n {...this.props}\n onChangeModel={this.props.onModelChanged}\n onPromptChanged={this.onPromptChanged}\n onTeacherInstructionsChanged={this.onTeacherInstructionsChanged}\n />\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"Main.js"}
@@ -43,7 +43,8 @@ var _default = {
43
43
  image: {
44
44
  disabled: false
45
45
  }
46
- }
46
+ },
47
+ required: false
47
48
  },
48
49
  settingsPanelDisabled: false,
49
50
  spellCheck: {
@@ -64,7 +65,8 @@ var _default = {
64
65
  image: {
65
66
  disabled: false
66
67
  }
67
- }
68
+ },
69
+ required: false
68
70
  }
69
71
  }
70
72
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","teacherInstructionsEnabled","labelType","rowLabels","columnLabels","matrixValues","prompt","configuration","baseInputConfiguration","audio","disabled","video","image","settings","label","inputConfiguration","settingsPanelDisabled","spellCheck","enabled","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,0BAA0B,EAAE,IADvB;AAELC,IAAAA,SAAS,EAAE,WAFN;AAGLC,IAAAA,SAAS,EAAE,CAAC,6BAAD,EAAgC,8BAAhC,CAHN;AAILC,IAAAA,YAAY,EAAE,CAAC,UAAD,EAAa,QAAb,EAAuB,OAAvB,CAJT;AAKLC,IAAAA,YAAY,EAAE,EALT;AAMLC,IAAAA,MAAM,EAAE;AANH,GADM;AASbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ;AAHe,KADX;AAMbJ,IAAAA,MAAM,EAAE;AACNO,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE,QAFD;AAGNC,MAAAA,kBAAkB,EAAE;AAClBN,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAHd,KANK;AAebM,IAAAA,qBAAqB,EAAE,KAfV;AAgBbC,IAAAA,UAAU,EAAE;AACVH,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAE,KAFA;AAGVK,MAAAA,OAAO,EAAE;AAHC,KAhBC;AAqBbC,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE,sBAFY;AAGnBC,MAAAA,kBAAkB,EAAE;AAClBN,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAHD;AArBR;AATF,C","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n teacherInstructionsEnabled: true,\n labelType: 'agreement',\n rowLabels: [\"I'm interested in politics.\", \"I'm interested in economics.\"],\n columnLabels: ['Disagree', 'Unsure', 'Agree'],\n matrixValues: {},\n prompt: 'How interested are you in the following domains?',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n },\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","teacherInstructionsEnabled","labelType","rowLabels","columnLabels","matrixValues","prompt","configuration","baseInputConfiguration","audio","disabled","video","image","settings","label","inputConfiguration","required","settingsPanelDisabled","spellCheck","enabled","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,0BAA0B,EAAE,IADvB;AAELC,IAAAA,SAAS,EAAE,WAFN;AAGLC,IAAAA,SAAS,EAAE,CAAC,6BAAD,EAAgC,8BAAhC,CAHN;AAILC,IAAAA,YAAY,EAAE,CAAC,UAAD,EAAa,QAAb,EAAuB,OAAvB,CAJT;AAKLC,IAAAA,YAAY,EAAE,EALT;AAMLC,IAAAA,MAAM,EAAE;AANH,GADM;AASbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ;AAHe,KADX;AAMbJ,IAAAA,MAAM,EAAE;AACNO,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE,QAFD;AAGNC,MAAAA,kBAAkB,EAAE;AAClBN,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW,OAHd;AAQNM,MAAAA,QAAQ,EAAE;AARJ,KANK;AAgBbC,IAAAA,qBAAqB,EAAE,KAhBV;AAiBbC,IAAAA,UAAU,EAAE;AACVJ,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAE,KAFA;AAGVM,MAAAA,OAAO,EAAE;AAHC,KAjBC;AAsBbC,IAAAA,mBAAmB,EAAE;AACnBP,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE,sBAFY;AAGnBC,MAAAA,kBAAkB,EAAE;AAClBN,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW,OAHD;AAQnBM,MAAAA,QAAQ,EAAE;AARS;AAtBR;AATF,C","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n teacherInstructionsEnabled: true,\n labelType: 'agreement',\n rowLabels: [\"I'm interested in politics.\", \"I'm interested in economics.\"],\n columnLabels: ['Disagree', 'Unsure', 'Agree'],\n matrixValues: {},\n prompt: 'How interested are you in the following domains?',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n },\n};\n"],"file":"defaults.js"}
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-framework/pie-configure-events": "^1.3.0",
12
- "@pie-lib/pie-toolbox": "1.12.1",
12
+ "@pie-lib/pie-toolbox": "1.12.2",
13
13
  "debug": "^4.1.1",
14
14
  "prop-types": "^15.6.2",
15
15
  "react": "^16.8.1",
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.createDefaultModel = exports.createCorrectResponseSession = void 0;
9
9
  exports.model = model;
10
10
  exports.outcome = outcome;
11
+ exports.validate = void 0;
11
12
 
12
13
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
14
 
@@ -110,7 +111,33 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
110
111
  resolve(null);
111
112
  }
112
113
  });
113
- };
114
+ }; // remove all html tags
115
+
114
116
 
115
117
  exports.createCorrectResponseSession = createCorrectResponseSession;
118
+
119
+ var getInnerText = function getInnerText(html) {
120
+ return (html || '').replaceAll(/<[^>]*>/g, '');
121
+ }; // remove all html tags except img and iframe
122
+
123
+
124
+ var getContent = function getContent(html) {
125
+ return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
126
+ };
127
+
128
+ var validate = function validate() {
129
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
130
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
131
+ var errors = {};
132
+ ['teacherInstructions', 'prompt'].forEach(function (field) {
133
+ var _config$field;
134
+
135
+ if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
136
+ errors[field] = 'This field is required.';
137
+ }
138
+ });
139
+ return errors;
140
+ };
141
+
142
+ exports.validate = validate;
116
143
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["createDefaultModel","model","Promise","resolve","defaults","question","session","env","normalizedQuestion","out","disabled","mode","role","teacherInstructions","teacherInstructionsEnabled","outcome","score","empty","Object","keys","value","reduce","acc","key","matrixValue","matrixValues","createCorrectResponseSession","id"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,MAACC,KAAD,uEAAS,EAAT;AAAA,SAAgB,IAAIC,OAAJ,CAAY,UAACC,OAAD;AAAA,WAAaA,OAAO,iCAAMC,oBAAN,GAAmBH,KAAnB,EAApB;AAAA,GAAZ,CAAhB;AAAA,CAA3B;AAEP;AACA;AACA;AACA;AACA;AACA;;;;;SACsBA,K;;;;;yFAAf,iBAAqBI,QAArB,EAA+BC,OAA/B,EAAwCC,GAAxC;AAAA;;AAAA;AAAA;AAAA;AAAA;AACCC,YAAAA,kBADD,mCAC2BJ,oBAD3B,GACwCC,QADxC;AAGCI,YAAAA,GAHD,mCAIAD,kBAJA;AAKHE,cAAAA,QAAQ,EAAEH,GAAG,CAACI,IAAJ,KAAa,QALpB;AAMHA,cAAAA,IAAI,EAAEJ,GAAG,CAACI;AANP;AAAA,oBASkBJ,GAAG,IAAI,EATzB,EASGK,IATH,SASGA,IATH,EASSD,IATT,SASSA,IATT;;AAWL,gBAAIC,IAAI,KAAK,YAAT,KAA0BD,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,UAAtD,CAAJ,EAAuE;AACrEF,cAAAA,GAAG,CAACI,mBAAJ,GAA0BL,kBAAkB,CAACM,0BAAnB,GACtBN,kBAAkB,CAACK,mBADG,GAEtB,IAFJ;AAGD,aAJD,MAIO;AACLJ,cAAAA,GAAG,CAACI,mBAAJ,GAA0B,IAA1B;AACD;;AAjBI,6CAmBEJ,GAnBF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAsBA,SAASM,OAAT,CAAiBd,KAAjB,EAAwBK,OAAxB,EAAiC;AACtC,SAAO,IAAIJ,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI,CAACG,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChC,aAAOH,OAAO,CAAC;AAAEa,QAAAA,KAAK,EAAE,CAAT;AAAYC,QAAAA,KAAK,EAAE;AAAnB,OAAD,CAAd;AACD;;AAED,QAAMD,KAAK,GAAGE,MAAM,CAACC,IAAP,CAAYb,OAAO,CAACc,KAApB,EAA2BC,MAA3B,CAAkC,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC5D,UAAMC,WAAW,GAAGvB,KAAK,CAACwB,YAAN,CAAmBF,GAAnB,CAApB;AACA,aAAOD,GAAG,IAAIE,WAAW,IAAI,CAAnB,CAAV;AACD,KAHa,EAGX,CAHW,CAAd;AAKArB,IAAAA,OAAO,CAAC;AAAEa,MAAAA,KAAK,EAALA,KAAF;AAASC,MAAAA,KAAK,EAAE;AAAhB,KAAD,CAAP;AACD,GAXM,CAAP;AAYD;;AAEM,IAAMS,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACrB,QAAD,EAAWE,GAAX,EAAmB;AAC7D,SAAO,IAAIL,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAII,GAAG,CAACI,IAAJ,KAAa,UAAb,IAA2BJ,GAAG,CAACK,IAAJ,KAAa,YAA5C,EAA0D;AACxD,iBAAyBP,QAAQ,IAAI,EAArC;AAAA,UAAQoB,YAAR,QAAQA,YAAR;;AAEAtB,MAAAA,OAAO,CAAC;AACNwB,QAAAA,EAAE,EAAE,GADE;AAENP,QAAAA,KAAK,EAAEK;AAFD,OAAD,CAAP;AAID,KAPD,MAOO;AACLtB,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;AACF,GAXM,CAAP;AAYD,CAbM","sourcesContent":["import defaults from './defaults';\nimport isEmpty from 'lodash/isEmpty';\n\nexport const createDefaultModel = (model = {}) => new Promise((resolve) => resolve({ ...defaults, ...model }));\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = { ...defaults, ...question };\n\n const out = {\n ...normalizedQuestion,\n disabled: env.mode !== 'gather',\n mode: env.mode,\n };\n\n const { role, mode } = env || {};\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n return out;\n}\n\nexport function outcome(model, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n return resolve({ score: 0, empty: true });\n }\n\n const score = Object.keys(session.value).reduce((acc, key) => {\n const matrixValue = model.matrixValues[key];\n return acc + (matrixValue || 0);\n }, 0);\n\n resolve({ score, empty: false });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { matrixValues } = question || [];\n\n resolve({\n id: '1',\n value: matrixValues,\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["createDefaultModel","model","Promise","resolve","defaults","question","session","env","normalizedQuestion","out","disabled","mode","role","teacherInstructions","teacherInstructionsEnabled","outcome","score","empty","Object","keys","value","reduce","acc","key","matrixValue","matrixValues","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","errors","forEach","field","required"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport isEmpty from 'lodash/isEmpty';\n\nexport const createDefaultModel = (model = {}) => new Promise((resolve) => resolve({ ...defaults, ...model }));\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = { ...defaults, ...question };\n\n const out = {\n ...normalizedQuestion,\n disabled: env.mode !== 'gather',\n mode: env.mode,\n };\n\n const { role, mode } = env || {};\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n return out;\n}\n\nexport function outcome(model, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n return resolve({ score: 0, empty: true });\n }\n\n const score = Object.keys(session.value).reduce((acc, key) => {\n const matrixValue = model.matrixValues[key];\n return acc + (matrixValue || 0);\n }, 0);\n\n resolve({ score, empty: false });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { matrixValues } = question || [];\n\n resolve({\n id: '1',\n value: matrixValues,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
@@ -75,7 +75,7 @@
75
75
  }
76
76
  },
77
77
  "teacherInstructions": {
78
- "title": "EditableHtmlPluginConfigure",
78
+ "title": "EditableHtmlPluginConfigureRequired",
79
79
  "type": "object",
80
80
  "properties": {
81
81
  "inputConfiguration": {
@@ -128,6 +128,11 @@
128
128
  }
129
129
  }
130
130
  },
131
+ "required": {
132
+ "description": "Indicates if the item is required and the value cannot be empty",
133
+ "type": "boolean",
134
+ "title": "required"
135
+ },
131
136
  "settings": {
132
137
  "description": "Indicates if the item has to be displayed in the Settings Panel",
133
138
  "type": "boolean",
@@ -141,7 +146,7 @@
141
146
  }
142
147
  },
143
148
  "prompt": {
144
- "title": "EditableHtmlPluginConfigure",
149
+ "title": "EditableHtmlPluginConfigureRequired",
145
150
  "type": "object",
146
151
  "properties": {
147
152
  "inputConfiguration": {
@@ -194,6 +199,11 @@
194
199
  }
195
200
  }
196
201
  },
202
+ "required": {
203
+ "description": "Indicates if the item is required and the value cannot be empty",
204
+ "type": "boolean",
205
+ "title": "required"
206
+ },
197
207
  "settings": {
198
208
  "description": "Indicates if the item has to be displayed in the Settings Panel",
199
209
  "type": "boolean",
@@ -347,8 +357,8 @@
347
357
  }
348
358
  }
349
359
  },
350
- "EditableHtmlPluginConfigure": {
351
- "title": "EditableHtmlPluginConfigure",
360
+ "EditableHtmlPluginConfigureRequired": {
361
+ "title": "EditableHtmlPluginConfigureRequired",
352
362
  "type": "object",
353
363
  "properties": {
354
364
  "inputConfiguration": {
@@ -401,6 +411,11 @@
401
411
  }
402
412
  }
403
413
  },
414
+ "required": {
415
+ "description": "Indicates if the item is required and the value cannot be empty",
416
+ "type": "boolean",
417
+ "title": "required"
418
+ },
404
419
  "settings": {
405
420
  "description": "Indicates if the item has to be displayed in the Settings Panel",
406
421
  "type": "boolean",
@@ -94,6 +94,10 @@ Properties of the `image` object:
94
94
 
95
95
  Indicates if the plugin is disabled or not
96
96
 
97
+ ## `required` (boolean)
98
+
99
+ Indicates if the item is required and the value cannot be empty
100
+
97
101
  ## `settings` (boolean)
98
102
 
99
103
  Indicates if the item has to be displayed in the Settings Panel
@@ -142,6 +146,10 @@ Properties of the `image` object:
142
146
 
143
147
  Indicates if the plugin is disabled or not
144
148
 
149
+ ## `required` (boolean)
150
+
151
+ Indicates if the item is required and the value cannot be empty
152
+
145
153
  ## `settings` (boolean)
146
154
 
147
155
  Indicates if the item has to be displayed in the Settings Panel
@@ -264,9 +272,9 @@ Indicates if the item has to be displayed in the Settings Panel
264
272
 
265
273
  Indicates the label for the item that has to be displayed in the Settings Panel
266
274
 
267
- ## `EditableHtmlPluginConfigure` (object)
275
+ ## `EditableHtmlPluginConfigureRequired` (object)
268
276
 
269
- Properties of the `EditableHtmlPluginConfigure` object:
277
+ Properties of the `EditableHtmlPluginConfigureRequired` object:
270
278
 
271
279
  ### `inputConfiguration` (object)
272
280
 
@@ -304,6 +312,10 @@ Properties of the `image` object:
304
312
 
305
313
  Indicates if the plugin is disabled or not
306
314
 
315
+ ### `required` (boolean)
316
+
317
+ Indicates if the item is required and the value cannot be empty
318
+
307
319
  ### `settings` (boolean)
308
320
 
309
321
  Indicates if the item has to be displayed in the Settings Panel
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "0.25.1-next.0+18816ef1d",
7
+ "version": "0.25.1-next.33+8fc82ab19",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "@material-ui/core": "^3.9.2",
14
14
  "@pie-framework/pie-player-events": "^0.1.0",
15
- "@pie-lib/pie-toolbox": "1.12.1",
15
+ "@pie-lib/pie-toolbox": "1.12.2",
16
16
  "debug": "^4.1.1",
17
17
  "prop-types": "^15.6.1",
18
18
  "react": "^16.8.1",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "author": "",
23
23
  "license": "ISC",
24
- "gitHead": "18816ef1de94386135b7da95e4e932fbd20cc75a",
24
+ "gitHead": "8fc82ab19baf45aecb40e4b364a7c307a9840130",
25
25
  "main": "lib/index.js",
26
26
  "module": "src/index.js"
27
27
  }