@instructure/quiz-core 17.62.0 → 17.62.1-rc.1

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 (19) hide show
  1. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +2 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +90 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/index.js +2 -0
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +109 -0
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +2 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +62 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/theme.js +8 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +32 -17
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +13 -0
  10. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +11 -0
  11. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +110 -0
  12. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/index.js +11 -0
  13. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +132 -0
  14. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +11 -0
  15. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +83 -0
  16. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/theme.js +15 -0
  17. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +33 -17
  18. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +18 -2
  19. package/package.json +11 -11
@@ -0,0 +1,2 @@
1
+ import { ChoiceInfo } from "./presenter.js";
2
+ export default ChoiceInfo;
@@ -0,0 +1,90 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React, { Component } from 'react';
6
+ import t from '@instructure/quiz-i18n/es/format-message';
7
+ import { Table } from '@instructure/ui-table';
8
+ import Row from "../Row/index.js";
9
+ import PropTypes from 'prop-types';
10
+
11
+ var _ref = /*#__PURE__*/React.createElement(Table.ColHeader, {
12
+ width: "46px"
13
+ });
14
+
15
+ export var ChoiceInfo = /*#__PURE__*/function (_Component) {
16
+ _inherits(ChoiceInfo, _Component);
17
+
18
+ var _super = _createSuper(ChoiceInfo);
19
+
20
+ function ChoiceInfo() {
21
+ var _this;
22
+
23
+ _classCallCheck(this, ChoiceInfo);
24
+
25
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
26
+ args[_key] = arguments[_key];
27
+ }
28
+
29
+ _this = _super.call.apply(_super, [this].concat(args));
30
+
31
+ _this.renderRow = function (choice, choiceIndex) {
32
+ return /*#__PURE__*/React.createElement(Row, {
33
+ key: choiceIndex,
34
+ choice: choice,
35
+ choiceIndex: choiceIndex
36
+ });
37
+ };
38
+
39
+ _this.renderNoAnswer = function (payload, choiceIndex) {
40
+ var asChoice = {
41
+ body: t('(No answer)'),
42
+ percentage: payload.percentage,
43
+ correct: false,
44
+ count: payload.count
45
+ };
46
+ return /*#__PURE__*/React.createElement(Row, {
47
+ key: choiceIndex,
48
+ choice: asChoice,
49
+ choiceIndex: choiceIndex
50
+ });
51
+ };
52
+
53
+ return _this;
54
+ }
55
+
56
+ _createClass(ChoiceInfo, [{
57
+ key: "render",
58
+ value: function render() {
59
+ var _this$props = this.props,
60
+ choices = _this$props.choices,
61
+ noAnswer = _this$props.noAnswer;
62
+ var numberOfChoices = choices.length;
63
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Table, {
64
+ caption: t('Answer Frequency Summary')
65
+ }, /*#__PURE__*/React.createElement(Table.Head, null, /*#__PURE__*/React.createElement(Table.Row, null, _ref, /*#__PURE__*/React.createElement(Table.ColHeader, {
66
+ height: "47px"
67
+ }, t('Answer')), /*#__PURE__*/React.createElement(Table.ColHeader, {
68
+ height: "47px"
69
+ }, t('Respondents')), /*#__PURE__*/React.createElement(Table.ColHeader, {
70
+ height: "47px",
71
+ textAlign: "center"
72
+ }, t('%')))), /*#__PURE__*/React.createElement(Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices))));
73
+ }
74
+ }]);
75
+
76
+ ChoiceInfo.displayName = "ChoiceInfo";
77
+ return ChoiceInfo;
78
+ }(Component);
79
+ ChoiceInfo.propTypes = {
80
+ choices: PropTypes.arrayOf(PropTypes.shape({
81
+ body: PropTypes.string,
82
+ correct: PropTypes.bool,
83
+ count: PropTypes.number,
84
+ percentage: PropTypes.number
85
+ })),
86
+ noAnswer: PropTypes.shape({
87
+ count: PropTypes.number,
88
+ percentage: PropTypes.number
89
+ })
90
+ }.isRequired;
@@ -0,0 +1,2 @@
1
+ import { Row } from "./presenter.js";
2
+ export default Row;
@@ -0,0 +1,109 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+
6
+ var _dec, _class, _class2, _temp;
7
+
8
+ import React, { Component } from 'react';
9
+ import { Table } from '@instructure/ui-table';
10
+ import { themeable } from '@instructure/ui-themeable';
11
+ import theme from "../theme.js";
12
+ var styles = {
13
+ componentId: 'fvXKN',
14
+ template: function template(theme) {
15
+ return "\n\n.fvXKN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.fvXKN_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.fvXKN_EKAb{background-color:").concat(theme.colorGreen || 'inherit', ";border-radius:4px 0 0 4px}\n\n.fvXKN_EKAb svg{filter:invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(102%) contrast(102%)}\n\n.fvXKN_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.fvXKN_fvqY{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
16
+ },
17
+ 'tableWrapper': 'fvXKN_rMrG',
18
+ 'iconWrapper': 'fvXKN_cvRx',
19
+ 'iconCorrect': 'fvXKN_EKAb',
20
+ 'correctRowBorder': 'fvXKN_tnta',
21
+ 'correctRowBorderRadius': 'fvXKN_fvqY'
22
+ };
23
+ import PropTypes from 'prop-types';
24
+ import { IconXSolid, IconCheckSolid } from '@instructure/ui-icons';
25
+ import classNames from 'classnames';
26
+ import { extractTextFromHtml } from '@instructure/quiz-interactions';
27
+
28
+ var _ref = /*#__PURE__*/React.createElement(IconCheckSolid, null);
29
+
30
+ var _ref2 = /*#__PURE__*/React.createElement(IconXSolid, null);
31
+
32
+ export var Row = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
33
+ _inherits(Row, _Component);
34
+
35
+ var _super = _createSuper(Row);
36
+
37
+ function Row() {
38
+ var _this;
39
+
40
+ _classCallCheck(this, Row);
41
+
42
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43
+ args[_key] = arguments[_key];
44
+ }
45
+
46
+ _this = _super.call.apply(_super, [this].concat(args));
47
+
48
+ _this.renderIcon = function (correct) {
49
+ var className = classNames(styles.iconWrapper, _defineProperty({}, styles.iconCorrect, correct));
50
+ return /*#__PURE__*/React.createElement("div", {
51
+ className: className
52
+ }, correct ? _ref : _ref2);
53
+ };
54
+
55
+ _this.renderMiddleCell = function (correct, content) {
56
+ var className = classNames(_defineProperty({}, styles.correctRowBorder, correct));
57
+ return /*#__PURE__*/React.createElement("div", {
58
+ className: className
59
+ }, content);
60
+ };
61
+
62
+ _this.renderLastCell = function (correct, content) {
63
+ var _classNames3;
64
+
65
+ var className = classNames((_classNames3 = {}, _defineProperty(_classNames3, styles.correctRowBorder, correct), _defineProperty(_classNames3, styles.correctRowBorderRadius, correct), _classNames3));
66
+ return /*#__PURE__*/React.createElement("div", {
67
+ className: className
68
+ }, content);
69
+ };
70
+
71
+ _this.render = function () {
72
+ var correct = _this.props.choice.correct;
73
+ var cellPadding = correct ? '0' : _this.theme.cellPadding;
74
+ return /*#__PURE__*/React.createElement(Table.Row, {
75
+ key: _this.props.choiceIndex
76
+ }, /*#__PURE__*/React.createElement(Table.Cell, {
77
+ theme: {
78
+ padding: '0px'
79
+ }
80
+ }, _this.renderIcon(correct)), /*#__PURE__*/React.createElement(Table.RowHeader, {
81
+ theme: {
82
+ padding: cellPadding
83
+ },
84
+ className: styles.tableBody
85
+ }, _this.renderMiddleCell(correct, extractTextFromHtml(_this.props.choice.body))), /*#__PURE__*/React.createElement(Table.Cell, {
86
+ theme: {
87
+ padding: cellPadding
88
+ }
89
+ }, _this.renderMiddleCell(correct, _this.props.choice.count)), /*#__PURE__*/React.createElement(Table.Cell, {
90
+ theme: {
91
+ padding: cellPadding
92
+ },
93
+ textAlign: "center"
94
+ }, _this.renderLastCell(correct, "".concat(_this.props.choice.percentage, "%"))));
95
+ };
96
+
97
+ return _this;
98
+ }
99
+
100
+ return Row;
101
+ }(Component), _class2.propTypes = {
102
+ choice: PropTypes.shape({
103
+ body: PropTypes.string,
104
+ correct: PropTypes.bool,
105
+ count: PropTypes.number,
106
+ percentage: PropTypes.number
107
+ }),
108
+ choiceIndex: PropTypes.number
109
+ }.isRequired, _temp)) || _class);
@@ -0,0 +1,2 @@
1
+ import { AnswerSummaryTable } from "./presenter.js";
2
+ export default AnswerSummaryTable;
@@ -0,0 +1,62 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
3
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
4
+
5
+ var _dec, _class, _class2, _temp;
6
+
7
+ import React, { Component } from 'react';
8
+ import { Heading } from '@instructure/ui-heading';
9
+ import { themeable } from '@instructure/ui-themeable';
10
+ import theme from "./theme.js";
11
+ var styles = {
12
+ componentId: 'fvXKN',
13
+ template: function template(theme) {
14
+ return "\n\n.fvXKN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.fvXKN_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.fvXKN_EKAb{background-color:").concat(theme.colorGreen || 'inherit', ";border-radius:4px 0 0 4px}\n\n.fvXKN_EKAb svg{filter:invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(102%) contrast(102%)}\n\n.fvXKN_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.fvXKN_fvqY{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
15
+ },
16
+ 'tableWrapper': 'fvXKN_rMrG',
17
+ 'iconWrapper': 'fvXKN_cvRx',
18
+ 'iconCorrect': 'fvXKN_EKAb',
19
+ 'correctRowBorder': 'fvXKN_tnta',
20
+ 'correctRowBorderRadius': 'fvXKN_fvqY'
21
+ };
22
+ import { ChoiceInfo } from "./ChoiceInfo/presenter.js";
23
+ import t from '@instructure/quiz-i18n/es/format-message';
24
+ import { answerSummaryPropType } from "../propTypes.js";
25
+ export var AnswerSummaryTable = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
26
+ _inherits(AnswerSummaryTable, _Component);
27
+
28
+ var _super = _createSuper(AnswerSummaryTable);
29
+
30
+ function AnswerSummaryTable() {
31
+ var _this;
32
+
33
+ _classCallCheck(this, AnswerSummaryTable);
34
+
35
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
36
+ args[_key] = arguments[_key];
37
+ }
38
+
39
+ _this = _super.call.apply(_super, [this].concat(args));
40
+
41
+ _this.render = function () {
42
+ var _this$props$answerSum = _this.props.answerSummary,
43
+ choices = _this$props$answerSum.choices,
44
+ no_answer = _this$props$answerSum.no_answer;
45
+ return /*#__PURE__*/React.createElement("div", {
46
+ className: styles.tableWrapper
47
+ }, /*#__PURE__*/React.createElement(Heading, {
48
+ margin: "large 0 small 0",
49
+ level: "h3"
50
+ }, t('Answer Frequency Summary')), /*#__PURE__*/React.createElement(ChoiceInfo, {
51
+ choices: choices,
52
+ noAnswer: no_answer
53
+ }));
54
+ };
55
+
56
+ return _this;
57
+ }
58
+
59
+ return AnswerSummaryTable;
60
+ }(Component), _class2.propTypes = {
61
+ answerSummary: answerSummaryPropType
62
+ }.isRequired, _temp)) || _class);
@@ -0,0 +1,8 @@
1
+ export default function generator(_ref) {
2
+ var spacing = _ref.spacing;
3
+ return {
4
+ colorGreen: '#0b874b',
5
+ cellPadding: ' 0.75rem 0.75rem',
6
+ tableBottomPadding: spacing.medium
7
+ };
8
+ }
@@ -9,24 +9,27 @@ var _dec, _class, _class2, _temp;
9
9
  import { Heading } from '@instructure/ui-heading';
10
10
  import React, { Component } from 'react';
11
11
  var styles = {
12
- componentId: 'eLWCD',
12
+ componentId: 'bCOJX',
13
13
  template: function template(theme) {
14
- return "\n\n.eLWCD_eDnN{display:flex;flex-basis:45%;flex-direction:column;overflow:hidden}\n\n.eLWCD_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.eLWCD_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.eLWCD_eIAv{display:flex;position:relative}\n\n.eLWCD_ePHw{flex-basis:91%;overflow:hidden;padding-bottom:10px;text-overflow:ellipsis;white-space:nowrap}\n\n.eLWCD_dzsH{overflow:visible;text-overflow:unset;white-space:normal}\n\n.eLWCD_byoJ{position:absolute;right:7px;top:-8px}\n\n.eLWCD_evBt{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}\n\n.eLWCD_pAQb{display:flex;flex-direction:column;height:60px}\n\n.eLWCD_zefc{display:flex;flex-basis:55%;justify-content:flex-end}\n\n.eLWCD_dPzc{flex-direction:column}\n\n.eLWCD_dPzc,.eLWCD_dzph{display:flex;flex-basis:100%}\n\n.eLWCD_dzph{align-items:flex-start;box-sizing:border-box;column-gap:5px;justify-content:space-between;padding:0 30px 0 25px}\n\n.eLWCD_eobd{padding-top:1rem}\n\n.eLWCD_NpIG{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}\n\n@media screen and (--tabletBreakPoint){.eLWCD_zefc{flex-basis:100%;justify-content:flex-start}.eLWCD_ePHw{flex-basis:94%}.eLWCD_eDnN{flex-basis:100%}.eLWCD_dzph{padding:0}.eLWCD_eDnN h3{padding-right:30px}.eLWCD_NpIG{right:17px}.eLWCD_eIAv{margin-bottom:20px}.eLWCD_byoJ{right:-7px}.eLWCD_dzph{flex-wrap:wrap}}");
14
+ return "\n\n.bCOJX_eDnN{display:flex;flex-basis:45%;flex-direction:column;overflow:hidden}\n\n.bCOJX_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.bCOJX_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.bCOJX_eIAv{display:flex;position:relative}\n\n.bCOJX_ePHw{flex-basis:91%;overflow:hidden;padding-bottom:10px;text-overflow:ellipsis;white-space:nowrap}\n\n.bCOJX_dzsH{overflow:visible;text-overflow:unset;white-space:normal}\n\n.bCOJX_byoJ{position:absolute;right:7px;top:-8px}\n\n.bCOJX_evBt{flex-wrap:wrap;justify-content:space-between}\n\n.bCOJX_pAQb,.bCOJX_evBt{display:flex;flex-direction:row}\n\n.bCOJX_zefc{display:flex;flex-basis:55%;justify-content:flex-end}\n\n.bCOJX_dPzc{flex-direction:column}\n\n.bCOJX_dPzc,.bCOJX_dzph{display:flex;flex-basis:100%}\n\n.bCOJX_dzph{align-items:flex-start;box-sizing:border-box;column-gap:5px;justify-content:space-between;padding:0 30px 0 25px}\n\n.bCOJX_eobd{padding-top:1rem}\n\n.bCOJX_NpIG{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}\n\n.bCOJX_csiQ{display:flex;flex-basis:100%}\n\n.bCOJX_fjVl{display:flex;flex-basis:50%}\n\n.bCOJX_eZLI{display:flex;flex-basis:40%}\n\n@media screen and (--tabletBreakPoint){.bCOJX_zefc{flex-basis:100%;justify-content:flex-start}.bCOJX_ePHw{flex-basis:94%}.bCOJX_eDnN{flex-basis:100%}.bCOJX_dzph{padding:0}.bCOJX_eDnN h3{padding-right:30px}.bCOJX_NpIG{right:17px}.bCOJX_eIAv{margin-bottom:20px}.bCOJX_byoJ{right:-7px}.bCOJX_dzph{flex-wrap:wrap}}");
15
15
  },
16
- 'heading': 'eLWCD_eDnN',
17
- 'cardWrapper': 'eLWCD_eKXQ',
18
- 'metricNumberContext': 'eLWCD_eoBe',
19
- 'bodyPresentation': 'eLWCD_eIAv',
20
- 'bodyExcerpt': 'eLWCD_ePHw',
21
- 'bodyExcerptExpanded': 'eLWCD_dzsH',
22
- 'bodyExpandButtonWrapper': 'eLWCD_byoJ',
23
- 'innerWrapper': 'eLWCD_evBt',
24
- 'expandableInnerWrapper': 'eLWCD_pAQb',
25
- 'metricsWithControls': 'eLWCD_zefc',
26
- 'metricGroup': 'eLWCD_dPzc',
27
- 'metricsRow': 'eLWCD_dzph',
28
- 'metricsRowPaginated': 'eLWCD_eobd',
29
- 'itemCardToggleButtonWrapper': 'eLWCD_NpIG'
16
+ 'heading': 'bCOJX_eDnN',
17
+ 'cardWrapper': 'bCOJX_eKXQ',
18
+ 'metricNumberContext': 'bCOJX_eoBe',
19
+ 'bodyPresentation': 'bCOJX_eIAv',
20
+ 'bodyExcerpt': 'bCOJX_ePHw',
21
+ 'bodyExcerptExpanded': 'bCOJX_dzsH',
22
+ 'bodyExpandButtonWrapper': 'bCOJX_byoJ',
23
+ 'innerWrapper': 'bCOJX_evBt',
24
+ 'expandableInnerWrapper': 'bCOJX_pAQb',
25
+ 'metricsWithControls': 'bCOJX_zefc',
26
+ 'metricGroup': 'bCOJX_dPzc',
27
+ 'metricsRow': 'bCOJX_dzph',
28
+ 'metricsRowPaginated': 'bCOJX_eobd',
29
+ 'itemCardToggleButtonWrapper': 'bCOJX_NpIG',
30
+ 'expandableContent': 'bCOJX_csiQ',
31
+ 'tableColumn': 'bCOJX_fjVl',
32
+ 'performanceColumn': 'bCOJX_eZLI'
30
33
  };
31
34
  import t from '@instructure/quiz-i18n/es/format-message';
32
35
  import ExpandButton from "../../../../../common/components/shared/ExpandButton/index.js";
@@ -39,7 +42,9 @@ import AnalysisMetric from "../AnalysisMetric/index.js";
39
42
  import AnalysisPopoverMetric from "../AnalysisPopoverMetric/index.js";
40
43
  import classnames from 'classnames';
41
44
  import { interactionTypesNameDictionary } from "../../../../../common/util/interactionTypeMetadata.js";
45
+ import AnswerSummaryTable from "../AnswerSummaryTable/index.js";
42
46
  import { itemAnalysisPropType } from "../propTypes.js";
47
+ var supportedTables = ['choice', 'true-false', 'multi-answer'];
43
48
  export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
44
49
  _inherits(NewItemAnalysis, _Component);
45
50
 
@@ -176,11 +181,13 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
176
181
  key: "render",
177
182
  value: function render() {
178
183
  var _this$props$itemAnaly = this.props.itemAnalysis,
184
+ answer_summary = _this$props$itemAnaly.answer_summary,
179
185
  metadata = _this$props$itemAnaly.metadata,
180
186
  scores = _this$props$itemAnaly.scores;
181
187
  var bodyClass = classnames(styles.bodyExcerpt, _defineProperty({}, styles.bodyExcerptExpanded, this.state.bodyExpanded));
182
188
  var headingId = this.buildItemCardHeadingId();
183
189
  var bodyId = this.buildItemCardBodyId();
190
+ var isSupportedTable = supportedTables.includes(metadata.interaction_type);
184
191
  return /*#__PURE__*/React.createElement(Card, {
185
192
  className: styles.cardWrapper
186
193
  }, /*#__PURE__*/React.createElement("div", {
@@ -231,7 +238,15 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
231
238
  popoverDescription: discriminationIndex
232
239
  }), this.renderExpandItemCardButton()), this.state.metricsExpanded && this.renderExpanded()))), this.state.itemExpanded && /*#__PURE__*/React.createElement("div", {
233
240
  className: styles.expandableInnerWrapper
234
- }));
241
+ }, /*#__PURE__*/React.createElement("div", {
242
+ className: styles.expandableContent
243
+ }, /*#__PURE__*/React.createElement("div", {
244
+ className: styles.tableColumn
245
+ }, isSupportedTable && /*#__PURE__*/React.createElement(AnswerSummaryTable, {
246
+ answerSummary: answer_summary
247
+ })), /*#__PURE__*/React.createElement("div", {
248
+ className: styles.performanceColumn
249
+ }))));
235
250
  }
236
251
  }]);
237
252
 
@@ -40,5 +40,18 @@ export var itemAnalysisPropType = PropTypes.shape({
40
40
  pearson_correlation: PropTypes.number,
41
41
  points_possible: PropTypes.number,
42
42
  quartile_distribution: PropTypes.arrayOf(PropTypes.number)
43
+ }),
44
+ answer_summary: answerSummaryPropType
45
+ });
46
+ export var answerSummaryPropType = PropTypes.shape({
47
+ choices: PropTypes.arrayOf(PropTypes.shape({
48
+ body: PropTypes.string,
49
+ correct: PropTypes.bool,
50
+ count: PropTypes.number,
51
+ percentage: PropTypes.number
52
+ })),
53
+ no_answer: PropTypes.shape({
54
+ count: PropTypes.number,
55
+ percentage: PropTypes.number
43
56
  })
44
57
  });
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _presenter = require("./presenter.js");
9
+
10
+ var _default = _presenter.ChoiceInfo;
11
+ exports.default = _default;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.ChoiceInfo = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
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 _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
23
+
24
+ var _uiTable = require("@instructure/ui-table");
25
+
26
+ var _index = _interopRequireDefault(require("../Row/index.js"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _ref = /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
31
+ width: "46px"
32
+ });
33
+
34
+ var ChoiceInfo = /*#__PURE__*/function (_Component) {
35
+ (0, _inherits2.default)(ChoiceInfo, _Component);
36
+
37
+ var _super = (0, _createSuper2.default)(ChoiceInfo);
38
+
39
+ function ChoiceInfo() {
40
+ var _this;
41
+
42
+ (0, _classCallCheck2.default)(this, ChoiceInfo);
43
+
44
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
45
+ args[_key] = arguments[_key];
46
+ }
47
+
48
+ _this = _super.call.apply(_super, [this].concat(args));
49
+
50
+ _this.renderRow = function (choice, choiceIndex) {
51
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
52
+ key: choiceIndex,
53
+ choice: choice,
54
+ choiceIndex: choiceIndex
55
+ });
56
+ };
57
+
58
+ _this.renderNoAnswer = function (payload, choiceIndex) {
59
+ var asChoice = {
60
+ body: (0, _formatMessage.default)('(No answer)'),
61
+ percentage: payload.percentage,
62
+ correct: false,
63
+ count: payload.count
64
+ };
65
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
66
+ key: choiceIndex,
67
+ choice: asChoice,
68
+ choiceIndex: choiceIndex
69
+ });
70
+ };
71
+
72
+ return _this;
73
+ }
74
+
75
+ (0, _createClass2.default)(ChoiceInfo, [{
76
+ key: "render",
77
+ value: function render() {
78
+ var _this$props = this.props,
79
+ choices = _this$props.choices,
80
+ noAnswer = _this$props.noAnswer;
81
+ var numberOfChoices = choices.length;
82
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
83
+ caption: (0, _formatMessage.default)('Answer Frequency Summary')
84
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, _ref, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
85
+ height: "47px"
86
+ }, (0, _formatMessage.default)('Answer')), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
87
+ height: "47px"
88
+ }, (0, _formatMessage.default)('Respondents')), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
89
+ height: "47px",
90
+ textAlign: "center"
91
+ }, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices))));
92
+ }
93
+ }]);
94
+ ChoiceInfo.displayName = "ChoiceInfo";
95
+ return ChoiceInfo;
96
+ }(_react.Component);
97
+
98
+ exports.ChoiceInfo = ChoiceInfo;
99
+ ChoiceInfo.propTypes = {
100
+ choices: _propTypes.default.arrayOf(_propTypes.default.shape({
101
+ body: _propTypes.default.string,
102
+ correct: _propTypes.default.bool,
103
+ count: _propTypes.default.number,
104
+ percentage: _propTypes.default.number
105
+ })),
106
+ noAnswer: _propTypes.default.shape({
107
+ count: _propTypes.default.number,
108
+ percentage: _propTypes.default.number
109
+ })
110
+ }.isRequired;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _presenter = require("./presenter.js");
9
+
10
+ var _default = _presenter.Row;
11
+ exports.default = _default;
@@ -0,0 +1,132 @@
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.Row = 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 _uiTable = require("@instructure/ui-table");
23
+
24
+ var _uiThemeable = require("@instructure/ui-themeable");
25
+
26
+ var _theme = _interopRequireDefault(require("../theme.js"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _uiIcons = require("@instructure/ui-icons");
31
+
32
+ var _classnames = _interopRequireDefault(require("classnames"));
33
+
34
+ var _quizInteractions = require("@instructure/quiz-interactions");
35
+
36
+ var _dec, _class, _class2, _temp;
37
+
38
+ var styles = {
39
+ componentId: 'fvXKN',
40
+ template: function template(theme) {
41
+ return "\n\n.fvXKN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.fvXKN_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.fvXKN_EKAb{background-color:").concat(theme.colorGreen || 'inherit', ";border-radius:4px 0 0 4px}\n\n.fvXKN_EKAb svg{filter:invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(102%) contrast(102%)}\n\n.fvXKN_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.fvXKN_fvqY{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
42
+ },
43
+ 'tableWrapper': 'fvXKN_rMrG',
44
+ 'iconWrapper': 'fvXKN_cvRx',
45
+ 'iconCorrect': 'fvXKN_EKAb',
46
+ 'correctRowBorder': 'fvXKN_tnta',
47
+ 'correctRowBorderRadius': 'fvXKN_fvqY'
48
+ };
49
+
50
+ var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
51
+
52
+ var _ref2 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconXSolid, null);
53
+
54
+ var Row = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
55
+ (0, _inherits2.default)(Row, _Component);
56
+
57
+ var _super = (0, _createSuper2.default)(Row);
58
+
59
+ function Row() {
60
+ var _this;
61
+
62
+ (0, _classCallCheck2.default)(this, Row);
63
+
64
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
65
+ args[_key] = arguments[_key];
66
+ }
67
+
68
+ _this = _super.call.apply(_super, [this].concat(args));
69
+
70
+ _this.renderIcon = function (correct) {
71
+ var className = (0, _classnames.default)(styles.iconWrapper, (0, _defineProperty2.default)({}, styles.iconCorrect, correct));
72
+ return /*#__PURE__*/_react.default.createElement("div", {
73
+ className: className
74
+ }, correct ? _ref : _ref2);
75
+ };
76
+
77
+ _this.renderMiddleCell = function (correct, content) {
78
+ var className = (0, _classnames.default)((0, _defineProperty2.default)({}, styles.correctRowBorder, correct));
79
+ return /*#__PURE__*/_react.default.createElement("div", {
80
+ className: className
81
+ }, content);
82
+ };
83
+
84
+ _this.renderLastCell = function (correct, content) {
85
+ var _classNames3;
86
+
87
+ var className = (0, _classnames.default)((_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, styles.correctRowBorder, correct), (0, _defineProperty2.default)(_classNames3, styles.correctRowBorderRadius, correct), _classNames3));
88
+ return /*#__PURE__*/_react.default.createElement("div", {
89
+ className: className
90
+ }, content);
91
+ };
92
+
93
+ _this.render = function () {
94
+ var correct = _this.props.choice.correct;
95
+ var cellPadding = correct ? '0' : _this.theme.cellPadding;
96
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, {
97
+ key: _this.props.choiceIndex
98
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
99
+ theme: {
100
+ padding: '0px'
101
+ }
102
+ }, _this.renderIcon(correct)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.RowHeader, {
103
+ theme: {
104
+ padding: cellPadding
105
+ },
106
+ className: styles.tableBody
107
+ }, _this.renderMiddleCell(correct, (0, _quizInteractions.extractTextFromHtml)(_this.props.choice.body))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
108
+ theme: {
109
+ padding: cellPadding
110
+ }
111
+ }, _this.renderMiddleCell(correct, _this.props.choice.count)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
112
+ theme: {
113
+ padding: cellPadding
114
+ },
115
+ textAlign: "center"
116
+ }, _this.renderLastCell(correct, "".concat(_this.props.choice.percentage, "%"))));
117
+ };
118
+
119
+ return _this;
120
+ }
121
+
122
+ return Row;
123
+ }(_react.Component), _class2.propTypes = {
124
+ choice: _propTypes.default.shape({
125
+ body: _propTypes.default.string,
126
+ correct: _propTypes.default.bool,
127
+ count: _propTypes.default.number,
128
+ percentage: _propTypes.default.number
129
+ }),
130
+ choiceIndex: _propTypes.default.number
131
+ }.isRequired, _temp)) || _class);
132
+ exports.Row = Row;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _presenter = require("./presenter.js");
9
+
10
+ var _default = _presenter.AnswerSummaryTable;
11
+ exports.default = _default;
@@ -0,0 +1,83 @@
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.AnswerSummaryTable = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _uiHeading = require("@instructure/ui-heading");
21
+
22
+ var _uiThemeable = require("@instructure/ui-themeable");
23
+
24
+ var _theme = _interopRequireDefault(require("./theme.js"));
25
+
26
+ var _presenter = require("./ChoiceInfo/presenter.js");
27
+
28
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
29
+
30
+ var _propTypes = require("../propTypes.js");
31
+
32
+ var _dec, _class, _class2, _temp;
33
+
34
+ var styles = {
35
+ componentId: 'fvXKN',
36
+ template: function template(theme) {
37
+ return "\n\n.fvXKN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.fvXKN_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.fvXKN_EKAb{background-color:").concat(theme.colorGreen || 'inherit', ";border-radius:4px 0 0 4px}\n\n.fvXKN_EKAb svg{filter:invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(102%) contrast(102%)}\n\n.fvXKN_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.fvXKN_fvqY{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
38
+ },
39
+ 'tableWrapper': 'fvXKN_rMrG',
40
+ 'iconWrapper': 'fvXKN_cvRx',
41
+ 'iconCorrect': 'fvXKN_EKAb',
42
+ 'correctRowBorder': 'fvXKN_tnta',
43
+ 'correctRowBorderRadius': 'fvXKN_fvqY'
44
+ };
45
+ var AnswerSummaryTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
46
+ (0, _inherits2.default)(AnswerSummaryTable, _Component);
47
+
48
+ var _super = (0, _createSuper2.default)(AnswerSummaryTable);
49
+
50
+ function AnswerSummaryTable() {
51
+ var _this;
52
+
53
+ (0, _classCallCheck2.default)(this, AnswerSummaryTable);
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$answerSum = _this.props.answerSummary,
63
+ choices = _this$props$answerSum.choices,
64
+ no_answer = _this$props$answerSum.no_answer;
65
+ return /*#__PURE__*/_react.default.createElement("div", {
66
+ className: styles.tableWrapper
67
+ }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
68
+ margin: "large 0 small 0",
69
+ level: "h3"
70
+ }, (0, _formatMessage.default)('Answer Frequency Summary')), /*#__PURE__*/_react.default.createElement(_presenter.ChoiceInfo, {
71
+ choices: choices,
72
+ noAnswer: no_answer
73
+ }));
74
+ };
75
+
76
+ return _this;
77
+ }
78
+
79
+ return AnswerSummaryTable;
80
+ }(_react.Component), _class2.propTypes = {
81
+ answerSummary: _propTypes.answerSummaryPropType
82
+ }.isRequired, _temp)) || _class);
83
+ exports.AnswerSummaryTable = AnswerSummaryTable;
@@ -0,0 +1,15 @@
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
+ colorGreen: '#0b874b',
12
+ cellPadding: ' 0.75rem 0.75rem',
13
+ tableBottomPadding: spacing.medium
14
+ };
15
+ }
@@ -45,30 +45,36 @@ var _classnames2 = _interopRequireDefault(require("classnames"));
45
45
 
46
46
  var _interactionTypeMetadata = require("../../../../../common/util/interactionTypeMetadata.js");
47
47
 
48
+ var _index5 = _interopRequireDefault(require("../AnswerSummaryTable/index.js"));
49
+
48
50
  var _propTypes = require("../propTypes.js");
49
51
 
50
52
  var _dec, _class, _class2, _temp;
51
53
 
52
54
  var styles = {
53
- componentId: 'eLWCD',
55
+ componentId: 'bCOJX',
54
56
  template: function template(theme) {
55
- return "\n\n.eLWCD_eDnN{display:flex;flex-basis:45%;flex-direction:column;overflow:hidden}\n\n.eLWCD_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.eLWCD_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.eLWCD_eIAv{display:flex;position:relative}\n\n.eLWCD_ePHw{flex-basis:91%;overflow:hidden;padding-bottom:10px;text-overflow:ellipsis;white-space:nowrap}\n\n.eLWCD_dzsH{overflow:visible;text-overflow:unset;white-space:normal}\n\n.eLWCD_byoJ{position:absolute;right:7px;top:-8px}\n\n.eLWCD_evBt{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}\n\n.eLWCD_pAQb{display:flex;flex-direction:column;height:60px}\n\n.eLWCD_zefc{display:flex;flex-basis:55%;justify-content:flex-end}\n\n.eLWCD_dPzc{flex-direction:column}\n\n.eLWCD_dPzc,.eLWCD_dzph{display:flex;flex-basis:100%}\n\n.eLWCD_dzph{align-items:flex-start;box-sizing:border-box;column-gap:5px;justify-content:space-between;padding:0 30px 0 25px}\n\n.eLWCD_eobd{padding-top:1rem}\n\n.eLWCD_NpIG{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}\n\n@media screen and (--tabletBreakPoint){.eLWCD_zefc{flex-basis:100%;justify-content:flex-start}.eLWCD_ePHw{flex-basis:94%}.eLWCD_eDnN{flex-basis:100%}.eLWCD_dzph{padding:0}.eLWCD_eDnN h3{padding-right:30px}.eLWCD_NpIG{right:17px}.eLWCD_eIAv{margin-bottom:20px}.eLWCD_byoJ{right:-7px}.eLWCD_dzph{flex-wrap:wrap}}");
57
+ return "\n\n.bCOJX_eDnN{display:flex;flex-basis:45%;flex-direction:column;overflow:hidden}\n\n.bCOJX_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.bCOJX_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.bCOJX_eIAv{display:flex;position:relative}\n\n.bCOJX_ePHw{flex-basis:91%;overflow:hidden;padding-bottom:10px;text-overflow:ellipsis;white-space:nowrap}\n\n.bCOJX_dzsH{overflow:visible;text-overflow:unset;white-space:normal}\n\n.bCOJX_byoJ{position:absolute;right:7px;top:-8px}\n\n.bCOJX_evBt{flex-wrap:wrap;justify-content:space-between}\n\n.bCOJX_pAQb,.bCOJX_evBt{display:flex;flex-direction:row}\n\n.bCOJX_zefc{display:flex;flex-basis:55%;justify-content:flex-end}\n\n.bCOJX_dPzc{flex-direction:column}\n\n.bCOJX_dPzc,.bCOJX_dzph{display:flex;flex-basis:100%}\n\n.bCOJX_dzph{align-items:flex-start;box-sizing:border-box;column-gap:5px;justify-content:space-between;padding:0 30px 0 25px}\n\n.bCOJX_eobd{padding-top:1rem}\n\n.bCOJX_NpIG{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}\n\n.bCOJX_csiQ{display:flex;flex-basis:100%}\n\n.bCOJX_fjVl{display:flex;flex-basis:50%}\n\n.bCOJX_eZLI{display:flex;flex-basis:40%}\n\n@media screen and (--tabletBreakPoint){.bCOJX_zefc{flex-basis:100%;justify-content:flex-start}.bCOJX_ePHw{flex-basis:94%}.bCOJX_eDnN{flex-basis:100%}.bCOJX_dzph{padding:0}.bCOJX_eDnN h3{padding-right:30px}.bCOJX_NpIG{right:17px}.bCOJX_eIAv{margin-bottom:20px}.bCOJX_byoJ{right:-7px}.bCOJX_dzph{flex-wrap:wrap}}");
56
58
  },
57
- 'heading': 'eLWCD_eDnN',
58
- 'cardWrapper': 'eLWCD_eKXQ',
59
- 'metricNumberContext': 'eLWCD_eoBe',
60
- 'bodyPresentation': 'eLWCD_eIAv',
61
- 'bodyExcerpt': 'eLWCD_ePHw',
62
- 'bodyExcerptExpanded': 'eLWCD_dzsH',
63
- 'bodyExpandButtonWrapper': 'eLWCD_byoJ',
64
- 'innerWrapper': 'eLWCD_evBt',
65
- 'expandableInnerWrapper': 'eLWCD_pAQb',
66
- 'metricsWithControls': 'eLWCD_zefc',
67
- 'metricGroup': 'eLWCD_dPzc',
68
- 'metricsRow': 'eLWCD_dzph',
69
- 'metricsRowPaginated': 'eLWCD_eobd',
70
- 'itemCardToggleButtonWrapper': 'eLWCD_NpIG'
59
+ 'heading': 'bCOJX_eDnN',
60
+ 'cardWrapper': 'bCOJX_eKXQ',
61
+ 'metricNumberContext': 'bCOJX_eoBe',
62
+ 'bodyPresentation': 'bCOJX_eIAv',
63
+ 'bodyExcerpt': 'bCOJX_ePHw',
64
+ 'bodyExcerptExpanded': 'bCOJX_dzsH',
65
+ 'bodyExpandButtonWrapper': 'bCOJX_byoJ',
66
+ 'innerWrapper': 'bCOJX_evBt',
67
+ 'expandableInnerWrapper': 'bCOJX_pAQb',
68
+ 'metricsWithControls': 'bCOJX_zefc',
69
+ 'metricGroup': 'bCOJX_dPzc',
70
+ 'metricsRow': 'bCOJX_dzph',
71
+ 'metricsRowPaginated': 'bCOJX_eobd',
72
+ 'itemCardToggleButtonWrapper': 'bCOJX_NpIG',
73
+ 'expandableContent': 'bCOJX_csiQ',
74
+ 'tableColumn': 'bCOJX_fjVl',
75
+ 'performanceColumn': 'bCOJX_eZLI'
71
76
  };
77
+ var supportedTables = ['choice', 'true-false', 'multi-answer'];
72
78
  var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
73
79
  (0, _inherits2.default)(NewItemAnalysis, _Component);
74
80
 
@@ -205,11 +211,13 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
205
211
  key: "render",
206
212
  value: function render() {
207
213
  var _this$props$itemAnaly = this.props.itemAnalysis,
214
+ answer_summary = _this$props$itemAnaly.answer_summary,
208
215
  metadata = _this$props$itemAnaly.metadata,
209
216
  scores = _this$props$itemAnaly.scores;
210
217
  var bodyClass = (0, _classnames2.default)(styles.bodyExcerpt, (0, _defineProperty2.default)({}, styles.bodyExcerptExpanded, this.state.bodyExpanded));
211
218
  var headingId = this.buildItemCardHeadingId();
212
219
  var bodyId = this.buildItemCardBodyId();
220
+ var isSupportedTable = supportedTables.includes(metadata.interaction_type);
213
221
  return /*#__PURE__*/_react.default.createElement(_index2.default, {
214
222
  className: styles.cardWrapper
215
223
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -260,7 +268,15 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
260
268
  popoverDescription: _popoverContent.discriminationIndex
261
269
  }), this.renderExpandItemCardButton()), this.state.metricsExpanded && this.renderExpanded()))), this.state.itemExpanded && /*#__PURE__*/_react.default.createElement("div", {
262
270
  className: styles.expandableInnerWrapper
263
- }));
271
+ }, /*#__PURE__*/_react.default.createElement("div", {
272
+ className: styles.expandableContent
273
+ }, /*#__PURE__*/_react.default.createElement("div", {
274
+ className: styles.tableColumn
275
+ }, isSupportedTable && /*#__PURE__*/_react.default.createElement(_index5.default, {
276
+ answerSummary: answer_summary
277
+ })), /*#__PURE__*/_react.default.createElement("div", {
278
+ className: styles.performanceColumn
279
+ }))));
264
280
  }
265
281
  }]);
266
282
  NewItemAnalysis.displayName = "NewItemAnalysis";
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.itemAnalysisPropType = exports.quizAnalysisPropType = void 0;
8
+ exports.answerSummaryPropType = exports.itemAnalysisPropType = exports.quizAnalysisPropType = void 0;
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
@@ -53,7 +53,23 @@ var itemAnalysisPropType = _propTypes.default.shape({
53
53
  pearson_correlation: _propTypes.default.number,
54
54
  points_possible: _propTypes.default.number,
55
55
  quartile_distribution: _propTypes.default.arrayOf(_propTypes.default.number)
56
+ }),
57
+ answer_summary: answerSummaryPropType
58
+ });
59
+
60
+ exports.itemAnalysisPropType = itemAnalysisPropType;
61
+
62
+ var answerSummaryPropType = _propTypes.default.shape({
63
+ choices: _propTypes.default.arrayOf(_propTypes.default.shape({
64
+ body: _propTypes.default.string,
65
+ correct: _propTypes.default.bool,
66
+ count: _propTypes.default.number,
67
+ percentage: _propTypes.default.number
68
+ })),
69
+ no_answer: _propTypes.default.shape({
70
+ count: _propTypes.default.number,
71
+ percentage: _propTypes.default.number
56
72
  })
57
73
  });
58
74
 
59
- exports.itemAnalysisPropType = itemAnalysisPropType;
75
+ exports.answerSummaryPropType = answerSummaryPropType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "17.62.0",
3
+ "version": "17.62.1-rc.1+35dd3a71d",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -40,12 +40,12 @@
40
40
  "lib"
41
41
  ],
42
42
  "dependencies": {
43
- "@instructure/outcomes-ui": "^2.1.8",
44
- "@instructure/quiz-common": "^17.62.0",
45
- "@instructure/quiz-i18n": "^17.62.0",
46
- "@instructure/quiz-interactions": "^17.62.0",
47
- "@instructure/quiz-number-input": "^17.62.0",
48
- "@instructure/quiz-rce": "^17.62.0",
43
+ "@instructure/outcomes-ui": "^2.1.9",
44
+ "@instructure/quiz-common": "17.62.1-rc.1+35dd3a71d",
45
+ "@instructure/quiz-i18n": "17.62.1-rc.1+35dd3a71d",
46
+ "@instructure/quiz-interactions": "17.62.1-rc.1+35dd3a71d",
47
+ "@instructure/quiz-number-input": "17.62.1-rc.1+35dd3a71d",
48
+ "@instructure/quiz-rce": "17.62.1-rc.1+35dd3a71d",
49
49
  "@instructure/ui-a11y-content": "^7.20.0",
50
50
  "@instructure/ui-alerts": "^7.20.0",
51
51
  "@instructure/ui-avatar": "^7.20.0",
@@ -106,7 +106,7 @@
106
106
  "eventemitter3": "^3.1.0",
107
107
  "humps": "^2.0.0",
108
108
  "immutable": "^3.8.1",
109
- "instructure-validations": "^17.62.0",
109
+ "instructure-validations": "17.62.1-rc.1+35dd3a71d",
110
110
  "ipaddr.js": "^1.5.4",
111
111
  "isomorphic-fetch": "^2.2.0",
112
112
  "isuuid": "^0.1.0",
@@ -138,7 +138,7 @@
138
138
  "uuid": "^3.2.1"
139
139
  },
140
140
  "devDependencies": {
141
- "@instructure/quiz-scripts": "^17.62.0",
141
+ "@instructure/quiz-scripts": "17.62.0",
142
142
  "@instructure/ui-axe-check": "^7.20.0",
143
143
  "@instructure/ui-babel-preset": "^7.20.0",
144
144
  "@instructure/ui-karma-config": "^7.20.0",
@@ -157,7 +157,7 @@
157
157
  "intl": "^1.2.4",
158
158
  "jquery": "^2.2.3",
159
159
  "most-subject": "^5.3.0",
160
- "quiz-presets": "^17.62.0",
160
+ "quiz-presets": "17.62.1-rc.1+35dd3a71d",
161
161
  "react": "^16.8.6",
162
162
  "react-addons-test-utils": "^15.6.2",
163
163
  "react-dom": "^16.8.6",
@@ -173,5 +173,5 @@
173
173
  "publishConfig": {
174
174
  "access": "public"
175
175
  },
176
- "gitHead": "5b7dc5da5299f61d86bfa814c2f57b586c89b6e2"
176
+ "gitHead": "35dd3a71d48f248d35d44909b90c5ada4bb0ae37"
177
177
  }