@instructure/quiz-core 21.0.1-rc.0 → 21.0.1-rc.11

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 (193) hide show
  1. package/es/banks/components/Bank/theme.js +1 -1
  2. package/es/banks/components/BankEntry/presenter.js +2 -2
  3. package/es/banks/components/BankEntry/theme.js +5 -5
  4. package/es/banks/components/BankEntryRow/styles.js +1 -0
  5. package/es/banks/components/BankEntryRow/theme.js +4 -4
  6. package/es/banks/components/Banks/theme.js +2 -2
  7. package/es/banks/components/BanksList/presenter.js +1 -1
  8. package/es/banks/components/BanksList/theme.js +4 -4
  9. package/es/banks/components/NavWrapper/theme.js +3 -3
  10. package/es/banks/components/SharingModal/presenter.js +2 -2
  11. package/es/banks/components/SharingModal/theme.js +1 -1
  12. package/es/building/components/layout/header/BuildingButtons/theme.js +1 -1
  13. package/es/building/components/resources/ActionButtons/theme.js +1 -1
  14. package/es/building/components/resources/AddToBankOptions/theme.js +2 -2
  15. package/es/building/components/resources/quiz/instructions/Instructions/theme.js +1 -1
  16. package/es/building/components/resources/quiz/title/Edit/theme.js +1 -1
  17. package/es/building/components/resources/quiz/title/Title/theme.js +3 -3
  18. package/es/building/components/resources/quizEntry/QuizEntry/theme.js +1 -1
  19. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/theme.js +3 -3
  20. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/theme.js +2 -2
  21. package/es/building/components/resources/quizEntry/QuizEntryEdit/Footer/presenter.js +2 -2
  22. package/es/building/components/resources/quizEntry/QuizEntryEdit/Header/theme.js +2 -2
  23. package/es/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +2 -2
  24. package/es/building/components/resources/quizEntry/QuizEntryShow/theme.js +5 -5
  25. package/es/common/actions/taking.js +3 -2
  26. package/es/common/components/ImportModal/ImportFileSelector/theme.js +4 -4
  27. package/es/common/components/PrintFontSizeModal/presenter.js +2 -2
  28. package/es/common/components/PrintFontSizeModal/theme.js +1 -1
  29. package/es/common/components/SDKApp/index.js +4 -4
  30. package/es/common/components/layout/header/HeaderMenuButton/theme.js +1 -1
  31. package/es/common/components/layout/header/Timer/theme.js +3 -3
  32. package/es/common/components/layout/navbar/theme.js +1 -1
  33. package/es/common/components/layout/sidebar/PositionSummary/theme.js +2 -2
  34. package/es/common/components/layout/sidebar/Sidebar/theme.js +10 -10
  35. package/es/common/components/layout/sidebar/SidebarItem/theme.js +5 -5
  36. package/es/common/components/layout/sidebar/Stimulus/Collection/theme.js +1 -1
  37. package/es/common/components/layout/sidebar/Stimulus/Summary/theme.js +2 -2
  38. package/es/common/components/layout/sidebar/Stimulus/theme.js +4 -4
  39. package/es/common/components/resources/WarningWrapper/theme.js +1 -1
  40. package/es/common/components/resources/entry/EntrySave/presenter.js +2 -2
  41. package/es/common/components/resources/positionBox/theme.js +2 -2
  42. package/es/common/components/resources/quiz/AddContent/Body/theme.js +1 -1
  43. package/es/common/components/resources/quiz/AddContent/Button/theme.js +4 -4
  44. package/es/common/components/resources/quiz/AddContent/Popover/theme.js +1 -1
  45. package/es/common/components/resources/sessionItemResult/ResultStimulus/theme.js +4 -4
  46. package/es/common/components/resources/sessionItemResult/SessionItemResult/theme.js +4 -4
  47. package/es/common/components/resources/sessionItemResult/SessionItemResultsList/theme.js +1 -1
  48. package/es/common/components/resources/stimulus/Stimulus/theme.js +1 -1
  49. package/es/common/components/resources/stimulus/StimulusEdit/theme.js +1 -1
  50. package/es/common/components/resources/stimulus/StimulusEditInfo/index.js +5 -1
  51. package/es/common/components/resources/stimulus/StimulusEditInfo/presenter.js +15 -2
  52. package/es/common/components/resources/stimulus/StimulusEditInfo/theme.js +1 -1
  53. package/es/common/components/resources/stimulus/StimulusShow/index.js +1 -1
  54. package/es/common/components/shared/Card/CardContent/theme.js +2 -2
  55. package/es/common/components/shared/Card/CardWrapper/theme.js +1 -1
  56. package/es/common/components/shared/InteractionTypes/theme.js +1 -1
  57. package/es/common/components/shared/PaginatedCollection/presenter.js +2 -2
  58. package/es/common/components/shared/PaginatedCollection/theme.js +1 -1
  59. package/es/common/components/shared/TimeUnitsInput/index.js +2 -2
  60. package/es/common/components/shared/drag_and_drop/DragAndDropZone/theme.js +5 -5
  61. package/es/common/components/shared/errors/theme.js +1 -1
  62. package/es/common/components/shared/file_selector/theme.js +2 -2
  63. package/es/common/components/shared/functionality/makeEditable.js +2 -2
  64. package/es/common/components/shared/overlay/theme.js +1 -1
  65. package/es/common/reducers/taking.js +5 -1
  66. package/es/common/selectors/taking.js +3 -0
  67. package/es/common/util/getClientIpAddress.js +35 -0
  68. package/es/common/util/serializeEvent.js +4 -2
  69. package/es/index.js +2 -3
  70. package/es/moderating/components/events/Event.js +27 -10
  71. package/es/moderating/components/events/ResponseEvent.js +24 -7
  72. package/es/moderating/components/events/SessionStartEvent.js +16 -15
  73. package/es/moderating/components/events/SessionSubmitEvent.js +42 -0
  74. package/es/moderating/components/events/theme.js +1 -1
  75. package/es/moderating/components/resources/AccommodationsModal/ExtraTimeMultiplier/index.js +2 -2
  76. package/es/moderating/components/resources/EventDetails.js +43 -0
  77. package/es/moderating/components/resources/ModerateTable/theme.js +1 -1
  78. package/es/moderating/components/resources/SessionBreachAlert.js +10 -0
  79. package/es/moderating/components/resources/util/checkIsBreach.js +28 -0
  80. package/es/moderating/components/resources/util/extractSessionData.js +20 -0
  81. package/es/reporting/components/charts/Distribution/theme.js +2 -2
  82. package/es/reporting/components/charts/Legend/theme.js +2 -2
  83. package/es/reporting/components/itemAnalysis/AnswerFrequencySummary/theme.js +8 -8
  84. package/es/reporting/components/itemAnalysis/ItemAnalysisRow/theme.js +4 -4
  85. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/theme.js +1 -1
  86. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +5 -5
  87. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/theme.js +2 -2
  88. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/theme.js +1 -1
  89. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +1 -1
  90. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
  91. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +2 -2
  92. package/es/reporting/components/resources/QuizAndItemAnalysis/presenter.js +2 -2
  93. package/es/reporting/components/resources/QuizAndItemAnalysis/theme.js +1 -1
  94. package/es/reporting/components/resources/StudentAnalysis/ReportCard/theme.js +1 -1
  95. package/es/reporting/components/resources/common/propTypes.js +14 -0
  96. package/es/taking/api/taking.js +26 -3
  97. package/lib/banks/components/Bank/theme.js +1 -1
  98. package/lib/banks/components/BankEntry/presenter.js +2 -2
  99. package/lib/banks/components/BankEntry/theme.js +5 -5
  100. package/lib/banks/components/BankEntryRow/styles.js +1 -0
  101. package/lib/banks/components/BankEntryRow/theme.js +4 -4
  102. package/lib/banks/components/Banks/theme.js +2 -2
  103. package/lib/banks/components/BanksList/presenter.js +1 -1
  104. package/lib/banks/components/BanksList/theme.js +4 -4
  105. package/lib/banks/components/NavWrapper/theme.js +3 -3
  106. package/lib/banks/components/SharingModal/presenter.js +2 -2
  107. package/lib/banks/components/SharingModal/theme.js +1 -1
  108. package/lib/building/components/layout/header/BuildingButtons/theme.js +1 -1
  109. package/lib/building/components/resources/ActionButtons/theme.js +1 -1
  110. package/lib/building/components/resources/AddToBankOptions/theme.js +2 -2
  111. package/lib/building/components/resources/quiz/instructions/Instructions/theme.js +1 -1
  112. package/lib/building/components/resources/quiz/title/Edit/theme.js +1 -1
  113. package/lib/building/components/resources/quiz/title/Title/theme.js +3 -3
  114. package/lib/building/components/resources/quizEntry/QuizEntry/theme.js +1 -1
  115. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/theme.js +3 -3
  116. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/theme.js +2 -2
  117. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Footer/presenter.js +2 -2
  118. package/lib/building/components/resources/quizEntry/QuizEntryEdit/Header/theme.js +2 -2
  119. package/lib/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +2 -2
  120. package/lib/building/components/resources/quizEntry/QuizEntryShow/theme.js +5 -5
  121. package/lib/common/actions/taking.js +3 -2
  122. package/lib/common/components/ImportModal/ImportFileSelector/theme.js +4 -4
  123. package/lib/common/components/PrintFontSizeModal/presenter.js +2 -2
  124. package/lib/common/components/PrintFontSizeModal/theme.js +1 -1
  125. package/lib/common/components/SDKApp/index.js +4 -4
  126. package/lib/common/components/layout/header/HeaderMenuButton/theme.js +1 -1
  127. package/lib/common/components/layout/header/Timer/theme.js +3 -3
  128. package/lib/common/components/layout/navbar/theme.js +1 -1
  129. package/lib/common/components/layout/sidebar/PositionSummary/theme.js +2 -2
  130. package/lib/common/components/layout/sidebar/Sidebar/theme.js +10 -10
  131. package/lib/common/components/layout/sidebar/SidebarItem/theme.js +5 -5
  132. package/lib/common/components/layout/sidebar/Stimulus/Collection/theme.js +1 -1
  133. package/lib/common/components/layout/sidebar/Stimulus/Summary/theme.js +2 -2
  134. package/lib/common/components/layout/sidebar/Stimulus/theme.js +4 -4
  135. package/lib/common/components/resources/WarningWrapper/theme.js +1 -1
  136. package/lib/common/components/resources/entry/EntrySave/presenter.js +2 -2
  137. package/lib/common/components/resources/positionBox/theme.js +2 -2
  138. package/lib/common/components/resources/quiz/AddContent/Body/theme.js +1 -1
  139. package/lib/common/components/resources/quiz/AddContent/Button/theme.js +4 -4
  140. package/lib/common/components/resources/quiz/AddContent/Popover/theme.js +1 -1
  141. package/lib/common/components/resources/sessionItemResult/ResultStimulus/theme.js +4 -4
  142. package/lib/common/components/resources/sessionItemResult/SessionItemResult/theme.js +4 -4
  143. package/lib/common/components/resources/sessionItemResult/SessionItemResultsList/theme.js +1 -1
  144. package/lib/common/components/resources/stimulus/Stimulus/theme.js +1 -1
  145. package/lib/common/components/resources/stimulus/StimulusEdit/theme.js +1 -1
  146. package/lib/common/components/resources/stimulus/StimulusEditInfo/index.js +5 -1
  147. package/lib/common/components/resources/stimulus/StimulusEditInfo/presenter.js +15 -2
  148. package/lib/common/components/resources/stimulus/StimulusEditInfo/theme.js +1 -1
  149. package/lib/common/components/resources/stimulus/StimulusShow/index.js +1 -1
  150. package/lib/common/components/shared/Card/CardContent/theme.js +2 -2
  151. package/lib/common/components/shared/Card/CardWrapper/theme.js +1 -1
  152. package/lib/common/components/shared/InteractionTypes/theme.js +1 -1
  153. package/lib/common/components/shared/PaginatedCollection/presenter.js +2 -2
  154. package/lib/common/components/shared/PaginatedCollection/theme.js +1 -1
  155. package/lib/common/components/shared/TimeUnitsInput/index.js +2 -2
  156. package/lib/common/components/shared/drag_and_drop/DragAndDropZone/theme.js +5 -5
  157. package/lib/common/components/shared/errors/theme.js +1 -1
  158. package/lib/common/components/shared/file_selector/theme.js +2 -2
  159. package/lib/common/components/shared/functionality/makeEditable.js +2 -2
  160. package/lib/common/components/shared/overlay/theme.js +1 -1
  161. package/lib/common/reducers/taking.js +5 -1
  162. package/lib/common/selectors/taking.js +5 -1
  163. package/lib/common/util/getClientIpAddress.js +43 -0
  164. package/lib/common/util/serializeEvent.js +3 -1
  165. package/lib/index.js +15 -0
  166. package/lib/moderating/components/events/Event.js +26 -9
  167. package/lib/moderating/components/events/ResponseEvent.js +25 -7
  168. package/lib/moderating/components/events/SessionStartEvent.js +16 -15
  169. package/lib/moderating/components/events/SessionSubmitEvent.js +52 -0
  170. package/lib/moderating/components/events/theme.js +1 -1
  171. package/lib/moderating/components/resources/AccommodationsModal/ExtraTimeMultiplier/index.js +2 -2
  172. package/lib/moderating/components/resources/EventDetails.js +51 -0
  173. package/lib/moderating/components/resources/ModerateTable/theme.js +1 -1
  174. package/lib/moderating/components/resources/SessionBreachAlert.js +18 -0
  175. package/lib/moderating/components/resources/util/checkIsBreach.js +36 -0
  176. package/lib/moderating/components/resources/util/extractSessionData.js +28 -0
  177. package/lib/reporting/components/charts/Distribution/theme.js +2 -2
  178. package/lib/reporting/components/charts/Legend/theme.js +2 -2
  179. package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/theme.js +8 -8
  180. package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/theme.js +4 -4
  181. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/ChoiceTypeTableRow/theme.js +1 -1
  182. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +5 -5
  183. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/theme.js +2 -2
  184. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/BlankIcon/theme.js +1 -1
  185. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +1 -1
  186. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
  187. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +2 -2
  188. package/lib/reporting/components/resources/QuizAndItemAnalysis/presenter.js +2 -2
  189. package/lib/reporting/components/resources/QuizAndItemAnalysis/theme.js +1 -1
  190. package/lib/reporting/components/resources/StudentAnalysis/ReportCard/theme.js +1 -1
  191. package/lib/reporting/components/resources/common/propTypes.js +18 -2
  192. package/lib/taking/api/taking.js +26 -3
  193. package/package.json +55 -55
@@ -3,11 +3,11 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
3
  import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React, { Component } from 'react';
6
- import ImmutablePropTypes from 'react-immutable-proptypes';
7
- import platform from 'platform';
6
+ import { EventDetails } from "../resources/EventDetails.js";
8
7
  import { ToggleDetails } from '@instructure/ui-toggle-details';
9
- import { Table } from '@instructure/ui-table';
10
8
  import t from '@instructure/quiz-i18n/es/format-message';
9
+ import { Text } from '@instructure/ui-text';
10
+ import { sessionValidationErrorsPropType, eventDataPropType } from "../../../reporting/components/resources/common/propTypes.js";
11
11
  export var SessionStartEvent = /*#__PURE__*/function (_Component) {
12
12
  _inherits(SessionStartEvent, _Component);
13
13
  var _super = _createSuper(SessionStartEvent);
@@ -18,24 +18,25 @@ export var SessionStartEvent = /*#__PURE__*/function (_Component) {
18
18
  _createClass(SessionStartEvent, [{
19
19
  key: "render",
20
20
  value: function render() {
21
- var event = this.props.event;
22
- var userPlatform = platform.parse(event.getIn(['eventData', 'userAgent']));
21
+ var _this$props = this.props,
22
+ validationErrors = _this$props.validationErrors,
23
+ currentEventData = _this$props.currentEventData;
24
+ var summary = /*#__PURE__*/React.createElement(Text, {
25
+ color: validationErrors.isBreach ? 'danger' : 'primary'
26
+ }, t('Session started'));
23
27
  return /*#__PURE__*/React.createElement(ToggleDetails, {
24
- summary: t('Session started')
25
- }, /*#__PURE__*/React.createElement(Table, {
26
- caption: t('System details')
27
- }, /*#__PURE__*/React.createElement(Table.Head, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.ColHeader, {
28
- id: "system-details-attribute"
29
- }, t('attribute')), /*#__PURE__*/React.createElement(Table.ColHeader, {
30
- id: "system-details-value"
31
- }, t('value')))), /*#__PURE__*/React.createElement(Table.Body, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, t('Browser')), /*#__PURE__*/React.createElement(Table.Cell, null, // eslint-disable-next-line react/jsx-no-literals
32
- "".concat(userPlatform.name, " ").concat(userPlatform.version))), /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, t('Operating System')), /*#__PURE__*/React.createElement(Table.Cell, null, userPlatform.os.toString())))));
28
+ summary: summary
29
+ }, /*#__PURE__*/React.createElement(EventDetails, {
30
+ currentEventData: currentEventData,
31
+ validationErrors: validationErrors
32
+ }));
33
33
  }
34
34
  }]);
35
35
  SessionStartEvent.displayName = "SessionStartEvent";
36
36
  return SessionStartEvent;
37
37
  }(Component);
38
38
  SessionStartEvent.propTypes = {
39
- event: ImmutablePropTypes.record.isRequired
39
+ validationErrors: sessionValidationErrorsPropType,
40
+ currentEventData: eventDataPropType
40
41
  };
41
42
  export default SessionStartEvent;
@@ -0,0 +1,42 @@
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
+ import React, { Component } from 'react';
6
+ import t from '@instructure/quiz-i18n/es/format-message';
7
+ import { EventDetails } from "../resources/EventDetails.js";
8
+ import { ToggleDetails } from '@instructure/ui-toggle-details';
9
+ import { Text } from '@instructure/ui-text';
10
+ import { sessionValidationErrorsPropType, eventDataPropType } from "../../../reporting/components/resources/common/propTypes.js";
11
+ export var SessionSubmitEvent = /*#__PURE__*/function (_Component) {
12
+ _inherits(SessionSubmitEvent, _Component);
13
+ var _super = _createSuper(SessionSubmitEvent);
14
+ function SessionSubmitEvent() {
15
+ _classCallCheck(this, SessionSubmitEvent);
16
+ return _super.apply(this, arguments);
17
+ }
18
+ _createClass(SessionSubmitEvent, [{
19
+ key: "render",
20
+ value: function render() {
21
+ var _this$props = this.props,
22
+ validationErrors = _this$props.validationErrors,
23
+ currentEventData = _this$props.currentEventData;
24
+ var summary = /*#__PURE__*/React.createElement(Text, {
25
+ color: validationErrors.isBreach ? 'danger' : 'primary'
26
+ }, t('Session submitted'));
27
+ return /*#__PURE__*/React.createElement(ToggleDetails, {
28
+ summary: summary
29
+ }, /*#__PURE__*/React.createElement(EventDetails, {
30
+ currentEventData: currentEventData,
31
+ validationErrors: validationErrors
32
+ }));
33
+ }
34
+ }]);
35
+ SessionSubmitEvent.displayName = "SessionSubmitEvent";
36
+ return SessionSubmitEvent;
37
+ }(Component);
38
+ SessionSubmitEvent.propTypes = {
39
+ validationErrors: sessionValidationErrorsPropType,
40
+ currentEventData: eventDataPropType
41
+ };
42
+ export default SessionSubmitEvent;
@@ -6,7 +6,7 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
6
6
  embeddedImageMargin: spacing.xSmall,
7
7
  embeddedImagePadding: spacing.small,
8
8
  mediaToggleMargin: spacing.xSmall,
9
- mediaToggleColor: colors.contrasts.grey1214
9
+ mediaToggleColor: colors.tiara
10
10
  };
11
11
  };
12
12
  export default generateComponentTheme;
@@ -83,8 +83,8 @@ var ExtraTimeMultiplier = /*#__PURE__*/function (_withI18nSupport) {
83
83
  return _this;
84
84
  }
85
85
  _createClass(ExtraTimeMultiplier, [{
86
- key: "componentWillMount",
87
- value: function componentWillMount() {
86
+ key: "UNSAFE_componentWillMount",
87
+ value: function UNSAFE_componentWillMount() {
88
88
  var multiplierValue = Math.max(this.props.timerMultiplierValue, this.props.minMultiplier);
89
89
  var multiplierValueString = this.formatDecimal2FractionDigits(multiplierValue);
90
90
  this.setState({
@@ -0,0 +1,43 @@
1
+ import { Table } from '@instructure/ui-table';
2
+ import { Text } from '@instructure/ui-text';
3
+ import { IconButton } from '@instructure/ui-buttons';
4
+ import t from '@instructure/quiz-i18n/es/format-message';
5
+ import React from 'react';
6
+ import { SessionBreachAlert } from "./SessionBreachAlert.js";
7
+ import { IconInfoLine } from '@instructure/ui-icons';
8
+ import { Tooltip } from '@instructure/ui-tooltip';
9
+ var _ref2 = /*#__PURE__*/React.createElement(SessionBreachAlert, null);
10
+ export var EventDetails = function EventDetails(_ref) {
11
+ var currentEventData = _ref.currentEventData,
12
+ validationErrors = _ref.validationErrors,
13
+ _ref$answerValue = _ref.answerValue,
14
+ answerValue = _ref$answerValue === void 0 ? null : _ref$answerValue;
15
+ var eventTimeString = "".concat(t('Event time'), ": ").concat(currentEventData.eventDate);
16
+ var renderTooltip = function renderTooltip(message) {
17
+ return /*#__PURE__*/React.createElement(Tooltip, {
18
+ renderTip: message,
19
+ placement: "end",
20
+ on: ['click', 'hover', 'focus']
21
+ }, /*#__PURE__*/React.createElement(IconButton, {
22
+ screenReaderLabel: message,
23
+ renderIcon: IconInfoLine,
24
+ withBackground: false,
25
+ withBorder: false
26
+ }));
27
+ };
28
+ return /*#__PURE__*/React.createElement(React.Fragment, null, validationErrors.isBreach && _ref2, /*#__PURE__*/React.createElement("h4", null, eventTimeString), /*#__PURE__*/React.createElement(Table, {
29
+ caption: t('System details')
30
+ }, /*#__PURE__*/React.createElement(Table.Head, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.ColHeader, {
31
+ id: "system-details-attribute"
32
+ }, t('Attribute')), /*#__PURE__*/React.createElement(Table.ColHeader, {
33
+ id: "system-details-value"
34
+ }, t('Value')))), /*#__PURE__*/React.createElement(Table.Body, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, t('Client IP address')), /*#__PURE__*/React.createElement(Table.Cell, null, /*#__PURE__*/React.createElement(Text, {
35
+ color: validationErrors.ipAddress ? 'danger' : 'primary'
36
+ }, currentEventData.ipAddress), validationErrors.ipAddress && renderTooltip(validationErrors.ipAddress))), /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, t('Browser session ID')), /*#__PURE__*/React.createElement(Table.Cell, null, /*#__PURE__*/React.createElement(Text, {
37
+ color: validationErrors.browserSessionID ? 'danger' : 'primary'
38
+ }, currentEventData.browserSessionID), validationErrors.browserSessionID && renderTooltip(validationErrors.browserSessionID))), /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, t('Browser')), /*#__PURE__*/React.createElement(Table.Cell, null, /*#__PURE__*/React.createElement(Text, {
39
+ color: validationErrors.browserString ? 'danger' : 'primary'
40
+ }, currentEventData.browserString), validationErrors.browserString && renderTooltip(validationErrors.browserString))), /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, t('Operating System')), /*#__PURE__*/React.createElement(Table.Cell, null, /*#__PURE__*/React.createElement(Text, {
41
+ color: validationErrors.userPlatform ? 'danger' : 'primary'
42
+ }, currentEventData.userPlatform), validationErrors.userPlatform && renderTooltip(validationErrors.userPlatform))), answerValue && /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, t('Answer value')), /*#__PURE__*/React.createElement(Table.Cell, null, answerValue)))));
43
+ };
@@ -3,7 +3,7 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
3
3
  colors = _ref.colors;
4
4
  return {
5
5
  emptyTextMargin: spacing.small,
6
- pageBackgroundColor: colors.contrasts.white1010
6
+ pageBackgroundColor: colors.white
7
7
  };
8
8
  };
9
9
  export default generateComponentTheme;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { Alert } from '@instructure/ui-alerts';
3
+ import t from '@instructure/quiz-i18n/es/format-message';
4
+ var _ref = /*#__PURE__*/React.createElement("br", null);
5
+ export var SessionBreachAlert = function SessionBreachAlert() {
6
+ return /*#__PURE__*/React.createElement(Alert, {
7
+ variant: "warning",
8
+ margin: "small"
9
+ }, t('Potential breach: This Quiz appears to have been accessed from multiple devices or browsers.'), _ref, t('Review the activity log and take appropriate action.'));
10
+ };
@@ -0,0 +1,28 @@
1
+ import t from '@instructure/quiz-i18n/es/format-message';
2
+ export var checkIsBreach = function checkIsBreach(firstEventData, currentEventData) {
3
+ var result = {
4
+ isBreach: false
5
+ };
6
+ var checks = [{
7
+ key: 'ipAddress',
8
+ message: t('Client IP address is different from initial address')
9
+ }, {
10
+ key: 'browserSessionID',
11
+ message: t('Browser session ID is different from initial id')
12
+ }, {
13
+ key: 'browserString',
14
+ message: t('Browser is different from initial browser')
15
+ }, {
16
+ key: 'userPlatform',
17
+ message: t('Operating system is different from initial system')
18
+ }];
19
+ checks.forEach(function (_ref) {
20
+ var key = _ref.key,
21
+ message = _ref.message;
22
+ if (currentEventData[key] !== firstEventData[key]) {
23
+ result.isBreach = true;
24
+ result[key] = message;
25
+ }
26
+ });
27
+ return result;
28
+ };
@@ -0,0 +1,20 @@
1
+ import platform from 'platform';
2
+ import { formatDateTimeSeconds } from '@instructure/quiz-i18n';
3
+ export var extractSessionData = function extractSessionData(sourceData) {
4
+ if (!sourceData) return {
5
+ ipAddress: '',
6
+ browserSessionID: '',
7
+ eventDate: '',
8
+ browserString: '',
9
+ userPlatform: ''
10
+ };
11
+ var clientTimestamp = sourceData.getIn(['eventData', 'clientTimestamp']);
12
+ var userPlatform = platform.parse(sourceData.getIn(['eventData', 'userAgent']));
13
+ return {
14
+ ipAddress: sourceData.getIn(['eventData', 'ipAddress']),
15
+ browserSessionID: sourceData.getIn(['eventData', 'browserSessionId']),
16
+ eventDate: clientTimestamp ? formatDateTimeSeconds(clientTimestamp) : '',
17
+ browserString: "".concat(userPlatform.name, " ").concat(userPlatform.version),
18
+ userPlatform: userPlatform.os.toString()
19
+ };
20
+ };
@@ -2,8 +2,8 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
2
2
  var colors = _ref.colors,
3
3
  typography = _ref.typography;
4
4
  return {
5
- barFillColor: colors.contrasts.blue4570,
6
- barStarFillColor: colors.contrasts.orange4570,
5
+ barFillColor: colors.electric,
6
+ barStarFillColor: colors.fire,
7
7
  barLabelColor: colors.textDarkest,
8
8
  barLabelFontFamily: typography.fontFamily,
9
9
  barLabelFontSize: typography.fontSizeSmall,
@@ -5,11 +5,11 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
5
5
  typography = _ref.typography;
6
6
  return {
7
7
  containerBorderWidth: borders.widthSmall,
8
- containerBorderColor: colors.contrasts.grey1214,
8
+ containerBorderColor: colors.tiara,
9
9
  seriesContainerMargin: spacing.small,
10
10
  seriesContainerRowMargin: spacing.medium,
11
11
  seriesSwatchMargin: spacing.small,
12
- seriesSwatchBackgroundColor: colors.contrasts.blue4570,
12
+ seriesSwatchBackgroundColor: colors.electric,
13
13
  seriesLabelFontFamily: typography.fontFamily,
14
14
  seriesLabelFontSize: typography.fontSizeXSmall,
15
15
  seriesLabelColor: colors.textDarkest
@@ -6,20 +6,20 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
6
6
  borders = _ref.borders,
7
7
  transitions = _ref.transitions;
8
8
  return {
9
- contentCellBorderColor: colors.contrasts.grey1214,
9
+ contentCellBorderColor: colors.tiara,
10
10
  answerRowCellPadding: spacing.xSmall,
11
- answerRowCorrectBackgroundColor: colors.contrasts.white1010,
12
- answerRowAnswerIconColor: colors.contrasts.green4570,
11
+ answerRowCorrectBackgroundColor: colors.white,
12
+ answerRowAnswerIconColor: colors.shamrock,
13
13
  answerRowCorrectTextFieldFontWeight: typography.fontWeightBold,
14
- answerRowCorrectBarBackgroundColor: colors.contrasts.green4570,
14
+ answerRowCorrectBarBackgroundColor: colors.shamrock,
15
15
  answerIconFontSize: typography.fontSizeXSmall,
16
- answerIconColor: colors.contrasts.grey4570,
16
+ answerIconColor: colors.ash,
17
17
  answerTextfieldFontWeight: typography.fontWeightNormal,
18
- respondentLinkColor: colors.contrasts.grey4570,
19
- respondentLinkPresentColor: colors.contrasts.blue4570,
18
+ respondentLinkColor: colors.ash,
19
+ respondentLinkPresentColor: colors.electric,
20
20
  answerRatioPaddingLeft: spacing.small,
21
21
  barMinWidth: borders.widthSmall,
22
- barBackgroundColor: colors.contrasts.grey125125,
22
+ barBackgroundColor: colors.licorice,
23
23
  phoneBreakPoint: "max-width: ".concat(breakpoints.medium),
24
24
  barTransition: "width ".concat(transitions.duration)
25
25
  };
@@ -6,20 +6,20 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
6
6
  return {
7
7
  itemAnalysisRowPadding: spacing.small,
8
8
  itemAnalysisRowMargin: spacing.small,
9
- headerTextColor: colors.contrasts.grey4570,
9
+ headerTextColor: colors.ash,
10
10
  headerTextFontSize: typography.fontSizeXSmall,
11
11
  metricNoteFontSize: typography.fontSizeMedium,
12
- metricNoteColor: colors.contrasts.grey4570,
12
+ metricNoteColor: colors.ash,
13
13
  metricsRowLowerPadding: spacing.large,
14
14
  stemFontSize: typography.fontSizeXSmall,
15
15
  stemLineHeight: typography.lineHeight,
16
16
  stemMargin: spacing.small,
17
17
  emptyTextPadding: spacing.small,
18
- emptyTextColor: colors.contrasts.grey4570,
18
+ emptyTextColor: colors.ash,
19
19
  answerDistributionPadding: spacing.small,
20
20
  answerDistributionChartPadding: spacing.small,
21
21
  answerDistributionLegendPadding: spacing.small,
22
- answerDistributionSwatchColor: colors.contrasts.blue4570,
22
+ answerDistributionSwatchColor: colors.electric,
23
23
  phoneBreakPoint: "max-width: ".concat(breakpoints.medium)
24
24
  };
25
25
  };
@@ -1,7 +1,7 @@
1
1
  var generateComponentTheme = function generateComponentTheme(_ref) {
2
2
  var colors = _ref.colors;
3
3
  return {
4
- colorGreen: colors.contrasts.green4570,
4
+ colorGreen: colors.shamrock,
5
5
  cellPadding: '0.75rem 0.75rem'
6
6
  };
7
7
  };
@@ -1,11 +1,11 @@
1
1
  var generateComponentTheme = function generateComponentTheme(_ref) {
2
2
  var colors = _ref.colors;
3
3
  return {
4
- colorGreen: colors.contrasts.green4570,
5
- colorBlue: colors.contrasts.blue4570,
6
- colorRed: colors.contrasts.red4570,
7
- colorGrey: colors.contrasts.grey4570,
8
- colorHeaderBottomBorder: colors.contrasts.grey1214,
4
+ colorGreen: colors.shamrock,
5
+ colorBlue: colors.brand,
6
+ colorRed: colors.crimson,
7
+ colorGrey: colors.ash,
8
+ colorHeaderBottomBorder: colors.tiara,
9
9
  cellPadding: '13.5px 13.5px;'
10
10
  };
11
11
  };
@@ -3,8 +3,8 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
3
3
  colors = _ref.colors;
4
4
  return {
5
5
  tableBottomPadding: spacing.medium,
6
- colorGreen: colors.contrasts.green4570,
7
- colorGray: colors.contrasts.grey1214,
6
+ colorGreen: colors.shamrock,
7
+ colorGray: colors.tiara,
8
8
  cellPadding: '0.75rem 0.75rem'
9
9
  };
10
10
  };
@@ -1,7 +1,7 @@
1
1
  var generateComponentTheme = function generateComponentTheme(_ref) {
2
2
  var colors = _ref.colors;
3
3
  return {
4
- blankBorderColor: colors.contrasts.grey1214,
4
+ blankBorderColor: colors.tiara,
5
5
  blankBorderRadius: '14px',
6
6
  blankMinWidth: '20px',
7
7
  blankHeight: '20px'
@@ -9,7 +9,7 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
9
9
  viewPaddingRight: spacing.xxSmall,
10
10
  metricNumberContextFontSize: typography.fontSizeMedium,
11
11
  metricNumberContextFontWeight: typography.fontWeightNormal,
12
- blankBorderColor: colors.contrasts.grey1214,
12
+ blankBorderColor: colors.tiara,
13
13
  blankBorderRadius: '14px',
14
14
  blankMinWidth: '20px',
15
15
  blankHeight: '20px'
@@ -7,7 +7,7 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
7
7
  cardWidth: '19.5rem',
8
8
  cardPadding: spacing.medium,
9
9
  cardMargin: spacing.xSmall,
10
- quizSummaryBorderBottomColor: colors.contrasts.grey1214
10
+ quizSummaryBorderBottomColor: colors.tiara
11
11
  };
12
12
  };
13
13
  export default generateComponentTheme;
@@ -3,9 +3,9 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
3
3
  spacing = _ref.spacing,
4
4
  typography = _ref.typography;
5
5
  return {
6
- legendRectFillColor: colors.contrasts.blue4570,
6
+ legendRectFillColor: colors.electric,
7
7
  legendPadding: spacing.small,
8
- legendBorderColor: colors.contrasts.grey4570,
8
+ legendBorderColor: colors.ash,
9
9
  legendFontSize: typography.fontSizeXSmall,
10
10
  legendMargin: spacing.medium
11
11
  };
@@ -40,8 +40,8 @@ export var QuizAndItemAnalysis = (_dec = withStyleOverrides(generateStyle, gener
40
40
  this.getAnalyses(this.props.activeQuizId);
41
41
  }
42
42
  }, {
43
- key: "componentWillUpdate",
44
- value: function componentWillUpdate(nextProps) {
43
+ key: "UNSAFE_componentWillUpdate",
44
+ value: function UNSAFE_componentWillUpdate(nextProps) {
45
45
  if (this.props.activeQuizId !== nextProps.activeQuizId) {
46
46
  this.getAnalyses(nextProps.activeQuizId);
47
47
  }
@@ -8,7 +8,7 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
8
8
  titleMarginBottom: spacing.xSmall,
9
9
  emptyTextPadding: spacing.small,
10
10
  emptyTextFontSize: typography.fontSizeLarge,
11
- emptyTextColor: colors.contrasts.grey4570
11
+ emptyTextColor: colors.ash
12
12
  };
13
13
  };
14
14
  export default generateComponentTheme;
@@ -9,6 +9,6 @@ export var generateComponentTheme = function generateComponentTheme(_ref) {
9
9
  cardWidth: '19.5rem',
10
10
  cardPadding: spacing.medium,
11
11
  cardMargin: spacing.xSmall,
12
- quizSummaryBorderBottomColor: colors.contrasts.grey1214
12
+ quizSummaryBorderBottomColor: colors.tiara
13
13
  };
14
14
  };
@@ -163,4 +163,18 @@ export var afsFlags = PropTypes.shape({
163
163
  numericEnabled: PropTypes.bool.isRequired,
164
164
  essayEnabled: PropTypes.bool.isRequired,
165
165
  fileUploadEnabled: PropTypes.bool.isRequired
166
+ });
167
+ export var sessionValidationErrorsPropType = PropTypes.shape({
168
+ isBreach: PropTypes.bool,
169
+ ipAddress: PropTypes.string,
170
+ browserSessionID: PropTypes.string,
171
+ browserString: PropTypes.string,
172
+ userPlatform: PropTypes.string
173
+ });
174
+ export var eventDataPropType = PropTypes.shape({
175
+ ipAddress: PropTypes.string,
176
+ browserSessionID: PropTypes.string,
177
+ eventDate: PropTypes.string,
178
+ browserString: PropTypes.string,
179
+ userPlatform: PropTypes.string
166
180
  });
@@ -1,3 +1,5 @@
1
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
1
3
  // =============================================
2
4
  // =============================================
3
5
 
@@ -25,6 +27,7 @@ import { getSessionItems, handleQuizSessionFetch } from "../../common/actions/qu
25
27
  import { handleSessionItemsResponse, handleResumeDataResponse, handleQuizSessionResponse } from "../../common/api/callHandlers.js";
26
28
  import * as modalActions from "../../common/actions/modal.js";
27
29
  import { backtrackingNextQuestion, sessionStartOrResumeEvent, setCurrentSessionItemPosition, submitQuizSessionEvent, updateQuizSubmitFlag, updateQuizSessionStatusOnPageLoad, updateTimerInfo } from "../../common/actions/taking.js";
30
+ import { getClientIpAddress } from "../../common/util/getClientIpAddress.js";
28
31
  var getQuizSessionConfig = function getQuizSessionConfig(quizSession) {
29
32
  // these should be handled by existing functions
30
33
  var oneQuestionAtATime = quizSession.isOneQuestionAtATime();
@@ -144,9 +147,29 @@ export function newQuizTakingSession(quizSessionId) {
144
147
  };
145
148
  }
146
149
  export function onQuizSessionReadyForTaking(quizSession) {
147
- return function (dispatch) {
148
- dispatch([makeSessionItemCall(quizSession), getResumeData(quizSession.id), sessionStartOrResumeEvent(navigator.userAgent), updateQuizSessionStatusOnPageLoad(quizSession.status)]);
149
- };
150
+ return /*#__PURE__*/function () {
151
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch) {
152
+ var ipAddress;
153
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
154
+ while (1) {
155
+ switch (_context.prev = _context.next) {
156
+ case 0:
157
+ _context.next = 2;
158
+ return getClientIpAddress(quizSession.id);
159
+ case 2:
160
+ ipAddress = _context.sent;
161
+ dispatch([makeSessionItemCall(quizSession), getResumeData(quizSession.id), sessionStartOrResumeEvent(navigator.userAgent, ipAddress), updateQuizSessionStatusOnPageLoad(quizSession.status)]);
162
+ case 4:
163
+ case "end":
164
+ return _context.stop();
165
+ }
166
+ }
167
+ }, _callee);
168
+ }));
169
+ return function (_x) {
170
+ return _ref.apply(this, arguments);
171
+ };
172
+ }();
150
173
  }
151
174
 
152
175
  // ====================================
@@ -9,7 +9,7 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
9
9
  colors = _ref.colors,
10
10
  breakpoints = _ref.breakpoints;
11
11
  return {
12
- contentBackgroundColor: colors.contrasts.white1010,
12
+ contentBackgroundColor: colors.white,
13
13
  contentPaddingTopBottom: spacing.medium,
14
14
  contentPaddingLeftRight: spacing.medium,
15
15
  breadCrumbMarginBottom: spacing.large,
@@ -219,8 +219,8 @@ var BankEntry = (_dec = (0, _quizCommon.withStyleOverrides)(_styles.default, _th
219
219
  this.props.setShouldClone(false);
220
220
  }
221
221
  }, {
222
- key: "componentWillMount",
223
- value: function componentWillMount() {
222
+ key: "UNSAFE_componentWillMount",
223
+ value: function UNSAFE_componentWillMount() {
224
224
  this.props.setShouldClone(false);
225
225
  }
226
226
  }, {
@@ -10,17 +10,17 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
10
10
  typography = _ref.typography,
11
11
  borders = _ref.borders;
12
12
  return {
13
- contentBackgroundColor: colors.contrasts.white1010,
13
+ contentBackgroundColor: colors.white,
14
14
  contentPaddingTopBottom: 0,
15
15
  contentPaddingLeftRight: 0,
16
16
  breadCrumbMarginBottom: spacing.large,
17
17
  entryRowMargin: spacing.small,
18
- headerRowColor: colors.contrasts.grey4570,
18
+ headerRowColor: colors.ash,
19
19
  headerRowPadding: spacing.small,
20
20
  headerTextFontSize: typography.fontSizeSmall,
21
21
  leftHeaderMargin: spacing.small,
22
- headerBackgroundColor: colors.contrasts.grey1111,
23
- headerColor: colors.contrasts.grey125125,
22
+ headerBackgroundColor: colors.porcelain,
23
+ headerColor: colors.licorice,
24
24
  headerPaddingTopBottom: spacing.xSmall,
25
25
  headerPaddingLeftRight: spacing.small,
26
26
  footerPaddingBottom: spacing.xSmall,
@@ -28,7 +28,7 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
28
28
  rightHeaderPaddingLeft: spacing.xSmall,
29
29
  rightFooterPaddingLeftRight: spacing.small,
30
30
  entryEditBorderWidth: borders.widthSmall,
31
- entryEditBorderColor: colors.contrasts.grey1214
31
+ entryEditBorderColor: colors.tiara
32
32
  };
33
33
  };
34
34
  var _default = generateComponentTheme;
@@ -38,6 +38,7 @@ var generateStyle = function generateStyle(componentTheme) {
38
38
  fontSize: componentTheme.headerTextFontSize
39
39
  },
40
40
  stem: {
41
+ overflowX: 'auto',
41
42
  fontSize: componentTheme.stemFontSize,
42
43
  lineHeight: componentTheme.stemLineHeight,
43
44
  '& p': {
@@ -11,18 +11,18 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
11
11
  typography = _ref.typography;
12
12
  return {
13
13
  entryDetailPadding: spacing.small,
14
- headerRowColor: colors.contrasts.grey4570,
14
+ headerRowColor: colors.ash,
15
15
  buttonsZIndex: '3333',
16
16
  expandButtonContainerBorderWidth: borders.widthMedium,
17
- expandButtonContainerBorderColor: colors.contrasts.grey1214,
17
+ expandButtonContainerBorderColor: colors.tiara,
18
18
  addButtonMargin: spacing.small,
19
- headerTextColor: colors.contrasts.grey4570,
19
+ headerTextColor: colors.ash,
20
20
  headerTextFontSize: typography.fontSizeXSmall,
21
21
  stemFontSize: typography.fontSizeMedium,
22
22
  stemLineHeight: typography.lineHeight,
23
23
  footerPadding: spacing.medium,
24
24
  footerBorderWidth: borders.widthSmall,
25
- footerBorderColor: colors.contrasts.grey1214,
25
+ footerBorderColor: colors.tiara,
26
26
  footerFontSize: typography.fontSizeXSmall,
27
27
  deletePrefaceMargin: spacing.xxSmall
28
28
  };
@@ -9,13 +9,13 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
9
9
  spacing = _ref.spacing,
10
10
  borders = _ref.borders;
11
11
  return {
12
- contentBackgroundColor: colors.contrasts.white1010,
12
+ contentBackgroundColor: colors.white,
13
13
  contentPaddingTopBottom: spacing.medium,
14
14
  contentPaddingLeftRight: spacing.xLarge,
15
15
  breadCrumbMarginBottom: spacing.large,
16
16
  headerPaddingBottom: spacing.large,
17
17
  headerBorderWidth: borders.widthSmall,
18
- headerBorderColor: colors.contrasts.grey1214
18
+ headerBorderColor: colors.tiara
19
19
  };
20
20
  };
21
21
  var _default = generateComponentTheme;
@@ -454,7 +454,7 @@ var BanksList = (_dec = (0, _quizCommon.withStyleOverrides)(_styles.default, _th
454
454
  }, (0, _emotion.jsx)(_uiTable.Table.Row, null, this.renderTableSortHeader('name', (0, _formatMessage.default)('Name')), this.renderTableSortHeader('updated_at', (0, _formatMessage.default)('Updated')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
455
455
  id: "header-num-questions",
456
456
  width: "1"
457
- }, (0, _formatMessage.default)('Questions')), this.renderTableSortHeader('last_used', (0, _formatMessage.default)('Last Used')), this.renderTableSortHeader('created_at', (0, _formatMessage.default)('Created')), !this.props.isCompact && (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
457
+ }, (0, _formatMessage.default)('Questions')), this.renderTableSortHeader('last_used', (0, _formatMessage.default)('Last Used')), this.renderTableSortHeader('created_at', (0, _formatMessage.default)('Created')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
458
458
  id: "header-option-links",
459
459
  width: "1"
460
460
  }, (0, _emotion.jsx)(_uiA11yContent.ScreenReaderContent, null, (0, _formatMessage.default)('Bank option links'))))), (0, _emotion.jsx)(_uiTable.Table.Body, null, (this.props.banks.toArray() || []).map(function (bank) {
@@ -11,13 +11,13 @@ var generateComponentTheme = function generateComponentTheme(_ref) {
11
11
  spacing = _ref.spacing;
12
12
  return {
13
13
  bankRowBorderWidth: borders.widthSmall,
14
- bankRowBorderColor: colors.contrasts.grey1214,
14
+ bankRowBorderColor: colors.tiara,
15
15
  bankInfoMargin: spacing.small,
16
16
  bankTitleFontSize: typography.fontSizeSmall,
17
17
  bankTitlePadding: spacing.xSmall,
18
- bankTitleLinkColor: colors.contrasts.grey125125,
19
- bankTitleLinkHoverColor: colors.contrasts.grey125125,
20
- bankDetailsColor: colors.contrasts.grey4570,
18
+ bankTitleLinkColor: colors.licorice,
19
+ bankTitleLinkHoverColor: colors.licorice,
20
+ bankDetailsColor: colors.ash,
21
21
  bankDetailsFontSize: typography.fontSizeXSmall,
22
22
  bankOptionsMargin: spacing.small,
23
23
  BankOptionIconMargin: spacing.xSmall,