UNPKG

@instructure/quiz-interactions

Version:

A React UI component Library for quiz interaction types.

199 lines (197 loc) • 7.97 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = require("react"); var _propTypes = _interopRequireDefault(require("prop-types")); var _emotion = require("@instructure/emotion"); var _uiText = require("@instructure/ui-text"); var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message")); var _quizRce = require("@instructure/quiz-rce"); var _quizResultsFeedback = require("@instructure/quiz-results-feedback"); var _styles = _interopRequireDefault(require("./styles")); var _theme = _interopRequireDefault(require("./theme")); var _quizCommon = require("@instructure/quiz-common"); var _dec, _class, _OrderingResult; /** @jsx jsx */ function _callSuper(_this, derived, args) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { return !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (e) { return false; } } derived = (0, _getPrototypeOf2["default"])(derived); return (0, _possibleConstructorReturn2["default"])(_this, isNativeReflectConstruct() ? Reflect.construct(derived, args || [], (0, _getPrototypeOf2["default"])(_this).constructor) : derived.apply(_this, args)); } /** --- category: Ordering --- Ordering Result component ```jsx_example <SettingsSwitcher locales={LOCALES}> <OrderingResult itemBody="Order these characters from tallest to shortest:" interactionData={{ choices: { uuid4: { id: 'uuid4', itemBody: '<p>Aragorn</p>' }, uuid3: { id: 'uuid3', itemBody: '<p>Gimli</p>' }, uuid2: { id: 'uuid2', itemBody: '<p>Frodo</p>' }, uuid1: { id: 'uuid1', itemBody: '<p>Gollum</p>' } } }} properties={{ displayAnswersParagraph: true, includeLabels: true, topLabel: 'Taller', bottomLabel: 'Shorter' }} scoredData={{ value: [{ userResponded: 'uuid3', resultScore: 0, value: 'uuid4' }, { userResponded: 'uuid4', resultScore: 0, value: 'uuid3' }, { userResponded: 'uuid2', resultScore: 1, value: 'uuid2' }, { userResponded: 'uuid1', resultScore: 1, value: 'uuid1' }] }} /> </SettingsSwitcher> ``` **/ var OrderingResult = exports["default"] = (_dec = (0, _quizCommon.withStyleOverrides)(_styles["default"], _theme["default"]), _dec(_class = (_OrderingResult = /*#__PURE__*/function (_Component) { function OrderingResult() { (0, _classCallCheck2["default"])(this, OrderingResult); return _callSuper(this, OrderingResult, arguments); } (0, _inherits2["default"])(OrderingResult, _Component); return (0, _createClass2["default"])(OrderingResult, [{ key: "componentDidMount", value: function componentDidMount() { this.props.makeStyles(); } }, { key: "componentDidUpdate", value: function componentDidUpdate() { this.props.makeStyles(); } }, { key: "renderLabel", value: function renderLabel(labelPosition) { var properties = this.props.properties; if (properties.includeLabels) { return (0, _emotion.jsx)("div", { className: labelPosition, css: this.props.styles[labelPosition] }, (0, _emotion.jsx)(_uiText.Text, { color: "primary" }, properties[labelPosition])); } } }, { key: "renderChoices", value: function renderChoices() { var _this2 = this; var choices = this.props.interactionData.choices; var _this$props$scoredDat = this.props.scoredData, correct = _this$props$scoredDat.correct, value = _this$props$scoredDat.value; if (!value || value.length === 0) { return (0, _emotion.jsx)(_quizResultsFeedback.NoResponse, { responseHidden: !value, status: typeof correct === 'undefined' ? 'unknown' : 'incorrect', richContent: true }); } return value.map(function (answer, idx) { var status; if (answer.resultScore >= 1) { status = 'correct'; } else if (answer.resultScore <= 0) { status = 'incorrect'; } else { status = 'unknown'; } var userChoice = choices[answer.userResponded]; var correctAnswer = choices[answer.value] ? choices[answer.value].itemBody : null; var key = "choice_".concat(idx); return (0, _emotion.jsx)("div", { css: _this2.props.styles.feedbackWrapper, key: key }, userChoice ? (0, _emotion.jsx)(_quizResultsFeedback.FeedbackWrapper, { hiddenCorrectAnswerText: (0, _formatMessage["default"])('Correct Order Answer: '), hiddenIncorrectAnswerText: (0, _formatMessage["default"])('Incorrect Order Answer: '), correctAnswer: correctAnswer, status: status, richContent: true }, (0, _emotion.jsx)(_quizRce.RichContentRenderer, { customStyles: _this2.props.styles.userResponse, content: userChoice.itemBody })) : (0, _emotion.jsx)(_quizResultsFeedback.NoResponse, { correctAnswerLabel: correctAnswer, responseHidden: answer.userResponded === void 0, status: status, richContent: true })); }); } }, { key: "render", value: function render() { return (0, _emotion.jsx)("div", { css: this.props.styles.holder }, (0, _emotion.jsx)(_quizRce.ItemBodyWrapper, { itemBody: this.props.itemBody }, this.renderLabel('topLabel'), (0, _emotion.jsx)("div", { css: this.props.styles.choicesWrapper }, this.renderChoices()), this.renderLabel('bottomLabel'))); } }]); }(_react.Component), (0, _defineProperty2["default"])(_OrderingResult, "displayName", 'OrderingResult'), (0, _defineProperty2["default"])(_OrderingResult, "componentId", "Quizzes".concat(_OrderingResult.displayName)), (0, _defineProperty2["default"])(_OrderingResult, "propTypes", { interactionData: _propTypes["default"].shape({ choices: _propTypes["default"].objectOf(_propTypes["default"].shape({ id: _propTypes["default"].string.isRequired, itemBody: _propTypes["default"].string.isRequired })).isRequired }).isRequired, itemBody: _propTypes["default"].string.isRequired, properties: _propTypes["default"].shape({ displayAnswersParagraph: _propTypes["default"].bool, includeLabels: _propTypes["default"].bool, topLabel: _propTypes["default"].string, bottomLabel: _propTypes["default"].string }).isRequired, scoredData: _propTypes["default"].shape({ correct: _propTypes["default"].bool, value: _propTypes["default"].arrayOf(_propTypes["default"].shape({ resultScore: _propTypes["default"].number, userResponded: _propTypes["default"].string, value: _propTypes["default"].string })) }).isRequired, makeStyles: _propTypes["default"].func, styles: _propTypes["default"].object }), _OrderingResult)) || _class);