@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,398 +1,315 @@
1
1
  <template>
2
2
  <div>
3
- <v-text-field
4
- v-model="block.metadata.config.title"
5
- :counter="50"
6
- :label="
7
- $t('plugin.games.components.settings.bucket_game.form.title')
8
- "
9
- ref="title"
10
- ></v-text-field>
11
- <br />
12
- <v-textarea
13
- outlined
14
- auto-grow
15
- v-model="block.metadata.config.instructions"
16
- :label="
17
- $t(
18
- 'plugin.games.components.settings.bucket_game.form.instructions'
19
- )
20
- "
21
- ></v-textarea>
22
- <br />
23
- <v-expansion-panels flat>
24
- <v-expansion-panel>
25
- <v-expansion-panel-header class="pa-0"
26
- ><h3>Sortable Flashcards</h3></v-expansion-panel-header
3
+ <v-form ref="outer-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
+ outlined
8
+ :counter="50"
9
+ :label="
10
+ $t(
11
+ 'windward.games.components.settings.bucket_game.form.title'
12
+ )
13
+ "
14
+ ref="title"
15
+ ></v-text-field>
16
+ <v-textarea
17
+ outlined
18
+ auto-grow
19
+ v-model="block.metadata.config.instructions"
20
+ :label="
21
+ $t(
22
+ 'windward.games.components.settings.bucket_game.form.instructions'
23
+ )
24
+ "
25
+ ></v-textarea>
26
+ </v-container>
27
+ <v-divider class="my-4 primary"></v-divider>
28
+ <v-container class="pa-0">
29
+ <p>
30
+ {{
31
+ $t(
32
+ 'windward.games.components.content.blocks.flashcard.items'
33
+ )
34
+ }}
35
+ </p>
36
+ <SortableExpansionPanel
37
+ v-model="block.metadata.config.cards"
38
+ @click:close="onDelete($event)"
39
+ v-bind:currentPanel.sync="
40
+ block.metadata.config.currentSlide
41
+ "
27
42
  >
28
- <v-expansion-panel-content class="ma-0">
29
- <v-container class="pa-0">
30
- <draggable
31
- v-model="block.metadata.config.cards"
32
- class="d-flex flex-column mb-6"
33
- group="cards"
34
- >
35
- <v-card
36
- v-for="(item, index) in block.metadata.config
37
- .cards"
38
- :key="'card_' + index"
39
- class="pa-2 flex-fill cursorGrab"
40
- elevation="0"
41
- outlined
42
- tile
43
- >
44
- <v-row class="pa-3">
45
- <div
46
- class="text-truncate pa-0 ma-0"
47
- @click="onOpenEditor(index)"
48
- v-on:keyup.enter="onOpenEditor(index)"
49
- @mouseover="onHover"
50
- @mouseleave="onHoverLeave"
51
- :class="cursor"
52
- tabindex="0"
53
- >
54
- <v-icon class="pl-2"
55
- >mdi-gesture-tap-hold
56
- </v-icon>
57
- {{
58
- item.title
59
- ? block.metadata.config.cards[
60
- index
61
- ].title
62
- : $t(
63
- 'plugin.games.components.settings.flashcard.form.card'
64
- ) +
65
- ' ' +
66
- (index + 1)
67
- }}
68
- </div>
69
- <v-spacer />
70
- <v-icon
71
- class="float-right"
72
- @click="onDelete(index, $event)"
73
- >
74
- mdi-delete-outline
75
- </v-icon>
76
- </v-row>
43
+ <template #header="{ item, index }">
44
+ {{
45
+ stripHtml(
46
+ block.metadata.config.cards[index].front.text
47
+ )
48
+ }}
49
+ </template>
50
+ <template #body="{ item, index }">
51
+ <v-container>
52
+ <v-row
53
+ class="d-flex justify-space-around pt-8"
54
+ align="center"
55
+ justify="center"
56
+ ><v-btn
57
+ @click="flipCardFront(index)"
58
+ color="primary"
59
+ :outlined="
60
+ !block.metadata.config.cards[index].side
61
+ "
62
+ >{{
63
+ $t(
64
+ 'windward.games.components.settings.flashcard.form.front'
65
+ )
66
+ }}</v-btn
67
+ >
68
+ {{
69
+ $t(
70
+ 'windward.games.components.settings.flashcard.form.card'
71
+ ) +
72
+ ' ' +
73
+ (index + 1) +
74
+ ' ' +
75
+ (block.metadata.config.cards[index].side
76
+ ? $t(
77
+ 'windward.games.components.settings.flashcard.form.front'
78
+ )
79
+ : $t(
80
+ 'windward.games.components.settings.flashcard.form.back'
81
+ ))
82
+ }}<v-btn
83
+ @click="flipCardBack(index)"
84
+ color="primary"
85
+ :outlined="
86
+ block.metadata.config.cards[index].side
87
+ "
88
+ >
89
+ {{
90
+ $t(
91
+ 'windward.games.components.settings.flashcard.form.back'
92
+ )
93
+ }}</v-btn
94
+ ></v-row
95
+ ><br />
96
+ <v-form ref="form">
97
+ <br />
77
98
 
78
- <div
99
+ <v-text-field
79
100
  v-if="
80
- block.metadata.config.cards[index]
81
- .expand
101
+ !block.metadata.config.cards[index].side
102
+ "
103
+ outlined
104
+ auto-grow
105
+ v-model="
106
+ block.metadata.config.cards[index].back
107
+ .header
108
+ "
109
+ :counter="255"
110
+ :label="
111
+ $t(
112
+ 'windward.games.components.settings.flashcard.form.header'
113
+ )
114
+ "
115
+ required
116
+ />
117
+ <v-card
118
+ elevation="0"
119
+ v-show="
120
+ block.metadata.config.cards[index].side
82
121
  "
83
122
  >
84
- <br />
85
- <hr />
86
-
87
- <v-row
88
- class="d-flex justify-space-around pt-8"
89
- align="center"
90
- justify="center"
91
- ><v-btn
92
- @click="flipCardFront(index)"
93
- color="primary"
94
- :outlined="
95
- !block.metadata.config.cards[
96
- index
97
- ].side
98
- "
99
- >{{
100
- $t(
101
- 'plugin.games.components.settings.flashcard.form.front'
102
- )
103
- }}</v-btn
104
- >
123
+ <v-card-title>
124
+ {{
125
+ $t(
126
+ 'windward.games.components.settings.flashcard.form.card_content'
127
+ )
128
+ }}
129
+ </v-card-title>
130
+ <textEditor
131
+ outlined
132
+ auto-grow
133
+ menubar="edit"
134
+ toolbar="undo redo | italic underline strikethrough removeformat | mathButton"
135
+ v-model="
136
+ block.metadata.config.cards[index]
137
+ .front.text
138
+ "
139
+ :label="
140
+ $t(
141
+ 'windward.games.components.settings.flashcard.form.text'
142
+ )
143
+ "
144
+ required
145
+ />
146
+ </v-card>
147
+ <v-card
148
+ outlined
149
+ v-show="
150
+ !block.metadata.config.cards[index].side
151
+ "
152
+ >
153
+ <v-card-text>
105
154
  {{
106
155
  $t(
107
- 'plugin.games.components.settings.flashcard.form.card'
108
- ) +
109
- ' ' +
110
- (index + 1) +
111
- ' ' +
112
- (block.metadata.config.cards[index]
156
+ 'windward.games.components.settings.flashcard.form.card_content'
157
+ )
158
+ }}
159
+ </v-card-text>
160
+ <textEditor
161
+ outlined
162
+ auto-grow
163
+ menubar="edit"
164
+ toolbar="undo redo | italic underline strikethrough removeformat | mathButton"
165
+ v-model="
166
+ block.metadata.config.cards[index]
167
+ .back.text
168
+ "
169
+ label="Text"
170
+ required
171
+ />
172
+ </v-card>
173
+ <br />
174
+ <ContentBlockAsset
175
+ v-show="
176
+ block.metadata.config.cards[index].side
177
+ "
178
+ v-model="
179
+ block.metadata.config.cards[index].front
180
+ .img
181
+ "
182
+ mimes="image/png,image/jpeg"
183
+ @click:file="onImageSelect"
184
+ >
185
+ <template #title>
186
+ {{
187
+ $t(
188
+ 'windward.games.components.settings.flashcard.form.image.title'
189
+ )
190
+ }}
191
+ </template>
192
+ <template #description>
193
+ {{
194
+ $t(
195
+ 'windward.games.components.settings.flashcard.form.image.configure_blurb'
196
+ )
197
+ }}
198
+ </template>
199
+ </ContentBlockAsset>
200
+ <ContentBlockAsset
201
+ v-show="
202
+ !block.metadata.config.cards[index].side
203
+ "
204
+ v-model="
205
+ block.metadata.config.cards[index].back
206
+ .img
207
+ "
208
+ mimes="image/png,image/jpeg"
209
+ @click:file="onImageSelect"
210
+ >
211
+ <template #title>
212
+ {{
213
+ $t(
214
+ 'windward.games.components.settings.flashcard.form.image.title'
215
+ )
216
+ }}
217
+ </template>
218
+ <template #description>
219
+ {{
220
+ $t(
221
+ 'windward.games.components.settings.flashcard.form.image.configure_blurb'
222
+ )
223
+ }}
224
+ </template>
225
+ </ContentBlockAsset>
226
+ <br />
227
+ <v-textarea
228
+ auto-grow
229
+ v-show="
230
+ block.metadata.config.cards[index].side
231
+ "
232
+ outlined
233
+ v-model="
234
+ block.metadata.config.cards[index].front
235
+ .altText
236
+ "
237
+ label="Alt Text"
238
+ required
239
+ ></v-textarea>
240
+ <v-textarea
241
+ auto-grow
242
+ v-show="
243
+ !block.metadata.config.cards[index].side
244
+ "
245
+ outlined
246
+ v-model="
247
+ block.metadata.config.cards[index].back
248
+ .altText
249
+ "
250
+ label="Alt Text"
251
+ required
252
+ ></v-textarea>
253
+ <v-row
254
+ class="d-flex justify-space-around pt-8"
255
+ align="center"
256
+ justify="center"
257
+ ><v-btn
258
+ @click="flipCardFront(index)"
259
+ color="primary"
260
+ :outlined="
261
+ !block.metadata.config.cards[index]
113
262
  .side
114
- ? $t(
115
- 'plugin.games.components.settings.flashcard.form.front'
116
- )
117
- : $t(
118
- 'plugin.games.components.settings.flashcard.form.back'
119
- ))
120
- }}<v-btn
121
- @click="flipCardBack(index)"
122
- color="primary"
123
- :outlined="
124
- block.metadata.config.cards[
125
- index
126
- ].side
127
- "
128
- >
129
- {{
130
- $t(
131
- 'plugin.games.components.settings.flashcard.form.back'
132
- )
133
- }}</v-btn
134
- ></v-row
135
- ><br />
136
- <v-form ref="form">
137
- <v-text-field
138
- v-model="
139
- block.metadata.config.cards[
140
- index
141
- ].title
142
- "
143
- :label="
144
- $t(
145
- 'plugin.games.components.settings.flashcard.form.label'
146
- )
147
- "
148
- ></v-text-field>
149
- <br />
150
- <v-textarea
151
- v-if="
152
- block.metadata.config.cards[
153
- index
154
- ].side
155
- "
156
- outlined
157
- auto-grow
158
- v-model="
159
- block.metadata.config.cards[
160
- index
161
- ].front.header
162
- "
163
- :label="
164
- $t(
165
- 'plugin.games.components.settings.flashcard.form.header'
166
- )
167
- "
168
- />
169
- <v-textarea
170
- v-if="
171
- !block.metadata.config.cards[
172
- index
173
- ].side
174
- "
175
- outlined
176
- auto-grow
177
- v-model="
178
- block.metadata.config.cards[
179
- index
180
- ].back.header
181
- "
182
- :counter="255"
183
- :label="
184
- $t(
185
- 'plugin.games.components.settings.flashcard.form.header'
186
- )
187
- "
188
- required
189
- />
190
- <v-card
191
- outlined
192
- v-show="
193
- block.metadata.config.cards[
194
- index
195
- ].side
196
- "
197
- >
198
- <v-card-text>
199
- {{
200
- $t(
201
- 'plugin.games.components.settings.flashcard.form.card_content'
202
- )
203
- }}
204
- </v-card-text>
205
- <textEditor
206
- outlined
207
- auto-grow
208
- v-model="
209
- block.metadata.config.cards[
210
- index
211
- ].front.text
212
- "
213
- :label="
214
- $t(
215
- 'plugin.games.components.settings.flashcard.form.text'
216
- )
217
- "
218
- required
219
- />
220
- </v-card>
221
- <v-card
222
- outlined
223
- v-show="
224
- !block.metadata.config.cards[
225
- index
226
- ].side
227
- "
228
- >
229
- <v-card-text>
230
- {{
231
- $t(
232
- 'plugin.games.components.settings.flashcard.form.card_content'
233
- )
234
- }}
235
- </v-card-text>
236
- <textEditor
237
- outlined
238
- auto-grow
239
- v-model="
240
- block.metadata.config.cards[
241
- index
242
- ].back.text
243
- "
244
- label="Text"
245
- required
246
- />
247
- </v-card>
248
- <br />
249
- <ContentBlockAsset
250
- v-show="
251
- block.metadata.config.cards[
252
- index
253
- ].side
254
- "
255
- v-model="
256
- block.metadata.config.cards[
257
- index
258
- ].front.img
259
- "
260
- mimes="image/png,image/jpeg"
261
- @click:file="onImageSelect"
262
- >
263
- <template #title>
264
- {{
265
- $t(
266
- 'plugin.games.components.settings.flashcard.form.image.title'
267
- )
268
- }}
269
- </template>
270
- <template #description>
271
- {{
272
- $t(
273
- 'plugin.games.components.settings.flashcard.form.image.configure_blurb'
274
- )
275
- }}
276
- </template>
277
- </ContentBlockAsset>
278
- <ContentBlockAsset
279
- v-show="
280
- !block.metadata.config.cards[
281
- index
282
- ].side
283
- "
284
- v-model="
285
- block.metadata.config.cards[
286
- index
287
- ].back.img
288
- "
289
- mimes="image/png,image/jpeg"
290
- @click:file="onImageSelect"
291
- >
292
- <template #title>
293
- {{
294
- $t(
295
- 'plugin.games.components.settings.flashcard.form.image.title'
296
- )
297
- }}
298
- </template>
299
- <template #description>
300
- {{
301
- $t(
302
- 'plugin.games.components.settings.flashcard.form.image.configure_blurb'
303
- )
304
- }}
305
- </template>
306
- </ContentBlockAsset>
307
- <br />
308
- <v-textarea
309
- auto-grow
310
- v-show="
311
- block.metadata.config.cards[
312
- index
313
- ].side
314
- "
315
- outlined
316
- v-model="
317
- block.metadata.config.cards[
318
- index
319
- ].front.altText
320
- "
321
- label="Alt Text"
322
- required
323
- ></v-textarea>
324
- <v-textarea
325
- auto-grow
326
- v-show="
327
- !block.metadata.config.cards[
328
- index
329
- ].side
330
- "
331
- outlined
332
- v-model="
333
- block.metadata.config.cards[
334
- index
335
- ].back.altText
336
- "
337
- label="Alt Text"
338
- required
339
- ></v-textarea>
340
- <v-row
341
- class="d-flex justify-space-around pt-8"
342
- align="center"
343
- justify="center"
344
- ><v-btn
345
- @click="flipCardFront(index)"
346
- color="primary"
347
- :outlined="
348
- !block.metadata.config
349
- .cards[index].side
350
- "
351
- >{{
352
- $t(
353
- 'plugin.games.components.settings.flashcard.form.front'
354
- )
355
- }}</v-btn
356
- >
263
+ "
264
+ >{{
265
+ $t(
266
+ 'windward.games.components.settings.flashcard.form.front'
267
+ )
268
+ }}</v-btn
269
+ >
357
270
 
358
- <v-btn
359
- @click="flipCardBack(index)"
360
- color="primary"
361
- :outlined="
362
- block.metadata.config.cards[
363
- index
364
- ].side
365
- "
366
- >
367
- {{
368
- $t(
369
- 'plugin.games.components.settings.flashcard.form.back'
370
- )
371
- }}</v-btn
372
- ></v-row
373
- >
374
- <br />
375
- </v-form>
376
- </div>
377
- </v-card>
378
- </draggable>
379
- <p
380
- @click="onAddCard"
381
- v-on:keyup.enter="onAddCard"
382
- class="fullWidth"
383
- tabindex="0"
384
- >
385
- <v-icon class="primary addIcon">mdi-plus</v-icon>
386
- {{
387
- $t(
388
- 'plugin.games.components.settings.flashcard.form.add_card'
389
- )
390
- }}
391
- </p>
392
- </v-container>
393
- </v-expansion-panel-content>
394
- </v-expansion-panel>
395
- </v-expansion-panels>
271
+ <v-btn
272
+ @click="flipCardBack(index)"
273
+ color="primary"
274
+ :outlined="
275
+ block.metadata.config.cards[index]
276
+ .side
277
+ "
278
+ >
279
+ {{
280
+ $t(
281
+ 'windward.games.components.settings.flashcard.form.back'
282
+ )
283
+ }}</v-btn
284
+ ></v-row
285
+ >
286
+ <br />
287
+ </v-form>
288
+ </v-container>
289
+ </template>
290
+ </SortableExpansionPanel>
291
+ </v-container>
292
+ <v-container class="pa-0">
293
+ <v-row justify="center" class="my-4">
294
+ <v-btn color="primary" @click="onAddCard">
295
+ <v-icon>mdi-plus</v-icon>
296
+ {{
297
+ $t(
298
+ 'windward.games.components.settings.flashcard.form.add_card'
299
+ )
300
+ }}
301
+ </v-btn>
302
+ </v-row>
303
+ </v-container>
304
+ </v-form>
305
+ <div v-if="loading" class="text-center">
306
+ <v-progress-circular
307
+ :size="70"
308
+ :width="7"
309
+ color="primary"
310
+ indeterminate
311
+ ></v-progress-circular>
312
+ </div>
396
313
  </div>
397
314
  </template>
398
315
 
@@ -406,7 +323,7 @@ import {
406
323
  import BaseContentSettings from '~/components/Content/Tool/BaseContentSettings.js'
407
324
  import ContentBlockAsset from '~/components/Content/ContentBlockAsset.vue'
408
325
  import TextEditor from '~/components/Text/TextEditor.vue'
409
- import draggable from 'vuedraggable'
326
+ import SortableExpansionPanel from '~/components/SortableExpansionPanel.vue'
410
327
 
411
328
  export default {
412
329
  name: 'FlashCardSlidesManager',
@@ -416,12 +333,13 @@ export default {
416
333
  MathLiveWrapper,
417
334
  ContentViewer,
418
335
  ContentBlockAsset,
419
- draggable,
420
336
  TextEditor,
337
+ SortableExpansionPanel,
421
338
  },
422
339
  data() {
423
340
  return {
424
- cursor: null,
341
+ loading: false,
342
+ valid: true,
425
343
  }
426
344
  },
427
345
  beforeMount() {
@@ -431,6 +349,14 @@ export default {
431
349
  if (_.isEmpty(this.block.metadata)) {
432
350
  this.block.metadata = {}
433
351
  }
352
+ if (_.isEmpty(this.block.metadata.config)) {
353
+ this.block.metadata.config = {}
354
+ }
355
+ if (_.isEmpty(this.block.metadata.config.title)) {
356
+ this.block.metadata.config.title = this.$t(
357
+ 'windward.games.components.content.blocks.flashcard.title'
358
+ )
359
+ }
434
360
  if (_.isEmpty(this.block.metadata.config)) {
435
361
  this.block.metadata.config = {}
436
362
  this.block.metadata.config.currentSlide = 0
@@ -444,15 +370,17 @@ export default {
444
370
  return {
445
371
  front: {
446
372
  img: {},
447
- header: 'front header',
448
- text: 'front text',
449
- imgAltText: 'alt',
373
+ header: '',
374
+ text: '',
375
+ imgAltText: '',
450
376
  },
451
377
  back: {
452
378
  img: {},
453
- header: 'back header ',
454
- text: 'back text ',
455
- imgAltText: 'back alt ',
379
+ header: this.$t(
380
+ 'windward.games.components.settings.flashcard.form.header'
381
+ ),
382
+ text: '',
383
+ imgAltText: '',
456
384
  },
457
385
  expand: false,
458
386
  title: '',
@@ -487,18 +415,6 @@ export default {
487
415
  ],
488
416
  })
489
417
  },
490
- onOpenEditor(index) {
491
- this.block.metadata.config.currentSlide = index
492
- this.block.metadata.config.cards[index].expand =
493
- !this.block.metadata.config.cards[index].expand
494
- this.block.metadata.config.cards.forEach(
495
- (element, element_index) => {
496
- if (index !== element_index) {
497
- element.expand = false
498
- }
499
- }
500
- )
501
- },
502
418
  onImageSelect(img) {
503
419
  let currentSlide = this.block.metadata.config.currentSlide
504
420
  this.block.metadata.config.cards[currentSlide].img = img
@@ -510,21 +426,9 @@ export default {
510
426
  flipCardBack(index) {
511
427
  this.block.metadata.config.cards[index].side = false
512
428
  },
513
- onHover(index) {
514
- this.cursor = 'changePointer'
515
- },
516
- onHoverLeave() {
517
- this.cursor = ''
429
+ stripHtml(htmlString) {
430
+ return htmlString.replace(/(<([^>]+)>)/gi, '')
518
431
  },
519
432
  },
520
433
  }
521
434
  </script>
522
-
523
- <style scoped>
524
- .changePointer {
525
- cursor: pointer !important;
526
- }
527
- .cursorGrab {
528
- cursor: grab;
529
- }
530
- </style>