@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,77 +1,75 @@
1
1
  <template>
2
2
  <div>
3
- <v-form ref="form">
4
- <v-container class="pa-0">
5
- <v-text-field
6
- v-model="block.metadata.config.title"
7
- outlined
8
- :counter="50"
9
- :autofocus="true"
10
- maxlength="50"
11
- :label="
12
- $t(
13
- 'windward.games.components.settings.multiple_choice.title_placeholder'
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
- maxlength="255"
24
- :label="
25
- $t(
26
- 'windward.games.components.settings.multiple_choice.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>
3
+ <v-container class="pa-0">
4
+ <v-text-field
5
+ v-model="block.metadata.config.title"
6
+ outlined
7
+ :autofocus="true"
8
+ :rules="validation.titleRule"
9
+ :counter="50"
10
+ :label="
11
+ $t(
12
+ 'windward.games.components.settings.multiple_choice.title_placeholder'
13
+ )
14
+ "
15
+ :disabled="render"
16
+ ></v-text-field>
17
+ <v-textarea
18
+ v-model="block.metadata.config.instructions"
19
+ outlined
20
+ :rules="validation.instructionRule"
21
+ auto-grow
22
+ :counter="255"
23
+ :label="
24
+ $t(
25
+ 'windward.games.components.settings.multiple_choice.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>
34
+ {{
35
+ $t(
36
+ 'windward.games.components.settings.multiple_choice.questions'
37
+ )
38
+ }}
39
+ </p>
40
+ <SortableExpansionPanel
41
+ v-model="block.metadata.config.questions"
42
+ :current-panel.sync="editingIndex"
43
+ :disabled="render"
44
+ @click="onOpenModal"
45
+ @click:close="onDelete($event)"
46
+ >
47
+ <template #header="{ item }">
35
48
  {{
36
- $t(
37
- 'windward.games.components.settings.multiple_choice.questions'
38
- )
49
+ item.body
50
+ ? item.body
51
+ : $t(
52
+ 'windward.games.components.settings.bucket_game.form.enter_text'
53
+ )
39
54
  }}
40
- </p>
41
- <SortableExpansionPanel
42
- v-model="block.metadata.config.questions"
43
- :current-panel.sync="editingIndex"
55
+ </template>
56
+ </SortableExpansionPanel>
57
+ <v-row justify="center" class="my-4">
58
+ <v-btn
59
+ color="primary"
60
+ elevation="0"
44
61
  :disabled="render"
45
62
  @click="onOpenModal"
46
- @click:close="onDelete($event)"
47
63
  >
48
- <template #header="{ item }">
49
- {{
50
- item.body
51
- ? item.body
52
- : $t(
53
- 'windward.games.components.settings.bucket_game.form.enter_text'
54
- )
55
- }}
56
- </template>
57
- </SortableExpansionPanel>
58
- <v-row justify="center" class="my-4">
59
- <v-btn
60
- color="primary"
61
- elevation="0"
62
- :disabled="render"
63
- @click="onOpenModal"
64
- >
65
- <v-icon>mdi-plus</v-icon>
66
- {{
67
- $t(
68
- 'windward.games.components.settings.multiple_choice.add_question'
69
- )
70
- }}
71
- </v-btn>
72
- </v-row>
73
- </v-container>
74
- </v-form>
64
+ <v-icon>mdi-plus</v-icon>
65
+ {{
66
+ $t(
67
+ 'windward.games.components.settings.multiple_choice.add_question'
68
+ )
69
+ }}
70
+ </v-btn>
71
+ </v-row>
72
+ </v-container>
75
73
  <DialogBox
76
74
  v-model="dialog"
77
75
  :trigger="false"
@@ -116,6 +114,7 @@ import SortableExpansionPanel from '~/components/Core/SortableExpansionPanel.vue
116
114
  import DialogBox from '~/components/Core/DialogBox.vue'
117
115
  import QuestionDialog from '../content/blocks/multipleChoice/QuestionDialog.vue'
118
116
  import Crypto from '~/helpers/Crypto'
117
+ import Uuid from '~/helpers/Uuid'
119
118
 
120
119
  export default {
121
120
  name: 'MultipleChoiceSettingsManager',
@@ -136,8 +135,14 @@ export default {
136
135
  'windward.games.components.content.blocks.multiple_choice.game_title'
137
136
  )
138
137
  }
139
- if (_.isEmpty(this.block.metadata.config.instructions)) {
140
- this.block.metadata.config.instructions = ''
138
+ if (
139
+ _.isEmpty(this.block.metadata.config.instructions) &&
140
+ this.block.id &&
141
+ !Uuid.test(this.block.id)
142
+ ) {
143
+ this.block.metadata.config.instructions = this.$t(
144
+ 'windward.games.components.settings.multiple_choice.default_instructions'
145
+ )
141
146
  }
142
147
  if (_.isEmpty(this.block.metadata.config.questions)) {
143
148
  this.block.metadata.config.questions = []
@@ -152,6 +157,32 @@ export default {
152
157
  isNotEditing: false,
153
158
  valid: true,
154
159
  loading: false,
160
+ validation: {
161
+ titleRule: [
162
+ (v) => {
163
+ if (v && v.length >= 50) {
164
+ return this.$t(
165
+ 'windward.games.shared.settings.errors.input_limitations',
166
+ [50]
167
+ )
168
+ } else {
169
+ return true
170
+ }
171
+ },
172
+ ],
173
+ instructionRule: [
174
+ (v) => {
175
+ if (v && v.length >= 255) {
176
+ return this.$t(
177
+ 'windward.games.shared.settings.errors.input_limitations',
178
+ [50]
179
+ )
180
+ } else {
181
+ return true
182
+ }
183
+ },
184
+ ],
185
+ },
155
186
  }
156
187
  },
157
188
  mounted() {
@@ -1,212 +1,208 @@
1
1
  <template>
2
2
  <div>
3
+ <v-text-field
4
+ v-model="block.metadata.config.title"
5
+ :rules="validation.shortInputRules"
6
+ :counter="50"
7
+ outlined
8
+ :label="
9
+ $t(
10
+ 'windward.games.components.settings.quizshow_game.form.title'
11
+ )
12
+ "
13
+ :disabled="render"
14
+ ></v-text-field>
3
15
  <br />
4
- <v-form ref="form" v-if="!loading">
5
- <v-text-field
6
- v-model="block.metadata.config.title"
7
- :counter="50"
8
- maxlength="50"
9
- :label="
10
- $t(
11
- 'windward.games.components.settings.quizshow_game.form.title'
12
- )
13
- "
14
- :disabled="render"
15
- ></v-text-field>
16
- <br />
17
- <v-checkbox
18
- v-model="block.metadata.config.responsive"
19
- :label="
20
- $t(
21
- 'windward.games.components.settings.quizshow_game.form.responsive'
22
- )
23
- "
24
- :disabled="render"
25
- ></v-checkbox>
26
- <br />
27
- <v-textarea
28
- outlined
29
- auto-grow
30
- v-model="block.metadata.config.instructions"
31
- :counter="300"
32
- maxlength="300"
33
- :label="
34
- $t(
35
- 'windward.games.components.settings.multiple_choice.instructions'
36
- )
37
- "
38
- :disabled="render"
39
- ></v-textarea>
40
- <br />
41
- <v-expansion-panels outlined tile flat>
42
- <v-divider class="cardOutline primary"></v-divider>
43
- <v-expansion-panel>
44
- <v-expansion-panel-header>
45
- <template #default="{ open }">
46
- <v-row no-gutters class="text-capitalize">
47
- <h5>
48
- {{
49
- $t(
50
- 'windward.games.components.settings.quizshow_game.form.categories'
51
- )
52
- }}
53
- </h5>
54
- </v-row>
55
- </template>
56
- <template #actions>
57
- <v-icon> mdi-chevron-down </v-icon>
58
- </template>
59
- </v-expansion-panel-header>
60
- <v-expansion-panel-content>
61
- <v-card elevation="0">
62
- <v-container class="d-flex justify-center">
63
- <v-col>
64
- <v-row
65
- justify="center"
66
- align="center"
67
- v-for="index in Number(
68
- block.metadata.config.maxCategories
69
- )"
70
- :key="'maxcategories-row-' + index"
16
+ <v-checkbox
17
+ v-model="block.metadata.config.responsive"
18
+ :label="
19
+ $t(
20
+ 'windward.games.components.settings.quizshow_game.form.responsive'
21
+ )
22
+ "
23
+ :disabled="render"
24
+ ></v-checkbox>
25
+ <br />
26
+ <v-textarea
27
+ outlined
28
+ auto-grow
29
+ v-model="block.metadata.config.instructions"
30
+ :rules="validation.instructionRule"
31
+ :counter="255"
32
+ :label="
33
+ $t(
34
+ 'windward.games.components.settings.multiple_choice.instructions'
35
+ )
36
+ "
37
+ :disabled="render"
38
+ ></v-textarea>
39
+ <br />
40
+ <v-expansion-panels outlined tile flat>
41
+ <v-divider class="cardOutline primary"></v-divider>
42
+ <v-expansion-panel>
43
+ <v-expansion-panel-header>
44
+ <template #default="{ open }">
45
+ <v-row no-gutters class="text-capitalize">
46
+ <h5>
47
+ {{
48
+ $t(
49
+ 'windward.games.components.settings.quizshow_game.form.categories'
50
+ )
51
+ }}
52
+ </h5>
53
+ </v-row>
54
+ </template>
55
+ <template #actions>
56
+ <v-icon> mdi-chevron-down </v-icon>
57
+ </template>
58
+ </v-expansion-panel-header>
59
+ <v-expansion-panel-content>
60
+ <v-card elevation="0">
61
+ <v-container class="d-flex justify-center">
62
+ <v-col>
63
+ <v-row
64
+ justify="center"
65
+ align="center"
66
+ v-for="index in Number(
67
+ block.metadata.config.maxCategories
68
+ )"
69
+ :key="'maxcategories-row-' + index"
70
+ >
71
+ <v-text-field
72
+ :key="'cat' + index"
73
+ v-model="
74
+ block.metadata.config.categories[
75
+ index - 1
76
+ ]
77
+ "
78
+ :rules="validation.shortInputRules"
79
+ :counter="50"
80
+ :label="
81
+ $tc(
82
+ 'windward.games.components.settings.quizshow_game.form.category',
83
+ 1
84
+ ) +
85
+ ' ' +
86
+ index
87
+ "
88
+ outlined
89
+ :disabled="render"
90
+ @click:append="removeCategory(index)"
71
91
  >
72
- <v-text-field
73
- :key="'cat' + index"
74
- v-model="
92
+ <template #append>
93
+ <v-icon color="error"
94
+ >mdi-delete-outline</v-icon
95
+ >
96
+ </template>
97
+ </v-text-field>
98
+ </v-row>
99
+ <v-row justify="center" align="center">
100
+ <v-btn
101
+ v-show="
102
+ Number(
75
103
  block.metadata.config
76
- .categories[index - 1]
77
- "
78
- :counter="255"
79
- maxlength="255"
80
- :label="
81
- $tc(
82
- 'windward.games.components.settings.quizshow_game.form.category',
83
- 1
84
- ) +
85
- ' ' +
86
- index
87
- "
88
- outlined
89
- :disabled="render"
90
- @click:append="
91
- removeCategory(index)
92
- "
93
- >
94
- <template #append>
95
- <v-icon color="error"
96
- >mdi-delete-outline</v-icon
97
- >
98
- </template>
99
- </v-text-field>
100
- </v-row>
101
- <v-row justify="center" align="center">
102
- <v-btn
103
- v-show="
104
- Number(
105
- block.metadata.config
106
- .maxCategories
107
- ) < 6
108
- "
109
- elevation="0"
110
- color="primary"
111
- class="text-capitalize clickable"
112
- :disabled="render"
113
- @click="addCategory"
114
- >
115
- <v-icon>mdi-plus</v-icon>&nbsp;{{
116
- $t(
117
- 'windward.games.components.settings.quizshow_game.form.add_category'
118
- )
119
- }}</v-btn
120
- >
121
- </v-row>
122
- </v-col>
123
- </v-container>
124
- </v-card>
125
- </v-expansion-panel-content>
126
- </v-expansion-panel>
127
- <v-divider class="cardOutline primary"></v-divider>
128
- <v-expansion-panel>
129
- <v-expansion-panel-header>
130
- <template #default="{ open }">
131
- <v-row no-gutters class="text-capitalize">
132
- <h5>
133
- {{
134
- $t(
135
- 'windward.games.components.settings.quizshow_game.form.max_rows'
136
- )
137
- }}
138
- </h5>
139
- </v-row>
140
- </template>
141
- <template #actions>
142
- <v-icon> mdi-chevron-down </v-icon>
143
- </template>
144
- </v-expansion-panel-header>
145
- <v-expansion-panel-content>
146
- <v-card elevation="0">
147
- <v-container class="d-flex justify-center">
148
- <v-col>
149
- <v-row
150
- justify="center"
151
- align="center"
152
- v-for="index in Number(
153
- block.metadata.config.maxRows
154
- )"
155
- :key="'maxrows-row-' + index"
104
+ .maxCategories
105
+ ) < 6
106
+ "
107
+ elevation="0"
108
+ color="primary"
109
+ class="text-capitalize clickable"
110
+ :disabled="render"
111
+ @click="addCategory"
112
+ >
113
+ <v-icon>mdi-plus</v-icon>&nbsp;{{
114
+ $t(
115
+ 'windward.games.components.settings.quizshow_game.form.add_category'
116
+ )
117
+ }}</v-btn
156
118
  >
157
- <v-text-field
158
- :key="'row' + index"
159
- v-model="
160
- block.metadata.config.points[
161
- index - 1
162
- ]
163
- "
164
- append-icon="mdi-delete-outline"
165
- type="number"
166
- min="1"
167
- max="9999"
168
- :label="
169
- $t(
170
- 'windward.games.components.settings.quizshow_game.form.row'
171
- ) +
172
- ' ' +
173
- index
174
- "
175
- outlined
176
- :disabled="render"
177
- @input="onPointsChange(index - 1)"
178
- @click:append="removeRow(index)"
179
- ></v-text-field>
180
- </v-row>
181
- <v-row justify="center" align="center">
182
- <v-btn
183
- v-show="
184
- Number(
185
- block.metadata.config
186
- .maxRows
187
- ) < 6
188
- "
189
- elevation="0"
190
- class="text-capitalize clickable"
191
- color="primary"
192
- :disabled="render"
193
- @click="addRow"
194
- >
195
- <v-icon>mdi-plus</v-icon>&nbsp;{{
196
- $t(
197
- 'windward.games.components.settings.quizshow_game.form.add_row'
198
- )
199
- }}</v-btn
200
- >
201
- </v-row>
202
- </v-col>
203
- </v-container>
204
- </v-card>
205
- </v-expansion-panel-content>
206
- </v-expansion-panel>
207
- <v-divider class="cardOutline primary"></v-divider>
208
- </v-expansion-panels>
209
- </v-form>
119
+ </v-row>
120
+ </v-col>
121
+ </v-container>
122
+ </v-card>
123
+ </v-expansion-panel-content>
124
+ </v-expansion-panel>
125
+ <v-divider class="cardOutline primary"></v-divider>
126
+ <v-expansion-panel>
127
+ <v-expansion-panel-header>
128
+ <template #default="{ open }">
129
+ <v-row no-gutters class="text-capitalize">
130
+ <h5>
131
+ {{
132
+ $t(
133
+ 'windward.games.components.settings.quizshow_game.form.max_rows'
134
+ )
135
+ }}
136
+ </h5>
137
+ </v-row>
138
+ </template>
139
+ <template #actions>
140
+ <v-icon> mdi-chevron-down </v-icon>
141
+ </template>
142
+ </v-expansion-panel-header>
143
+ <v-expansion-panel-content>
144
+ <v-card elevation="0">
145
+ <v-container class="d-flex justify-center">
146
+ <v-col>
147
+ <v-row
148
+ justify="center"
149
+ align="center"
150
+ v-for="index in Number(
151
+ block.metadata.config.maxRows
152
+ )"
153
+ :key="'maxrows-row-' + index"
154
+ >
155
+ <v-text-field
156
+ :key="'row' + index"
157
+ v-model="
158
+ block.metadata.config.points[
159
+ index - 1
160
+ ]
161
+ "
162
+ append-icon="mdi-delete-outline"
163
+ type="number"
164
+ min="1"
165
+ max="9999"
166
+ :label="
167
+ $t(
168
+ 'windward.games.components.settings.quizshow_game.form.row'
169
+ ) +
170
+ ' ' +
171
+ index
172
+ "
173
+ outlined
174
+ :disabled="render"
175
+ @input="onPointsChange(index - 1)"
176
+ @click:append="removeRow(index)"
177
+ ></v-text-field>
178
+ </v-row>
179
+ <v-row justify="center" align="center">
180
+ <v-btn
181
+ v-show="
182
+ Number(
183
+ block.metadata.config.maxRows
184
+ ) < 6
185
+ "
186
+ elevation="0"
187
+ class="text-capitalize clickable"
188
+ color="primary"
189
+ :disabled="render"
190
+ @click="addRow"
191
+ >
192
+ <v-icon>mdi-plus</v-icon>&nbsp;{{
193
+ $t(
194
+ 'windward.games.components.settings.quizshow_game.form.add_row'
195
+ )
196
+ }}</v-btn
197
+ >
198
+ </v-row>
199
+ </v-col>
200
+ </v-container>
201
+ </v-card>
202
+ </v-expansion-panel-content>
203
+ </v-expansion-panel>
204
+ <v-divider class="cardOutline primary"></v-divider>
205
+ </v-expansion-panels>
210
206
  <div v-if="loading" class="text-center">
211
207
  <v-progress-circular
212
208
  :size="70"
@@ -276,6 +272,30 @@ export default {
276
272
  }
277
273
  },
278
274
  ],
275
+ shortInputRules: [
276
+ (v) => {
277
+ if (v && v.length >= 50) {
278
+ return this.$t(
279
+ 'windward.games.shared.settings.errors.input_limitations',
280
+ [50]
281
+ )
282
+ } else {
283
+ return true
284
+ }
285
+ },
286
+ ],
287
+ instructionRule: [
288
+ (v) => {
289
+ if (v && v.length >= 255) {
290
+ return this.$t(
291
+ 'windward.games.shared.settings.errors.input_limitations',
292
+ [255]
293
+ )
294
+ } else {
295
+ return true
296
+ }
297
+ },
298
+ ],
279
299
  },
280
300
  loading: false,
281
301
  cursor: 'changePointer',