@windward/games 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/bitbucket-pipelines.yml +14 -0
  3. package/components/content/blocks/dragDrop/BucketGame.vue +24 -8
  4. package/components/content/blocks/flashcards/CardFace.vue +3 -3
  5. package/components/content/blocks/matchingGame/MatchingGame.vue +30 -38
  6. package/components/content/blocks/sevenStrikes/SevenStikes.vue +2 -6
  7. package/components/content/blocks/wordJumble/WordJumble.vue +9 -8
  8. package/components/settings/BucketGameSettingsManager.vue +253 -243
  9. package/components/settings/CrosswordPuzzleSettingsManager.vue +164 -111
  10. package/components/settings/FlashCardSlidesManager.vue +337 -336
  11. package/components/settings/MatchingGameManager.vue +347 -323
  12. package/components/settings/MultipleChoiceSettingsManager.vue +100 -69
  13. package/components/settings/QuizShowSettingsManager.vue +223 -203
  14. package/components/settings/SevenStrikesSettingsManager.vue +173 -133
  15. package/components/settings/SlideShowManager.vue +174 -134
  16. package/components/settings/SortingGameSettingsManager.vue +157 -108
  17. package/components/settings/WordJumbleSettingsManager.vue +171 -135
  18. package/i18n/en-US/components/content/blocks/bucket_game.ts +1 -0
  19. package/i18n/en-US/components/content/blocks/flashcard.ts +2 -2
  20. package/i18n/en-US/components/content/blocks/quizshow_game.ts +1 -1
  21. package/i18n/en-US/components/settings/bucket_game.ts +2 -1
  22. package/i18n/en-US/components/settings/crossword.ts +1 -0
  23. package/i18n/en-US/components/settings/flashcard.ts +2 -1
  24. package/i18n/en-US/components/settings/matching_game.ts +1 -0
  25. package/i18n/en-US/components/settings/multiple_choice.ts +1 -0
  26. package/i18n/en-US/components/settings/quizshow_game.ts +1 -1
  27. package/i18n/en-US/components/settings/seven_strikes.ts +1 -1
  28. package/i18n/en-US/components/settings/slideshow.ts +3 -2
  29. package/i18n/en-US/components/settings/sorting_game.ts +1 -0
  30. package/i18n/en-US/components/settings/word_jumble.ts +1 -0
  31. package/i18n/en-US/shared/settings.ts +3 -0
  32. package/i18n/es-ES/components/content/blocks/bucket_game.ts +1 -0
  33. package/i18n/es-ES/components/settings/bucket_game.ts +3 -1
  34. package/i18n/es-ES/components/settings/crossword.ts +2 -0
  35. package/i18n/es-ES/components/settings/flashcard.ts +1 -0
  36. package/i18n/es-ES/components/settings/matching_game.ts +1 -0
  37. package/i18n/es-ES/components/settings/multiple_choice.ts +2 -0
  38. package/i18n/es-ES/components/settings/quizshow_game.ts +1 -1
  39. package/i18n/es-ES/components/settings/slideshow.ts +1 -0
  40. package/i18n/es-ES/components/settings/sorting_game.ts +1 -0
  41. package/i18n/es-ES/components/settings/word_jumble.ts +1 -0
  42. package/i18n/es-ES/shared/settings.ts +3 -0
  43. package/i18n/sv-SE/components/content/blocks/bucket_game.ts +1 -0
  44. package/i18n/sv-SE/components/content/blocks/quizshow_game.ts +1 -1
  45. package/i18n/sv-SE/components/settings/bucket_game.ts +2 -0
  46. package/i18n/sv-SE/components/settings/crossword.ts +1 -0
  47. package/i18n/sv-SE/components/settings/flashcard.ts +1 -0
  48. package/i18n/sv-SE/components/settings/matching_game.ts +1 -0
  49. package/i18n/sv-SE/components/settings/multiple_choice.ts +1 -0
  50. package/i18n/sv-SE/components/settings/quizshow_game.ts +1 -1
  51. package/i18n/sv-SE/components/settings/slideshow.ts +1 -0
  52. package/i18n/sv-SE/components/settings/sorting_game.ts +1 -0
  53. package/i18n/sv-SE/components/settings/word_jumble.ts +2 -1
  54. package/i18n/sv-SE/shared/content_blocks.ts +5 -5
  55. package/i18n/sv-SE/shared/settings.ts +8 -5
  56. package/package.json +1 -1
@@ -1,251 +1,230 @@
1
1
  <template>
2
2
  <div>
3
- <v-form ref="form" v-model="valid" v-if="!loading">
4
- <v-container class="pa-0">
5
- <v-text-field
6
- ref="title"
7
- v-model="block.metadata.config.title"
8
- outlined
9
- :counter="50"
10
- :autofocus="true"
11
- :label="
12
- $t(
13
- 'windward.games.components.settings.bucket_game.form.title'
14
- )
15
- "
16
- :disabled="render"
17
- ></v-text-field>
18
- <v-textarea
19
- v-model="block.metadata.config.instructions"
20
- outlined
21
- auto-grow
22
- :counter="255"
23
- :label="
24
- $t(
25
- 'windward.games.components.settings.bucket_game.form.instructions'
26
- )
27
- "
28
- :disabled="render"
29
- ></v-textarea>
30
- </v-container>
31
- <v-divider class="my-4 primary"></v-divider>
32
- <v-container class="pa-0">
33
- <p>
3
+ <v-container class="pa-0">
4
+ <v-text-field
5
+ ref="title"
6
+ v-model="block.metadata.config.title"
7
+ :rules="validation.titleRule"
8
+ outlined
9
+ :counter="50"
10
+ :autofocus="true"
11
+ :label="
12
+ $t(
13
+ 'windward.games.components.settings.bucket_game.form.title'
14
+ )
15
+ "
16
+ :disabled="render"
17
+ ></v-text-field>
18
+ <v-textarea
19
+ v-model="block.metadata.config.instructions"
20
+ outlined
21
+ auto-grow
22
+ :rules="validation.instructionsRule"
23
+ :counter="255"
24
+ :label="
25
+ $t(
26
+ 'windward.games.components.settings.bucket_game.form.instructions'
27
+ )
28
+ "
29
+ :disabled="render"
30
+ ></v-textarea>
31
+ </v-container>
32
+ <v-divider class="my-4 primary"></v-divider>
33
+ <v-container class="pa-0">
34
+ <p>
35
+ {{
36
+ $t(
37
+ 'windward.games.components.settings.bucket_game.form.buckets'
38
+ )
39
+ }}
40
+ </p>
41
+ <SortableExpansionPanel
42
+ v-model="block.metadata.config.bucket_titles"
43
+ @change="onDragged"
44
+ @click:close="onConfirmDeleteBucket($event)"
45
+ :copy="false"
46
+ :disabled="render"
47
+ >
48
+ <template #header="{ item }">
34
49
  {{
35
- $t(
36
- 'windward.games.components.settings.bucket_game.form.buckets'
37
- )
50
+ stripHtml(item.title)
51
+ ? stripHtml(item.title)
52
+ : $t(
53
+ 'windward.games.components.settings.bucket_game.form.enter_text'
54
+ )
38
55
  }}
39
- </p>
40
- <SortableExpansionPanel
41
- v-model="block.metadata.config.bucket_titles"
42
- @change="onDragged"
43
- @click:close="onConfirmDeleteBucket($event)"
44
- :copy="false"
45
- :disabled="render"
46
- >
47
- <template #header="{ item }">
48
- {{
49
- stripHtml(item.title)
50
- ? stripHtml(item.title)
51
- : $t(
52
- 'windward.games.components.settings.bucket_game.form.enter_text'
53
- )
54
- }}
55
- </template>
56
- <template #body="{ index }">
57
- <v-container :key="expansionPanelKey">
58
- <v-flex xs12>
59
- <p class="p-label">
60
- {{
61
- $t(
62
- 'windward.games.components.content.blocks.bucket_game.name'
63
- )
64
- }}
65
- </p>
66
- <TextEditor
67
- v-model="
68
- block.metadata.config.bucket_titles[
69
- index
70
- ].title
71
- "
72
- :disabled="render"
73
- ></TextEditor>
74
- </v-flex>
75
- <v-flex xs12>
76
- <p class="p-label">
77
- {{
78
- $t(
79
- 'windward.games.components.settings.bucket_game.form.color'
80
- )
81
- }}
82
- </p>
83
- <v-color-picker
84
- v-model="
85
- block.metadata.config.bucket_titles[
86
- index
87
- ].color
88
- "
89
- hide-canvas
90
- hide-inputs
91
- hide-sliders
92
- show-swatches
93
- :swatches="swatches"
94
- swatches-max-height="130"
95
- :disabled="render"
96
- ></v-color-picker>
97
- </v-flex>
98
- <v-flex xs12>
99
- <p class="p-label">
100
- {{
101
- $t(
102
- 'windward.games.components.content.blocks.bucket_game.answers'
103
- )
104
- }}
105
- </p>
106
- </v-flex>
107
- </v-container>
108
- <v-container
109
- v-if="
110
- block.metadata.config.bucket_answers.length > 0
111
- "
112
- >
113
- <SortableExpansionPanel
56
+ </template>
57
+ <template #body="{ index }">
58
+ <v-container :key="expansionPanelKey">
59
+ <v-flex xs12>
60
+ <p class="p-label">
61
+ {{
62
+ $t(
63
+ 'windward.games.components.content.blocks.bucket_game.name'
64
+ )
65
+ }}
66
+ </p>
67
+ <TextEditor
114
68
  v-model="
115
- block.metadata.config.bucket_answers[index]
69
+ block.metadata.config.bucket_titles[index]
70
+ .title
116
71
  "
117
- @click:close="onConfirmDelete($event, index)"
118
- :copy="false"
119
72
  :disabled="render"
120
- >
121
- <template #header="{ item }">
122
- {{
123
- stripHtml(item.display)
124
- ? stripHtml(item.display)
125
- : $t(
126
- 'windward.games.components.settings.bucket_game.form.enter_text'
127
- )
128
- }}
129
- </template>
130
- <template #body="{ index: answerIndex }">
131
- <v-container :key="expansionPanelKey">
132
- <v-flex xs12>
133
- <p class="p-label mb-0">
134
- {{
135
- $t(
136
- 'windward.games.components.content.blocks.bucket_game.form.answer'
137
- )
138
- }}
139
- </p>
140
- <TextEditor
141
- v-model="
142
- block.metadata.config
143
- .bucket_answers[index][
144
- answerIndex
145
- ].display
146
- "
147
- :disabled="render"
148
- ></TextEditor>
149
- <p class="p-label mb-0">
150
- {{
151
- $t(
152
- 'windward.games.components.content.blocks.bucket_game.form.value'
153
- )
154
- }}
155
- </p>
156
- <v-text-field
157
- v-model="
158
- block.metadata.config
159
- .bucket_answers[index][
160
- answerIndex
161
- ].display_value
162
- "
163
- outlined
164
- :disabled="render"
165
- ></v-text-field>
166
- <p class="p-label mb-0">
167
- {{
168
- $t(
169
- 'windward.games.components.content.blocks.bucket_game.form.feedback.feedback'
170
- )
171
- }}
172
- </p>
173
- <v-text-field
174
- v-model="
175
- block.metadata.config
176
- .bucket_answers[index][
177
- answerIndex
178
- ].feedback
179
- "
180
- outlined
181
- :disabled="render"
182
- ></v-text-field>
183
- </v-flex>
184
- </v-container>
185
- </template>
186
- </SortableExpansionPanel>
187
- </v-container>
188
- <v-row justify="center" class="my-4">
189
- <v-btn
190
- color="primary"
191
- elevation="0"
73
+ ></TextEditor>
74
+ </v-flex>
75
+ <v-flex xs12>
76
+ <p class="p-label">
77
+ {{
78
+ $t(
79
+ 'windward.games.components.settings.bucket_game.form.color'
80
+ )
81
+ }}
82
+ </p>
83
+ <v-color-picker
84
+ v-model="
85
+ block.metadata.config.bucket_titles[index]
86
+ .color
87
+ "
88
+ hide-canvas
89
+ hide-inputs
90
+ hide-sliders
91
+ show-swatches
92
+ :swatches="swatches"
93
+ swatches-max-height="130"
192
94
  :disabled="render"
193
- @click="onAddBucketAnswer(index)"
194
- >
195
- <v-icon>mdi-plus</v-icon>
95
+ ></v-color-picker>
96
+ </v-flex>
97
+ <v-flex xs12>
98
+ <p class="p-label">
196
99
  {{
197
100
  $t(
198
- 'windward.games.components.settings.bucket_game.form.add_answer'
101
+ 'windward.games.components.content.blocks.bucket_game.answers'
199
102
  )
200
103
  }}
201
- </v-btn>
202
- </v-row>
203
- </template>
204
- </SortableExpansionPanel>
205
- </v-container>
206
- <v-container class="pa-0">
207
- <v-row justify="center" class="my-4">
208
- <v-btn
209
- color="primary"
210
- elevation="0"
211
- :disabled="render"
212
- @click="onAddBucket"
104
+ </p>
105
+ </v-flex>
106
+ </v-container>
107
+ <v-container
108
+ v-if="block.metadata.config.bucket_answers.length > 0"
213
109
  >
214
- <v-icon>mdi-plus</v-icon>
215
- {{
216
- $t(
217
- 'windward.games.components.settings.bucket_game.form.add_bucket'
218
- )
219
- }}
220
- </v-btn>
221
- </v-row>
222
- <v-textarea
223
- v-model="block.metadata.config.feedback_correct"
224
- class="pt-4"
225
- outlined
226
- auto-grow
227
- :counter="255"
228
- :label="
229
- $t(
230
- 'windward.games.components.settings.bucket_game.form.feedback.correct'
231
- )
232
- "
110
+ <SortableExpansionPanel
111
+ v-model="
112
+ block.metadata.config.bucket_answers[index]
113
+ "
114
+ @click:close="onConfirmDelete($event, index)"
115
+ :copy="false"
116
+ :disabled="render"
117
+ >
118
+ <template #header="{ item }">
119
+ {{
120
+ stripHtml(item.display)
121
+ ? stripHtml(item.display)
122
+ : $t(
123
+ 'windward.games.components.settings.bucket_game.form.enter_text'
124
+ )
125
+ }}
126
+ </template>
127
+ <template #body="{ index: answerIndex }">
128
+ <v-container :key="expansionPanelKey">
129
+ <v-flex xs12>
130
+ <p class="p-label mb-0">
131
+ {{
132
+ $t(
133
+ 'windward.games.components.content.blocks.bucket_game.form.answer'
134
+ )
135
+ }}
136
+ </p>
137
+ <TextEditor
138
+ v-model="
139
+ block.metadata.config
140
+ .bucket_answers[index][
141
+ answerIndex
142
+ ].display
143
+ "
144
+ :disabled="render"
145
+ ></TextEditor>
146
+ <p class="p-label mb-0">
147
+ {{
148
+ $t(
149
+ 'windward.games.components.content.blocks.bucket_game.form.feedback.explanation'
150
+ )
151
+ }}
152
+ </p>
153
+ <v-text-field
154
+ v-model="
155
+ block.metadata.config
156
+ .bucket_answers[index][
157
+ answerIndex
158
+ ].feedback
159
+ "
160
+ outlined
161
+ :disabled="render"
162
+ ></v-text-field>
163
+ </v-flex>
164
+ </v-container>
165
+ </template>
166
+ </SortableExpansionPanel>
167
+ </v-container>
168
+ <v-row justify="center" class="my-4">
169
+ <v-btn
170
+ color="primary"
171
+ elevation="0"
172
+ :disabled="render"
173
+ @click="onAddBucketAnswer(index)"
174
+ >
175
+ <v-icon>mdi-plus</v-icon>
176
+ {{
177
+ $t(
178
+ 'windward.games.components.settings.bucket_game.form.add_answer'
179
+ )
180
+ }}
181
+ </v-btn>
182
+ </v-row>
183
+ </template>
184
+ </SortableExpansionPanel>
185
+ </v-container>
186
+ <v-container class="pa-0">
187
+ <v-row justify="center" class="my-4">
188
+ <v-btn
189
+ color="primary"
190
+ elevation="0"
233
191
  :disabled="render"
234
- ></v-textarea>
235
- <v-textarea
236
- v-model="block.metadata.config.feedback_incorrect"
237
- outlined
238
- auto-grow
239
- :counter="255"
240
- :label="
192
+ @click="onAddBucket"
193
+ >
194
+ <v-icon>mdi-plus</v-icon>
195
+ {{
241
196
  $t(
242
- 'windward.games.components.settings.bucket_game.form.feedback.incorrect'
197
+ 'windward.games.components.settings.bucket_game.form.add_bucket'
243
198
  )
244
- "
245
- :disabled="render"
246
- ></v-textarea>
247
- </v-container>
248
- </v-form>
199
+ }}
200
+ </v-btn>
201
+ </v-row>
202
+ <v-textarea
203
+ v-model="block.metadata.config.feedback_correct"
204
+ class="pt-4"
205
+ outlined
206
+ auto-grow
207
+ :counter="255"
208
+ :label="
209
+ $t(
210
+ 'windward.games.components.settings.bucket_game.form.feedback.correct'
211
+ )
212
+ "
213
+ :disabled="render"
214
+ ></v-textarea>
215
+ <v-textarea
216
+ v-model="block.metadata.config.feedback_incorrect"
217
+ outlined
218
+ auto-grow
219
+ :counter="255"
220
+ :label="
221
+ $t(
222
+ 'windward.games.components.settings.bucket_game.form.feedback.incorrect'
223
+ )
224
+ "
225
+ :disabled="render"
226
+ ></v-textarea>
227
+ </v-container>
249
228
  <div v-if="loading" class="text-center">
250
229
  <v-progress-circular
251
230
  :size="70"
@@ -269,6 +248,7 @@ import TextEditor from '~/components/Text/TextEditor'
269
248
  import Crypto from '~/helpers/Crypto'
270
249
  import BaseContentSettings from '~/components/Content/Settings/BaseContentSettings.js'
271
250
  import SortableExpansionPanel from '~/components/Core/SortableExpansionPanel.vue'
251
+ import Uuid from '~/helpers/Uuid'
272
252
 
273
253
  export default {
274
254
  name: 'BucketGameSettingsManager',
@@ -290,23 +270,29 @@ export default {
290
270
  if (_.isEmpty(this.block.metadata.config)) {
291
271
  this.block.metadata.config = {}
292
272
  }
293
- if (_.isEmpty(this.block.metadata.config.title)) {
273
+ if (
274
+ _.isEmpty(this.block.metadata.config.title) &&
275
+ this.block.id &&
276
+ !Uuid.test(this.block.id)
277
+ ) {
294
278
  this.block.metadata.config.title = this.$t(
295
279
  'windward.games.components.content.blocks.bucket_game.game_title'
296
280
  )
297
281
  }
298
- if (_.isEmpty(this.block.metadata.config.instructions)) {
299
- this.block.metadata.config.instructions = ''
282
+ if (
283
+ _.isEmpty(this.block.metadata.config.instructions) &&
284
+ this.block.id &&
285
+ !Uuid.test(this.block.id)
286
+ ) {
287
+ this.block.metadata.config.instructions = this.$t(
288
+ 'windward.games.components.settings.bucket_game.form.default_instructions'
289
+ )
300
290
  }
301
291
  if (_.isEmpty(this.block.metadata.config.feedback_correct)) {
302
- this.block.metadata.config.feedback_correct = this.$t(
303
- 'windward.games.components.settings.bucket_game.form.feedback.correct_default'
304
- )
292
+ this.block.metadata.config.feedback_correct = ''
305
293
  }
306
294
  if (_.isEmpty(this.block.metadata.config.feedback_incorrect)) {
307
- this.block.metadata.config.feedback_incorrect = this.$t(
308
- 'windward.games.components.settings.bucket_game.form.feedback.incorrect_default'
309
- )
295
+ this.block.metadata.config.feedback_incorrect = ''
310
296
  }
311
297
  if (_.isEmpty(this.block.metadata.config.bucket_titles)) {
312
298
  this.block.metadata.config.bucket_titles = []
@@ -323,7 +309,6 @@ export default {
323
309
  },
324
310
  data() {
325
311
  return {
326
- valid: true,
327
312
  loading: false,
328
313
  panel: 0,
329
314
  expansionPanelKey: '0',
@@ -334,6 +319,32 @@ export default {
334
319
  [colors.lightGreen.lighten4, colors.teal.lighten4],
335
320
  [colors.lightBlue.lighten4, colors.deepPurple.lighten3],
336
321
  ],
322
+ validation: {
323
+ titleRule: [
324
+ (v) => {
325
+ if (v && v.length >= 50) {
326
+ return this.$t(
327
+ 'windward.games.shared.settings.errors.input_limitations',
328
+ [50]
329
+ )
330
+ } else {
331
+ return true
332
+ }
333
+ },
334
+ ],
335
+ instructionsRule: [
336
+ (v) => {
337
+ if (v && v.length >= 255) {
338
+ return this.$t(
339
+ 'windward.games.shared.settings.errors.input_limitations',
340
+ [255]
341
+ )
342
+ } else {
343
+ return true
344
+ }
345
+ },
346
+ ],
347
+ },
337
348
  }
338
349
  },
339
350
  methods: {
@@ -389,7 +400,6 @@ export default {
389
400
  const answerObject = {
390
401
  bucket_index: mainBucketIndex,
391
402
  display: '',
392
- display_value: '',
393
403
  feedback: '',
394
404
  expand: true,
395
405
  id: this.block.metadata.config.bucket_answers.length + 1,