quiz-interactions
Version:
A React UI component Library for quiz interaction types.
154 lines (124 loc) • 6.39 kB
JavaScript
"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;