quiz-interactions
Version:
A React UI component Library for quiz interaction types.
113 lines (89 loc) • 4.09 kB
JavaScript
;
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 _getPrototypeOf2 = _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 _partial = _interopRequireDefault(require("lodash/partial"));
var _map = _interopRequireDefault(require("lodash/map"));
var _find = _interopRequireDefault(require("lodash/find"));
var _filter = _interopRequireDefault(require("lodash/filter"));
var _uiThemeable = require("@instructure/ui-themeable");
var _DraggableBlankChoice = _interopRequireDefault(require("../DraggableBlankChoice"));
var _theme = _interopRequireDefault(require("./theme"));
var _dec, _class, _class2, _temp;
var styles = {
componentId: 'enitJ',
template: function template(theme) {
return "\n\n.enitJ_cXfo{background-color:".concat(theme.wordbankWrapperColor || 'inherit', ";border:").concat(theme.wordbankWrapperBorder || 'inherit', " solid ").concat(theme.wordbankWrapperBorderColor || 'inherit', ";border-radius:").concat(theme.wordbankWrapperBorderRadius || 'inherit', ";display:flex;flex-wrap:wrap;min-height:60px}\n\n.enitJ_cXfo>div{margin:").concat(theme.wordbankWrapperMargin || 'inherit', "}");
},
'wordbankWrapper': 'enitJ_cXfo'
};
var Wordbank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(Wordbank, _Component);
function Wordbank() {
(0, _classCallCheck2.default)(this, Wordbank);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Wordbank).apply(this, arguments));
}
(0, _createClass2.default)(Wordbank, [{
key: "renderChoice",
value: function renderChoice(choice, blankId) {
var blank = (0, _find.default)(this.props.response, {
id: blankId
});
var alreadyChosen = blank && blank.value === choice.id;
if (!alreadyChosen) {
return _react.default.createElement(_DraggableBlankChoice.default, {
key: choice.id,
id: choice.id,
text: choice.itemBody,
returnChoiceToWordbank: (0, _partial.default)(this.props.returnChoiceToWordbank, blankId)
});
}
}
}, {
key: "renderWordbank",
value: function renderWordbank() {
var _this = this;
var wordbankBlanks = (0, _filter.default)(this.props.blanks, function (blank) {
return blank.answerType === 'wordbank';
});
return (0, _map.default)(wordbankBlanks, function (blank) {
return (0, _map.default)(blank.choices, function (choice) {
return _this.renderChoice(choice, blank.id);
});
});
}
}, {
key: "render",
value: function render() {
// Screenreaders don't even need to know about the wordBank
return _react.default.createElement("div", {
className: styles.wordbankWrapper,
"aria-hidden": true
}, this.renderWordbank());
}
}]);
Wordbank.displayName = "Wordbank";
return Wordbank;
}(_react.Component), _class2.propTypes = {
blanks: _propTypes.default.array.isRequired,
response: _propTypes.default.array,
returnChoiceToWordbank: _propTypes.default.func
}, _class2.defaultProps = {
response: void 0,
returnChoiceToWordbank: void 0 // =============
// RENDERING
// =============
}, _temp)) || _class);
exports.default = Wordbank;