@instructure/quiz-core 20.11.3-rc.8 → 20.11.3

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 (160) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/es/banks/components/Bank/presenter.js +15 -7
  3. package/es/banks/components/BankEntry/presenter.js +5 -2
  4. package/es/banks/components/Banks/index.js +1 -1
  5. package/es/banks/components/Banks/presenter.js +0 -6
  6. package/es/banks/components/CreateBankModal/presenter.js +3 -1
  7. package/es/banks/components/HeaderMenu/presenter.js +40 -1
  8. package/es/banks/components/HeaderMenu/styles.js +3 -0
  9. package/es/banks/components/NavWrapper/presenter.js +6 -1
  10. package/es/banks/components/SharingModal/presenter.js +1 -1
  11. package/es/building/components/resources/BanksTray/presenter.js +5 -2
  12. package/es/building/components/resources/quizEntry/QuizEntry/index.js +2 -1
  13. package/es/building/components/resources/quizEntry/QuizEntry/presenter.js +23 -29
  14. package/es/building/components/resources/quizEntry/QuizEntry/quizEntryPresenterWrapper.js +39 -0
  15. package/es/building/components/resources/quizEntry/QuizEntry/styles.js +23 -0
  16. package/es/building/components/resources/quizEntry/QuizEntry/theme.js +4 -2
  17. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/presenter.js +35 -43
  18. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/styles.js +30 -0
  19. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/theme.js +4 -2
  20. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/index.js +25 -31
  21. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/styles.js +19 -0
  22. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/theme.js +4 -2
  23. package/es/building/components/resources/quizEntry/QuizEntryEdit/Footer/presenter.js +27 -33
  24. package/es/building/components/resources/quizEntry/QuizEntryEdit/Footer/styles.js +28 -0
  25. package/es/building/components/resources/quizEntry/QuizEntryEdit/Footer/theme.js +4 -2
  26. package/es/building/components/resources/quizEntry/QuizEntryEdit/Header/index.js +32 -37
  27. package/es/building/components/resources/quizEntry/QuizEntryEdit/Header/styles.js +49 -0
  28. package/es/building/components/resources/quizEntry/QuizEntryEdit/Header/theme.js +4 -2
  29. package/es/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +23 -23
  30. package/es/building/components/resources/quizEntry/QuizEntryEdit/styles.js +21 -0
  31. package/es/building/components/resources/quizEntry/QuizEntryEdit/theme.js +4 -2
  32. package/es/building/components/resources/quizEntry/QuizEntryShow/presenter.js +36 -50
  33. package/es/building/components/resources/quizEntry/QuizEntryShow/styles.js +84 -0
  34. package/es/building/components/resources/quizEntry/QuizEntryShow/theme.js +4 -2
  35. package/es/common/actions/outcomes.js +7 -1
  36. package/es/common/components/SDKApp/index.js +8 -2
  37. package/es/common/components/layout/navbar/SecondaryNavBarButton/index.js +1 -1
  38. package/es/common/components/layout/navbar/index.js +135 -38
  39. package/es/common/components/resources/item/ItemEdit/index.js +5 -2
  40. package/es/common/components/resources/item/ItemEdit/presenter.js +45 -8
  41. package/es/common/components/resources/stimulus/Stimulus/presenter.js +40 -50
  42. package/es/common/components/resources/stimulus/Stimulus/styles.js +58 -0
  43. package/es/common/components/resources/stimulus/Stimulus/theme.js +4 -2
  44. package/es/common/components/resources/stimulus/StimulusEdit/presenter.js +37 -46
  45. package/es/common/components/resources/stimulus/StimulusEdit/styles.js +46 -0
  46. package/es/common/components/resources/stimulus/StimulusEdit/theme.js +4 -2
  47. package/es/common/components/shared/overlayEmotion/index.js +1 -1
  48. package/es/common/components/shared/return_button/ReturnButton.js +4 -1
  49. package/es/common/reducers/outcomes.js +6 -2
  50. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/presenter.js +43 -43
  51. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/styles.js +41 -0
  52. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/theme.js +6 -3
  53. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/presenter.js +20 -26
  54. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/styles.js +19 -0
  55. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/theme.js +4 -2
  56. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +45 -47
  57. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/styles.js +52 -0
  58. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +4 -2
  59. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +2 -2
  60. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +2 -2
  61. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/presenter.js +2 -2
  62. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +32 -26
  63. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/styles.js +14 -0
  64. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/theme.js +4 -2
  65. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +38 -53
  66. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/styles.js +141 -0
  67. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +10 -7
  68. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/presenter.js +80 -61
  69. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/styles.js +93 -0
  70. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/theme.js +8 -5
  71. package/es/reporting/components/resources/NewQuizAndItemAnalysis/MetricPopover/presenter.js +31 -26
  72. package/es/reporting/components/resources/NewQuizAndItemAnalysis/MetricPopover/styles.js +15 -0
  73. package/es/reporting/components/resources/NewQuizAndItemAnalysis/MetricPopover/theme.js +4 -2
  74. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +80 -79
  75. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/styles.js +75 -0
  76. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +4 -2
  77. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +47 -49
  78. package/es/reporting/components/resources/NewQuizAndItemAnalysis/styles.js +14 -0
  79. package/es/reporting/components/resources/NewQuizAndItemAnalysis/theme.js +4 -2
  80. package/lib/banks/components/Bank/presenter.js +13 -6
  81. package/lib/banks/components/BankEntry/presenter.js +5 -2
  82. package/lib/banks/components/Banks/index.js +1 -1
  83. package/lib/banks/components/Banks/presenter.js +0 -6
  84. package/lib/banks/components/CreateBankModal/presenter.js +3 -1
  85. package/lib/banks/components/HeaderMenu/presenter.js +42 -1
  86. package/lib/banks/components/HeaderMenu/styles.js +3 -0
  87. package/lib/banks/components/NavWrapper/presenter.js +6 -1
  88. package/lib/banks/components/SharingModal/presenter.js +1 -1
  89. package/lib/building/components/resources/BanksTray/presenter.js +5 -2
  90. package/lib/building/components/resources/quizEntry/QuizEntry/index.js +3 -1
  91. package/lib/building/components/resources/quizEntry/QuizEntry/presenter.js +22 -30
  92. package/lib/building/components/resources/quizEntry/QuizEntry/quizEntryPresenterWrapper.js +51 -0
  93. package/lib/building/components/resources/quizEntry/QuizEntry/styles.js +33 -0
  94. package/lib/building/components/resources/quizEntry/QuizEntry/theme.js +6 -3
  95. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/presenter.js +34 -45
  96. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/styles.js +38 -0
  97. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/theme.js +6 -3
  98. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/index.js +24 -33
  99. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/styles.js +27 -0
  100. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/theme.js +6 -3
  101. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Footer/presenter.js +26 -35
  102. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Footer/styles.js +38 -0
  103. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Footer/theme.js +6 -3
  104. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Header/index.js +30 -38
  105. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Header/styles.js +57 -0
  106. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Header/theme.js +6 -3
  107. package/lib/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +20 -22
  108. package/lib/building/components/resources/quizEntry/QuizEntryEdit/styles.js +29 -0
  109. package/lib/building/components/resources/quizEntry/QuizEntryEdit/theme.js +6 -3
  110. package/lib/building/components/resources/quizEntry/QuizEntryShow/presenter.js +36 -53
  111. package/lib/building/components/resources/quizEntry/QuizEntryShow/styles.js +95 -0
  112. package/lib/building/components/resources/quizEntry/QuizEntryShow/theme.js +6 -3
  113. package/lib/common/actions/outcomes.js +8 -0
  114. package/lib/common/components/SDKApp/index.js +7 -1
  115. package/lib/common/components/layout/navbar/SecondaryNavBarButton/index.js +1 -1
  116. package/lib/common/components/layout/navbar/index.js +130 -39
  117. package/lib/common/components/resources/item/ItemEdit/index.js +5 -2
  118. package/lib/common/components/resources/item/ItemEdit/presenter.js +46 -8
  119. package/lib/common/components/resources/stimulus/Stimulus/presenter.js +38 -52
  120. package/lib/common/components/resources/stimulus/Stimulus/styles.js +70 -0
  121. package/lib/common/components/resources/stimulus/Stimulus/theme.js +6 -3
  122. package/lib/common/components/resources/stimulus/StimulusEdit/presenter.js +36 -47
  123. package/lib/common/components/resources/stimulus/StimulusEdit/styles.js +54 -0
  124. package/lib/common/components/resources/stimulus/StimulusEdit/theme.js +6 -3
  125. package/lib/common/components/shared/overlayEmotion/index.js +1 -1
  126. package/lib/common/components/shared/return_button/ReturnButton.js +4 -1
  127. package/lib/common/reducers/outcomes.js +5 -1
  128. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/presenter.js +42 -47
  129. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/styles.js +51 -0
  130. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/theme.js +8 -4
  131. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/presenter.js +19 -28
  132. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/styles.js +27 -0
  133. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/theme.js +6 -3
  134. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +45 -52
  135. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/styles.js +62 -0
  136. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +6 -3
  137. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +2 -2
  138. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +2 -2
  139. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/presenter.js +2 -2
  140. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +28 -26
  141. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/styles.js +24 -0
  142. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/theme.js +6 -3
  143. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +37 -55
  144. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/styles.js +149 -0
  145. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +12 -8
  146. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/presenter.js +81 -65
  147. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/styles.js +103 -0
  148. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/theme.js +10 -6
  149. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/MetricPopover/presenter.js +30 -28
  150. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/MetricPopover/styles.js +23 -0
  151. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/MetricPopover/theme.js +6 -3
  152. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +82 -84
  153. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/styles.js +85 -0
  154. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +6 -3
  155. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +43 -48
  156. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/styles.js +22 -0
  157. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/theme.js +6 -3
  158. package/package.json +11 -11
  159. package/es/common/components/layout/navbar/presenter.js +0 -120
  160. package/lib/common/components/layout/navbar/presenter.js +0 -140
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var generateStyle = function generateStyle(componentTheme) {
15
+ var mp = '@media print';
16
+ var interactionTypeStyles = {
17
+ color: componentTheme.titleInteractionTypeNamePointsColor,
18
+ fontSize: componentTheme.titleInteractionTypeNamePointsFontSize,
19
+ marginLeft: componentTheme.titleInteractionTypeNamePointsLeftMargin,
20
+ marginRight: componentTheme.titleInteractionTypeNamePointsRightMargin,
21
+ textOverflow: 'ellipsis',
22
+ overflow: 'hidden',
23
+ whiteSpace: 'nowrap'
24
+ };
25
+ var optionsButtonDragDropStyle = {
26
+ backgroundColor: 'transparent',
27
+ border: 'none',
28
+ color: 'inherit',
29
+ fontSize: componentTheme.optionsButtonDragDropHandleFontSize,
30
+ margin: componentTheme.optionsButtonDragDropHandleMargin
31
+ };
32
+ return {
33
+ quizEntryWrapper: (0, _defineProperty2.default)({
34
+ transform: 'translate3d(0, 0, 0)'
35
+ }, mp, {
36
+ breakInside: 'avoid'
37
+ }),
38
+ quizEntryShow: {
39
+ padding: componentTheme.quizEntryShowPadding,
40
+ backgroundColor: componentTheme.quizEntryShowBackgroundColor
41
+ },
42
+ header: {
43
+ height: componentTheme.headerHeight,
44
+ display: 'flex',
45
+ flexWrap: 'nowrap',
46
+ flexDirection: 'row',
47
+ alignItems: 'stretch',
48
+ paddingRight: componentTheme.headerRightPadding
49
+ },
50
+ dndBorder: {
51
+ border: componentTheme.dndBorder
52
+ },
53
+ leftHeader: {
54
+ flex: '8 0 0',
55
+ display: 'inline-flex',
56
+ overflow: 'hidden',
57
+ alignItems: 'center'
58
+ },
59
+ connectingLines: {
60
+ flex: '0 0 auto',
61
+ display: 'inline-flex',
62
+ borderLeft: "".concat(componentTheme.phoneConnectingLinesBorderWidth, " dotted"),
63
+ borderBottom: "".concat(componentTheme.phoneConnectingLinesBorderWidth, " dotted"),
64
+ borderColor: componentTheme.phoneConnectingLinesBorderColor,
65
+ height: '2rem',
66
+ width: '1.2rem',
67
+ marginTop: '-0.8rem',
68
+ marginRight: '1.2rem'
69
+ },
70
+ rightHeader: {
71
+ flex: '0 0 auto',
72
+ display: 'inline-flex',
73
+ textAlign: 'right',
74
+ zIndex: componentTheme.rightHeaderZIndex,
75
+ color: componentTheme.rightHeaderColor,
76
+ button: {
77
+ backgroundColor: 'initial'
78
+ }
79
+ },
80
+ title: interactionTypeStyles,
81
+ interactionTypeName: interactionTypeStyles,
82
+ points: interactionTypeStyles,
83
+ itemHolder: {
84
+ overflowWrap: 'anywhere',
85
+ margin: componentTheme.itemHolderMargin
86
+ },
87
+ optionsButton: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, optionsButtonDragDropStyle), {}, {
88
+ cursor: 'pointer'
89
+ }),
90
+ dragAndDropHandle: optionsButtonDragDropStyle
91
+ };
92
+ };
93
+
94
+ var _default = generateStyle;
95
+ exports.default = _default;
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = generator;
6
+ exports.default = void 0;
7
7
 
8
- function generator(_ref) {
8
+ var generateComponentTheme = function generateComponentTheme(_ref) {
9
9
  var spacing = _ref.spacing,
10
10
  colors = _ref.colors,
11
11
  typography = _ref.typography,
@@ -30,4 +30,7 @@ function generator(_ref) {
30
30
  phoneConnectingLinesBorderColor: colors.ash,
31
31
  phoneBreakPoint: "max-width: ".concat(breakpoints.medium)
32
32
  };
33
- }
33
+ };
34
+
35
+ var _default = generateComponentTheme;
36
+ exports.default = _default;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.setContextUuid = setContextUuid;
7
+ exports.setExternalAccountUuid = setExternalAccountUuid;
7
8
  exports.setOutcomesEndpoint = setOutcomesEndpoint;
8
9
  exports.setOutcomesToken = setOutcomesToken;
9
10
 
@@ -16,6 +17,13 @@ function setContextUuid(contextUuid) {
16
17
  };
17
18
  }
18
19
 
20
+ function setExternalAccountUuid(externalAccountUuid) {
21
+ return {
22
+ type: _quizCommon.SET_EXTERNAL_ACCOUNT_UUID,
23
+ payload: externalAccountUuid
24
+ };
25
+ }
26
+
19
27
  function setOutcomesEndpoint(endpoint) {
20
28
  return {
21
29
  type: _quizCommon.SET_OUTCOMES_ENDPOINT,
@@ -108,7 +108,7 @@ var SDKApp = (_dec = (0, _emotion.withStyle)(_styles.default, null), _dec(_class
108
108
  value: function componentWillMount() {
109
109
  var _this$props$rceConfig;
110
110
 
111
- this.store.dispatch([(0, _config.setAPIEndpoint)(this.props.apiEndpoint), (0, _config.setCanvasOrigin)((_this$props$rceConfig = this.props.rceConfig) === null || _this$props$rceConfig === void 0 ? void 0 : _this$props$rceConfig.canvasOrigin), this.setAppContainer(this.props.appContainer), (0, _config.setUserToken)(this.props.userToken), (0, _outcomes.setOutcomesEndpoint)(this.props.outcomesEndpoint), (0, _outcomes.setOutcomesToken)(this.props.outcomesToken), (0, _outcomes.setContextUuid)(this.props.contextUuid)]);
111
+ this.store.dispatch([(0, _config.setAPIEndpoint)(this.props.apiEndpoint), (0, _config.setCanvasOrigin)((_this$props$rceConfig = this.props.rceConfig) === null || _this$props$rceConfig === void 0 ? void 0 : _this$props$rceConfig.canvasOrigin), this.setAppContainer(this.props.appContainer), (0, _config.setUserToken)(this.props.userToken), (0, _outcomes.setOutcomesEndpoint)(this.props.outcomesEndpoint), (0, _outcomes.setOutcomesToken)(this.props.outcomesToken), (0, _outcomes.setContextUuid)(this.props.contextUuid), (0, _outcomes.setExternalAccountUuid)(this.props.externalAccountUuid)]);
112
112
 
113
113
  if (this.props.itemBankSharingEnabled) {
114
114
  this.store.dispatch((0, _features.addFeatures)('item_bank_sharing'));
@@ -166,6 +166,10 @@ var SDKApp = (_dec = (0, _emotion.withStyle)(_styles.default, null), _dec(_class
166
166
  if (newProps.gradeByQuestionEnabled !== this.props.gradeByQuestionEnabled && this.props.gradeByQuestionEnabled !== null) {
167
167
  this.store.dispatch((0, _grading.setGradeByQuestionEnabled)(newProps.gradeByQuestionEnabled));
168
168
  }
169
+
170
+ if (newProps.externalAccountUuid !== this.props.externalAccountUuid) {
171
+ this.store.dispatch((0, _outcomes.setExternalAccountUuid)(newProps.externalAccountUuid));
172
+ }
169
173
  }
170
174
  }, {
171
175
  key: "render",
@@ -193,6 +197,7 @@ var SDKApp = (_dec = (0, _emotion.withStyle)(_styles.default, null), _dec(_class
193
197
  appContainer: _CustomPropTypes.default.selectors.isRequired,
194
198
  children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]).isRequired,
195
199
  contextUuid: _propTypes.default.string,
200
+ externalAccountUuid: _propTypes.default.string,
196
201
  gradeByQuestionEnabled: _propTypes.default.bool,
197
202
  itemBankSharingEnabled: _propTypes.default.bool,
198
203
  // ESLint seems to this the "locale" prop is unused even though it definitely is
@@ -222,6 +227,7 @@ var SDKApp = (_dec = (0, _emotion.withStyle)(_styles.default, null), _dec(_class
222
227
  locale: _propTypes.default.string
223
228
  }, _class2.defaultProps = {
224
229
  contextUuid: '',
230
+ externalAccountUuid: '',
225
231
  gradeByQuestionEnabled: null,
226
232
  itemBankSharingEnabled: false,
227
233
  locale: null,
@@ -70,7 +70,7 @@ var SecondaryNavBarButton = (_dec = (0, _emotion.withStyle)(_styles.default, _th
70
70
  }]);
71
71
  SecondaryNavBarButton.displayName = "SecondaryNavBarButton";
72
72
  return SecondaryNavBarButton;
73
- }(_react.Component), _class2.propTypes = {
73
+ }(_react.Component), _class2.displayName = 'TopNavBarItem', _class2.propTypes = {
74
74
  children: _propTypes.default.string.isRequired,
75
75
  styles: _propTypes.default.object,
76
76
  makeStyles: _propTypes.default.func
@@ -1,65 +1,156 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
- exports.mapStateToProps = mapStateToProps;
11
8
  exports.default = exports.NavBar = void 0;
12
9
 
13
- var _redux = require("redux");
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
13
 
15
- var _partial = _interopRequireDefault(require("lodash/partial"));
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
16
15
 
17
- var _reactRedux = require("../../../../common/react-redux.js");
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
17
 
19
- var modalActions = _interopRequireWildcard(require("../../../../common/actions/modal.js"));
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
20
19
 
21
- var _ui = require("../../../../common/actions/ui.js");
20
+ var _react = require("react");
22
21
 
23
- var _quizCommon = require("@instructure/quiz-common");
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
24
23
 
25
- var _index = require("../../ImportModal/index.js");
24
+ var _uiTopNavBar = require("@instructure/ui-top-nav-bar");
26
25
 
27
- var _presenter = require("./presenter.js");
26
+ var _uiIcons = require("@instructure/ui-icons");
28
27
 
29
- var _quizzes = require("../../../selectors/quizzes.js");
28
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
30
29
 
31
- var _featureCheck = require("../../../util/featureCheck.js");
30
+ var _emotion = require("@instructure/emotion");
32
31
 
33
- var _quizExport = require("../../../actions/quizExport.js");
32
+ var _styles = _interopRequireDefault(require("./styles.js"));
34
33
 
35
- var _alerts = require("../../../actions/alerts.js");
34
+ var _theme = _interopRequireDefault(require("./theme.js"));
36
35
 
37
- function mapStateToProps(state) {
38
- var quiz = (0, _quizzes.getActiveQuiz)(state);
39
- return {
40
- activeQuizId: quiz.id,
41
- canExport: !state.getIn(['quizExport', "activeQuiz".concat(quiz.id)]),
42
- canImport: quiz.canImport(),
43
- hasQuestions: quiz.hasQuestions(),
44
- isEditing: state.get('editing') && state.get('editing').some(function (elem) {
45
- return elem;
46
- }),
47
- printingEnabled: (0, _featureCheck.featureOn)('printing')
48
- };
49
- }
36
+ var _dec, _class, _class2, _temp;
50
37
 
51
- var mapDispatchToProps = function mapDispatchToProps(dispatch) {
52
- return {
53
- addAlert: (0, _redux.bindActionCreators)(_alerts.addAlert, dispatch),
54
- addInfo: (0, _redux.bindActionCreators)(_alerts.addInfo, dispatch),
55
- openBanksTray: (0, _redux.bindActionCreators)(_ui.set.bind(void 0, _quizCommon.BUILD_TRAY_OPEN, true), dispatch),
56
- setBanksTrayButtonRef: (0, _redux.bindActionCreators)((0, _partial.default)(_ui.set, _quizCommon.BUILD_TRAY_BUTTON_REF), dispatch),
57
- startExport: (0, _redux.bindActionCreators)(_quizExport.startQuizExportJob, dispatch),
58
- openModal: (0, _redux.bindActionCreators)(modalActions.openModal.bind(modalActions, (0, _index.generateImportModalId)('qtiImport')), dispatch)
59
- };
60
- };
38
+ var _ref = (0, _emotion.jsx)(_uiIcons.IconQuizLine, {
39
+ color: "primary",
40
+ size: "small"
41
+ });
61
42
 
62
- var NavBar = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_presenter.NavBar);
43
+ var NavBar = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
44
+ (0, _inherits2.default)(NavBar, _Component);
45
+
46
+ var _super = (0, _createSuper2.default)(NavBar);
47
+
48
+ function NavBar() {
49
+ var _this;
50
+
51
+ (0, _classCallCheck2.default)(this, NavBar);
52
+
53
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
54
+ args[_key] = arguments[_key];
55
+ }
56
+
57
+ _this = _super.call.apply(_super, [this].concat(args));
58
+
59
+ _this.hiddenActionItemsMenuTriggerLabel = function (hiddenChildrenCount) {
60
+ return (0, _formatMessage.default)('{hiddenChildrenCount} more actions', {
61
+ hiddenChildrenCount: hiddenChildrenCount
62
+ });
63
+ };
64
+
65
+ _this.hiddenMenuItemsMenuTriggerLabel = function (hiddenChildrenCount) {
66
+ return (0, _formatMessage.default)('{hiddenChildrenCount} More', {
67
+ hiddenChildrenCount: hiddenChildrenCount
68
+ });
69
+ };
70
+
71
+ _this.renderBrand = function () {
72
+ return (0, _emotion.jsx)(_uiTopNavBar.TopNavBar.Brand, {
73
+ screenReaderLabel: (0, _formatMessage.default)('Quizzes'),
74
+ renderIcon: _ref
75
+ });
76
+ };
77
+
78
+ _this.renderMenuItems = function () {
79
+ return (0, _emotion.jsx)(_uiTopNavBar.TopNavBar.MenuItems, {
80
+ listLabel: (0, _formatMessage.default)('Page navigation'),
81
+ currentPageId: window.location.pathname,
82
+ renderHiddenItemsMenuTriggerLabel: _this.hiddenMenuItemsMenuTriggerLabel
83
+ }, _this.props.menuItems.map(function (menuItem) {
84
+ return _this.renderMenuItem(menuItem);
85
+ }));
86
+ };
87
+
88
+ _this.renderMenuItem = function (menuItem) {
89
+ return (0, _emotion.jsx)(_uiTopNavBar.TopNavBar.Item, {
90
+ id: menuItem.path,
91
+ key: menuItem.path,
92
+ onClick: function onClick() {
93
+ return _this.props.handleMenuItemChange(menuItem.path);
94
+ } // eslint-disable-line react/jsx-no-bind
95
+
96
+ }, menuItem.text);
97
+ };
98
+
99
+ _this.renderActionItems = function () {
100
+ return (0, _emotion.jsx)(_uiTopNavBar.TopNavBar.ActionItems, {
101
+ listLabel: (0, _formatMessage.default)('Actions'),
102
+ renderHiddenItemsMenuTriggerLabel: _this.hiddenActionItemsMenuTriggerLabel
103
+ }, (0, _toConsumableArray2.default)(_this.props.actionItems));
104
+ };
105
+
106
+ return _this;
107
+ }
108
+
109
+ (0, _createClass2.default)(NavBar, [{
110
+ key: "render",
111
+ value: function render() {
112
+ var _this2 = this;
113
+
114
+ return (0, _emotion.jsx)(_uiTopNavBar.TopNavBar, {
115
+ breakpoint: this.props.styles.phoneBreakPoint,
116
+ mediaQueryMatch: "element",
117
+ inverseColor: true
118
+ }, function () {
119
+ return (0, _emotion.jsx)(_uiTopNavBar.TopNavBar.Layout, {
120
+ themeOverride: {
121
+ desktopBackgroundInverse: _this2.props.styles.backgroundColor,
122
+ smallViewportBackgroundInverse: _this2.props.styles.backgroundColor
123
+ },
124
+ navLabel: (0, _formatMessage.default)('Quizzes navigation bar'),
125
+ desktopConfig: {
126
+ hideActionsUserSeparator: true
127
+ },
128
+ smallViewportConfig: {
129
+ dropdownMenuToggleButtonLabel: (0, _formatMessage.default)('Toggle Menu'),
130
+ dropdownMenuLabel: (0, _formatMessage.default)('Main Menu')
131
+ },
132
+ renderBrand: _this2.renderBrand(),
133
+ renderMenuItems: _this2.renderMenuItems(),
134
+ renderActionItems: _this2.renderActionItems()
135
+ });
136
+ });
137
+ }
138
+ }]);
139
+ NavBar.displayName = "NavBar";
140
+ return NavBar;
141
+ }(_react.Component), _class2.propTypes = {
142
+ menuItems: _propTypes.default.arrayOf(_propTypes.default.shape({
143
+ path: _propTypes.default.string.isRequired,
144
+ text: _propTypes.default.string.isRequired
145
+ })),
146
+ handleMenuItemChange: _propTypes.default.func,
147
+ actionItems: _propTypes.default.arrayOf(_propTypes.default.node),
148
+ styles: _propTypes.default.object
149
+ }, _class2.defaultProps = {
150
+ menuItems: [],
151
+ handleMenuItemChange: function handleMenuItemChange() {},
152
+ actionItems: []
153
+ }, _temp)) || _class);
63
154
  exports.NavBar = NavBar;
64
155
  var _default = NavBar;
65
156
  exports.default = _default;
@@ -47,7 +47,8 @@ function mapStateToProps(state, props) {
47
47
  var workingItem = props.entry.getWorkingInstance();
48
48
  var isValid = workingItem.isValid();
49
49
  var errorsShowing = state.get('errorsShowing', (0, _immutable.Map)());
50
- var errorsAreShowing = errorsShowing.get(props.guid);
50
+ var errorsAreShowing = errorsShowing.get(props.guid); // Null must always be passed to contextUuid when working with banks
51
+
51
52
  var contextUuid = props.contextUuid === void 0 ? state.getIn(['outcomes', 'contextUuid']) : props.contextUuid;
52
53
  return {
53
54
  answerFeedbackEnabled: (0, _featureCheck.featureOn)('answer_level_feedback'),
@@ -65,7 +66,9 @@ function mapStateToProps(state, props) {
65
66
  partialDeepScoringEnabled: (0, _featureCheck.featureOn)('partial_deep_scoring'),
66
67
  partialScoringEnabled: (0, _featureCheck.featureOn)('partial_scoring'),
67
68
  quizId: (0, _quizzes2.getActiveQuizId)(state),
68
- showCalculator: (0, _featureCheck.featureOn)('calculator_per_question')
69
+ showCalculator: (0, _featureCheck.featureOn)('calculator_per_question'),
70
+ scope: props.scope,
71
+ rootAccountUuid: state.getIn(['outcomes', 'externalAccountUuid'])
69
72
  };
70
73
  }
71
74
 
@@ -45,6 +45,8 @@ var _ElementsForSelectors = _interopRequireDefault(require("../../../../../commo
45
45
 
46
46
  var _instUIMessages = require("../../../../util/instUIMessages.js");
47
47
 
48
+ var _featureCheck = require("../../../../../common/util/featureCheck.js");
49
+
48
50
  var ItemEdit = /*#__PURE__*/function (_Component) {
49
51
  (0, _inherits2.default)(ItemEdit, _Component);
50
52
 
@@ -102,27 +104,53 @@ var ItemEdit = /*#__PURE__*/function (_Component) {
102
104
  workingItem = _this$props.workingItem;
103
105
  var itemId = guid || workingItem.get('id');
104
106
  var outcomeAlignmentSetGuid = workingItem.get('outcomeAlignmentSetGuid');
107
+ var launchContexts = [];
108
+ var rootAccountName = this.props.scope.root_account_name;
109
+ var launchContextUuid = this.props.scope.launch_context_uuid;
110
+ var launchContextTitle = this.props.scope.title; // If editing within a quiz, there is no account launch context
111
+
112
+ if ((0, _featureCheck.featureOn)('sub_account_bank_sharing') && rootAccountName) {
113
+ launchContexts.push({
114
+ uuid: this.props.rootAccountUuid,
115
+ name: rootAccountName
116
+ }); // Add if it is a course or sub-account launch context
117
+
118
+ if (launchContextUuid && launchContextUuid !== this.props.rootAccountUuid) {
119
+ launchContexts.push({
120
+ uuid: launchContextUuid,
121
+ name: launchContextTitle
122
+ });
123
+ }
124
+ }
125
+
105
126
  var options = [];
106
127
 
107
128
  if (this.props.outcomesEndpoint) {
108
129
  options.push({
109
130
  key: 'outcomes',
110
- title: /*#__PURE__*/_react.default.createElement("span", null, (0, _formatMessage.default)('Align to Outcomes'), " ", /*#__PURE__*/_react.default.createElement(_OutcomeCount.default, {
131
+ title: /*#__PURE__*/_react.default.createElement("span", null, (0, _formatMessage.default)('Align to Outcomes'), /*#__PURE__*/_react.default.createElement(_OutcomeCount.default, Object.assign({
111
132
  alignmentSetId: outcomeAlignmentSetGuid,
112
133
  artifactType: "quizEntry",
113
134
  artifactId: itemId,
114
- contextUuid: this.props.contextUuid,
135
+ contextUuid: this.props.contextUuid // Both components need to be aware of the launch contexts
136
+
137
+ }, launchContexts.length > 0 && {
138
+ launchContexts: launchContexts
139
+ }, {
115
140
  host: this.props.outcomesEndpoint,
116
141
  jwt: this.props.outcomesToken,
117
142
  screenreaderNotification: this.props.screenreaderNotification,
118
143
  liveRegion: _quizCommon.liveRegion
119
- })),
120
- component: /*#__PURE__*/_react.default.createElement(_OutcomeAlignments.default, {
144
+ }))),
145
+ component: /*#__PURE__*/_react.default.createElement(_OutcomeAlignments.default, Object.assign({
121
146
  artifactType: "quizEntry",
122
147
  artifactId: itemId,
123
148
  applicationElement: this.applicationElement,
124
149
  alignmentSetId: outcomeAlignmentSetGuid,
125
- contextUuid: this.props.contextUuid,
150
+ contextUuid: this.props.contextUuid
151
+ }, launchContexts.length > 0 && {
152
+ launchContexts: launchContexts
153
+ }, {
126
154
  emptySetHeading: (0, _formatMessage.default)('Align Institution outcomes to this question.'),
127
155
  host: this.props.outcomesEndpoint,
128
156
  jwt: this.props.outcomesToken,
@@ -131,7 +159,7 @@ var ItemEdit = /*#__PURE__*/function (_Component) {
131
159
  onUpdate: this.onOutcomeAlignmentSetChange,
132
160
  screenreaderNotification: this.props.screenreaderNotification,
133
161
  liveRegion: _quizCommon.liveRegion
134
- })
162
+ }))
135
163
  });
136
164
  }
137
165
 
@@ -201,7 +229,15 @@ ItemEdit.propTypes = {
201
229
  validationErrorsFromApi: _propTypes.default.objectOf(_propTypes.default.arrayOf(_propTypes.default.shape({
202
230
  type: _propTypes.default.string,
203
231
  text: _propTypes.default.string
204
- })))
232
+ }))),
233
+ scope: _propTypes.default.shape({
234
+ type: _propTypes.default.string,
235
+ uuid: _propTypes.default.string,
236
+ title: _propTypes.default.string,
237
+ launch_context_uuid: _propTypes.default.string,
238
+ root_account_name: _propTypes.default.string
239
+ }),
240
+ rootAccountUuid: _propTypes.default.string
205
241
  };
206
242
  ItemEdit.defaultProps = {
207
243
  additionalOptions: [],
@@ -216,7 +252,9 @@ ItemEdit.defaultProps = {
216
252
  quizId: null,
217
253
  initialFocusId: null,
218
254
  showCalculator: false,
219
- validationErrorsFromApi: {}
255
+ validationErrorsFromApi: {},
256
+ scope: {},
257
+ rootAccountUuid: null
220
258
  };
221
259
  var _default = ItemEdit;
222
260
  exports.default = _default;