@instructure/quiz-core 17.62.1-rc.0 → 17.62.1-rc.2

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 (29) hide show
  1. package/es/banks/api/banks.js +15 -0
  2. package/es/banks/api/copyingBanksPoller.js +99 -0
  3. package/es/banks/components/Banks/presenter.js +1 -2
  4. package/es/banks/components/BanksList/index.js +3 -1
  5. package/es/banks/components/BanksList/presenter.js +36 -13
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +2 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +90 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/index.js +2 -0
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +109 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +2 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +62 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/theme.js +8 -0
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +32 -17
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +13 -0
  15. package/lib/banks/api/banks.js +19 -1
  16. package/lib/banks/api/copyingBanksPoller.js +116 -0
  17. package/lib/banks/components/Banks/presenter.js +1 -2
  18. package/lib/banks/components/BanksList/index.js +4 -1
  19. package/lib/banks/components/BanksList/presenter.js +36 -13
  20. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +11 -0
  21. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +110 -0
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/index.js +11 -0
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +132 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +11 -0
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +83 -0
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/theme.js +15 -0
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +33 -17
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +18 -2
  29. package/package.json +9 -9
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.addToPolling = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
15
+
16
+ var _alerts = require("../../common/actions/alerts.js");
17
+
18
+ var _banks = require("./banks.js");
19
+
20
+ var pollingBanks = [];
21
+ var currentlyPolling = false;
22
+
23
+ var addToPolling = function addToPolling(bankId, bankTitle) {
24
+ var getSpecificBanksFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _banks.getSpecificBanks;
25
+ return function (dispatch) {
26
+ pollingBanks.push({
27
+ id: bankId,
28
+ title: bankTitle
29
+ });
30
+
31
+ if (!currentlyPolling) {
32
+ currentlyPolling = true;
33
+ handlePollingBanks(dispatch, getSpecificBanksFn);
34
+ }
35
+ };
36
+ };
37
+
38
+ exports.addToPolling = addToPolling;
39
+
40
+ var handlePollingBanks = /*#__PURE__*/function () {
41
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch) {
42
+ var getSpecificBanksFn,
43
+ updatedPollingBanks,
44
+ updatedPollingBankIds,
45
+ finishedCopying,
46
+ finishedCopyingIds,
47
+ _args = arguments;
48
+ return _regenerator.default.wrap(function _callee$(_context) {
49
+ while (1) {
50
+ switch (_context.prev = _context.next) {
51
+ case 0:
52
+ getSpecificBanksFn = _args.length > 1 && _args[1] !== void 0 ? _args[1] : _banks.getSpecificBanks;
53
+ _context.next = 3;
54
+ return getSpecificBanksFn(pollingBanks.map(function (bank) {
55
+ return bank.id;
56
+ }))(dispatch);
57
+
58
+ case 3:
59
+ updatedPollingBanks = _context.sent;
60
+ updatedPollingBankIds = updatedPollingBanks.map(function (updatedBank) {
61
+ return updatedBank.id;
62
+ }); // banks that now have status 'waiting' have finished successfully
63
+ // banks that are no longer in the updated list but were in the previous list have
64
+ // failed to copy and therefore were archived
65
+
66
+ finishedCopying = updatedPollingBanks.filter(function (bank) {
67
+ return bank.status === 'waiting';
68
+ }).concat(pollingBanks.filter(function (prevBank) {
69
+ return !updatedPollingBankIds.includes(prevBank.id);
70
+ }));
71
+ finishedCopying.forEach(function (bank) {
72
+ var bankInfo = updatedPollingBanks.find(function (info) {
73
+ return info.id == bank.id;
74
+ });
75
+
76
+ if ((bankInfo === null || bankInfo === void 0 ? void 0 : bankInfo.status) === 'waiting') {
77
+ dispatch((0, _alerts.addSuccess)((0, _formatMessage.default)('Created "{name}" successfully! Duplicate can be seen in \'All Banks\' filter.', {
78
+ name: bank.title
79
+ })));
80
+ } else if (!bankInfo) {
81
+ dispatch((0, _alerts.addError)((0, _formatMessage.default)('Failed to create "{name}". Please try again.', {
82
+ name: bank.title
83
+ })));
84
+ }
85
+ });
86
+ finishedCopyingIds = finishedCopying.map(function (bank) {
87
+ return bank.id;
88
+ });
89
+ removeFinishedCopies(finishedCopyingIds);
90
+
91
+ if (pollingBanks.length > 0) {
92
+ setTimeout(function () {
93
+ handlePollingBanks(dispatch);
94
+ }, 3000);
95
+ } else {
96
+ currentlyPolling = false;
97
+ }
98
+
99
+ case 10:
100
+ case "end":
101
+ return _context.stop();
102
+ }
103
+ }
104
+ }, _callee);
105
+ }));
106
+
107
+ return function handlePollingBanks(_x) {
108
+ return _ref.apply(this, arguments);
109
+ };
110
+ }();
111
+
112
+ var removeFinishedCopies = function removeFinishedCopies(finishedCopyingIds) {
113
+ pollingBanks = pollingBanks.filter(function (bank) {
114
+ return !finishedCopyingIds.includes(bank.id);
115
+ });
116
+ };
@@ -211,8 +211,7 @@ var Banks = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_c
211
211
  minChars: _this.props.minChars,
212
212
  navigateToBank: _this.props.navigateToBank,
213
213
  onShare: _this.props.onShare,
214
- recordIds: recordIds,
215
- redirectAllBanks: _this.handleBankCreated
214
+ recordIds: recordIds
216
215
  });
217
216
  };
218
217
 
@@ -24,6 +24,8 @@ var _featureCheck = require("../../../common/util/featureCheck.js");
24
24
 
25
25
  var _alerts = require("../../../common/actions/alerts.js");
26
26
 
27
+ var _copyingBanksPoller = require("../../api/copyingBanksPoller.js");
28
+
27
29
  function mapStateToProps(state, props) {
28
30
  return {
29
31
  appContainer: state.getIn(['ui', 'appContainer']),
@@ -39,7 +41,8 @@ var _default = (0, _reactRedux.connect)(mapStateToProps, {
39
41
  deleteBank: _banks.deleteBank,
40
42
  withConfirm: _modal.withConfirm,
41
43
  createBankCloneJob: _banks.createBankCloneJob,
42
- addInfo: _alerts.addInfo
44
+ addInfo: _alerts.addInfo,
45
+ addToPolling: _copyingBanksPoller.addToPolling
43
46
  })(_presenter.default);
44
47
 
45
48
  exports.default = _default;
@@ -80,7 +80,7 @@ var styles = {
80
80
  'deletePreface': 'dgJJi_eTBd'
81
81
  };
82
82
 
83
- var _ref3 = /*#__PURE__*/_react.default.createElement(_uiSpinner.Spinner, {
83
+ var _ref4 = /*#__PURE__*/_react.default.createElement(_uiSpinner.Spinner, {
84
84
  renderTitle: "Loading",
85
85
  size: "x-small"
86
86
  });
@@ -180,18 +180,41 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
180
180
 
181
181
  _this.openDuplicateBankModal = function (bank) {
182
182
  return function () {
183
- _this.createCloneJob = function () {
184
- _this.props.createBankCloneJob(bank.id, _this.props.currentUser.uuid);
183
+ var createCloneJob = /*#__PURE__*/function () {
184
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
185
+ var cloneJob;
186
+ return _regenerator.default.wrap(function _callee2$(_context2) {
187
+ while (1) {
188
+ switch (_context2.prev = _context2.next) {
189
+ case 0:
190
+ _context2.next = 2;
191
+ return _this.props.createBankCloneJob(bank.id, _this.props.currentUser.uuid);
192
+
193
+ case 2:
194
+ cloneJob = _context2.sent;
195
+
196
+ _this.props.addToPolling(cloneJob.cloned_bank_id, (0, _formatMessage.default)('{name} Copy', {
197
+ name: bank.title
198
+ }));
199
+
200
+ _this.props.addInfo((0, _formatMessage.default)('Creating "{name} Copy". Duplicate will appear in \'All Banks\' filter.', {
201
+ name: bank.title
202
+ }));
203
+
204
+ case 5:
205
+ case "end":
206
+ return _context2.stop();
207
+ }
208
+ }
209
+ }, _callee2);
210
+ }));
185
211
 
186
- _this.props.addInfo( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _formatMessage.default)('Creating "{name} Copy". Duplicate will appear in ', {
187
- name: bank.title
188
- }), /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
189
- key: bank.id,
190
- onClick: _this.props.redirectAllBanks
191
- }, (0, _formatMessage.default)('\'All Banks\'')), (0, _formatMessage.default)(' filter.')));
192
- };
212
+ return function createCloneJob() {
213
+ return _ref3.apply(this, arguments);
214
+ };
215
+ }();
193
216
 
194
- _this.props.withConfirm((0, _partial.default)(_this.createCloneJob), {
217
+ _this.props.withConfirm((0, _partial.default)(createCloneJob), {
195
218
  text: (0, _formatMessage.default)('Are you sure you want to duplicate this item bank?'),
196
219
  title: (0, _formatMessage.default)('Duplicate Bank'),
197
220
  continueText: (0, _formatMessage.default)('Duplicate'),
@@ -330,7 +353,7 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
330
353
  if (bank.status == 'copying') {
331
354
  return /*#__PURE__*/_react.default.createElement("div", {
332
355
  className: styles.bankOptions
333
- }, _ref3);
356
+ }, _ref4);
334
357
  } else {
335
358
  return /*#__PURE__*/_react.default.createElement("div", {
336
359
  className: styles.bankOptions
@@ -430,6 +453,7 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
430
453
  return BanksList;
431
454
  }((0, _quizCommon.withI18nSupport)(_react.Component)), _class2.propTypes = {
432
455
  addInfo: _propTypes.default.func.isRequired,
456
+ addToPolling: _propTypes.default.func.isRequired,
433
457
  appContainer: _CustomPropTypes.default.selectors.isRequired,
434
458
  banks: _reactImmutableProptypes.default.list.isRequired,
435
459
  createBankCloneJob: _propTypes.default.func.isRequired,
@@ -452,7 +476,6 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
452
476
  navigateToBank: _propTypes.default.func.isRequired,
453
477
  onShare: _propTypes.default.func,
454
478
  openModal: _propTypes.default.func.isRequired,
455
- redirectAllBanks: _propTypes.default.func.isRequired,
456
479
  withConfirm: _propTypes.default.func.isRequired,
457
480
  locale: _propTypes.default.string,
458
481
  timezone: _propTypes.default.string
@@ -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
+ }