@instructure/quiz-core 20.4.2-rc.2 → 20.4.2-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +2 -2
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +1 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/index.js +1 -0
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +92 -0
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/styles.js +10 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/theme.js +8 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +5 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +1 -2
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/index.js +1 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/presenter.js +165 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/styles.js +15 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/theme.js +9 -0
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{ChoiceType → shared}/ChoiceTypeTable/presenter.js +23 -20
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/index.js +1 -0
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/presenter.js +40 -0
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/styles.js +17 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/theme.js +11 -0
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -1
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +59 -17
  20. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +7 -2
  21. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +31 -12
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +2 -2
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +1 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/index.js +13 -0
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +115 -0
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/styles.js +18 -0
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/theme.js +16 -0
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +13 -7
  29. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +1 -3
  30. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/index.js +13 -0
  31. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/presenter.js +189 -0
  32. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/styles.js +23 -0
  33. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceGroupTypeTable/theme.js +17 -0
  34. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{ChoiceType → shared}/ChoiceTypeTable/presenter.js +22 -19
  35. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/index.js +13 -0
  36. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/presenter.js +55 -0
  37. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/styles.js +25 -0
  38. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/theme.js +19 -0
  39. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -1
  40. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +60 -17
  41. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +7 -2
  42. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +40 -11
  43. package/package.json +9 -9
  44. /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{ChoiceType → shared}/ChoiceTypeTable/index.js +0 -0
  45. /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{ChoiceType → shared}/ChoiceTypeTable/theme.js +0 -0
  46. /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{ChoiceType → shared}/ChoiceTypeTable/index.js +0 -0
  47. /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{ChoiceType → shared}/ChoiceTypeTable/theme.js +0 -0
@@ -10,20 +10,21 @@ import { Heading } from '@instructure/ui-heading';
10
10
  import { PresentationContent } from '@instructure/ui-a11y-content';
11
11
  import React, { Component } from 'react';
12
12
  var styles = {
13
- componentId: 'ewlJT',
13
+ componentId: 'eObAE',
14
14
  template: function template(theme) {
15
- return "\n\n.ewlJT_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', "}\n\n.ewlJT_bwlc{gap:24px;justify-content:space-between;position:relative;row-gap:32px}\n\n.ewlJT_bwlc,.ewlJT_bqdH{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap}\n\n.ewlJT_bqdH{row-gap:24px}\n\n.ewlJT_NpIG{position:absolute;right:").concat(theme.viewPaddingRight || 'inherit', ";top:0}\n\n.ewlJT_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.ewlJT_fFDJ{display:none}\n\n.ewlJT_fxkJ{margin-top:-8px}\n\n.ewlJT_esVF{min-height:48px}\n\n.ewlJT_eTZq{position:relative}\n\n.ewlJT_eTZq:after{background:linear-gradient(180deg,hsla(0,0%,100%,0),#fff);content:\"\";height:48px;left:0;position:absolute;top:0;width:100%}\n\n.ewlJT_cVld{max-width:100%;width:calc(25% + 350px)}");
15
+ return "\n\n.eObAE_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', "}\n\n.eObAE_bwlc{gap:24px;justify-content:space-between;position:relative;row-gap:32px}\n\n.eObAE_bwlc,.eObAE_bqdH{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap}\n\n.eObAE_bqdH{row-gap:24px}\n\n.eObAE_eTaq{align-items:center;border:1px solid ").concat(theme.blankBorderColor || 'inherit', ";border-radius:").concat(theme.blankBorderRadius || 'inherit', ";display:inline-flex;height:").concat(theme.blankHeight || 'inherit', ";justify-content:center;min-width:").concat(theme.blankMinWidth || 'inherit', ";padding:2px 2px;vertical-align:middle}\n\n.eObAE_NpIG{position:absolute;right:").concat(theme.viewPaddingRight || 'inherit', ";top:0}\n\n.eObAE_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.eObAE_fFDJ{display:none}\n\n.eObAE_fxkJ{margin-top:-8px}\n\n.eObAE_esVF{min-height:48px}\n\n.eObAE_eTZq{position:relative}\n\n.eObAE_eTZq:after{background:linear-gradient(180deg,hsla(0,0%,100%,0),#fff);content:\"\";height:48px;left:0;position:absolute;top:0;width:100%}\n\n.eObAE_cVld{max-width:100%;width:calc(25% + 350px)}");
16
16
  },
17
- 'cardWrapper': 'ewlJT_eKXQ',
18
- 'itemCardInnerContainer': 'ewlJT_bwlc',
19
- 'metricsContainer': 'ewlJT_bqdH',
20
- 'itemCardToggleButtonWrapper': 'ewlJT_NpIG',
21
- 'metricNumberContext': 'ewlJT_eoBe',
22
- 'hiddenMetrics': 'ewlJT_fFDJ',
23
- 'itemBodyToggleButtonWrapper': 'ewlJT_fxkJ',
24
- 'itemBody': 'ewlJT_esVF',
25
- 'hiddenItemBody': 'ewlJT_eTZq',
26
- 'answerFrequencySummaryContainer': 'ewlJT_cVld'
17
+ 'cardWrapper': 'eObAE_eKXQ',
18
+ 'itemCardInnerContainer': 'eObAE_bwlc',
19
+ 'metricsContainer': 'eObAE_bqdH',
20
+ 'blankSpace': 'eObAE_eTaq',
21
+ 'itemCardToggleButtonWrapper': 'eObAE_NpIG',
22
+ 'metricNumberContext': 'eObAE_eoBe',
23
+ 'hiddenMetrics': 'eObAE_fFDJ',
24
+ 'itemBodyToggleButtonWrapper': 'eObAE_fxkJ',
25
+ 'itemBody': 'eObAE_esVF',
26
+ 'hiddenItemBody': 'eObAE_eTZq',
27
+ 'answerFrequencySummaryContainer': 'eObAE_cVld'
27
28
  };
28
29
  import t from '@instructure/quiz-i18n/es/format-message';
29
30
  import ExpandButton from "../../../../../common/components/shared/ExpandButton/index.js";
@@ -42,6 +43,10 @@ import { Flex } from '@instructure/ui-flex';
42
43
  import { RichContentRenderer } from '@instructure/quiz-rce';
43
44
  import { ensureRCEContentIsLoaded } from "../../../../../common/util/rceChecker.js";
44
45
  import { PropTypes } from '@instructure/quiz-interactions';
46
+ import { RICH_FILL_BLANK_SLUG } from '@instructure/quiz-common';
47
+ var parser = new DOMParser();
48
+ var parsererrorElement = 'parsererror';
49
+ var parseType = 'text/html';
45
50
  export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
46
51
  _inherits(NewItemAnalysis, _Component);
47
52
 
@@ -113,6 +118,34 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
113
118
  }, _this.mapInteractionTypeToTranslation(interactionType));
114
119
  };
115
120
 
121
+ _this.isBlank = function (element) {
122
+ if (element.textContent) return false;
123
+ if (!element.hasAttribute('id')) return false;
124
+ var regex = new RegExp('^blank_.+$');
125
+ return regex.test(element.getAttribute('id'));
126
+ };
127
+
128
+ _this.enhanceItemBody = function (itemBody) {
129
+ var tempDoc = parser.parseFromString(itemBody, parseType);
130
+ var errorNode = tempDoc.querySelector(parsererrorElement);
131
+
132
+ if (errorNode) {
133
+ // eslint-disable-next-line no-console
134
+ console.error('Parsing failed: ', errorNode);
135
+ return itemBody;
136
+ }
137
+
138
+ Array.from(tempDoc.querySelectorAll('span')).filter(function (span) {
139
+ return _this.isBlank(span);
140
+ }).forEach(function (span, index) {
141
+ var newSpan = span.cloneNode();
142
+ newSpan.setAttribute('class', styles.blankSpace);
143
+ newSpan.innerHTML = "".concat(index + 1);
144
+ span.replaceWith(newSpan);
145
+ });
146
+ return tempDoc.querySelector('body').innerHTML;
147
+ };
148
+
116
149
  _this.renderRichContent = function (itemBody, itemBodyClass, itemId) {
117
150
  return /*#__PURE__*/React.createElement(Flex, {
118
151
  direction: "row",
@@ -203,6 +236,14 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
203
236
  })));
204
237
  };
205
238
 
239
+ _this.shouldEnhanceItemBody = function () {
240
+ var _this$props = _this.props,
241
+ itemAnalysis = _this$props.itemAnalysis,
242
+ afsFlags = _this$props.afsFlags;
243
+ var metadata = itemAnalysis.metadata;
244
+ return afsFlags.fillInTheBlankEnabled && metadata.interaction_type === RICH_FILL_BLANK_SLUG && metadata.item_body;
245
+ };
246
+
206
247
  return _this;
207
248
  }
208
249
 
@@ -243,10 +284,10 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
243
284
  value: function render() {
244
285
  var _metadata$item_title;
245
286
 
246
- var _this$props = this.props,
247
- showFrequencyTable = _this$props.showFrequencyTable,
248
- itemAnalysis = _this$props.itemAnalysis,
249
- afsFlags = _this$props.afsFlags;
287
+ var _this$props2 = this.props,
288
+ showFrequencyTable = _this$props2.showFrequencyTable,
289
+ itemAnalysis = _this$props2.itemAnalysis,
290
+ afsFlags = _this$props2.afsFlags;
250
291
  var answer_summary = itemAnalysis.answer_summary,
251
292
  metadata = itemAnalysis.metadata,
252
293
  scores = itemAnalysis.scores;
@@ -255,6 +296,7 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
255
296
  var metricsClass = classnames(_defineProperty({}, styles.hiddenMetrics, !this.state.metricsExpanded));
256
297
  var itemBodyClass = classnames(styles.itemBody, _defineProperty({}, styles.hiddenItemBody, this.isBodyHigherThanContainer() && !this.state.bodyExpanded));
257
298
  var title = (_metadata$item_title = metadata.item_title) !== null && _metadata$item_title !== void 0 ? _metadata$item_title : t('Untitled item');
299
+ var itemBodyEnhanced = this.shouldEnhanceItemBody() ? this.enhanceItemBody(metadata.item_body) : metadata.item_body;
258
300
  return /*#__PURE__*/React.createElement(Card, {
259
301
  className: styles.cardWrapper
260
302
  }, /*#__PURE__*/React.createElement(Flex, {
@@ -275,7 +317,7 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
275
317
  padding: "small xx-small none none",
276
318
  overflowY: "hidden",
277
319
  size: !this.state.bodyExpanded ? '60px' : void 0
278
- }, this.renderRichContent(metadata.item_body, itemBodyClass, itemId)))), /*#__PURE__*/React.createElement(Flex.Item, null, this.renderMetrics(scores, metricsClass)))), showFrequencyTable && this.renderAnswerSummaryTable(itemId, answer_summary, metricsClass, interactionType, afsFlags)));
320
+ }, this.renderRichContent(itemBodyEnhanced, itemBodyClass, itemId)))), /*#__PURE__*/React.createElement(Flex.Item, null, this.renderMetrics(scores, metricsClass)))), showFrequencyTable && this.renderAnswerSummaryTable(itemId, answer_summary, metricsClass, interactionType, afsFlags)));
279
321
  }
280
322
  }]);
281
323
 
@@ -1,12 +1,17 @@
1
1
  export default function generator(_ref) {
2
2
  var spacing = _ref.spacing,
3
3
  breakpoints = _ref.breakpoints,
4
- typography = _ref.typography;
4
+ typography = _ref.typography,
5
+ colors = _ref.colors;
5
6
  return {
6
7
  tabletBreakPoint: "max-width: ".concat(breakpoints.large),
7
8
  cardWrapperPadding: spacing.medium,
8
9
  viewPaddingRight: spacing.xxSmall,
9
10
  metricNumberContextFontSize: typography.fontSizeMedium,
10
- metricNumberContextFontWeight: typography.fontWeightNormal
11
+ metricNumberContextFontWeight: typography.fontWeightNormal,
12
+ blankBorderColor: colors.tiara,
13
+ blankBorderRadius: '14px',
14
+ blankMinWidth: '20px',
15
+ blankHeight: '20px'
11
16
  };
12
17
  }
@@ -26,11 +26,11 @@ export var quizAnalysisPropType = PropTypes.shape({
26
26
  average_attempts: PropTypes.number
27
27
  }).isRequired
28
28
  });
29
- var aggregateDetailPropType = PropTypes.shape({
29
+ export var aggregateDetailPropType = PropTypes.shape({
30
30
  count: PropTypes.number.isRequired,
31
31
  percentage: PropTypes.number.isRequired
32
32
  });
33
- var aggregatePropType = PropTypes.shape({
33
+ export var aggregatePropType = PropTypes.shape({
34
34
  correct: aggregateDetailPropType.isRequired,
35
35
  incorrect: aggregateDetailPropType.isRequired,
36
36
  partial_correct: aggregateDetailPropType
@@ -39,14 +39,16 @@ export var onlyAggregatePropType = PropTypes.shape({
39
39
  no_answer: aggregateDetailPropType,
40
40
  aggregate: aggregatePropType
41
41
  });
42
+ export var choiceTypeObject = PropTypes.shape({
43
+ body: PropTypes.string,
44
+ correct: PropTypes.bool,
45
+ count: PropTypes.number,
46
+ percentage: PropTypes.number
47
+ });
42
48
  export var choiceTypeAnswerSummaryPropType = PropTypes.shape({
43
- choices: PropTypes.arrayOf(PropTypes.shape({
44
- body: PropTypes.string,
45
- correct: PropTypes.bool,
46
- count: PropTypes.number,
47
- percentage: PropTypes.number
48
- })),
49
- no_answer: aggregateDetailPropType
49
+ choices: PropTypes.arrayOf(choiceTypeObject),
50
+ no_answer: aggregateDetailPropType,
51
+ aggregate: aggregatePropType
50
52
  });
51
53
  export var matchingTypeAnswerSummaryPropType = PropTypes.shape({
52
54
  questions: PropTypes.objectOf(PropTypes.shape({
@@ -57,9 +59,25 @@ export var matchingTypeAnswerSummaryPropType = PropTypes.shape({
57
59
  body: PropTypes.string,
58
60
  distractor: PropTypes.bool
59
61
  }))
60
- }))
62
+ })),
63
+ no_answer: aggregateDetailPropType,
64
+ aggregate: aggregatePropType
65
+ });
66
+ export var richFillBlankTypeAnswerSummaryPropType = PropTypes.shape({
67
+ blanks: PropTypes.arrayOf(PropTypes.shape({
68
+ choices: PropTypes.arrayOf(choiceTypeObject),
69
+ blank_text: PropTypes.string,
70
+ blank_type: PropTypes.string,
71
+ no_answer: PropTypes.number,
72
+ aggregate: PropTypes.shape({
73
+ correct: PropTypes.number,
74
+ incorrect: PropTypes.number
75
+ })
76
+ })),
77
+ no_answer: aggregateDetailPropType,
78
+ aggregate: aggregatePropType
61
79
  });
62
- export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType]);
80
+ export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType]);
63
81
  export var itemAnalysisPropType = PropTypes.shape({
64
82
  attempts: PropTypes.shape({
65
83
  students_responded: PropTypes.number,
@@ -90,5 +108,6 @@ export var afsFlags = PropTypes.shape({
90
108
  categorizationEnabled: PropTypes.bool.isRequired,
91
109
  trueFalseEnabled: PropTypes.bool.isRequired,
92
110
  choiceEnabled: PropTypes.bool.isRequired,
93
- multiAnswerEnabled: PropTypes.bool.isRequired
111
+ multiAnswerEnabled: PropTypes.bool.isRequired,
112
+ fillInTheBlankEnabled: PropTypes.bool.isRequired
94
113
  });
@@ -19,7 +19,7 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
- var _index = _interopRequireDefault(require("./ChoiceTypeTable/index.js"));
22
+ var _index = _interopRequireDefault(require("../shared/ChoiceTypeTable/index.js"));
23
23
 
24
24
  var _propTypes2 = require("../../propTypes.js");
25
25
 
@@ -52,7 +52,7 @@ var ChoiceType = /*#__PURE__*/function (_Component) {
52
52
  return /*#__PURE__*/_react.default.createElement(_index3.default, null, /*#__PURE__*/_react.default.createElement(_presenter.AfsPartsContainer, {
53
53
  afsTable: /*#__PURE__*/_react.default.createElement(_index.default, {
54
54
  itemId: itemId,
55
- answerSummary: answerSummary
55
+ choices: answerSummary.choices
56
56
  }),
57
57
  aggregationTable: /*#__PURE__*/_react.default.createElement(_index2.default, {
58
58
  itemId: itemId,
@@ -138,6 +138,7 @@ var MatchingTypeTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
138
138
  padding: '0 0 0 0'
139
139
  }
140
140
  }, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, correct ? "".concat((0, _formatMessage.default)('Correct answer'), ": ").concat(count) : count), /*#__PURE__*/_react.default.createElement("div", {
141
+ "aria-hidden": "true",
141
142
  className: containerClassNames
142
143
  }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
143
144
  direction: "row",
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _presenter.RichFillBlankType;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.RichFillBlankType = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+
14
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
15
+
16
+ var _react = require("react");
17
+
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
20
+ var _propTypes2 = require("../../propTypes.js");
21
+
22
+ var _index = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
23
+
24
+ var _presenter = require("../shared/AfsPartsContainer/presenter.js");
25
+
26
+ var _index2 = _interopRequireDefault(require("../shared/ChoiceGroupTypeTable/index.js"));
27
+
28
+ var _uiText = require("@instructure/ui-text");
29
+
30
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
31
+
32
+ var _index3 = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
33
+
34
+ var _emotion = require("@instructure/emotion");
35
+
36
+ var _styles = _interopRequireDefault(require("./styles.js"));
37
+
38
+ var _theme = _interopRequireDefault(require("./theme.js"));
39
+
40
+ var _dec, _class, _class2, _temp;
41
+
42
+ var RichFillBlankType = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
43
+ (0, _inherits2.default)(RichFillBlankType, _Component);
44
+
45
+ var _super = (0, _createSuper2.default)(RichFillBlankType);
46
+
47
+ function RichFillBlankType() {
48
+ var _this;
49
+
50
+ (0, _classCallCheck2.default)(this, RichFillBlankType);
51
+
52
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
53
+ args[_key] = arguments[_key];
54
+ }
55
+
56
+ _this = _super.call.apply(_super, [this].concat(args));
57
+
58
+ _this.renderBlankInfo = function (blank) {
59
+ var _blank$aggregate, _blank$aggregate2;
60
+
61
+ var correctCount = (blank === null || blank === void 0 ? void 0 : (_blank$aggregate = blank.aggregate) === null || _blank$aggregate === void 0 ? void 0 : _blank$aggregate.correct) || 0;
62
+ var incorrectCount = (blank === null || blank === void 0 ? void 0 : (_blank$aggregate2 = blank.aggregate) === null || _blank$aggregate2 === void 0 ? void 0 : _blank$aggregate2.incorrect) || 0;
63
+ var noAnswer = (blank === null || blank === void 0 ? void 0 : blank.no_answer) || 0;
64
+ var correctString = "".concat((0, _formatMessage.default)('Correct'), ": ").concat(correctCount, " ");
65
+ var incorrectString = "".concat((0, _formatMessage.default)('Incorrect'), ": ").concat(incorrectCount, " ");
66
+ var noAnswerString = "".concat((0, _formatMessage.default)('No Answer'), ": ").concat(noAnswer, " ");
67
+ return (0, _emotion.jsx)("div", {
68
+ css: _this.props.styles.groupAggregationContainer
69
+ }, (0, _emotion.jsx)(_uiText.Text, null, correctString), (0, _emotion.jsx)(_uiText.Text, null, incorrectString), (0, _emotion.jsx)(_uiText.Text, null, noAnswerString));
70
+ };
71
+
72
+ _this.renderGroup = function (key, itemId, blank, index) {
73
+ return (0, _emotion.jsx)(_index2.default, {
74
+ key: key,
75
+ itemId: itemId,
76
+ blank: blank,
77
+ blankInfo: _this.renderBlankInfo(blank),
78
+ index: index
79
+ });
80
+ };
81
+
82
+ _this.renderGroups = function () {
83
+ var _this$props = _this.props,
84
+ answerSummary = _this$props.answerSummary,
85
+ itemId = _this$props.itemId;
86
+ var blanks = answerSummary.blanks;
87
+ return blanks.map(function (blank, index) {
88
+ var key = "ChoiceGroupTypeTable_".concat(index);
89
+ return _this.renderGroup(key, itemId, blank, index);
90
+ });
91
+ };
92
+
93
+ _this.render = function () {
94
+ var _this$props2 = _this.props,
95
+ answerSummary = _this$props2.answerSummary,
96
+ itemId = _this$props2.itemId;
97
+ return (0, _emotion.jsx)(_index.default, null, (0, _emotion.jsx)(_presenter.AfsPartsContainer, {
98
+ afsTable: _this.renderGroups(),
99
+ aggregationTable: (0, _emotion.jsx)(_index3.default, {
100
+ itemId: itemId,
101
+ answerSummary: answerSummary
102
+ })
103
+ }));
104
+ };
105
+
106
+ return _this;
107
+ }
108
+
109
+ return RichFillBlankType;
110
+ }(_react.Component), _class2.propTypes = {
111
+ itemId: _propTypes.default.number.isRequired,
112
+ answerSummary: _propTypes2.richFillBlankTypeAnswerSummaryPropType.isRequired,
113
+ styles: _propTypes.default.object
114
+ }.isRequired, _temp)) || _class);
115
+ exports.RichFillBlankType = RichFillBlankType;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var generateStyle = function generateStyle(componentTheme) {
9
+ return {
10
+ groupAggregationContainer: {
11
+ display: 'flex',
12
+ gap: componentTheme.aggregateSpacing
13
+ }
14
+ };
15
+ };
16
+
17
+ var _default = generateStyle;
18
+ exports.default = _default;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var generateComponentTheme = function generateComponentTheme(_ref) {
9
+ var spacing = _ref.spacing;
10
+ return {
11
+ aggregateSpacing: spacing.xSmall
12
+ };
13
+ };
14
+
15
+ var _default = generateComponentTheme;
16
+ exports.default = _default;
@@ -23,9 +23,11 @@ var _index = _interopRequireDefault(require("./LegacyChoiceType/index.js"));
23
23
 
24
24
  var _index2 = _interopRequireDefault(require("./ChoiceType/index.js"));
25
25
 
26
- var _index3 = _interopRequireDefault(require("./AggregationType/index.js"));
26
+ var _index3 = _interopRequireDefault(require("./RichFillBlankType/index.js"));
27
27
 
28
- var _index4 = require("./MatchingType/index.js");
28
+ var _index4 = _interopRequireDefault(require("./AggregationType/index.js"));
29
+
30
+ var _index5 = require("./MatchingType/index.js");
29
31
 
30
32
  var _propTypes = require("../propTypes.js");
31
33
 
@@ -48,23 +50,23 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
48
50
 
49
51
  _this.addAfsComponentsByFlags = function (afsFlags) {
50
52
  if (afsFlags.formulaEnabled) {
51
- _this.afsTableComponentMap.set('formula', _index3.default);
53
+ _this.afsTableComponentMap.set('formula', _index4.default);
52
54
  }
53
55
 
54
56
  if (afsFlags.hotSpotEnabled) {
55
- _this.afsTableComponentMap.set('hot-spot', _index3.default);
57
+ _this.afsTableComponentMap.set('hot-spot', _index4.default);
56
58
  }
57
59
 
58
60
  if (afsFlags.matchingEnabled) {
59
- _this.afsTableComponentMap.set('matching', _index4.MatchingType);
61
+ _this.afsTableComponentMap.set('matching', _index5.MatchingType);
60
62
  }
61
63
 
62
64
  if (afsFlags.orderingEnabled) {
63
- _this.afsTableComponentMap.set('ordering', _index4.OrderingType);
65
+ _this.afsTableComponentMap.set('ordering', _index5.OrderingType);
64
66
  }
65
67
 
66
68
  if (afsFlags.categorizationEnabled) {
67
- _this.afsTableComponentMap.set('categorization', _index4.CategorizationType);
69
+ _this.afsTableComponentMap.set('categorization', _index5.CategorizationType);
68
70
  }
69
71
 
70
72
  if (afsFlags.trueFalseEnabled) {
@@ -78,6 +80,10 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
78
80
  if (afsFlags.multiAnswerEnabled) {
79
81
  _this.afsTableComponentMap.set('multi-answer', _index2.default);
80
82
  }
83
+
84
+ if (afsFlags.fillInTheBlankEnabled) {
85
+ _this.afsTableComponentMap.set('rich-fill-blank', _index3.default);
86
+ }
81
87
  };
82
88
 
83
89
  _this.render = function () {
@@ -23,8 +23,6 @@ var _uiTable = require("@instructure/ui-table");
23
23
 
24
24
  var _propTypes = require("../../../propTypes.js");
25
25
 
26
- var _uiA11yContent = require("@instructure/ui-a11y-content");
27
-
28
26
  var _propTypes2 = _interopRequireDefault(require("prop-types"));
29
27
 
30
28
  var _uiIcons = require("@instructure/ui-icons");
@@ -124,7 +122,7 @@ var AggregationTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
124
122
  themeOverride: {
125
123
  padding: '0px'
126
124
  }
127
- }, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, label), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
125
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
128
126
  direction: "row",
129
127
  alignItems: "center"
130
128
  }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _presenter.ChoiceGroupTypeTable;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");