@instructure/quiz-core 17.34.1-rc.0 → 17.34.1-rc.12

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.
@@ -222,9 +222,10 @@ export var SharingModalPresenter = (_dec = themeable(theme, styles), _dec(_class
222
222
  });
223
223
  var removedNewEntity = newEntitiesIndex > -1;
224
224
  var newShares = removedNewEntity ? prevState.shares.delete(sharesIndex) : prevState.shares.setIn([sharesIndex, 'permission'], permission);
225
+ var newEntities = removedNewEntity ? prevState.newEntities.delete(newEntitiesIndex) : prevState.newEntities;
225
226
  return {
226
227
  shares: newShares,
227
- newEntities: prevState.newEntities.delete(newEntitiesIndex),
228
+ newEntities: newEntities,
228
229
  entitiesWithChangedPermission: Object.assign({}, prevState.entitiesWithChangedPermission, _defineProperty({}, id, permission))
229
230
  };
230
231
  }, _this.updateEntitiesCount);
@@ -179,7 +179,7 @@ export var DeleteStimulusModal = (_dec = themeable(theme, styles), _dec(_class =
179
179
  return /*#__PURE__*/React.createElement(Button, {
180
180
  onClick: this.closeAction,
181
181
  margin: XSMALL_SIDE_MARGIN
182
- }, t('Cancel'));
182
+ }, t('Keep Stimulus'));
183
183
  }
184
184
  }, {
185
185
  key: "doneButton",
@@ -194,7 +194,7 @@ export var DeleteStimulusModal = (_dec = themeable(theme, styles), _dec(_class =
194
194
  onClick: this.handleSubmit,
195
195
  margin: XSMALL_SIDE_MARGIN,
196
196
  "data-automation": "sdk-stimulus-doneButton"
197
- }, t('Submit'));
197
+ }, t('Remove Stimulus'));
198
198
  }
199
199
  }, {
200
200
  key: "renderChooseWhich",
@@ -34,6 +34,7 @@ import theme from "./theme.js";
34
34
  import CustomPropTypes from "../../../common/util/CustomPropTypes.js";
35
35
  import ConfirmationModal from "../ConfirmationModal/index.js";
36
36
  import setupFormatMessage from '@instructure/quiz-i18n/es/util/setupFormatMessage';
37
+ import { RceConfigProvider } from "../../util/RceConfigProvider.js";
37
38
 
38
39
  var _ref = /*#__PURE__*/React.createElement(ConfirmationModal, null);
39
40
 
@@ -131,13 +132,13 @@ export var SDKApp = (_dec = themeable(theme, styles), _dec(_class = (_temp = _cl
131
132
  context = this.context;
132
133
  return /*#__PURE__*/React.createElement(Provider, {
133
134
  store: store
134
- }, /*#__PURE__*/React.createElement(ApplyLocale, {
135
+ }, /*#__PURE__*/React.createElement(RceConfigProvider, this.props.rceConfig, /*#__PURE__*/React.createElement(ApplyLocale, {
135
136
  locale: getLocale(props, context),
136
137
  timezone: props.timeZone
137
138
  }, /*#__PURE__*/React.createElement("div", {
138
139
  className: styles.sdk,
139
140
  "data-automation": "sdk-app"
140
- }, _ref, props.children)));
141
+ }, _ref, props.children))));
141
142
  }
142
143
  }]);
143
144
 
@@ -160,7 +161,7 @@ export var SDKApp = (_dec = themeable(theme, styles), _dec(_class = (_temp = _cl
160
161
  contextType: PropTypes.string.isRequired,
161
162
  canvasUserId: PropTypes.string.isRequired,
162
163
  rcsHost: PropTypes.string.isRequired,
163
- tokenFetchFn: PropTypes.func.isRequired
164
+ rcsJwtRefreshFn: PropTypes.func.isRequired
164
165
  }),
165
166
  timeZone: PropTypes.string,
166
167
  translations: PropTypes.objectOf(PropTypes.shape({
@@ -15,14 +15,14 @@ import { Button } from '@instructure/ui-buttons';
15
15
  import { themeable } from '@instructure/ui-themeable';
16
16
  import t from '@instructure/quiz-i18n/es/format-message';
17
17
  var styles = {
18
- componentId: 'bJIQd',
18
+ componentId: 'cIWJr',
19
19
  template: function template(theme) {
20
- return "\n\n.bJIQd_ePYF{background-color:".concat(theme.newItemButtonBackgroundColor || 'inherit', ";border:none;border-radius:").concat(theme.newItemButtonBorderRadius || 'inherit', ";box-shadow:").concat(theme.newItemButtonBoxShadow || 'inherit', ";color:").concat(theme.newItemButtonColor || 'inherit', ";font-size:").concat(theme.newItemButtonFontSize || 'inherit', ";font-weight:").concat(theme.newItemButtonFontWeight || 'inherit', ";line-height:0;margin:").concat(theme.newItemButtonMargin || 'inherit', ";padding:").concat(theme.newItemButtonPadding || 'inherit', ";text-align:center;transform:rotate(0deg);transition:").concat(theme.newItemButtonTransition || 'inherit', ";z-index:").concat(theme.newItemButtonZIndex || 'inherit', "}\n\n[dir=ltr] .bJIQd_ePYF,[dir=rtl] .bJIQd_ePYF{text-align:center}\n\n.bJIQd_ePYF:focus{outline:").concat(theme.newItemButtonFocusOutline || 'inherit', "}\n\n.bJIQd_ePYF.bJIQd_cwUE{background-color:").concat(theme.newItemButtonEditingBackgroundColor || 'inherit', ";transform:rotate(45deg);transition:").concat(theme.newItemButtonTransition || 'inherit', "}\n\n.bJIQd_ekys{display:flex;justify-content:center;margin-top:-1.5rem;width:100%;z-index:").concat(theme.newItemButtonHolderZIndex || 'inherit', "}\n\n.bJIQd_egTu{display:flex;justify-content:center;width:100%;z-index:").concat(theme.attachQuestionButtonHolderZIndex || 'inherit', "}\n\n@media print{.bJIQd_egTu,.bJIQd_ekys{display:none}}");
20
+ return "\n\n.cIWJr_ePYF{background-color:".concat(theme.newItemButtonBackgroundColor || 'inherit', ";border:none;border-radius:").concat(theme.newItemButtonBorderRadius || 'inherit', ";box-shadow:").concat(theme.newItemButtonBoxShadow || 'inherit', ";color:").concat(theme.newItemButtonColor || 'inherit', ";font-size:").concat(theme.newItemButtonFontSize || 'inherit', ";font-weight:").concat(theme.newItemButtonFontWeight || 'inherit', ";line-height:0;margin:").concat(theme.newItemButtonMargin || 'inherit', ";padding:").concat(theme.newItemButtonPadding || 'inherit', ";text-align:center;transform:rotate(0deg);transition:").concat(theme.newItemButtonTransition || 'inherit', ";z-index:").concat(theme.newItemButtonZIndex || 'inherit', "}\n\n[dir=ltr] .cIWJr_ePYF,[dir=rtl] .cIWJr_ePYF{text-align:center}\n\n.cIWJr_ePYF:focus{outline:").concat(theme.newItemButtonFocusOutline || 'inherit', ";outline-offset:").concat(theme.newItemButtonFocusOutlineOffset || 'inherit', "}\n\n.cIWJr_ePYF.cIWJr_cwUE{background-color:").concat(theme.newItemButtonEditingBackgroundColor || 'inherit', ";transform:rotate(45deg);transition:").concat(theme.newItemButtonTransition || 'inherit', "}\n\n.cIWJr_ekys{display:flex;justify-content:center;margin-top:-1.5rem;width:100%;z-index:").concat(theme.newItemButtonHolderZIndex || 'inherit', "}\n\n.cIWJr_egTu{display:flex;justify-content:center;width:100%;z-index:").concat(theme.attachQuestionButtonHolderZIndex || 'inherit', "}\n\n@media print{.cIWJr_egTu,.cIWJr_ekys{display:none}}");
21
21
  },
22
- 'newItemButton': 'bJIQd_ePYF',
23
- 'newItemButtonEditing': 'bJIQd_cwUE',
24
- 'newItemButtonHolder': 'bJIQd_ekys',
25
- 'attachQuestionButtonHolder': 'bJIQd_egTu'
22
+ 'newItemButton': 'cIWJr_ePYF',
23
+ 'newItemButtonEditing': 'cIWJr_cwUE',
24
+ 'newItemButtonHolder': 'cIWJr_ekys',
25
+ 'attachQuestionButtonHolder': 'cIWJr_egTu'
26
26
  };
27
27
  import theme from "./theme.js";
28
28
  export var AddContentButton = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
@@ -12,6 +12,7 @@ export default function generator(_ref) {
12
12
  newItemButtonBorderRadius: spacing.large,
13
13
  newItemButtonColor: colors.white,
14
14
  newItemButtonFocusOutline: "2px solid ".concat(colors.brand),
15
+ newItemButtonFocusOutlineOffset: spacing.xxxSmall,
15
16
  newItemButtonFontSize: typography.fontSizeMedium,
16
17
  newItemButtonFontWeight: typography.fontWeightBold,
17
18
  newItemButtonZIndex: '4444',
@@ -90,8 +90,8 @@ export var StimulusEdit = (_dec = themeable(theme, styles), _dec(_class = (_temp
90
90
  }, {
91
91
  title: t('Confirm Stimulus Removal'),
92
92
  text: t('Are you sure you want to remove this stimulus?'),
93
- continueText: t('Submit'),
94
- cancelText: t('Cancel')
93
+ continueText: t('Remove Stimulus'),
94
+ cancelText: t('Keep Stimulus')
95
95
  });
96
96
  };
97
97
 
@@ -366,11 +366,6 @@ export var StimulusEdit = (_dec = themeable(theme, styles), _dec(_class = (_temp
366
366
  this.createNextQuizEntry();
367
367
  }
368
368
  }
369
- }, {
370
- key: "saveText",
371
- value: function saveText() {
372
- return this.props.stimulus.isTemporary() ? t('Add Stimulus') : t('Save Stimulus');
373
- }
374
369
  }, {
375
370
  key: "renderAddToBankModal",
376
371
  value: function renderAddToBankModal() {
@@ -438,14 +433,14 @@ export var StimulusEdit = (_dec = themeable(theme, styles), _dec(_class = (_temp
438
433
  type: "button",
439
434
  onClick: this.onCancel,
440
435
  "data-automation": "sdk-stimulus-discardButton"
441
- }, t('Discard'))), /*#__PURE__*/React.createElement("div", {
436
+ }, t('Cancel'))), /*#__PURE__*/React.createElement("div", {
442
437
  className: styles.buttonWrapper
443
438
  }, /*#__PURE__*/React.createElement(Button, {
444
439
  type: "button",
445
440
  variant: "primary",
446
441
  disabled: !this.state.canSubmit,
447
442
  onClick: this.onSubmit
448
- }, this.saveText()))));
443
+ }, t('Done')))));
449
444
  }
450
445
  }, {
451
446
  key: "render",
@@ -511,7 +506,7 @@ export var StimulusEdit = (_dec = themeable(theme, styles), _dec(_class = (_temp
511
506
  shouldFocusOnMount: PropTypes.bool.isRequired
512
507
  }, _class2.defaultProps = {
513
508
  bankEntryWarningWrapperProps: function bankEntryWarningWrapperProps() {},
514
- errorsShowing: true,
509
+ errorsShowing: false,
515
510
  isBankedContent: false,
516
511
  nextQuizEntry: null
517
512
  }, _temp)) || _class);
@@ -0,0 +1,87 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import React, { useState, useEffect } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { connect } from "../../common/react-redux.js";
6
+ import isNewRCEEnabled from "./rceChecker.js";
7
+ import { RceConfigContext, RceConfigKeys, TokenFetchStatus } from '@instructure/quiz-common';
8
+
9
+ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
10
+ var _useState = useState(null),
11
+ _useState2 = _slicedToArray(_useState, 2),
12
+ jwt = _useState2[0],
13
+ setJwt = _useState2[1];
14
+
15
+ var _useState3 = useState(TokenFetchStatus.initial),
16
+ _useState4 = _slicedToArray(_useState3, 2),
17
+ status = _useState4[0],
18
+ setStatus = _useState4[1];
19
+
20
+ var hasAllPropsForNewRce = function hasAllPropsForNewRce() {
21
+ return props.useNewRce && !!(props.contextId && props.contextType && props.canvasUserId && props.rcsHost && props.rcsJwtRefreshFn);
22
+ };
23
+
24
+ var getToken = function getToken() {
25
+ if (!hasAllPropsForNewRce()) return;
26
+ setStatus(TokenFetchStatus.pending);
27
+ return new Promise(function (resolve, reject) {
28
+ props.rcsJwtRefreshFn().then(function (response) {
29
+ var token = response.token;
30
+ setStatus(TokenFetchStatus.success);
31
+ setJwt(token);
32
+ resolve(response);
33
+ }, function () {
34
+ setStatus(TokenFetchStatus.failed);
35
+ reject();
36
+ });
37
+ });
38
+ };
39
+
40
+ var refreshToken = function refreshToken(setTokenFn) {
41
+ return getToken().then(function (response) {
42
+ var token = response.token;
43
+ setTokenFn(token);
44
+ });
45
+ };
46
+
47
+ var getConfig = function getConfig() {
48
+ var _config;
49
+
50
+ var config = (_config = {}, _defineProperty(_config, RceConfigKeys.useNewRce, props.useNewRce), _defineProperty(_config, RceConfigKeys.canvasUserId, props.canvasUserId), _defineProperty(_config, RceConfigKeys.contextId, props.contextId), _defineProperty(_config, RceConfigKeys.contextType, props.contextType), _defineProperty(_config, RceConfigKeys.rcsHost, props.rcsHost), _defineProperty(_config, RceConfigKeys.rcsJwt, jwt), _defineProperty(_config, RceConfigKeys.rcsJwtRefreshFn, refreshToken), _defineProperty(_config, RceConfigKeys.rcsJwtFetchStatus, status), _config);
51
+ return config;
52
+ };
53
+
54
+ useEffect(function () {
55
+ getToken();
56
+ }, [props.useNewRce]);
57
+ if (!hasAllPropsForNewRce()) return /*#__PURE__*/React.createElement(React.Fragment, null, props.children);
58
+ return /*#__PURE__*/React.createElement(RceConfigContext.Provider, {
59
+ value: getConfig()
60
+ }, props.children);
61
+ };
62
+
63
+ RceConfigProviderComponent.propTypes = {
64
+ children: PropTypes.node.isRequired,
65
+ useNewRce: PropTypes.bool.isRequired,
66
+ contextId: PropTypes.string,
67
+ contextType: PropTypes.string,
68
+ canvasUserId: PropTypes.string,
69
+ rcsHost: PropTypes.string,
70
+ rcsJwtRefreshFn: PropTypes.func
71
+ };
72
+ RceConfigProviderComponent.defaultProps = {
73
+ contextId: null,
74
+ contextType: null,
75
+ canvasUserId: null,
76
+ rcsHost: null,
77
+ rcsJwtRefreshFn: null
78
+ };
79
+
80
+ var mapStateToProps = function mapStateToProps() {
81
+ return {
82
+ useNewRce: isNewRCEEnabled()
83
+ };
84
+ };
85
+
86
+ var RceConfigProvider = connect(mapStateToProps)(RceConfigProviderComponent);
87
+ export { RceConfigProvider };
@@ -260,9 +260,10 @@ var SharingModalPresenter = (_dec = (0, _uiThemeable.themeable)(_theme.default,
260
260
  });
261
261
  var removedNewEntity = newEntitiesIndex > -1;
262
262
  var newShares = removedNewEntity ? prevState.shares.delete(sharesIndex) : prevState.shares.setIn([sharesIndex, 'permission'], permission);
263
+ var newEntities = removedNewEntity ? prevState.newEntities.delete(newEntitiesIndex) : prevState.newEntities;
263
264
  return {
264
265
  shares: newShares,
265
- newEntities: prevState.newEntities.delete(newEntitiesIndex),
266
+ newEntities: newEntities,
266
267
  entitiesWithChangedPermission: Object.assign({}, prevState.entitiesWithChangedPermission, (0, _defineProperty2.default)({}, id, permission))
267
268
  };
268
269
  }, _this.updateEntitiesCount);
@@ -208,7 +208,7 @@ var DeleteStimulusModal = (_dec = (0, _uiThemeable.themeable)(_theme.default, st
208
208
  return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
209
209
  onClick: this.closeAction,
210
210
  margin: _quizCommon.XSMALL_SIDE_MARGIN
211
- }, (0, _formatMessage.default)('Cancel'));
211
+ }, (0, _formatMessage.default)('Keep Stimulus'));
212
212
  }
213
213
  }, {
214
214
  key: "doneButton",
@@ -223,7 +223,7 @@ var DeleteStimulusModal = (_dec = (0, _uiThemeable.themeable)(_theme.default, st
223
223
  onClick: this.handleSubmit,
224
224
  margin: _quizCommon.XSMALL_SIDE_MARGIN,
225
225
  "data-automation": "sdk-stimulus-doneButton"
226
- }, (0, _formatMessage.default)('Submit'));
226
+ }, (0, _formatMessage.default)('Remove Stimulus'));
227
227
  }
228
228
  }, {
229
229
  key: "renderChooseWhich",
@@ -55,6 +55,8 @@ var _index = _interopRequireDefault(require("../ConfirmationModal/index.js"));
55
55
 
56
56
  var _setupFormatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/util/setupFormatMessage"));
57
57
 
58
+ var _RceConfigProvider = require("../../util/RceConfigProvider.js");
59
+
58
60
  var _dec, _class, _class2, _temp;
59
61
 
60
62
  var styles = {
@@ -160,13 +162,13 @@ var SDKApp = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_
160
162
  context = this.context;
161
163
  return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
162
164
  store: store
163
- }, /*#__PURE__*/_react.default.createElement(_uiI18n.ApplyLocale, {
165
+ }, /*#__PURE__*/_react.default.createElement(_RceConfigProvider.RceConfigProvider, this.props.rceConfig, /*#__PURE__*/_react.default.createElement(_uiI18n.ApplyLocale, {
164
166
  locale: (0, _quizCommon.getLocale)(props, context),
165
167
  timezone: props.timeZone
166
168
  }, /*#__PURE__*/_react.default.createElement("div", {
167
169
  className: styles.sdk,
168
170
  "data-automation": "sdk-app"
169
- }, _ref, props.children)));
171
+ }, _ref, props.children))));
170
172
  }
171
173
  }]);
172
174
  SDKApp.displayName = "SDKApp";
@@ -188,7 +190,7 @@ var SDKApp = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_
188
190
  contextType: _propTypes.default.string.isRequired,
189
191
  canvasUserId: _propTypes.default.string.isRequired,
190
192
  rcsHost: _propTypes.default.string.isRequired,
191
- tokenFetchFn: _propTypes.default.func.isRequired
193
+ rcsJwtRefreshFn: _propTypes.default.func.isRequired
192
194
  }),
193
195
  timeZone: _propTypes.default.string,
194
196
  translations: _propTypes.default.objectOf(_propTypes.default.shape({
@@ -40,14 +40,14 @@ var _theme = _interopRequireDefault(require("./theme.js"));
40
40
  var _dec, _class, _class2, _temp;
41
41
 
42
42
  var styles = {
43
- componentId: 'bJIQd',
43
+ componentId: 'cIWJr',
44
44
  template: function template(theme) {
45
- return "\n\n.bJIQd_ePYF{background-color:".concat(theme.newItemButtonBackgroundColor || 'inherit', ";border:none;border-radius:").concat(theme.newItemButtonBorderRadius || 'inherit', ";box-shadow:").concat(theme.newItemButtonBoxShadow || 'inherit', ";color:").concat(theme.newItemButtonColor || 'inherit', ";font-size:").concat(theme.newItemButtonFontSize || 'inherit', ";font-weight:").concat(theme.newItemButtonFontWeight || 'inherit', ";line-height:0;margin:").concat(theme.newItemButtonMargin || 'inherit', ";padding:").concat(theme.newItemButtonPadding || 'inherit', ";text-align:center;transform:rotate(0deg);transition:").concat(theme.newItemButtonTransition || 'inherit', ";z-index:").concat(theme.newItemButtonZIndex || 'inherit', "}\n\n[dir=ltr] .bJIQd_ePYF,[dir=rtl] .bJIQd_ePYF{text-align:center}\n\n.bJIQd_ePYF:focus{outline:").concat(theme.newItemButtonFocusOutline || 'inherit', "}\n\n.bJIQd_ePYF.bJIQd_cwUE{background-color:").concat(theme.newItemButtonEditingBackgroundColor || 'inherit', ";transform:rotate(45deg);transition:").concat(theme.newItemButtonTransition || 'inherit', "}\n\n.bJIQd_ekys{display:flex;justify-content:center;margin-top:-1.5rem;width:100%;z-index:").concat(theme.newItemButtonHolderZIndex || 'inherit', "}\n\n.bJIQd_egTu{display:flex;justify-content:center;width:100%;z-index:").concat(theme.attachQuestionButtonHolderZIndex || 'inherit', "}\n\n@media print{.bJIQd_egTu,.bJIQd_ekys{display:none}}");
45
+ return "\n\n.cIWJr_ePYF{background-color:".concat(theme.newItemButtonBackgroundColor || 'inherit', ";border:none;border-radius:").concat(theme.newItemButtonBorderRadius || 'inherit', ";box-shadow:").concat(theme.newItemButtonBoxShadow || 'inherit', ";color:").concat(theme.newItemButtonColor || 'inherit', ";font-size:").concat(theme.newItemButtonFontSize || 'inherit', ";font-weight:").concat(theme.newItemButtonFontWeight || 'inherit', ";line-height:0;margin:").concat(theme.newItemButtonMargin || 'inherit', ";padding:").concat(theme.newItemButtonPadding || 'inherit', ";text-align:center;transform:rotate(0deg);transition:").concat(theme.newItemButtonTransition || 'inherit', ";z-index:").concat(theme.newItemButtonZIndex || 'inherit', "}\n\n[dir=ltr] .cIWJr_ePYF,[dir=rtl] .cIWJr_ePYF{text-align:center}\n\n.cIWJr_ePYF:focus{outline:").concat(theme.newItemButtonFocusOutline || 'inherit', ";outline-offset:").concat(theme.newItemButtonFocusOutlineOffset || 'inherit', "}\n\n.cIWJr_ePYF.cIWJr_cwUE{background-color:").concat(theme.newItemButtonEditingBackgroundColor || 'inherit', ";transform:rotate(45deg);transition:").concat(theme.newItemButtonTransition || 'inherit', "}\n\n.cIWJr_ekys{display:flex;justify-content:center;margin-top:-1.5rem;width:100%;z-index:").concat(theme.newItemButtonHolderZIndex || 'inherit', "}\n\n.cIWJr_egTu{display:flex;justify-content:center;width:100%;z-index:").concat(theme.attachQuestionButtonHolderZIndex || 'inherit', "}\n\n@media print{.cIWJr_egTu,.cIWJr_ekys{display:none}}");
46
46
  },
47
- 'newItemButton': 'bJIQd_ePYF',
48
- 'newItemButtonEditing': 'bJIQd_cwUE',
49
- 'newItemButtonHolder': 'bJIQd_ekys',
50
- 'attachQuestionButtonHolder': 'bJIQd_egTu'
47
+ 'newItemButton': 'cIWJr_ePYF',
48
+ 'newItemButtonEditing': 'cIWJr_cwUE',
49
+ 'newItemButtonHolder': 'cIWJr_ekys',
50
+ 'attachQuestionButtonHolder': 'cIWJr_egTu'
51
51
  };
52
52
  var AddContentButton = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
53
53
  (0, _inherits2.default)(AddContentButton, _Component);
@@ -19,6 +19,7 @@ function generator(_ref) {
19
19
  newItemButtonBorderRadius: spacing.large,
20
20
  newItemButtonColor: colors.white,
21
21
  newItemButtonFocusOutline: "2px solid ".concat(colors.brand),
22
+ newItemButtonFocusOutlineOffset: spacing.xxxSmall,
22
23
  newItemButtonFontSize: typography.fontSizeMedium,
23
24
  newItemButtonFontWeight: typography.fontWeightBold,
24
25
  newItemButtonZIndex: '4444',
@@ -127,8 +127,8 @@ var StimulusEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
127
127
  }, {
128
128
  title: (0, _formatMessage.default)('Confirm Stimulus Removal'),
129
129
  text: (0, _formatMessage.default)('Are you sure you want to remove this stimulus?'),
130
- continueText: (0, _formatMessage.default)('Submit'),
131
- cancelText: (0, _formatMessage.default)('Cancel')
130
+ continueText: (0, _formatMessage.default)('Remove Stimulus'),
131
+ cancelText: (0, _formatMessage.default)('Keep Stimulus')
132
132
  });
133
133
  };
134
134
 
@@ -403,11 +403,6 @@ var StimulusEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
403
403
  this.createNextQuizEntry();
404
404
  }
405
405
  }
406
- }, {
407
- key: "saveText",
408
- value: function saveText() {
409
- return this.props.stimulus.isTemporary() ? (0, _formatMessage.default)('Add Stimulus') : (0, _formatMessage.default)('Save Stimulus');
410
- }
411
406
  }, {
412
407
  key: "renderAddToBankModal",
413
408
  value: function renderAddToBankModal() {
@@ -475,14 +470,14 @@ var StimulusEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
475
470
  type: "button",
476
471
  onClick: this.onCancel,
477
472
  "data-automation": "sdk-stimulus-discardButton"
478
- }, (0, _formatMessage.default)('Discard'))), /*#__PURE__*/_react.default.createElement("div", {
473
+ }, (0, _formatMessage.default)('Cancel'))), /*#__PURE__*/_react.default.createElement("div", {
479
474
  className: styles.buttonWrapper
480
475
  }, /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
481
476
  type: "button",
482
477
  variant: "primary",
483
478
  disabled: !this.state.canSubmit,
484
479
  onClick: this.onSubmit
485
- }, this.saveText()))));
480
+ }, (0, _formatMessage.default)('Done')))));
486
481
  }
487
482
  }, {
488
483
  key: "render",
@@ -547,7 +542,7 @@ var StimulusEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
547
542
  shouldFocusOnMount: _propTypes.default.bool.isRequired
548
543
  }, _class2.defaultProps = {
549
544
  bankEntryWarningWrapperProps: function bankEntryWarningWrapperProps() {},
550
- errorsShowing: true,
545
+ errorsShowing: false,
551
546
  isBankedContent: false,
552
547
  nextQuizEntry: null
553
548
  }, _temp)) || _class);
@@ -0,0 +1,104 @@
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.RceConfigProvider = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
20
+ var _reactRedux = require("../../common/react-redux.js");
21
+
22
+ var _rceChecker = _interopRequireDefault(require("./rceChecker.js"));
23
+
24
+ var _quizCommon = require("@instructure/quiz-common");
25
+
26
+ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
27
+ var _useState = (0, _react.useState)(null),
28
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
29
+ jwt = _useState2[0],
30
+ setJwt = _useState2[1];
31
+
32
+ var _useState3 = (0, _react.useState)(_quizCommon.TokenFetchStatus.initial),
33
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
34
+ status = _useState4[0],
35
+ setStatus = _useState4[1];
36
+
37
+ var hasAllPropsForNewRce = function hasAllPropsForNewRce() {
38
+ return props.useNewRce && !!(props.contextId && props.contextType && props.canvasUserId && props.rcsHost && props.rcsJwtRefreshFn);
39
+ };
40
+
41
+ var getToken = function getToken() {
42
+ if (!hasAllPropsForNewRce()) return;
43
+ setStatus(_quizCommon.TokenFetchStatus.pending);
44
+ return new Promise(function (resolve, reject) {
45
+ props.rcsJwtRefreshFn().then(function (response) {
46
+ var token = response.token;
47
+ setStatus(_quizCommon.TokenFetchStatus.success);
48
+ setJwt(token);
49
+ resolve(response);
50
+ }, function () {
51
+ setStatus(_quizCommon.TokenFetchStatus.failed);
52
+ reject();
53
+ });
54
+ });
55
+ };
56
+
57
+ var refreshToken = function refreshToken(setTokenFn) {
58
+ return getToken().then(function (response) {
59
+ var token = response.token;
60
+ setTokenFn(token);
61
+ });
62
+ };
63
+
64
+ var getConfig = function getConfig() {
65
+ var _config;
66
+
67
+ var config = (_config = {}, (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.useNewRce, props.useNewRce), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.canvasUserId, props.canvasUserId), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.contextId, props.contextId), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.contextType, props.contextType), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsHost, props.rcsHost), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsJwt, jwt), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsJwtRefreshFn, refreshToken), (0, _defineProperty2.default)(_config, _quizCommon.RceConfigKeys.rcsJwtFetchStatus, status), _config);
68
+ return config;
69
+ };
70
+
71
+ (0, _react.useEffect)(function () {
72
+ getToken();
73
+ }, [props.useNewRce]);
74
+ if (!hasAllPropsForNewRce()) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.children);
75
+ return /*#__PURE__*/_react.default.createElement(_quizCommon.RceConfigContext.Provider, {
76
+ value: getConfig()
77
+ }, props.children);
78
+ };
79
+
80
+ RceConfigProviderComponent.propTypes = {
81
+ children: _propTypes.default.node.isRequired,
82
+ useNewRce: _propTypes.default.bool.isRequired,
83
+ contextId: _propTypes.default.string,
84
+ contextType: _propTypes.default.string,
85
+ canvasUserId: _propTypes.default.string,
86
+ rcsHost: _propTypes.default.string,
87
+ rcsJwtRefreshFn: _propTypes.default.func
88
+ };
89
+ RceConfigProviderComponent.defaultProps = {
90
+ contextId: null,
91
+ contextType: null,
92
+ canvasUserId: null,
93
+ rcsHost: null,
94
+ rcsJwtRefreshFn: null
95
+ };
96
+
97
+ var mapStateToProps = function mapStateToProps() {
98
+ return {
99
+ useNewRce: (0, _rceChecker.default)()
100
+ };
101
+ };
102
+
103
+ var RceConfigProvider = (0, _reactRedux.connect)(mapStateToProps)(RceConfigProviderComponent);
104
+ exports.RceConfigProvider = RceConfigProvider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "17.34.1-rc.0+58fac0c00",
3
+ "version": "17.34.1-rc.12+f7cdc81b4",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -41,11 +41,11 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@instructure/outcomes-ui": "^2.1.2",
44
- "@instructure/quiz-common": "17.34.1-rc.0+58fac0c00",
45
- "@instructure/quiz-i18n": "17.34.1-rc.0+58fac0c00",
46
- "@instructure/quiz-interactions": "17.34.1-rc.0+58fac0c00",
47
- "@instructure/quiz-number-input": "17.34.1-rc.0+58fac0c00",
48
- "@instructure/quiz-rce": "17.34.1-rc.0+58fac0c00",
44
+ "@instructure/quiz-common": "17.34.1-rc.12+f7cdc81b4",
45
+ "@instructure/quiz-i18n": "17.34.1-rc.12+f7cdc81b4",
46
+ "@instructure/quiz-interactions": "17.34.1-rc.12+f7cdc81b4",
47
+ "@instructure/quiz-number-input": "17.34.1-rc.12+f7cdc81b4",
48
+ "@instructure/quiz-rce": "17.34.1-rc.12+f7cdc81b4",
49
49
  "@instructure/ui-a11y-content": "^7.20.0",
50
50
  "@instructure/ui-alerts": "^7.20.0",
51
51
  "@instructure/ui-avatar": "^7.20.0",
@@ -106,7 +106,7 @@
106
106
  "eventemitter3": "^3.1.0",
107
107
  "humps": "^2.0.0",
108
108
  "immutable": "^3.8.1",
109
- "instructure-validations": "17.34.1-rc.0+58fac0c00",
109
+ "instructure-validations": "17.34.1-rc.12+f7cdc81b4",
110
110
  "ipaddr.js": "^1.5.4",
111
111
  "isomorphic-fetch": "^2.2.0",
112
112
  "isuuid": "^0.1.0",
@@ -137,7 +137,7 @@
137
137
  "uuid": "^3.2.1"
138
138
  },
139
139
  "devDependencies": {
140
- "@instructure/quiz-scripts": "17.34.1-rc.0+58fac0c00",
140
+ "@instructure/quiz-scripts": "17.34.1-rc.12+f7cdc81b4",
141
141
  "@instructure/ui-axe-check": "^7.20.0",
142
142
  "@instructure/ui-babel-preset": "^7.20.0",
143
143
  "@instructure/ui-karma-config": "^7.20.0",
@@ -156,7 +156,7 @@
156
156
  "intl": "^1.2.4",
157
157
  "jquery": "^2.2.3",
158
158
  "most-subject": "^5.3.0",
159
- "quiz-presets": "17.34.1-rc.0+58fac0c00",
159
+ "quiz-presets": "17.34.1-rc.12+f7cdc81b4",
160
160
  "react": "^16.8.6",
161
161
  "react-addons-test-utils": "^15.6.2",
162
162
  "react-dom": "^16.8.6",
@@ -172,5 +172,5 @@
172
172
  "publishConfig": {
173
173
  "access": "public"
174
174
  },
175
- "gitHead": "58fac0c00a5335c08537f02778c0b9dcd4b20265"
175
+ "gitHead": "f7cdc81b4af49f4ed24aa765aaaba4ec51fc9abf"
176
176
  }