@windward/games 0.0.9 → 0.1.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 (137) hide show
  1. package/components/content/CrudTable.vue +2 -2
  2. package/components/content/blocks/crosswordPuzzle/CrosswordClues.vue +4 -2
  3. package/components/content/blocks/crosswordPuzzle/CrosswordPuzzle.vue +14 -12
  4. package/components/content/blocks/dragDrop/BucketGame.vue +54 -101
  5. package/components/content/blocks/dragDrop/SortingGame.vue +47 -33
  6. package/components/content/blocks/flashcards/CardFace.vue +38 -39
  7. package/components/content/blocks/flashcards/Flashcard.vue +109 -28
  8. package/components/content/blocks/flashcards/FlashcardSlides.vue +3 -2
  9. package/components/content/blocks/matchingGame/MatchingGame.vue +105 -61
  10. package/components/content/blocks/multipleChoice/MultipleChoice.vue +186 -225
  11. package/components/content/blocks/multipleChoice/QuestionDialog.vue +7 -7
  12. package/components/content/blocks/quizshowGame/AnswerPanel.vue +31 -24
  13. package/components/content/blocks/quizshowGame/Gridview.vue +20 -24
  14. package/components/content/blocks/quizshowGame/QuizShow.vue +22 -9
  15. package/components/content/blocks/quizshowGame/feedbackIcons.vue +4 -2
  16. package/components/content/blocks/sevenStrikes/SevenStikes.vue +153 -108
  17. package/components/content/blocks/sevenStrikes/keyboard.vue +9 -2
  18. package/components/content/blocks/slideshow/SlideShow.vue +5 -3
  19. package/components/content/blocks/wordJumble/Jumble.vue +4 -4
  20. package/components/content/blocks/wordJumble/WordJumble.vue +128 -62
  21. package/components/settings/BucketGameSettingsManager.vue +185 -359
  22. package/components/settings/CrosswordPuzzleSettingsManager.vue +114 -181
  23. package/components/settings/FlashCardSlidesManager.vue +323 -419
  24. package/components/settings/MatchingGameManager.vue +357 -618
  25. package/components/settings/MultipleChoiceSettingsManager.vue +130 -140
  26. package/components/settings/QuizShowSettingsManager.vue +17 -17
  27. package/components/settings/SevenStrikesSettingsManager.vue +131 -193
  28. package/components/settings/SlideShowManager.vue +91 -129
  29. package/components/settings/SortingGameSettingsManager.vue +41 -153
  30. package/components/settings/WordJumbleSettingsManager.vue +84 -150
  31. package/i18n/en-US/components/content/blocks/bucket_game.ts +1 -0
  32. package/i18n/en-US/components/content/blocks/flashcard.ts +3 -0
  33. package/i18n/en-US/components/content/blocks/word_jumble.ts +2 -0
  34. package/i18n/en-US/components/settings/bucket_game.ts +3 -2
  35. package/i18n/en-US/components/settings/flashcard.ts +1 -0
  36. package/i18n/en-US/components/settings/matching_game.ts +1 -1
  37. package/i18n/en-US/components/settings/quizshow_game.ts +1 -1
  38. package/i18n/en-US/components/settings/seven_strikes.ts +1 -1
  39. package/i18n/en-US/components/settings/slideshow.ts +2 -0
  40. package/i18n/en-US/index.ts +2 -1
  41. package/i18n/es-ES/components/content/blocks/bucket_game.ts +40 -0
  42. package/i18n/es-ES/components/content/blocks/crossword.ts +25 -0
  43. package/i18n/es-ES/components/content/blocks/flashcard.ts +8 -0
  44. package/i18n/es-ES/components/content/blocks/index.ts +23 -0
  45. package/i18n/es-ES/components/content/blocks/matching_game.ts +26 -0
  46. package/i18n/es-ES/components/content/blocks/multiple_choice.ts +9 -0
  47. package/i18n/es-ES/components/content/blocks/quizshow_game.ts +35 -0
  48. package/i18n/es-ES/components/content/blocks/seven_strikes.ts +6 -0
  49. package/i18n/es-ES/components/content/blocks/slideshow.ts +13 -0
  50. package/i18n/es-ES/components/content/blocks/sorting_game.ts +5 -0
  51. package/i18n/es-ES/components/content/blocks/word_jumble.ts +11 -0
  52. package/i18n/es-ES/components/content/crud_table.ts +6 -0
  53. package/i18n/es-ES/components/content/index.ts +7 -0
  54. package/i18n/es-ES/components/index.ts +9 -0
  55. package/i18n/es-ES/components/navigation/index.ts +5 -0
  56. package/i18n/es-ES/components/settings/bucket_game.ts +39 -0
  57. package/i18n/es-ES/components/settings/crossword.ts +7 -0
  58. package/i18n/es-ES/components/settings/flashcard.ts +29 -0
  59. package/i18n/es-ES/components/settings/index.ts +23 -0
  60. package/i18n/es-ES/components/settings/matching_game.ts +15 -0
  61. package/i18n/es-ES/components/settings/multiple_choice.ts +17 -0
  62. package/i18n/es-ES/components/settings/quizshow_game.ts +20 -0
  63. package/i18n/es-ES/components/settings/seven_strikes.ts +8 -0
  64. package/i18n/es-ES/components/settings/slideshow.ts +13 -0
  65. package/i18n/es-ES/components/settings/sorting_game.ts +5 -0
  66. package/i18n/es-ES/components/settings/word_jumble.ts +11 -0
  67. package/i18n/es-ES/index.ts +16 -0
  68. package/i18n/es-ES/modules/index.ts +5 -0
  69. package/i18n/es-ES/pages/index.ts +5 -0
  70. package/i18n/es-ES/shared/content_blocks.ts +18 -0
  71. package/i18n/es-ES/shared/index.ts +7 -0
  72. package/i18n/es-ES/shared/settings.ts +14 -0
  73. package/i18n/index.ts +11 -0
  74. package/i18n/sv-SE/components/content/blocks/bucket_game.ts +40 -0
  75. package/i18n/sv-SE/components/content/blocks/crossword.ts +20 -0
  76. package/i18n/sv-SE/components/content/blocks/flashcard.ts +8 -0
  77. package/i18n/sv-SE/components/content/blocks/index.ts +23 -0
  78. package/i18n/sv-SE/components/content/blocks/matching_game.ts +25 -0
  79. package/i18n/sv-SE/components/content/blocks/multiple_choice.ts +9 -0
  80. package/i18n/sv-SE/components/content/blocks/quizshow_game.ts +35 -0
  81. package/i18n/sv-SE/components/content/blocks/seven_strikes.ts +6 -0
  82. package/i18n/sv-SE/components/content/blocks/slideshow.ts +13 -0
  83. package/i18n/sv-SE/components/content/blocks/sorting_game.ts +5 -0
  84. package/i18n/sv-SE/components/content/blocks/word_jumble.ts +11 -0
  85. package/i18n/sv-SE/components/content/crud_table.ts +6 -0
  86. package/i18n/sv-SE/components/content/index.ts +7 -0
  87. package/i18n/sv-SE/components/index.ts +9 -0
  88. package/i18n/sv-SE/components/navigation/index.ts +5 -0
  89. package/i18n/sv-SE/components/settings/bucket_game.ts +38 -0
  90. package/i18n/sv-SE/components/settings/crossword.ts +7 -0
  91. package/i18n/sv-SE/components/settings/flashcard.ts +29 -0
  92. package/i18n/sv-SE/components/settings/index.ts +23 -0
  93. package/i18n/sv-SE/components/settings/matching_game.ts +15 -0
  94. package/i18n/sv-SE/components/settings/multiple_choice.ts +16 -0
  95. package/i18n/sv-SE/components/settings/quizshow_game.ts +20 -0
  96. package/i18n/sv-SE/components/settings/seven_strikes.ts +8 -0
  97. package/i18n/sv-SE/components/settings/slideshow.ts +13 -0
  98. package/i18n/sv-SE/components/settings/sorting_game.ts +5 -0
  99. package/i18n/sv-SE/components/settings/word_jumble.ts +11 -0
  100. package/i18n/sv-SE/index.ts +16 -0
  101. package/i18n/sv-SE/modules/index.ts +5 -0
  102. package/i18n/sv-SE/pages/index.ts +5 -0
  103. package/i18n/sv-SE/shared/content_blocks.ts +18 -0
  104. package/i18n/sv-SE/shared/index.ts +7 -0
  105. package/i18n/sv-SE/shared/settings.ts +14 -0
  106. package/package.json +1 -1
  107. package/plugin.js +33 -34
  108. package/test/Feature/LocaleKeys.spec.js +11 -0
  109. package/test/__mocks__/componentsMock.js +12 -0
  110. package/test/__mocks__/fileMock.js +1 -0
  111. package/test/__mocks__/modelMock.js +88 -0
  112. package/test/__mocks__/styleMock.js +1 -0
  113. package/test/blocks/crossword/CrosswordPuzzle.spec.js +1 -1
  114. package/test/blocks/dragDrop/BucketGame.spec.js +1 -1
  115. package/test/blocks/dragDrop/SortingGame.spec.js +1 -1
  116. package/test/blocks/flashcards/CardFace.spec.js +1 -1
  117. package/test/blocks/flashcards/FlashCardSlides.spec.js +1 -1
  118. package/test/blocks/flashcards/Flashcard.spec.js +1 -1
  119. package/test/blocks/matchingGame/MatchingGame.spec.js +1 -1
  120. package/test/blocks/multipleChoice/MultipleChoice.spec.js +1 -1
  121. package/test/blocks/multipleChoice/QuestionDialog.spec.js +1 -1
  122. package/test/blocks/quizShow/quizShow.spec.js +1 -1
  123. package/test/blocks/sevenStrikes/sevenStrikes.spec.js +1 -1
  124. package/test/blocks/slideshow/slideshow.spec.js +1 -1
  125. package/test/blocks/wordJumble/Jumble.spec.js +1 -1
  126. package/test/blocks/wordJumble/WordJumble.spec.js +1 -1
  127. package/test/mocks.js +8 -2
  128. package/test/settings/BucketGameManager.spec.js +4 -4
  129. package/test/settings/CrosswordPuzzleManager.spec.js +6 -11
  130. package/test/settings/FlashCardSlidesManager.spec.js +1 -1
  131. package/test/settings/MatchingGameManager.spec.js +1 -1
  132. package/test/settings/MultipleChoiceGameManager.spec.js +1 -1
  133. package/test/settings/SevenStrikesManager.spec.js +1 -1
  134. package/test/settings/SlideShowManager.spec.js +1 -1
  135. package/test/settings/SortingGameManager.spec.js +1 -1
  136. package/test/settings/WordJumbleManager.spec.js +1 -4
  137. package/i18n/en-US.ts +0 -5
@@ -1,149 +1,132 @@
1
1
  <template>
2
2
  <div>
3
- <v-form ref="form" v-model="valid">
4
- <v-text-field
5
- v-model="block.metadata.config.title"
6
- :counter="50"
7
- :label="
8
- $t(
9
- 'plugin.games.components.settings.bucket_game.form.title'
10
- )
11
- "
12
- ref="title"
13
- ></v-text-field>
14
- <br />
15
- <v-textarea
16
- outlined
17
- auto-grow
18
- v-model="block.metadata.config.instructions"
19
- :counter="255"
20
- :label="
21
- $t(
22
- 'plugin.games.components.settings.bucket_game.form.instructions'
23
- )
24
- "
25
- ></v-textarea>
26
- <v-expansion-panels flat>
27
- <v-expansion-panel>
28
- <v-expansion-panel-header class="pa-0"
29
- ><h3>
30
- {{
31
- $t(
32
- 'plugin.games.components.settings.crossword.crossword_items'
33
- )
34
- }}
35
- </h3></v-expansion-panel-header
36
- >
37
- <v-expansion-panel-content class="ma-0">
38
- <v-container class="pa-0">
39
- <p>
3
+ <v-form ref="form" v-model="valid" v-if="!loading">
4
+ <v-container class="pa-0">
5
+ <v-text-field
6
+ v-model="block.metadata.config.title"
7
+ :counter="50"
8
+ outlined
9
+ :autofocus="true"
10
+ :label="
11
+ $t(
12
+ 'windward.games.components.settings.bucket_game.form.title'
13
+ )
14
+ "
15
+ ref="title"
16
+ ></v-text-field>
17
+ <v-textarea
18
+ outlined
19
+ auto-grow
20
+ v-model="block.metadata.config.instructions"
21
+ :counter="255"
22
+ :label="
23
+ $t(
24
+ 'windward.games.components.settings.bucket_game.form.instructions'
25
+ )
26
+ "
27
+ ></v-textarea>
28
+ </v-container>
29
+ <v-divider class="my-4 primary"></v-divider>
30
+ <v-container class="pa-0">
31
+ <p class="mb-0">
32
+ {{
33
+ $t(
34
+ 'windward.games.components.settings.crossword.crossword_items'
35
+ )
36
+ }}
37
+ </p>
38
+ <p class="p-label-crosswords">
39
+ {{
40
+ $t(
41
+ 'windward.games.components.settings.crossword.min_length'
42
+ )
43
+ }}
44
+ </p>
45
+ <SortableExpansionPanel
46
+ v-model="block.metadata.config.words"
47
+ @click:close="onDelete($event)"
48
+ >
49
+ <template #header="{ item, index }">
50
+ {{
51
+ item.word !== ''
52
+ ? item.word
53
+ : $t(
54
+ 'windward.games.components.settings.bucket_game.form.enter_text'
55
+ )
56
+ }}
57
+ </template>
58
+ <template #body="{ item, index }">
59
+ <v-container>
60
+ <p class="p-label mb-0">
40
61
  {{
41
62
  $t(
42
- 'plugin.games.components.settings.crossword.min_length'
63
+ 'windward.games.components.settings.crossword.word'
43
64
  )
44
65
  }}
45
66
  </p>
46
- <v-card
47
- v-for="(item, index) in block.metadata.config
48
- .words"
49
- :key="'bucket_' + index"
50
- class="pa-2 flex-fill cardOutline"
51
- elevation="0"
67
+ <v-textarea
52
68
  outlined
53
- tile
54
- >
55
- <v-row class="itemHeight">
56
- <p
57
- class="text-truncate pa-0 ma-0 seventy"
58
- @click="onOpenEditor(index)"
59
- v-on:keyup.enter="onOpenEditor(index)"
60
- @mouseover="onHover"
61
- @mouseleave="onHoverLeave"
62
- :class="cursor"
63
- tabindex="0"
64
- >
65
- <v-icon class="pl-2"
66
- >mdi-gesture-tap-hold</v-icon
67
- >
68
- {{
69
- item.word
70
- ? item.word
71
- : $t(
72
- 'plugin.games.components.settings.bucket_game.form.enter_text'
73
- )
74
- }}
75
- </p>
76
- <v-icon
77
- class="twenty"
78
- @click="onDelete(index)"
79
- >mdi-delete-outline</v-icon
80
- >
81
- </v-row>
82
- <v-textarea
83
- v-if="item.expand"
84
- outlined
85
- :counter="20"
86
- maxlength="20"
87
- :autofocus="true"
88
- :label="
89
- $t(
90
- 'plugin.games.components.settings.crossword.word'
91
- )
92
- "
93
- class="pt-4"
94
- v-model="
95
- block.metadata.config.words[index].word
96
- "
97
- ></v-textarea>
98
- <v-textarea
99
- v-if="item.expand"
100
- outlined
101
- :counter="155"
102
- maxlength="155"
103
- :label="
104
- $t(
105
- 'plugin.games.components.settings.crossword.clue'
106
- )
107
- "
108
- class="pt-4"
109
- v-model="
110
- block.metadata.config.words[index].clue
111
- "
112
- ></v-textarea>
113
- </v-card>
114
- <p
115
- @mouseover="onHover"
116
- @mouseleave="onHoverLeave"
117
- @click="onAddElement"
118
- v-on:keyup.enter="onAddElement"
119
- class="fullWidth"
120
- :class="cursor"
121
- tabindex="0"
122
- >
123
- <v-icon class="primary addIcon"
124
- >mdi-plus</v-icon
125
- >
69
+ :counter="20"
70
+ maxlength="20"
71
+ :autofocus="true"
72
+ class="pt-4"
73
+ v-model="
74
+ block.metadata.config.words[index].word
75
+ "
76
+ ></v-textarea>
77
+ <p class="p-label mb-0">
126
78
  {{
127
79
  $t(
128
- 'plugin.games.components.content.blocks.crossword.add_element'
80
+ 'windward.games.components.settings.crossword.clue'
129
81
  )
130
82
  }}
131
83
  </p>
84
+ <v-textarea
85
+ outlined
86
+ :counter="155"
87
+ maxlength="155"
88
+ class="pt-4"
89
+ v-model="
90
+ block.metadata.config.words[index].clue
91
+ "
92
+ ></v-textarea>
132
93
  </v-container>
133
- </v-expansion-panel-content>
134
- </v-expansion-panel>
135
- </v-expansion-panels>
94
+ </template>
95
+ </SortableExpansionPanel>
96
+ <v-container class="pa-0">
97
+ <v-row justify="center" class="my-4">
98
+ <v-btn color="primary" @click="onAddElement">
99
+ <v-icon>mdi-plus</v-icon>
100
+ {{
101
+ $t(
102
+ 'windward.games.components.settings.bucket_game.form.add_answer'
103
+ )
104
+ }}
105
+ </v-btn>
106
+ </v-row>
107
+ </v-container>
108
+ </v-container>
136
109
  </v-form>
110
+ <div v-if="loading" class="text-center">
111
+ <v-progress-circular
112
+ :size="70"
113
+ :width="7"
114
+ color="primary"
115
+ indeterminate
116
+ ></v-progress-circular>
117
+ </div>
137
118
  </div>
138
119
  </template>
139
120
 
140
121
  <script>
141
122
  import _ from 'lodash'
142
123
  import BaseContentSettings from '~/components/Content/Tool/BaseContentSettings.js'
124
+ import SortableExpansionPanel from '~/components/SortableExpansionPanel.vue'
125
+
143
126
  export default {
144
127
  name: 'CrosswordPuzzleSettingsManager',
145
128
  extends: BaseContentSettings,
146
- components: {},
129
+ components: { SortableExpansionPanel },
147
130
  beforeMount() {
148
131
  if (_.isEmpty(this.block)) {
149
132
  this.block = {}
@@ -155,7 +138,9 @@ export default {
155
138
  this.block.metadata.config = {}
156
139
  }
157
140
  if (_.isEmpty(this.block.metadata.config.title)) {
158
- this.block.metadata.config.title = ''
141
+ this.block.metadata.config.title = this.$t(
142
+ 'windward.games.components.content.blocks.crossword.crossword'
143
+ )
159
144
  }
160
145
  if (_.isEmpty(this.block.metadata.config.instructions)) {
161
146
  this.block.metadata.config.instructions = ''
@@ -169,7 +154,6 @@ export default {
169
154
  id: counter,
170
155
  word: '',
171
156
  clue: '',
172
- expand: false,
173
157
  }
174
158
  counter = counter + 1
175
159
  !this.block.metadata.config.words.push(default_object)
@@ -179,21 +163,16 @@ export default {
179
163
  data() {
180
164
  return {
181
165
  valid: true,
182
- cursor: null,
166
+ loading: false,
183
167
  }
184
168
  },
185
169
  methods: {
186
170
  onAddElement() {
187
- // closes all elements that were expanded
188
- this.block.metadata.config.words.forEach((element) => {
189
- element.expand = false
190
- })
191
- // pushes in new crossword object and expands element
171
+ // pushes in new crossword object
192
172
  const default_object = {
193
173
  id: this.block.metadata.config.words.length,
194
174
  word: '',
195
175
  clue: '',
196
- expand: true,
197
176
  }
198
177
  this.block.metadata.config.words.push(default_object)
199
178
  },
@@ -208,21 +187,6 @@ export default {
208
187
  this.onAddElement()
209
188
  }
210
189
  },
211
- onOpenEditor(index) {
212
- this.block.metadata.config.words[index].expand =
213
- !this.block.metadata.config.words[index].expand
214
- this.block.metadata.config.words.forEach((element) => {
215
- if (index !== element.id) {
216
- element.expand = false
217
- }
218
- })
219
- },
220
- onHover(index) {
221
- this.cursor = 'changePointer'
222
- },
223
- onHoverLeave() {
224
- this.cursor = ''
225
- },
226
190
  },
227
191
  }
228
192
  </script>
@@ -230,42 +194,11 @@ export default {
230
194
  .v-progress-circular {
231
195
  margin: 1rem;
232
196
  }
233
- .changePointer {
234
- cursor: pointer !important;
197
+ .p-label-crosswords {
198
+ font-size: 0.85rem;
235
199
  }
236
- .cardOutline {
237
- border: 2px solid var(--v-primary-base);
238
- margin-bottom: 8px;
239
- }
240
- .fullWidth {
241
- display: flex;
242
- justify-content: center;
243
- align-items: center;
244
- font-weight: bold;
200
+ .p-label {
245
201
  font-size: 16px;
246
- }
247
- .itemHeight {
248
- display: flex;
249
- align-content: center;
250
- justify-content: space-between;
251
- height: 60px;
252
- }
253
- .seventy {
254
- width: 70%;
255
- height: 100%;
256
- display: flex;
257
- align-items: center;
258
- }
259
- .twenty {
260
- width: 20%;
261
- height: 90%;
262
- margin-top: 3px;
263
- border-left: 2px solid var(--v-primary-base);
264
- }
265
- .addIcon {
266
- margin-right: 5px;
267
- }
268
- .v-expansion-panel-content::v-deep .v-expansion-panel-content__wrap {
269
- padding: 0 !important;
202
+ font-weight: 500;
270
203
  }
271
204
  </style>