@instructure/quiz-core 17.58.2-rc.0 → 17.58.2-rc.10

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 (63) 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/layout/header/BuildingButtons/index.js +2 -0
  5. package/es/building/components/layout/header/BuildingButtons/presenter.js +8 -0
  6. package/es/building/components/resources/BanksTray/presenter.js +2 -1
  7. package/es/common/actions/sharedBanks.js +2 -2
  8. package/es/index.js +1 -0
  9. package/es/moderating/components/events/Event.js +1 -1
  10. package/es/moderating/components/resources/AccommodationsModal/index.js +1 -1
  11. package/es/moderating/components/resources/ModerateTable/presenter.js +2 -2
  12. package/es/moderating/components/resources/ModerateTableRow/index.js +1 -1
  13. package/es/reporting/components/charts/QuintileDistribution/presenter.js +15 -2
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +2 -0
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +64 -0
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +3 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +2 -0
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +75 -0
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +6 -0
  20. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -0
  21. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +18 -0
  22. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +262 -0
  23. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +12 -0
  24. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +59 -58
  25. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +68 -0
  26. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/index.js +2 -0
  27. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +84 -0
  28. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +12 -0
  29. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +13 -18
  30. package/es/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +1 -1
  31. package/es/reporting/components/resources/ReportCard/index.js +1 -1
  32. package/lib/banks/api/banks.js +40 -2
  33. package/lib/banks/components/Bank/index.js +15 -2
  34. package/lib/banks/components/Bank/presenter.js +203 -17
  35. package/lib/building/components/layout/header/BuildingButtons/index.js +3 -0
  36. package/lib/building/components/layout/header/BuildingButtons/presenter.js +8 -0
  37. package/lib/building/components/resources/BanksTray/presenter.js +2 -1
  38. package/lib/common/actions/sharedBanks.js +2 -2
  39. package/lib/index.js +107 -98
  40. package/lib/moderating/components/events/Event.js +1 -1
  41. package/lib/moderating/components/resources/AccommodationsModal/index.js +1 -1
  42. package/lib/moderating/components/resources/ModerateTable/presenter.js +2 -2
  43. package/lib/moderating/components/resources/ModerateTableRow/index.js +1 -1
  44. package/lib/reporting/components/charts/QuintileDistribution/presenter.js +15 -2
  45. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +11 -0
  46. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +83 -0
  47. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +10 -0
  48. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +11 -0
  49. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +95 -0
  50. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +13 -0
  51. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +11 -0
  52. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +27 -0
  53. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +291 -0
  54. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +19 -0
  55. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +64 -63
  56. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +91 -0
  57. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/index.js +11 -0
  58. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +106 -0
  59. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +19 -0
  60. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +15 -20
  61. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +1 -1
  62. package/lib/reporting/components/resources/ReportCard/index.js +1 -1
  63. package/package.json +9 -9
@@ -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, _propTypes.default.array]).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;
@@ -0,0 +1,291 @@
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.NewItemAnalysis = 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 _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
21
+
22
+ var _uiHeading = require("@instructure/ui-heading");
23
+
24
+ var _react = _interopRequireWildcard(require("react"));
25
+
26
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
27
+
28
+ var _index = _interopRequireDefault(require("../../../../../common/components/shared/ExpandButton/index.js"));
29
+
30
+ var _uiText = require("@instructure/ui-text");
31
+
32
+ var _uiThemeable = require("@instructure/ui-themeable");
33
+
34
+ var _theme = _interopRequireDefault(require("./theme.js"));
35
+
36
+ var _popoverContent = require("./popoverContent.js");
37
+
38
+ var _index2 = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
39
+
40
+ var _index3 = _interopRequireDefault(require("../AnalysisMetric/index.js"));
41
+
42
+ var _index4 = _interopRequireDefault(require("../AnalysisPopoverMetric/index.js"));
43
+
44
+ var _propTypes = _interopRequireDefault(require("prop-types"));
45
+
46
+ var _classnames2 = _interopRequireDefault(require("classnames"));
47
+
48
+ var _interactionTypeMetadata = require("../../../../../common/util/interactionTypeMetadata.js");
49
+
50
+ var _dec, _class, _class2, _temp;
51
+
52
+ var styles = {
53
+ componentId: 'eLWCD',
54
+ 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}}");
56
+ },
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'
71
+ };
72
+ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
73
+ (0, _inherits2.default)(NewItemAnalysis, _Component);
74
+
75
+ var _super = (0, _createSuper2.default)(NewItemAnalysis);
76
+
77
+ function NewItemAnalysis() {
78
+ var _this;
79
+
80
+ (0, _classCallCheck2.default)(this, NewItemAnalysis);
81
+
82
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
83
+ args[_key] = arguments[_key];
84
+ }
85
+
86
+ _this = _super.call.apply(_super, [this].concat(args));
87
+ _this.state = {
88
+ bodyToggable: false,
89
+ bodyExpanded: false,
90
+ itemExpanded: false,
91
+ metricsExpanded: false
92
+ };
93
+
94
+ _this.mapInteractionTypeToTranslation = function (interactionType) {
95
+ return (0, _interactionTypeMetadata.interactionTypesNameDictionary)({
96
+ slug: interactionType,
97
+ name: (0, _formatMessage.default)('Question')
98
+ });
99
+ };
100
+
101
+ _this.buildItemCardHeadingId = function () {
102
+ return "itemCardHeading-".concat(_this.props.itemAnalysis.metadata.item_id);
103
+ };
104
+
105
+ _this.buildItemCardBodyId = function () {
106
+ return "itemCardBody-".concat(_this.props.itemAnalysis.metadata.item_id);
107
+ };
108
+
109
+ _this.bodyExceedsLimit = function (bodyElement, headingElement) {
110
+ if (!bodyElement || !headingElement) {
111
+ return;
112
+ }
113
+
114
+ return bodyElement.scrollWidth > headingElement.clientWidth || _this.state.bodyExpanded;
115
+ };
116
+
117
+ _this.handleBodyWidth = function () {
118
+ var bodyElement = document.getElementById(_this.buildItemCardBodyId());
119
+ var headingElement = document.getElementById(_this.buildItemCardHeadingId());
120
+
121
+ _this.setState({
122
+ bodyToggable: _this.bodyExceedsLimit(bodyElement, headingElement)
123
+ });
124
+ };
125
+
126
+ _this.handleToggle = function () {
127
+ _this.setState({
128
+ metricsExpanded: !_this.state.metricsExpanded
129
+ });
130
+
131
+ _this.setState({
132
+ itemExpanded: !_this.state.itemExpanded
133
+ });
134
+ };
135
+
136
+ _this.handleBodyToggle = function () {
137
+ _this.setState({
138
+ bodyExpanded: !_this.state.bodyExpanded
139
+ });
140
+ };
141
+
142
+ _this.renderExpandItemCardButton = function () {
143
+ return /*#__PURE__*/_react.default.createElement("div", {
144
+ className: styles.itemCardToggleButtonWrapper
145
+ }, /*#__PURE__*/_react.default.createElement(_index.default, {
146
+ onClick: _this.handleToggle,
147
+ title: _this.state.metricsExpanded ? (0, _formatMessage.default)('collapse item card') : (0, _formatMessage.default)('expand item card'),
148
+ isExpanded: _this.state.metricsExpanded
149
+ }));
150
+ };
151
+
152
+ _this.renderBodyToggleButton = function () {
153
+ return /*#__PURE__*/_react.default.createElement("div", {
154
+ className: styles.bodyExpandButtonWrapper
155
+ }, /*#__PURE__*/_react.default.createElement(_index.default, {
156
+ onClick: _this.handleBodyToggle,
157
+ title: _this.state.bodyExpanded ? (0, _formatMessage.default)('collapse question stem') : (0, _formatMessage.default)('expand question stem'),
158
+ isExpanded: _this.state.bodyExpanded
159
+ }));
160
+ };
161
+
162
+ _this.calculateValueWithPointsPossible = function (metricKey, metricValue) {
163
+ var pointsPossible = _this.props.itemAnalysis.scores.points_possible;
164
+ return _formatMessage.default.rich('{score, number}<s>/{possible, number} PTS</s>', {
165
+ s: function s(_ref) {
166
+ var children = _ref.children;
167
+ return /*#__PURE__*/_react.default.createElement("span", {
168
+ key: metricKey,
169
+ className: styles.metricNumberContext
170
+ }, children);
171
+ },
172
+ score: metricValue,
173
+ possible: pointsPossible
174
+ });
175
+ };
176
+
177
+ _this.renderExpanded = function () {
178
+ var scores = _this.props.itemAnalysis.scores;
179
+ var classes = (0, _classnames2.default)(styles.metricsRow, styles.metricsRowPaginated);
180
+ return /*#__PURE__*/_react.default.createElement("div", {
181
+ className: classes
182
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
183
+ metricKey: "pearson_correlation",
184
+ label: (0, _formatMessage.default)('Pearson Correlation Coefficient'),
185
+ value: _formatMessage.default.number(scores.pearson_correlation),
186
+ popoverDescription: _popoverContent.pearsonCorrelation
187
+ }));
188
+ };
189
+
190
+ return _this;
191
+ }
192
+
193
+ (0, _createClass2.default)(NewItemAnalysis, [{
194
+ key: "componentDidMount",
195
+ value: function componentDidMount() {
196
+ this.handleBodyWidth();
197
+ window.addEventListener('resize', this.handleBodyWidth);
198
+ }
199
+ }, {
200
+ key: "componentWillUnmount",
201
+ value: function componentWillUnmount() {
202
+ window.removeEventListener('resize', this.handleBodyWidth);
203
+ }
204
+ }, {
205
+ key: "render",
206
+ value: function render() {
207
+ var _this$props$itemAnaly = this.props.itemAnalysis,
208
+ metadata = _this$props$itemAnaly.metadata,
209
+ scores = _this$props$itemAnaly.scores;
210
+ var bodyClass = (0, _classnames2.default)(styles.bodyExcerpt, (0, _defineProperty2.default)({}, styles.bodyExcerptExpanded, this.state.bodyExpanded));
211
+ var headingId = this.buildItemCardHeadingId();
212
+ var bodyId = this.buildItemCardBodyId();
213
+ return /*#__PURE__*/_react.default.createElement(_index2.default, {
214
+ className: styles.cardWrapper
215
+ }, /*#__PURE__*/_react.default.createElement("div", {
216
+ className: styles.innerWrapper
217
+ }, /*#__PURE__*/_react.default.createElement("div", {
218
+ id: headingId,
219
+ className: styles.heading
220
+ }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
221
+ margin: "0 0 small 0",
222
+ level: "h3",
223
+ weight: "bold",
224
+ color: "primary"
225
+ }, metadata.item_title), /*#__PURE__*/_react.default.createElement(_uiText.Text, {
226
+ size: "small",
227
+ weight: "bold",
228
+ transform: "capitalize"
229
+ }, this.mapInteractionTypeToTranslation(metadata.interaction_type)), /*#__PURE__*/_react.default.createElement("div", {
230
+ id: "itemBody",
231
+ className: styles.bodyPresentation
232
+ }, /*#__PURE__*/_react.default.createElement("div", {
233
+ id: bodyId,
234
+ className: bodyClass
235
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
236
+ size: "small"
237
+ }, metadata.item_body)), this.state.bodyToggable && this.renderBodyToggleButton())), /*#__PURE__*/_react.default.createElement("div", {
238
+ className: styles.metricsWithControls
239
+ }, /*#__PURE__*/_react.default.createElement("div", {
240
+ className: styles.metricGroup
241
+ }, /*#__PURE__*/_react.default.createElement("div", {
242
+ className: styles.metricsRow
243
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
244
+ metricKey: "difficulty_index",
245
+ label: (0, _formatMessage.default)('Item Difficulty'),
246
+ value: _formatMessage.default.number(scores.difficulty_index),
247
+ popoverDescription: _popoverContent.difficultyIndex
248
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
249
+ metricKey: "mean",
250
+ label: (0, _formatMessage.default)('Mean Earned Points'),
251
+ value: this.calculateValueWithPointsPossible('mean', scores.mean)
252
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
253
+ metricKey: "median",
254
+ label: (0, _formatMessage.default)('Median Earned Points'),
255
+ value: this.calculateValueWithPointsPossible('median', scores.median)
256
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
257
+ metricKey: "discrimination_index",
258
+ label: (0, _formatMessage.default)('Discrimination Index'),
259
+ value: _formatMessage.default.number(scores.discrimination_index),
260
+ popoverDescription: _popoverContent.discriminationIndex
261
+ }), this.renderExpandItemCardButton()), this.state.metricsExpanded && this.renderExpanded()))), this.state.itemExpanded && /*#__PURE__*/_react.default.createElement("div", {
262
+ className: styles.expandableInnerWrapper
263
+ }));
264
+ }
265
+ }]);
266
+ NewItemAnalysis.displayName = "NewItemAnalysis";
267
+ return NewItemAnalysis;
268
+ }(_react.Component), _class2.propTypes = {
269
+ itemAnalysis: _propTypes.default.shape({
270
+ attempts: _propTypes.default.shape({
271
+ students_responded: _propTypes.default.number,
272
+ students_without_response: _propTypes.default.number
273
+ }),
274
+ metadata: _propTypes.default.shape({
275
+ interaction_type: _propTypes.default.string,
276
+ item_body: _propTypes.default.string,
277
+ item_id: _propTypes.default.string,
278
+ item_title: _propTypes.default.string
279
+ }),
280
+ scores: _propTypes.default.shape({
281
+ difficulty_index: _propTypes.default.number,
282
+ discrimination_index: _propTypes.default.number,
283
+ mean: _propTypes.default.number,
284
+ median: _propTypes.default.number,
285
+ pearson_correlation: _propTypes.default.number,
286
+ points_possible: _propTypes.default.number,
287
+ quartile_distribution: _propTypes.default.arrayOf(_propTypes.default.number)
288
+ })
289
+ }).isRequired
290
+ }, _temp)) || _class);
291
+ exports.NewItemAnalysis = NewItemAnalysis;
@@ -0,0 +1,19 @@
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
+ breakpoints = _ref.breakpoints,
11
+ typography = _ref.typography;
12
+ return {
13
+ tabletBreakPoint: "max-width: ".concat(breakpoints.large),
14
+ cardWrapperPadding: spacing.medium,
15
+ viewPadding: spacing.small,
16
+ metricNumberContextFontSize: typography.fontSizeMedium,
17
+ metricNumberContextFontWeight: typography.fontWeightNormal
18
+ };
19
+ }