@pie-element/multiple-choice 11.0.5-esm.1 → 11.2.0
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 +27 -0
- package/configure/CHANGELOG.md +19 -0
- package/configure/package.json +4 -4
- package/controller/CHANGELOG.md +19 -0
- package/controller/package.json +2 -2
- package/lib/choice.js +3 -2
- package/lib/choice.js.map +1 -1
- package/lib/main.js +1 -8
- package/lib/main.js.map +1 -1
- package/lib/multiple-choice.js +13 -6
- package/lib/multiple-choice.js.map +1 -1
- package/lib/print.js +2 -1
- package/lib/print.js.map +1 -1
- package/module/configure.js +1 -1
- package/module/element.js +1 -1
- package/module/index.html +1 -1
- package/module/manifest.json +2 -2
- package/module/print.html +1 -1
- package/module/print.js +1 -1
- package/package.json +8 -26
- package/esm/configure.css +0 -847
- package/esm/configure.js +0 -1218
- package/esm/configure.js.map +0 -1
- package/esm/controller.css +0 -847
- package/esm/controller.js +0 -324
- package/esm/controller.js.map +0 -1
- package/esm/element.css +0 -847
- package/esm/element.js +0 -3287
- package/esm/element.js.map +0 -1
- package/esm/print.css +0 -847
- package/esm/print.js +0 -3017
- package/esm/print.js.map +0 -1
- package/module/index.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [11.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice@11.0.0...@pie-element/multiple-choice@11.2.0) (2025-10-10)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* conclude merge with develop ([8388078](https://github.com/pie-framework/pie-elements/commit/8388078124486bdab0def8dbe5e442117514c05a))
|
|
12
|
+
* **multiple-choice:** stroke style condition in Choice component PD-4768 ([19e14e9](https://github.com/pie-framework/pie-elements/commit/19e14e9fca227d06f831653c3183ab40d85ff764))
|
|
13
|
+
* **multiple-choice/ebsr:** add options prop to component for print context handling PD-5252 ([947142c](https://github.com/pie-framework/pie-elements/commit/947142cdcd2594ed3e5f1299dc2ade43638e4cd5))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* allow elemnts to use same fontFamily set in common ui container to avoid incons PD-5199 ([8b1742e](https://github.com/pie-framework/pie-elements/commit/8b1742e06c9befe1e81bf6a76c72448c91b2429b))
|
|
19
|
+
* update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# [11.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice@10.0.0...@pie-element/multiple-choice@11.1.0) (2025-10-07)
|
|
26
|
+
|
|
27
|
+
**Note:** Version bump only for package @pie-element/multiple-choice
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
6
33
|
# [11.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice@9.20.2...@pie-element/multiple-choice@11.0.0) (2025-10-02)
|
|
7
34
|
|
|
8
35
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [8.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-configure@8.0.1...@pie-element/multiple-choice-configure@8.2.0) (2025-10-10)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [8.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-configure@8.0.0...@pie-element/multiple-choice-configure@8.1.0) (2025-10-07)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @pie-element/multiple-choice-configure
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [8.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-configure@7.7.11...@pie-element/multiple-choice-configure@8.0.1) (2025-10-02)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @pie-element/multiple-choice-configure
|
package/configure/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/multiple-choice-configure",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@material-ui/icons": "^3.0.1",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
11
|
-
"@pie-lib/config-ui": "^11.
|
|
12
|
-
"@pie-lib/editable-html": "^11.
|
|
13
|
-
"@pie-lib/render-ui": "^4.
|
|
11
|
+
"@pie-lib/config-ui": "^11.25.1",
|
|
12
|
+
"@pie-lib/editable-html": "^11.17.1",
|
|
13
|
+
"@pie-lib/render-ui": "^4.31.1",
|
|
14
14
|
"debug": "^3.1.0",
|
|
15
15
|
"lodash": "^4.17.15",
|
|
16
16
|
"prop-types": "^15.6.2",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [6.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-controller@6.0.1...@pie-element/multiple-choice-controller@6.2.0) (2025-10-10)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [6.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-controller@6.0.0...@pie-element/multiple-choice-controller@6.1.0) (2025-10-07)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @pie-element/multiple-choice-controller
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [6.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-controller@5.10.11...@pie-element/multiple-choice-controller@6.0.1) (2025-10-02)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @pie-element/multiple-choice-controller
|
package/controller/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/multiple-choice-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "6.2.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"author": "",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@pie-lib/controller-utils": "^0.19.
|
|
11
|
+
"@pie-lib/controller-utils": "^0.19.4",
|
|
12
12
|
"debug": "^3.1.0",
|
|
13
13
|
"lodash": "^4.17.15"
|
|
14
14
|
}
|
package/lib/choice.js
CHANGED
|
@@ -173,11 +173,12 @@ var Choice = /*#__PURE__*/function (_React$Component) {
|
|
|
173
173
|
currentBackgroundColor = hoverAnswerBackgroundColor;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
var
|
|
176
|
+
var hasStroke = hasSelectedStroke || hasHoverStroke;
|
|
177
|
+
var strokeStyle = hasStroke ? {
|
|
177
178
|
border: "".concat(normalizeStrokeWidth(currentStrokeWidth), " solid ").concat(currentStrokeColor),
|
|
178
179
|
borderRadius: '8px'
|
|
179
180
|
} : {};
|
|
180
|
-
var names = (0, _classnames["default"])(classes.choice, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.noBorder, index === choicesLength - 1 || choicesLayout !== 'vertical' ||
|
|
181
|
+
var names = (0, _classnames["default"])(classes.choice, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.noBorder, index === choicesLength - 1 || choicesLayout !== 'vertical' || hasStroke), (0, _defineProperty2["default"])(_classNames, classes.horizontalLayout, choicesLayout === 'horizontal'), _classNames));
|
|
181
182
|
var choiceBackground = currentBackgroundColor !== 'initial' ? currentBackgroundColor : 'initial';
|
|
182
183
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
183
184
|
className: choiceClass,
|
package/lib/choice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/choice.jsx"],"names":["Choice","isHovered","props","disabled","checked","setState","choice","onChoiceChanged","index","choicesLength","showCorrect","isEvaluateMode","choiceMode","correctness","displayKey","classes","choicesLayout","gridColumns","isSelectionButtonBelow","selectedAnswerBackgroundColor","selectedAnswerStrokeColor","selectedAnswerStrokeWidth","hoverAnswerBackgroundColor","hoverAnswerStrokeColor","hoverAnswerStrokeWidth","autoFocusRef","tagName","state","choiceClass","feedback","choiceProps","onChange","normalizeStrokeWidth","width","trimmed","String","trim","test","hasSelectedStroke","hasHoverStroke","currentStrokeColor","currentStrokeWidth","currentBackgroundColor","strokeStyle","border","borderRadius","names","noBorder","horizontalLayout","choiceBackground","backgroundColor","handleMouseEnter","handleMouseLeave","React","Component","propTypes","PropTypes","oneOf","object","bool","isRequired","func","number","string","theme","paddingTop","spacing","unit","paddingBottom","paddingLeft","paddingRight","borderBottom","palette","grey","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';\n\nimport ChoiceInput from './choice-input';\n\nexport class Choice extends React.Component {\n static propTypes = {};\n\n state = {\n isHovered: false,\n };\n\n handleMouseEnter = () => {\n const { disabled, checked } = this.props;\n\n if (!disabled && !checked) {\n this.setState({ isHovered: true });\n }\n };\n\n handleMouseLeave = () => {\n this.setState({ isHovered: false });\n };\n\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 isSelectionButtonBelow,\n selectedAnswerBackgroundColor,\n selectedAnswerStrokeColor,\n selectedAnswerStrokeWidth,\n hoverAnswerBackgroundColor,\n hoverAnswerStrokeColor,\n hoverAnswerStrokeWidth,\n autoFocusRef,\n tagName\n } = this.props;\n \n const { isHovered } = this.state;\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 index,\n choicesLayout,\n gridColumns,\n onChange: this.onChange,\n isEvaluateMode,\n isSelectionButtonBelow,\n selectedAnswerStrokeColor,\n selectedAnswerStrokeWidth,\n tagName,\n };\n\n const normalizeStrokeWidth = (width) => {\n if (!width) return '2px'; // default\n const trimmed = String(width).trim();\n \n // add 'px' if the value is a number\n if (/^\\d+(\\.\\d+)?$/.test(trimmed)) {\n return `${trimmed}px`;\n }\n\n return trimmed;\n };\n\n const hasSelectedStroke = selectedAnswerStrokeColor && selectedAnswerStrokeColor !== 'initial';\n const hasHoverStroke = hoverAnswerStrokeColor && hoverAnswerStrokeColor !== 'initial';\n \n let currentStrokeColor = 'transparent';\n let currentStrokeWidth = '2px';\n let currentBackgroundColor = 'initial';\n \n if ((hasSelectedStroke || hasHoverStroke)) {\n if (checked && hasSelectedStroke) {\n // selected state takes priority when selected stroke is configured\n currentStrokeColor = selectedAnswerStrokeColor;\n currentStrokeWidth = selectedAnswerStrokeWidth;\n } else if (isHovered && !disabled && hasHoverStroke) {\n // hover state when not selected and not disabled, and hover stroke is configured\n currentStrokeColor = hoverAnswerStrokeColor;\n currentStrokeWidth = hoverAnswerStrokeWidth;\n }\n }\n \n if (checked && selectedAnswerBackgroundColor && selectedAnswerBackgroundColor !== 'initial') {\n currentBackgroundColor = selectedAnswerBackgroundColor;\n } else if (isHovered && !disabled && hoverAnswerBackgroundColor && hoverAnswerBackgroundColor !== 'initial') {\n currentBackgroundColor = hoverAnswerBackgroundColor;\n }\n\n const strokeStyle = (hasSelectedStroke || hasHoverStroke) ? {\n border: `${normalizeStrokeWidth(currentStrokeWidth)} solid ${currentStrokeColor}`,\n borderRadius: '8px',\n } : {};\n\n const names = classNames(classes.choice, {\n [classes.noBorder]: index === choicesLength - 1 || choicesLayout !== 'vertical' || strokeStyle,\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n });\n\n const choiceBackground = currentBackgroundColor !== 'initial' ? currentBackgroundColor : 'initial';\n\n return (\n <div \n className={choiceClass} \n key={index} \n style={{ backgroundColor: choiceBackground, ...strokeStyle }}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <ChoiceInput {...choiceProps} className={names} autoFocusRef={autoFocusRef} />\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 selectedAnswerBackgroundColor: PropTypes.string,\n selectedAnswerStrokeColor: PropTypes.string,\n selectedAnswerStrokeWidth: PropTypes.string,\n hoverAnswerBackgroundColor: PropTypes.string,\n hoverAnswerStrokeColor: PropTypes.string,\n hoverAnswerStrokeWidth: PropTypes.string,\n tagName: PropTypes.string,\n isSelectionButtonBelow: PropTypes.bool,\n autoFocusRef: PropTypes.object,\n};\n\nexport default withStyles((theme) => ({\n choice: {\n paddingTop: theme.spacing.unit * 2.5,\n paddingBottom: theme.spacing.unit + 2,\n paddingLeft: theme.spacing.unit + 2,\n paddingRight: theme.spacing.unit + 2,\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n },\n noBorder: {\n borderBottom: 'none',\n },\n horizontalLayout: {\n paddingRight: theme.spacing.unit * 2.5,\n '& label': {\n marginRight: theme.spacing.unit,\n // '& span:first-child': {\n // paddingRight: 0\n // }\n },\n },\n}))(Choice);\n"],"file":"choice.js"}
|
|
1
|
+
{"version":3,"sources":["../src/choice.jsx"],"names":["Choice","isHovered","props","disabled","checked","setState","choice","onChoiceChanged","index","choicesLength","showCorrect","isEvaluateMode","choiceMode","correctness","displayKey","classes","choicesLayout","gridColumns","isSelectionButtonBelow","selectedAnswerBackgroundColor","selectedAnswerStrokeColor","selectedAnswerStrokeWidth","hoverAnswerBackgroundColor","hoverAnswerStrokeColor","hoverAnswerStrokeWidth","autoFocusRef","tagName","state","choiceClass","feedback","choiceProps","onChange","normalizeStrokeWidth","width","trimmed","String","trim","test","hasSelectedStroke","hasHoverStroke","currentStrokeColor","currentStrokeWidth","currentBackgroundColor","hasStroke","strokeStyle","border","borderRadius","names","noBorder","horizontalLayout","choiceBackground","backgroundColor","handleMouseEnter","handleMouseLeave","React","Component","propTypes","PropTypes","oneOf","object","bool","isRequired","func","number","string","theme","paddingTop","spacing","unit","paddingBottom","paddingLeft","paddingRight","borderBottom","palette","grey","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';\n\nimport ChoiceInput from './choice-input';\n\nexport class Choice extends React.Component {\n static propTypes = {};\n\n state = {\n isHovered: false,\n };\n\n handleMouseEnter = () => {\n const { disabled, checked } = this.props;\n\n if (!disabled && !checked) {\n this.setState({ isHovered: true });\n }\n };\n\n handleMouseLeave = () => {\n this.setState({ isHovered: false });\n };\n\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 isSelectionButtonBelow,\n selectedAnswerBackgroundColor,\n selectedAnswerStrokeColor,\n selectedAnswerStrokeWidth,\n hoverAnswerBackgroundColor,\n hoverAnswerStrokeColor,\n hoverAnswerStrokeWidth,\n autoFocusRef,\n tagName\n } = this.props;\n \n const { isHovered } = this.state;\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 index,\n choicesLayout,\n gridColumns,\n onChange: this.onChange,\n isEvaluateMode,\n isSelectionButtonBelow,\n selectedAnswerStrokeColor,\n selectedAnswerStrokeWidth,\n tagName,\n };\n\n const normalizeStrokeWidth = (width) => {\n if (!width) return '2px'; // default\n const trimmed = String(width).trim();\n \n // add 'px' if the value is a number\n if (/^\\d+(\\.\\d+)?$/.test(trimmed)) {\n return `${trimmed}px`;\n }\n\n return trimmed;\n };\n\n const hasSelectedStroke = selectedAnswerStrokeColor && selectedAnswerStrokeColor !== 'initial';\n const hasHoverStroke = hoverAnswerStrokeColor && hoverAnswerStrokeColor !== 'initial';\n \n let currentStrokeColor = 'transparent';\n let currentStrokeWidth = '2px';\n let currentBackgroundColor = 'initial';\n \n if ((hasSelectedStroke || hasHoverStroke)) {\n if (checked && hasSelectedStroke) {\n // selected state takes priority when selected stroke is configured\n currentStrokeColor = selectedAnswerStrokeColor;\n currentStrokeWidth = selectedAnswerStrokeWidth;\n } else if (isHovered && !disabled && hasHoverStroke) {\n // hover state when not selected and not disabled, and hover stroke is configured\n currentStrokeColor = hoverAnswerStrokeColor;\n currentStrokeWidth = hoverAnswerStrokeWidth;\n }\n }\n \n if (checked && selectedAnswerBackgroundColor && selectedAnswerBackgroundColor !== 'initial') {\n currentBackgroundColor = selectedAnswerBackgroundColor;\n } else if (isHovered && !disabled && hoverAnswerBackgroundColor && hoverAnswerBackgroundColor !== 'initial') {\n currentBackgroundColor = hoverAnswerBackgroundColor;\n }\n\n const hasStroke = hasSelectedStroke || hasHoverStroke;\n const strokeStyle = hasStroke ? {\n border: `${normalizeStrokeWidth(currentStrokeWidth)} solid ${currentStrokeColor}`,\n borderRadius: '8px',\n } : {};\n\n const names = classNames(classes.choice, {\n [classes.noBorder]: index === choicesLength - 1 || choicesLayout !== 'vertical' || hasStroke,\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n });\n\n const choiceBackground = currentBackgroundColor !== 'initial' ? currentBackgroundColor : 'initial';\n\n return (\n <div \n className={choiceClass} \n key={index} \n style={{ backgroundColor: choiceBackground, ...strokeStyle }}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <ChoiceInput {...choiceProps} className={names} autoFocusRef={autoFocusRef} />\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 selectedAnswerBackgroundColor: PropTypes.string,\n selectedAnswerStrokeColor: PropTypes.string,\n selectedAnswerStrokeWidth: PropTypes.string,\n hoverAnswerBackgroundColor: PropTypes.string,\n hoverAnswerStrokeColor: PropTypes.string,\n hoverAnswerStrokeWidth: PropTypes.string,\n tagName: PropTypes.string,\n isSelectionButtonBelow: PropTypes.bool,\n autoFocusRef: PropTypes.object,\n};\n\nexport default withStyles((theme) => ({\n choice: {\n paddingTop: theme.spacing.unit * 2.5,\n paddingBottom: theme.spacing.unit + 2,\n paddingLeft: theme.spacing.unit + 2,\n paddingRight: theme.spacing.unit + 2,\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n },\n noBorder: {\n borderBottom: 'none',\n },\n horizontalLayout: {\n paddingRight: theme.spacing.unit * 2.5,\n '& label': {\n marginRight: theme.spacing.unit,\n // '& span:first-child': {\n // paddingRight: 0\n // }\n },\n },\n}))(Choice);\n"],"file":"choice.js"}
|
package/lib/main.js
CHANGED
|
@@ -91,16 +91,9 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
91
91
|
var Styled = (0, _styles.withStyles)(styles, {
|
|
92
92
|
name: 'Main'
|
|
93
93
|
})(Main);
|
|
94
|
-
var theme = (0, _styles.createMuiTheme)({
|
|
95
|
-
typography: {
|
|
96
|
-
useNextVariants: true
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
94
|
|
|
100
95
|
var Root = function Root(props) {
|
|
101
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
102
|
-
theme: theme
|
|
103
|
-
}, /*#__PURE__*/_react["default"].createElement(Styled, props));
|
|
96
|
+
return /*#__PURE__*/_react["default"].createElement(Styled, props);
|
|
104
97
|
};
|
|
105
98
|
|
|
106
99
|
var _default = Root;
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["styles","Main","props","model","onChoiceChanged","session","onShowCorrectToggle","extraCSSRules","fontSizeFactor","React","Component","PropTypes","object","func","classes","isRequired","shape","names","arrayOf","string","rules","Styled","name","
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["styles","Main","props","model","onChoiceChanged","session","onShowCorrectToggle","extraCSSRules","fontSizeFactor","React","Component","PropTypes","object","func","classes","isRequired","shape","names","arrayOf","string","rules","Styled","name","Root"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO,EAAP;AAAA,CAAf;;IAEMC,I;;;;;AAiBJ,gBAAYC,KAAZ,EAAmB;AAAA;AAAA,6BACXA,KADW;AAElB;;;;WAED,kBAAS;AACP,wBAAiE,KAAKA,KAAtE;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,eAAf,eAAeA,eAAf;AAAA,UAAgCC,OAAhC,eAAgCA,OAAhC;AAAA,UAAyCC,mBAAzC,eAAyCA,mBAAzC;AACA,UAAQC,aAAR,GAA0CJ,KAA1C,CAAQI,aAAR;AAAA,UAAuBC,cAAvB,GAA0CL,KAA1C,CAAuBK,cAAvB,CAFO,CAIP;;AACA,0BACE,gCAAC,uBAAD;AAAe,QAAA,aAAa,EAAED,aAA9B;AAA6C,QAAA,cAAc,EAAEC;AAA7D,sBACE,gCAAC,0BAAD,gCACML,KADN;AAEE,QAAA,OAAO,EAAEE,OAFX;AAGE,QAAA,eAAe,EAAED,eAHnB;AAIE,QAAA,mBAAmB,EAAEE;AAJvB,SADF,CADF;AAUD;;;EApCgBG,kBAAMC,S;;iCAAnBT,I,eACe;AACjBE,EAAAA,KAAK,EAAEQ,sBAAUC,MADA;AAEjBP,EAAAA,OAAO,EAAEM,sBAAUC,MAFF;AAGjBR,EAAAA,eAAe,EAAEO,sBAAUE,IAHV;AAIjBC,EAAAA,OAAO,EAAEH,sBAAUC,MAAV,CAAiBG,UAJT;AAKjBT,EAAAA,mBAAmB,EAAEK,sBAAUE,IALd;AAMjBN,EAAAA,aAAa,EAAEI,sBAAUK,KAAV,CAAgB;AAC7BC,IAAAA,KAAK,EAAEN,sBAAUO,OAAV,CAAkBP,sBAAUQ,MAA5B,CADsB;AAE7BC,IAAAA,KAAK,EAAET,sBAAUQ;AAFY,GAAhB;AANE,C;iCADflB,I,kBAakB;AACpBE,EAAAA,KAAK,EAAE,EADa;AAEpBE,EAAAA,OAAO,EAAE;AAFW,C;AA0BxB,IAAMgB,MAAM,GAAG,wBAAWrB,MAAX,EAAmB;AAAEsB,EAAAA,IAAI,EAAE;AAAR,CAAnB,EAAqCrB,IAArC,CAAf;;AAEA,IAAMsB,IAAI,GAAG,SAAPA,IAAO,CAACrB,KAAD;AAAA,sBACT,gCAAC,MAAD,EAAYA,KAAZ,CADS;AAAA,CAAb;;eAIeqB,I","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { PreviewLayout } from '@pie-lib/render-ui';\nimport MultipleChoice from './multiple-choice';\n\nconst styles = () => ({});\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 onShowCorrectToggle: PropTypes.func,\n extraCSSRules: PropTypes.shape({\n names: PropTypes.arrayOf(PropTypes.string),\n rules: PropTypes.string,\n }),\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, onShowCorrectToggle } = this.props;\n const { extraCSSRules, fontSizeFactor } = model;\n\n // model.partLabel is a property used for ebsr\n return (\n <PreviewLayout extraCSSRules={extraCSSRules} fontSizeFactor={fontSizeFactor}>\n <MultipleChoice\n {...model}\n session={session}\n onChoiceChanged={onChoiceChanged}\n onShowCorrectToggle={onShowCorrectToggle}\n />\n </PreviewLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles, { name: 'Main' })(Main);\n\nconst Root = (props) => (\n <Styled {...props} />\n);\n\nexport default Root;\n"],"file":"main.js"}
|
package/lib/multiple-choice.js
CHANGED
|
@@ -251,14 +251,20 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
251
251
|
}, {
|
|
252
252
|
key: "getChecked",
|
|
253
253
|
value: function getChecked(choice) {
|
|
254
|
-
//
|
|
255
|
-
|
|
254
|
+
// check for print context: options prop is passed from print.js and alwaysShowCorrect is true
|
|
255
|
+
var isPrintMode = this.props.options && this.props.alwaysShowCorrect;
|
|
256
|
+
|
|
257
|
+
if (isPrintMode) {
|
|
258
|
+
return choice.correct || false;
|
|
259
|
+
} // evaluate mode with show correct toggled
|
|
260
|
+
|
|
261
|
+
|
|
256
262
|
var isEvaluateMode = this.state.showCorrect && this.props.mode === 'evaluate';
|
|
257
|
-
var isPrintMode = this.props.alwaysShowCorrect && (!this.props.session || !this.props.session.value || this.props.session.value.length === 0);
|
|
258
263
|
|
|
259
|
-
if (isEvaluateMode
|
|
264
|
+
if (isEvaluateMode) {
|
|
260
265
|
return choice.correct || false;
|
|
261
|
-
}
|
|
266
|
+
} // default behavior: show what the user has selected
|
|
267
|
+
|
|
262
268
|
|
|
263
269
|
return this.isSelected(choice.value);
|
|
264
270
|
} // renderHeading function was added for accessibility.
|
|
@@ -455,7 +461,8 @@ exports.MultipleChoice = MultipleChoice;
|
|
|
455
461
|
customAudioButton: {
|
|
456
462
|
playImage: _propTypes["default"].string,
|
|
457
463
|
pauseImage: _propTypes["default"].string
|
|
458
|
-
}
|
|
464
|
+
},
|
|
465
|
+
options: _propTypes["default"].object
|
|
459
466
|
});
|
|
460
467
|
MultipleChoice.defaultProps = {
|
|
461
468
|
session: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["translator","Translator","styles","theme","main","color","text","backgroundColor","background","position","border","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","padding","minWidth","outline","srOnly","left","top","width","height","overflow","errorText","typography","palette","error","paddingTop","MultipleChoice","props","event","target","value","checked","maxSelections","onChoiceChanged","session","length","setState","maxSelectionsErrorState","selected","selector","mode","showCorrect","state","onShowCorrectToggle","choice","isCorrect","correct","isChecked","isSelected","undefined","e","currentTarget","activeEl","document","activeElement","contains","relatedTarget","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","firstInputRef","current","focus","alwaysShowCorrect","onToggle","bind","React","createRef","sessionValue","indexOf","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","isEvaluateMode","isPrintMode","choiceMode","classes","disabled","className","choices","gridColumns","prompt","responseCorrect","animationsDisabled","language","isSelectionButtonBelow","minSelections","autoplayAudioEnabled","customAudioButton","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","selections","teacherInstructionsDiv","getMultipleChoiceMinSelectionErrorMessage","t","lng","renderHeading","hidden","visible","handleGroupFocus","choicesLayout","map","selectedAnswerBackgroundColor","selectedAnswerStrokeColor","selectedAnswerStrokeWidth","hoverAnswerBackgroundColor","hoverAnswerStrokeColor","hoverAnswerStrokeWidth","handleChange","hideTick","getChecked","getCorrectness","indexToSymbol","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","number","playImage","pauseImage","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 Translator from '@pie-lib/translator';\n\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst { translator } = Translator;\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n position: 'relative',\n // remove border from legend tags inside main to override the OT default styles\n '& legend': {\n border: 'none !important',\n },\n },\n partLabel: {\n display: 'block',\n fontSize: 'inherit',\n margin: '0',\n fontWeight: 'normal',\n paddingBottom: theme.spacing.unit * 2,\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 '&:focus': {\n outline: 'none',\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n className: PropTypes.string,\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 partLabel: PropTypes.string,\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 language: PropTypes.string,\n selectedAnswerBackgroundColor: PropTypes.string,\n selectedAnswerStrokeColor: PropTypes.string,\n selectedAnswerStrokeWidth: PropTypes.string,\n hoverAnswerBackgroundColor: PropTypes.string,\n hoverAnswerStrokeColor: PropTypes.string,\n hoverAnswerStrokeWidth: PropTypes.string,\n onShowCorrectToggle: PropTypes.func,\n isSelectionButtonBelow: PropTypes.bool,\n minSelections: PropTypes.number,\n maxSelections: PropTypes.number,\n autoplayAudioEnabled: PropTypes.bool,\n customAudioButton: {\n playImage: PropTypes.string,\n pauseImage: PropTypes.string,\n },\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: this.props.alwaysShowCorrect || false,\n maxSelectionsErrorState: false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n this.firstInputRef = React.createRef();\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 was added for accessibility. Please see comments and videos from PD-2441.\n handleChange = (event) => {\n const { value, checked } = event.target;\n const { maxSelections, onChoiceChanged, session } = this.props;\n\n if (session.value && session.value.length >= maxSelections) {\n // show/hide max selections error when user select/deselect an answer\n this.setState({ maxSelectionsErrorState: checked });\n\n if (checked) {\n // prevent selecting more answers\n return;\n }\n }\n\n onChoiceChanged({ value, selected: checked, selector: 'Mouse' });\n };\n\n onToggle = () => {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse && this.state.showCorrect !== false) {\n this.setState({ showCorrect: false }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n\n if (nextProps.alwaysShowCorrect && this.state.showCorrect !== true) {\n this.setState({ showCorrect: true }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\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 getChecked(choice) {\n // to determine if we are in evaluate mode or print mode\n // since both modes have showCorrect but it interferes with \"browse mode\" in IBX if the print props are set\n const isEvaluateMode = this.state.showCorrect && this.props.mode === 'evaluate';\n const isPrintMode =\n this.props.alwaysShowCorrect &&\n (!this.props.session || !this.props.session.value || this.props.session.value.length === 0);\n\n if (isEvaluateMode || isPrintMode) {\n return choice.correct || false;\n }\n\n return this.isSelected(choice.value);\n }\n\n // renderHeading function was added for accessibility.\n renderHeading() {\n const { mode, choiceMode, classes } = this.props;\n\n if (mode !== 'gather') {\n return null;\n }\n\n return choiceMode === 'radio' ? (\n <h3 className={classes.srOnly}>Multiple Choice Question</h3>\n ) : (\n <h3 className={classes.srOnly}>Multiple Select Question</h3>\n );\n }\n\n handleGroupFocus = (e) => {\n const fieldset = e.currentTarget;\n const activeEl = document.activeElement;\n\n if (fieldset.contains(activeEl) && activeEl !== fieldset) {\n return;\n }\n\n // Only focus the first input if user is tabbing forward\n if (!e.relatedTarget || fieldset.compareDocumentPosition(e.relatedTarget) & Node.DOCUMENT_POSITION_PRECEDING) {\n if (this.firstInputRef?.current) {\n this.firstInputRef.current.focus();\n }\n }\n };\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language,\n isSelectionButtonBelow,\n minSelections,\n maxSelections,\n autoplayAudioEnabled,\n session,\n customAudioButton,\n } = this.props;\n const { showCorrect, maxSelectionsErrorState } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n const selections = (session.value && session.value.length) || 0;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n const getMultipleChoiceMinSelectionErrorMessage = () => {\n if (minSelections && maxSelections) {\n return minSelections === maxSelections\n ? translator.t('translation:multipleChoice:minmaxSelections_equal', { lng: language, minSelections })\n : translator.t('translation:multipleChoice:minmaxSelections_range', {\n lng: language,\n minSelections,\n maxSelections,\n });\n }\n\n if (minSelections) {\n return translator.t('translation:multipleChoice:minSelections', { lng: language, minSelections });\n }\n\n return '';\n };\n\n return (\n <div id={'main-container'} className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h2 className={classes.partLabel}>{partLabel}</h2>}\n\n {this.renderHeading()}\n\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 {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n <fieldset\n tabIndex={0}\n className={classes.fieldset}\n onFocus={this.handleGroupFocus}\n role={choiceMode === 'radio' ? 'radiogroup' : 'group'}\n >\n <PreviewPrompt\n className=\"prompt\"\n defaultClassName=\"prompt\"\n prompt={prompt}\n tagName={'legend'}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\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 autoFocusRef={index === 0 ? this.firstInputRef : null}\n choicesLayout={this.props.choicesLayout}\n selectedAnswerBackgroundColor={this.props.selectedAnswerBackgroundColor}\n selectedAnswerStrokeColor={this.props.selectedAnswerStrokeColor}\n selectedAnswerStrokeWidth={this.props.selectedAnswerStrokeWidth}\n hoverAnswerBackgroundColor={this.props.hoverAnswerBackgroundColor}\n hoverAnswerStrokeColor={this.props.hoverAnswerStrokeColor}\n hoverAnswerStrokeWidth={this.props.hoverAnswerStrokeWidth}\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 tagName={partLabel ? `group-${partLabel}` : 'group'}\n onChoiceChanged={this.handleChange}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n isSelectionButtonBelow={isSelectionButtonBelow}\n />\n ))}\n </div>\n </fieldset>\n\n {choiceMode === 'checkbox' && selections < minSelections && (\n <div className={classes.errorText}>{getMultipleChoiceMinSelectionErrorMessage()}</div>\n )}\n {choiceMode === 'checkbox' && maxSelectionsErrorState && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n maxSelections,\n })}\n </div>\n )}\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":["translator","Translator","styles","theme","main","color","text","backgroundColor","background","position","border","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","padding","minWidth","outline","srOnly","left","top","width","height","overflow","errorText","typography","palette","error","paddingTop","MultipleChoice","props","event","target","value","checked","maxSelections","onChoiceChanged","session","length","setState","maxSelectionsErrorState","selected","selector","mode","showCorrect","state","onShowCorrectToggle","choice","isCorrect","correct","isChecked","isSelected","undefined","e","currentTarget","activeEl","document","activeElement","contains","relatedTarget","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","firstInputRef","current","focus","alwaysShowCorrect","onToggle","bind","React","createRef","sessionValue","indexOf","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","isPrintMode","options","isEvaluateMode","choiceMode","classes","disabled","className","choices","gridColumns","prompt","responseCorrect","animationsDisabled","language","isSelectionButtonBelow","minSelections","autoplayAudioEnabled","customAudioButton","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","selections","teacherInstructionsDiv","getMultipleChoiceMinSelectionErrorMessage","t","lng","renderHeading","hidden","visible","handleGroupFocus","choicesLayout","map","selectedAnswerBackgroundColor","selectedAnswerStrokeColor","selectedAnswerStrokeWidth","hoverAnswerBackgroundColor","hoverAnswerStrokeColor","hoverAnswerStrokeWidth","handleChange","hideTick","getChecked","getCorrectness","indexToSymbol","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","number","playImage","pauseImage","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 Translator from '@pie-lib/translator';\n\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst { translator } = Translator;\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n position: 'relative',\n // remove border from legend tags inside main to override the OT default styles\n '& legend': {\n border: 'none !important',\n },\n },\n partLabel: {\n display: 'block',\n fontSize: 'inherit',\n margin: '0',\n fontWeight: 'normal',\n paddingBottom: theme.spacing.unit * 2,\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 '&:focus': {\n outline: 'none',\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n className: PropTypes.string,\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 partLabel: PropTypes.string,\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 language: PropTypes.string,\n selectedAnswerBackgroundColor: PropTypes.string,\n selectedAnswerStrokeColor: PropTypes.string,\n selectedAnswerStrokeWidth: PropTypes.string,\n hoverAnswerBackgroundColor: PropTypes.string,\n hoverAnswerStrokeColor: PropTypes.string,\n hoverAnswerStrokeWidth: PropTypes.string,\n onShowCorrectToggle: PropTypes.func,\n isSelectionButtonBelow: PropTypes.bool,\n minSelections: PropTypes.number,\n maxSelections: PropTypes.number,\n autoplayAudioEnabled: PropTypes.bool,\n customAudioButton: {\n playImage: PropTypes.string,\n pauseImage: PropTypes.string,\n },\n options: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: this.props.alwaysShowCorrect || false,\n maxSelectionsErrorState: false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n this.firstInputRef = React.createRef();\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 was added for accessibility. Please see comments and videos from PD-2441.\n handleChange = (event) => {\n const { value, checked } = event.target;\n const { maxSelections, onChoiceChanged, session } = this.props;\n\n if (session.value && session.value.length >= maxSelections) {\n // show/hide max selections error when user select/deselect an answer\n this.setState({ maxSelectionsErrorState: checked });\n\n if (checked) {\n // prevent selecting more answers\n return;\n }\n }\n\n onChoiceChanged({ value, selected: checked, selector: 'Mouse' });\n };\n\n onToggle = () => {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse && this.state.showCorrect !== false) {\n this.setState({ showCorrect: false }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n\n if (nextProps.alwaysShowCorrect && this.state.showCorrect !== true) {\n this.setState({ showCorrect: true }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\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 getChecked(choice) {\n // check for print context: options prop is passed from print.js and alwaysShowCorrect is true\n const isPrintMode = this.props.options && this.props.alwaysShowCorrect;\n \n if (isPrintMode) {\n return choice.correct || false;\n }\n\n // evaluate mode with show correct toggled\n const isEvaluateMode = this.state.showCorrect && this.props.mode === 'evaluate';\n \n if (isEvaluateMode) {\n return choice.correct || false;\n }\n\n // default behavior: show what the user has selected\n return this.isSelected(choice.value);\n }\n\n // renderHeading function was added for accessibility.\n renderHeading() {\n const { mode, choiceMode, classes } = this.props;\n\n if (mode !== 'gather') {\n return null;\n }\n\n return choiceMode === 'radio' ? (\n <h3 className={classes.srOnly}>Multiple Choice Question</h3>\n ) : (\n <h3 className={classes.srOnly}>Multiple Select Question</h3>\n );\n }\n\n handleGroupFocus = (e) => {\n const fieldset = e.currentTarget;\n const activeEl = document.activeElement;\n\n if (fieldset.contains(activeEl) && activeEl !== fieldset) {\n return;\n }\n\n // Only focus the first input if user is tabbing forward\n if (!e.relatedTarget || fieldset.compareDocumentPosition(e.relatedTarget) & Node.DOCUMENT_POSITION_PRECEDING) {\n if (this.firstInputRef?.current) {\n this.firstInputRef.current.focus();\n }\n }\n };\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language,\n isSelectionButtonBelow,\n minSelections,\n maxSelections,\n autoplayAudioEnabled,\n session,\n customAudioButton,\n } = this.props;\n const { showCorrect, maxSelectionsErrorState } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n const selections = (session.value && session.value.length) || 0;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n const getMultipleChoiceMinSelectionErrorMessage = () => {\n if (minSelections && maxSelections) {\n return minSelections === maxSelections\n ? translator.t('translation:multipleChoice:minmaxSelections_equal', { lng: language, minSelections })\n : translator.t('translation:multipleChoice:minmaxSelections_range', {\n lng: language,\n minSelections,\n maxSelections,\n });\n }\n\n if (minSelections) {\n return translator.t('translation:multipleChoice:minSelections', { lng: language, minSelections });\n }\n\n return '';\n };\n\n return (\n <div id={'main-container'} className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h2 className={classes.partLabel}>{partLabel}</h2>}\n\n {this.renderHeading()}\n\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 {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n <fieldset\n tabIndex={0}\n className={classes.fieldset}\n onFocus={this.handleGroupFocus}\n role={choiceMode === 'radio' ? 'radiogroup' : 'group'}\n >\n <PreviewPrompt\n className=\"prompt\"\n defaultClassName=\"prompt\"\n prompt={prompt}\n tagName={'legend'}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\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 autoFocusRef={index === 0 ? this.firstInputRef : null}\n choicesLayout={this.props.choicesLayout}\n selectedAnswerBackgroundColor={this.props.selectedAnswerBackgroundColor}\n selectedAnswerStrokeColor={this.props.selectedAnswerStrokeColor}\n selectedAnswerStrokeWidth={this.props.selectedAnswerStrokeWidth}\n hoverAnswerBackgroundColor={this.props.hoverAnswerBackgroundColor}\n hoverAnswerStrokeColor={this.props.hoverAnswerStrokeColor}\n hoverAnswerStrokeWidth={this.props.hoverAnswerStrokeWidth}\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 tagName={partLabel ? `group-${partLabel}` : 'group'}\n onChoiceChanged={this.handleChange}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n isSelectionButtonBelow={isSelectionButtonBelow}\n />\n ))}\n </div>\n </fieldset>\n\n {choiceMode === 'checkbox' && selections < minSelections && (\n <div className={classes.errorText}>{getMultipleChoiceMinSelectionErrorMessage()}</div>\n )}\n {choiceMode === 'checkbox' && maxSelectionsErrorState && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n maxSelections,\n })}\n </div>\n )}\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/lib/print.js
CHANGED
|
@@ -89,7 +89,8 @@ var MultipleChoicePrint = /*#__PURE__*/function (_HTMLElement) {
|
|
|
89
89
|
|
|
90
90
|
var element = _this._options && /*#__PURE__*/_react["default"].createElement(_main["default"], {
|
|
91
91
|
model: printModel,
|
|
92
|
-
session: {}
|
|
92
|
+
session: {},
|
|
93
|
+
options: _this._options
|
|
93
94
|
});
|
|
94
95
|
|
|
95
96
|
_reactDom["default"].render(element, (0, _assertThisInitialized2["default"])(_this), function () {
|
package/lib/print.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","MultipleChoicePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,mCAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,MAAN,GAAeJ,KAAK,CAACK,aAAN,KAAwB,KAAxB,GAAgCL,KAAK,CAACI,MAAtC,GAA+CE,SAA9D;AACAN,EAAAA,KAAK,CAACO,mBAAN,GACEL,KAAK,IAAIF,KAAK,CAACQ,0BAAN,KAAqC,KAA9C,GAAsDR,KAAK,CAACO,mBAA5D,GAAkFD,SADpF;AAEAN,EAAAA,KAAK,CAACS,uBAAN,GAAgCP,KAAhC;AACAF,EAAAA,KAAK,CAACU,iBAAN,GAA0BR,KAA1B;AACAF,EAAAA,KAAK,CAACW,IAAN,GAAaT,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACW,IAAxC;AAEAX,EAAAA,KAAK,CAACY,QAAN,GAAiB,IAAjB;AACAZ,EAAAA,KAAK,CAACa,kBAAN,GAA2B,IAA3B;AACAb,EAAAA,KAAK,CAACc,eAAN,GAAwB,IAAxB;AACAd,EAAAA,KAAK,CAACe,aAAN,GAAsBf,KAAK,CAACe,aAAN,IAAuB,UAA7C;AAEA,MAAMC,OAAO,GAAG,2BAAUhB,KAAK,CAACgB,OAAhB,CAAhB;AAEAhB,EAAAA,KAAK,CAACgB,OAAN,GAAgBA,OAAO,CAACC,GAAR,CAAY,UAACC,CAAD,EAAO;AACjCA,IAAAA,CAAC,CAACC,SAAF,GAAcjB,KAAK,IAAIF,KAAK,CAACoB,gBAAN,KAA2B,KAApC,GAA4CF,CAAC,CAACC,SAA9C,GAA0Db,SAAxE;AACAY,IAAAA,CAAC,CAACG,QAAF,GAAanB,KAAb;AACAgB,IAAAA,CAAC,CAACI,QAAF,GAAahB,SAAb;AACA,WAAOY,CAAP;AACD,GALe,CAAhB;AAOAlB,EAAAA,KAAK,CAACuB,OAAN,GAAgBvB,KAAK,CAACwB,YAAN,IAAsB,SAAtC;AAEA,SAAOxB,KAAP;AACD,CA3BD;;IA6BqByB,mB;;;;;AACnB,iCAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAG/B,iBAAiB,CAAC,MAAK4B,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxBlC,UAAAA,KAAK,EAAE8B,UADiB;AAExBK,UAAAA,OAAO,EAAE;
|
|
1
|
+
{"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","MultipleChoicePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","options","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport cloneDeep from 'lodash/cloneDeep';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:multiple-choice:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nexport default class MultipleChoicePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n model: printModel,\n session: {},\n options: this._options,\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
|
package/module/configure.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_dll_react as e,_dll_prop_types as t,_dll_material_ui__core_styles as o,_dll_material_ui__core as i,_dll_material_ui__icons as n,_dll_lodash as a,_dll_pie_lib__render_ui as s,_dll_debug as l,_dll_react_dom as r}from"../../../@pie-lib/shared-module@^1.14.0/module/index.js";import{_dll_pie_lib__config_ui as c}from"../../../@pie-lib/config-module@^2.19.0/module/index.js";import{_dll_pie_lib__editable_html as d}from"../../../@pie-lib/editable-html-module@^5.6.0/module/index.js";var h={};Object.defineProperty(h,"__esModule",{value:!0});class u extends CustomEvent{constructor(e,t=!1){super(u.TYPE,{bubbles:!0,detail:{update:e,reset:t}}),this.update=e,this.reset=t}}u.TYPE="model.updated";var p=h.ModelUpdatedEvent=u;class g extends CustomEvent{constructor(e,t){super(g.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}g.TYPE="delete.image";var m=h.DeleteImageEvent=g;class b extends CustomEvent{constructor(e){super(b.TYPE,{bubbles:!0,detail:e}),this.handler=e}}b.TYPE="insert.image";var C=h.InsertImageEvent=b;class _ extends CustomEvent{constructor(e,t){super(_.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}_.TYPE="delete.sound";var f=h.DeleteSoundEvent=_;class E extends CustomEvent{constructor(e){super(E.TYPE,{bubbles:!0,detail:e}),this.handler=e}}E.TYPE="insert.sound";var v=h.InsertSoundEvent=E;const S=e,x=t,{color:y}=s,{withStyles:I}=o,{Button:A}=i,{Tooltip:M}=i,{Typography:P}=i,{Info:T}=n,{merge:w}=a,k=d,{AlertDialog:L}=c,{InputContainer:O}=c,{ChoiceConfiguration:R}=c,{settings:N}=c,{layout:D}=c,{choiceUtils:q}=c;function H(e){let t,o=e[0],i=1;for(;i<e.length;){const n=e[i],a=e[i+1];if(i+=2,("optionalAccess"===n||"optionalCall"===n)&&null==o)return;"access"===n||"optionalAccess"===n?(t=o,o=a(o)):"call"!==n&&"optionalCall"!==n||(o=a(((...e)=>o.call(t,...e))),t=void 0)}return o}const{Panel:B,toggle:W,radio:z,dropdown:Y}=N,j=e=>({promptHolder:{width:"100%",paddingTop:2*e.spacing.unit,marginBottom:2*e.spacing.unit},rationaleHolder:{flex:1,marginTop:1.5*e.spacing.unit,paddingTop:2*e.spacing.unit,marginLeft:3.5*e.spacing.unit},choiceConfigurationHolder:{display:"flex",flexDirection:"column",marginBottom:e.spacing.unit},choiceConfiguration:{width:"100%"},switchElement:{justifyContent:"space-between",margin:0},addButton:{marginTop:e.spacing.unit,float:"right"},disableButton:{cursor:"not-allowed",pointerEvents:"all",backgroundColor:y.disabled(),"&:hover":{backgroundColor:y.disabled()},"&:focus":{backgroundColor:y.disabled()}},flexContainer:{display:"flex",alignItems:"center"},titleText:{fontSize:e.typography.fontSize+2,marginRight:e.spacing.unit},tooltip:{fontSize:e.typography.fontSize-2,whiteSpace:"pre",maxWidth:"500px"},errorText:{fontSize:e.typography.fontSize-2,color:e.palette.error.main,paddingTop:e.spacing.unit}}),$=I(j)((e=>{const{classes:t,model:o,configuration:i,onPromptChanged:n,onChoiceChanged:a,onRemoveChoice:s,onAddChoice:l,imageSupport:r,uploadSoundSupport:c,onChangeModel:d,onConfigurationChanged:h,onTeacherInstructionsChanged:u}=e,{addChoiceButton:p={},contentDimensions:g={},feedback:m={},deleteChoice:b={},choiceMode:C={},choicePrefix:_={},partialScoring:f={},lockChoiceOrder:E={},teacherInstructions:v={},studentInstructions:x={},rationale:y={},scoringType:I={},sequentialChoiceLabels:w={},settingsPanelDisabled:L,choicesLayout:N,spellCheck:q={},gridColumns:j,maxImageWidth:$={},maxImageHeight:U={},prompt:F={},withRubric:G={},mathMlOptions:V={},language:J={},languageChoices:K={}}=i||{};let{maxAnswerChoices:Q}=i||{};const{limitChoicesNumber:X,teacherInstructionsEnabled:Z,rationaleEnabled:ee,feedbackEnabled:te,promptEnabled:oe,spellCheckEnabled:ie,choices:ne,errors:ae,toolbarEditorPosition:se,extraCSSRules:le}=o||{},{answerChoices:re,choices:ce,correctResponse:de,prompt:he,rationale:ue,teacherInstructions:pe}=ae||{},ge=H([ne,"optionalAccess",e=>e.length])?Array.from({length:ne.length},((e,t)=>`${t+1}`)):[],{baseInputConfiguration:me={}}=i,be={position:"top"===se?"top":"bottom"};X&&(Q=9);const Ce=(e={})=>({...me,...e}),_e=(e=>{const{minAnswerChoices:t,maxAnswerChoices:o}=e;return`Validation requirements:\nThere should be at least ${t} `+(o?`and at most ${o} `:"")+"answer choices defined.\nEvery answer choice should be non-blank and unique.\nA correct answer must be defined."})(i),fe=$&&$.prompt,Ee=U&&U.prompt,ve=Q&&H([ne,"optionalAccess",e=>e.length])>=Q?`Only ${Q} allowed maximum`:"",Se={choiceMode:C.settings&&z(C.label,["checkbox","radio"]),"sequentialChoiceLabels.enabled":w.settings&&W(w.label,!0),choicePrefix:_.settings&&z(_.label,["numbers","letters"]),partialScoring:f.settings&&W(f.label),lockChoiceOrder:E.settings&&W(E.label),feedbackEnabled:m.settings&&W(m.label),choicesLayout:N.settings&&Y(N.label,["vertical","grid","horizontal"]),gridColumns:N.settings&&"grid"===o.choicesLayout&&ge.length>0&&Y(j.label,ge),"language.enabled":J.settings&&W(J.label,!0),language:J.settings&&J.enabled&&Y(K.label,K.options)},xe={teacherInstructionsEnabled:v.settings&&W(v.label),studentInstructionsEnabled:x.settings&&W(x.label),promptEnabled:F.settings&&W(F.label),rationaleEnabled:y.settings&&W(y.label),spellCheckEnabled:q.settings&&W(q.label),scoringType:I.settings&&z(I.label,["auto","rubric"]),rubricEnabled:H([G,"optionalAccess",e=>e.settings])&&W(H([G,"optionalAccess",e=>e.label]))};return S.createElement(D.ConfigLayout,{dimensions:g,hideSettings:L,extraCSSRules:le,settings:S.createElement(B,{model:o,onChangeModel:d,configuration:i,onChangeConfiguration:h,groups:{Settings:Se,Properties:xe}})},Z&&S.createElement(O,{label:v.label,className:t.promptHolder},S.createElement(k,{className:t.prompt,markup:o.teacherInstructions||"",onChange:u,imageSupport:r,nonEmpty:!1,error:pe,toolbarOpts:be,pluginProps:Ce(H([i,"optionalAccess",e=>e.teacherInstructions,"optionalAccess",e=>e.inputConfiguration])),spellCheck:ie,maxImageWidth:$&&$.teacherInstructions||fe,maxImageHeight:U&&U.teacherInstructions||Ee,uploadSoundSupport:c,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:V}),pe&&S.createElement("div",{className:t.errorText},pe)),oe&&S.createElement(O,{label:F.label,className:t.promptHolder},S.createElement(k,{className:t.prompt,markup:o.prompt,onChange:n,imageSupport:r,nonEmpty:!1,disableUnderline:!0,error:he,toolbarOpts:be,pluginProps:Ce(H([i,"optionalAccess",e=>e.prompt,"optionalAccess",e=>e.inputConfiguration])),spellCheck:ie,maxImageWidth:$&&$.prompt,maxImageHeight:U&&U.prompt,uploadSoundSupport:c,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:V}),he&&S.createElement("div",{className:t.errorText},he)),S.createElement("div",{className:t.flexContainer},S.createElement(P,{className:t.titleText,component:"div"},"Choices"),S.createElement(M,{classes:{tooltip:t.tooltip},disableFocusListener:!0,disableTouchListener:!0,placement:"right",title:_e},S.createElement(T,{fontSize:"small",color:"primary"}))),ne.map(((e,n)=>S.createElement("div",{key:`choice-${n}`,className:t.choiceConfigurationHolder},S.createElement(R,{key:n,index:n+1,useLetterOrdering:"letters"===o.choicePrefix,className:t.choiceConfiguration,mode:o.choiceMode,data:e,defaultFeedback:{},imageSupport:r,disableImageAlignmentButtons:!0,onDelete:()=>s(n),onChange:e=>a(n,e),allowFeedBack:te,allowDelete:b.settings,noLabels:!0,pluginOpts:Ce(H([i,"optionalAccess",e=>e.choices,"optionalAccess",e=>e.inputConfiguration])),toolbarOpts:be,spellCheck:ie,error:H([ce,"optionalAccess",t=>t[e.value]])||null,noCorrectAnswerError:de,maxImageWidth:$&&$.choices||fe,maxImageHeight:U&&U.choices||Ee,uploadSoundSupport:c,mathMlOptions:V}),ee&&S.createElement(O,{key:`rationale-${n}`,label:y.label,className:t.rationaleHolder},S.createElement(k,{className:t.rationale,markup:e.rationale||"",onChange:t=>a(n,{...e,rationale:t}),imageSupport:r,error:H([ue,"optionalAccess",t=>t[e.value]])||null,toolbarOpts:be,pluginProps:Ce(H([i,"optionalAccess",e=>e.rationale,"optionalAccess",e=>e.inputConfiguration])),spellCheck:ie,maxImageWidth:$&&$.rationale||fe,maxImageHeight:U&&U.rationale||Ee,uploadSoundSupport:c,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:V}),H([ue,"optionalAccess",t=>t[e.value]])&&S.createElement("div",{className:t.errorText},H([ue,"optionalAccess",t=>t[e.value]])))))),de&&S.createElement("div",{className:t.errorText},de),re&&S.createElement("div",{className:t.errorText},re),p.settings&&S.createElement(M,{title:ve,classes:{tooltip:t.tooltip}},S.createElement(A,{classes:{root:Q&&H([ne,"optionalAccess",e=>e.length])>=Q&&t.disableButton},className:t.addButton,variant:"contained",color:"primary",onClick:l},p.label)))}));class U extends S.Component{constructor(...e){super(...e),U.prototype.__init.call(this),U.prototype.__init2.call(this),U.prototype.__init3.call(this),U.prototype.__init4.call(this),U.prototype.__init5.call(this),U.prototype.__init6.call(this),U.prototype.__init7.call(this)}static __initStatic(){this.propTypes={model:x.object.isRequired,configuration:x.object.isRequired,disableSidePanel:x.bool,onModelChanged:x.func.isRequired,onConfigurationChanged:x.func.isRequired,classes:x.object.isRequired,imageSupport:x.shape({add:x.func.isRequired,delete:x.func.isRequired})}}__init(){this.state={showWarning:!1}}__init2(){this.onRemoveChoice=e=>{const{model:t,configuration:o,onModelChanged:i}=this.props,{minAnswerChoices:n}=o||{};n&&t.choices.length===n?this.setState({showWarning:!0}):(t.choices.splice(e,1),i(t))}}__init3(){this.onAddChoice=()=>{const{model:e,configuration:t,onModelChanged:o}=this.props;let{maxAnswerChoices:i}=t||{};const{limitChoicesNumber:n}=e||{};n&&(i=9),i&&e.choices.length>=i||(e.choices.push({label:"",value:q.firstAvailableIndex(e.choices.map((e=>e.value)),0),feedback:{type:"none"}}),o(e))}}__init4(){this.onChoiceChanged=(e,t)=>{const{model:o,onModelChanged:i}=this.props;t.correct&&"radio"===o.choiceMode&&(o.choices=o.choices.map((e=>w({},e,{correct:!1})))),o.choices.splice(e,1,t),i(o)}}__init5(){this.onPromptChanged=e=>{this.props.onModelChanged({...this.props.model,prompt:e})}}__init6(){this.onTeacherInstructionsChanged=e=>{this.props.onModelChanged({...this.props.model,teacherInstructions:e})}}__init7(){this.onModelChanged=(e,t)=>{const{onModelChanged:o}=this.props;if("choiceMode"===t){if("radio"===e.choiceMode){let t=!1;e.choices=e.choices.map((e=>t?(e.correct=!1,e):(e.correct&&(t=!0),e)))}o(e,!0)}else o(e)}}render(){const{configuration:{minAnswerChoices:e}={}}=this.props,{showWarning:t}=this.state;return S.createElement(S.Fragment,null,S.createElement(L,{open:t,title:"Warning",text:`There can't be less than ${e||0} choices.`,onConfirm:()=>this.setState({showWarning:!1})}),S.createElement($,{...this.props,onChangeModel:this.onModelChanged,onRemoveChoice:this.onRemoveChoice,onChoiceChanged:this.onChoiceChanged,onAddChoice:this.onAddChoice,onPromptChanged:this.onPromptChanged,onTeacherInstructionsChanged:this.onTeacherInstructionsChanged}))}}U.__initStatic();const F=I(j)(U);var G={choiceMode:"checkbox",choicePrefix:"letters",choices:[],choicesLayout:"vertical",feedbackEnabled:!1,gridColumns:2,lockChoiceOrder:!0,partialScoring:!0,prompt:"",promptEnabled:!0,rationale:"",rationaleEnabled:!0,scoringType:"auto",studentInstructionsEnabled:!0,teacherInstructions:"",teacherInstructionsEnabled:!0,toolbarEditorPosition:"bottom",selectedAnswerBackgroundColor:"initial",keyboardEventsEnabled:!1},V={baseInputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1},textAlign:{disabled:!0},showParagraphs:{disabled:!1},separateParagraphs:{disabled:!0}},choices:{inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}}},spellCheck:{label:"Spellcheck",settings:!1,enabled:!0},choicesLayout:{settings:!1,label:"Choices Layout"},gridColumns:{label:"Grid columns"},answerChoiceCount:0,addChoiceButton:{settings:!0,label:"Add a Choice"},choiceMode:{settings:!0,label:"Response Type"},choicePrefix:{settings:!0,label:"Choice Labels"},deleteChoice:{settings:!0},feedback:{settings:!0,label:"Feedback"},prompt:{settings:!0,label:"Prompt",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},lockChoiceOrder:{settings:!0,label:"Lock Choice Order"},partialScoring:{settings:!1,label:"Allow Partial Scoring"},rationale:{settings:!0,label:"Rationale",inputConfiguration:{audio:{disabled:!0},video:{disabled:!0},image:{disabled:!1}},required:!1},scoringType:{settings:!1,label:"Scoring Type"},studentInstructions:{settings:!1,label:"Student Instructions"},teacherInstructions:{settings:!0,label:"Teacher Instructions",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},toolbarEditorPosition:{settings:!1,label:"Toolbar Editor Position"},minAnswerChoices:2,maxAnswerChoices:5,maxImageWidth:{teacherInstructions:300,prompt:300,rationale:636,choices:900},maxImageHeight:{teacherInstructions:300,prompt:300,rationale:300,choices:300},withRubric:{settings:!1,label:"Add Rubric"},mathMlOptions:{mmlOutput:!1,mmlEditing:!1},language:{settings:!1,label:"Specify Language",enabled:!1},languageChoices:{label:"Language Choices",options:[]}};const J=e,K=r,Q=l,{defaults:X}=a,{choiceUtils:Z}=c;function ee(e){let t,o=e[0],i=1;for(;i<e.length;){const n=e[i],a=e[i+1];if(i+=2,("optionalAccess"===n||"optionalCall"===n)&&null==o)return;"access"===n||"optionalAccess"===n?(t=o,o=a(o)):"call"!==n&&"optionalCall"!==n||(o=a(((...e)=>o.call(t,...e))),t=void 0)}return o}const te=Q("multiple-choice:configure"),oe=(e,t=0)=>{if(!e||0===e.length){let e=[];for(let o=0;o<t;o++)e.push({value:`${o}`,label:"",feedback:{type:"none",value:""}});return e}return e},ie=(e,t)=>{const o=X(e,V);return{configuration:o,model:{...t,choices:oe(t&&t.choices||[],o&&o.answerChoiceCount)}}};class ne extends HTMLElement{static __initStatic(){this.createDefaultModel=(e={})=>{const t=Z.normalizeChoices({...G,...e,choices:oe(e&&e.choices||[])});return t.choicesLayout=e.choicesLayout||!1===e.verticalMode&&"horizontal"||G.choicesLayout,t}}constructor(){super(),this._model=ne.createDefaultModel(),this._configuration=V,this.onModelChanged=this.onModelChanged.bind(this),this.onConfigurationChanged=this.onConfigurationChanged.bind(this)}set model(e){this._model=ne.createDefaultModel(e),this._render()}set configuration(e){const t=ie(e,this._model);this.onModelChanged(t.model);const o={...V,...t.configuration};this._configuration=o,ee([o,"optionalAccess",e=>e.language,"optionalAccess",e=>e.enabled])?ee([o,"optionalAccess",e=>e.languageChoices,"optionalAccess",e=>e.options,"optionalAccess",e=>e.length])&&(this._model.language=ee([o,"optionalAccess",e=>e.languageChoices,"access",e=>e.options,"access",e=>e[0],"access",e=>e.value])):o.language.settings&&this._model.language?(this._configuration.language.enabled=!0,this._configuration.languageChoices.options&&this._configuration.languageChoices.options.length||(this._configuration.languageChoices.options=[]),this._configuration.languageChoices.options.find((e=>e.value===this._model.language))||this._configuration.languageChoices.options.push({value:this._model.language,label:this._model.language})):delete this._model.language,this._render()}set disableSidePanel(e){this._disableSidePanel=e,this._render()}dispatchModelUpdated(e){const t=!!e;this.dispatchEvent(new p(this._model,t))}onModelChanged(e,t){this._model=e,this._render(),this.dispatchModelUpdated(t)}onConfigurationChanged(e){this._configuration=ie(e,this._model).configuration,this._model&&this.onModelChanged(this._model),this._render()}insertImage(e){this.dispatchEvent(new C(e))}onDeleteImage(e,t){this.dispatchEvent(new m(e,t))}insertSound(e){this.dispatchEvent(new v(e))}onDeleteSound(e,t){this.dispatchEvent(new f(e,t))}_render(){te("_render");let e=J.createElement(F,{model:this._model,configuration:this._configuration,onModelChanged:this.onModelChanged,onConfigurationChanged:this.onConfigurationChanged,disableSidePanel:this._disableSidePanel,imageSupport:{add:this.insertImage.bind(this),delete:this.onDeleteImage.bind(this)},uploadSoundSupport:{add:this.insertSound.bind(this),delete:this.onDeleteSound.bind(this)}});K.render(e,this)}}ne.__initStatic();export{ne as default};
|
|
1
|
+
import{_dll_react as e,_dll_prop_types as t,_dll_material_ui__core_styles as o,_dll_material_ui__core as i,_dll_material_ui__icons as n,_dll_lodash as a,_dll_pie_lib__render_ui as s,_dll_debug as l,_dll_react_dom as r}from"../../../@pie-lib/shared-module@^1.14.5/module/index.js";import{_dll_pie_lib__config_ui as c}from"../../../@pie-lib/config-module@^2.19.5/module/index.js";import{_dll_pie_lib__editable_html as d}from"../../../@pie-lib/editable-html-module@^5.6.5/module/index.js";var h={};Object.defineProperty(h,"__esModule",{value:!0});class u extends CustomEvent{constructor(e,t=!1){super(u.TYPE,{bubbles:!0,detail:{update:e,reset:t}}),this.update=e,this.reset=t}}u.TYPE="model.updated";var p=h.ModelUpdatedEvent=u;class g extends CustomEvent{constructor(e,t){super(g.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}g.TYPE="delete.image";var m=h.DeleteImageEvent=g;class b extends CustomEvent{constructor(e){super(b.TYPE,{bubbles:!0,detail:e}),this.handler=e}}b.TYPE="insert.image";var C=h.InsertImageEvent=b;class _ extends CustomEvent{constructor(e,t){super(_.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}_.TYPE="delete.sound";var f=h.DeleteSoundEvent=_;class E extends CustomEvent{constructor(e){super(E.TYPE,{bubbles:!0,detail:e}),this.handler=e}}E.TYPE="insert.sound";var v=h.InsertSoundEvent=E;const S=e,x=t,{color:y}=s,{withStyles:I}=o,{Button:A}=i,{Tooltip:M}=i,{Typography:P}=i,{Info:T}=n,{merge:w}=a,k=d,{AlertDialog:L}=c,{InputContainer:O}=c,{ChoiceConfiguration:R}=c,{settings:N}=c,{layout:D}=c,{choiceUtils:q}=c;function H(e){let t,o=e[0],i=1;for(;i<e.length;){const n=e[i],a=e[i+1];if(i+=2,("optionalAccess"===n||"optionalCall"===n)&&null==o)return;"access"===n||"optionalAccess"===n?(t=o,o=a(o)):"call"!==n&&"optionalCall"!==n||(o=a(((...e)=>o.call(t,...e))),t=void 0)}return o}const{Panel:B,toggle:W,radio:z,dropdown:Y}=N,j=e=>({promptHolder:{width:"100%",paddingTop:2*e.spacing.unit,marginBottom:2*e.spacing.unit},rationaleHolder:{flex:1,marginTop:1.5*e.spacing.unit,paddingTop:2*e.spacing.unit,marginLeft:3.5*e.spacing.unit},choiceConfigurationHolder:{display:"flex",flexDirection:"column",marginBottom:e.spacing.unit},choiceConfiguration:{width:"100%"},switchElement:{justifyContent:"space-between",margin:0},addButton:{marginTop:e.spacing.unit,float:"right"},disableButton:{cursor:"not-allowed",pointerEvents:"all",backgroundColor:y.disabled(),"&:hover":{backgroundColor:y.disabled()},"&:focus":{backgroundColor:y.disabled()}},flexContainer:{display:"flex",alignItems:"center"},titleText:{fontSize:e.typography.fontSize+2,marginRight:e.spacing.unit},tooltip:{fontSize:e.typography.fontSize-2,whiteSpace:"pre",maxWidth:"500px"},errorText:{fontSize:e.typography.fontSize-2,color:e.palette.error.main,paddingTop:e.spacing.unit}}),$=I(j)((e=>{const{classes:t,model:o,configuration:i,onPromptChanged:n,onChoiceChanged:a,onRemoveChoice:s,onAddChoice:l,imageSupport:r,uploadSoundSupport:c,onChangeModel:d,onConfigurationChanged:h,onTeacherInstructionsChanged:u}=e,{addChoiceButton:p={},contentDimensions:g={},feedback:m={},deleteChoice:b={},choiceMode:C={},choicePrefix:_={},partialScoring:f={},lockChoiceOrder:E={},teacherInstructions:v={},studentInstructions:x={},rationale:y={},scoringType:I={},sequentialChoiceLabels:w={},settingsPanelDisabled:L,choicesLayout:N,spellCheck:q={},gridColumns:j,maxImageWidth:$={},maxImageHeight:U={},prompt:F={},withRubric:G={},mathMlOptions:V={},language:J={},languageChoices:K={}}=i||{};let{maxAnswerChoices:Q}=i||{};const{limitChoicesNumber:X,teacherInstructionsEnabled:Z,rationaleEnabled:ee,feedbackEnabled:te,promptEnabled:oe,spellCheckEnabled:ie,choices:ne,errors:ae,toolbarEditorPosition:se,extraCSSRules:le}=o||{},{answerChoices:re,choices:ce,correctResponse:de,prompt:he,rationale:ue,teacherInstructions:pe}=ae||{},ge=H([ne,"optionalAccess",e=>e.length])?Array.from({length:ne.length},((e,t)=>`${t+1}`)):[],{baseInputConfiguration:me={}}=i,be={position:"top"===se?"top":"bottom"};X&&(Q=9);const Ce=(e={})=>({...me,...e}),_e=(e=>{const{minAnswerChoices:t,maxAnswerChoices:o}=e;return`Validation requirements:\nThere should be at least ${t} `+(o?`and at most ${o} `:"")+"answer choices defined.\nEvery answer choice should be non-blank and unique.\nA correct answer must be defined."})(i),fe=$&&$.prompt,Ee=U&&U.prompt,ve=Q&&H([ne,"optionalAccess",e=>e.length])>=Q?`Only ${Q} allowed maximum`:"",Se={choiceMode:C.settings&&z(C.label,["checkbox","radio"]),"sequentialChoiceLabels.enabled":w.settings&&W(w.label,!0),choicePrefix:_.settings&&z(_.label,["numbers","letters"]),partialScoring:f.settings&&W(f.label),lockChoiceOrder:E.settings&&W(E.label),feedbackEnabled:m.settings&&W(m.label),choicesLayout:N.settings&&Y(N.label,["vertical","grid","horizontal"]),gridColumns:N.settings&&"grid"===o.choicesLayout&&ge.length>0&&Y(j.label,ge),"language.enabled":J.settings&&W(J.label,!0),language:J.settings&&J.enabled&&Y(K.label,K.options)},xe={teacherInstructionsEnabled:v.settings&&W(v.label),studentInstructionsEnabled:x.settings&&W(x.label),promptEnabled:F.settings&&W(F.label),rationaleEnabled:y.settings&&W(y.label),spellCheckEnabled:q.settings&&W(q.label),scoringType:I.settings&&z(I.label,["auto","rubric"]),rubricEnabled:H([G,"optionalAccess",e=>e.settings])&&W(H([G,"optionalAccess",e=>e.label]))};return S.createElement(D.ConfigLayout,{dimensions:g,hideSettings:L,extraCSSRules:le,settings:S.createElement(B,{model:o,onChangeModel:d,configuration:i,onChangeConfiguration:h,groups:{Settings:Se,Properties:xe}})},Z&&S.createElement(O,{label:v.label,className:t.promptHolder},S.createElement(k,{className:t.prompt,markup:o.teacherInstructions||"",onChange:u,imageSupport:r,nonEmpty:!1,error:pe,toolbarOpts:be,pluginProps:Ce(H([i,"optionalAccess",e=>e.teacherInstructions,"optionalAccess",e=>e.inputConfiguration])),spellCheck:ie,maxImageWidth:$&&$.teacherInstructions||fe,maxImageHeight:U&&U.teacherInstructions||Ee,uploadSoundSupport:c,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:V}),pe&&S.createElement("div",{className:t.errorText},pe)),oe&&S.createElement(O,{label:F.label,className:t.promptHolder},S.createElement(k,{className:t.prompt,markup:o.prompt,onChange:n,imageSupport:r,nonEmpty:!1,disableUnderline:!0,error:he,toolbarOpts:be,pluginProps:Ce(H([i,"optionalAccess",e=>e.prompt,"optionalAccess",e=>e.inputConfiguration])),spellCheck:ie,maxImageWidth:$&&$.prompt,maxImageHeight:U&&U.prompt,uploadSoundSupport:c,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:V}),he&&S.createElement("div",{className:t.errorText},he)),S.createElement("div",{className:t.flexContainer},S.createElement(P,{className:t.titleText,component:"div"},"Choices"),S.createElement(M,{classes:{tooltip:t.tooltip},disableFocusListener:!0,disableTouchListener:!0,placement:"right",title:_e},S.createElement(T,{fontSize:"small",color:"primary"}))),ne.map(((e,n)=>S.createElement("div",{key:`choice-${n}`,className:t.choiceConfigurationHolder},S.createElement(R,{key:n,index:n+1,useLetterOrdering:"letters"===o.choicePrefix,className:t.choiceConfiguration,mode:o.choiceMode,data:e,defaultFeedback:{},imageSupport:r,disableImageAlignmentButtons:!0,onDelete:()=>s(n),onChange:e=>a(n,e),allowFeedBack:te,allowDelete:b.settings,noLabels:!0,pluginOpts:Ce(H([i,"optionalAccess",e=>e.choices,"optionalAccess",e=>e.inputConfiguration])),toolbarOpts:be,spellCheck:ie,error:H([ce,"optionalAccess",t=>t[e.value]])||null,noCorrectAnswerError:de,maxImageWidth:$&&$.choices||fe,maxImageHeight:U&&U.choices||Ee,uploadSoundSupport:c,mathMlOptions:V}),ee&&S.createElement(O,{key:`rationale-${n}`,label:y.label,className:t.rationaleHolder},S.createElement(k,{className:t.rationale,markup:e.rationale||"",onChange:t=>a(n,{...e,rationale:t}),imageSupport:r,error:H([ue,"optionalAccess",t=>t[e.value]])||null,toolbarOpts:be,pluginProps:Ce(H([i,"optionalAccess",e=>e.rationale,"optionalAccess",e=>e.inputConfiguration])),spellCheck:ie,maxImageWidth:$&&$.rationale||fe,maxImageHeight:U&&U.rationale||Ee,uploadSoundSupport:c,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:V}),H([ue,"optionalAccess",t=>t[e.value]])&&S.createElement("div",{className:t.errorText},H([ue,"optionalAccess",t=>t[e.value]])))))),de&&S.createElement("div",{className:t.errorText},de),re&&S.createElement("div",{className:t.errorText},re),p.settings&&S.createElement(M,{title:ve,classes:{tooltip:t.tooltip}},S.createElement(A,{classes:{root:Q&&H([ne,"optionalAccess",e=>e.length])>=Q&&t.disableButton},className:t.addButton,variant:"contained",color:"primary",onClick:l},p.label)))}));class U extends S.Component{constructor(...e){super(...e),U.prototype.__init.call(this),U.prototype.__init2.call(this),U.prototype.__init3.call(this),U.prototype.__init4.call(this),U.prototype.__init5.call(this),U.prototype.__init6.call(this),U.prototype.__init7.call(this)}static __initStatic(){this.propTypes={model:x.object.isRequired,configuration:x.object.isRequired,disableSidePanel:x.bool,onModelChanged:x.func.isRequired,onConfigurationChanged:x.func.isRequired,classes:x.object.isRequired,imageSupport:x.shape({add:x.func.isRequired,delete:x.func.isRequired})}}__init(){this.state={showWarning:!1}}__init2(){this.onRemoveChoice=e=>{const{model:t,configuration:o,onModelChanged:i}=this.props,{minAnswerChoices:n}=o||{};n&&t.choices.length===n?this.setState({showWarning:!0}):(t.choices.splice(e,1),i(t))}}__init3(){this.onAddChoice=()=>{const{model:e,configuration:t,onModelChanged:o}=this.props;let{maxAnswerChoices:i}=t||{};const{limitChoicesNumber:n}=e||{};n&&(i=9),i&&e.choices.length>=i||(e.choices.push({label:"",value:q.firstAvailableIndex(e.choices.map((e=>e.value)),0),feedback:{type:"none"}}),o(e))}}__init4(){this.onChoiceChanged=(e,t)=>{const{model:o,onModelChanged:i}=this.props;t.correct&&"radio"===o.choiceMode&&(o.choices=o.choices.map((e=>w({},e,{correct:!1})))),o.choices.splice(e,1,t),i(o)}}__init5(){this.onPromptChanged=e=>{this.props.onModelChanged({...this.props.model,prompt:e})}}__init6(){this.onTeacherInstructionsChanged=e=>{this.props.onModelChanged({...this.props.model,teacherInstructions:e})}}__init7(){this.onModelChanged=(e,t)=>{const{onModelChanged:o}=this.props;if("choiceMode"===t){if("radio"===e.choiceMode){let t=!1;e.choices=e.choices.map((e=>t?(e.correct=!1,e):(e.correct&&(t=!0),e)))}o(e,!0)}else o(e)}}render(){const{configuration:{minAnswerChoices:e}={}}=this.props,{showWarning:t}=this.state;return S.createElement(S.Fragment,null,S.createElement(L,{open:t,title:"Warning",text:`There can't be less than ${e||0} choices.`,onConfirm:()=>this.setState({showWarning:!1})}),S.createElement($,{...this.props,onChangeModel:this.onModelChanged,onRemoveChoice:this.onRemoveChoice,onChoiceChanged:this.onChoiceChanged,onAddChoice:this.onAddChoice,onPromptChanged:this.onPromptChanged,onTeacherInstructionsChanged:this.onTeacherInstructionsChanged}))}}U.__initStatic();const F=I(j)(U);var G={choiceMode:"checkbox",choicePrefix:"letters",choices:[],choicesLayout:"vertical",feedbackEnabled:!1,gridColumns:2,lockChoiceOrder:!0,partialScoring:!0,prompt:"",promptEnabled:!0,rationale:"",rationaleEnabled:!0,scoringType:"auto",studentInstructionsEnabled:!0,teacherInstructions:"",teacherInstructionsEnabled:!0,toolbarEditorPosition:"bottom",selectedAnswerBackgroundColor:"initial",keyboardEventsEnabled:!1},V={baseInputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1},textAlign:{disabled:!0},showParagraphs:{disabled:!1},separateParagraphs:{disabled:!0}},choices:{inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}}},spellCheck:{label:"Spellcheck",settings:!1,enabled:!0},choicesLayout:{settings:!1,label:"Choices Layout"},gridColumns:{label:"Grid columns"},answerChoiceCount:0,addChoiceButton:{settings:!0,label:"Add a Choice"},choiceMode:{settings:!0,label:"Response Type"},choicePrefix:{settings:!0,label:"Choice Labels"},deleteChoice:{settings:!0},feedback:{settings:!0,label:"Feedback"},prompt:{settings:!0,label:"Prompt",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},lockChoiceOrder:{settings:!0,label:"Lock Choice Order"},partialScoring:{settings:!1,label:"Allow Partial Scoring"},rationale:{settings:!0,label:"Rationale",inputConfiguration:{audio:{disabled:!0},video:{disabled:!0},image:{disabled:!1}},required:!1},scoringType:{settings:!1,label:"Scoring Type"},studentInstructions:{settings:!1,label:"Student Instructions"},teacherInstructions:{settings:!0,label:"Teacher Instructions",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},toolbarEditorPosition:{settings:!1,label:"Toolbar Editor Position"},minAnswerChoices:2,maxAnswerChoices:5,maxImageWidth:{teacherInstructions:300,prompt:300,rationale:636,choices:900},maxImageHeight:{teacherInstructions:300,prompt:300,rationale:300,choices:300},withRubric:{settings:!1,label:"Add Rubric"},mathMlOptions:{mmlOutput:!1,mmlEditing:!1},language:{settings:!1,label:"Specify Language",enabled:!1},languageChoices:{label:"Language Choices",options:[]}};const J=e,K=r,Q=l,{defaults:X}=a,{choiceUtils:Z}=c;function ee(e){let t,o=e[0],i=1;for(;i<e.length;){const n=e[i],a=e[i+1];if(i+=2,("optionalAccess"===n||"optionalCall"===n)&&null==o)return;"access"===n||"optionalAccess"===n?(t=o,o=a(o)):"call"!==n&&"optionalCall"!==n||(o=a(((...e)=>o.call(t,...e))),t=void 0)}return o}const te=Q("multiple-choice:configure"),oe=(e,t=0)=>{if(!e||0===e.length){let e=[];for(let o=0;o<t;o++)e.push({value:`${o}`,label:"",feedback:{type:"none",value:""}});return e}return e},ie=(e,t)=>{const o=X(e,V);return{configuration:o,model:{...t,choices:oe(t&&t.choices||[],o&&o.answerChoiceCount)}}};class ne extends HTMLElement{static __initStatic(){this.createDefaultModel=(e={})=>{const t=Z.normalizeChoices({...G,...e,choices:oe(e&&e.choices||[])});return t.choicesLayout=e.choicesLayout||!1===e.verticalMode&&"horizontal"||G.choicesLayout,t}}constructor(){super(),this._model=ne.createDefaultModel(),this._configuration=V,this.onModelChanged=this.onModelChanged.bind(this),this.onConfigurationChanged=this.onConfigurationChanged.bind(this)}set model(e){this._model=ne.createDefaultModel(e),this._render()}set configuration(e){const t=ie(e,this._model);this.onModelChanged(t.model);const o={...V,...t.configuration};this._configuration=o,ee([o,"optionalAccess",e=>e.language,"optionalAccess",e=>e.enabled])?ee([o,"optionalAccess",e=>e.languageChoices,"optionalAccess",e=>e.options,"optionalAccess",e=>e.length])&&(this._model.language=ee([o,"optionalAccess",e=>e.languageChoices,"access",e=>e.options,"access",e=>e[0],"access",e=>e.value])):o.language.settings&&this._model.language?(this._configuration.language.enabled=!0,this._configuration.languageChoices.options&&this._configuration.languageChoices.options.length||(this._configuration.languageChoices.options=[]),this._configuration.languageChoices.options.find((e=>e.value===this._model.language))||this._configuration.languageChoices.options.push({value:this._model.language,label:this._model.language})):delete this._model.language,this._render()}set disableSidePanel(e){this._disableSidePanel=e,this._render()}dispatchModelUpdated(e){const t=!!e;this.dispatchEvent(new p(this._model,t))}onModelChanged(e,t){this._model=e,this._render(),this.dispatchModelUpdated(t)}onConfigurationChanged(e){this._configuration=ie(e,this._model).configuration,this._model&&this.onModelChanged(this._model),this._render()}insertImage(e){this.dispatchEvent(new C(e))}onDeleteImage(e,t){this.dispatchEvent(new m(e,t))}insertSound(e){this.dispatchEvent(new v(e))}onDeleteSound(e,t){this.dispatchEvent(new f(e,t))}_render(){te("_render");let e=J.createElement(F,{model:this._model,configuration:this._configuration,onModelChanged:this.onModelChanged,onConfigurationChanged:this.onConfigurationChanged,disableSidePanel:this._disableSidePanel,imageSupport:{add:this.insertImage.bind(this),delete:this.onDeleteImage.bind(this)},uploadSoundSupport:{add:this.insertSound.bind(this),delete:this.onDeleteSound.bind(this)}});K.render(e,this)}}ne.__initStatic();export{ne as default};
|