@pie-element/drag-in-the-blank 3.10.0 → 3.10.3-next.1014
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 +183 -0
- package/configure/CHANGELOG.md +131 -0
- package/configure/lib/choice.js +1 -1
- package/configure/lib/choice.js.map +1 -1
- package/configure/lib/choices.js +45 -23
- package/configure/lib/choices.js.map +1 -1
- package/configure/lib/defaults.js +18 -2
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +3 -3
- package/configure/lib/main.js +107 -16
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +9 -3
- package/configure/lib/markupUtils.js.map +1 -1
- package/configure/package.json +4 -4
- package/configure/utils.js +14 -0
- package/controller/CHANGELOG.md +27 -0
- package/controller/lib/index.js +35 -3
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +1 -1
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/config-schema.json +94 -0
- package/docs/config-schema.json.md +73 -1
- package/docs/demo/generate.js +2 -1
- package/docs/pie-schema.json +43 -0
- package/docs/pie-schema.json.md +35 -0
- package/lib/index.js +6 -2
- package/lib/index.js.map +1 -1
- package/lib/main.js +14 -28
- package/lib/main.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,189 @@
|
|
|
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
|
+
## [3.13.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.13.5...@pie-element/drag-in-the-blank@3.13.6) (2022-03-28)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [3.13.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.13.4...@pie-element/drag-in-the-blank@3.13.5) (2022-03-22)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [3.13.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.13.3...@pie-element/drag-in-the-blank@3.13.4) (2022-03-08)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [3.13.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.13.2...@pie-element/drag-in-the-blank@3.13.3) (2022-03-08)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## [3.13.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.13.1...@pie-element/drag-in-the-blank@3.13.2) (2022-02-21)
|
|
39
|
+
|
|
40
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## [3.13.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.13.0...@pie-element/drag-in-the-blank@3.13.1) (2022-02-04)
|
|
47
|
+
|
|
48
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# [3.13.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.12.8...@pie-element/drag-in-the-blank@3.13.0) (2022-01-24)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Bug Fixes
|
|
58
|
+
|
|
59
|
+
* use preview prompt for prompt, rationale and teacher instructions to fix table rendering PD-1456 ([f330601](https://github.com/pie-framework/pie-elements/commit/f3306019a2d1c8ce3e2783823dfe9ef0a0394e4f))
|
|
60
|
+
* **drag-in-the-blank:** fix validation behavior PD-1404 ([02f3f5c](https://github.com/pie-framework/pie-elements/commit/02f3f5ca82b03d54e055a3d746027e8b5ac66790))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Features
|
|
64
|
+
|
|
65
|
+
* **drag-in-the-blank, inline-dropdown:** move rationale after the item content PD-1379 ([fd71c58](https://github.com/pie-framework/pie-elements/commit/fd71c5853bdd63b31a746241dd5649e5de051300))
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
## [3.12.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.12.7...@pie-element/drag-in-the-blank@3.12.8) (2022-01-10)
|
|
72
|
+
|
|
73
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
## [3.12.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.12.6...@pie-element/drag-in-the-blank@3.12.7) (2021-12-23)
|
|
80
|
+
|
|
81
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
## [3.12.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.12.4...@pie-element/drag-in-the-blank@3.12.5) (2021-12-13)
|
|
88
|
+
|
|
89
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
## [3.12.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.12.1...@pie-element/drag-in-the-blank@3.12.2) (2021-11-29)
|
|
96
|
+
|
|
97
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
## [3.12.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.11.4...@pie-element/drag-in-the-blank@3.12.1) (2021-11-11)
|
|
104
|
+
|
|
105
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
# [3.12.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.10.2...@pie-element/drag-in-the-blank@3.12.0) (2021-11-11)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
### Bug Fixes
|
|
115
|
+
|
|
116
|
+
* pie-lib updates ([e521c2f](https://github.com/pie-framework/pie-elements/commit/e521c2f1a44aa7f3e14f82a1cee05ceb484ed0a6))
|
|
117
|
+
* Updated pie-lib versions ([2fe4c5d](https://github.com/pie-framework/pie-elements/commit/2fe4c5d0be2d40f5fdb34815855695a7f1087f56))
|
|
118
|
+
* Updated pie-lib versions ([1c23830](https://github.com/pie-framework/pie-elements/commit/1c23830fc75d1de5f7bb3bb16de3c665ae5fa350))
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
### Features
|
|
122
|
+
|
|
123
|
+
* **drag-in-the-blank:** set toolbar editor position to bottom ([8a16b0f](https://github.com/pie-framework/pie-elements/commit/8a16b0f2965af63ab6e20267131cc1da19dce8e1))
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## [3.11.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.11.3...@pie-element/drag-in-the-blank@3.11.4) (2021-10-18)
|
|
131
|
+
|
|
132
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## [3.11.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.11.2...@pie-element/drag-in-the-blank@3.11.3) (2021-10-04)
|
|
139
|
+
|
|
140
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## [3.11.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.11.1...@pie-element/drag-in-the-blank@3.11.2) (2021-09-20)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
### Bug Fixes
|
|
150
|
+
|
|
151
|
+
* pie-lib updates ([e521c2f](https://github.com/pie-framework/pie-elements/commit/e521c2f1a44aa7f3e14f82a1cee05ceb484ed0a6))
|
|
152
|
+
* Updated pie-lib versions ([2fe4c5d](https://github.com/pie-framework/pie-elements/commit/2fe4c5d0be2d40f5fdb34815855695a7f1087f56))
|
|
153
|
+
* Updated pie-lib versions ([1c23830](https://github.com/pie-framework/pie-elements/commit/1c23830fc75d1de5f7bb3bb16de3c665ae5fa350))
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
## [3.11.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.11.0...@pie-element/drag-in-the-blank@3.11.1) (2021-09-01)
|
|
160
|
+
|
|
161
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
# [3.11.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.10.2...@pie-element/drag-in-the-blank@3.11.0) (2021-08-05)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
### Features
|
|
171
|
+
|
|
172
|
+
* **drag-in-the-blank:** set toolbar editor position to bottom ([8a16b0f](https://github.com/pie-framework/pie-elements/commit/8a16b0f2965af63ab6e20267131cc1da19dce8e1))
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
## [3.10.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.10.0...@pie-element/drag-in-the-blank@3.10.2) (2021-08-05)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
### Bug Fixes
|
|
182
|
+
|
|
183
|
+
* force bump ([5ea7295](https://github.com/pie-framework/pie-elements/commit/5ea7295e4755fbc492a76e7ec69e5fc35b196919))
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
6
189
|
# [3.10.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.9.0...@pie-element/drag-in-the-blank@3.10.0) (2021-06-29)
|
|
7
190
|
|
|
8
191
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,137 @@
|
|
|
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
|
+
## [3.6.19](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.18...@pie-element/drag-in-the-blank-configure@3.6.19) (2022-03-28)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [3.6.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.17...@pie-element/drag-in-the-blank-configure@3.6.18) (2022-03-22)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [3.6.17](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.16...@pie-element/drag-in-the-blank-configure@3.6.17) (2022-03-08)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [3.6.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.15...@pie-element/drag-in-the-blank-configure@3.6.16) (2022-03-08)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## [3.6.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.14...@pie-element/drag-in-the-blank-configure@3.6.15) (2022-02-21)
|
|
39
|
+
|
|
40
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## [3.6.14](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.13...@pie-element/drag-in-the-blank-configure@3.6.14) (2022-02-04)
|
|
47
|
+
|
|
48
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## [3.6.13](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.12...@pie-element/drag-in-the-blank-configure@3.6.13) (2022-01-24)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Bug Fixes
|
|
58
|
+
|
|
59
|
+
* **drag-in-the-blank:** fix validation behavior PD-1404 ([02f3f5c](https://github.com/pie-framework/pie-elements/commit/02f3f5ca82b03d54e055a3d746027e8b5ac66790))
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## [3.6.12](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.11...@pie-element/drag-in-the-blank-configure@3.6.12) (2022-01-10)
|
|
66
|
+
|
|
67
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## [3.6.11](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.10...@pie-element/drag-in-the-blank-configure@3.6.11) (2021-12-23)
|
|
74
|
+
|
|
75
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
## [3.6.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.8...@pie-element/drag-in-the-blank-configure@3.6.9) (2021-12-13)
|
|
82
|
+
|
|
83
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## [3.6.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.5...@pie-element/drag-in-the-blank-configure@3.6.6) (2021-11-29)
|
|
90
|
+
|
|
91
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
## [3.6.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.4...@pie-element/drag-in-the-blank-configure@3.6.5) (2021-10-04)
|
|
98
|
+
|
|
99
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
## [3.6.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.3...@pie-element/drag-in-the-blank-configure@3.6.4) (2021-09-20)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
### Bug Fixes
|
|
109
|
+
|
|
110
|
+
* pie-lib updates ([e521c2f](https://github.com/pie-framework/pie-elements/commit/e521c2f1a44aa7f3e14f82a1cee05ceb484ed0a6))
|
|
111
|
+
* Updated pie-lib versions ([2fe4c5d](https://github.com/pie-framework/pie-elements/commit/2fe4c5d0be2d40f5fdb34815855695a7f1087f56))
|
|
112
|
+
* Updated pie-lib versions ([1c23830](https://github.com/pie-framework/pie-elements/commit/1c23830fc75d1de5f7bb3bb16de3c665ae5fa350))
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
## [3.6.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.2...@pie-element/drag-in-the-blank-configure@3.6.3) (2021-08-05)
|
|
119
|
+
|
|
120
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## [3.6.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.0...@pie-element/drag-in-the-blank-configure@3.6.2) (2021-08-05)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
### Bug Fixes
|
|
130
|
+
|
|
131
|
+
* force bump ([5ea7295](https://github.com/pie-framework/pie-elements/commit/5ea7295e4755fbc492a76e7ec69e5fc35b196919))
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
6
137
|
# [3.6.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.5.4...@pie-element/drag-in-the-blank-configure@3.6.0) (2021-06-29)
|
|
7
138
|
|
|
8
139
|
|
package/configure/lib/choice.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] = exports.
|
|
8
|
+
exports.tileSource = exports["default"] = exports.BlankContent = void 0;
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/choice.jsx"],"names":["GripIcon","style","margin","propTypes","PropTypes","object","BlankContent","theme","choice","border","palette","primary","main","disabled","props","connectDragSource","onClick","onRemoveChoice","display","minWidth","minHeight","background","boxSizing","borderRadius","overflow","position","padding","top","left","color","zIndex","__html","value","right","e","preventDefault","stopPropagation","tileSource","canDrag","alert","beginDrag","id","targetId","instanceId","connect","monitor","dragSource","isDragging"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,QAAQ,GAAG,SAAXA,QAAW,OAAe;AAAA,MAAZC,KAAY,QAAZA,KAAY;AAC9B,sBACE;AAAM,IAAA,KAAK,EAAEA;AAAb,kBACE,gCAAC,oBAAD;AACE,IAAA,KAAK,EAAE;AACLC,MAAAA,MAAM,EAAE;AADH;AADT,IADF,eAME,gCAAC,oBAAD,OANF,CADF;AAUD,CAXD;;AAaAF,QAAQ,CAACG,SAAT,GAAqB;AACnBF,EAAAA,KAAK,EAAEG,sBAAUC;AADE,CAArB;AAIO,IAAMC,YAAY,GAAG,wBAAW,UAAAC,KAAK;AAAA,SAAK;AAC/CC,IAAAA,MAAM,EAAE;AACNC,MAAAA,MAAM,sBAAeF,KAAK,CAACG,OAAN,CAAcC,OAAd,CAAsBC,IAArC;AADA,KADuC;AAI/CC,IAAAA,QAAQ,EAAE;AAJqC,GAAL;AAAA,CAAhB,EAKxB,UAAAC,KAAK,EAAI;
|
|
1
|
+
{"version":3,"sources":["../src/choice.jsx"],"names":["GripIcon","style","margin","propTypes","PropTypes","object","BlankContent","theme","choice","border","palette","primary","main","disabled","props","connectDragSource","onClick","onRemoveChoice","display","minWidth","minHeight","background","boxSizing","borderRadius","overflow","position","padding","top","left","color","zIndex","__html","value","right","e","preventDefault","stopPropagation","tileSource","canDrag","alert","beginDrag","id","targetId","instanceId","connect","monitor","dragSource","isDragging"],"mappings":"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","sourcesContent":["import React from 'react';\nimport MoreVert from '@material-ui/icons/MoreVert';\nimport Delete from '@material-ui/icons/Delete';\nimport { DragSource } from 'react-dnd';\nimport { withStyles } from '@material-ui/core/styles';\nimport { choiceIsEmpty } from './markupUtils';\nimport PropTypes from 'prop-types';\n\nconst GripIcon = ({ style }) => {\n return (\n <span style={style}>\n <MoreVert\n style={{\n margin: '0 -16px'\n }}\n />\n <MoreVert />\n </span>\n );\n};\n\nGripIcon.propTypes = {\n style: PropTypes.object,\n};\n\nexport const BlankContent = withStyles(theme => ({\n choice: {\n border: `solid 0px ${theme.palette.primary.main}`\n },\n disabled: {}\n}))(props => {\n const { connectDragSource, choice, onClick, onRemoveChoice } = props;\n\n return connectDragSource(\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n minHeight: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n overflow: 'hidden',\n position: 'relative',\n padding: '8px 35px 8px 35px'\n }}\n onClick={onClick}\n >\n <GripIcon\n style={{\n position: 'absolute',\n top: '6px',\n left: '15px',\n color: '#9B9B9B',\n zIndex: 2\n }}\n />\n <span\n dangerouslySetInnerHTML={{\n __html: choice.value\n }}\n />\n <Delete\n style={{\n position: 'absolute',\n top: '6px',\n right: '0',\n color: '#9B9B9B',\n zIndex: 2\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice(e);\n }}\n />\n </div>\n );\n});\n\nexport const tileSource = {\n canDrag(props) {\n if (choiceIsEmpty(props.choice)) {\n alert('You need to define a value for an answer choice before it can be associated with a response area.');\n return false;\n }\n\n return !props.disabled;\n },\n beginDrag(props) {\n return {\n id: props.targetId,\n value: props.choice,\n instanceId: props.instanceId\n };\n }\n};\n\nexport default DragSource('drag-in-the-blank-choice', tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n}))(BlankContent);\n"],"file":"choice.js"}
|
package/configure/lib/choices.js
CHANGED
|
@@ -49,22 +49,23 @@ var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle
|
|
|
49
49
|
|
|
50
50
|
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
|
|
51
51
|
|
|
52
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
52
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
53
53
|
|
|
54
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
54
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
55
55
|
|
|
56
56
|
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); }; }
|
|
57
57
|
|
|
58
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
58
|
+
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; } }
|
|
59
59
|
|
|
60
60
|
window.renMath = _mathRendering.renderMath;
|
|
61
61
|
|
|
62
62
|
var InfoDialog = function InfoDialog(_ref) {
|
|
63
63
|
var open = _ref.open,
|
|
64
|
+
title = _ref.title,
|
|
64
65
|
onOk = _ref.onOk;
|
|
65
66
|
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
66
67
|
open: open
|
|
67
|
-
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null,
|
|
68
|
+
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title || ''), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
68
69
|
onClick: onOk,
|
|
69
70
|
color: "primary"
|
|
70
71
|
}, "OK")));
|
|
@@ -72,7 +73,8 @@ var InfoDialog = function InfoDialog(_ref) {
|
|
|
72
73
|
|
|
73
74
|
InfoDialog.propTypes = {
|
|
74
75
|
open: _propTypes["default"].bool,
|
|
75
|
-
onOk: _propTypes["default"].func
|
|
76
|
+
onOk: _propTypes["default"].func,
|
|
77
|
+
title: _propTypes["default"].string
|
|
76
78
|
};
|
|
77
79
|
|
|
78
80
|
var styles = function styles(theme) {
|
|
@@ -113,6 +115,12 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
113
115
|
open: false
|
|
114
116
|
}
|
|
115
117
|
});
|
|
118
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "rerenderMath", function () {
|
|
119
|
+
//eslint-disable-next-line
|
|
120
|
+
var domNode = _reactDom["default"].findDOMNode((0, _assertThisInitialized2["default"])(_this));
|
|
121
|
+
|
|
122
|
+
(0, _mathRendering.renderMath)(domNode);
|
|
123
|
+
});
|
|
116
124
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (prevValue, val, key) {
|
|
117
125
|
var _this$props = _this.props,
|
|
118
126
|
onChange = _this$props.onChange,
|
|
@@ -120,22 +128,26 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
120
128
|
var choices = model.choices,
|
|
121
129
|
correctResponse = model.correctResponse,
|
|
122
130
|
alternateResponses = model.alternateResponses;
|
|
123
|
-
var
|
|
124
|
-
return c.value === val;
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
+
var duplicatedValue = (choices || []).find(function (c) {
|
|
132
|
+
return c.value === val && c.id !== key;
|
|
133
|
+
}); // discard the new added choice or the changes if the choice would be a duplicate to one that already exists
|
|
134
|
+
|
|
135
|
+
if (duplicatedValue) {
|
|
136
|
+
if (prevValue === '') {
|
|
137
|
+
// remove the new added choice from choices
|
|
138
|
+
var _newChoices = (choices || []).filter(function (c) {
|
|
139
|
+
return c.id !== key;
|
|
140
|
+
});
|
|
131
141
|
|
|
132
|
-
|
|
142
|
+
onChange(_newChoices);
|
|
143
|
+
}
|
|
133
144
|
|
|
134
145
|
_this.setState({
|
|
135
146
|
dialog: {
|
|
136
147
|
open: true,
|
|
148
|
+
message: 'Identical answer choices are not allowed and the changes will be discarded',
|
|
137
149
|
onOk: function onOk() {
|
|
138
|
-
_this.setState({
|
|
150
|
+
return _this.setState({
|
|
139
151
|
dialog: {
|
|
140
152
|
open: false
|
|
141
153
|
}
|
|
@@ -252,12 +264,14 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
252
264
|
}
|
|
253
265
|
|
|
254
266
|
(0, _createClass2["default"])(Choices, [{
|
|
267
|
+
key: "componentDidMount",
|
|
268
|
+
value: function componentDidMount() {
|
|
269
|
+
this.rerenderMath();
|
|
270
|
+
}
|
|
271
|
+
}, {
|
|
255
272
|
key: "componentDidUpdate",
|
|
256
273
|
value: function componentDidUpdate() {
|
|
257
|
-
|
|
258
|
-
var domNode = _reactDom["default"].findDOMNode(this);
|
|
259
|
-
|
|
260
|
-
(0, _mathRendering.renderMath)(domNode);
|
|
274
|
+
this.rerenderMath();
|
|
261
275
|
|
|
262
276
|
if (this.focusedNodeRef) {
|
|
263
277
|
this.focusedNodeRef.focus('end');
|
|
@@ -273,18 +287,23 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
273
287
|
dialog = _this$state.dialog;
|
|
274
288
|
var _this$props5 = this.props,
|
|
275
289
|
classes = _this$props5.classes,
|
|
276
|
-
duplicates = _this$props5.duplicates
|
|
290
|
+
duplicates = _this$props5.duplicates,
|
|
291
|
+
toolbarOpts = _this$props5.toolbarOpts,
|
|
292
|
+
maxChoices = _this$props5.maxChoices,
|
|
293
|
+
choices = _this$props5.model.choices;
|
|
277
294
|
var visibleChoices = this.getVisibleChoices() || [];
|
|
278
295
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
279
296
|
className: classes.design
|
|
280
297
|
}, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
|
|
281
298
|
open: dialog.open,
|
|
299
|
+
title: dialog.message,
|
|
282
300
|
onOk: dialog.onOk
|
|
283
301
|
}), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
284
302
|
className: classes.addButton,
|
|
285
303
|
variant: "contained",
|
|
286
304
|
color: "primary",
|
|
287
|
-
onClick: this.onAddChoice
|
|
305
|
+
onClick: this.onAddChoice,
|
|
306
|
+
disabled: maxChoices && choices && maxChoices === choices.length
|
|
288
307
|
}, "Add Choice"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
289
308
|
className: classes.altChoices
|
|
290
309
|
}, visibleChoices.map(function (c, index) {
|
|
@@ -317,7 +336,8 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
317
336
|
focusedEl: undefined
|
|
318
337
|
});
|
|
319
338
|
},
|
|
320
|
-
disableUnderline: true
|
|
339
|
+
disableUnderline: true,
|
|
340
|
+
toolbarOpts: toolbarOpts
|
|
321
341
|
}));
|
|
322
342
|
}
|
|
323
343
|
|
|
@@ -344,7 +364,9 @@ exports.Choices = Choices;
|
|
|
344
364
|
duplicates: _propTypes["default"].bool,
|
|
345
365
|
model: _propTypes["default"].object.isRequired,
|
|
346
366
|
onChange: _propTypes["default"].func.isRequired,
|
|
347
|
-
classes: _propTypes["default"].object.isRequired
|
|
367
|
+
classes: _propTypes["default"].object.isRequired,
|
|
368
|
+
toolbarOpts: _propTypes["default"].object,
|
|
369
|
+
maxChoices: _propTypes["default"].number
|
|
348
370
|
});
|
|
349
371
|
var Styled = (0, _styles.withStyles)(styles)(Choices);
|
|
350
372
|
var _default = Styled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/choices.jsx"],"names":["window","renMath","renderMath","InfoDialog","open","onOk","propTypes","PropTypes","bool","func","styles","theme","design","marginTop","spacing","unit","altChoices","alignItems","display","flexWrap","justifyContent","padding","marginBottom","Choices","dialog","prevValue","val","key","props","onChange","model","choices","correctResponse","alternateResponses","exists","filter","c","value","length","newChoices","id","setState","map","usedForResponse","Object","keys","forEach","responseKey","values","alternate","indexOf","alert","newChoicesWithoutTheEmptyOne","choice","focusedEl","oldChoices","duplicates","v","domNode","ReactDOM","findDOMNode","focusedNodeRef","focus","state","classes","visibleChoices","getVisibleChoices","addButton","onAddChoice","index","minWidth","zIndex","ref","prompt","video","disabled","audio","onChoiceChanged","undefined","onChoiceFocus","handleChoiceRemove","React","Component","object","isRequired","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport find from 'lodash/find';\nimport Button from '@material-ui/core/Button';\nimport Choice from './choice';\nimport { choiceIsEmpty } from './markupUtils';\nimport { withStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\n\nwindow.renMath = renderMath;\n\nconst InfoDialog = ({ open, onOk }) => (\n <Dialog open={open}>\n <DialogTitle>Identical answer choices are not allowed and will be discarded</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onOk: PropTypes.func,\n};\n\nconst styles = theme => ({\n design: {\n marginTop: theme.spacing.unit * 2\n },\n altChoices: {\n alignItems: 'flex-start',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-evenly',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px'\n }\n }\n});\n\nexport class Choices extends React.Component {\n static propTypes = {\n duplicates: PropTypes.bool,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n\n if (this.focusedNodeRef) {\n this.focusedNodeRef.focus('end');\n }\n }\n\n onChoiceChanged = (prevValue, val, key) => {\n const { onChange, model } = this.props;\n const { choices, correctResponse, alternateResponses } = model;\n const exists = (choices || []).filter(c => c.value === val);\n\n if(exists.length) {\n const newChoices = (choices || []).filter(c => c.id !== key);\n\n onChange(newChoices);\n\n this.setState({\n dialog: {\n open: true,\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n }\n );\n }\n }\n });\n\n return;\n }\n\n const newChoices = choices\n ? choices.map(c => {\n if (c.id === key) {\n return { ...c, value: val };\n }\n\n return c;\n })\n : [];\n\n if (choiceIsEmpty({ value: val })) {\n // if the edited content is empty, its usage has to be searched in the correct response definitions\n let usedForResponse = false;\n\n if (correctResponse) {\n Object.keys(correctResponse).forEach(responseKey => {\n if (correctResponse[responseKey] === key) {\n usedForResponse = true;\n }\n });\n }\n\n if (alternateResponses) {\n Object.values(alternateResponses).forEach(alternate => {\n if (alternate.indexOf(key) >= 0) {\n usedForResponse = true;\n }\n });\n }\n\n if (usedForResponse) {\n alert('Answer choices cannot be blank.');\n } else {\n if (!choiceIsEmpty({ value: prevValue })) {\n // if the previous value was not empty, it means that the choice can be deleted\n const newChoicesWithoutTheEmptyOne = newChoices.filter(choice => choice.id !== key);\n\n onChange(newChoicesWithoutTheEmptyOne);\n } else {\n onChange(newChoices);\n }\n }\n } else {\n onChange(newChoices);\n }\n };\n\n onChoiceFocus = id => this.setState({\n focusedEl: id\n });\n\n onAddChoice = () => {\n const { model: { choices: oldChoices }, onChange } = this.props;\n\n this.setState({\n focusedEl: `${oldChoices.length}`\n }, () => {\n onChange([\n ...oldChoices,\n {\n id: `${oldChoices.length}`,\n value: ''\n }\n ]\n );\n });\n };\n\n handleChoiceRemove = id => {\n const { onChange, model: { choices } } = this.props;\n const newChoices = choices.filter(c => c.id !== id);\n\n onChange(newChoices);\n };\n\n getVisibleChoices = () => {\n const {\n duplicates,\n model: { choices, correctResponse }\n } = this.props;\n\n if (!choices) {\n return [];\n }\n\n if (duplicates) {\n return choices;\n }\n\n // if duplicates not allowed, remove the choices that are used to define the correct response\n return choices.filter(choice => !find(correctResponse, v => v === choice.id));\n };\n\n render() {\n const { focusedEl, dialog } = this.state;\n const {\n classes,\n duplicates,\n } = this.props;\n const visibleChoices = this.getVisibleChoices() || [];\n\n return (\n <div className={classes.design}>\n <InfoDialog\n open={dialog.open}\n onOk={dialog.onOk}\n />\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n >\n Add Choice\n </Button>\n <div\n className={classes.altChoices}\n >\n {\n visibleChoices.map((c, index) => {\n if (focusedEl === c.id) {\n return (\n <div\n key={index}\n style={{\n minWidth: '100%',\n zIndex: '100'\n }}\n >\n <EditableHtml\n ref={ref => (this.focusedNodeRef = ref)}\n className={classes.prompt}\n markup={c.value}\n pluginProps={{\n video: {\n disabled: true\n },\n audio: {\n disabled: true\n }\n }}\n onChange={val => this.onChoiceChanged(c.value, val, c.id)}\n onDone={() => {\n this.setState({\n focusedEl: undefined\n });\n }}\n disableUnderline\n />\n </div>\n );\n }\n\n return (\n <Choice\n key={index}\n duplicates={duplicates}\n targetId=\"0\"\n choice={c}\n onClick={() => this.onChoiceFocus(c.id)}\n onRemoveChoice={() => this.handleChoiceRemove(c.id)}\n />\n );\n })\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Choices);\n\nexport default Styled;\n"],"file":"choices.js"}
|
|
1
|
+
{"version":3,"sources":["../src/choices.jsx"],"names":["window","renMath","renderMath","InfoDialog","open","title","onOk","propTypes","PropTypes","bool","func","string","styles","theme","design","marginTop","spacing","unit","altChoices","alignItems","display","flexWrap","justifyContent","padding","marginBottom","Choices","dialog","domNode","ReactDOM","findDOMNode","prevValue","val","key","props","onChange","model","choices","correctResponse","alternateResponses","duplicatedValue","find","c","value","id","newChoices","filter","setState","message","map","usedForResponse","Object","keys","forEach","responseKey","values","alternate","indexOf","alert","newChoicesWithoutTheEmptyOne","choice","focusedEl","oldChoices","length","duplicates","v","rerenderMath","focusedNodeRef","focus","state","classes","toolbarOpts","maxChoices","visibleChoices","getVisibleChoices","addButton","onAddChoice","index","minWidth","zIndex","ref","prompt","video","disabled","audio","onChoiceChanged","undefined","onChoiceFocus","handleChoiceRemove","React","Component","object","isRequired","number","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport find from 'lodash/find';\nimport Button from '@material-ui/core/Button';\nimport Choice from './choice';\nimport { choiceIsEmpty } from './markupUtils';\nimport { withStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\n\nwindow.renMath = renderMath;\n\nconst InfoDialog = ({ open, title, onOk }) => (\n <Dialog open={open}>\n <DialogTitle>{title || ''}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n design: {\n marginTop: theme.spacing.unit * 2\n },\n altChoices: {\n alignItems: 'flex-start',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-evenly',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px'\n }\n }\n});\n\nexport class Choices extends React.Component {\n static propTypes = {\n duplicates: PropTypes.bool,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n maxChoices: PropTypes.number\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n this.rerenderMath();\n }\n\n componentDidUpdate() {\n this.rerenderMath();\n\n if (this.focusedNodeRef) {\n this.focusedNodeRef.focus('end');\n }\n }\n\n rerenderMath = () => {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onChoiceChanged = (prevValue, val, key) => {\n const { onChange, model } = this.props;\n const { choices, correctResponse, alternateResponses } = model;\n const duplicatedValue = (choices || []).find(c => c.value === val && c.id !== key);\n\n // discard the new added choice or the changes if the choice would be a duplicate to one that already exists\n if (duplicatedValue) {\n if (prevValue === '') {\n // remove the new added choice from choices\n const newChoices = (choices || []).filter(c => c.id !== key);\n\n onChange(newChoices);\n }\n\n this.setState({\n dialog: {\n open: true,\n message: 'Identical answer choices are not allowed and the changes will be discarded',\n onOk: () => this.setState({ dialog: { open: false }})\n }\n });\n\n return;\n }\n\n const newChoices = choices\n ? choices.map(c => {\n if (c.id === key) {\n return { ...c, value: val };\n }\n\n return c;\n })\n : [];\n\n if (choiceIsEmpty({ value: val })) {\n // if the edited content is empty, its usage has to be searched in the correct response definitions\n let usedForResponse = false;\n\n if (correctResponse) {\n Object.keys(correctResponse).forEach(responseKey => {\n if (correctResponse[responseKey] === key) {\n usedForResponse = true;\n }\n });\n }\n\n if (alternateResponses) {\n Object.values(alternateResponses).forEach(alternate => {\n if (alternate.indexOf(key) >= 0) {\n usedForResponse = true;\n }\n });\n }\n\n if (usedForResponse) {\n alert('Answer choices cannot be blank.');\n } else {\n if (!choiceIsEmpty({ value: prevValue })) {\n // if the previous value was not empty, it means that the choice can be deleted\n const newChoicesWithoutTheEmptyOne = newChoices.filter(choice => choice.id !== key);\n\n onChange(newChoicesWithoutTheEmptyOne);\n } else {\n onChange(newChoices);\n }\n }\n } else {\n onChange(newChoices);\n }\n };\n\n onChoiceFocus = id => this.setState({\n focusedEl: id\n });\n\n onAddChoice = () => {\n const { model: { choices: oldChoices }, onChange } = this.props;\n\n this.setState({\n focusedEl: `${oldChoices.length}`\n }, () => {\n onChange([\n ...oldChoices,\n {\n id: `${oldChoices.length}`,\n value: ''\n }\n ]\n );\n });\n };\n\n handleChoiceRemove = id => {\n const { onChange, model: { choices } } = this.props;\n const newChoices = choices.filter(c => c.id !== id);\n\n onChange(newChoices);\n };\n\n getVisibleChoices = () => {\n const {\n duplicates,\n model: { choices, correctResponse }\n } = this.props;\n\n if (!choices) {\n return [];\n }\n\n if (duplicates) {\n return choices;\n }\n\n // if duplicates not allowed, remove the choices that are used to define the correct response\n return choices.filter(choice => !find(correctResponse, v => v === choice.id));\n };\n\n render() {\n const { focusedEl, dialog } = this.state;\n const {\n classes,\n duplicates,\n toolbarOpts,\n maxChoices,\n model: { choices }\n } = this.props;\n const visibleChoices = this.getVisibleChoices() || [];\n\n return (\n <div className={classes.design}>\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onOk={dialog.onOk}\n />\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n disabled={maxChoices && choices && maxChoices === choices.length}\n >\n Add Choice\n </Button>\n <div\n className={classes.altChoices}\n >\n {\n visibleChoices.map((c, index) => {\n if (focusedEl === c.id) {\n return (\n <div\n key={index}\n style={{\n minWidth: '100%',\n zIndex: '100'\n }}\n >\n <EditableHtml\n ref={ref => (this.focusedNodeRef = ref)}\n className={classes.prompt}\n markup={c.value}\n pluginProps={{\n video: {\n disabled: true\n },\n audio: {\n disabled: true\n }\n }}\n onChange={val => this.onChoiceChanged(c.value, val, c.id)}\n onDone={() => {\n this.setState({\n focusedEl: undefined\n });\n }}\n disableUnderline\n toolbarOpts={toolbarOpts}\n />\n </div>\n );\n }\n\n return (\n <Choice\n key={index}\n duplicates={duplicates}\n targetId=\"0\"\n choice={c}\n onClick={() => this.onChoiceFocus(c.id)}\n onRemoveChoice={() => this.handleChoiceRemove(c.id)}\n />\n );\n })\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Choices);\n\nexport default Styled;\n"],"file":"choices.js"}
|
|
@@ -9,7 +9,6 @@ var _default = {
|
|
|
9
9
|
disabled: false,
|
|
10
10
|
mode: 'gather',
|
|
11
11
|
prompt: 'Use the inputs to complete the sentence',
|
|
12
|
-
shuffle: true,
|
|
13
12
|
markup: '',
|
|
14
13
|
choices: [],
|
|
15
14
|
choicesPosition: 'below',
|
|
@@ -18,9 +17,15 @@ var _default = {
|
|
|
18
17
|
rationaleEnabled: true,
|
|
19
18
|
promptEnabled: true,
|
|
20
19
|
teacherInstructionsEnabled: true,
|
|
21
|
-
studentInstructionsEnabled: true
|
|
20
|
+
studentInstructionsEnabled: true,
|
|
21
|
+
toolbarEditorPosition: 'bottom'
|
|
22
22
|
},
|
|
23
23
|
configuration: {
|
|
24
|
+
spellCheck: {
|
|
25
|
+
label: 'Spellcheck',
|
|
26
|
+
settings: false,
|
|
27
|
+
enabled: true
|
|
28
|
+
},
|
|
24
29
|
choicesPosition: {
|
|
25
30
|
settings: true,
|
|
26
31
|
label: 'Choices Position'
|
|
@@ -48,6 +53,17 @@ var _default = {
|
|
|
48
53
|
teacherInstructions: {
|
|
49
54
|
settings: true,
|
|
50
55
|
label: 'Teacher Instructions'
|
|
56
|
+
},
|
|
57
|
+
maxResponseAreas: 10,
|
|
58
|
+
maxImageWidth: {
|
|
59
|
+
teacherInstructions: 300,
|
|
60
|
+
prompt: 300,
|
|
61
|
+
rationale: 300
|
|
62
|
+
},
|
|
63
|
+
maxImageHeight: {
|
|
64
|
+
teacherInstructions: 300,
|
|
65
|
+
prompt: 300,
|
|
66
|
+
rationale: 300
|
|
51
67
|
}
|
|
52
68
|
}
|
|
53
69
|
};
|