UNPKG

quiz-interactions

Version:

A React UI component Library for quiz interaction types.

195 lines (161 loc) 7.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); 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 _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _map = _interopRequireDefault(require("lodash/fp/map")); var _sortBy = _interopRequireDefault(require("lodash/fp/sortBy")); var _flow = _interopRequireDefault(require("lodash/fp/flow")); var _striptags = _interopRequireDefault(require("striptags")); var _uiForms = require("@instructure/ui-forms"); var _uiA11y = require("@instructure/ui-a11y"); var _uiThemeable = require("@instructure/ui-themeable"); var _quizRce = require("@instructure/quiz-rce"); var _theme = _interopRequireDefault(require("./theme")); var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/lib/format-message")); var _dec, _class, _class2, _temp; var styles = { componentId: 'fbvqG', template: function template(theme) { return "\n\n.fbvqG_cSuF{border:".concat(theme.questionBorder || 'inherit', " solid ").concat(theme.questionBorderColor || 'inherit', ";border-radius:").concat(theme.questionBorderRadius || 'inherit', ";box-sizing:border-box;cursor:pointer;padding:5px 20px 10px 20px;width:100%}\n\n.fbvqG_fsuY{display:flex;flex-direction:column}\n\n.fbvqG_VpyP{align-items:center;display:flex;flex-direction:row;margin-bottom:10px}\n\n.fbvqG_nvdO{color:").concat(theme.titleColor || 'inherit', ";flex:20 20 auto;font-size:").concat(theme.titleFontSize || 'inherit', ";margin:0;margin-left:33px}\n\n.fbvqG_eEHL{flex:1 1 auto}\n\n.fbvqG_esVF{margin-left:15px}\n\n.fbvqG_tuUw{align-items:center;color:").concat(theme.questionPositionColor || 'inherit', ";flex:1 1 0;font-size:1.4rem}\n\n.fbvqG_cwte{display:flex;flex:2 2 auto;justify-content:flex-end;padding-right:5px}\n\n.fbvqG_cwte,.fbvqG_cloC{align-items:center}\n\n.fbvqG_cloC{flex:20 20 auto;font-size:1.1rem;margin:0}\n\n.fbvqG_fVUh{border:none}\n\n.fbvqG_dKma{margin:0}\n\n.fbvqG_dKma,.fbvqG_bcGJ{background-color:transparent;border:default;border-radius:default;border-width:default;padding:0}\n\n.fbvqG_bcGJ{margin-right:10px}"); }, 'question': 'fbvqG_cSuF', 'header': 'fbvqG_fsuY', 'headerSection': 'fbvqG_VpyP', 'title': 'fbvqG_nvdO', 'dragAndDrop': 'fbvqG_eEHL', 'itemBody': 'fbvqG_esVF', 'questionPosition': 'fbvqG_tuUw', 'points': 'fbvqG_cwte', 'stem': 'fbvqG_cloC', 'legend': 'fbvqG_fVUh', 'deleteButton': 'fbvqG_dKma', 'editButton': 'fbvqG_bcGJ' }; var MultipleChoiceTake = ( /** --- category: MultipleChoice --- Multiple Choice Take component ```jsx_example function Example (props) { const exampleProps = { itemId: 'mc_type', itemBody: 'Who was the first President of the United States?', interactionData: { choices: [ { id: 'uuid1', itemBody: 'George Washington', position: 1 }, { id: 'uuid2', itemBody: 'Alexander Hamilton.', position: 2 }, { id: 'uuid3', itemBody: ` <p> John Adams <iframe src="//www.youtube.com/embed/nrvpZxMfKaU" width="560" height="314" allowfullscreen="allowfullscreen" ></iframe> </p> `, position: 3 }, { id: 'uuid4', itemBody: 'Thomas Jefferson', position: 4 } ] }, userResponse: { value: 'uuid1' } } return ( <MultipleChoiceTake {...exampleProps} {...props} /> ) } <SettingsSwitcher locales={LOCALES}> <TakeStateProvider> <Example /> </TakeStateProvider> </SettingsSwitcher> ``` **/ _dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/ function (_Component) { (0, _inherits2.default)(MultipleChoiceTake, _Component); function MultipleChoiceTake() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, MultipleChoiceTake); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(MultipleChoiceTake)).call.apply(_getPrototypeOf2, [this].concat(args))); _this.handleChosenValChange = function (event, choiceId) { _this.props.handleResponseUpdate(choiceId); }; _this.renderChoice = function (choice) { return _react.default.createElement(_uiForms.RadioInput, { className: styles.radioInput, key: choice.id, "aria-label": (0, _formatMessage.default)('Answer: {choice}', { choice: (0, _striptags.default)(choice.itemBody) }), label: _react.default.createElement(_quizRce.RichContentRenderer, { customStyles: styles.itemBody, content: choice.itemBody }), value: choice.id }); }; return _this; } (0, _createClass2.default)(MultipleChoiceTake, [{ key: "render", value: function render() { var chosenVal = this.props.userResponse.value; return _react.default.createElement(_quizRce.ItemBodyWrapper, { itemBody: this.props.itemBody }, _react.default.createElement(_uiForms.RadioInputGroup, { defaultValue: chosenVal, value: chosenVal, onChange: this.handleChosenValChange, className: styles.radioGroup, name: "interaction_".concat(this.props.itemId) // eslint-disable-line react/jsx-no-literals , readOnly: this.props.readOnly, description: _react.default.createElement(_uiA11y.ScreenReaderContent, null, (0, _formatMessage.default)('Group of answer choices')) }, (0, _flow.default)((0, _sortBy.default)('position'), (0, _map.default)(this.renderChoice))(this.props.interactionData.choices))); } }]); MultipleChoiceTake.displayName = "MultipleChoiceTake"; return MultipleChoiceTake; }(_react.Component), _class2.propTypes = { handleResponseUpdate: _propTypes.default.func, interactionData: _propTypes.default.shape({ choices: _propTypes.default.arrayOf(_propTypes.default.shape({ id: _propTypes.default.string, itemBody: _propTypes.default.string, position: _propTypes.default.number })) }).isRequired, itemBody: _propTypes.default.string.isRequired, itemId: _propTypes.default.string, userResponse: _propTypes.default.shape({ value: _propTypes.default.string }).isRequired, readOnly: _propTypes.default.bool }, _class2.defaultProps = { handleResponseUpdate: Function.prototype, itemId: void 0, readOnly: false }, _temp)) || _class); exports.default = MultipleChoiceTake;