UNPKG

quiz-interactions

Version:

A React UI component Library for quiz interaction types.

154 lines (124 loc) 6.39 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 _uiThemeable = require("@instructure/ui-themeable"); var _uiA11y = require("@instructure/ui-a11y"); var _uiForms = require("@instructure/ui-forms"); var _RemoveChoiceButton = _interopRequireDefault(require("../../../common/edit/components/RemoveChoiceButton")); var _instUIMessages = require("../../../../util/instUIMessages"); var _theme = _interopRequireDefault(require("./theme")); var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/lib/format-message")); var _dec, _class, _class2, _temp; var styles = { componentId: 'btXLx', template: function template(theme) { return "\n\n.btXLx_fXpx{display:flex;padding-bottom:".concat(theme.matchMargin || 'inherit', ";padding-top:").concat(theme.matchMargin || 'inherit', "}\n\n.btXLx_fhkf{align-items:center;display:flex;flex:0 1 100%;position:relative}\n\n.btXLx_fhkf:before{border-bottom:").concat(theme.matchInputBeforeBorder || 'inherit', " solid ").concat(theme.matchInputBeforeColor || 'inherit', ";content:\"\";max-width:calc(100% - 100px);position:absolute;top:50%;width:100%;z-index:1}\n\n.btXLx_fhkf>*{flex:0 1 100%;margin-right:10%}\n\n.btXLx_fhkf>:last-child{margin-right:0}\n\n.btXLx_eiVP{background-color:").concat(theme.questionWrapperColor || 'inherit', ";z-index:2}\n\n.btXLx_cDMr{z-index:2}"); }, 'match': 'btXLx_fXpx', 'matchInput': 'btXLx_fhkf', 'questionWrapper': 'btXLx_eiVP', 'answerWrapper': 'btXLx_cDMr' }; var MatchEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/ function (_Component) { (0, _inherits2.default)(MatchEdit, _Component); function MatchEdit() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, MatchEdit); 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)(MatchEdit)).call.apply(_getPrototypeOf2, [this].concat(args))); _this.handleAnswerChange = function (event) { _this.props.editAnswer(_this.props.questionId, event.target.value); }; _this.handleQuestionChange = function (event) { _this.props.editQuestion(_this.props.questionId, event.target.value); }; _this.handleRemoveMatch = function () { _this.props.removeMatch(_this.props.questionId); }; return _this; } (0, _createClass2.default)(MatchEdit, [{ key: "render", // ============= // RENDERS // ============= value: function render() { var _this$props = this.props, hasOnlyOneMatch = _this$props.hasOnlyOneMatch, questionBody = _this$props.questionBody, answerBody = _this$props.answerBody; return _react.default.createElement("div", { className: styles.match }, _react.default.createElement("div", { className: styles.matchInput }, _react.default.createElement("div", { className: styles.questionWrapper, "data-role": "questionWrapper" }, _react.default.createElement(_uiForms.TextInput, { label: _react.default.createElement(_uiA11y.ScreenReaderContent, null, (0, _formatMessage.default)('Prompt {n, number}', { n: this.props.index + 1 })), value: questionBody, messages: (0, _instUIMessages.toErrors)(this.props.questionErrors), placeholder: (0, _formatMessage.default)('Question'), onChange: this.handleQuestionChange, "data-automation": "sdk-matching-question" })), _react.default.createElement("div", { className: styles.answerWrapper }, _react.default.createElement(_uiForms.TextInput, { label: _react.default.createElement(_uiA11y.ScreenReaderContent, null, (0, _formatMessage.default)('Prompt {n, number} answer', { n: this.props.index + 1 })), value: answerBody, messages: (0, _instUIMessages.toErrors)(this.props.answerErrors), placeholder: (0, _formatMessage.default)('Answer'), onChange: this.handleAnswerChange, "data-automation": "sdk-matching-answer" }))), !hasOnlyOneMatch && !this.props.disabled && _react.default.createElement(_RemoveChoiceButton.default, { screenReaderText: (0, _formatMessage.default)('Remove Question/Answer pair: {question} - {answer}', { question: questionBody, answer: answerBody }), onRemoveChoice: this.handleRemoveMatch, choiceId: this.props.questionId, padding: "0 0 0 0.5rem", "data-automation": "sdk-matching-delete" })); } }]); MatchEdit.displayName = "MatchEdit"; return MatchEdit; }(_react.Component), _class2.propTypes = { answerBody: _propTypes.default.string.isRequired, answerErrors: _propTypes.default.array.isRequired, disabled: _propTypes.default.bool, editAnswer: _propTypes.default.func.isRequired, editQuestion: _propTypes.default.func.isRequired, hasOnlyOneMatch: _propTypes.default.bool.isRequired, index: _propTypes.default.number.isRequired, questionBody: _propTypes.default.string.isRequired, questionErrors: _propTypes.default.array.isRequired, questionId: _propTypes.default.string.isRequired, removeMatch: _propTypes.default.func.isRequired }, _class2.defaultProps = { disabled: false // ============= // HANDLERS // ============= }, _temp)) || _class); exports.default = MatchEdit;