quiz-interactions
Version:
A React UI component Library for quiz interaction types.
127 lines (97 loc) • 4.72 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 _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 _uiButtons = require("@instructure/ui-buttons");
var _uiIcons = require("@instructure/ui-icons");
var _uiA11y = require("@instructure/ui-a11y");
var _uiForms = require("@instructure/ui-forms");
var _uiThemeable = require("@instructure/ui-themeable");
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/lib/format-message"));
var _constants = require("./constants");
var _theme = _interopRequireDefault(require("./theme.js"));
var _dec, _class, _class2, _temp;
var styles = {
componentId: 'naZDy',
template: function template(theme) {
return "\n\n.naZDy_cJyl{padding-right:2rem;position:relative}\n\n.naZDy_fbxP{position:absolute;right:0;top:-0.25rem}";
},
'labelWithHelp': 'naZDy_cJyl',
'helpButton': 'naZDy_fbxP'
};
var NumericTypeSelect = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(NumericTypeSelect, _Component);
function NumericTypeSelect() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, NumericTypeSelect);
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)(NumericTypeSelect)).call.apply(_getPrototypeOf2, [this].concat(args)));
_this.handleChange = function (event, _ref) {
var value = _ref.value;
_this.props.onChange(event, {
id: _this.props.id,
type: value
});
};
return _this;
}
(0, _createClass2.default)(NumericTypeSelect, [{
key: "renderLabel",
value: function renderLabel() {
var label = (0, _formatMessage.default)('Requirement'); // TODO: find a way to do this without custom styles
return this.props.onClickHelp ? _react.default.createElement("div", {
className: styles.labelWithHelp
}, label, _react.default.createElement("div", {
className: styles.helpButton
}, _react.default.createElement(_uiButtons.Button, {
icon: _uiIcons.IconQuestionLine,
onClick: this.props.onClickHelp,
size: "small",
variant: "icon"
}, _react.default.createElement(_uiA11y.ScreenReaderContent, null, (0, _formatMessage.default)('Display help dialog for numeric requirement'))))) : label;
}
}, {
key: "render",
value: function render() {
return _react.default.createElement(_uiForms.Select, {
label: this.renderLabel(),
onChange: this.handleChange,
selectedOption: this.props.value,
"data-automation": "sdk-numeric-type"
}, _react.default.createElement("option", {
value: _constants.EXACT_RESPONSE
}, (0, _formatMessage.default)('Exact response')), _react.default.createElement("option", {
value: _constants.MARGIN_OF_ERROR
}, (0, _formatMessage.default)('Margin of error')), _react.default.createElement("option", {
value: _constants.WITHIN_A_RANGE
}, (0, _formatMessage.default)('Within a range')), _react.default.createElement("option", {
value: _constants.PRECISE_RESPONSE
}, (0, _formatMessage.default)('Precise response')));
}
}]);
NumericTypeSelect.displayName = "NumericTypeSelect";
return NumericTypeSelect;
}(_react.Component), _class2.propTypes = {
id: _propTypes.default.string.isRequired,
onChange: _propTypes.default.func.isRequired,
onClickHelp: _propTypes.default.func,
value: _propTypes.default.oneOf([_constants.EXACT_RESPONSE, _constants.MARGIN_OF_ERROR, _constants.WITHIN_A_RANGE, _constants.PRECISE_RESPONSE]).isRequired
}, _class2.defaultProps = {
onClickHelp: null
}, _temp)) || _class);
exports.default = NumericTypeSelect;