UNPKG

quiz-interactions

Version:

A React UI component Library for quiz interaction types.

127 lines (97 loc) 4.72 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 _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;