@pie-element/ebsr 7.0.13 → 7.0.15-beta.1443
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.
- package/CHANGELOG.md +328 -0
- package/configure/CHANGELOG.md +312 -0
- package/configure/lib/defaults.js +23 -4
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +5 -5
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +62 -50
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +3 -3
- package/configure/src/__tests__/__snapshots__/index.test.js.snap +4 -2
- package/configure/src/__tests__/index.test.js +164 -211
- package/configure/src/defaults.js +38 -19
- package/configure/src/index.js +8 -7
- package/configure/src/main.jsx +134 -147
- package/controller/CHANGELOG.md +20 -0
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +91 -12
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +2 -2
- package/controller/src/__tests__/index.test.js +113 -141
- package/controller/src/__tests__/utils.test.js +6 -9
- package/controller/src/defaults.js +1 -1
- package/controller/src/index.js +104 -69
- package/controller/src/utils.js +6 -4
- package/docs/config-schema.json +280 -0
- package/docs/config-schema.json.md +217 -1
- package/docs/demo/config.js +2 -2
- package/docs/demo/generate.js +3 -3
- package/docs/pie-schema.json +127 -0
- package/docs/pie-schema.json.md +96 -0
- package/lib/index.js +11 -8
- package/lib/index.js.map +1 -1
- package/lib/print.js +243 -0
- package/lib/print.js.map +1 -0
- package/package.json +8 -4
- package/src/__tests__/index.test.js +2 -7
- package/src/index.js +7 -5
- package/src/print.js +179 -0
|
@@ -3,42 +3,43 @@ import cloneDeep from 'lodash/cloneDeep';
|
|
|
3
3
|
const defaultConfig = {
|
|
4
4
|
addChoiceButton: {
|
|
5
5
|
settings: true,
|
|
6
|
-
label: 'Add a Choice'
|
|
6
|
+
label: 'Add a Choice',
|
|
7
7
|
},
|
|
8
8
|
choiceMode: {
|
|
9
9
|
settings: true,
|
|
10
|
-
label: 'Response Type'
|
|
10
|
+
label: 'Response Type',
|
|
11
11
|
},
|
|
12
12
|
choicePrefix: {
|
|
13
13
|
settings: true,
|
|
14
|
-
label: 'Choice Labels'
|
|
14
|
+
label: 'Choice Labels',
|
|
15
15
|
},
|
|
16
16
|
deleteChoice: {
|
|
17
|
-
settings: true
|
|
17
|
+
settings: true,
|
|
18
18
|
},
|
|
19
19
|
feedback: {
|
|
20
20
|
settings: true,
|
|
21
|
-
label: 'Feedback'
|
|
21
|
+
label: 'Feedback',
|
|
22
22
|
},
|
|
23
23
|
lockChoiceOrder: {
|
|
24
24
|
settings: true,
|
|
25
|
-
label: 'Lock Choice Order'
|
|
25
|
+
label: 'Lock Choice Order',
|
|
26
26
|
},
|
|
27
27
|
prompt: {
|
|
28
28
|
settings: true,
|
|
29
|
-
label: 'Prompt'
|
|
29
|
+
label: 'Prompt',
|
|
30
30
|
},
|
|
31
31
|
rationale: {
|
|
32
32
|
settings: true,
|
|
33
|
-
label: 'Rationale'
|
|
33
|
+
label: 'Rationale',
|
|
34
34
|
},
|
|
35
|
+
settingsPanelDisabled: true,
|
|
35
36
|
studentInstructions: {
|
|
36
37
|
settings: false,
|
|
37
|
-
label: 'Student Instructions'
|
|
38
|
+
label: 'Student Instructions',
|
|
38
39
|
},
|
|
39
40
|
teacherInstructions: {
|
|
40
41
|
settings: true,
|
|
41
|
-
label: 'Teacher Instructions'
|
|
42
|
+
label: 'Teacher Instructions',
|
|
42
43
|
},
|
|
43
44
|
choicesLayout: {
|
|
44
45
|
settings: false,
|
|
@@ -47,9 +48,26 @@ const defaultConfig = {
|
|
|
47
48
|
gridColumns: {
|
|
48
49
|
label: 'Grid columns',
|
|
49
50
|
},
|
|
51
|
+
spellCheck: {
|
|
52
|
+
label: 'Spellcheck',
|
|
53
|
+
settings: false,
|
|
54
|
+
enabled: true,
|
|
55
|
+
},
|
|
56
|
+
maxImageWidth: {
|
|
57
|
+
teacherInstructions: 300,
|
|
58
|
+
prompt: 300,
|
|
59
|
+
rationale: 636,
|
|
60
|
+
choices: 636,
|
|
61
|
+
},
|
|
62
|
+
maxImageHeight: {
|
|
63
|
+
teacherInstructions: 300,
|
|
64
|
+
prompt: 300,
|
|
65
|
+
rationale: 300,
|
|
66
|
+
choices: 300,
|
|
67
|
+
},
|
|
50
68
|
};
|
|
51
69
|
|
|
52
|
-
const partModel = base => ({
|
|
70
|
+
const partModel = (base) => ({
|
|
53
71
|
choiceMode: 'radio',
|
|
54
72
|
choices: [],
|
|
55
73
|
choicePrefix: 'numbers',
|
|
@@ -61,18 +79,19 @@ const partModel = base => ({
|
|
|
61
79
|
rationale: '',
|
|
62
80
|
teacherInstructionsEnabled: true,
|
|
63
81
|
studentInstructionsEnabled: true,
|
|
82
|
+
spellCheckEnabled: true,
|
|
64
83
|
choicesLayout: 'vertical',
|
|
65
84
|
gridColumns: '2',
|
|
66
|
-
...base
|
|
85
|
+
...base,
|
|
67
86
|
});
|
|
68
87
|
|
|
69
88
|
export default {
|
|
70
89
|
model: {
|
|
71
90
|
partLabels: true,
|
|
72
91
|
partLabelType: 'Letters',
|
|
73
|
-
partialScoring: false,
|
|
92
|
+
// partialScoring: false,
|
|
74
93
|
partA: partModel({ prompt: 'Prompt A' }),
|
|
75
|
-
partB: partModel({ prompt: 'Prompt B' })
|
|
94
|
+
partB: partModel({ prompt: 'Prompt B' }),
|
|
76
95
|
},
|
|
77
96
|
configuration: {
|
|
78
97
|
partialScoring: {
|
|
@@ -80,18 +99,18 @@ export default {
|
|
|
80
99
|
// this will turn off partial scoring toggle in the settings tab by default for the interaction
|
|
81
100
|
// as we'd like partial scoring to be controlled from the environment entirely
|
|
82
101
|
// if any other consumers would like to enable it for themselves, they can do so from their model directly.
|
|
83
|
-
settings: false
|
|
102
|
+
settings: false,
|
|
84
103
|
},
|
|
85
104
|
scoringType: {
|
|
86
105
|
settings: false,
|
|
87
|
-
label: 'Scoring Type'
|
|
106
|
+
label: 'Scoring Type',
|
|
88
107
|
},
|
|
89
108
|
partA: cloneDeep(defaultConfig),
|
|
90
109
|
partB: cloneDeep(defaultConfig),
|
|
91
110
|
partLabels: {
|
|
92
111
|
settings: true,
|
|
93
|
-
label: 'Part Labels'
|
|
112
|
+
label: 'Part Labels',
|
|
94
113
|
},
|
|
95
|
-
settingsPanelDisabled:
|
|
96
|
-
}
|
|
114
|
+
settingsPanelDisabled: false,
|
|
115
|
+
},
|
|
97
116
|
};
|
package/configure/src/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import sensibleDefaults from './defaults';
|
|
|
10
10
|
const MODEL_UPDATED = ModelUpdatedEvent.TYPE;
|
|
11
11
|
const MC_TAG_NAME = 'ebsr-multiple-choice-configure';
|
|
12
12
|
|
|
13
|
-
class EbsrMCConfigure extends MultipleChoiceConfigure {
|
|
13
|
+
class EbsrMCConfigure extends MultipleChoiceConfigure {}
|
|
14
14
|
|
|
15
15
|
const defineMultipleChoice = () => {
|
|
16
16
|
if (!customElements.get(MC_TAG_NAME)) {
|
|
@@ -26,7 +26,7 @@ const prepareCustomizationObject = (config, model) => {
|
|
|
26
26
|
|
|
27
27
|
return {
|
|
28
28
|
configuration,
|
|
29
|
-
model
|
|
29
|
+
model,
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
32
|
|
|
@@ -39,12 +39,14 @@ export default class EbsrConfigure extends HTMLElement {
|
|
|
39
39
|
partA: {
|
|
40
40
|
...defaults.partA,
|
|
41
41
|
...partA,
|
|
42
|
-
choicesLayout:
|
|
42
|
+
choicesLayout:
|
|
43
|
+
partA.choicesLayout || (partA.verticalMode === false && 'horizontal') || defaults.partA.choicesLayout,
|
|
43
44
|
},
|
|
44
45
|
partB: {
|
|
45
46
|
...defaults.partB,
|
|
46
47
|
...partB,
|
|
47
|
-
choicesLayout:
|
|
48
|
+
choicesLayout:
|
|
49
|
+
partB.choicesLayout || (partB.verticalMode === false && 'horizontal') || defaults.partB.choicesLayout,
|
|
48
50
|
},
|
|
49
51
|
});
|
|
50
52
|
|
|
@@ -74,7 +76,6 @@ export default class EbsrConfigure extends HTMLElement {
|
|
|
74
76
|
|
|
75
77
|
this.dispatchModelUpdated(reset);
|
|
76
78
|
this._render();
|
|
77
|
-
|
|
78
79
|
};
|
|
79
80
|
|
|
80
81
|
set configuration(c) {
|
|
@@ -94,8 +95,7 @@ export default class EbsrConfigure extends HTMLElement {
|
|
|
94
95
|
this._render();
|
|
95
96
|
}
|
|
96
97
|
|
|
97
|
-
onModelUpdated = e => {
|
|
98
|
-
|
|
98
|
+
onModelUpdated = (e) => {
|
|
99
99
|
if (e.target === this) {
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
@@ -130,6 +130,7 @@ export default class EbsrConfigure extends HTMLElement {
|
|
|
130
130
|
onModelChanged: this.onModelChanged,
|
|
131
131
|
onConfigurationChanged: this.onConfigurationChanged,
|
|
132
132
|
});
|
|
133
|
+
|
|
133
134
|
ReactDOM.render(element, this);
|
|
134
135
|
}
|
|
135
136
|
}
|
package/configure/src/main.jsx
CHANGED
|
@@ -2,19 +2,17 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { settings, layout } from '@pie-lib/config-ui';
|
|
4
4
|
import { withStyles } from '@material-ui/core/styles';
|
|
5
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
6
5
|
|
|
7
6
|
const { Panel, toggle, radio, dropdown } = settings;
|
|
8
7
|
|
|
9
|
-
const styles = theme => ({
|
|
10
|
-
design: {
|
|
11
|
-
paddingTop: theme.spacing.unit * 3
|
|
12
|
-
},
|
|
8
|
+
const styles = (theme) => ({
|
|
13
9
|
part: {
|
|
14
10
|
display: 'flex',
|
|
15
11
|
flexDirection: 'column',
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
'&:not(:first-child)': {
|
|
13
|
+
paddingTop: theme.spacing.unit * 4,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
18
16
|
});
|
|
19
17
|
|
|
20
18
|
export class Main extends React.Component {
|
|
@@ -23,15 +21,16 @@ export class Main extends React.Component {
|
|
|
23
21
|
configuration: PropTypes.object,
|
|
24
22
|
model: PropTypes.object,
|
|
25
23
|
onModelChanged: PropTypes.func,
|
|
26
|
-
onConfigurationChanged: PropTypes.func
|
|
24
|
+
onConfigurationChanged: PropTypes.func,
|
|
27
25
|
};
|
|
28
26
|
|
|
29
27
|
removeExtraChoices = (choices) => {
|
|
30
28
|
let correctFound = false;
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
return (choices || []).map((choice) => {
|
|
33
31
|
if (correctFound) {
|
|
34
32
|
choice.correct = false;
|
|
33
|
+
|
|
35
34
|
return choice;
|
|
36
35
|
}
|
|
37
36
|
|
|
@@ -41,7 +40,7 @@ export class Main extends React.Component {
|
|
|
41
40
|
|
|
42
41
|
return choice;
|
|
43
42
|
});
|
|
44
|
-
}
|
|
43
|
+
};
|
|
45
44
|
|
|
46
45
|
onModelChanged = (model, key) => {
|
|
47
46
|
const { onModelChanged } = this.props;
|
|
@@ -59,17 +58,12 @@ export class Main extends React.Component {
|
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
return onModelChanged(model);
|
|
62
|
-
}
|
|
61
|
+
};
|
|
63
62
|
|
|
64
63
|
render() {
|
|
65
|
-
const {
|
|
66
|
-
classes,
|
|
67
|
-
model,
|
|
68
|
-
configuration,
|
|
69
|
-
onConfigurationChanged
|
|
70
|
-
} = this.props;
|
|
64
|
+
const { classes, model, configuration, onConfigurationChanged } = this.props;
|
|
71
65
|
const { partLabelType, partA: modelPartA, partB: modelPartB } = model;
|
|
72
|
-
const { partA, partB, partialScoring, scoringType, ...generalConfiguration } = configuration;
|
|
66
|
+
const { partA, partB, partialScoring, settingsPanelDisabled, scoringType, ...generalConfiguration } = configuration;
|
|
73
67
|
const {
|
|
74
68
|
feedback: feedbackA = {},
|
|
75
69
|
choiceMode: choiceModeA = {},
|
|
@@ -80,7 +74,8 @@ export class Main extends React.Component {
|
|
|
80
74
|
studentInstructions: studentInstructionsA = {},
|
|
81
75
|
choicesLayout: choicesLayoutA = {},
|
|
82
76
|
gridColumns: gridColumnsA = {},
|
|
83
|
-
rationale: rationaleA = {}
|
|
77
|
+
rationale: rationaleA = {},
|
|
78
|
+
spellCheck: spellCheckA = {},
|
|
84
79
|
} = partA || {};
|
|
85
80
|
const {
|
|
86
81
|
feedback: feedbackB = {},
|
|
@@ -92,147 +87,139 @@ export class Main extends React.Component {
|
|
|
92
87
|
studentInstructions: studentInstructionsB = {},
|
|
93
88
|
choicesLayout: choicesLayoutB = {},
|
|
94
89
|
gridColumns: gridColumnsB = {},
|
|
95
|
-
rationale: rationaleB = {}
|
|
90
|
+
rationale: rationaleB = {},
|
|
91
|
+
spellCheck: spellCheckB = {},
|
|
96
92
|
} = partB || {};
|
|
93
|
+
|
|
97
94
|
const type = partLabelType || 'Numbers';
|
|
98
95
|
const typeIsNumber = type === 'Numbers';
|
|
99
96
|
const firstPart = `Part ${typeIsNumber ? '1' : 'A'}`;
|
|
100
97
|
const secondPart = `Part ${typeIsNumber ? '2' : 'B'}`;
|
|
101
98
|
const nrOfColumnsAvailable = {
|
|
102
|
-
partA:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
partA:
|
|
100
|
+
modelPartA.choices && modelPartA.choices.length
|
|
101
|
+
? Array.from({ length: modelPartA.choices.length }, (_, i) => `${i + 1}`)
|
|
102
|
+
: [],
|
|
103
|
+
partB:
|
|
104
|
+
modelPartB.choices && modelPartB.choices.length
|
|
105
|
+
? Array.from({ length: modelPartB.choices.length }, (_, i) => `${i + 1}`)
|
|
106
|
+
: [],
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const panelSettings = {
|
|
110
|
+
partLabels: generalConfiguration.partLabels.settings && toggle(generalConfiguration.partLabels.label),
|
|
111
|
+
partLabelType: model.partLabels && dropdown('', ['Numbers', 'Letters']),
|
|
112
|
+
partialScoring: partialScoring.settings && toggle(partialScoring.label),
|
|
113
|
+
scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const panelSettingsPartA = {
|
|
117
|
+
'partA.choiceMode': choiceModeA.settings && radio(choiceModeA.label, ['checkbox', 'radio']),
|
|
118
|
+
'partA.choicePrefix': choicePrefixA.settings && radio(choicePrefixA.label, ['numbers', 'letters']),
|
|
119
|
+
'partA.lockChoiceOrder': lockChoiceOrderA.settings && toggle(lockChoiceOrderA.label),
|
|
120
|
+
'partA.choicesLayout':
|
|
121
|
+
choicesLayoutA.settings && dropdown(choicesLayoutA.label, ['vertical', 'grid', 'horizontal']),
|
|
122
|
+
'partA.gridColumns':
|
|
123
|
+
choicesLayoutA.settings &&
|
|
124
|
+
modelPartA.choicesLayout === 'grid' &&
|
|
125
|
+
nrOfColumnsAvailable.partA.length > 0 &&
|
|
126
|
+
dropdown(gridColumnsA.label, nrOfColumnsAvailable.partA),
|
|
127
|
+
};
|
|
128
|
+
const panelPropertiesPartA = {
|
|
129
|
+
'partA.feedbackEnabled': feedbackA.settings && toggle(feedbackA.label),
|
|
130
|
+
'partA.promptEnabled': promptA.settings && toggle(promptA.label),
|
|
131
|
+
'partA.teacherInstructionsEnabled': teacherInstructionsA.settings && toggle(teacherInstructionsA.label),
|
|
132
|
+
'partA.studentInstructionsEnabled': studentInstructionsA.settings && toggle(studentInstructionsA.label),
|
|
133
|
+
'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label),
|
|
134
|
+
'partA.spellCheckEnabled': spellCheckA.settings && toggle(spellCheckA.label),
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const panelSettingsPartB = {
|
|
138
|
+
'partB.choiceMode': choiceModeB.settings && radio(choiceModeB.label, ['checkbox', 'radio']),
|
|
139
|
+
'partB.choicePrefix': choicePrefixB.settings && radio(choicePrefixB.label, ['numbers', 'letters']),
|
|
140
|
+
'partB.lockChoiceOrder': lockChoiceOrderB.settings && toggle(lockChoiceOrderB.label),
|
|
141
|
+
'partB.choicesLayout':
|
|
142
|
+
choicesLayoutB.settings && dropdown(choicesLayoutB.label, ['vertical', 'grid', 'horizontal']),
|
|
143
|
+
'partB.gridColumns':
|
|
144
|
+
choicesLayoutB.settings &&
|
|
145
|
+
modelPartB.choicesLayout === 'grid' &&
|
|
146
|
+
nrOfColumnsAvailable.partB.length > 0 &&
|
|
147
|
+
dropdown(gridColumnsB.label, nrOfColumnsAvailable.partB),
|
|
148
|
+
};
|
|
149
|
+
const panelPropertiesPartB = {
|
|
150
|
+
'partB.feedbackEnabled': feedbackB.settings && toggle(feedbackB.label),
|
|
151
|
+
'partB.promptEnabled': promptB.settings && toggle(promptB.label),
|
|
152
|
+
'partB.teacherInstructionsEnabled': teacherInstructionsB.settings && toggle(teacherInstructionsB.label),
|
|
153
|
+
'partB.studentInstructionsEnabled': studentInstructionsB.settings && toggle(studentInstructionsB.label),
|
|
154
|
+
'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label),
|
|
155
|
+
'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label),
|
|
106
156
|
};
|
|
107
157
|
|
|
108
158
|
return (
|
|
109
|
-
<
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
'partB.lockChoiceOrder':
|
|
168
|
-
lockChoiceOrderB.settings && toggle(lockChoiceOrderB.label),
|
|
169
|
-
'partB.choicesLayout':
|
|
170
|
-
choicesLayoutB.settings &&
|
|
171
|
-
dropdown(choicesLayoutB.label, ['vertical', 'grid', 'horizontal']),
|
|
172
|
-
'partB.gridColumns':
|
|
173
|
-
choicesLayoutB.settings && modelPartB.choicesLayout === 'grid' &&
|
|
174
|
-
nrOfColumnsAvailable.partB.length > 0 &&
|
|
175
|
-
dropdown(gridColumnsB.label, nrOfColumnsAvailable.partB)
|
|
176
|
-
},
|
|
177
|
-
[`Properties ${secondPart}`]: {
|
|
178
|
-
'partB.feedbackEnabled':
|
|
179
|
-
feedbackB.settings && toggle(feedbackB.label),
|
|
180
|
-
'partB.promptEnabled':
|
|
181
|
-
promptB.settings && toggle(promptB.label),
|
|
182
|
-
'partB.teacherInstructionsEnabled':
|
|
183
|
-
teacherInstructionsB.settings &&
|
|
184
|
-
toggle(teacherInstructionsB.label),
|
|
185
|
-
'partB.studentInstructionsEnabled':
|
|
186
|
-
studentInstructionsB.settings &&
|
|
187
|
-
toggle(studentInstructionsB.label),
|
|
188
|
-
'partB.rationaleEnabled':
|
|
189
|
-
rationaleB.settings && toggle(rationaleB.label)
|
|
159
|
+
<layout.ConfigLayout
|
|
160
|
+
hideSettings={settingsPanelDisabled}
|
|
161
|
+
settings={
|
|
162
|
+
<Panel
|
|
163
|
+
model={model}
|
|
164
|
+
onChangeModel={this.onModelChanged}
|
|
165
|
+
configuration={configuration}
|
|
166
|
+
onChangeConfiguration={onConfigurationChanged}
|
|
167
|
+
groups={{
|
|
168
|
+
'Settings for both': panelSettings,
|
|
169
|
+
[`Settings ${firstPart}`]: panelSettingsPartA,
|
|
170
|
+
[`Properties ${firstPart}`]: panelPropertiesPartA,
|
|
171
|
+
[`Settings ${secondPart}`]: panelSettingsPartB,
|
|
172
|
+
[`Properties ${secondPart}`]: panelPropertiesPartB,
|
|
173
|
+
}}
|
|
174
|
+
/>
|
|
175
|
+
}
|
|
176
|
+
>
|
|
177
|
+
<div>
|
|
178
|
+
<div className={classes.part}>
|
|
179
|
+
{model.partLabels && <div>{firstPart}</div>}
|
|
180
|
+
<ebsr-multiple-choice-configure
|
|
181
|
+
id="A"
|
|
182
|
+
key="partA"
|
|
183
|
+
ref={(ref) => {
|
|
184
|
+
if (ref) {
|
|
185
|
+
// do not use destructuring to get model from props
|
|
186
|
+
this.partA = ref;
|
|
187
|
+
this.partA._model = {
|
|
188
|
+
...this.props.model.partA,
|
|
189
|
+
errors: (this.props.model.errors && this.props.model.errors.partA) || {},
|
|
190
|
+
};
|
|
191
|
+
this.partA.configuration = {
|
|
192
|
+
...partA,
|
|
193
|
+
...generalConfiguration,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}}
|
|
197
|
+
/>
|
|
198
|
+
</div>
|
|
199
|
+
|
|
200
|
+
<div className={classes.part}>
|
|
201
|
+
{model.partLabels && <div>{secondPart}</div>}
|
|
202
|
+
<ebsr-multiple-choice-configure
|
|
203
|
+
id="B"
|
|
204
|
+
key="partB"
|
|
205
|
+
ref={(ref) => {
|
|
206
|
+
if (ref) {
|
|
207
|
+
// do not use destructuring to get model from props
|
|
208
|
+
this.partB = ref;
|
|
209
|
+
this.partB._model = {
|
|
210
|
+
...this.props.model.partB,
|
|
211
|
+
errors: (this.props.model.errors && this.props.model.errors.partB) || {},
|
|
212
|
+
};
|
|
213
|
+
this.partB.configuration = {
|
|
214
|
+
...partB,
|
|
215
|
+
...generalConfiguration,
|
|
216
|
+
};
|
|
190
217
|
}
|
|
191
218
|
}}
|
|
192
219
|
/>
|
|
193
|
-
}
|
|
194
|
-
>
|
|
195
|
-
<div>
|
|
196
|
-
<div className={classes.part}>
|
|
197
|
-
{model.partLabels && <p>{firstPart}</p>}
|
|
198
|
-
<ebsr-multiple-choice-configure
|
|
199
|
-
id="A"
|
|
200
|
-
key="partA"
|
|
201
|
-
ref={ref => {
|
|
202
|
-
if (ref) {
|
|
203
|
-
// do not use destructuring to get model from props
|
|
204
|
-
this.partA = ref;
|
|
205
|
-
this.partA._model = cloneDeep(this.props.model.partA);
|
|
206
|
-
this.partA.configuration = {
|
|
207
|
-
...partA,
|
|
208
|
-
...generalConfiguration
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
}}
|
|
212
|
-
/>
|
|
213
|
-
</div>
|
|
214
|
-
|
|
215
|
-
<div className={classes.part}>
|
|
216
|
-
{model.partLabels && <p>{secondPart}</p>}
|
|
217
|
-
<ebsr-multiple-choice-configure
|
|
218
|
-
id="B"
|
|
219
|
-
key="partB"
|
|
220
|
-
ref={ref => {
|
|
221
|
-
if (ref) {
|
|
222
|
-
// do not use destructuring to get model from props
|
|
223
|
-
this.partB = ref;
|
|
224
|
-
this.partB._model = cloneDeep(this.props.model.partB);
|
|
225
|
-
this.partB.configuration = {
|
|
226
|
-
...partB,
|
|
227
|
-
...generalConfiguration
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
}}
|
|
231
|
-
/>
|
|
232
|
-
</div>
|
|
233
220
|
</div>
|
|
234
|
-
</
|
|
235
|
-
</
|
|
221
|
+
</div>
|
|
222
|
+
</layout.ConfigLayout>
|
|
236
223
|
);
|
|
237
224
|
}
|
|
238
225
|
}
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-controller@6.1.0...@pie-element/ebsr-controller@6.1.1) (2022-12-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* trigger build (these versions were released in Nov 15 but code was not updated for some reason) ([3ddbbbd](https://github.com/pie-framework/pie-elements/commit/3ddbbbdb08f41642bb734af9559dcd9f1536439b))
|
|
12
|
+
* update libs ([441f403](https://github.com/pie-framework/pie-elements/commit/441f403870b7bec0d61fab58b8d93dbe0ead4c32))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [6.0.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-controller@6.0.4...@pie-element/ebsr-controller@6.0.5) (2022-05-30)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @pie-element/ebsr-controller
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
## [6.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-controller@6.0.0...@pie-element/ebsr-controller@6.0.1) (2021-09-01)
|
|
7
27
|
|
|
8
28
|
**Note:** Version bump only for package @pie-element/ebsr-controller
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["partA","choicePrefix","choices","value","label","prompt","disabled","partB"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,YAAY,EAAE,SADT;AAELC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,GADT;AAEEC,MAAAA,KAAK,EAAE;AAFT,KADO,CAFJ;AAQLC,IAAAA,MAAM,EAAE,UARH;AASLC,IAAAA,QAAQ,EAAE;AATL,GADM;AAYbC,EAAAA,KAAK,EAAE;AACLN,IAAAA,YAAY,EAAE,SADT;AAELC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,GADT;AAEEC,MAAAA,KAAK,EAAE;AAFT,KADO,CAFJ;AAQLC,IAAAA,MAAM,EAAE,UARH;AASLC,IAAAA,QAAQ,EAAE;AATL;AAZM,C","sourcesContent":["export default {\n partA: {\n choicePrefix: 'letters',\n choices: [\n {\n value: 'a',\n label: 'label a',\n }
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["partA","choicePrefix","choices","value","label","prompt","disabled","partB"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,YAAY,EAAE,SADT;AAELC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,GADT;AAEEC,MAAAA,KAAK,EAAE;AAFT,KADO,CAFJ;AAQLC,IAAAA,MAAM,EAAE,UARH;AASLC,IAAAA,QAAQ,EAAE;AATL,GADM;AAYbC,EAAAA,KAAK,EAAE;AACLN,IAAAA,YAAY,EAAE,SADT;AAELC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,GADT;AAEEC,MAAAA,KAAK,EAAE;AAFT,KADO,CAFJ;AAQLC,IAAAA,MAAM,EAAE,UARH;AASLC,IAAAA,QAAQ,EAAE;AATL;AAZM,C","sourcesContent":["export default {\n partA: {\n choicePrefix: 'letters',\n choices: [\n {\n value: 'a',\n label: 'label a',\n },\n ],\n prompt: 'prompt a',\n disabled: false,\n },\n partB: {\n choicePrefix: 'letters',\n choices: [\n {\n value: 'b',\n label: 'label b',\n },\n ],\n prompt: 'prompt b',\n disabled: false,\n },\n};\n"],"file":"defaults.js"}
|