@instructure/quiz-core 20.7.1-rc.9 → 20.8.0

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 (48) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/index.js +1 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +90 -0
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/index.js +1 -0
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +255 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared/ChoiceGroupTypeTable → NumericType}/theme.js +1 -2
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/presenter.js +23 -59
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/styles.js +10 -0
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +11 -35
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +120 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/styles.js +38 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/theme.js +11 -0
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +55 -0
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +14 -0
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +8 -2
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/index.js +1 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/presenter.js +104 -0
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/{ChoiceGroupTypeTable → ExpandableCard}/styles.js +3 -2
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/theme.js +7 -0
  20. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +4 -1
  21. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +52 -2
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/index.js +13 -0
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +113 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/index.js +13 -0
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +281 -0
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared/ChoiceGroupTypeTable → NumericType}/theme.js +1 -2
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/presenter.js +27 -64
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/styles.js +18 -0
  29. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +15 -39
  30. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +140 -0
  31. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/styles.js +46 -0
  32. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/theme.js +19 -0
  33. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +80 -0
  34. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +20 -4
  35. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +8 -2
  36. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/index.js +13 -0
  37. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/presenter.js +124 -0
  38. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/{ChoiceGroupTypeTable → ExpandableCard}/styles.js +3 -2
  39. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/theme.js +15 -0
  40. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +4 -1
  41. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +68 -3
  42. package/package.json +10 -10
  43. /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{RichFillBlankType → NumericType}/styles.js +0 -0
  44. /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/index.js +0 -0
  45. /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/{theme.js → ChoiceGroupTypeTable/theme.js} +0 -0
  46. /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{RichFillBlankType → NumericType}/styles.js +0 -0
  47. /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/index.js +0 -0
  48. /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/{theme.js → ChoiceGroupTypeTable/theme.js} +0 -0
@@ -0,0 +1,120 @@
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
+
6
+ var _dec, _class, _class2, _temp;
7
+
8
+ /** @jsx jsx */
9
+ import { scoreDistributionType } from "../../../propTypes.js";
10
+ import { Component } from 'react';
11
+ import t from '@instructure/quiz-i18n/es/format-message';
12
+ import { Table } from '@instructure/ui-table';
13
+ import PropTypes from 'prop-types';
14
+ import { withStyle, jsx } from '@instructure/emotion';
15
+ import generateStyle from "./styles.js";
16
+ import generateComponentTheme from "./theme.js";
17
+ export var ScoreDistributionTypeTable = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
18
+ _inherits(ScoreDistributionTypeTable, _Component);
19
+
20
+ var _super = _createSuper(ScoreDistributionTypeTable);
21
+
22
+ function ScoreDistributionTypeTable() {
23
+ var _this;
24
+
25
+ _classCallCheck(this, ScoreDistributionTypeTable);
26
+
27
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
+ args[_key] = arguments[_key];
29
+ }
30
+
31
+ _this = _super.call.apply(_super, [this].concat(args));
32
+
33
+ _this.renderFirstCell = function (content) {
34
+ return jsx("div", {
35
+ css: _this.props.styles.firstTextContainer
36
+ }, content);
37
+ };
38
+
39
+ _this.renderCell = function (content) {
40
+ return jsx("div", {
41
+ css: _this.props.styles.textContainer
42
+ }, content);
43
+ };
44
+
45
+ _this.renderRow = function (choice, choiceIndex) {
46
+ var count = choice.count,
47
+ score = choice.score,
48
+ percentage = choice.percentage;
49
+ return jsx(Table.Row, {
50
+ key: choiceIndex
51
+ }, jsx(Table.Cell, {
52
+ themeOverride: {
53
+ padding: '0'
54
+ }
55
+ }, _this.renderFirstCell(score)), jsx(Table.Cell, {
56
+ themeOverride: {
57
+ padding: '0'
58
+ }
59
+ }, _this.renderCell(count)), jsx(Table.Cell, {
60
+ themeOverride: {
61
+ padding: '0'
62
+ },
63
+ textAlign: "center"
64
+ }, _this.renderCell("".concat(percentage, "%"))));
65
+ };
66
+
67
+ return _this;
68
+ }
69
+
70
+ _createClass(ScoreDistributionTypeTable, [{
71
+ key: "componentDidMount",
72
+ value: function componentDidMount() {
73
+ this.props.makeStyles();
74
+ }
75
+ }, {
76
+ key: "componentDidUpdate",
77
+ value: function componentDidUpdate() {
78
+ this.props.makeStyles();
79
+ }
80
+ }, {
81
+ key: "render",
82
+ value: function render() {
83
+ var _this$props = this.props,
84
+ scores = _this$props.scores,
85
+ itemId = _this$props.itemId,
86
+ styles = _this$props.styles;
87
+ var pointsHeaderId = "answer-frequency-summary-points-".concat(itemId);
88
+ var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
89
+ var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
90
+ return jsx("div", {
91
+ css: styles.tableContainer
92
+ }, jsx(Table, {
93
+ caption: t('Score Frequency Summary'),
94
+ elementRef: this.setTableRef
95
+ }, jsx(Table.Head, null, jsx(Table.Row, null, jsx(Table.ColHeader, {
96
+ id: pointsHeaderId,
97
+ height: "47px"
98
+ }, t('Points')), jsx(Table.ColHeader, {
99
+ id: respondentsHeaderId,
100
+ height: "47px",
101
+ textAlign: "center"
102
+ }, t('Respondents')), jsx(Table.ColHeader, {
103
+ id: percentageHeaderId,
104
+ height: "47px",
105
+ textAlign: "center"
106
+ }, t('%')))), jsx(Table.Body, null, scores.map(this.renderRow))));
107
+ }
108
+ }]);
109
+
110
+ ScoreDistributionTypeTable.displayName = "ScoreDistributionTypeTable";
111
+ return ScoreDistributionTypeTable;
112
+ }(Component), _class2.propTypes = {
113
+ itemId: PropTypes.number.isRequired,
114
+ scores: PropTypes.arrayOf(scoreDistributionType).isRequired,
115
+ // eslint-disable-next-line react/require-default-props
116
+ makeStyles: PropTypes.func,
117
+ // eslint-disable-next-line react/require-default-props,react/forbid-prop-types
118
+ styles: PropTypes.object
119
+ }, _temp)) || _class);
120
+ export default ScoreDistributionTypeTable;
@@ -0,0 +1,38 @@
1
+ var generateStyle = function generateStyle(componentTheme) {
2
+ var borderBottom = "solid 0.0625rem ".concat(componentTheme.colorGray);
3
+ return {
4
+ tableContainer: {
5
+ width: 'calc(25% + 350px)',
6
+ maxWidth: '100%',
7
+ '& table': {
8
+ borderCollapse: 'separate',
9
+ borderSpacing: '0 1px',
10
+ '& thead tr': {
11
+ '& th, & td': {
12
+ borderBottom: borderBottom
13
+ }
14
+ },
15
+ '& tbody tr': {
16
+ '& th, & td': {
17
+ width: '33.33%',
18
+ borderBottom: borderBottom
19
+ },
20
+ '& th': {
21
+ fontWeight: 400
22
+ }
23
+ }
24
+ }
25
+ },
26
+ textContainer: {
27
+ height: 'calc(100% - 4px)',
28
+ display: 'flex',
29
+ alignItems: 'center',
30
+ justifyContent: 'center'
31
+ },
32
+ firstTextContainer: {
33
+ padding: componentTheme.cellPadding
34
+ }
35
+ };
36
+ };
37
+
38
+ export default generateStyle;
@@ -0,0 +1,11 @@
1
+ var generateComponentTheme = function generateComponentTheme(_ref) {
2
+ var spacing = _ref.spacing,
3
+ colors = _ref.colors;
4
+ return {
5
+ tableBottomPadding: spacing === null || spacing === void 0 ? void 0 : spacing.medium,
6
+ colorGray: colors === null || colors === void 0 ? void 0 : colors.tiara,
7
+ cellPadding: "".concat(spacing === null || spacing === void 0 ? void 0 : spacing.small, " ").concat(spacing === null || spacing === void 0 ? void 0 : spacing.small)
8
+ };
9
+ };
10
+
11
+ export default generateComponentTheme;
@@ -0,0 +1,55 @@
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
+ import React, { Component } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import ScoreDistributionTypeTable from "./Table/index.js";
7
+ import { scoreDistributionTypeAnswerSummaryPropType } from "../../propTypes.js";
8
+ import AggregationTable from "../shared/AggregationTable/index.js";
9
+ import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
10
+ import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
11
+ import t from '@instructure/quiz-i18n/es/format-message';
12
+ export var ScoreDistributionType = /*#__PURE__*/function (_Component) {
13
+ _inherits(ScoreDistributionType, _Component);
14
+
15
+ var _super = _createSuper(ScoreDistributionType);
16
+
17
+ function ScoreDistributionType() {
18
+ var _this;
19
+
20
+ _classCallCheck(this, ScoreDistributionType);
21
+
22
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
23
+ args[_key] = arguments[_key];
24
+ }
25
+
26
+ _this = _super.call.apply(_super, [this].concat(args));
27
+
28
+ _this.render = function () {
29
+ var _this$props = _this.props,
30
+ answerSummary = _this$props.answerSummary,
31
+ itemId = _this$props.itemId;
32
+ return /*#__PURE__*/React.createElement(AfsTableWrapper, {
33
+ tableHeader: t('Score Frequency Summary')
34
+ }, /*#__PURE__*/React.createElement(AfsPartsContainer, {
35
+ afsTable: /*#__PURE__*/React.createElement(ScoreDistributionTypeTable, {
36
+ itemId: itemId,
37
+ scores: answerSummary.score_distribution
38
+ }),
39
+ aggregationTable: /*#__PURE__*/React.createElement(AggregationTable, {
40
+ itemId: itemId,
41
+ answerSummary: answerSummary
42
+ })
43
+ }));
44
+ };
45
+
46
+ return _this;
47
+ }
48
+
49
+ return ScoreDistributionType;
50
+ }(Component);
51
+ ScoreDistributionType.propTypes = {
52
+ itemId: PropTypes.number,
53
+ answerSummary: scoreDistributionTypeAnswerSummaryPropType
54
+ }.isRequired;
55
+ export default ScoreDistributionType;
@@ -7,7 +7,9 @@ import LegacyChoiceType from "./LegacyChoiceType/index.js";
7
7
  import ChoiceType from "./ChoiceType/index.js";
8
8
  import RichFillBlankType from "./RichFillBlankType/index.js";
9
9
  import AggregationType from "./AggregationType/index.js";
10
+ import NumericType from "./NumericType/index.js";
10
11
  import { MatchingType, OrderingType, CategorizationType } from "./MatchingType/index.js";
12
+ import { ScoreDistributionType } from "./ScoreDistributionType/index.js";
11
13
  import { afsFlags, answerSummaryPropType } from "../propTypes.js";
12
14
  export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
13
15
  _inherits(AnswerFrequencySummary, _Component);
@@ -62,6 +64,18 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
62
64
  if (afsFlags.fillInTheBlankEnabled) {
63
65
  _this.afsTableComponentMap.set('rich-fill-blank', RichFillBlankType);
64
66
  }
67
+
68
+ if (afsFlags.numericEnabled) {
69
+ _this.afsTableComponentMap.set('numeric', NumericType);
70
+ }
71
+
72
+ if (afsFlags.essayEnabled) {
73
+ _this.afsTableComponentMap.set('essay', ScoreDistributionType);
74
+ }
75
+
76
+ if (afsFlags.fileUploadEnabled) {
77
+ _this.afsTableComponentMap.set('file-upload', ScoreDistributionType);
78
+ }
65
79
  };
66
80
 
67
81
  _this.render = function () {
@@ -28,6 +28,11 @@ export var AfsTableWrapper = (_dec = withStyle(generateStyle, null), _dec(_class
28
28
 
29
29
  _this = _super.call.apply(_super, [this].concat(args));
30
30
 
31
+ _this.getHeader = function () {
32
+ var tableHeader = _this.props.tableHeader;
33
+ return tableHeader || t('Answer Frequency Summary');
34
+ };
35
+
31
36
  _this.render = function () {
32
37
  return jsx(Flex, {
33
38
  direction: "row",
@@ -41,7 +46,7 @@ export var AfsTableWrapper = (_dec = withStyle(generateStyle, null), _dec(_class
41
46
  level: "h3",
42
47
  weight: "bold",
43
48
  color: "primary"
44
- }, t('Answer Frequency Summary')), _this.props.children)));
49
+ }, _this.getHeader()), _this.props.children)));
45
50
  };
46
51
 
47
52
  return _this;
@@ -50,5 +55,6 @@ export var AfsTableWrapper = (_dec = withStyle(generateStyle, null), _dec(_class
50
55
  return AfsTableWrapper;
51
56
  }(Component), _class2.propTypes = {
52
57
  children: PropTypes.node.isRequired,
53
- styles: PropTypes.object
58
+ styles: PropTypes.object,
59
+ tableHeader: PropTypes.string
54
60
  }, _temp)) || _class);
@@ -0,0 +1 @@
1
+ export { ExpandableCard as default } from "./presenter.js";
@@ -0,0 +1,104 @@
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
+ /** @jsx jsx */
8
+ import { Component } from 'react';
9
+ import Card from "../../../../../../../common/components/shared/Card/index.js";
10
+ import { Flex } from '@instructure/ui-flex';
11
+ import { jsx, withStyle } from '@instructure/emotion';
12
+ import ExpandButton from "../../../../../../../common/components/shared/ExpandButton/index.js";
13
+ import t from '@instructure/quiz-i18n/es/format-message';
14
+ import generateStyle from "./styles.js";
15
+ import generateComponentTheme from "./theme.js";
16
+ import PropTypes from 'prop-types';
17
+ export var ExpandableCard = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
18
+ _inherits(ExpandableCard, _Component);
19
+
20
+ var _super = _createSuper(ExpandableCard);
21
+
22
+ function ExpandableCard() {
23
+ var _this;
24
+
25
+ _classCallCheck(this, ExpandableCard);
26
+
27
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
+ args[_key] = arguments[_key];
29
+ }
30
+
31
+ _this = _super.call.apply(_super, [this].concat(args));
32
+ _this.state = {
33
+ bodyExpanded: false
34
+ };
35
+
36
+ _this.handleBodyToggle = function () {
37
+ _this.setState({
38
+ bodyExpanded: !_this.state.bodyExpanded
39
+ });
40
+ };
41
+
42
+ _this.renderGroup = function () {
43
+ var headLine = _this.props.headLine;
44
+ return jsx(Flex, {
45
+ direction: "row",
46
+ alignItems: "start"
47
+ }, jsx(Flex.Item, {
48
+ shouldShrink: true,
49
+ shouldGrow: true,
50
+ margin: "xx-small none none none"
51
+ }, headLine), jsx(Flex.Item, {
52
+ margin: "none none none x-small"
53
+ }, jsx(ExpandButton, {
54
+ onClick: _this.handleBodyToggle,
55
+ title: _this.state.bodyExpanded ? t('collapse group result') : t('expand group result'),
56
+ isExpanded: _this.state.bodyExpanded
57
+ })));
58
+ };
59
+
60
+ _this.renderBody = function () {
61
+ var _this$props = _this.props,
62
+ content = _this$props.content,
63
+ styles = _this$props.styles;
64
+ var bodyContainer = styles.bodyContainer;
65
+ return jsx(Flex.Item, {
66
+ shouldShrink: true,
67
+ padding: "x-small small x-small small"
68
+ }, jsx("div", {
69
+ css: bodyContainer
70
+ }, content));
71
+ };
72
+
73
+ _this.render = function () {
74
+ var styles = _this.props.styles;
75
+ var groupWrapper = styles.groupWrapper;
76
+ var bodyExpanded = _this.state.bodyExpanded;
77
+ return jsx("div", {
78
+ css: groupWrapper
79
+ }, jsx(Card, null, jsx(Flex, {
80
+ direction: "column",
81
+ justifyItems: "start"
82
+ }, jsx(Flex.Item, {
83
+ shouldGrow: true,
84
+ shouldShrink: true,
85
+ overflowY: "visible"
86
+ }, jsx(Flex, {
87
+ direction: "column",
88
+ justifyItems: "start"
89
+ }, jsx(Flex.Item, {
90
+ shouldShrink: true,
91
+ padding: "x-small small x-small small",
92
+ overflowY: "hidden"
93
+ }, _this.renderGroup()), bodyExpanded && _this.renderBody())))));
94
+ };
95
+
96
+ return _this;
97
+ }
98
+
99
+ return ExpandableCard;
100
+ }(Component), _class2.propTypes = {
101
+ headLine: PropTypes.node,
102
+ content: PropTypes.node,
103
+ styles: PropTypes.object
104
+ }.isRequired, _temp)) || _class);
@@ -6,8 +6,9 @@ var generateStyle = function generateStyle(componentTheme) {
6
6
  minWidth: componentTheme.cardMinWidth,
7
7
  maxWidth: '100%'
8
8
  },
9
- cardWrapper: {
10
- margin: "0 0 ".concat(componentTheme.cardBottomMargin, " 0")
9
+ bodyContainer: {
10
+ overflow: 'auto',
11
+ maxHeight: '600px'
11
12
  }
12
13
  };
13
14
  };
@@ -0,0 +1,7 @@
1
+ var generateComponentTheme = function generateComponentTheme() {
2
+ return {
3
+ cardMinWidth: '500px'
4
+ };
5
+ };
6
+
7
+ export default generateComponentTheme;
@@ -13,7 +13,10 @@ function mapStateToProps(_state) {
13
13
  trueFalseEnabled: featureOn('ia_true_false_afs'),
14
14
  choiceEnabled: featureOn('ia_choice_afs'),
15
15
  multiAnswerEnabled: featureOn('ia_multi_answer_afs'),
16
- fillInTheBlankEnabled: featureOn('ia_rich_fill_blank_afs')
16
+ fillInTheBlankEnabled: featureOn('ia_rich_fill_blank_afs'),
17
+ essayEnabled: featureOn('ia_essay_afs'),
18
+ fileUploadEnabled: featureOn('ia_file_upload_afs'),
19
+ numericEnabled: featureOn('ia_numeric_afs')
17
20
  }
18
21
  };
19
22
  }
@@ -50,6 +50,17 @@ export var choiceTypeAnswerSummaryPropType = PropTypes.shape({
50
50
  no_answer: aggregateDetailPropType,
51
51
  aggregate: aggregatePropType
52
52
  });
53
+ export var scoreDistributionTypeAnswerSummaryPropType = PropTypes.shape({
54
+ no_answer: aggregateDetailPropType.isRequired,
55
+ aggregate: aggregatePropType.isRequired,
56
+ graded: aggregateDetailPropType.isRequired,
57
+ score_distribution: PropTypes.arrayOf(scoreDistributionType).isRequired
58
+ });
59
+ export var scoreDistributionType = PropTypes.shape({
60
+ count: PropTypes.number.isRequired,
61
+ score: PropTypes.number.isRequired,
62
+ percentage: PropTypes.number.isRequired
63
+ });
53
64
  export var matchingTypeAnswerSummaryPropType = PropTypes.shape({
54
65
  questions: PropTypes.objectOf(PropTypes.shape({
55
66
  body: PropTypes.string,
@@ -77,7 +88,43 @@ export var richFillBlankTypeAnswerSummaryPropType = PropTypes.shape({
77
88
  no_answer: aggregateDetailPropType,
78
89
  aggregate: aggregatePropType
79
90
  });
80
- export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType]);
91
+ var withinARangeTypeObject = PropTypes.shape({
92
+ end: PropTypes.string.isRequired,
93
+ start: PropTypes.string.isRequired,
94
+ choices: PropTypes.arrayOf(choiceTypeObject).isRequired,
95
+ type: PropTypes.string.isRequired
96
+ });
97
+ var marginOfErrorTypeObject = PropTypes.shape({
98
+ margin: PropTypes.string.isRequired,
99
+ margin_type: PropTypes.string.isRequired,
100
+ value: PropTypes.string.isRequired,
101
+ type: PropTypes.string.isRequired,
102
+ choices: PropTypes.arrayOf(choiceTypeObject).isRequired
103
+ });
104
+ var exactResponseTypeObject = PropTypes.shape({
105
+ value: PropTypes.string.isRequired,
106
+ type: PropTypes.string.isRequired,
107
+ choices: PropTypes.arrayOf(choiceTypeObject).isRequired
108
+ });
109
+ var preciseResponseTypeObject = PropTypes.shape({
110
+ value: PropTypes.string.isRequired,
111
+ precision: PropTypes.string.isRequired,
112
+ precision_type: PropTypes.string.isRequired,
113
+ type: PropTypes.string.isRequired,
114
+ choices: PropTypes.arrayOf(choiceTypeObject).isRequired
115
+ });
116
+ var uncategorizedTypeObject = PropTypes.shape({
117
+ type: PropTypes.string.isRequired,
118
+ choices: PropTypes.arrayOf(choiceTypeObject).isRequired
119
+ });
120
+ var numericRequirementTypeObject = PropTypes.oneOfType([withinARangeTypeObject, marginOfErrorTypeObject, exactResponseTypeObject, preciseResponseTypeObject, uncategorizedTypeObject]);
121
+ export var numericTypeAnswerSummaryPropType = PropTypes.shape({
122
+ requirement: PropTypes.shape({
123
+ correct_answers: PropTypes.arrayOf(numericRequirementTypeObject).isRequired,
124
+ incorrect_answer_choices: PropTypes.arrayOf(choiceTypeObject).isRequired
125
+ })
126
+ });
127
+ export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType, scoreDistributionTypeAnswerSummaryPropType]);
81
128
  export var itemAnalysisPropType = PropTypes.shape({
82
129
  attempts: PropTypes.shape({
83
130
  students_responded: PropTypes.number,
@@ -109,5 +156,8 @@ export var afsFlags = PropTypes.shape({
109
156
  trueFalseEnabled: PropTypes.bool.isRequired,
110
157
  choiceEnabled: PropTypes.bool.isRequired,
111
158
  multiAnswerEnabled: PropTypes.bool.isRequired,
112
- fillInTheBlankEnabled: PropTypes.bool.isRequired
159
+ fillInTheBlankEnabled: PropTypes.bool.isRequired,
160
+ numericEnabled: PropTypes.bool.isRequired,
161
+ essayEnabled: PropTypes.bool.isRequired,
162
+ fileUploadEnabled: PropTypes.bool.isRequired
113
163
  });
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _presenter.ChoiceTypeWithInfo;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,113 @@
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.ChoiceTypeWithInfo = 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 _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _propTypes2 = require("../../../propTypes.js");
23
+
24
+ var _uiFlex = require("@instructure/ui-flex");
25
+
26
+ var _index = _interopRequireDefault(require("../../shared/ChoiceTypeTable/index.js"));
27
+
28
+ var _uiText = require("@instructure/ui-text");
29
+
30
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
31
+
32
+ var ChoiceTypeWithInfo = /*#__PURE__*/function (_Component) {
33
+ (0, _inherits2.default)(ChoiceTypeWithInfo, _Component);
34
+
35
+ var _super = (0, _createSuper2.default)(ChoiceTypeWithInfo);
36
+
37
+ function ChoiceTypeWithInfo() {
38
+ var _this;
39
+
40
+ (0, _classCallCheck2.default)(this, ChoiceTypeWithInfo);
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.renderTable = function () {
49
+ var _this$props = _this.props,
50
+ itemId = _this$props.itemId,
51
+ choices = _this$props.choices,
52
+ index = _this$props.index;
53
+ var tableId = "".concat(itemId, "_").concat(index, "_choiceGroup");
54
+ var tableContainerSizeClass = '';
55
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
56
+ itemId: tableId,
57
+ choices: choices,
58
+ tableContainerSizeClass: tableContainerSizeClass
59
+ });
60
+ };
61
+
62
+ _this.renderEmptyRequirement = function () {
63
+ return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, null, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
64
+ padding: "medium none none none"
65
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, null, (0, _formatMessage.default)('There are no entries for this requirement.'))));
66
+ };
67
+
68
+ _this.render = function () {
69
+ var _this$props2 = _this.props,
70
+ headLine = _this$props2.headLine,
71
+ choices = _this$props2.choices;
72
+ var areThereChoices = Array.isArray(choices) && choices.length > 0;
73
+ return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
74
+ direction: "column",
75
+ justifyItems: "start"
76
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
77
+ overflowY: "visible",
78
+ shouldGrow: true,
79
+ shouldShrink: true
80
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
81
+ direction: "column",
82
+ justifyItems: "start"
83
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
84
+ shouldShrink: true,
85
+ padding: "none none none none",
86
+ overflowY: "hidden"
87
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
88
+ direction: "row",
89
+ alignItems: "start"
90
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
91
+ shouldShrink: true,
92
+ shouldGrow: true,
93
+ margin: "none none none none"
94
+ }, headLine))), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
95
+ shouldShrink: true,
96
+ padding: "none none medium none"
97
+ }, areThereChoices ? _this.renderTable() : _this.renderEmptyRequirement()))));
98
+ };
99
+
100
+ return _this;
101
+ }
102
+
103
+ return ChoiceTypeWithInfo;
104
+ }(_react.Component);
105
+
106
+ exports.ChoiceTypeWithInfo = ChoiceTypeWithInfo;
107
+ ChoiceTypeWithInfo.propTypes = {
108
+ itemId: _propTypes.default.number.isRequired,
109
+ index: _propTypes.default.number.isRequired,
110
+ choices: _propTypes2.choiceTypeObject.isRequired,
111
+ headLine: _propTypes.default.node,
112
+ styles: _propTypes.default.object
113
+ }.isRequired;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _presenter.NumericType;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");