@pie-lib/config-ui 11.27.0 → 11.29.0-mui-update.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CHANGELOG.md +14 -2
  2. package/lib/alert-dialog.js +23 -42
  3. package/lib/alert-dialog.js.map +1 -1
  4. package/lib/checkbox.js +56 -71
  5. package/lib/checkbox.js.map +1 -1
  6. package/lib/choice-configuration/feedback-menu.js +24 -63
  7. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  8. package/lib/choice-configuration/index.js +201 -257
  9. package/lib/choice-configuration/index.js.map +1 -1
  10. package/lib/choice-utils.js +6 -18
  11. package/lib/choice-utils.js.map +1 -1
  12. package/lib/feedback-config/feedback-selector.js +77 -114
  13. package/lib/feedback-config/feedback-selector.js.map +1 -1
  14. package/lib/feedback-config/group.js +26 -40
  15. package/lib/feedback-config/group.js.map +1 -1
  16. package/lib/feedback-config/index.js +38 -90
  17. package/lib/feedback-config/index.js.map +1 -1
  18. package/lib/form-section.js +24 -33
  19. package/lib/form-section.js.map +1 -1
  20. package/lib/help.js +39 -80
  21. package/lib/help.js.map +1 -1
  22. package/lib/index.js +1 -31
  23. package/lib/index.js.map +1 -1
  24. package/lib/input.js +21 -54
  25. package/lib/input.js.map +1 -1
  26. package/lib/inputs.js +61 -95
  27. package/lib/inputs.js.map +1 -1
  28. package/lib/langs.js +56 -100
  29. package/lib/langs.js.map +1 -1
  30. package/lib/layout/config-layout.js +24 -68
  31. package/lib/layout/config-layout.js.map +1 -1
  32. package/lib/layout/index.js +0 -3
  33. package/lib/layout/index.js.map +1 -1
  34. package/lib/layout/layout-contents.js +72 -101
  35. package/lib/layout/layout-contents.js.map +1 -1
  36. package/lib/layout/settings-box.js +27 -56
  37. package/lib/layout/settings-box.js.map +1 -1
  38. package/lib/mui-box/index.js +41 -57
  39. package/lib/mui-box/index.js.map +1 -1
  40. package/lib/number-text-field-custom.js +79 -161
  41. package/lib/number-text-field-custom.js.map +1 -1
  42. package/lib/number-text-field.js +57 -115
  43. package/lib/number-text-field.js.map +1 -1
  44. package/lib/radio-with-label.js +23 -31
  45. package/lib/radio-with-label.js.map +1 -1
  46. package/lib/settings/display-size.js +16 -32
  47. package/lib/settings/display-size.js.map +1 -1
  48. package/lib/settings/index.js +14 -47
  49. package/lib/settings/index.js.map +1 -1
  50. package/lib/settings/panel.js +142 -228
  51. package/lib/settings/panel.js.map +1 -1
  52. package/lib/settings/settings-radio-label.js +21 -30
  53. package/lib/settings/settings-radio-label.js.map +1 -1
  54. package/lib/settings/toggle.js +34 -46
  55. package/lib/settings/toggle.js.map +1 -1
  56. package/lib/tabs/index.js +22 -57
  57. package/lib/tabs/index.js.map +1 -1
  58. package/lib/tags-input/index.js +50 -99
  59. package/lib/tags-input/index.js.map +1 -1
  60. package/lib/two-choice.js +46 -90
  61. package/lib/two-choice.js.map +1 -1
  62. package/lib/with-stateful-model.js +8 -31
  63. package/lib/with-stateful-model.js.map +1 -1
  64. package/package.json +12 -10
  65. package/src/__tests__/number-text-field.test.jsx +1 -1
  66. package/src/alert-dialog.jsx +14 -18
  67. package/src/checkbox.jsx +42 -46
  68. package/src/choice-configuration/feedback-menu.jsx +5 -5
  69. package/src/choice-configuration/index.jsx +205 -193
  70. package/src/feedback-config/feedback-selector.jsx +51 -53
  71. package/src/feedback-config/group.jsx +21 -22
  72. package/src/feedback-config/index.jsx +27 -29
  73. package/src/form-section.jsx +18 -18
  74. package/src/help.jsx +20 -28
  75. package/src/input.jsx +1 -1
  76. package/src/inputs.jsx +34 -50
  77. package/src/langs.jsx +40 -46
  78. package/src/layout/config-layout.jsx +23 -30
  79. package/src/layout/layout-contents.jsx +34 -34
  80. package/src/layout/settings-box.jsx +16 -19
  81. package/src/mui-box/index.jsx +35 -43
  82. package/src/number-text-field-custom.jsx +30 -36
  83. package/src/number-text-field.jsx +22 -30
  84. package/src/radio-with-label.jsx +17 -13
  85. package/src/settings/display-size.jsx +12 -11
  86. package/src/settings/panel.jsx +83 -89
  87. package/src/settings/settings-radio-label.jsx +17 -13
  88. package/src/settings/toggle.jsx +29 -29
  89. package/src/tabs/index.jsx +8 -8
  90. package/src/tags-input/index.jsx +35 -38
  91. package/src/two-choice.jsx +15 -19
@@ -1,117 +1,179 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { withStyles } from '@material-ui/core/styles';
4
- import TextField from '@material-ui/core/TextField';
5
- import ActionDelete from '@material-ui/icons/Delete';
6
- import ArrowRight from '@material-ui/icons/SubdirectoryArrowRight';
7
- import IconButton from '@material-ui/core/IconButton';
3
+ import { styled } from '@mui/material/styles';
4
+ import TextField from '@mui/material/TextField';
5
+ import ActionDelete from '@mui/icons-material/Delete';
6
+ import ArrowRight from '@mui/icons-material/SubdirectoryArrowRight';
7
+ import IconButton from '@mui/material/IconButton';
8
8
  import classNames from 'classnames';
9
9
  import { InputContainer } from '@pie-lib/render-ui';
10
- import EditableHtml from '@pie-lib/editable-html';
10
+ // import EditableHtml from '@pie-lib/editable-html';
11
11
  import { InputCheckbox, InputRadio } from '../inputs';
12
12
  import FeedbackMenu from './feedback-menu';
13
13
 
14
- const EditableHtmlContainer = withStyles((theme) => ({
15
- labelContainer: {},
16
- editorHolder: {
17
- marginTop: theme.spacing.unit * 2,
18
- },
19
- }))(
20
- ({
21
- label,
22
- classes,
23
- onChange,
24
- value,
25
- className,
26
- imageSupport,
27
- disableImageAlignmentButtons,
28
- disabled,
29
- spellCheck,
30
- nonEmpty,
31
- pluginOpts,
32
- toolbarOpts,
33
- error,
34
- maxImageWidth,
35
- maxImageHeight,
36
- uploadSoundSupport,
37
- mathMlOptions = {},
38
- }) => {
39
- const names = classNames(classes.labelContainer, className);
14
+ // - mathquill error window not defined
15
+ let EditableHtml;
16
+ if (typeof window !== 'undefined') {
17
+ EditableHtml = require('@pie-lib/editable-html')['default'];
18
+ }
40
19
 
41
- return (
42
- <InputContainer label={label} className={names}>
43
- <div className={classes.editorHolder}>
44
- <EditableHtml
45
- markup={value || ''}
46
- disabled={disabled}
47
- spellCheck={spellCheck}
48
- nonEmpty={nonEmpty}
49
- onChange={onChange}
50
- imageSupport={imageSupport}
51
- disableImageAlignmentButtons={disableImageAlignmentButtons}
52
- className={classes.editor}
53
- pluginProps={pluginOpts || {}}
54
- toolbarOpts={toolbarOpts}
55
- error={error}
56
- maxImageWidth={maxImageWidth}
57
- maxImageHeight={maxImageHeight}
58
- uploadSoundSupport={uploadSoundSupport}
59
- languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}
60
- mathMlOptions={mathMlOptions}
61
- />
62
- </div>
63
- </InputContainer>
64
- );
65
- },
66
- );
67
-
68
- const Feedback = withStyles((theme) => ({
69
- text: {
70
- width: '100%',
71
- },
72
- feedbackContainer: {
73
- position: 'relative',
74
- },
75
- arrowIcon: {
76
- fill: theme.palette.grey[400],
77
- left: -56,
78
- position: 'absolute',
79
- top: 20,
80
- },
81
- }))(({ value, onChange, type, correct, classes, defaults, toolbarOpts, mathMlOptions = {} }) => {
20
+ const StyledEditorHolder = styled('div')(({ theme }) => ({
21
+ marginTop: theme.spacing(2),
22
+ }));
23
+
24
+ const EditableHtmlContainer = ({
25
+ label,
26
+ onChange,
27
+ value,
28
+ className,
29
+ imageSupport,
30
+ disableImageAlignmentButtons,
31
+ disabled,
32
+ spellCheck,
33
+ nonEmpty,
34
+ pluginOpts,
35
+ toolbarOpts,
36
+ error,
37
+ maxImageWidth,
38
+ maxImageHeight,
39
+ uploadSoundSupport,
40
+ mathMlOptions = {},
41
+ }) => {
42
+ const names = classNames(className);
43
+
44
+ return (
45
+ <InputContainer label={label} className={names}>
46
+ <StyledEditorHolder>
47
+ <EditableHtml
48
+ markup={value || ''}
49
+ disabled={disabled}
50
+ spellCheck={spellCheck}
51
+ nonEmpty={nonEmpty}
52
+ onChange={onChange}
53
+ imageSupport={imageSupport}
54
+ disableImageAlignmentButtons={disableImageAlignmentButtons}
55
+ pluginProps={pluginOpts || {}}
56
+ toolbarOpts={toolbarOpts}
57
+ error={error}
58
+ maxImageWidth={maxImageWidth}
59
+ maxImageHeight={maxImageHeight}
60
+ uploadSoundSupport={uploadSoundSupport}
61
+ languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}
62
+ mathMlOptions={mathMlOptions}
63
+ />
64
+ </StyledEditorHolder>
65
+ </InputContainer>
66
+ );
67
+ };
68
+
69
+ const StyledFeedbackContainer = styled('div')(() => ({
70
+ position: 'relative',
71
+ }));
72
+
73
+ const StyledArrowIcon = styled(ArrowRight)(({ theme }) => ({
74
+ fill: theme.palette.grey[400],
75
+ left: -56,
76
+ position: 'absolute',
77
+ top: 20,
78
+ }));
79
+
80
+ const StyledTextField = styled(TextField)(() => ({
81
+ width: '100%',
82
+ }));
83
+
84
+ const StyledEditableHtmlContainer = styled(EditableHtmlContainer)(() => ({
85
+ width: '100%',
86
+ }));
87
+
88
+ const Feedback = ({ value, onChange, type, correct, defaults, toolbarOpts, mathMlOptions = {} }) => {
82
89
  if (!type || type === 'none') {
83
90
  return null;
84
91
  } else if (type === 'default') {
85
92
  return (
86
- <div className={classes.feedbackContainer}>
87
- <ArrowRight className={classes.arrowIcon} />
88
- <TextField
89
- className={classes.text}
93
+ <StyledFeedbackContainer>
94
+ <StyledArrowIcon />
95
+ <StyledTextField
90
96
  label="Feedback Text"
91
97
  value={correct ? defaults.correct : defaults.incorrect}
92
98
  />
93
- </div>
99
+ </StyledFeedbackContainer>
94
100
  );
95
101
  } else {
96
102
  return (
97
- <div className={classes.feedbackContainer}>
98
- <ArrowRight className={classes.arrowIcon} />
99
- <EditableHtmlContainer
100
- className={classes.text}
103
+ <StyledFeedbackContainer>
104
+ <StyledArrowIcon />
105
+ <StyledEditableHtmlContainer
101
106
  label="Feedback Text"
102
107
  value={value}
103
108
  onChange={onChange}
104
109
  toolbarOpts={toolbarOpts}
105
110
  mathMlOptions={mathMlOptions}
106
111
  />
107
- </div>
112
+ </StyledFeedbackContainer>
108
113
  );
109
114
  }
110
- });
115
+ };
116
+
117
+ const StyledIndex = styled('span')(({ theme }) => ({
118
+ paddingRight: theme.spacing(1),
119
+ paddingTop: theme.spacing(3.5),
120
+ }));
121
+
122
+ const StyledTopRow = styled('div')(() => ({
123
+ display: 'flex',
124
+ }));
125
+
126
+ const StyledToggle = styled('div')(({ theme }) => ({
127
+ flex: '0 1 auto',
128
+ paddingTop: theme.spacing(0.5),
129
+ paddingBottom: 0,
130
+ marginRight: 0,
131
+ marginLeft: theme.spacing(1),
132
+ }));
133
+
134
+ const StyledFeedback = styled('div')(({ theme }) => ({
135
+ flex: '0 1 auto',
136
+ paddingTop: theme.spacing(2),
137
+ paddingLeft: 0,
138
+ marginLeft: 0,
139
+ marginRight: theme.spacing(1),
140
+ }));
141
+
142
+ const StyledFeedbackIcon = styled('div')(() => ({
143
+ margin: 0,
144
+ width: 'inherit',
145
+ }));
146
+
147
+ const StyledDeleteIcon = styled('div')(() => ({
148
+ margin: 0,
149
+ width: 'inherit',
150
+ }));
151
+
152
+ const StyledDelete = styled('div')(({ theme }) => ({
153
+ flex: '0 1 auto',
154
+ paddingTop: theme.spacing(2),
155
+ paddingLeft: 0,
156
+ marginLeft: 0,
157
+ }));
158
+
159
+ const StyledMiddleColumn = styled('div')(({ theme }) => ({
160
+ display: 'flex',
161
+ flex: 1,
162
+ flexDirection: 'column',
163
+ marginRight: theme.spacing(1),
164
+ }));
165
+
166
+ const StyledInput = styled('div')(() => ({
167
+ marginRight: 0,
168
+ }));
169
+
170
+ const StyledErrorText = styled('div')(({ theme }) => ({
171
+ fontSize: theme.typography.fontSize - 2,
172
+ color: theme.palette.error.main,
173
+ }));
111
174
 
112
175
  export class ChoiceConfiguration extends React.Component {
113
176
  static propTypes = {
114
- classes: PropTypes.object.isRequired,
115
177
  noLabels: PropTypes.bool,
116
178
  useLetterOrdering: PropTypes.bool,
117
179
  className: PropTypes.string,
@@ -201,7 +263,6 @@ export class ChoiceConfiguration extends React.Component {
201
263
  render() {
202
264
  const {
203
265
  data,
204
- classes,
205
266
  mode,
206
267
  onDelete,
207
268
  defaultFeedback,
@@ -227,45 +288,47 @@ export class ChoiceConfiguration extends React.Component {
227
288
  } = this.props;
228
289
 
229
290
  const InputToggle = mode === 'checkbox' ? InputCheckbox : InputRadio;
230
- const names = classNames(classes.choiceConfiguration, className);
291
+ const names = classNames(className);
231
292
 
232
293
  return (
233
294
  <div className={names}>
234
- <div className={classes.topRow}>
295
+ <StyledTopRow>
235
296
  {index > 0 && (
236
- <span className={classes.index} type="title">
297
+ <StyledIndex type="title">
237
298
  {useLetterOrdering ? String.fromCharCode(96 + index).toUpperCase() : index}
238
- </span>
299
+ </StyledIndex>
239
300
  )}
240
301
 
241
- <InputToggle
242
- className={classes.toggle}
243
- onChange={this.onCheckedChange}
244
- label={!noLabels ? 'Correct' : ''}
245
- checked={!!data.correct}
246
- error={noCorrectAnswerError}
247
- />
248
-
249
- <div className={classes.middleColumn}>
250
- <EditableHtmlContainer
251
- className={classes.input}
252
- label={!noLabels ? 'Label' : ''}
253
- value={data.label}
254
- onChange={this.onLabelChange}
255
- imageSupport={imageSupport}
256
- disableImageAlignmentButtons={disableImageAlignmentButtons}
257
- disabled={disabled}
258
- spellCheck={spellCheck}
259
- nonEmpty={nonEmpty}
260
- pluginOpts={pluginOpts}
261
- toolbarOpts={toolbarOpts}
262
- error={error}
263
- uploadSoundSupport={uploadSoundSupport}
264
- mathMlOptions={mathMlOptions}
265
- maxImageWidth={maxImageWidth}
266
- maxImageHeight={maxImageHeight}
302
+ <StyledToggle>
303
+ <InputToggle
304
+ onChange={this.onCheckedChange}
305
+ label={!noLabels ? 'Correct' : ''}
306
+ checked={!!data.correct}
307
+ error={noCorrectAnswerError}
267
308
  />
268
- {error && <div className={classes.errorText}>{error}</div>}
309
+ </StyledToggle>
310
+
311
+ <StyledMiddleColumn>
312
+ <StyledInput>
313
+ <EditableHtmlContainer
314
+ label={!noLabels ? 'Label' : ''}
315
+ value={data.label}
316
+ onChange={this.onLabelChange}
317
+ imageSupport={imageSupport}
318
+ disableImageAlignmentButtons={disableImageAlignmentButtons}
319
+ disabled={disabled}
320
+ spellCheck={spellCheck}
321
+ nonEmpty={nonEmpty}
322
+ pluginOpts={pluginOpts}
323
+ toolbarOpts={toolbarOpts}
324
+ error={error}
325
+ uploadSoundSupport={uploadSoundSupport}
326
+ mathMlOptions={mathMlOptions}
327
+ maxImageWidth={maxImageWidth}
328
+ maxImageHeight={maxImageHeight}
329
+ />
330
+ </StyledInput>
331
+ {error && <StyledErrorText>{error}</StyledErrorText>}
269
332
 
270
333
  {allowFeedBack && (
271
334
  <Feedback
@@ -276,90 +339,39 @@ export class ChoiceConfiguration extends React.Component {
276
339
  toolbarOpts={toolbarOpts}
277
340
  />
278
341
  )}
279
- </div>
342
+ </StyledMiddleColumn>
280
343
 
281
344
  {allowFeedBack && (
282
- <InputContainer className={classes.feedback} label={!noLabels ? 'Feedback' : ''}>
283
- <FeedbackMenu
284
- onChange={this.onFeedbackTypeChange}
285
- value={data.feedback}
286
- classes={{
287
- icon: classes.feedbackIcon,
288
- }}
289
- />
290
- </InputContainer>
345
+ <StyledFeedback>
346
+ <InputContainer label={!noLabels ? 'Feedback' : ''}>
347
+ <StyledFeedbackIcon>
348
+ <FeedbackMenu
349
+ onChange={this.onFeedbackTypeChange}
350
+ value={data.feedback}
351
+ />
352
+ </StyledFeedbackIcon>
353
+ </InputContainer>
354
+ </StyledFeedback>
291
355
  )}
292
356
 
293
357
  {allowDelete && (
294
- <InputContainer className={classes.delete} label={!noLabels ? 'Delete' : ''}>
295
- <IconButton aria-label="delete" className={classes.deleteIcon} onClick={onDelete}>
296
- <ActionDelete />
297
- </IconButton>
298
- </InputContainer>
358
+ <StyledDelete>
359
+ <InputContainer label={!noLabels ? 'Delete' : ''}>
360
+ <StyledDeleteIcon>
361
+ <IconButton
362
+ aria-label="delete"
363
+ onClick={onDelete}
364
+ size="large">
365
+ <ActionDelete />
366
+ </IconButton>
367
+ </StyledDeleteIcon>
368
+ </InputContainer>
369
+ </StyledDelete>
299
370
  )}
300
- </div>
371
+ </StyledTopRow>
301
372
  </div>
302
373
  );
303
374
  }
304
375
  }
305
376
 
306
- const styles = (theme) => ({
307
- index: {
308
- paddingRight: theme.spacing.unit,
309
- paddingTop: theme.spacing.unit * 3.5,
310
- },
311
- choiceConfiguration: {},
312
- topRow: {
313
- display: 'flex',
314
- },
315
- value: {
316
- flex: '0.5',
317
- paddingRight: theme.spacing.unit,
318
- },
319
- editorHolder: {
320
- marginTop: theme.spacing.unit * 2,
321
- },
322
- toggle: {
323
- flex: '0 1 auto',
324
- paddingTop: theme.spacing.unit / 2,
325
- paddingBottom: 0,
326
- marginRight: 0,
327
- marginLeft: theme.spacing.unit,
328
- },
329
- feedback: {
330
- flex: '0 1 auto',
331
- paddingTop: theme.spacing.unit * 2,
332
- paddingLeft: 0,
333
- marginLeft: 0,
334
- marginRight: theme.spacing.unit,
335
- },
336
- feedbackIcon: {
337
- margin: 0,
338
- width: 'inherit',
339
- },
340
- deleteIcon: {
341
- margin: 0,
342
- width: 'inherit',
343
- },
344
- delete: {
345
- flex: '0 1 auto',
346
- paddingTop: theme.spacing.unit * 2,
347
- paddingLeft: 0,
348
- marginLeft: 0,
349
- },
350
- middleColumn: {
351
- display: 'flex',
352
- flex: 1,
353
- flexDirection: 'column',
354
- marginRight: theme.spacing.unit,
355
- },
356
- input: {
357
- marginRight: 0,
358
- },
359
- errorText: {
360
- fontSize: theme.typography.fontSize - 2,
361
- color: theme.palette.error.main,
362
- },
363
- });
364
-
365
- export default withStyles(styles)(ChoiceConfiguration);
377
+ export default ChoiceConfiguration;
@@ -1,54 +1,56 @@
1
- import EditableHTML from '@pie-lib/editable-html';
1
+ //import EditableHTML from '@pie-lib/editable-html';
2
2
  import { InputContainer } from '@pie-lib/render-ui';
3
3
  import PropTypes from 'prop-types';
4
4
  import React from 'react';
5
- import { withStyles } from '@material-ui/core/styles';
5
+ import { styled } from '@mui/material/styles';
6
6
  import Group from './group';
7
7
 
8
+
9
+ // - mathquill error window not defined
10
+ let EditableHtml;
11
+ let StyledEditableHTML;
12
+ if (typeof window !== 'undefined') {
13
+ EditableHtml = require('@pie-lib/editable-html')['default'];
14
+ StyledEditableHTML = styled(EditableHtml)(({ theme }) => ({
15
+ fontFamily: theme.typography.fontFamily,
16
+ }));
17
+ }
18
+
8
19
  const feedbackLabels = {
9
20
  default: 'Simple Feedback',
10
21
  none: 'No Feedback',
11
22
  custom: 'Customized Feedback',
12
23
  };
13
24
 
14
- const holder = (theme, extras) => ({
25
+ const StyledFeedbackSelector = styled('div')(({ theme }) => ({
26
+ marginBottom: theme.spacing(1),
27
+ }));
28
+
29
+ const StyledInputContainer = styled(InputContainer)(() => ({
30
+ paddingBottom: 0,
31
+ }));
32
+
33
+ const StyledCustomHolder = styled('div')(({ theme }) => ({
15
34
  marginTop: '0px',
16
35
  background: theme.palette.grey[300],
17
- padding: theme.spacing.unit,
18
- marginBottom: theme.spacing.unit * 2,
36
+ padding: 0,
37
+ marginBottom: theme.spacing(2),
19
38
  borderRadius: '4px',
20
- ...extras,
21
- });
22
-
23
- const style = (theme) => ({
24
- feedbackSelector: {
25
- marginBottom: theme.spacing.unit,
26
- },
27
- label: {
28
- cursor: 'pointer',
29
- },
30
- inputContainerLabel: {
31
- transform: 'translateY(-20%)',
32
- },
33
- feedbackInputContainer: {
34
- paddingBottom: 0,
35
- },
36
- customHolder: holder(theme, {
37
- background: theme.palette.grey[300],
38
- padding: 0,
39
- }),
40
- defaultHolder: holder(theme, {
41
- fontFamily: theme.typography.fontFamily,
42
- padding: theme.spacing.unit * 2,
43
- cursor: 'default',
44
- }),
45
- editor: {
46
- fontFamily: theme.typography.fontFamily,
47
- },
48
- group: {
49
- paddingTop: theme.spacing.unit,
50
- },
51
- });
39
+ }));
40
+
41
+ const StyledDefaultHolder = styled('div')(({ theme }) => ({
42
+ marginTop: '0px',
43
+ background: theme.palette.grey[300],
44
+ padding: theme.spacing(2),
45
+ marginBottom: theme.spacing(2),
46
+ borderRadius: '4px',
47
+ fontFamily: theme.typography.fontFamily,
48
+ cursor: 'default',
49
+ }));
50
+
51
+ const StyledGroup = styled(Group)(({ theme }) => ({
52
+ paddingTop: theme.spacing(1),
53
+ }));
52
54
 
53
55
  export const FeedbackType = {
54
56
  type: PropTypes.oneOf(['default', 'custom', 'none']),
@@ -59,7 +61,6 @@ export const FeedbackType = {
59
61
  export class FeedbackSelector extends React.Component {
60
62
  static propTypes = {
61
63
  keys: PropTypes.arrayOf(PropTypes.string),
62
- classes: PropTypes.object.isRequired,
63
64
  label: PropTypes.string.isRequired,
64
65
  feedback: PropTypes.shape(FeedbackType).isRequired,
65
66
  onChange: PropTypes.func.isRequired,
@@ -79,44 +80,41 @@ export class FeedbackSelector extends React.Component {
79
80
  };
80
81
 
81
82
  render() {
82
- const { keys, classes, label, feedback, toolbarOpts, mathMlOptions = {} } = this.props;
83
+ const { keys, label, feedback, toolbarOpts, mathMlOptions = {} } = this.props;
83
84
 
84
85
  const feedbackKeys = keys || Object.keys(feedbackLabels);
85
86
 
86
87
  return (
87
- <div className={classes.feedbackSelector}>
88
- <InputContainer
88
+ <StyledFeedbackSelector>
89
+ <StyledInputContainer
89
90
  label={label}
90
- className={classes.feedbackInputContainer}
91
- extraClasses={{ label: classes.inputContainerLabel }}
91
+ extraClasses={{ label: { transform: 'translateY(-20%)' } }}
92
92
  >
93
- <Group
94
- className={classes.group}
93
+ <StyledGroup
95
94
  keys={feedbackKeys}
96
95
  label={label}
97
96
  value={feedback.type}
98
97
  onChange={this.changeType}
99
98
  feedbackLabels={feedbackLabels}
100
99
  />
101
- </InputContainer>
100
+ </StyledInputContainer>
102
101
 
103
102
  {feedback.type === 'custom' && (
104
- <div className={classes.customHolder}>
105
- <EditableHTML
106
- className={classes.editor}
103
+ <StyledCustomHolder>
104
+ <StyledEditableHTML
107
105
  onChange={this.changeCustom}
108
106
  markup={feedback.custom || ''}
109
107
  toolbarOpts={toolbarOpts}
110
108
  languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}
111
109
  mathMlOptions={mathMlOptions}
112
110
  />
113
- </div>
111
+ </StyledCustomHolder>
114
112
  )}
115
113
 
116
- {feedback.type === 'default' && <div className={classes.defaultHolder}> {feedback.default}</div>}
117
- </div>
114
+ {feedback.type === 'default' && <StyledDefaultHolder> {feedback.default}</StyledDefaultHolder>}
115
+ </StyledFeedbackSelector>
118
116
  );
119
117
  }
120
118
  }
121
119
 
122
- export default withStyles(style)(FeedbackSelector);
120
+ export default FeedbackSelector;