@pie-element/multiple-choice 5.11.0-ps.13 → 6.0.0-strikethrough.1
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 +39 -0
- package/configure/CHANGELOG.md +31 -0
- package/configure/lib/__tests__/root.test.js +271 -0
- package/configure/lib/defaults.js +17 -4
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +9 -4
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +68 -19
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +4 -4
- package/controller/CHANGELOG.md +13 -0
- package/controller/lib/__tests__/index.test.js +864 -0
- package/controller/lib/__tests__/utils.test.js +8 -0
- package/controller/lib/defaults.js +4 -2
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +25 -7
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +9 -1
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/demo/generate.js +17 -14
- package/lib/__tests__/choice-input-test.js +124 -0
- package/lib/__tests__/index-test.js +22 -0
- package/lib/__tests__/multiple-choice-test.js +237 -0
- package/lib/__tests__/session-updater-test.js +72 -0
- package/lib/choice-input.js +79 -18
- package/lib/choice-input.js.map +1 -1
- package/lib/choice.js +149 -0
- package/lib/choice.js.map +1 -0
- package/lib/feedback-tick.js +1 -1
- package/lib/feedback-tick.js.map +1 -1
- package/lib/index.js +70 -3
- package/lib/index.js.map +1 -1
- package/lib/main.js +1 -1
- package/lib/main.js.map +1 -1
- package/lib/multiple-choice.js +84 -144
- package/lib/multiple-choice.js.map +1 -1
- package/lib/print.js +125 -0
- package/lib/print.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
|
|
9
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
|
+
|
|
11
|
+
var _enzyme = require("enzyme");
|
|
12
|
+
|
|
13
|
+
var _multipleChoice = require("../multiple-choice");
|
|
14
|
+
|
|
15
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
16
|
+
|
|
17
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
+
|
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
20
|
+
|
|
21
|
+
describe('Choice', function () {
|
|
22
|
+
var wrapper,
|
|
23
|
+
onChoiceChanged = jest.fn();
|
|
24
|
+
beforeEach(function () {
|
|
25
|
+
wrapper = function wrapper(extras) {
|
|
26
|
+
var props = _objectSpread({
|
|
27
|
+
classes: {},
|
|
28
|
+
choice: {},
|
|
29
|
+
index: 0,
|
|
30
|
+
choicesLength: 1,
|
|
31
|
+
showCorrect: false,
|
|
32
|
+
isEvaluateMode: false,
|
|
33
|
+
choiceMode: 'radio',
|
|
34
|
+
disabled: true,
|
|
35
|
+
onChoiceChanged: onChoiceChanged,
|
|
36
|
+
checked: true,
|
|
37
|
+
correctness: 'correct',
|
|
38
|
+
displayKey: '0',
|
|
39
|
+
choicesLayout: 'grid',
|
|
40
|
+
gridColumns: 2
|
|
41
|
+
}, extras);
|
|
42
|
+
|
|
43
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_multipleChoice.Choice, props));
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
describe('snapshot', function () {
|
|
47
|
+
it('renders', function () {
|
|
48
|
+
expect(wrapper()).toMatchSnapshot();
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('logic', function () {
|
|
52
|
+
it('does not call onChoiceChanged if disabled is true', function () {
|
|
53
|
+
var w = wrapper();
|
|
54
|
+
w.instance().onChange();
|
|
55
|
+
expect(onChoiceChanged).not.toHaveBeenCalled();
|
|
56
|
+
});
|
|
57
|
+
it('calls onChoiceChanged if disabled is false', function () {
|
|
58
|
+
var w = wrapper({
|
|
59
|
+
disabled: false
|
|
60
|
+
});
|
|
61
|
+
w.instance().onChange();
|
|
62
|
+
expect(onChoiceChanged).toHaveBeenCalled();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('CorespringChoice', function () {
|
|
67
|
+
var wrapper, toggle;
|
|
68
|
+
beforeEach(function () {
|
|
69
|
+
toggle = function toggle() {
|
|
70
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, "mocked-toggle");
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
var mkWrapper = function mkWrapper(opts) {
|
|
75
|
+
var clone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
76
|
+
opts = clone ? opts = _lodash["default"].merge({
|
|
77
|
+
classes: {},
|
|
78
|
+
choices: [],
|
|
79
|
+
disabled: false,
|
|
80
|
+
keyMode: 'letters',
|
|
81
|
+
onChoiceChanged: jest.fn(),
|
|
82
|
+
mode: 'gather'
|
|
83
|
+
}, opts) : opts;
|
|
84
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_multipleChoice.MultipleChoice, opts));
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
describe('snapshot', function () {
|
|
88
|
+
it('renders', function () {
|
|
89
|
+
wrapper = mkWrapper({
|
|
90
|
+
choices: [{
|
|
91
|
+
value: 'a',
|
|
92
|
+
label: 'label a',
|
|
93
|
+
correct: true,
|
|
94
|
+
feedback: 'great'
|
|
95
|
+
}, {
|
|
96
|
+
value: 'b',
|
|
97
|
+
label: 'label b'
|
|
98
|
+
}, {
|
|
99
|
+
value: 'c',
|
|
100
|
+
label: 'label c',
|
|
101
|
+
correct: true,
|
|
102
|
+
feedback: 'great'
|
|
103
|
+
}]
|
|
104
|
+
});
|
|
105
|
+
expect(wrapper).toMatchSnapshot();
|
|
106
|
+
});
|
|
107
|
+
describe('renders incorrect tick if one answer is correct but it is not checked', function () {
|
|
108
|
+
it('renders', function () {
|
|
109
|
+
var w = mkWrapper({
|
|
110
|
+
mode: 'evaluate',
|
|
111
|
+
keyMode: 'none',
|
|
112
|
+
choices: [{
|
|
113
|
+
value: 'a',
|
|
114
|
+
label: 'label a',
|
|
115
|
+
correct: true,
|
|
116
|
+
feedback: 'great'
|
|
117
|
+
}, {
|
|
118
|
+
value: 'b',
|
|
119
|
+
label: 'label b'
|
|
120
|
+
}, {
|
|
121
|
+
value: 'c',
|
|
122
|
+
label: 'label c',
|
|
123
|
+
correct: true,
|
|
124
|
+
feedback: 'great'
|
|
125
|
+
}],
|
|
126
|
+
session: {
|
|
127
|
+
value: ['a']
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
expect(w).toMatchSnapshot();
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('getCorrectness', function () {
|
|
134
|
+
var itemChoices = [{
|
|
135
|
+
value: 'a',
|
|
136
|
+
label: 'label a',
|
|
137
|
+
correct: true,
|
|
138
|
+
feedback: 'great'
|
|
139
|
+
}, {
|
|
140
|
+
value: 'b',
|
|
141
|
+
label: 'label b'
|
|
142
|
+
}, {
|
|
143
|
+
value: 'c',
|
|
144
|
+
label: 'label c',
|
|
145
|
+
feedback: 'great'
|
|
146
|
+
}, {
|
|
147
|
+
value: 'd',
|
|
148
|
+
label: 'label d',
|
|
149
|
+
correct: true,
|
|
150
|
+
feedback: 'great'
|
|
151
|
+
}];
|
|
152
|
+
var w = mkWrapper({
|
|
153
|
+
mode: 'evaluate',
|
|
154
|
+
choices: itemChoices,
|
|
155
|
+
session: {
|
|
156
|
+
value: ['a', 'c']
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
describe('showCorrectToggle disabled (state.showCorrect is false)', function () {
|
|
160
|
+
it('shows choice correctness only if was checked', function () {
|
|
161
|
+
// this one was selected and is correct
|
|
162
|
+
expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct'); // this one was not selected and is incorrect
|
|
163
|
+
|
|
164
|
+
expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined); // this one was selected, but is incorrect
|
|
165
|
+
|
|
166
|
+
expect(w.instance().getCorrectness(itemChoices[2])).toEqual('incorrect'); // this one was not selected and is correct
|
|
167
|
+
|
|
168
|
+
expect(w.instance().getCorrectness(itemChoices[3])).toEqual('incorrect');
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
describe('showCorrectToggle enabled (state.showCorrect is true)', function () {
|
|
172
|
+
it('shows choice correctness no matter if was checked or not', function () {
|
|
173
|
+
w.instance().state.showCorrect = true; // this one is correct
|
|
174
|
+
|
|
175
|
+
expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct'); // this one is not correct
|
|
176
|
+
|
|
177
|
+
expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined); // this one is not correct
|
|
178
|
+
|
|
179
|
+
expect(w.instance().getCorrectness(itemChoices[2])).toEqual(undefined); // this one is correct
|
|
180
|
+
|
|
181
|
+
expect(w.instance().getCorrectness(itemChoices[3])).toEqual('correct');
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
describe('onToggle', function () {
|
|
186
|
+
it('toggles the state', function () {
|
|
187
|
+
var w = mkWrapper({
|
|
188
|
+
mode: 'evaluate'
|
|
189
|
+
});
|
|
190
|
+
expect(w.state('showCorrect')).toEqual(false);
|
|
191
|
+
w.instance().onToggle();
|
|
192
|
+
expect(w.state('showCorrect')).toEqual(true);
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
describe('Toggle', function () {
|
|
196
|
+
it('toggle is rendered', function () {
|
|
197
|
+
var t = mkWrapper().find(_correctAnswerToggle["default"]);
|
|
198
|
+
expect(t.length).toEqual(1);
|
|
199
|
+
});
|
|
200
|
+
it('toggle show is set to false', function () {
|
|
201
|
+
expect(mkWrapper().find(_correctAnswerToggle["default"]).prop('show')).toEqual(false);
|
|
202
|
+
});
|
|
203
|
+
it('shows toggle if mode is evaluate, feedback is enabled and responseCorrect is false', function () {
|
|
204
|
+
expect(mkWrapper({
|
|
205
|
+
mode: 'evaluate',
|
|
206
|
+
responseCorrect: false,
|
|
207
|
+
feedbackEnabled: true
|
|
208
|
+
}).find(_correctAnswerToggle["default"]).prop('show')).toEqual(true);
|
|
209
|
+
});
|
|
210
|
+
it('hides toggle if mode is evaluate and responseCorrect is false', function () {
|
|
211
|
+
expect(mkWrapper({
|
|
212
|
+
mode: 'evaluate',
|
|
213
|
+
responseCorrect: true
|
|
214
|
+
}).find(_correctAnswerToggle["default"]).prop('show')).toEqual(false);
|
|
215
|
+
});
|
|
216
|
+
it('not toggled if showCorrect is false', function () {
|
|
217
|
+
var w = mkWrapper({
|
|
218
|
+
mode: 'evaluate'
|
|
219
|
+
});
|
|
220
|
+
w.setState({
|
|
221
|
+
showCorrect: false
|
|
222
|
+
});
|
|
223
|
+
expect(w.find(_correctAnswerToggle["default"]).prop('toggled')).toEqual(false);
|
|
224
|
+
});
|
|
225
|
+
it('is toggled showCorrect=true && mode=evaluate', function () {
|
|
226
|
+
var w = mkWrapper({
|
|
227
|
+
mode: 'evaluate'
|
|
228
|
+
});
|
|
229
|
+
w.setState({
|
|
230
|
+
showCorrect: true
|
|
231
|
+
});
|
|
232
|
+
expect(w.find(_correctAnswerToggle["default"]).prop('toggled')).toEqual(true);
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbXVsdGlwbGUtY2hvaWNlLXRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwid3JhcHBlciIsIm9uQ2hvaWNlQ2hhbmdlZCIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJleHRyYXMiLCJwcm9wcyIsImNsYXNzZXMiLCJjaG9pY2UiLCJpbmRleCIsImNob2ljZXNMZW5ndGgiLCJzaG93Q29ycmVjdCIsImlzRXZhbHVhdGVNb2RlIiwiY2hvaWNlTW9kZSIsImRpc2FibGVkIiwiY2hlY2tlZCIsImNvcnJlY3RuZXNzIiwiZGlzcGxheUtleSIsImNob2ljZXNMYXlvdXQiLCJncmlkQ29sdW1ucyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwidyIsImluc3RhbmNlIiwib25DaGFuZ2UiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwidG9nZ2xlIiwibWtXcmFwcGVyIiwib3B0cyIsImNsb25lIiwiXyIsIm1lcmdlIiwiY2hvaWNlcyIsImtleU1vZGUiLCJtb2RlIiwidmFsdWUiLCJsYWJlbCIsImNvcnJlY3QiLCJmZWVkYmFjayIsInNlc3Npb24iLCJpdGVtQ2hvaWNlcyIsImdldENvcnJlY3RuZXNzIiwidG9FcXVhbCIsInVuZGVmaW5lZCIsInN0YXRlIiwib25Ub2dnbGUiLCJ0IiwiZmluZCIsIkNvcnJlY3RBbnN3ZXJUb2dnbGUiLCJsZW5ndGgiLCJwcm9wIiwicmVzcG9uc2VDb3JyZWN0IiwiZmVlZGJhY2tFbmFibGVkIiwic2V0U3RhdGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFHQUEsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFNO0FBQ3ZCLE1BQUlDLE9BQUo7QUFBQSxNQUFhQyxlQUFlLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUEvQjtBQUVBQyxFQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmSixJQUFBQSxPQUFPLEdBQUcsaUJBQUFL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UUFBRixDQUFXO0FBQUU1QyxVQUFBQSxXQUFXLEVBQUU7QUFBZixTQUFYO0FBQ0FVLFFBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDMEIsSUFBRixDQUFPQywrQkFBUCxFQUE0QkUsSUFBNUIsQ0FBaUMsU0FBakMsQ0FBRCxDQUFOLENBQW9EUixPQUFwRCxDQUE0RCxLQUE1RDtBQUNELE9BSkMsQ0FBRjtBQU1BeEIsTUFBQUEsRUFBRSxDQUFDLDhDQUFELEVBQWlELFlBQU07QUFDdkQsWUFBSUcsQ0FBQyxHQUFHTSxTQUFTLENBQUM7QUFBRU8sVUFBQUEsSUFBSSxFQUFFO0FBQVIsU0FBRCxDQUFqQjtBQUNBYixRQUFBQSxDQUFDLENBQUNnQyxRQUFGLENBQVc7QUFBRTVDLFVBQUFBLFdBQVcsRUFBRTtBQUFmLFNBQVg7QUFDQVUsUUFBQUEsTUFBTSxDQUFDRSxDQUFDLENBQUMwQixJQUFGLENBQU9DLCtCQUFQLEVBQTRCRSxJQUE1QixDQUFpQyxTQUFqQyxDQUFELENBQU4sQ0FBb0RSLE9BQXBELENBQTRELElBQTVEO0FBQ0QsT0FKQyxDQUFGO0FBS0QsS0F6Q08sQ0FBUjtBQTBDRCxHQS9ITyxDQUFSO0FBZ0lELENBM0pPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IHsgTXVsdGlwbGVDaG9pY2UsIENob2ljZSB9IGZyb20gJy4uL211bHRpcGxlLWNob2ljZSc7XG5pbXBvcnQgQ29ycmVjdEFuc3dlclRvZ2dsZSBmcm9tICdAcGllLWxpYi9jb3JyZWN0LWFuc3dlci10b2dnbGUnO1xuXG5cbmRlc2NyaWJlKCdDaG9pY2UnLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyLCBvbkNob2ljZUNoYW5nZWQgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgd3JhcHBlciA9IGV4dHJhcyA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIGNob2ljZToge30sXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBjaG9pY2VzTGVuZ3RoOiAxLFxuICAgICAgICBzaG93Q29ycmVjdDogZmFsc2UsXG4gICAgICAgIGlzRXZhbHVhdGVNb2RlOiBmYWxzZSxcbiAgICAgICAgY2hvaWNlTW9kZTogJ3JhZGlvJyxcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICAgICAgY29ycmVjdG5lc3M6ICdjb3JyZWN0JyxcbiAgICAgICAgZGlzcGxheUtleTogJzAnLFxuICAgICAgICBjaG9pY2VzTGF5b3V0OiAnZ3JpZCcsXG4gICAgICAgIGdyaWRDb2x1bW5zOiAyLFxuICAgICAgICAuLi5leHRyYXNcbiAgICAgIH07XG4gICAgICByZXR1cm4gc2hhbGxvdyg8Q2hvaWNlIHsuLi5wcm9wc30vPik7XG4gICAgfTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBpdCgnZG9lcyBub3QgY2FsbCBvbkNob2ljZUNoYW5nZWQgaWYgZGlzYWJsZWQgaXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIGxldCB3ID0gd3JhcHBlcigpO1xuXG4gICAgICB3Lmluc3RhbmNlKCkub25DaGFuZ2UoKTtcblxuICAgICAgZXhwZWN0KG9uQ2hvaWNlQ2hhbmdlZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNob2ljZUNoYW5nZWQgaWYgZGlzYWJsZWQgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICBsZXQgdyA9IHdyYXBwZXIoeyBkaXNhYmxlZDogZmFsc2UgfSk7XG5cbiAgICAgIHcuaW5zdGFuY2UoKS5vbkNoYW5nZSgpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDb3Jlc3ByaW5nQ2hvaWNlJywgKCkgPT4ge1xuICBsZXQgd3JhcHBlciwgdG9nZ2xlO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRvZ2dsZSA9ICgpID0+IHtcbiAgICAgIHJldHVybiA8ZGl2Pm1vY2tlZC10b2dnbGU8L2Rpdj47XG4gICAgfTtcbiAgfSk7XG5cbiAgbGV0IG1rV3JhcHBlciA9IChvcHRzLCBjbG9uZSA9IHRydWUpID0+IHtcbiAgICBvcHRzID0gY2xvbmVcbiAgICAgID8gKG9wdHMgPSBfLm1lcmdlKFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGtleU1vZGU6ICdsZXR0ZXJzJyxcbiAgICAgICAgICBvbkNob2ljZUNoYW5nZWQ6IGplc3QuZm4oKSxcbiAgICAgICAgICBtb2RlOiAnZ2F0aGVyJ1xuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgICApKVxuICAgICAgOiBvcHRzO1xuXG4gICAgcmV0dXJuIHNoYWxsb3coPE11bHRpcGxlQ2hvaWNlIHsuLi5vcHRzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgd3JhcHBlciA9IG1rV3JhcHBlcih7XG4gICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICB7IHZhbHVlOiAnYScsIGxhYmVsOiAnbGFiZWwgYScsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgICAgeyB2YWx1ZTogJ2InLCBsYWJlbDogJ2xhYmVsIGInIH0sXG4gICAgICAgICAgeyB2YWx1ZTogJ2MnLCBsYWJlbDogJ2xhYmVsIGMnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmVuZGVycyBpbmNvcnJlY3QgdGljayBpZiBvbmUgYW5zd2VyIGlzIGNvcnJlY3QgYnV0IGl0IGlzIG5vdCBjaGVja2VkJywgKCkgPT4ge1xuICAgICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHtcbiAgICAgICAgICBtb2RlOiAnZXZhbHVhdGUnLFxuICAgICAgICAgIGtleU1vZGU6ICdub25lJyxcbiAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnYScsIGxhYmVsOiAnbGFiZWwgYScsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYicsIGxhYmVsOiAnbGFiZWwgYicgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6ICdjJywgbGFiZWw6ICdsYWJlbCBjJywgY29ycmVjdDogdHJ1ZSwgZmVlZGJhY2s6ICdncmVhdCcgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2Vzc2lvbjoge1xuICAgICAgICAgICAgdmFsdWU6IFsnYSddXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdnZXRDb3JyZWN0bmVzcycsICgpID0+IHtcbiAgICAgIGxldCBpdGVtQ2hvaWNlcyA9IFtcbiAgICAgICAgeyB2YWx1ZTogJ2EnLCBsYWJlbDogJ2xhYmVsIGEnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgICB7IHZhbHVlOiAnYicsIGxhYmVsOiAnbGFiZWwgYicgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2MnLCBsYWJlbDogJ2xhYmVsIGMnLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgICB7IHZhbHVlOiAnZCcsIGxhYmVsOiAnbGFiZWwgZCcsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH1cbiAgICAgIF07XG4gICAgICBsZXQgdyA9IG1rV3JhcHBlcih7XG4gICAgICAgIG1vZGU6ICdldmFsdWF0ZScsXG4gICAgICAgIGNob2ljZXM6IGl0ZW1DaG9pY2VzLFxuICAgICAgICBzZXNzaW9uOiB7XG4gICAgICAgICAgdmFsdWU6IFsnYScsICdjJ11cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdzaG93Q29ycmVjdFRvZ2dsZSBkaXNhYmxlZCAoc3RhdGUuc2hvd0NvcnJlY3QgaXMgZmFsc2UpJywgKCkgPT4ge1xuICAgICAgICBpdCgnc2hvd3MgY2hvaWNlIGNvcnJlY3RuZXNzIG9ubHkgaWYgd2FzIGNoZWNrZWQnLCAoKSA9PiB7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgd2FzIHNlbGVjdGVkIGFuZCBpcyBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1swXSkpLnRvRXF1YWwoJ2NvcnJlY3QnKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSB3YXMgbm90IHNlbGVjdGVkIGFuZCBpcyBpbmNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzFdKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuICAgICAgICAgIC8vIHRoaXMgb25lIHdhcyBzZWxlY3RlZCwgYnV0IGlzIGluY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMl0pKS50b0VxdWFsKCdpbmNvcnJlY3QnKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSB3YXMgbm90IHNlbGVjdGVkIGFuZCBpcyBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1szXSkpLnRvRXF1YWwoJ2luY29ycmVjdCcpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnc2hvd0NvcnJlY3RUb2dnbGUgZW5hYmxlZCAoc3RhdGUuc2hvd0NvcnJlY3QgaXMgdHJ1ZSknLCAoKSA9PiB7XG4gICAgICAgIGl0KCdzaG93cyBjaG9pY2UgY29ycmVjdG5lc3Mgbm8gbWF0dGVyIGlmIHdhcyBjaGVja2VkIG9yIG5vdCcsICgpID0+IHtcbiAgICAgICAgICB3Lmluc3RhbmNlKCkuc3RhdGUuc2hvd0NvcnJlY3QgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gdGhpcyBvbmUgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMF0pKS50b0VxdWFsKCdjb3JyZWN0Jyk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgaXMgbm90IGNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzFdKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuICAgICAgICAgIC8vIHRoaXMgb25lIGlzIG5vdCBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1syXSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSBpcyBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1szXSkpLnRvRXF1YWwoJ2NvcnJlY3QnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblRvZ2dsZScsICgpID0+IHtcbiAgICAgIGl0KCd0b2dnbGVzIHRoZSBzdGF0ZScsICgpID0+IHtcbiAgICAgICAgbGV0IHcgPSBta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnIH0pO1xuICAgICAgICBleHBlY3Qody5zdGF0ZSgnc2hvd0NvcnJlY3QnKSkudG9FcXVhbChmYWxzZSk7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblRvZ2dsZSgpO1xuICAgICAgICBleHBlY3Qody5zdGF0ZSgnc2hvd0NvcnJlY3QnKSkudG9FcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1RvZ2dsZScsICgpID0+IHtcbiAgICAgIGl0KCd0b2dnbGUgaXMgcmVuZGVyZWQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHQgPSBta1dyYXBwZXIoKS5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpO1xuICAgICAgICBleHBlY3QodC5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3RvZ2dsZSBzaG93IGlzIHNldCB0byBmYWxzZScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KFxuICAgICAgICAgIG1rV3JhcHBlcigpXG4gICAgICAgICAgICAuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKVxuICAgICAgICAgICAgLnByb3AoJ3Nob3cnKVxuICAgICAgICApLnRvRXF1YWwoZmFsc2UpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG93cyB0b2dnbGUgaWYgbW9kZSBpcyBldmFsdWF0ZSwgZmVlZGJhY2sgaXMgZW5hYmxlZCBhbmQgcmVzcG9uc2VDb3JyZWN0IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoXG4gICAgICAgICAgbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJywgcmVzcG9uc2VDb3JyZWN0OiBmYWxzZSwgZmVlZGJhY2tFbmFibGVkOiB0cnVlIH0pXG4gICAgICAgICAgICAuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKVxuICAgICAgICAgICAgLnByb3AoJ3Nob3cnKVxuICAgICAgICApLnRvRXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2hpZGVzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICBta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnLCByZXNwb25zZUNvcnJlY3Q6IHRydWUgfSlcbiAgICAgICAgICAgIC5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpXG4gICAgICAgICAgICAucHJvcCgnc2hvdycpXG4gICAgICAgICkudG9FcXVhbChmYWxzZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ25vdCB0b2dnbGVkIGlmIHNob3dDb3JyZWN0IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBsZXQgdyA9IG1rV3JhcHBlcih7IG1vZGU6ICdldmFsdWF0ZScgfSk7XG4gICAgICAgIHcuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogZmFsc2UgfSk7XG4gICAgICAgIGV4cGVjdCh3LmZpbmQoQ29ycmVjdEFuc3dlclRvZ2dsZSkucHJvcCgndG9nZ2xlZCcpKS50b0VxdWFsKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnaXMgdG9nZ2xlZCBzaG93Q29ycmVjdD10cnVlICYmIG1vZGU9ZXZhbHVhdGUnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJyB9KTtcbiAgICAgICAgdy5zZXRTdGF0ZSh7IHNob3dDb3JyZWN0OiB0cnVlIH0pO1xuICAgICAgICBleHBlY3Qody5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpLnByb3AoJ3RvZ2dsZWQnKSkudG9FcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _sessionUpdater = require("../session-updater");
|
|
4
|
+
|
|
5
|
+
describe('session-updater', function () {
|
|
6
|
+
var updater;
|
|
7
|
+
beforeEach(function () {});
|
|
8
|
+
describe('updateSessionValue', function () {
|
|
9
|
+
var assert = function assert(mode, session, data, expected) {
|
|
10
|
+
return function () {
|
|
11
|
+
(0, _sessionUpdater.updateSessionValue)(session, mode, data);
|
|
12
|
+
expect(session.value).toEqual(expected);
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
describe('checkbox', function () {
|
|
17
|
+
var cb = assert.bind(null, 'checkbox');
|
|
18
|
+
it('adds 1', cb({
|
|
19
|
+
value: []
|
|
20
|
+
}, {
|
|
21
|
+
value: '1',
|
|
22
|
+
selected: true
|
|
23
|
+
}, ['1']));
|
|
24
|
+
it('removes 1', cb({
|
|
25
|
+
value: ['1']
|
|
26
|
+
}, {
|
|
27
|
+
value: '1',
|
|
28
|
+
selected: false
|
|
29
|
+
}, []));
|
|
30
|
+
it('adds 2', cb({
|
|
31
|
+
value: ['1']
|
|
32
|
+
}, {
|
|
33
|
+
value: '2',
|
|
34
|
+
selected: true
|
|
35
|
+
}, ['1', '2']));
|
|
36
|
+
it('does not add duplicate 1', cb({
|
|
37
|
+
value: ['1']
|
|
38
|
+
}, {
|
|
39
|
+
value: '1',
|
|
40
|
+
selected: true
|
|
41
|
+
}, ['1']));
|
|
42
|
+
it('does not remove if not in arrary', cb({
|
|
43
|
+
value: ['1']
|
|
44
|
+
}, {
|
|
45
|
+
value: '2',
|
|
46
|
+
selected: false
|
|
47
|
+
}, ['1']));
|
|
48
|
+
});
|
|
49
|
+
describe('radio', function () {
|
|
50
|
+
var cb = assert.bind(null, 'radio');
|
|
51
|
+
it('adds 1', cb({
|
|
52
|
+
value: []
|
|
53
|
+
}, {
|
|
54
|
+
value: '1',
|
|
55
|
+
selected: true
|
|
56
|
+
}, ['1']));
|
|
57
|
+
it('adds 2', cb({
|
|
58
|
+
value: ['1']
|
|
59
|
+
}, {
|
|
60
|
+
value: '2',
|
|
61
|
+
selected: true
|
|
62
|
+
}, ['2']));
|
|
63
|
+
it('does not add duplicate 1', cb({
|
|
64
|
+
value: ['1']
|
|
65
|
+
}, {
|
|
66
|
+
value: '1',
|
|
67
|
+
selected: true
|
|
68
|
+
}, ['1']));
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vc2Vzc2lvbi11cGRhdGVyLXRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwidXBkYXRlciIsImJlZm9yZUVhY2giLCJhc3NlcnQiLCJtb2RlIiwic2Vzc2lvbiIsImRhdGEiLCJleHBlY3RlZCIsImV4cGVjdCIsInZhbHVlIiwidG9FcXVhbCIsImNiIiwiYmluZCIsIml0Iiwic2VsZWN0ZWQiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBRUFBLFFBQVEsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQ2hDLE1BQUlDLE9BQUo7QUFFQUMsRUFBQUEsVUFBVSxDQUFDLFlBQU0sQ0FBRSxDQUFULENBQVY7QUFFQUYsRUFBQUEsUUFBUSxDQUFDLG9CQUFELEVBQXVCLFlBQU07QUFDbkMsUUFBTUcsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQ0MsSUFBRCxFQUFPQyxPQUFQLEVBQWdCQyxJQUFoQixFQUFzQkMsUUFBdEIsRUFBbUM7QUFDaEQsYUFBTyxZQUFNO0FBQ1gsZ0RBQW1CRixPQUFuQixFQUE0QkQsSUFBNUIsRUFBa0NFLElBQWxDO0FBQ0FFLFFBQUFBLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDSSxLQUFULENBQU4sQ0FBc0JDLE9BQXRCLENBQThCSCxRQUE5QjtBQUNELE9BSEQ7QUFJRCxLQUxEOztBQU9BUCxJQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekIsVUFBTVcsRUFBRSxHQUFHUixNQUFNLENBQUNTLElBQVAsQ0FBWSxJQUFaLEVBQWtCLFVBQWxCLENBQVg7QUFDQUMsTUFBQUEsRUFBRSxDQUFDLFFBQUQsRUFBV0YsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRTtBQUFULE9BQUQsRUFBZ0I7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQWhCLEVBQWdELENBQUMsR0FBRCxDQUFoRCxDQUFiLENBQUY7QUFDQUQsTUFBQUEsRUFBRSxDQUNBLFdBREEsRUFFQUYsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFvRCxFQUFwRCxDQUZGLENBQUY7QUFJQUQsTUFBQUEsRUFBRSxDQUNBLFFBREEsRUFFQUYsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFtRCxDQUFDLEdBQUQsRUFBTSxHQUFOLENBQW5ELENBRkYsQ0FBRjtBQUlBRCxNQUFBQSxFQUFFLENBQ0EsMEJBREEsRUFFQUYsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFtRCxDQUFDLEdBQUQsQ0FBbkQsQ0FGRixDQUFGO0FBSUFELE1BQUFBLEVBQUUsQ0FDQSxrQ0FEQSxFQUVBRixFQUFFLENBQUM7QUFBRUYsUUFBQUEsS0FBSyxFQUFFLENBQUMsR0FBRDtBQUFULE9BQUQsRUFBbUI7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQW5CLEVBQW9ELENBQUMsR0FBRCxDQUFwRCxDQUZGLENBQUY7QUFJRCxLQW5CTyxDQUFSO0FBcUJBZCxJQUFBQSxRQUFRLENBQUMsT0FBRCxFQUFVLFlBQU07QUFDdEIsVUFBTVcsRUFBRSxHQUFHUixNQUFNLENBQUNTLElBQVAsQ0FBWSxJQUFaLEVBQWtCLE9BQWxCLENBQVg7QUFDQUMsTUFBQUEsRUFBRSxDQUFDLFFBQUQsRUFBV0YsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRTtBQUFULE9BQUQsRUFBZ0I7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQWhCLEVBQWdELENBQUMsR0FBRCxDQUFoRCxDQUFiLENBQUY7QUFDQUQsTUFBQUEsRUFBRSxDQUFDLFFBQUQsRUFBV0YsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFtRCxDQUFDLEdBQUQsQ0FBbkQsQ0FBYixDQUFGO0FBQ0FELE1BQUFBLEVBQUUsQ0FDQSwwQkFEQSxFQUVBRixFQUFFLENBQUM7QUFBRUYsUUFBQUEsS0FBSyxFQUFFLENBQUMsR0FBRDtBQUFULE9BQUQsRUFBbUI7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQW5CLEVBQW1ELENBQUMsR0FBRCxDQUFuRCxDQUZGLENBQUY7QUFJRCxLQVJPLENBQVI7QUFTRCxHQXRDTyxDQUFSO0FBdUNELENBNUNPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1cGRhdGVTZXNzaW9uVmFsdWUgfSBmcm9tICcuLi9zZXNzaW9uLXVwZGF0ZXInO1xuXG5kZXNjcmliZSgnc2Vzc2lvbi11cGRhdGVyJywgKCkgPT4ge1xuICBsZXQgdXBkYXRlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHt9KTtcblxuICBkZXNjcmliZSgndXBkYXRlU2Vzc2lvblZhbHVlJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydCA9IChtb2RlLCBzZXNzaW9uLCBkYXRhLCBleHBlY3RlZCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdXBkYXRlU2Vzc2lvblZhbHVlKHNlc3Npb24sIG1vZGUsIGRhdGEpO1xuICAgICAgICBleHBlY3Qoc2Vzc2lvbi52YWx1ZSkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBkZXNjcmliZSgnY2hlY2tib3gnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjYiA9IGFzc2VydC5iaW5kKG51bGwsICdjaGVja2JveCcpO1xuICAgICAgaXQoJ2FkZHMgMScsIGNiKHsgdmFsdWU6IFtdIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycxJ10pKTtcbiAgICAgIGl0KFxuICAgICAgICAncmVtb3ZlcyAxJyxcbiAgICAgICAgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogZmFsc2UgfSwgW10pXG4gICAgICApO1xuICAgICAgaXQoXG4gICAgICAgICdhZGRzIDInLFxuICAgICAgICBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMicsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMScsICcyJ10pXG4gICAgICApO1xuICAgICAgaXQoXG4gICAgICAgICdkb2VzIG5vdCBhZGQgZHVwbGljYXRlIDEnLFxuICAgICAgICBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMScsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMSddKVxuICAgICAgKTtcbiAgICAgIGl0KFxuICAgICAgICAnZG9lcyBub3QgcmVtb3ZlIGlmIG5vdCBpbiBhcnJhcnknLFxuICAgICAgICBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMicsIHNlbGVjdGVkOiBmYWxzZSB9LCBbJzEnXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmFkaW8nLCAoKSA9PiB7XG4gICAgICBjb25zdCBjYiA9IGFzc2VydC5iaW5kKG51bGwsICdyYWRpbycpO1xuICAgICAgaXQoJ2FkZHMgMScsIGNiKHsgdmFsdWU6IFtdIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycxJ10pKTtcbiAgICAgIGl0KCdhZGRzIDInLCBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMicsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMiddKSk7XG4gICAgICBpdChcbiAgICAgICAgJ2RvZXMgbm90IGFkZCBkdXBsaWNhdGUgMScsXG4gICAgICAgIGNiKHsgdmFsdWU6IFsnMSddIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycxJ10pXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
package/lib/choice-input.js
CHANGED
|
@@ -43,9 +43,9 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
43
43
|
|
|
44
44
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
45
45
|
|
|
46
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
46
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
47
|
|
|
48
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
48
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
49
49
|
|
|
50
50
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
51
51
|
|
|
@@ -56,6 +56,36 @@ var styleSheet = function styleSheet() {
|
|
|
56
56
|
alignItems: 'center',
|
|
57
57
|
backgroundColor: _renderUi.color.background()
|
|
58
58
|
},
|
|
59
|
+
promptStrikethrough: {
|
|
60
|
+
'& > *': {
|
|
61
|
+
textDecoration: 'line-through'
|
|
62
|
+
},
|
|
63
|
+
textDecoration: 'line-through',
|
|
64
|
+
'& mjx-mtr': {
|
|
65
|
+
position: 'relative'
|
|
66
|
+
},
|
|
67
|
+
'& mjx-mtr:after': {
|
|
68
|
+
width: '100%',
|
|
69
|
+
position: 'absolute',
|
|
70
|
+
top: '50%',
|
|
71
|
+
background: _renderUi.color.text(),
|
|
72
|
+
height: '1px',
|
|
73
|
+
left: '0',
|
|
74
|
+
content: '" "'
|
|
75
|
+
},
|
|
76
|
+
'& mjx-math': {
|
|
77
|
+
position: 'relative'
|
|
78
|
+
},
|
|
79
|
+
'& mjx-math:after': {
|
|
80
|
+
width: '100%',
|
|
81
|
+
position: 'absolute',
|
|
82
|
+
top: '50%',
|
|
83
|
+
background: _renderUi.color.text(),
|
|
84
|
+
height: '1px',
|
|
85
|
+
left: '0',
|
|
86
|
+
content: '" "'
|
|
87
|
+
}
|
|
88
|
+
},
|
|
59
89
|
checkboxHolder: {
|
|
60
90
|
display: 'flex',
|
|
61
91
|
alignItems: 'center',
|
|
@@ -113,14 +143,24 @@ var inputStyles = {
|
|
|
113
143
|
opacity: 0.6,
|
|
114
144
|
cursor: 'not-allowed !important',
|
|
115
145
|
pointerEvents: 'initial !important'
|
|
116
|
-
})
|
|
146
|
+
}),
|
|
147
|
+
strikethroughTag: {
|
|
148
|
+
'&:before': {
|
|
149
|
+
content: '"——"',
|
|
150
|
+
position: 'absolute',
|
|
151
|
+
letterSpacing: '-3px',
|
|
152
|
+
left: '0.3em'
|
|
153
|
+
}
|
|
154
|
+
}
|
|
117
155
|
};
|
|
118
156
|
var StyledCheckbox = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
119
157
|
var correctness = props.correctness,
|
|
120
158
|
classes = props.classes,
|
|
121
159
|
checked = props.checked,
|
|
122
160
|
onChange = props.onChange,
|
|
123
|
-
disabled = props.disabled
|
|
161
|
+
disabled = props.disabled,
|
|
162
|
+
accessibility = props.accessibility,
|
|
163
|
+
strikethrough = props.strikethrough;
|
|
124
164
|
|
|
125
165
|
var key = function key(k) {
|
|
126
166
|
return correctness ? "".concat(correctness, "-").concat(k) : k;
|
|
@@ -136,8 +176,10 @@ var StyledCheckbox = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
|
136
176
|
onChange: onChange,
|
|
137
177
|
disabled: disabled
|
|
138
178
|
};
|
|
139
|
-
return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], (0, _extends2["default"])({
|
|
140
|
-
|
|
179
|
+
return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], (0, _extends2["default"])({
|
|
180
|
+
"aria-label": accessibility
|
|
181
|
+
}, miniProps, {
|
|
182
|
+
className: (0, _classnames["default"])(CLASS_NAME, strikethrough && classes.strikethroughTag),
|
|
141
183
|
classes: {
|
|
142
184
|
root: resolved.root,
|
|
143
185
|
checked: resolved.checked,
|
|
@@ -151,7 +193,9 @@ var StyledRadio = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
|
151
193
|
classes = props.classes,
|
|
152
194
|
checked = props.checked,
|
|
153
195
|
onChange = props.onChange,
|
|
154
|
-
disabled = props.disabled
|
|
196
|
+
disabled = props.disabled,
|
|
197
|
+
accessibility = props.accessibility,
|
|
198
|
+
strikethrough = props.strikethrough;
|
|
155
199
|
|
|
156
200
|
var key = function key(k) {
|
|
157
201
|
return correctness ? "".concat(correctness, "-").concat(k) : k;
|
|
@@ -167,8 +211,10 @@ var StyledRadio = (0, _styles.withStyles)(inputStyles)(function (props) {
|
|
|
167
211
|
onChange: onChange,
|
|
168
212
|
disabled: disabled
|
|
169
213
|
};
|
|
170
|
-
return /*#__PURE__*/_react["default"].createElement(_Radio["default"], (0, _extends2["default"])({
|
|
171
|
-
|
|
214
|
+
return /*#__PURE__*/_react["default"].createElement(_Radio["default"], (0, _extends2["default"])({
|
|
215
|
+
"aria-label": accessibility
|
|
216
|
+
}, miniProps, {
|
|
217
|
+
className: (0, _classnames["default"])(CLASS_NAME, strikethrough && classes.strikethroughTag),
|
|
172
218
|
classes: {
|
|
173
219
|
root: resolved.root,
|
|
174
220
|
checked: resolved.checked
|
|
@@ -212,32 +258,42 @@ var ChoiceInput = /*#__PURE__*/function (_React$Component) {
|
|
|
212
258
|
correctness = _this$props.correctness,
|
|
213
259
|
classes = _this$props.classes,
|
|
214
260
|
className = _this$props.className,
|
|
215
|
-
rationale = _this$props.rationale
|
|
261
|
+
rationale = _this$props.rationale,
|
|
262
|
+
accessibility = _this$props.accessibility,
|
|
263
|
+
hideTick = _this$props.hideTick,
|
|
264
|
+
isEvaluateMode = _this$props.isEvaluateMode,
|
|
265
|
+
strikethrough = _this$props.strikethrough;
|
|
216
266
|
var Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;
|
|
217
267
|
var classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';
|
|
218
268
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
219
|
-
className: (0, _classnames["default"])(className, 'corespring-' + classSuffix)
|
|
269
|
+
className: (0, _classnames["default"])(className, 'corespring-' + classSuffix, 'choice-input')
|
|
220
270
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
221
271
|
className: classes.row
|
|
222
|
-
}, /*#__PURE__*/_react["default"].createElement(_feedbackTick["default"], {
|
|
272
|
+
}, !hideTick && isEvaluateMode && /*#__PURE__*/_react["default"].createElement(_feedbackTick["default"], {
|
|
223
273
|
correctness: correctness
|
|
224
274
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
225
|
-
className: classes.checkboxHolder
|
|
275
|
+
className: (0, _classnames["default"])(classes.checkboxHolder, 'checkbox-holder')
|
|
226
276
|
}, /*#__PURE__*/_react["default"].createElement(StyledFormControlLabel, {
|
|
227
277
|
disabled: disabled,
|
|
228
278
|
label: displayKey ? displayKey + '. ' : '',
|
|
229
279
|
control: /*#__PURE__*/_react["default"].createElement(Tag, {
|
|
280
|
+
accessibility: accessibility,
|
|
230
281
|
checked: checked,
|
|
231
282
|
correctness: correctness,
|
|
283
|
+
strikethrough: strikethrough,
|
|
284
|
+
className: (0, _classnames["default"])(classes.strikethroughTag),
|
|
232
285
|
onChange: this.onToggleChoice
|
|
233
286
|
})
|
|
234
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
235
|
-
className: "
|
|
287
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
288
|
+
className: (0, _classnames["default"])(strikethrough && classes.promptStrikethrough)
|
|
289
|
+
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
290
|
+
className: (0, _classnames["default"])('label'),
|
|
236
291
|
onClick: this.onToggleChoice,
|
|
237
292
|
prompt: label,
|
|
238
293
|
tagName: "span"
|
|
239
|
-
}))), rationale && /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
294
|
+
})))), rationale && /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
240
295
|
className: "rationale",
|
|
296
|
+
defaultClassName: "rationale",
|
|
241
297
|
prompt: rationale
|
|
242
298
|
}), /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
|
|
243
299
|
feedback: feedback,
|
|
@@ -258,14 +314,19 @@ exports.ChoiceInput = ChoiceInput;
|
|
|
258
314
|
feedback: _propTypes["default"].string,
|
|
259
315
|
label: _propTypes["default"].string.isRequired,
|
|
260
316
|
rationale: _propTypes["default"].string,
|
|
317
|
+
accessibility: _propTypes["default"].string,
|
|
261
318
|
onChange: _propTypes["default"].func.isRequired,
|
|
262
319
|
value: _propTypes["default"].string.isRequired,
|
|
263
320
|
classes: _propTypes["default"].object,
|
|
264
|
-
className: _propTypes["default"].string
|
|
321
|
+
className: _propTypes["default"].string,
|
|
322
|
+
hideTick: _propTypes["default"].bool,
|
|
323
|
+
isEvaluateMode: _propTypes["default"].bool
|
|
265
324
|
});
|
|
266
325
|
(0, _defineProperty2["default"])(ChoiceInput, "defaultProps", {
|
|
267
326
|
rationale: null,
|
|
268
|
-
|
|
327
|
+
accessibility: null,
|
|
328
|
+
checked: false,
|
|
329
|
+
isEvaluateMode: false
|
|
269
330
|
});
|
|
270
331
|
|
|
271
332
|
var _default = (0, _styles.withStyles)(styleSheet)(ChoiceInput);
|
package/lib/choice-input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/choice-input.jsx"],"names":["styleSheet","row","display","alignItems","backgroundColor","color","background","checkboxHolder","flex","text","formStyleSheet","label","StyledFormControlLabel","name","props","classes","CLASS_NAME","colorStyle","varName","fallback","inputStyles","correct","disabled","incorrect","root","primaryLight","checked","primary","opacity","cursor","pointerEvents","StyledCheckbox","correctness","onChange","key","k","resolved","miniProps","StyledRadio","ChoiceInput","onToggleChoice","bind","value","selected","choiceMode","displayKey","feedback","className","rationale","Tag","classSuffix","React","Component","PropTypes","oneOf","string","isRequired","bool","func","object"],"mappings":"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","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/render-ui';\nimport FeedbackTick from './feedback-tick';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nconst styleSheet = () => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n },\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => (\n <FormControlLabel {...props} classes={{ label: props.classes.label }} />\n));\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle(\n 'incorrect-disabled-color',\n color.disabled()\n ),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n return (\n <Checkbox\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: resolved.disabled,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n\n return (\n <Radio\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n rationale: null,\n checked: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n }\n\n onToggleChoice() {\n this.props.onChange({\n value: this.props.value,\n selected: !this.props.checked,\n });\n }\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n checked,\n correctness,\n classes,\n className,\n rationale,\n } = this.props;\n\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n return (\n <div className={classNames(className, 'corespring-' + classSuffix)}>\n <div className={classes.row}>\n <FeedbackTick correctness={correctness} />\n <div className={classes.checkboxHolder}>\n <StyledFormControlLabel\n disabled={disabled}\n label={displayKey ? displayKey + '. ' : ''}\n control={\n <Tag\n checked={checked}\n correctness={correctness}\n onChange={this.onToggleChoice}\n />\n }\n />\n <PreviewPrompt\n className=\"label\"\n onClick={this.onToggleChoice}\n prompt={label}\n tagName=\"span\"\n />\n </div>\n </div>\n {rationale && (\n <PreviewPrompt className=\"rationale\" prompt={rationale} />\n )}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}
|
|
1
|
+
{"version":3,"sources":["../src/choice-input.jsx"],"names":["styleSheet","row","display","alignItems","backgroundColor","color","background","promptStrikethrough","textDecoration","position","width","top","text","height","left","content","checkboxHolder","flex","formStyleSheet","label","StyledFormControlLabel","name","props","classes","CLASS_NAME","colorStyle","varName","fallback","inputStyles","correct","disabled","incorrect","root","primaryLight","checked","primary","opacity","cursor","pointerEvents","strikethroughTag","letterSpacing","StyledCheckbox","correctness","onChange","accessibility","strikethrough","key","k","resolved","miniProps","StyledRadio","ChoiceInput","onToggleChoice","bind","value","selected","choiceMode","displayKey","feedback","className","rationale","hideTick","isEvaluateMode","Tag","classSuffix","React","Component","PropTypes","oneOf","string","isRequired","bool","func","object"],"mappings":"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","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/render-ui';\nimport FeedbackTick from './feedback-tick';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nconst styleSheet = () => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n promptStrikethrough: {\n '& > *': {\n textDecoration: 'line-through',\n },\n textDecoration: 'line-through',\n '& mjx-mtr': {\n position: 'relative',\n },\n '& mjx-mtr:after': {\n width: '100%',\n position: 'absolute',\n top: '50%',\n background: color.text(),\n height: '1px',\n left: '0',\n content: '\" \"',\n },\n '& mjx-math': {\n position: 'relative',\n },\n '& mjx-math:after': {\n width: '100%',\n position: 'absolute',\n top: '50%',\n background: color.text(),\n height: '1px',\n left: '0',\n content: '\" \"',\n },\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n },\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => (\n <FormControlLabel {...props} classes={{ label: props.classes.label }} />\n));\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle(\n 'incorrect-disabled-color',\n color.disabled()\n ),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n strikethroughTag: {\n '&:before': {\n content: '\"——\"',\n position: 'absolute',\n letterSpacing: '-3px',\n left: '0.3em',\n },\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const {\n correctness,\n classes,\n checked,\n onChange,\n disabled,\n accessibility,\n strikethrough,\n } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n return (\n <Checkbox\n aria-label={accessibility}\n {...miniProps}\n className={classNames(\n CLASS_NAME,\n strikethrough && classes.strikethroughTag\n )}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: resolved.disabled,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const {\n correctness,\n classes,\n checked,\n onChange,\n disabled,\n accessibility,\n strikethrough,\n } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n\n return (\n <Radio\n aria-label={accessibility}\n {...miniProps}\n className={classNames(\n CLASS_NAME,\n strikethrough && classes.strikethroughTag\n )}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n accessibility: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n hideTick: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n };\n\n static defaultProps = {\n rationale: null,\n accessibility: null,\n checked: false,\n isEvaluateMode: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n }\n\n onToggleChoice() {\n this.props.onChange({\n value: this.props.value,\n selected: !this.props.checked,\n });\n }\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n checked,\n correctness,\n classes,\n className,\n rationale,\n accessibility,\n hideTick,\n isEvaluateMode,\n strikethrough,\n } = this.props;\n\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n return (\n <div\n className={classNames(\n className,\n 'corespring-' + classSuffix,\n 'choice-input'\n )}\n >\n <div className={classes.row}>\n {!hideTick && isEvaluateMode && (\n <FeedbackTick correctness={correctness} />\n )}\n <div\n className={classNames(classes.checkboxHolder, 'checkbox-holder')}\n >\n <StyledFormControlLabel\n disabled={disabled}\n label={displayKey ? displayKey + '. ' : ''}\n control={\n <Tag\n accessibility={accessibility}\n checked={checked}\n correctness={correctness}\n strikethrough={strikethrough}\n className={classNames(classes.strikethroughTag)}\n onChange={this.onToggleChoice}\n />\n }\n />\n <div\n className={classNames(\n strikethrough && classes.promptStrikethrough\n )}\n >\n <PreviewPrompt\n className={classNames('label')}\n onClick={this.onToggleChoice}\n prompt={label}\n tagName=\"span\"\n />\n </div>\n </div>\n </div>\n {rationale && (\n <PreviewPrompt\n className=\"rationale\"\n defaultClassName=\"rationale\"\n prompt={rationale}\n />\n )}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}
|