@instructure/quiz-core 17.58.2-rc.6 → 17.58.2-rc.8

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 (35) hide show
  1. package/es/banks/api/banks.js +35 -1
  2. package/es/banks/components/Bank/index.js +16 -7
  3. package/es/banks/components/Bank/presenter.js +198 -18
  4. package/es/building/components/resources/BanksTray/presenter.js +2 -1
  5. package/es/common/actions/sharedBanks.js +2 -2
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +2 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +64 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +3 -0
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +2 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +75 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +6 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -0
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +18 -0
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +245 -0
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +9 -0
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +55 -57
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +5 -16
  18. package/lib/banks/api/banks.js +40 -2
  19. package/lib/banks/components/Bank/index.js +15 -2
  20. package/lib/banks/components/Bank/presenter.js +203 -17
  21. package/lib/building/components/resources/BanksTray/presenter.js +2 -1
  22. package/lib/common/actions/sharedBanks.js +2 -2
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +11 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +83 -0
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +10 -0
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +11 -0
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +95 -0
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +13 -0
  29. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +11 -0
  30. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +27 -0
  31. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +274 -0
  32. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +16 -0
  33. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +59 -62
  34. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +7 -18
  35. package/package.json +9 -9
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.default = exports.Bank = void 0;
11
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
12
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
19
 
14
20
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -27,6 +33,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
27
33
 
28
34
  var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
29
35
 
36
+ var _partial = _interopRequireDefault(require("lodash/partial"));
37
+
30
38
  var _uiIcons = require("@instructure/ui-icons");
31
39
 
32
40
  var _uiBreadcrumb = require("@instructure/ui-breadcrumb");
@@ -39,6 +47,10 @@ var _uiA11yContent = require("@instructure/ui-a11y-content");
39
47
 
40
48
  var _uiThemeable = require("@instructure/ui-themeable");
41
49
 
50
+ var _uiCheckbox = require("@instructure/ui-checkbox");
51
+
52
+ var _uiView = require("@instructure/ui-view");
53
+
42
54
  var _Bank = _interopRequireDefault(require("../../../common/records/Bank.js"));
43
55
 
44
56
  var _index = _interopRequireDefault(require("../../../common/components/layout/Page/index.js"));
@@ -94,6 +106,10 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
94
106
  }
95
107
 
96
108
  _this = _super.call.apply(_super, [this].concat(_args));
109
+ _this.state = {
110
+ sharedWithCourse: false,
111
+ shareWithCourseCheckboxDisabled: true
112
+ };
97
113
 
98
114
  _this.openAddBankEntryModal = function () {
99
115
  _this.props.openModal(_quizCommon.ADD_BANK_ENTRY_MODAL, {
@@ -113,6 +129,74 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
113
129
  _this.createBankEntryButton = c;
114
130
  };
115
131
 
132
+ _this.toggleCheckbox = function () {
133
+ // disable until request resolves
134
+ _this.setState({
135
+ shareWithCourseCheckboxDisabled: true
136
+ });
137
+
138
+ _this.changeSharedPermissions();
139
+ };
140
+
141
+ _this.unshareBankWithCourse = /*#__PURE__*/function () {
142
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(sharedBank) {
143
+ var _this$props, updateSharedBankPermission, bankId, getSharedBank, scope;
144
+
145
+ return _regenerator.default.wrap(function _callee$(_context) {
146
+ while (1) {
147
+ switch (_context.prev = _context.next) {
148
+ case 0:
149
+ _this$props = _this.props, updateSharedBankPermission = _this$props.updateSharedBankPermission, bankId = _this$props.bankId, getSharedBank = _this$props.getSharedBank, scope = _this$props.scope;
150
+ _context.next = 3;
151
+ return updateSharedBankPermission(bankId, sharedBank.get('id'), _quizCommon.REMOVED_ACCESS);
152
+
153
+ case 3:
154
+ getSharedBank(bankId, scope.type, scope.uuid).catch(function (err) {
155
+ // make sure the user still has access to the bank
156
+ if (err.response.status === 401) {
157
+ _this.props.navigateToBanks();
158
+ }
159
+ });
160
+
161
+ case 4:
162
+ case "end":
163
+ return _context.stop();
164
+ }
165
+ }
166
+ }, _callee);
167
+ }));
168
+
169
+ return function (_x) {
170
+ return _ref.apply(this, arguments);
171
+ };
172
+ }();
173
+
174
+ _this.translatedPermissionLevel = function (permission) {
175
+ var _CAN_EDIT$READ_ONLY$p;
176
+
177
+ return (_CAN_EDIT$READ_ONLY$p = {}, (0, _defineProperty2.default)(_CAN_EDIT$READ_ONLY$p, _quizCommon.CAN_EDIT, (0, _formatMessage.default)('edit')), (0, _defineProperty2.default)(_CAN_EDIT$READ_ONLY$p, _quizCommon.READ_ONLY, (0, _formatMessage.default)('view')), _CAN_EDIT$READ_ONLY$p)[permission];
178
+ };
179
+
180
+ _this.confirmUnshareBankWithCourse = function () {
181
+ var confirmText = (0, _formatMessage.default)('You are about to remove { accessLevel } access for { entityTitle } to this bank.', {
182
+ accessLevel: _this.translatedPermissionLevel(_this.props.courseSharedBank.get('permission')),
183
+ entityTitle: _this.props.scope.title
184
+ });
185
+
186
+ _this.props.withConfirm((0, _partial.default)(_this.unshareBankWithCourse, _this.props.courseSharedBank), {
187
+ title: (0, _formatMessage.default)('Unshare Bank with Course'),
188
+ text: confirmText,
189
+ continueText: (0, _formatMessage.default)('Confirm'),
190
+ onCancel: _this.onCancelUnshareBankWithCourse
191
+ });
192
+ };
193
+
194
+ _this.onCancelUnshareBankWithCourse = function () {
195
+ _this.setState({
196
+ shareWithCourseCheckboxDisabled: false
197
+ });
198
+ };
199
+
116
200
  _this.addBankToQuiz = function () {
117
201
  var newEntry = _QuizEntry.default.create({
118
202
  entryId: _this.props.bankId,
@@ -138,8 +222,8 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
138
222
  }, _this.renderNewBankEntryButton());
139
223
  };
140
224
 
141
- _this.announceResults = function (_ref) {
142
- var totalPages = _ref.totalPages;
225
+ _this.announceResults = function (_ref2) {
226
+ var totalPages = _ref2.totalPages;
143
227
  var message = (0, _formatMessage.default)("{\n count, plural,\n =0 {No search results found}\n one {Displaying one page of results}\n other {Displaying # pages of results}\n }", {
144
228
  count: totalPages
145
229
  }); // Audibly announce when search results are ready.
@@ -153,10 +237,10 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
153
237
  _this.debouncedAnnounceResults = (0, _debounce.default)(_this.announceResults, 1000);
154
238
 
155
239
  _this.getPage = function (page, search) {
156
- var _this$props = _this.props,
157
- getBankEntries = _this$props.getBankEntries,
158
- bankId = _this$props.bankId,
159
- useBankSearch = _this$props.useBankSearch;
240
+ var _this$props2 = _this.props,
241
+ getBankEntries = _this$props2.getBankEntries,
242
+ bankId = _this$props2.bankId,
243
+ useBankSearch = _this$props2.useBankSearch;
160
244
  var text = search.get('text');
161
245
  var interactionTypes = search.get('interactionTypes', immutable.Set()).toJS();
162
246
  var tagIds = search.get('tags', []).map(function (tag) {
@@ -211,19 +295,68 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
211
295
 
212
296
  if (this.props.onError) {
213
297
  this.props.getBank(this.props.bankId).catch(this.props.onError);
298
+
299
+ if (this.shouldRenderShareWithCourseCheckbox()) {
300
+ this.props.getSharedBank(this.props.bankId, this.props.scope.type, this.props.scope.uuid).catch(this.props.onError);
301
+ }
214
302
  } else {
215
303
  this.props.getBank(this.props.bankId);
304
+
305
+ if (this.shouldRenderShareWithCourseCheckbox()) {
306
+ this.props.getSharedBank(this.props.bankId, this.props.scope.type, this.props.scope.uuid);
307
+ }
308
+ } // when courseSharedBank is already loaded
309
+
310
+
311
+ if (this.props.courseSharedBank) {
312
+ this.setShareWithCourseCheckbox();
216
313
  }
217
314
  }
315
+ }, {
316
+ key: "componentDidUpdate",
317
+ value: function componentDidUpdate(prevProps) {
318
+ var _prevProps$courseShar, _this$props$courseSha;
319
+
320
+ var permissionChanged = ((_prevProps$courseShar = prevProps.courseSharedBank) === null || _prevProps$courseShar === void 0 ? void 0 : _prevProps$courseShar.get('permission')) !== ((_this$props$courseSha = this.props.courseSharedBank) === null || _this$props$courseSha === void 0 ? void 0 : _this$props$courseSha.get('permission'));
321
+
322
+ if (this.props.courseSharedBank && permissionChanged) {
323
+ this.setShareWithCourseCheckbox();
324
+ }
325
+ }
326
+ }, {
327
+ key: "setShareWithCourseCheckbox",
328
+ value: function setShareWithCourseCheckbox() {
329
+ if (this.props.courseSharedBank.get('permission') === _quizCommon.REMOVED_ACCESS) {
330
+ this.setState({
331
+ sharedWithCourse: false,
332
+ shareWithCourseCheckboxDisabled: false
333
+ });
334
+ } else {
335
+ this.setState({
336
+ sharedWithCourse: true,
337
+ shareWithCourseCheckboxDisabled: false
338
+ });
339
+ }
340
+ }
341
+ }, {
342
+ key: "componentWillUnmount",
343
+ value: function componentWillUnmount() {
344
+ this.props.removeSharedBank(this.placeholderCourseSharedBankKey());
345
+ }
346
+ }, {
347
+ key: "placeholderCourseSharedBankKey",
348
+ value: function placeholderCourseSharedBankKey() {
349
+ return "notshared_".concat(this.props.bankId, "_").concat(this.props.scope.uuid);
350
+ }
218
351
  }, {
219
352
  key: "renderNav",
220
353
  value: function renderNav() {
221
- var _this$props2 = this.props,
222
- scope = _this$props2.scope,
223
- closeTray = _this$props2.closeTray,
224
- navigateToBanks = _this$props2.navigateToBanks,
225
- navigateToBuild = _this$props2.navigateToBuild,
226
- returnToUrl = _this$props2.returnToUrl;
354
+ var _this$props3 = this.props,
355
+ scope = _this$props3.scope,
356
+ closeTray = _this$props3.closeTray,
357
+ navigateToBanks = _this$props3.navigateToBanks,
358
+ navigateToBuild = _this$props3.navigateToBuild,
359
+ returnToUrl = _this$props3.returnToUrl;
227
360
  var isScopeEmpty = !Object.keys(scope).length;
228
361
  return /*#__PURE__*/_react.default.createElement(_index7.default, {
229
362
  closeTray: closeTray,
@@ -255,6 +388,50 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
255
388
  });
256
389
  }
257
390
  }
391
+ }, {
392
+ key: "changeSharedPermissions",
393
+ value: function changeSharedPermissions() {
394
+ if (this.props.bank.canEdit()) {
395
+ if (!this.state.sharedWithCourse) {
396
+ var shareBank = {
397
+ entityId: this.props.scope.uuid,
398
+ entityType: this.props.scope.type,
399
+ title: this.props.scope.title,
400
+ permission: _quizCommon.READ_ONLY,
401
+ bankId: this.props.bankId
402
+ };
403
+ this.props.removeSharedBank(this.placeholderCourseSharedBankKey());
404
+ this.props.shareBank(shareBank);
405
+ } else {
406
+ this.confirmUnshareBankWithCourse();
407
+ }
408
+ }
409
+ }
410
+ }, {
411
+ key: "shouldRenderShareWithCourseCheckbox",
412
+ value: function shouldRenderShareWithCourseCheckbox() {
413
+ return this.props.showShareBankFromTray && this.props.scope.type === 'course' && this.props.scope.title && this.props.scope.uuid;
414
+ }
415
+ }, {
416
+ key: "renderCheckbox",
417
+ value: function renderCheckbox() {
418
+ if (!this.shouldRenderShareWithCourseCheckbox()) {
419
+ return null;
420
+ }
421
+
422
+ var label = (0, _formatMessage.default)('Share with { courseName }', {
423
+ courseName: this.props.scope.title
424
+ });
425
+ return /*#__PURE__*/_react.default.createElement(_uiView.View, {
426
+ margin: "small 0",
427
+ as: "div"
428
+ }, /*#__PURE__*/_react.default.createElement(_uiCheckbox.Checkbox, {
429
+ checked: this.state.sharedWithCourse,
430
+ label: label,
431
+ onChange: this.toggleCheckbox,
432
+ disabled: this.props.bank.canEdit() ? this.state.shareWithCourseCheckboxDisabled : true
433
+ }));
434
+ }
258
435
  }, {
259
436
  key: "renderModals",
260
437
  value: function renderModals() {
@@ -330,7 +507,7 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
330
507
  value: function render() {
331
508
  return /*#__PURE__*/_react.default.createElement(_index.default, null, this.renderModals(), this.renderNav(), /*#__PURE__*/_react.default.createElement("div", {
332
509
  className: styles.content
333
- }, this.renderName(), /*#__PURE__*/_react.default.createElement("div", {
510
+ }, this.renderName(), this.renderCheckbox(), /*#__PURE__*/_react.default.createElement("div", {
334
511
  className: styles.topMenu
335
512
  }, this.renderTopLeftMenu(), this.renderTopRightMenu()), this.renderSearch(), /*#__PURE__*/_react.default.createElement(_index2.default, {
336
513
  empty: this.emptyLoadText(),
@@ -352,6 +529,7 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
352
529
  closeTray: _propTypes.default.func,
353
530
  getBank: _propTypes.default.func.isRequired,
354
531
  getBankEntries: _propTypes.default.func.isRequired,
532
+ getSharedBank: _propTypes.default.func.isRequired,
355
533
  isCompact: _propTypes.default.bool,
356
534
  isQuizContentLocked: _propTypes.default.bool.isRequired,
357
535
  navigateToBanks: _propTypes.default.func.isRequired,
@@ -360,20 +538,26 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
360
538
  // can be from consumer
361
539
  navigateToBuild: _propTypes.default.func,
362
540
  // from consumer
363
- scope: _propTypes.default.objectOf(_propTypes.default.shape({
541
+ scope: _propTypes.default.shape({
364
542
  type: _propTypes.default.string,
365
543
  uuid: _propTypes.default.string,
366
544
  title: _propTypes.default.string
367
- })),
545
+ }),
546
+ courseSharedBank: _reactImmutableProptypes.default.map,
368
547
  returnToUrl: _propTypes.default.string,
369
548
  // from consumer
370
549
  onError: _propTypes.default.func,
371
550
  openModal: _propTypes.default.func.isRequired,
372
551
  position: _propTypes.default.number,
552
+ removeSharedBank: _propTypes.default.func.isRequired,
373
553
  resetSearch: _propTypes.default.func.isRequired,
374
554
  screenreaderNotification: _propTypes.default.func.isRequired,
375
555
  search: _reactImmutableProptypes.default.map.isRequired,
376
- stimulusId: _propTypes.default.string
556
+ shareBank: _propTypes.default.func.isRequired,
557
+ stimulusId: _propTypes.default.string,
558
+ showShareBankFromTray: _propTypes.default.bool,
559
+ updateSharedBankPermission: _propTypes.default.func.isRequired,
560
+ withConfirm: _propTypes.default.func.isRequired
377
561
  }, _class2.defaultProps = {
378
562
  activeQuizId: null,
379
563
  addEntryToQuiz: null,
@@ -387,7 +571,9 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
387
571
  stimulusId: null,
388
572
  scope: {},
389
573
  returnToUrl: null,
390
- isQuizContentLocked: false
574
+ isQuizContentLocked: false,
575
+ showShareBankFromTray: false,
576
+ courseSharedBank: null
391
577
  }, _temp)) || _class);
392
578
  exports.Bank = Bank;
393
579
  var _default = Bank;
@@ -123,7 +123,8 @@ var BanksTray = /*#__PURE__*/function (_Component) {
123
123
  closeTray: this.closeTray,
124
124
  bankId: activeBankId,
125
125
  navigateToBanks: this.clearActiveBank,
126
- navigateToBankEntry: this.props.newActiveBankEntry
126
+ navigateToBankEntry: this.props.newActiveBankEntry,
127
+ scope: this.props.itemBanksScope
127
128
  });
128
129
  }
129
130
  } else {
@@ -28,10 +28,10 @@ var updateSharedBankPermission = function updateSharedBankPermission(sharedBankI
28
28
 
29
29
  exports.updateSharedBankPermission = updateSharedBankPermission;
30
30
 
31
- var removeSharedBank = function removeSharedBank(bankId) {
31
+ var removeSharedBank = function removeSharedBank(sharedBankId) {
32
32
  return {
33
33
  type: _quizCommon.REMOVE_SHARED_BANK,
34
- payload: bankId
34
+ payload: sharedBankId
35
35
  };
36
36
  };
37
37
 
@@ -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.AnalysisMetric;
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.AnalysisMetric = 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 _uiThemeable = require("@instructure/ui-themeable");
21
+
22
+ var _theme = _interopRequireDefault(require("./theme.js"));
23
+
24
+ var _react = _interopRequireWildcard(require("react"));
25
+
26
+ var _utils = require("../utils.js");
27
+
28
+ var _uiMetric = require("@instructure/ui-metric");
29
+
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
32
+ var _dec, _class, _class2, _temp;
33
+
34
+ var styles = {
35
+ componentId: 'flBnP',
36
+ template: function template(theme) {
37
+ return "\n\n.flBnP_eckF{margin:0;max-width:159px;text-transform:uppercase}";
38
+ },
39
+ 'metricLabel': 'flBnP_eckF'
40
+ };
41
+ var AnalysisMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
42
+ (0, _inherits2.default)(AnalysisMetric, _Component);
43
+
44
+ var _super = (0, _createSuper2.default)(AnalysisMetric);
45
+
46
+ function AnalysisMetric() {
47
+ (0, _classCallCheck2.default)(this, AnalysisMetric);
48
+ return _super.apply(this, arguments);
49
+ }
50
+
51
+ (0, _createClass2.default)(AnalysisMetric, [{
52
+ key: "render",
53
+ value: function render() {
54
+ var _this$props = this.props,
55
+ metricKey = _this$props.metricKey,
56
+ label = _this$props.label,
57
+ value = _this$props.value,
58
+ suffix = _this$props.suffix;
59
+ return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
60
+ theme: {
61
+ valueFontWeight: 500,
62
+ padding: '0'
63
+ },
64
+ textAlign: "start",
65
+ key: metricKey,
66
+ renderLabel: /*#__PURE__*/_react.default.createElement("p", {
67
+ className: styles.metricLabel
68
+ }, label),
69
+ renderValue: (0, _utils.getSanitizedMetricValue)(value, suffix)
70
+ });
71
+ }
72
+ }]);
73
+ AnalysisMetric.displayName = "AnalysisMetric";
74
+ return AnalysisMetric;
75
+ }(_react.Component), _class2.propTypes = {
76
+ metricKey: _propTypes.default.string.isRequired,
77
+ label: _propTypes.default.string.isRequired,
78
+ value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
79
+ suffix: _propTypes.default.string
80
+ }, _class2.defaultProps = {
81
+ suffix: ''
82
+ }, _temp)) || _class);
83
+ exports.AnalysisMetric = AnalysisMetric;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator() {
9
+ return {};
10
+ }
@@ -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.AnalysisPopoverMetric;
11
+ exports.default = _default;
@@ -0,0 +1,95 @@
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.AnalysisPopoverMetric = 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 _uiMetric = require("@instructure/ui-metric");
23
+
24
+ var _utils = require("../utils.js");
25
+
26
+ var _index = _interopRequireDefault(require("../MetricPopover/index.js"));
27
+
28
+ var _uiThemeable = require("@instructure/ui-themeable");
29
+
30
+ var _theme = _interopRequireDefault(require("./theme.js"));
31
+
32
+ var _propTypes = _interopRequireDefault(require("prop-types"));
33
+
34
+ var _dec, _class, _class2, _temp;
35
+
36
+ var styles = {
37
+ componentId: 'bLVhr',
38
+ template: function template(theme) {
39
+ return "\n\n.bLVhr_dqHR{padding-left:5px}\n\n.bLVhr_eckF{margin:0;max-width:159px;text-transform:uppercase}";
40
+ },
41
+ 'popoverContainer': 'bLVhr_dqHR',
42
+ 'metricLabel': 'bLVhr_eckF'
43
+ };
44
+ var AnalysisPopoverMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
45
+ (0, _inherits2.default)(AnalysisPopoverMetric, _Component);
46
+
47
+ var _super = (0, _createSuper2.default)(AnalysisPopoverMetric);
48
+
49
+ function AnalysisPopoverMetric() {
50
+ (0, _classCallCheck2.default)(this, AnalysisPopoverMetric);
51
+ return _super.apply(this, arguments);
52
+ }
53
+
54
+ (0, _createClass2.default)(AnalysisPopoverMetric, [{
55
+ key: "renderLabelWithPopover",
56
+ value: function renderLabelWithPopover(texts) {
57
+ return /*#__PURE__*/_react.default.createElement("p", {
58
+ className: styles.metricLabel
59
+ }, this.props.label, /*#__PURE__*/_react.default.createElement("span", {
60
+ className: styles.popoverContainer
61
+ }, /*#__PURE__*/_react.default.createElement(_index.default, texts)));
62
+ }
63
+ }, {
64
+ key: "render",
65
+ value: function render() {
66
+ var _this$props = this.props,
67
+ metricKey = _this$props.metricKey,
68
+ popoverDescription = _this$props.popoverDescription,
69
+ value = _this$props.value;
70
+ return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
71
+ theme: {
72
+ valueFontWeight: 500,
73
+ padding: '0'
74
+ },
75
+ textAlign: "start",
76
+ key: metricKey,
77
+ renderLabel: this.renderLabelWithPopover(popoverDescription),
78
+ renderValue: (0, _utils.getSanitizedMetricValue)(value)
79
+ });
80
+ }
81
+ }]);
82
+ AnalysisPopoverMetric.displayName = "AnalysisPopoverMetric";
83
+ return AnalysisPopoverMetric;
84
+ }(_react.Component), _class2.propTypes = {
85
+ metricKey: _propTypes.default.string.isRequired,
86
+ label: _propTypes.default.string.isRequired,
87
+ value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
88
+ popoverDescription: _propTypes.default.shape({
89
+ title: _propTypes.default.string,
90
+ subtitle: _propTypes.default.string,
91
+ body: _propTypes.default.string,
92
+ screenReaderLabel: _propTypes.default.string
93
+ }).isRequired
94
+ }, _temp)) || _class);
95
+ exports.AnalysisPopoverMetric = AnalysisPopoverMetric;
@@ -0,0 +1,13 @@
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
+ headerPaddingBottom: spacing.medium
12
+ };
13
+ }
@@ -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.NewItemAnalysis;
11
+ exports.default = _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pearsonCorrelation = exports.discriminationIndex = exports.difficultyIndex = void 0;
7
+ var difficultyIndex = {
8
+ title: 'Difficulty title',
9
+ subtitle: 'difficulty subtitle',
10
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi elementum interdum risus sed condimentum. Duis vel nisi at quam luctus dictum id eu risus. Donec eget tristique justo',
11
+ screenReaderLabel: 'Lorem one'
12
+ };
13
+ exports.difficultyIndex = difficultyIndex;
14
+ var discriminationIndex = {
15
+ title: 'Discrimination title',
16
+ subtitle: 'discrimination subtitle',
17
+ body: 'Lorem ipsum dolor sit amet',
18
+ screenReaderLabel: 'Lorem two'
19
+ };
20
+ exports.discriminationIndex = discriminationIndex;
21
+ var pearsonCorrelation = {
22
+ title: 'Pearson correlation title',
23
+ subtitle: 'pearson correlation subtitle',
24
+ body: 'Lorem ipsum dolor sit amet',
25
+ screenReaderLabel: 'Lorem three'
26
+ };
27
+ exports.pearsonCorrelation = pearsonCorrelation;