@instructure/quiz-core 18.5.1-rc.4 → 18.5.1-rc.7

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 (31) hide show
  1. package/es/common/util/Fetcher.js +15 -3
  2. package/es/reporting/api/getAnalysesExport.js +1 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +19 -6
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +9 -5
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +67 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/index.js +1 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +180 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +7 -0
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +1 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/utils/matchingTypeOrderer.js +42 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +5 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +9 -6
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +19 -19
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +1 -3
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +12 -1
  16. package/lib/common/util/Fetcher.js +15 -2
  17. package/lib/reporting/api/getAnalysesExport.js +1 -0
  18. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +23 -10
  19. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +10 -5
  20. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +93 -0
  21. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/index.js +13 -0
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +205 -0
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +14 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +13 -0
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/utils/matchingTypeOrderer.js +52 -0
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +6 -0
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +10 -6
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +19 -19
  29. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +1 -3
  30. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +16 -2
  31. package/package.json +9 -9
@@ -11,6 +11,8 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
 
14
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
+
14
16
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
17
 
16
18
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -56,7 +58,8 @@ var Fetcher = /*#__PURE__*/function () {
56
58
  successMessage = _ref.successMessage,
57
59
  onError = _ref.onError,
58
60
  cloneResponseForError = _ref.cloneResponseForError,
59
- asyncResponseHandler = _ref.asyncResponseHandler;
61
+ asyncResponseHandler = _ref.asyncResponseHandler,
62
+ injectMissingUserToken = _ref.injectMissingUserToken;
60
63
 
61
64
  (0, _classCallCheck2.default)(this, Fetcher);
62
65
  // A Response body can only be read once, and is read in the onError handler
@@ -65,6 +68,7 @@ var Fetcher = /*#__PURE__*/function () {
65
68
  this.cloneResponseForError = cloneResponseForError || false;
66
69
  this.callType = callType;
67
70
  this.headers = headers;
71
+ this.injectMissingUserToken = injectMissingUserToken || false;
68
72
  this.successMessage = successMessage;
69
73
  this.onError = onError;
70
74
  this.asyncResponseHandler = asyncResponseHandler || _jsonify.default;
@@ -113,7 +117,16 @@ var Fetcher = /*#__PURE__*/function () {
113
117
  }, {
114
118
  key: "callHeaders",
115
119
  value: function callHeaders() {
116
- return this.headers || (0, _httpHeaders.httpHeaders)(this.getState().getIn(['config', 'userToken']));
120
+ if (!this.headers) {
121
+ return (0, _httpHeaders.httpHeaders)(this.getState().getIn(['config', 'userToken']));
122
+ }
123
+
124
+ if (!this.injectMissingUserToken) {
125
+ return this.headers;
126
+ }
127
+
128
+ var userToken = this.getState().getIn(['config', 'userToken']);
129
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _httpHeaders.jwtHeader)(userToken)), this.headers);
117
130
  }
118
131
  }, {
119
132
  key: "handleSuccess",
@@ -24,6 +24,7 @@ var getFetcher = function getFetcher(format) {
24
24
  headers: {
25
25
  'Accept': mimeType
26
26
  },
27
+ injectUserToken: true,
27
28
  asyncResponseHandler: function asyncResponseHandler(response) {
28
29
  return response;
29
30
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -25,7 +25,20 @@ var _propTypes2 = require("../../propTypes.js");
25
25
 
26
26
  var _presenter = require("../shared/AfsTableWrapper/presenter.js");
27
27
 
28
- var AggregationType = /*#__PURE__*/function (_Component) {
28
+ var _classnames = _interopRequireDefault(require("classnames"));
29
+
30
+ var _uiThemeable = require("@instructure/ui-themeable");
31
+
32
+ var _dec, _class, _class2, _temp;
33
+
34
+ var styles = {
35
+ componentId: 'JFhmr',
36
+ template: function template(theme) {
37
+ return "\n\n.JFhmr_cVld{max-width:100%;width:calc(25% + 350px)}";
38
+ },
39
+ 'answerFrequencySummaryContainer': 'JFhmr_cVld'
40
+ };
41
+ var AggregationType = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
29
42
  (0, _inherits2.default)(AggregationType, _Component);
30
43
 
31
44
  var _super = (0, _createSuper2.default)(AggregationType);
@@ -45,20 +58,20 @@ var AggregationType = /*#__PURE__*/function (_Component) {
45
58
  var _this$props = _this.props,
46
59
  answerSummary = _this$props.answerSummary,
47
60
  itemId = _this$props.itemId;
48
- return /*#__PURE__*/_react.default.createElement(_presenter.AfsTableWrapper, null, /*#__PURE__*/_react.default.createElement(_index.default, {
61
+ return /*#__PURE__*/_react.default.createElement(_presenter.AfsTableWrapper, null, /*#__PURE__*/_react.default.createElement("div", {
62
+ className: (0, _classnames.default)(styles.answerFrequencySummaryContainer)
63
+ }, /*#__PURE__*/_react.default.createElement(_index.default, {
49
64
  itemId: itemId,
50
65
  answerSummary: answerSummary
51
- }));
66
+ })));
52
67
  };
53
68
 
54
69
  return _this;
55
70
  }
56
71
 
57
72
  return AggregationType;
58
- }(_react.Component);
59
-
60
- exports.AggregationType = AggregationType;
61
- AggregationType.propTypes = {
73
+ }(_react.Component), _class2.propTypes = {
62
74
  itemId: _propTypes.default.number.isRequired,
63
75
  answerSummary: _propTypes2.onlyAggregatePropType
64
- }.isRequired;
76
+ }.isRequired, _temp)) || _class);
77
+ exports.AggregationType = AggregationType;
@@ -37,14 +37,17 @@ var _theme = _interopRequireDefault(require("./theme.js"));
37
37
 
38
38
  var _index2 = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
39
39
 
40
+ var _classnames = _interopRequireDefault(require("classnames"));
41
+
40
42
  var _dec, _class, _class2, _temp;
41
43
 
42
44
  var styles = {
43
- componentId: 'ZuPLN',
45
+ componentId: 'cEPQa',
44
46
  template: function template(theme) {
45
- return "\n\n.ZuPLN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}");
47
+ return "\n\n.cEPQa_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.cEPQa_cVld{max-width:100%;width:calc(25% + 350px)}");
46
48
  },
47
- 'tableWrapper': 'ZuPLN_rMrG'
49
+ 'tableWrapper': 'cEPQa_rMrG',
50
+ 'answerFrequencySummaryContainer': 'cEPQa_cVld'
48
51
  };
49
52
  var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
50
53
  (0, _inherits2.default)(ChoiceType, _Component);
@@ -100,7 +103,9 @@ var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _d
100
103
  var answerHeaderId = "answer-frequency-summary-answer-".concat(itemId);
101
104
  var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
102
105
  var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
103
- return /*#__PURE__*/_react.default.createElement(_index2.default, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
106
+ return /*#__PURE__*/_react.default.createElement(_index2.default, null, /*#__PURE__*/_react.default.createElement("div", {
107
+ className: (0, _classnames.default)(styles.answerFrequencySummaryContainer)
108
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
104
109
  caption: (0, _formatMessage.default)('Answer Frequency Summary')
105
110
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
106
111
  id: spacingHeaderId,
@@ -115,7 +120,7 @@ var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _d
115
120
  id: percentageHeaderId,
116
121
  height: "47px",
117
122
  textAlign: "center"
118
- }, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices))));
123
+ }, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices)))));
119
124
  }
120
125
  }]);
121
126
  ChoiceType.displayName = "ChoiceType";
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.MatchingType = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _index = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
23
+
24
+ var _index2 = _interopRequireDefault(require("./MatchingTypeTable/index.js"));
25
+
26
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
+
28
+ var _propTypes2 = require("../../propTypes.js");
29
+
30
+ var _matchingTypeOrderer = _interopRequireDefault(require("./utils/matchingTypeOrderer.js"));
31
+
32
+ var _classnames = _interopRequireDefault(require("classnames"));
33
+
34
+ var _uiThemeable = require("@instructure/ui-themeable");
35
+
36
+ var _dec, _class, _class2, _temp;
37
+
38
+ var styles = {
39
+ componentId: 'JFhmr',
40
+ template: function template(theme) {
41
+ return "\n\n.JFhmr_cVld{max-width:100%;width:calc(25% + 350px)}";
42
+ },
43
+ 'answerFrequencySummaryContainer': 'JFhmr_cVld'
44
+ };
45
+ var MatchingType = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
46
+ (0, _inherits2.default)(MatchingType, _Component);
47
+
48
+ var _super = (0, _createSuper2.default)(MatchingType);
49
+
50
+ function MatchingType() {
51
+ var _this;
52
+
53
+ (0, _classCallCheck2.default)(this, MatchingType);
54
+
55
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
56
+ args[_key] = arguments[_key];
57
+ }
58
+
59
+ _this = _super.call.apply(_super, [this].concat(args));
60
+
61
+ _this.render = function () {
62
+ var _this$props = _this.props,
63
+ itemId = _this$props.itemId,
64
+ answerSummary = _this$props.answerSummary;
65
+ var questions = answerSummary.questions;
66
+ var questionKeys = Object.keys(questions);
67
+ var exampleAnswers = questions[questionKeys[0]].answers;
68
+ var answerKeys = Object.keys(exampleAnswers);
69
+
70
+ var orderedAnswerKeys = _matchingTypeOrderer.default.orderAnswerKeysForDiagonal(answerSummary, answerKeys);
71
+
72
+ var orderedQuestionKeys = _matchingTypeOrderer.default.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
73
+
74
+ var containerHalfWidth = orderedAnswerKeys.length <= 3;
75
+ return /*#__PURE__*/_react.default.createElement(_index.default, null, /*#__PURE__*/_react.default.createElement("div", {
76
+ className: (0, _classnames.default)((0, _defineProperty2.default)({}, styles.answerFrequencySummaryContainer, containerHalfWidth))
77
+ }, /*#__PURE__*/_react.default.createElement(_index2.default, {
78
+ itemId: itemId,
79
+ answerSummary: answerSummary,
80
+ orderedAnswerKeys: orderedAnswerKeys,
81
+ orderedQuestionKeys: orderedQuestionKeys
82
+ })));
83
+ };
84
+
85
+ return _this;
86
+ }
87
+
88
+ return MatchingType;
89
+ }(_react.Component), _class2.propTypes = {
90
+ itemId: _propTypes.default.number,
91
+ answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType
92
+ }.isRequired, _temp)) || _class);
93
+ exports.MatchingType = MatchingType;
@@ -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.MatchingTypeTable;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.MatchingTypeTable = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _uiFlex = require("@instructure/ui-flex");
23
+
24
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
25
+
26
+ var _uiTable = require("@instructure/ui-table");
27
+
28
+ var _uiThemeable = require("@instructure/ui-themeable");
29
+
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
32
+ var _uiIcons = require("@instructure/ui-icons");
33
+
34
+ var _propTypes2 = require("../../../propTypes.js");
35
+
36
+ var _classnames = _interopRequireDefault(require("classnames"));
37
+
38
+ var _theme = _interopRequireDefault(require("./theme.js"));
39
+
40
+ var _dec, _class, _class2, _temp;
41
+
42
+ var styles = {
43
+ componentId: 'daSNV',
44
+ template: function template(theme) {
45
+ return "\n\n.daSNV_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.daSNV_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.daSNV_EKAb{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.daSNV_EKAb svg{fill:#fff}\n\n.daSNV_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0}\n\n.daSNV_fvqY{border-radius:4px 4px 4px 4px;border-width:2px 2px 2px 2px}\n\n.daSNV_cVld{max-width:100%;width:calc(25% + 350px)}");
46
+ },
47
+ 'tableWrapper': 'daSNV_rMrG',
48
+ 'iconWrapper': 'daSNV_cvRx',
49
+ 'iconCorrect': 'daSNV_EKAb',
50
+ 'correctRowBorder': 'daSNV_tnta',
51
+ 'correctRowBorderRadius': 'daSNV_fvqY',
52
+ 'answerFrequencySummaryContainer': 'daSNV_cVld'
53
+ };
54
+
55
+ var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
56
+
57
+ var _ref2 = /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
58
+ width: "46px",
59
+ textAlign: "center"
60
+ });
61
+
62
+ var MatchingTypeTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
63
+ (0, _inherits2.default)(MatchingTypeTable, _Component);
64
+
65
+ var _super = (0, _createSuper2.default)(MatchingTypeTable);
66
+
67
+ function MatchingTypeTable() {
68
+ var _this;
69
+
70
+ (0, _classCallCheck2.default)(this, MatchingTypeTable);
71
+
72
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
73
+ args[_key] = arguments[_key];
74
+ }
75
+
76
+ _this = _super.call.apply(_super, [this].concat(args));
77
+
78
+ _this.renderIcon = function () {
79
+ var classes = (0, _classnames.default)(styles.iconWrapper, styles.iconCorrect);
80
+ return /*#__PURE__*/_react.default.createElement("div", {
81
+ className: classes
82
+ }, _ref);
83
+ };
84
+
85
+ _this.renderHeaderCell = function (key) {
86
+ var _this$props = _this.props,
87
+ answerSummary = _this$props.answerSummary,
88
+ itemId = _this$props.itemId;
89
+ var questions = answerSummary.questions;
90
+ var questionKeys = Object.keys(questions);
91
+ var exampleAnswers = questions[questionKeys[0]].answers;
92
+ var answer = exampleAnswers[key];
93
+ var answerNumberHeaderId = "answer-number-header-".concat(key, "-").concat(itemId);
94
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
95
+ id: answerNumberHeaderId,
96
+ key: answerNumberHeaderId,
97
+ theme: {
98
+ padding: '0 0 15px 0'
99
+ },
100
+ textAlign: "center"
101
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
102
+ direction: "row"
103
+ }, _ref2, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
104
+ shouldShrink: true,
105
+ shouldGrow: true,
106
+ textAlign: "center"
107
+ }, answer.body)));
108
+ };
109
+
110
+ _this.renderCell = function (questionKey, answerKey) {
111
+ var _classNames;
112
+
113
+ var _this$props2 = _this.props,
114
+ answerSummary = _this$props2.answerSummary,
115
+ itemId = _this$props2.itemId;
116
+ var questions = answerSummary.questions;
117
+ var question = questions[questionKey];
118
+ var answer = question.answers[answerKey];
119
+ var correct = answer.correct,
120
+ count = answer.count;
121
+ var answerNumberCellId = "answer-number-cell-".concat(questionKey, "-").concat(answerKey, "-").concat(itemId);
122
+ var containerClassNames = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, styles.correctRowBorder, answer.correct), (0, _defineProperty2.default)(_classNames, styles.correctRowBorderRadius, answer.correct), _classNames));
123
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
124
+ id: answerNumberCellId,
125
+ key: answerNumberCellId,
126
+ theme: {
127
+ padding: '0 0 0 0'
128
+ }
129
+ }, /*#__PURE__*/_react.default.createElement("div", {
130
+ className: containerClassNames
131
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
132
+ direction: "row"
133
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
134
+ width: "46px",
135
+ textAlign: "center"
136
+ }, correct && _this.renderIcon()), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
137
+ shouldShrink: true,
138
+ shouldGrow: true,
139
+ width: "46px",
140
+ textAlign: "center"
141
+ }, count))));
142
+ };
143
+
144
+ _this.renderHeaderRow = function (orderedAnswerKeys) {
145
+ var itemId = _this.props.itemId;
146
+ var headerCells = orderedAnswerKeys.map(_this.renderHeaderCell);
147
+ var categoryHeaderId = "category-header-".concat(itemId);
148
+ var rowKey = "header-row-".concat(itemId);
149
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, {
150
+ key: rowKey
151
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
152
+ id: categoryHeaderId,
153
+ key: categoryHeaderId,
154
+ theme: {
155
+ padding: '0 0 15px 0'
156
+ },
157
+ textAlign: "start",
158
+ width: "250px"
159
+ }, (0, _formatMessage.default)('Question')), headerCells);
160
+ };
161
+
162
+ _this.renderRow = function (orderedQuestionKey, orderedAnswerKeys) {
163
+ var _this$props3 = _this.props,
164
+ answerSummary = _this$props3.answerSummary,
165
+ itemId = _this$props3.itemId;
166
+ var questions = answerSummary.questions;
167
+ var question = questions[orderedQuestionKey];
168
+ var answerCells = orderedAnswerKeys.map(function (answerKey) {
169
+ return _this.renderCell(orderedQuestionKey, answerKey);
170
+ });
171
+ var questionRowHeaderId = "question-row-header-id-".concat(orderedQuestionKey, "-").concat(itemId);
172
+ var rowKey = "row-".concat(orderedQuestionKey, "-").concat(itemId);
173
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, {
174
+ key: rowKey
175
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
176
+ id: questionRowHeaderId,
177
+ key: questionRowHeaderId,
178
+ theme: {
179
+ padding: '0 0 1px 0'
180
+ }
181
+ }, question.body), answerCells);
182
+ };
183
+
184
+ _this.render = function () {
185
+ var _this$props4 = _this.props,
186
+ orderedAnswerKeys = _this$props4.orderedAnswerKeys,
187
+ orderedQuestionKeys = _this$props4.orderedQuestionKeys;
188
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
189
+ caption: (0, _formatMessage.default)('Answer Frequency Summary')
190
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, _this.renderHeaderRow(orderedAnswerKeys)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, orderedQuestionKeys.map(function (orderedQuestionKey) {
191
+ return _this.renderRow(orderedQuestionKey, orderedAnswerKeys);
192
+ })));
193
+ };
194
+
195
+ return _this;
196
+ }
197
+
198
+ return MatchingTypeTable;
199
+ }(_react.Component), _class2.propTypes = {
200
+ itemId: _propTypes.default.number,
201
+ answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType,
202
+ orderedAnswerKeys: _propTypes.default.array.isRequired,
203
+ orderedQuestionKeys: _propTypes.default.array.isRequired
204
+ }.isRequired, _temp)) || _class);
205
+ exports.MatchingTypeTable = MatchingTypeTable;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator(_ref) {
9
+ var spacing = _ref.spacing;
10
+ return {
11
+ tableBottomPadding: spacing.medium,
12
+ colorGreen: '#0b874b'
13
+ };
14
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "MatchingType", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _MatchingType.MatchingType;
10
+ }
11
+ });
12
+
13
+ var _MatchingType = require("./MatchingType.js");
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var MatchingTypeOrderer = function MatchingTypeOrderer() {
15
+ (0, _classCallCheck2.default)(this, MatchingTypeOrderer);
16
+
17
+ this.orderAnswerKeysForDiagonal = function (answerSummary, answerKeys) {
18
+ var questions = answerSummary.questions;
19
+ var questionKeys = Object.keys(questions);
20
+ var orderedKeys = (0, _toConsumableArray2.default)(answerKeys);
21
+ answerKeys.forEach(function (answerKey) {
22
+ questionKeys.forEach(function (questionKey) {
23
+ var question = questions[questionKey];
24
+
25
+ if (question.answers[answerKey].distractor) {
26
+ orderedKeys.splice(orderedKeys.indexOf(answerKey), 1);
27
+ orderedKeys.push(answerKey);
28
+ }
29
+ });
30
+ });
31
+ return orderedKeys;
32
+ };
33
+
34
+ this.orderQuestionKeysForDiagonal = function (answerSummary, questionKeys, orderedAnswerKeys) {
35
+ var questions = answerSummary.questions;
36
+ var orderedQuestionKeys = [];
37
+ orderedAnswerKeys.forEach(function (orderedAnswerKey) {
38
+ questionKeys.forEach(function (questionKey) {
39
+ var question = questions[questionKey];
40
+
41
+ if (question.answers[orderedAnswerKey].correct) {
42
+ orderedQuestionKeys.push(questionKey);
43
+ }
44
+ });
45
+ });
46
+ return orderedQuestionKeys;
47
+ };
48
+ };
49
+
50
+ var _default = new MatchingTypeOrderer();
51
+
52
+ exports.default = _default;
@@ -23,6 +23,8 @@ var _index = _interopRequireDefault(require("./ChoiceType/index.js"));
23
23
 
24
24
  var _index2 = _interopRequireDefault(require("./AggregationType/index.js"));
25
25
 
26
+ var _index3 = require("./MatchingType/index.js");
27
+
26
28
  var _propTypes = require("../propTypes.js");
27
29
 
28
30
  var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
@@ -50,6 +52,10 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
50
52
  if (afsFlags.hotSpotEnabled) {
51
53
  _this.afsTableComponentMap.set('hot-spot', _index2.default);
52
54
  }
55
+
56
+ if (afsFlags.matchingEnabled) {
57
+ _this.afsTableComponentMap.set('matching', _index3.MatchingType);
58
+ }
53
59
  };
54
60
 
55
61
  _this.render = function () {
@@ -27,7 +27,9 @@ var _uiFlex = require("@instructure/ui-flex");
27
27
 
28
28
  var _uiHeading = require("@instructure/ui-heading");
29
29
 
30
- var _dec, _class, _temp;
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
32
+ var _dec, _class, _class2, _temp;
31
33
 
32
34
  var styles = {
33
35
  componentId: 'bmsWU',
@@ -36,7 +38,7 @@ var styles = {
36
38
  },
37
39
  'tableWrapper': 'bmsWU_rMrG'
38
40
  };
39
- var AfsTableWrapper = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = /*#__PURE__*/function (_Component) {
41
+ var AfsTableWrapper = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
40
42
  (0, _inherits2.default)(AfsTableWrapper, _Component);
41
43
 
42
44
  var _super = (0, _createSuper2.default)(AfsTableWrapper);
@@ -53,23 +55,25 @@ var AfsTableWrapper = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
53
55
  _this = _super.call.apply(_super, [this].concat(args));
54
56
 
55
57
  _this.render = function () {
56
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
58
+ return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
57
59
  direction: "row"
58
60
  }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
59
61
  shouldGrow: true
60
62
  }, /*#__PURE__*/_react.default.createElement("div", {
61
63
  className: styles.tableWrapper
62
64
  }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
63
- margin: "0 x-large small 0",
65
+ margin: "x-large x-large x-large 0",
64
66
  level: "h3",
65
67
  weight: "bold",
66
68
  color: "primary"
67
- }, (0, _formatMessage.default)('Answer Frequency Summary')), _this.props.children))));
69
+ }, (0, _formatMessage.default)('Answer Frequency Summary')), _this.props.children)));
68
70
  };
69
71
 
70
72
  return _this;
71
73
  }
72
74
 
73
75
  return AfsTableWrapper;
74
- }(_react.Component), _temp)) || _class);
76
+ }(_react.Component), _class2.propTypes = {
77
+ children: _propTypes.default.node.isRequired
78
+ }, _temp)) || _class);
75
79
  exports.AfsTableWrapper = AfsTableWrapper;