@pie-element/multiple-choice 7.8.1-next.4 → 7.8.1-next.78
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 +1 -1
- package/configure/lib/main.js +16 -23
- package/configure/lib/main.js.map +1 -1
- package/lib/choice-input.js +24 -19
- package/lib/choice-input.js.map +1 -1
- package/lib/choice.js +3 -1
- package/lib/choice.js.map +1 -1
- package/lib/main.js +13 -7
- package/lib/main.js.map +1 -1
- package/lib/multiple-choice.js +99 -56
- package/lib/multiple-choice.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -129,7 +129,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
129
129
|
|
|
130
130
|
### Features
|
|
131
131
|
|
|
132
|
-
* add a different property in the config,
|
|
132
|
+
* add a different property in the config, to force a value ([300c664](https://github.com/pie-framework/pie-elements/commit/300c664618f46177137deef3bced2d096cdb8126))
|
|
133
133
|
|
|
134
134
|
|
|
135
135
|
|
package/configure/lib/main.js
CHANGED
|
@@ -65,41 +65,35 @@ var styles = function styles(theme) {
|
|
|
65
65
|
return {
|
|
66
66
|
promptHolder: {
|
|
67
67
|
width: '100%',
|
|
68
|
-
paddingBottom: theme.spacing.unit * 2,
|
|
69
|
-
marginBottom: theme.spacing.unit * 2
|
|
70
|
-
},
|
|
71
|
-
prompt: {
|
|
72
68
|
paddingTop: theme.spacing.unit * 2,
|
|
73
|
-
|
|
69
|
+
marginBottom: theme.spacing.unit * 2
|
|
74
70
|
},
|
|
75
71
|
rationaleHolder: {
|
|
76
|
-
|
|
72
|
+
flex: 1,
|
|
73
|
+
marginTop: theme.spacing.unit * 1.5,
|
|
74
|
+
paddingTop: theme.spacing.unit * 2,
|
|
75
|
+
marginLeft: theme.spacing.unit * 3.5
|
|
77
76
|
},
|
|
78
77
|
accessibilityHolder: {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
},
|
|
84
|
-
accessibility: {
|
|
85
|
-
paddingTop: theme.spacing.unit * 2
|
|
78
|
+
flex: 1,
|
|
79
|
+
marginTop: theme.spacing.unit * 1.5,
|
|
80
|
+
paddingTop: theme.spacing.unit * 2,
|
|
81
|
+
marginLeft: theme.spacing.unit * 3.5
|
|
86
82
|
},
|
|
87
83
|
choiceConfigurationHolder: {
|
|
88
84
|
display: 'flex',
|
|
89
85
|
flexDirection: 'column',
|
|
90
|
-
|
|
86
|
+
marginBottom: theme.spacing.unit
|
|
91
87
|
},
|
|
92
88
|
choiceConfiguration: {
|
|
93
|
-
width: '100%'
|
|
94
|
-
paddingTop: theme.spacing.unit * 2,
|
|
95
|
-
paddingBottom: theme.spacing.unit * 2
|
|
89
|
+
width: '100%'
|
|
96
90
|
},
|
|
97
91
|
switchElement: {
|
|
98
92
|
justifyContent: 'space-between',
|
|
99
93
|
margin: 0
|
|
100
94
|
},
|
|
101
95
|
addButton: {
|
|
102
|
-
marginTop: theme.spacing.unit
|
|
96
|
+
marginTop: theme.spacing.unit,
|
|
103
97
|
"float": 'right'
|
|
104
98
|
},
|
|
105
99
|
disableButton: {
|
|
@@ -115,8 +109,7 @@ var styles = function styles(theme) {
|
|
|
115
109
|
},
|
|
116
110
|
flexContainer: {
|
|
117
111
|
display: 'flex',
|
|
118
|
-
alignItems: 'center'
|
|
119
|
-
marginBottom: theme.spacing.unit
|
|
112
|
+
alignItems: 'center'
|
|
120
113
|
},
|
|
121
114
|
titleText: {
|
|
122
115
|
fontFamily: 'Cerebri Sans',
|
|
@@ -132,7 +125,7 @@ var styles = function styles(theme) {
|
|
|
132
125
|
},
|
|
133
126
|
errorText: {
|
|
134
127
|
fontSize: theme.typography.fontSize - 2,
|
|
135
|
-
color:
|
|
128
|
+
color: theme.palette.error.main,
|
|
136
129
|
paddingTop: theme.spacing.unit
|
|
137
130
|
}
|
|
138
131
|
};
|
|
@@ -270,7 +263,7 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
270
263
|
Properties: panelProperties
|
|
271
264
|
}
|
|
272
265
|
})
|
|
273
|
-
},
|
|
266
|
+
}, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
274
267
|
label: teacherInstructions.label,
|
|
275
268
|
className: classes.promptHolder
|
|
276
269
|
}, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
@@ -419,7 +412,7 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
419
412
|
variant: "contained",
|
|
420
413
|
color: "primary",
|
|
421
414
|
onClick: onAddChoice
|
|
422
|
-
}, addChoiceButton.label)))
|
|
415
|
+
}, addChoiceButton.label)));
|
|
423
416
|
});
|
|
424
417
|
|
|
425
418
|
var Main = /*#__PURE__*/function (_React$Component) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","radio","dropdown","MAX_CHOICES","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","rationaleHolder","accessibilityHolder","rationale","accessibility","choiceConfigurationHolder","display","flexDirection","alignItems","choiceConfiguration","switchElement","justifyContent","margin","addButton","marginTop","disableButton","cursor","pointerEvents","backgroundColor","color","disabled","flexContainer","titleText","fontFamily","fontSize","typography","lineHeight","marginRight","tooltip","whiteSpace","maxWidth","errorText","Design","props","classes","model","configuration","onPromptChanged","onChoiceChanged","onRemoveChoice","onAddChoice","imageSupport","uploadSoundSupport","onChangeModel","onConfigurationChanged","onTeacherInstructionsChanged","addChoiceButton","feedback","deleteChoice","choiceMode","choicePrefix","partialScoring","lockChoiceOrder","teacherInstructions","studentInstructions","scoringType","sequentialChoiceLabels","settingsPanelDisabled","choicesLayout","spellCheck","gridColumns","maxImageWidth","maxImageHeight","withRubric","maxAnswerChoices","limitChoicesNumber","teacherInstructionsEnabled","rationaleEnabled","accessibilityLabelsEnabled","feedbackEnabled","promptEnabled","spellCheckEnabled","choices","errors","toolbarEditorPosition","choicesErrors","correctResponseError","answerChoicesError","nrOfColumnsAvailable","length","Array","from","_","i","labelPlugins","audio","video","toolbarOpts","position","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","addChoiceButtonTooltip","panelSettings","label","panelProperties","studentInstructionsEnabled","rubricEnabled","Settings","Properties","language","map","choice","index","c","value","root","Main","showWarning","onModelChanged","minAnswerChoices","setState","splice","push","utils","firstAvailableIndex","type","correct","key","correctFound","state","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/editable-html';\nimport {\n AlertDialog,\n InputContainer,\n ChoiceConfiguration,\n settings,\n layout,\n choiceUtils as utils,\n} from '@pie-lib/config-ui';\nimport { color } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport merge from 'lodash/merge';\nimport { generateValidationMessage } from './utils';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst MAX_CHOICES = 9;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n rationaleHolder: {\n width: '70%',\n },\n accessibilityHolder: {\n width: '70%',\n },\n rationale: {\n paddingTop: theme.spacing.unit * 2,\n },\n accessibility: {\n paddingTop: theme.spacing.unit * 2,\n },\n choiceConfigurationHolder: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n choiceConfiguration: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n marginTop: theme.spacing.unit * 3,\n float: 'right',\n },\n disableButton: {\n cursor: 'not-allowed',\n pointerEvents: 'all',\n backgroundColor: color.disabled(),\n '&:hover': {\n backgroundColor: color.disabled(),\n },\n '&:focus': {\n backgroundColor: color.disabled(),\n },\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing.unit,\n },\n titleText: {\n fontFamily: 'Cerebri Sans',\n fontSize: theme.typography.fontSize + 2,\n lineHeight: '19px',\n color: '#495B8F',\n marginRight: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: 'red',\n paddingTop: theme.spacing.unit,\n },\n});\n\nconst Design = withStyles(styles)((props) => {\n const {\n classes,\n model,\n configuration,\n onPromptChanged,\n onChoiceChanged,\n onRemoveChoice,\n onAddChoice,\n imageSupport,\n uploadSoundSupport,\n onChangeModel,\n onConfigurationChanged,\n onTeacherInstructionsChanged,\n } = props;\n\n const {\n prompt = {},\n addChoiceButton = {},\n feedback = {},\n deleteChoice = {},\n choiceMode = {},\n choicePrefix = {},\n partialScoring = {},\n lockChoiceOrder = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n accessibility = {},\n scoringType = {},\n sequentialChoiceLabels = {},\n settingsPanelDisabled,\n choicesLayout,\n spellCheck = {},\n gridColumns,\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n } = configuration || {};\n let { maxAnswerChoices } = configuration || {};\n const {\n limitChoicesNumber,\n teacherInstructionsEnabled,\n rationaleEnabled,\n accessibilityLabelsEnabled,\n feedbackEnabled,\n promptEnabled,\n spellCheckEnabled,\n choices,\n errors,\n toolbarEditorPosition,\n } = model || {};\n\n const { choicesErrors, correctResponseError, answerChoicesError } = errors || {};\n const nrOfColumnsAvailable = choices?.length ? Array.from({ length: choices.length }, (_, i) => `${i + 1}`) : [];\n\n const labelPlugins = {\n audio: { disabled: true },\n video: { disabled: true },\n };\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n // if old property is used, set maxAnswerChoices to 9\n if (limitChoicesNumber) {\n maxAnswerChoices = MAX_CHOICES;\n }\n\n const validationMessage = generateValidationMessage(configuration);\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n const addChoiceButtonTooltip =\n maxAnswerChoices && choices?.length >= maxAnswerChoices ? `Only ${maxAnswerChoices} allowed maximum` : '';\n\n const panelSettings = {\n choiceMode: choiceMode.settings && radio(choiceMode.label, ['checkbox', 'radio']),\n 'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),\n choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),\n gridColumns:\n choicesLayout.settings &&\n model.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.length > 0 &&\n dropdown(gridColumns.label, nrOfColumnsAvailable),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n return (\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChangeModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n <div>\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 nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\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 nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.titleText}>Choices</Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n {choices.map((choice, index) => (\n <div key={`choice-${index}`} className={classes.choiceConfigurationHolder}>\n <ChoiceConfiguration\n key={index}\n index={index + 1}\n useLetterOrdering={model.choicePrefix === 'letters'}\n className={classes.choiceConfiguration}\n mode={model.choiceMode}\n data={choice}\n defaultFeedback={{}}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onDelete={() => onRemoveChoice(index)}\n onChange={(c) => onChoiceChanged(index, c)}\n allowFeedBack={feedbackEnabled}\n allowDelete={deleteChoice.settings}\n noLabels\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n error={choicesErrors?.[choice.value] || null}\n noCorrectAnswerError={correctResponseError}\n maxImageWidth={(maxImageWidth && maxImageWidth.choices) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choices) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n\n {rationaleEnabled && (\n <InputContainer key={`rationale-${index}`} label={rationale.label} className={classes.rationaleHolder}>\n <EditableHtml\n className={classes.rationale}\n markup={choice.rationale || ''}\n onChange={(c) => onChoiceChanged(index, { ...choice, rationale: c })}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n pluginProps={labelPlugins}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {accessibilityLabelsEnabled && (\n <InputContainer\n key={`accessibility-${index}`}\n label={accessibility.label}\n className={classes.accessibilityHolder}\n >\n <EditableHtml\n className={classes.accessibility}\n markup={choice.accessibility || ''}\n onChange={(c) => onChoiceChanged(index, { ...choice, accessibility: c })}\n imageSupport={imageSupport}\n pluginProps={labelPlugins}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.choices) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choices) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n </div>\n ))}\n\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n {answerChoicesError && <div className={classes.errorText}>{answerChoicesError}</div>}\n\n {addChoiceButton.settings && (\n <Tooltip title={addChoiceButtonTooltip} classes={{ tooltip: classes.tooltip }}>\n <Button\n classes={{ root: maxAnswerChoices && choices?.length >= maxAnswerChoices && classes.disableButton }}\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={onAddChoice}\n >\n {addChoiceButton.label}\n </Button>\n </Tooltip>\n )}\n </div>\n </layout.ConfigLayout>\n );\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: 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 state = { showWarning: false };\n\n onRemoveChoice = (index) => {\n const { model, configuration, onModelChanged } = this.props;\n const { minAnswerChoices } = configuration || {};\n\n if (minAnswerChoices && model.choices.length === minAnswerChoices) {\n this.setState({ showWarning: true });\n\n return;\n }\n\n model.choices.splice(index, 1);\n onModelChanged(model);\n };\n\n onAddChoice = () => {\n const { model, configuration, onModelChanged } = this.props;\n let { maxAnswerChoices } = configuration || {};\n const { limitChoicesNumber } = model || {};\n\n // if old property is used, set maxAnswerChoices to 9\n if (limitChoicesNumber) {\n maxAnswerChoices = MAX_CHOICES;\n }\n\n if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {\n return;\n }\n\n model.choices.push({\n label: '',\n value: utils.firstAvailableIndex(\n model.choices.map((c) => c.value),\n 0,\n ),\n feedback: { type: 'none' },\n });\n\n onModelChanged(model);\n };\n\n onChoiceChanged = (index, choice) => {\n const { model, onModelChanged } = this.props;\n\n if (choice.correct && model.choiceMode === 'radio') {\n model.choices = model.choices.map((c) => merge({}, c, { correct: false }));\n }\n\n model.choices.splice(index, 1, choice);\n onModelChanged(model);\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({\n ...this.props.model,\n prompt,\n });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({\n ...this.props.model,\n teacherInstructions,\n });\n };\n\n onModelChanged = (model, key) => {\n const { onModelChanged } = this.props;\n\n switch (key) {\n case 'choiceMode': {\n let value = model.choiceMode;\n\n if (value === 'radio') {\n let correctFound = false;\n\n model.choices = model.choices.map((c) => {\n if (correctFound) {\n c.correct = false;\n\n return c;\n }\n\n if (c.correct) {\n correctFound = true;\n }\n\n return c;\n });\n }\n\n onModelChanged(model, true);\n break;\n }\n\n default:\n onModelChanged(model);\n break;\n }\n };\n\n render() {\n const { configuration: { minAnswerChoices } = {} } = this.props;\n const { showWarning } = this.state;\n\n return (\n <React.Fragment>\n <AlertDialog\n open={showWarning}\n title=\"Warning\"\n text={`There can't be less than ${minAnswerChoices || 0} choices.`}\n onConfirm={() => this.setState({ showWarning: false })}\n />\n <Design\n {...this.props}\n onChangeModel={this.onModelChanged}\n onRemoveChoice={this.onRemoveChoice}\n onChoiceChanged={this.onChoiceChanged}\n onAddChoice={this.onAddChoice}\n onPromptChanged={this.onPromptChanged}\n onTeacherInstructionsChanged={this.onTeacherInstructionsChanged}\n />\n </React.Fragment>\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","dropdown","MAX_CHOICES","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","rationaleHolder","flex","marginTop","marginLeft","accessibilityHolder","choiceConfigurationHolder","display","flexDirection","choiceConfiguration","switchElement","justifyContent","margin","addButton","disableButton","cursor","pointerEvents","backgroundColor","color","disabled","flexContainer","alignItems","titleText","fontFamily","fontSize","typography","lineHeight","marginRight","tooltip","whiteSpace","maxWidth","errorText","palette","error","main","Design","props","classes","model","configuration","onPromptChanged","onChoiceChanged","onRemoveChoice","onAddChoice","imageSupport","uploadSoundSupport","onChangeModel","onConfigurationChanged","onTeacherInstructionsChanged","prompt","addChoiceButton","feedback","deleteChoice","choiceMode","choicePrefix","partialScoring","lockChoiceOrder","teacherInstructions","studentInstructions","rationale","accessibility","scoringType","sequentialChoiceLabels","settingsPanelDisabled","choicesLayout","spellCheck","gridColumns","maxImageWidth","maxImageHeight","withRubric","maxAnswerChoices","limitChoicesNumber","teacherInstructionsEnabled","rationaleEnabled","accessibilityLabelsEnabled","feedbackEnabled","promptEnabled","spellCheckEnabled","choices","errors","toolbarEditorPosition","choicesErrors","correctResponseError","answerChoicesError","nrOfColumnsAvailable","length","Array","from","_","i","labelPlugins","audio","video","toolbarOpts","position","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","addChoiceButtonTooltip","panelSettings","label","panelProperties","studentInstructionsEnabled","rubricEnabled","Settings","Properties","language","map","choice","index","c","value","root","Main","showWarning","onModelChanged","minAnswerChoices","setState","splice","push","utils","firstAvailableIndex","type","correct","key","correctFound","state","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/editable-html';\nimport {\n AlertDialog,\n InputContainer,\n ChoiceConfiguration,\n settings,\n layout,\n choiceUtils as utils,\n} from '@pie-lib/config-ui';\nimport { color } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport merge from 'lodash/merge';\nimport { generateValidationMessage } from './utils';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst MAX_CHOICES = 9;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n rationaleHolder: {\n flex: 1,\n marginTop: theme.spacing.unit * 1.5,\n paddingTop: theme.spacing.unit * 2,\n marginLeft: theme.spacing.unit * 3.5,\n },\n accessibilityHolder: {\n flex: 1,\n marginTop: theme.spacing.unit * 1.5,\n paddingTop: theme.spacing.unit * 2,\n marginLeft: theme.spacing.unit * 3.5,\n },\n choiceConfigurationHolder: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: theme.spacing.unit,\n },\n choiceConfiguration: {\n width: '100%',\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n marginTop: theme.spacing.unit,\n float: 'right',\n },\n disableButton: {\n cursor: 'not-allowed',\n pointerEvents: 'all',\n backgroundColor: color.disabled(),\n '&:hover': {\n backgroundColor: color.disabled(),\n },\n '&:focus': {\n backgroundColor: color.disabled(),\n },\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n titleText: {\n fontFamily: 'Cerebri Sans',\n fontSize: theme.typography.fontSize + 2,\n lineHeight: '19px',\n color: '#495B8F',\n marginRight: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n 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 onChoiceChanged,\n onRemoveChoice,\n onAddChoice,\n imageSupport,\n uploadSoundSupport,\n onChangeModel,\n onConfigurationChanged,\n onTeacherInstructionsChanged,\n } = props;\n\n const {\n prompt = {},\n addChoiceButton = {},\n feedback = {},\n deleteChoice = {},\n choiceMode = {},\n choicePrefix = {},\n partialScoring = {},\n lockChoiceOrder = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n accessibility = {},\n scoringType = {},\n sequentialChoiceLabels = {},\n settingsPanelDisabled,\n choicesLayout,\n spellCheck = {},\n gridColumns,\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n } = configuration || {};\n let { maxAnswerChoices } = configuration || {};\n const {\n limitChoicesNumber,\n teacherInstructionsEnabled,\n rationaleEnabled,\n accessibilityLabelsEnabled,\n feedbackEnabled,\n promptEnabled,\n spellCheckEnabled,\n choices,\n errors,\n toolbarEditorPosition,\n } = model || {};\n\n const { choicesErrors, correctResponseError, answerChoicesError } = errors || {};\n const nrOfColumnsAvailable = choices?.length ? Array.from({ length: choices.length }, (_, i) => `${i + 1}`) : [];\n\n const labelPlugins = {\n audio: { disabled: true },\n video: { disabled: true },\n };\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n // if old property is used, set maxAnswerChoices to 9\n if (limitChoicesNumber) {\n maxAnswerChoices = MAX_CHOICES;\n }\n\n const validationMessage = generateValidationMessage(configuration);\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n const addChoiceButtonTooltip =\n maxAnswerChoices && choices?.length >= maxAnswerChoices ? `Only ${maxAnswerChoices} allowed maximum` : '';\n\n const panelSettings = {\n choiceMode: choiceMode.settings && radio(choiceMode.label, ['checkbox', 'radio']),\n 'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),\n choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),\n gridColumns:\n choicesLayout.settings &&\n model.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.length > 0 &&\n dropdown(gridColumns.label, nrOfColumnsAvailable),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n return (\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChangeModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\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 nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\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 nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.titleText}>Choices</Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n {choices.map((choice, index) => (\n <div key={`choice-${index}`} className={classes.choiceConfigurationHolder}>\n <ChoiceConfiguration\n key={index}\n index={index + 1}\n useLetterOrdering={model.choicePrefix === 'letters'}\n className={classes.choiceConfiguration}\n mode={model.choiceMode}\n data={choice}\n defaultFeedback={{}}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onDelete={() => onRemoveChoice(index)}\n onChange={(c) => onChoiceChanged(index, c)}\n allowFeedBack={feedbackEnabled}\n allowDelete={deleteChoice.settings}\n noLabels\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n error={choicesErrors?.[choice.value] || null}\n noCorrectAnswerError={correctResponseError}\n maxImageWidth={(maxImageWidth && maxImageWidth.choices) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choices) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n\n {rationaleEnabled && (\n <InputContainer key={`rationale-${index}`} label={rationale.label} className={classes.rationaleHolder}>\n <EditableHtml\n className={classes.rationale}\n markup={choice.rationale || ''}\n onChange={(c) => onChoiceChanged(index, { ...choice, rationale: c })}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n pluginProps={labelPlugins}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {accessibilityLabelsEnabled && (\n <InputContainer\n key={`accessibility-${index}`}\n label={accessibility.label}\n className={classes.accessibilityHolder}\n >\n <EditableHtml\n className={classes.accessibility}\n markup={choice.accessibility || ''}\n onChange={(c) => onChoiceChanged(index, { ...choice, accessibility: c })}\n imageSupport={imageSupport}\n pluginProps={labelPlugins}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.choices) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choices) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n </div>\n ))}\n\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n {answerChoicesError && <div className={classes.errorText}>{answerChoicesError}</div>}\n\n {addChoiceButton.settings && (\n <Tooltip title={addChoiceButtonTooltip} classes={{ tooltip: classes.tooltip }}>\n <Button\n classes={{ root: maxAnswerChoices && choices?.length >= maxAnswerChoices && classes.disableButton }}\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={onAddChoice}\n >\n {addChoiceButton.label}\n </Button>\n </Tooltip>\n )}\n </layout.ConfigLayout>\n );\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: 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 state = { showWarning: false };\n\n onRemoveChoice = (index) => {\n const { model, configuration, onModelChanged } = this.props;\n const { minAnswerChoices } = configuration || {};\n\n if (minAnswerChoices && model.choices.length === minAnswerChoices) {\n this.setState({ showWarning: true });\n\n return;\n }\n\n model.choices.splice(index, 1);\n onModelChanged(model);\n };\n\n onAddChoice = () => {\n const { model, configuration, onModelChanged } = this.props;\n let { maxAnswerChoices } = configuration || {};\n const { limitChoicesNumber } = model || {};\n\n // if old property is used, set maxAnswerChoices to 9\n if (limitChoicesNumber) {\n maxAnswerChoices = MAX_CHOICES;\n }\n\n if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {\n return;\n }\n\n model.choices.push({\n label: '',\n value: utils.firstAvailableIndex(\n model.choices.map((c) => c.value),\n 0,\n ),\n feedback: { type: 'none' },\n });\n\n onModelChanged(model);\n };\n\n onChoiceChanged = (index, choice) => {\n const { model, onModelChanged } = this.props;\n\n if (choice.correct && model.choiceMode === 'radio') {\n model.choices = model.choices.map((c) => merge({}, c, { correct: false }));\n }\n\n model.choices.splice(index, 1, choice);\n onModelChanged(model);\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({\n ...this.props.model,\n prompt,\n });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({\n ...this.props.model,\n teacherInstructions,\n });\n };\n\n onModelChanged = (model, key) => {\n const { onModelChanged } = this.props;\n\n switch (key) {\n case 'choiceMode': {\n let value = model.choiceMode;\n\n if (value === 'radio') {\n let correctFound = false;\n\n model.choices = model.choices.map((c) => {\n if (correctFound) {\n c.correct = false;\n\n return c;\n }\n\n if (c.correct) {\n correctFound = true;\n }\n\n return c;\n });\n }\n\n onModelChanged(model, true);\n break;\n }\n\n default:\n onModelChanged(model);\n break;\n }\n };\n\n render() {\n const { configuration: { minAnswerChoices } = {} } = this.props;\n const { showWarning } = this.state;\n\n return (\n <React.Fragment>\n <AlertDialog\n open={showWarning}\n title=\"Warning\"\n text={`There can't be less than ${minAnswerChoices || 0} choices.`}\n onConfirm={() => this.setState({ showWarning: false })}\n />\n <Design\n {...this.props}\n onChangeModel={this.onModelChanged}\n onRemoveChoice={this.onRemoveChoice}\n onChoiceChanged={this.onChoiceChanged}\n onAddChoice={this.onAddChoice}\n onPromptChanged={this.onPromptChanged}\n onTeacherInstructionsChanged={this.onTeacherInstructionsChanged}\n />\n </React.Fragment>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
package/lib/choice-input.js
CHANGED
|
@@ -51,7 +51,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
51
51
|
|
|
52
52
|
var CLASS_NAME = 'multiple-choice-component';
|
|
53
53
|
|
|
54
|
-
var styleSheet = function styleSheet() {
|
|
54
|
+
var styleSheet = function styleSheet(theme) {
|
|
55
55
|
return {
|
|
56
56
|
row: {
|
|
57
57
|
display: 'flex',
|
|
@@ -68,7 +68,7 @@ var styleSheet = function styleSheet() {
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
horizontalLayout: (0, _defineProperty2["default"])({}, "& .".concat(CLASS_NAME), {
|
|
71
|
-
paddingRight:
|
|
71
|
+
paddingRight: theme.spacing.unit
|
|
72
72
|
})
|
|
73
73
|
};
|
|
74
74
|
};
|
|
@@ -125,7 +125,8 @@ var StyledCheckbox = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
|
125
125
|
checked = props.checked,
|
|
126
126
|
onChange = props.onChange,
|
|
127
127
|
disabled = props.disabled,
|
|
128
|
-
accessibility = props.accessibility
|
|
128
|
+
accessibility = props.accessibility,
|
|
129
|
+
value = props.value;
|
|
129
130
|
|
|
130
131
|
var key = function key(k) {
|
|
131
132
|
return correctness ? "".concat(correctness, "-").concat(k) : k;
|
|
@@ -139,10 +140,12 @@ var StyledCheckbox = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
|
139
140
|
var miniProps = {
|
|
140
141
|
checked: checked,
|
|
141
142
|
onChange: onChange,
|
|
142
|
-
disabled: disabled
|
|
143
|
+
disabled: disabled,
|
|
144
|
+
value: value
|
|
143
145
|
};
|
|
144
146
|
return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], (0, _extends2["default"])({
|
|
145
|
-
"aria-label": accessibility
|
|
147
|
+
"aria-label": accessibility || value,
|
|
148
|
+
"aria-checked": checked
|
|
146
149
|
}, miniProps, {
|
|
147
150
|
className: CLASS_NAME,
|
|
148
151
|
classes: {
|
|
@@ -159,7 +162,8 @@ var StyledRadio = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
|
159
162
|
checked = props.checked,
|
|
160
163
|
onChange = props.onChange,
|
|
161
164
|
disabled = props.disabled,
|
|
162
|
-
accessibility = props.accessibility
|
|
165
|
+
accessibility = props.accessibility,
|
|
166
|
+
value = props.value;
|
|
163
167
|
|
|
164
168
|
var key = function key(k) {
|
|
165
169
|
return correctness ? "".concat(correctness, "-").concat(k) : k;
|
|
@@ -173,10 +177,12 @@ var StyledRadio = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
|
173
177
|
var miniProps = {
|
|
174
178
|
checked: checked,
|
|
175
179
|
onChange: onChange,
|
|
176
|
-
disabled: disabled
|
|
180
|
+
disabled: disabled,
|
|
181
|
+
value: value
|
|
177
182
|
};
|
|
178
183
|
return /*#__PURE__*/_react["default"].createElement(_Radio["default"], (0, _extends2["default"])({
|
|
179
|
-
"aria-label": accessibility
|
|
184
|
+
"aria-label": accessibility || value,
|
|
185
|
+
"aria-checked": checked
|
|
180
186
|
}, miniProps, {
|
|
181
187
|
className: CLASS_NAME,
|
|
182
188
|
classes: {
|
|
@@ -204,8 +210,9 @@ var ChoiceInput = /*#__PURE__*/function (_React$Component) {
|
|
|
204
210
|
|
|
205
211
|
(0, _createClass2["default"])(ChoiceInput, [{
|
|
206
212
|
key: "onToggleChoice",
|
|
207
|
-
value: function onToggleChoice() {
|
|
208
|
-
this.props.onChange(
|
|
213
|
+
value: function onToggleChoice(event) {
|
|
214
|
+
this.props.onChange(event);
|
|
215
|
+
this.props.updateSession({
|
|
209
216
|
value: this.props.value,
|
|
210
217
|
selected: !this.props.checked
|
|
211
218
|
});
|
|
@@ -219,7 +226,6 @@ var ChoiceInput = /*#__PURE__*/function (_React$Component) {
|
|
|
219
226
|
displayKey = _this$props.displayKey,
|
|
220
227
|
feedback = _this$props.feedback,
|
|
221
228
|
label = _this$props.label,
|
|
222
|
-
checked = _this$props.checked,
|
|
223
229
|
correctness = _this$props.correctness,
|
|
224
230
|
classes = _this$props.classes,
|
|
225
231
|
className = _this$props.className,
|
|
@@ -227,7 +233,9 @@ var ChoiceInput = /*#__PURE__*/function (_React$Component) {
|
|
|
227
233
|
accessibility = _this$props.accessibility,
|
|
228
234
|
hideTick = _this$props.hideTick,
|
|
229
235
|
isEvaluateMode = _this$props.isEvaluateMode,
|
|
230
|
-
choicesLayout = _this$props.choicesLayout
|
|
236
|
+
choicesLayout = _this$props.choicesLayout,
|
|
237
|
+
value = _this$props.value,
|
|
238
|
+
checked = _this$props.checked;
|
|
231
239
|
var Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;
|
|
232
240
|
var classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';
|
|
233
241
|
var holderClassNames = (0, _classnames["default"])(classes.checkboxHolder, (0, _defineProperty2["default"])({}, classes.horizontalLayout, choicesLayout === 'horizontal'));
|
|
@@ -240,19 +248,16 @@ var ChoiceInput = /*#__PURE__*/function (_React$Component) {
|
|
|
240
248
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
241
249
|
className: (0, _classnames["default"])(holderClassNames, 'checkbox-holder')
|
|
242
250
|
}, /*#__PURE__*/_react["default"].createElement(StyledFormControlLabel, {
|
|
243
|
-
|
|
244
|
-
|
|
251
|
+
label: displayKey ? displayKey + ". ".concat(label) : " ".concat(label),
|
|
252
|
+
value: value,
|
|
245
253
|
control: /*#__PURE__*/_react["default"].createElement(Tag, {
|
|
246
254
|
accessibility: accessibility,
|
|
255
|
+
disabled: disabled,
|
|
247
256
|
checked: checked,
|
|
248
257
|
correctness: correctness,
|
|
258
|
+
value: value,
|
|
249
259
|
onChange: this.onToggleChoice
|
|
250
260
|
})
|
|
251
|
-
}), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
252
|
-
className: "label",
|
|
253
|
-
onClick: this.onToggleChoice,
|
|
254
|
-
prompt: label,
|
|
255
|
-
tagName: "span"
|
|
256
261
|
}))), rationale && /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
257
262
|
className: "rationale",
|
|
258
263
|
defaultClassName: "rationale",
|
package/lib/choice-input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/choice-input.jsx"],"names":["CLASS_NAME","styleSheet","row","display","alignItems","backgroundColor","color","background","checkboxHolder","flex","text","horizontalLayout","paddingRight","formStyleSheet","label","StyledFormControlLabel","name","props","classes","colorStyle","varName","fallback","inputStyles","correct","disabled","incorrect","root","primaryLight","checked","primary","opacity","cursor","pointerEvents","StyledCheckbox","correctness","onChange","accessibility","key","k","resolved","miniProps","StyledRadio","ChoiceInput","onToggleChoice","bind","value","selected","choiceMode","displayKey","feedback","className","rationale","hideTick","isEvaluateMode","choicesLayout","Tag","classSuffix","holderClassNames","React","Component","PropTypes","oneOf","string","isRequired","bool","func","object"],"mappings":"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","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/render-ui';\nimport FeedbackTick from './feedback-tick';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst styleSheet = () => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n },\n },\n horizontalLayout: {\n [`& .${CLASS_NAME}`]: {\n paddingRight: '8px',\n },\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => <FormControlLabel {...props} classes={{ label: props.classes.label }} />);\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle('incorrect-disabled-color', color.disabled()),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, accessibility } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n return (\n <Checkbox\n aria-label={accessibility}\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, accessibility } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n\n return (\n <Radio\n aria-label={accessibility}\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n accessibility: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n hideTick: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n };\n\n static defaultProps = {\n rationale: null,\n accessibility: null,\n checked: false,\n isEvaluateMode: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n }\n\n onToggleChoice() {\n this.props.onChange({\n value: this.props.value,\n selected: !this.props.checked,\n });\n }\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n checked,\n correctness,\n classes,\n className,\n rationale,\n accessibility,\n hideTick,\n isEvaluateMode,\n choicesLayout,\n } = this.props;\n\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n const holderClassNames = classNames(classes.checkboxHolder, {\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n });\n\n return (\n <div className={classNames(className, 'corespring-' + classSuffix, 'choice-input')}>\n <div className={classes.row}>\n {!hideTick && isEvaluateMode && <FeedbackTick correctness={correctness} />}\n <div className={classNames(holderClassNames, 'checkbox-holder')}>\n <StyledFormControlLabel\n disabled={disabled}\n label={displayKey ? displayKey + '. ' : ''}\n control={\n <Tag\n accessibility={accessibility}\n checked={checked}\n correctness={correctness}\n onChange={this.onToggleChoice}\n />\n }\n />\n <PreviewPrompt className=\"label\" onClick={this.onToggleChoice} prompt={label} tagName=\"span\" />\n </div>\n </div>\n {rationale && <PreviewPrompt className=\"rationale\" defaultClassName=\"rationale\" prompt={rationale} />}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}
|
|
1
|
+
{"version":3,"sources":["../src/choice-input.jsx"],"names":["CLASS_NAME","styleSheet","theme","row","display","alignItems","backgroundColor","color","background","checkboxHolder","flex","text","horizontalLayout","paddingRight","spacing","unit","formStyleSheet","label","StyledFormControlLabel","name","props","classes","colorStyle","varName","fallback","inputStyles","correct","disabled","incorrect","root","primaryLight","checked","primary","opacity","cursor","pointerEvents","StyledCheckbox","correctness","onChange","accessibility","value","key","k","resolved","miniProps","StyledRadio","ChoiceInput","onToggleChoice","bind","event","updateSession","selected","choiceMode","displayKey","feedback","className","rationale","hideTick","isEvaluateMode","choicesLayout","Tag","classSuffix","holderClassNames","React","Component","PropTypes","oneOf","string","isRequired","bool","func","object"],"mappings":"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","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/render-ui';\nimport FeedbackTick from './feedback-tick';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst styleSheet = (theme) => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n },\n },\n horizontalLayout: {\n [`& .${CLASS_NAME}`]: {\n paddingRight: theme.spacing.unit,\n },\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => <FormControlLabel {...props} classes={{ label: props.classes.label }} />);\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle('incorrect-disabled-color', color.disabled()),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, accessibility, value } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled, value };\n\n return (\n <Checkbox\n aria-label={accessibility || value}\n aria-checked={checked}\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, accessibility, value } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled, value };\n\n return (\n <Radio\n aria-label={accessibility || value}\n aria-checked={checked}\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n accessibility: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n hideTick: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n };\n\n static defaultProps = {\n rationale: null,\n accessibility: null,\n checked: false,\n isEvaluateMode: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n }\n\n onToggleChoice(event) {\n this.props.onChange(event);\n this.props.updateSession({\n value: this.props.value,\n selected: !this.props.checked,\n });\n }\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n correctness,\n classes,\n className,\n rationale,\n accessibility,\n hideTick,\n isEvaluateMode,\n choicesLayout,\n value,\n checked,\n } = this.props;\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n const holderClassNames = classNames(classes.checkboxHolder, {\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n });\n\n return (\n <div className={classNames(className, 'corespring-' + classSuffix, 'choice-input')}>\n <div className={classes.row}>\n {!hideTick && isEvaluateMode && <FeedbackTick correctness={correctness} />}\n <div className={classNames(holderClassNames, 'checkbox-holder')}>\n <StyledFormControlLabel\n label={displayKey ? displayKey + `. ${label}` : ` ${label}`}\n value={value}\n control={\n <Tag\n accessibility={accessibility}\n disabled={disabled}\n checked={checked}\n correctness={correctness}\n value={value}\n onChange={this.onToggleChoice}\n />\n }\n />\n </div>\n </div>\n {rationale && <PreviewPrompt className=\"rationale\" defaultClassName=\"rationale\" prompt={rationale} />}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}
|
package/lib/choice.js
CHANGED
|
@@ -86,7 +86,8 @@ var Choice = /*#__PURE__*/function (_React$Component) {
|
|
|
86
86
|
displayKey = _this$props2.displayKey,
|
|
87
87
|
classes = _this$props2.classes,
|
|
88
88
|
choicesLayout = _this$props2.choicesLayout,
|
|
89
|
-
gridColumns = _this$props2.gridColumns
|
|
89
|
+
gridColumns = _this$props2.gridColumns,
|
|
90
|
+
updateSession = _this$props2.updateSession;
|
|
90
91
|
var choiceClass = 'choice' + (index === choicesLength - 1 ? ' last' : '');
|
|
91
92
|
var feedback = !isEvaluateMode || showCorrect ? '' : choice.feedback;
|
|
92
93
|
|
|
@@ -99,6 +100,7 @@ var Choice = /*#__PURE__*/function (_React$Component) {
|
|
|
99
100
|
displayKey: displayKey,
|
|
100
101
|
choicesLayout: choicesLayout,
|
|
101
102
|
gridColumns: gridColumns,
|
|
103
|
+
updateSession: updateSession,
|
|
102
104
|
onChange: this.onChange,
|
|
103
105
|
isEvaluateMode: isEvaluateMode
|
|
104
106
|
});
|
package/lib/choice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/choice.jsx"],"names":["Choice","choice","props","disabled","onChoiceChanged","index","choicesLength","showCorrect","isEvaluateMode","choiceMode","checked","correctness","displayKey","classes","choicesLayout","gridColumns","choiceClass","feedback","choiceProps","onChange","names","noBorder","horizontalLayout","React","Component","propTypes","PropTypes","oneOf","object","bool","isRequired","func","number","string","paddingTop","paddingBottom","borderBottom","paddingRight","marginRight"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,M;;;;;;;;;;;;;;;iGACA,UAACC,MAAD,EAAY;AACrB,wBAAsC,MAAKC,KAA3C;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,eAAlB,eAAkBA,eAAlB;;AAEA,UAAI,CAACD,QAAL,EAAe;AACbC,QAAAA,eAAe,CAACH,MAAD,CAAf;AACD;AACF,K;;;;;;WAED,kBAAS;AAAA;;AACP,
|
|
1
|
+
{"version":3,"sources":["../src/choice.jsx"],"names":["Choice","choice","props","disabled","onChoiceChanged","index","choicesLength","showCorrect","isEvaluateMode","choiceMode","checked","correctness","displayKey","classes","choicesLayout","gridColumns","updateSession","choiceClass","feedback","choiceProps","onChange","names","noBorder","horizontalLayout","React","Component","propTypes","PropTypes","oneOf","object","bool","isRequired","func","number","string","paddingTop","paddingBottom","borderBottom","paddingRight","marginRight"],"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 ChoiceInput from './choice-input';\n\nexport class Choice extends React.Component {\n onChange = (choice) => {\n const { disabled, onChoiceChanged } = this.props;\n\n if (!disabled) {\n onChoiceChanged(choice);\n }\n };\n\n render() {\n const {\n choice,\n index,\n choicesLength,\n showCorrect,\n isEvaluateMode,\n choiceMode,\n disabled,\n checked,\n correctness,\n displayKey,\n classes,\n choicesLayout,\n gridColumns,\n updateSession,\n } = this.props;\n const choiceClass = 'choice' + (index === choicesLength - 1 ? ' last' : '');\n\n const feedback = !isEvaluateMode || showCorrect ? '' : choice.feedback;\n\n const choiceProps = {\n ...choice,\n checked,\n choiceMode,\n disabled,\n feedback,\n correctness,\n displayKey,\n choicesLayout,\n gridColumns,\n updateSession,\n onChange: this.onChange,\n isEvaluateMode,\n };\n\n const names = classNames(classes.choice, {\n [classes.noBorder]: index === choicesLength - 1 || choicesLayout !== 'vertical',\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n });\n\n return (\n <div className={choiceClass} key={index}>\n <ChoiceInput {...choiceProps} className={names} />\n </div>\n );\n }\n}\n\nChoice.propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n choice: PropTypes.object,\n disabled: PropTypes.bool.isRequired,\n onChoiceChanged: PropTypes.func,\n classes: PropTypes.object.isRequired,\n index: PropTypes.number,\n choicesLength: PropTypes.number,\n showCorrect: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n checked: PropTypes.bool,\n correctness: PropTypes.string,\n displayKey: PropTypes.string,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n};\n\nexport default withStyles({\n choice: {\n paddingTop: '20px',\n paddingBottom: '10px',\n borderBottom: '1px solid #E0DEE0',\n },\n noBorder: {\n borderBottom: 'none',\n },\n horizontalLayout: {\n paddingRight: '20px',\n '& label': {\n marginRight: '8px',\n // '& span:first-child': {\n // paddingRight: 0\n // }\n },\n },\n})(Choice);\n"],"file":"choice.js"}
|
package/lib/main.js
CHANGED
|
@@ -27,8 +27,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
27
27
|
|
|
28
28
|
var _styles = require("@material-ui/core/styles");
|
|
29
29
|
|
|
30
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
31
|
-
|
|
32
30
|
var _renderUi = require("@pie-lib/render-ui");
|
|
33
31
|
|
|
34
32
|
var _multipleChoice = _interopRequireDefault(require("./multiple-choice"));
|
|
@@ -37,6 +35,14 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
37
35
|
|
|
38
36
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
37
|
|
|
38
|
+
var styles = function styles(theme) {
|
|
39
|
+
return {
|
|
40
|
+
partLabel: {
|
|
41
|
+
paddingBottom: theme.spacing.unit * 2
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
|
|
40
46
|
var Main = /*#__PURE__*/function (_React$Component) {
|
|
41
47
|
(0, _inherits2["default"])(Main, _React$Component);
|
|
42
48
|
|
|
@@ -56,12 +62,12 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
56
62
|
session = _this$props.session,
|
|
57
63
|
classes = _this$props.classes; // model.partLabel is a property used for ebsr
|
|
58
64
|
|
|
59
|
-
return /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewLayout, null, model.partLabel && /*#__PURE__*/_react["default"].createElement("
|
|
60
|
-
className:
|
|
61
|
-
}, /*#__PURE__*/_react["default"].createElement(_multipleChoice["default"], (0, _extends2["default"])({}, model, {
|
|
65
|
+
return /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewLayout, null, model.partLabel && /*#__PURE__*/_react["default"].createElement("div", {
|
|
66
|
+
className: classes.partLabel
|
|
67
|
+
}, model.partLabel), /*#__PURE__*/_react["default"].createElement(_multipleChoice["default"], (0, _extends2["default"])({}, model, {
|
|
62
68
|
session: session,
|
|
63
69
|
onChoiceChanged: onChoiceChanged
|
|
64
|
-
})))
|
|
70
|
+
})));
|
|
65
71
|
}
|
|
66
72
|
}]);
|
|
67
73
|
return Main;
|
|
@@ -77,7 +83,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
77
83
|
model: {},
|
|
78
84
|
session: {}
|
|
79
85
|
});
|
|
80
|
-
var Styled = (0, _styles.withStyles)(
|
|
86
|
+
var Styled = (0, _styles.withStyles)(styles, {
|
|
81
87
|
name: 'Main'
|
|
82
88
|
})(Main);
|
|
83
89
|
var theme = (0, _styles.createMuiTheme)({
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["styles","theme","partLabel","paddingBottom","spacing","unit","Main","props","model","onChoiceChanged","session","classes","React","Component","PropTypes","object","func","isRequired","Styled","name","typography","useNextVariants","Root"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,SAAS,EAAE;AACTC,MAAAA,aAAa,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB;AAD3B;AADc,GAAZ;AAAA,CAAf;;IAMMC,I;;;;;AAYJ,gBAAYC,KAAZ,EAAmB;AAAA;AAAA,6BACXA,KADW;AAElB;;;;WAED,kBAAS;AACP,wBAAqD,KAAKA,KAA1D;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,eAAf,eAAeA,eAAf;AAAA,UAAgCC,OAAhC,eAAgCA,OAAhC;AAAA,UAAyCC,OAAzC,eAAyCA,OAAzC,CADO,CAGP;;AACA,0BACE,gCAAC,uBAAD,QACGH,KAAK,CAACN,SAAN,iBAAmB;AAAK,QAAA,SAAS,EAAES,OAAO,CAACT;AAAxB,SAAoCM,KAAK,CAACN,SAA1C,CADtB,eAEE,gCAAC,0BAAD,gCAAoBM,KAApB;AAA2B,QAAA,OAAO,EAAEE,OAApC;AAA6C,QAAA,eAAe,EAAED;AAA9D,SAFF,CADF;AAMD;;;EA1BgBG,kBAAMC,S;;iCAAnBP,I,eACe;AACjBE,EAAAA,KAAK,EAAEM,sBAAUC,MADA;AAEjBL,EAAAA,OAAO,EAAEI,sBAAUC,MAFF;AAGjBN,EAAAA,eAAe,EAAEK,sBAAUE,IAHV;AAIjBL,EAAAA,OAAO,EAAEG,sBAAUC,MAAV,CAAiBE;AAJT,C;iCADfX,I,kBAQkB;AACpBE,EAAAA,KAAK,EAAE,EADa;AAEpBE,EAAAA,OAAO,EAAE;AAFW,C;AAqBxB,IAAMQ,MAAM,GAAG,wBAAWlB,MAAX,EAAmB;AAAEmB,EAAAA,IAAI,EAAE;AAAR,CAAnB,EAAqCb,IAArC,CAAf;AAEA,IAAML,KAAK,GAAG,4BAAe;AAC3BmB,EAAAA,UAAU,EAAE;AACVC,IAAAA,eAAe,EAAE;AADP;AADe,CAAf,CAAd;;AAMA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACf,KAAD;AAAA,sBACX,gCAAC,wBAAD;AAAkB,IAAA,KAAK,EAAEN;AAAzB,kBACE,gCAAC,MAAD,EAAYM,KAAZ,CADF,CADW;AAAA,CAAb;;eAMee,I","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';\nimport { PreviewLayout } from '@pie-lib/render-ui';\nimport MultipleChoice from './multiple-choice';\n\nconst styles = (theme) => ({\n partLabel: {\n paddingBottom: theme.spacing.unit * 2,\n },\n});\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onChoiceChanged: PropTypes.func,\n classes: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n model: {},\n session: {},\n };\n constructor(props) {\n super(props);\n }\n\n render() {\n const { model, onChoiceChanged, session, classes } = this.props;\n\n // model.partLabel is a property used for ebsr\n return (\n <PreviewLayout>\n {model.partLabel && <div className={classes.partLabel}>{model.partLabel}</div>}\n <MultipleChoice {...model} session={session} onChoiceChanged={onChoiceChanged} />\n </PreviewLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles, { name: 'Main' })(Main);\n\nconst theme = createMuiTheme({\n typography: {\n useNextVariants: true,\n },\n});\n\nconst Root = (props) => (\n <MuiThemeProvider theme={theme}>\n <Styled {...props} />\n </MuiThemeProvider>\n);\n\nexport default Root;\n"],"file":"main.js"}
|
package/lib/multiple-choice.js
CHANGED
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.MultipleChoice = void 0;
|
|
9
9
|
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -40,33 +42,32 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
40
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; } }
|
|
41
43
|
|
|
42
44
|
// MultipleChoice
|
|
43
|
-
var styles = {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
var styles = function styles(theme) {
|
|
46
|
+
return {
|
|
47
|
+
main: {
|
|
48
|
+
backgroundColor: _renderUi.color.background(),
|
|
49
|
+
'& *': {
|
|
50
|
+
'-webkit-font-smoothing': 'antialiased'
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
teacherInstructions: {
|
|
54
|
+
marginBottom: theme.spacing.unit * 2
|
|
55
|
+
},
|
|
56
|
+
horizontalLayout: {
|
|
57
|
+
display: 'flex',
|
|
58
|
+
flexDirection: 'row',
|
|
59
|
+
flexWrap: 'wrap'
|
|
60
|
+
},
|
|
61
|
+
gridLayout: {
|
|
62
|
+
display: 'grid'
|
|
63
|
+
},
|
|
64
|
+
fieldset: {
|
|
65
|
+
border: '0px',
|
|
66
|
+
padding: '0.01em 0 0 0',
|
|
67
|
+
margin: '0px',
|
|
68
|
+
minWidth: '0px'
|
|
49
69
|
}
|
|
50
|
-
}
|
|
51
|
-
horizontalLayout: {
|
|
52
|
-
display: 'flex',
|
|
53
|
-
flexDirection: 'row',
|
|
54
|
-
flexWrap: 'wrap'
|
|
55
|
-
},
|
|
56
|
-
gridLayout: {
|
|
57
|
-
display: 'grid'
|
|
58
|
-
},
|
|
59
|
-
getColumns: function getColumns(columns) {
|
|
60
|
-
return columns > 1 ? {
|
|
61
|
-
gridTemplateColumns: "repeat(".concat(columns, ", 1fr)")
|
|
62
|
-
} : undefined;
|
|
63
|
-
},
|
|
64
|
-
fieldset: {
|
|
65
|
-
border: '0px',
|
|
66
|
-
padding: '0.01em 0 0 0',
|
|
67
|
-
margin: '0px',
|
|
68
|
-
minWidth: '0px'
|
|
69
|
-
}
|
|
70
|
+
};
|
|
70
71
|
};
|
|
71
72
|
|
|
72
73
|
var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
@@ -79,6 +80,34 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
79
80
|
|
|
80
81
|
(0, _classCallCheck2["default"])(this, MultipleChoice);
|
|
81
82
|
_this = _super.call(this, props);
|
|
83
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleChange", function (event) {
|
|
84
|
+
var target = event.target;
|
|
85
|
+
|
|
86
|
+
_this.setState({
|
|
87
|
+
selectedValue: target.value
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleChangeCheckboxes", function (event) {
|
|
91
|
+
var _event$target = event.target,
|
|
92
|
+
value = _event$target.value,
|
|
93
|
+
checked = _event$target.checked;
|
|
94
|
+
|
|
95
|
+
_this.setState(function (prevState) {
|
|
96
|
+
var selectedValues = (0, _toConsumableArray2["default"])(prevState.selectedValues);
|
|
97
|
+
|
|
98
|
+
if (checked) {
|
|
99
|
+
selectedValues.push(value);
|
|
100
|
+
} else {
|
|
101
|
+
selectedValues = selectedValues.filter(function (currentValue) {
|
|
102
|
+
return currentValue !== value;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
selectedValues: selectedValues
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
});
|
|
82
111
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getCorrectness", function () {
|
|
83
112
|
var choice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
84
113
|
var isCorrect = choice.correct;
|
|
@@ -108,6 +137,8 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
108
137
|
}
|
|
109
138
|
});
|
|
110
139
|
_this.state = {
|
|
140
|
+
selectedValue: null,
|
|
141
|
+
selectedValues: [],
|
|
111
142
|
showCorrect: _this.props.alwaysShowCorrect || false
|
|
112
143
|
};
|
|
113
144
|
_this.onToggle = _this.onToggle.bind((0, _assertThisInitialized2["default"])(_this));
|
|
@@ -115,6 +146,13 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
115
146
|
}
|
|
116
147
|
|
|
117
148
|
(0, _createClass2["default"])(MultipleChoice, [{
|
|
149
|
+
key: "isSelected",
|
|
150
|
+
value: function isSelected(value) {
|
|
151
|
+
var sessionValue = this.props.session && this.props.session.value;
|
|
152
|
+
return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;
|
|
153
|
+
} // handleChange and handleChangeCheckboxes functions were added for accessibility. Please see comments and videos from PD-2441. They should only be removed if a better solution is found.
|
|
154
|
+
|
|
155
|
+
}, {
|
|
118
156
|
key: "onToggle",
|
|
119
157
|
value: function onToggle() {
|
|
120
158
|
if (this.props.mode === 'evaluate') {
|
|
@@ -138,12 +176,6 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
138
176
|
});
|
|
139
177
|
}
|
|
140
178
|
}
|
|
141
|
-
}, {
|
|
142
|
-
key: "isSelected",
|
|
143
|
-
value: function isSelected(value) {
|
|
144
|
-
var sessionValue = this.props.session && this.props.session.value;
|
|
145
|
-
return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;
|
|
146
|
-
}
|
|
147
179
|
}, {
|
|
148
180
|
key: "indexToSymbol",
|
|
149
181
|
value: function indexToSymbol(index) {
|
|
@@ -160,14 +192,17 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
160
192
|
}, {
|
|
161
193
|
key: "render",
|
|
162
194
|
value: function render() {
|
|
163
|
-
var
|
|
195
|
+
var _classNames,
|
|
196
|
+
_this2 = this;
|
|
164
197
|
|
|
165
198
|
var _this$props = this.props,
|
|
166
199
|
mode = _this$props.mode,
|
|
167
200
|
disabled = _this$props.disabled,
|
|
201
|
+
className = _this$props.className,
|
|
168
202
|
_this$props$choices = _this$props.choices,
|
|
169
203
|
choices = _this$props$choices === void 0 ? [] : _this$props$choices,
|
|
170
204
|
choiceMode = _this$props.choiceMode,
|
|
205
|
+
gridColumns = _this$props.gridColumns,
|
|
171
206
|
prompt = _this$props.prompt,
|
|
172
207
|
onChoiceChanged = _this$props.onChoiceChanged,
|
|
173
208
|
responseCorrect = _this$props.responseCorrect,
|
|
@@ -175,43 +210,50 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
175
210
|
classes = _this$props.classes,
|
|
176
211
|
alwaysShowCorrect = _this$props.alwaysShowCorrect,
|
|
177
212
|
animationsDisabled = _this$props.animationsDisabled;
|
|
178
|
-
var
|
|
213
|
+
var _this$state = this.state,
|
|
214
|
+
showCorrect = _this$state.showCorrect,
|
|
215
|
+
selectedValue = _this$state.selectedValue,
|
|
216
|
+
selectedValues = _this$state.selectedValues;
|
|
179
217
|
var isEvaluateMode = mode === 'evaluate';
|
|
180
218
|
var showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;
|
|
219
|
+
var columnsStyle = gridColumns > 1 ? {
|
|
220
|
+
gridTemplateColumns: "repeat(".concat(gridColumns, ", 1fr)")
|
|
221
|
+
} : undefined;
|
|
222
|
+
|
|
223
|
+
var teacherInsttructionsDiv = /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
224
|
+
tagName: "div",
|
|
225
|
+
className: "prompt",
|
|
226
|
+
defaultClassName: "teacher-instructions",
|
|
227
|
+
prompt: teacherInstructions
|
|
228
|
+
});
|
|
229
|
+
|
|
181
230
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
182
|
-
className: (0, _classnames["default"])(classes.
|
|
183
|
-
}, teacherInstructions && /*#__PURE__*/_react["default"].createElement(
|
|
231
|
+
className: (0, _classnames["default"])(classes.main, className, 'multiple-choice')
|
|
232
|
+
}, teacherInstructions && /*#__PURE__*/_react["default"].createElement("div", {
|
|
233
|
+
className: classes.teacherInstructions
|
|
234
|
+
}, !animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
184
235
|
labels: {
|
|
185
236
|
hidden: 'Show Teacher Instructions',
|
|
186
237
|
visible: 'Hide Teacher Instructions'
|
|
187
238
|
}
|
|
188
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
189
|
-
tagName: "div",
|
|
190
|
-
className: "prompt",
|
|
191
|
-
prompt: teacherInstructions
|
|
192
|
-
})) : /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
193
|
-
tagName: "div",
|
|
194
|
-
className: "prompt",
|
|
195
|
-
defaultClassName: "teacher-instructions",
|
|
196
|
-
prompt: teacherInstructions
|
|
197
|
-
}), /*#__PURE__*/_react["default"].createElement("br", null)), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
198
|
-
show: showCorrectAnswerToggle,
|
|
199
|
-
toggled: showCorrect,
|
|
200
|
-
onToggle: this.onToggle.bind(this)
|
|
201
|
-
}), showCorrectAnswerToggle && /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("fieldset", {
|
|
239
|
+
}, teacherInsttructionsDiv) : teacherInsttructionsDiv), /*#__PURE__*/_react["default"].createElement("fieldset", {
|
|
202
240
|
className: classes.fieldset
|
|
203
241
|
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
204
242
|
className: "prompt",
|
|
205
243
|
defaultClassName: "prompt",
|
|
206
244
|
prompt: prompt,
|
|
207
|
-
tagName:
|
|
245
|
+
tagName: 'legend'
|
|
246
|
+
}), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
247
|
+
show: showCorrectAnswerToggle,
|
|
248
|
+
toggled: showCorrect,
|
|
249
|
+
onToggle: this.onToggle.bind(this)
|
|
208
250
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
209
|
-
className: (0, _classnames["default"])((0, _defineProperty2["default"])(
|
|
210
|
-
style:
|
|
251
|
+
className: (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.gridLayout, this.props.choicesLayout === 'grid'), (0, _defineProperty2["default"])(_classNames, classes.horizontalLayout, this.props.choicesLayout === 'horizontal'), _classNames)),
|
|
252
|
+
style: columnsStyle
|
|
211
253
|
}, choices.map(function (choice, index) {
|
|
212
254
|
return /*#__PURE__*/_react["default"].createElement(_choice["default"], {
|
|
213
255
|
choicesLayout: _this2.props.choicesLayout,
|
|
214
|
-
gridColumns:
|
|
256
|
+
gridColumns: gridColumns,
|
|
215
257
|
key: "choice-".concat(index),
|
|
216
258
|
choice: choice,
|
|
217
259
|
index: index,
|
|
@@ -220,9 +262,10 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
220
262
|
isEvaluateMode: isEvaluateMode,
|
|
221
263
|
choiceMode: choiceMode,
|
|
222
264
|
disabled: disabled,
|
|
223
|
-
|
|
265
|
+
updateSession: onChoiceChanged,
|
|
266
|
+
onChoiceChanged: _this2.props.choiceMode === 'radio' ? _this2.handleChange : _this2.handleChangeCheckboxes,
|
|
224
267
|
hideTick: choice.hideTick,
|
|
225
|
-
checked: showCorrect ? choice.correct || false : _this2.
|
|
268
|
+
checked: showCorrect ? choice.correct || false : _this2.props.choiceMode === 'radio' ? selectedValue === choice.value : selectedValues.includes(choice.value),
|
|
226
269
|
correctness: isEvaluateMode ? _this2.getCorrectness(choice) : undefined,
|
|
227
270
|
displayKey: _this2.indexToSymbol(index)
|
|
228
271
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["styles","corespringChoice","backgroundColor","color","background","padding","horizontalLayout","display","flexDirection","flexWrap","gridLayout","getColumns","columns","gridTemplateColumns","undefined","fieldset","border","margin","minWidth","MultipleChoice","props","choice","isCorrect","correct","isChecked","isSelected","value","state","showCorrect","alwaysShowCorrect","onToggle","bind","mode","setState","nextProps","correctResponse","sessionValue","session","indexOf","index","keyMode","String","fromCharCode","toUpperCase","disabled","choices","choiceMode","prompt","onChoiceChanged","responseCorrect","teacherInstructions","classes","animationsDisabled","isEvaluateMode","showCorrectAnswerToggle","hidden","visible","choicesLayout","gridColumns","map","length","hideTick","getCorrectness","indexToSymbol","React","Component","PropTypes","oneOf","array","string","object","bool","func","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/render-ui';\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst styles = {\n corespringChoice: {\n backgroundColor: color.background(),\n padding: '5px',\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n getColumns: function (columns) {\n return columns > 1 ? { gridTemplateColumns: `repeat(${columns}, 1fr)` } : undefined;\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px'\n },\n};\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n mode: PropTypes.oneOf(['gather', 'view', 'evaluate']),\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n keyMode: PropTypes.oneOf(['numbers', 'letters', 'none']),\n choices: PropTypes.array,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool,\n onChoiceChanged: PropTypes.func,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: this.props.alwaysShowCorrect || false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n onToggle() {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse) {\n this.setState({ showCorrect: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;\n }\n\n indexToSymbol(index) {\n if (this.props.keyMode === 'numbers') {\n return `${index + 1}`;\n }\n\n if (this.props.keyMode === 'letters') {\n return String.fromCharCode(97 + index).toUpperCase();\n }\n\n return '';\n }\n\n getCorrectness = (choice = {}) => {\n const isCorrect = choice.correct;\n const isChecked = this.isSelected(choice.value);\n\n if (this.state.showCorrect) {\n return isCorrect ? 'correct' : undefined;\n }\n\n if (isCorrect) {\n if (isChecked) {\n // A correct answer is selected: marked with a green checkmark\n return 'correct';\n } else {\n // A correct answer is NOT selected: marked with an orange X\n return 'incorrect';\n }\n } else {\n if (isChecked) {\n // An incorrect answer is selected: marked with an orange X\n return 'incorrect';\n } else {\n // An incorrect answer is NOT selected: not marked\n return undefined;\n }\n }\n };\n\n render() {\n const {\n mode,\n disabled,\n choices = [],\n choiceMode,\n prompt,\n onChoiceChanged,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n\n return (\n <div className={classNames(classes.corespringChoice, 'multiple-choice')}>\n {teacherInstructions && (\n <React.Fragment>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt tagName=\"div\" className=\"prompt\" prompt={teacherInstructions} />\n </Collapsible>\n ) : (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n )}\n <br />\n </React.Fragment>\n )}\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n />\n )}\n {showCorrectAnswerToggle && <br />}\n <fieldset className={classes.fieldset}>\n <PreviewPrompt className=\"prompt\" defaultClassName=\"prompt\" prompt={prompt} tagName={\"legend\"} />\n <div\n className={classNames(\n { [classes.gridLayout]: this.props.choicesLayout === 'grid' },\n {\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n },\n )}\n style={styles.getColumns(this.props.gridColumns)}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n choicesLayout={this.props.choicesLayout}\n gridColumns={this.props.gridColumns}\n key={`choice-${index}`}\n choice={choice}\n index={index}\n choicesLength={choices.length}\n showCorrect={showCorrect}\n isEvaluateMode={isEvaluateMode}\n choiceMode={choiceMode}\n disabled={disabled}\n onChoiceChanged={onChoiceChanged}\n hideTick={choice.hideTick}\n checked={showCorrect ? choice.correct || false : this.isSelected(choice.value)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n />\n ))}\n </div>\n </fieldset>\n </div>\n );\n }\n}\n\nMultipleChoice.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default withStyles(styles)(MultipleChoice);\n"],"file":"multiple-choice.js"}
|
|
1
|
+
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["styles","theme","main","backgroundColor","color","background","teacherInstructions","marginBottom","spacing","unit","horizontalLayout","display","flexDirection","flexWrap","gridLayout","fieldset","border","padding","margin","minWidth","MultipleChoice","props","event","target","setState","selectedValue","value","checked","prevState","selectedValues","push","filter","currentValue","choice","isCorrect","correct","isChecked","isSelected","state","showCorrect","undefined","alwaysShowCorrect","onToggle","bind","sessionValue","session","indexOf","mode","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","disabled","className","choices","choiceMode","gridColumns","prompt","onChoiceChanged","responseCorrect","classes","animationsDisabled","isEvaluateMode","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","teacherInsttructionsDiv","hidden","visible","choicesLayout","map","length","handleChange","handleChangeCheckboxes","hideTick","includes","getCorrectness","indexToSymbol","React","Component","PropTypes","oneOf","array","string","object","bool","func","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/render-ui';\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst styles = (theme) => ({\n main: {\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px',\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n mode: PropTypes.oneOf(['gather', 'view', 'evaluate']),\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n keyMode: PropTypes.oneOf(['numbers', 'letters', 'none']),\n choices: PropTypes.array,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool,\n onChoiceChanged: PropTypes.func,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n selectedValue: null,\n selectedValues: [],\n showCorrect: this.props.alwaysShowCorrect || false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;\n }\n\n // handleChange and handleChangeCheckboxes functions were added for accessibility. Please see comments and videos from PD-2441. They should only be removed if a better solution is found.\n handleChange = (event) => {\n const target = event.target;\n\n this.setState({ selectedValue: target.value });\n };\n\n handleChangeCheckboxes = (event) => {\n const { value, checked } = event.target;\n\n this.setState((prevState) => {\n let selectedValues = [...prevState.selectedValues];\n\n if (checked) {\n selectedValues.push(value);\n } else {\n selectedValues = selectedValues.filter((currentValue) => currentValue !== value);\n }\n\n return { selectedValues };\n });\n };\n\n onToggle() {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse) {\n this.setState({ showCorrect: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n }\n\n indexToSymbol(index) {\n if (this.props.keyMode === 'numbers') {\n return `${index + 1}`;\n }\n\n if (this.props.keyMode === 'letters') {\n return String.fromCharCode(97 + index).toUpperCase();\n }\n\n return '';\n }\n\n getCorrectness = (choice = {}) => {\n const isCorrect = choice.correct;\n const isChecked = this.isSelected(choice.value);\n\n if (this.state.showCorrect) {\n return isCorrect ? 'correct' : undefined;\n }\n\n if (isCorrect) {\n if (isChecked) {\n // A correct answer is selected: marked with a green checkmark\n return 'correct';\n } else {\n // A correct answer is NOT selected: marked with an orange X\n return 'incorrect';\n }\n } else {\n if (isChecked) {\n // An incorrect answer is selected: marked with an orange X\n return 'incorrect';\n } else {\n // An incorrect answer is NOT selected: not marked\n return undefined;\n }\n }\n };\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n prompt,\n onChoiceChanged,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n } = this.props;\n const { showCorrect, selectedValue, selectedValues } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n\n const teacherInsttructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n return (\n <div className={classNames(classes.main, className, 'multiple-choice')}>\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInsttructionsDiv}\n </Collapsible>\n ) : (\n teacherInsttructionsDiv\n )}\n </div>\n )}\n\n <fieldset className={classes.fieldset}>\n <PreviewPrompt className=\"prompt\" defaultClassName=\"prompt\" prompt={prompt} tagName={'legend'} />\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n />\n )}\n\n <div\n className={classNames({\n [classes.gridLayout]: this.props.choicesLayout === 'grid',\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n })}\n style={columnsStyle}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n choicesLayout={this.props.choicesLayout}\n gridColumns={gridColumns}\n key={`choice-${index}`}\n choice={choice}\n index={index}\n choicesLength={choices.length}\n showCorrect={showCorrect}\n isEvaluateMode={isEvaluateMode}\n choiceMode={choiceMode}\n disabled={disabled}\n updateSession={onChoiceChanged}\n onChoiceChanged={this.props.choiceMode === 'radio' ? this.handleChange : this.handleChangeCheckboxes}\n hideTick={choice.hideTick}\n checked={\n showCorrect\n ? choice.correct || false\n : this.props.choiceMode === 'radio'\n ? selectedValue === choice.value\n : selectedValues.includes(choice.value)\n }\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n />\n ))}\n </div>\n </fieldset>\n </div>\n );\n }\n}\n\nMultipleChoice.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default withStyles(styles)(MultipleChoice);\n"],"file":"multiple-choice.js"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/multiple-choice",
|
|
3
3
|
"repository": "pie-framework/pie-elements",
|
|
4
|
-
"version": "7.8.1-next.
|
|
4
|
+
"version": "7.8.1-next.78+3867e7270",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"react-test-renderer": "^16.3.2",
|
|
22
22
|
"react-transition-group": "^2.3.1"
|
|
23
23
|
},
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "3867e7270466f7f9b9f4c33bb72e7eed6d50bb57",
|
|
25
25
|
"scripts": {
|
|
26
26
|
"postpublish": "../../scripts/postpublish"
|
|
27
27
|
},
|