@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,139 +1,125 @@
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
- <v-expansion-panels flat>
23
- <v-expansion-panel>
24
- <v-expansion-panel-header class="pa-0">
25
- <h3>
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
+ outlined
8
+ :counter="50"
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
+ v-model="block.metadata.config.instructions"
19
+ outlined
20
+ auto-grow
21
+ :label="
22
+ $t(
23
+ 'windward.games.components.settings.bucket_game.form.instructions'
24
+ )
25
+ "
26
+ ></v-textarea>
27
+ </v-container>
28
+ <v-divider class="my-4 primary"></v-divider>
29
+ <v-container class="pa-0">
30
+ <p>
31
+ {{
32
+ $t(
33
+ 'windward.games.components.settings.seven_strikes.items'
34
+ )
35
+ }}
36
+ </p>
37
+ <SortableExpansionPanel
38
+ v-model="block.metadata.config.words"
39
+ @click:close="onDelete($event)"
40
+ >
41
+ <template #header="{ item, index }">
26
42
  {{
27
- $t(
28
- 'plugin.games.components.settings.seven_strikes.items'
29
- )
43
+ item.value
44
+ ? block.metadata.config.words[index].value
45
+ : $t(
46
+ 'windward.games.components.settings.bucket_game.form.enter_text'
47
+ )
30
48
  }}
31
- </h3>
32
- </v-expansion-panel-header>
33
- <v-expansion-panel-content class="ma-0">
34
- <v-card
35
- v-for="(item, index) in block.metadata.config.words"
36
- :key="'bucket_' + index"
37
- class="pa-2 flex-fill cardOutline"
38
- elevation="0"
39
- outlined
40
- tile
41
- >
42
- <v-row class="itemHeight">
43
- <p
44
- class="text-truncate pa-0 ma-0 seventy"
45
- @click="onOpenEditor(index)"
46
- v-on:keyup.enter="onOpenEditor(index)"
47
- @mouseover="onHover"
48
- @mouseleave="onHoverLeave"
49
- :class="cursor"
50
- tabindex="0"
51
- >
52
- <v-icon class="pl-2"
53
- >mdi-gesture-tap-hold</v-icon
54
- >
55
- {{
56
- item.value
57
- ? block.metadata.config.words[index]
58
- .value
59
- : $t(
60
- 'plugin.games.components.settings.bucket_game.form.enter_text'
61
- )
62
- }}
63
- </p>
64
- <v-icon class="twenty" @click="onDelete(index)"
65
- >mdi-delete-outline</v-icon
66
- >
67
- </v-row>
68
- <v-textarea
69
- v-if="item.expand"
70
- outlined
71
- :autofocus="true"
72
- :label="
73
- $t(
74
- 'plugin.games.components.settings.seven_strikes.word'
75
- )
76
- "
77
- class="pt-4"
78
- v-model="block.metadata.config.words[index].value"
79
- ></v-textarea>
80
- <v-textarea
81
- v-if="item.expand"
82
- outlined
83
- class="pt-4"
84
- :label="
85
- $t(
86
- 'plugin.games.components.settings.seven_strikes.hint'
87
- )
88
- "
89
- v-model="block.metadata.config.words[index].hint"
90
- ></v-textarea>
91
- </v-card>
92
- <p
93
- @mouseover="onHover"
94
- @mouseleave="onHoverLeave"
95
- @click="onAddElement"
96
- v-on:keyup.enter="onAddElement"
97
- class="fullWidth"
98
- :class="cursor"
99
- tabindex="0"
100
- >
101
- <v-icon class="primary addIcon">mdi-plus</v-icon>
49
+ </template>
50
+ <template #body="{ item, index }">
51
+ <v-container>
52
+ <v-flex xs12>
53
+ <p class="p-label">
54
+ {{
55
+ $t(
56
+ 'windward.games.components.settings.seven_strikes.word'
57
+ )
58
+ }}
59
+ </p>
60
+ <v-textarea
61
+ v-model="
62
+ block.metadata.config.words[index].value
63
+ "
64
+ outlined
65
+ :autofocus="true"
66
+ ></v-textarea>
67
+ <p class="p-label">
68
+ {{
69
+ $t(
70
+ 'windward.games.components.settings.seven_strikes.hint'
71
+ )
72
+ }}
73
+ </p>
74
+ <v-textarea
75
+ v-model="
76
+ block.metadata.config.words[index].hint
77
+ "
78
+ outlined
79
+ class="pt-4"
80
+ ></v-textarea>
81
+ </v-flex>
82
+ </v-container>
83
+ </template>
84
+ </SortableExpansionPanel>
85
+ </v-container>
86
+ <v-container class="pa-0">
87
+ <v-row justify="center" class="my-4">
88
+ <v-btn color="primary" @click="onAddElement">
89
+ <v-icon>mdi-plus</v-icon>
102
90
  {{
103
91
  $t(
104
- 'plugin.games.components.content.blocks.sorting_game.add_element'
92
+ 'windward.games.components.content.blocks.sorting_game.add_element'
105
93
  )
106
94
  }}
107
- </p>
108
- </v-expansion-panel-content>
109
- </v-expansion-panel>
110
- </v-expansion-panels>
111
- <v-row class="mt-3">
112
- <v-textarea
113
- v-model="block.metadata.config.feedback_correct"
114
- outlined
115
- auto-grow
116
- :counter="50"
117
- :label="
118
- $t(
119
- 'plugin.games.components.settings.word_jumble.feedback_correct'
120
- )
121
- "
122
- ref="title"
123
- ></v-textarea>
124
- <br />
125
- <v-textarea
126
- outlined
127
- auto-grow
128
- v-model="block.metadata.config.feedback_incorrect"
129
- :label="
130
- $t(
131
- 'plugin.games.components.settings.word_jumble.feedback_incorrect'
132
- )
133
- "
134
- ></v-textarea>
135
- <br />
136
- </v-row>
95
+ </v-btn>
96
+ </v-row>
97
+ </v-container>
98
+ <v-row class="mt-3">
99
+ <v-textarea
100
+ v-model="block.metadata.config.feedback_correct"
101
+ outlined
102
+ auto-grow
103
+ :counter="50"
104
+ :label="
105
+ $t(
106
+ 'windward.games.components.settings.word_jumble.feedback_correct'
107
+ )
108
+ "
109
+ ref="title"
110
+ ></v-textarea>
111
+ <v-textarea
112
+ v-model="block.metadata.config.feedback_incorrect"
113
+ outlined
114
+ auto-grow
115
+ :label="
116
+ $t(
117
+ 'windward.games.components.settings.word_jumble.feedback_incorrect'
118
+ )
119
+ "
120
+ ></v-textarea>
121
+ </v-row>
122
+ </v-form>
137
123
  </div>
138
124
  </template>
139
125
 
@@ -142,11 +128,12 @@ import _ from 'lodash'
142
128
  import draggable from 'vuedraggable'
143
129
  import BaseContentSettings from '~/components/Content/Tool/BaseContentSettings.js'
144
130
  import CrudTable from '../content/CrudTable.vue'
131
+ import SortableExpansionPanel from '~/components/SortableExpansionPanel.vue'
145
132
 
146
133
  export default {
147
134
  name: 'SevenStrikesSettingsManager',
148
135
  extends: BaseContentSettings,
149
- components: { CrudTable, draggable },
136
+ components: { CrudTable, draggable, SortableExpansionPanel },
150
137
  beforeMount() {
151
138
  if (_.isEmpty(this.block)) {
152
139
  this.block = {}
@@ -158,18 +145,24 @@ export default {
158
145
  this.block.metadata.config = {}
159
146
  }
160
147
  if (_.isEmpty(this.block.metadata.config.title)) {
161
- this.block.metadata.config.title = ''
148
+ this.block.metadata.config.title = this.$t(
149
+ 'windward.games.components.settings.seven_strikes.title'
150
+ )
162
151
  }
163
152
  if (_.isEmpty(this.block.metadata.config.instructions)) {
164
153
  this.block.metadata.config.instructions = this.$t(
165
- 'plugin.games.components.settings.seven_strikes.instructions'
154
+ 'windward.games.components.settings.seven_strikes.instructions'
166
155
  )
167
156
  }
168
157
  if (_.isEmpty(this.block.metadata.config.feedback_correct)) {
169
- this.block.metadata.config.feedback_correct = ''
158
+ this.block.metadata.config.feedback_correct = this.$t(
159
+ 'windward.games.components.settings.bucket_game.form.feedback.correct_default'
160
+ )
170
161
  }
171
- if (_.isEmpty(this.block.metadata.config.feedback_correct)) {
172
- this.block.metadata.config.feedback_incorrect = ''
162
+ if (_.isEmpty(this.block.metadata.config.feedback_incorrect)) {
163
+ this.block.metadata.config.feedback_incorrect = this.$t(
164
+ 'windward.games.components.settings.bucket_game.form.feedback.incorrect_default'
165
+ )
173
166
  }
174
167
  if (_.isEmpty(this.block.metadata.config.words)) {
175
168
  this.block.metadata.config.words = []
@@ -184,7 +177,8 @@ export default {
184
177
  },
185
178
  data() {
186
179
  return {
187
- cursor: null,
180
+ valid: true,
181
+ loading: false,
188
182
  }
189
183
  },
190
184
  methods: {
@@ -221,24 +215,6 @@ export default {
221
215
  }
222
216
  this.block.metadata.config.words.push(default_object)
223
217
  },
224
- onHover(index) {
225
- this.cursor = 'changePointer'
226
- },
227
- onHoverLeave() {
228
- this.cursor = ''
229
- },
230
- onOpenEditor(index) {
231
- // open target element
232
- this.block.metadata.config.words[index].expand =
233
- !this.block.metadata.config.words[index].expand
234
- // close all other expanded areas
235
- this.block.metadata.config.words.forEach((element) => {
236
- let indexOf = this.block.metadata.config.words.indexOf(element)
237
- if (index !== indexOf) {
238
- element.expand = false
239
- }
240
- })
241
- },
242
218
  onDelete(index) {
243
219
  this.block.metadata.config.words.splice(index, 1)
244
220
  },
@@ -250,46 +226,8 @@ export default {
250
226
  .v-progress-circular {
251
227
  margin: 1rem;
252
228
  }
253
- .cardOutline {
254
- border: 2px solid var(--v-primary-base);
255
- margin-bottom: 8px;
256
- }
257
- .fullWidth {
258
- display: flex;
259
- justify-content: center;
260
- align-items: center;
261
- font-weight: bold;
229
+ .p-label {
262
230
  font-size: 16px;
263
- }
264
- .itemHeight {
265
- display: flex;
266
- align-content: center;
267
- justify-content: space-between;
268
- height: 60px;
269
- }
270
- .changePointer {
271
- cursor: pointer !important;
272
- }
273
- .seventy {
274
- width: 70%;
275
- height: 100%;
276
- display: flex;
277
- align-items: center;
278
- }
279
- .twenty {
280
- width: 20%;
281
- height: 90%;
282
- margin-top: 3px;
283
- border-left: 2px solid var(--v-primary-base);
284
- }
285
- .addButton {
286
- height: 50%;
287
- width: 50%;
288
- }
289
- .addIcon {
290
- margin-right: 5px;
291
- }
292
- .v-expansion-panel-content::v-deep .v-expansion-panel-content__wrap {
293
- padding: 0 !important;
231
+ font-weight: 500;
294
232
  }
295
233
  </style>
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div>
3
- <div>
4
- <v-form ref="form" v-model="valid" v-if="!loading">
3
+ <v-form ref="form" v-model="valid" v-if="!loading">
4
+ <v-container class="pa-0">
5
5
  <v-text-field
6
6
  v-model="block.metadata.config.title"
7
+ outlined
7
8
  :counter="50"
8
9
  maxlength="50"
9
10
  :label="
10
11
  $t(
11
- 'plugin.games.components.settings.slideshow.form.title'
12
+ 'windward.games.components.settings.slideshow.form.title'
12
13
  )
13
14
  "
14
15
  ></v-text-field>
15
- <br />
16
16
  <v-textarea
17
17
  outlined
18
18
  auto-grow
@@ -21,150 +21,110 @@
21
21
  maxlength="255"
22
22
  :label="
23
23
  $t(
24
- 'plugin.games.components.settings.slideshow.form.instructions'
24
+ 'windward.games.components.settings.slideshow.form.instructions'
25
25
  )
26
26
  "
27
27
  ></v-textarea>
28
- <br />
29
- </v-form>
30
- <div v-if="loading" class="text-center">
31
- <v-progress-circular
32
- :size="70"
33
- :width="7"
34
- color="primary"
35
- indeterminate
36
- ></v-progress-circular>
37
- </div>
38
- </div>
39
- <div>
40
- <v-layout class="d-flex">
41
- <v-toolbar flat class="toolbar">
42
- <v-text-field
43
- class="shrink pt-7 pr-2"
44
- :label="
45
- $t(
46
- 'plugin.games.components.content.blocks.slideshow.amount_of_slides'
47
- )
48
- "
49
- :placeholder="
50
- $t(
51
- 'plugin.games.components.content.blocks.slideshow.amount_of_slides'
52
- )
53
- "
54
- outlined
55
- dense
56
- type="number"
57
- :value="block.metadata.config.slides.length"
58
- :disabled="true"
59
- ></v-text-field>
60
- <v-btn @click="onAddSlide" color="primary">
28
+ </v-container>
29
+ <v-divider class="my-4 primary"></v-divider>
30
+ <v-container class="pa-0">
31
+ <p>
32
+ {{
33
+ $t(
34
+ 'windward.games.components.settings.slideshow.form.items'
35
+ )
36
+ }}
37
+ </p>
38
+ <SortableExpansionPanel
39
+ v-model="block.metadata.config.slides"
40
+ @click:close="onDeleteSlide($event)"
41
+ >
42
+ <template #header="{ item, index }">
61
43
  {{
62
- $t(
63
- 'plugin.games.components.content.blocks.slideshow.add_slide'
64
- )
44
+ item.header
45
+ ? item.header
46
+ : $t(
47
+ 'windward.games.components.content.blocks.slideshow.slides.slide',
48
+ [index + 1]
49
+ )
65
50
  }}
66
- </v-btn>
67
- </v-toolbar>
68
- </v-layout>
69
- <div>
51
+ </template>
52
+ <template #body="{ item, index }">
53
+ <v-text-field
54
+ v-model="block.metadata.config.slides[index].header"
55
+ :autofocus="true"
56
+ outlined
57
+ :label="
58
+ $t(
59
+ 'windward.games.components.content.blocks.slideshow.slides.slide_header'
60
+ )
61
+ "
62
+ ></v-text-field>
63
+ <v-text-field
64
+ v-model="
65
+ block.metadata.config.slides[index].description
66
+ "
67
+ outlined
68
+ :label="
69
+ $t(
70
+ 'windward.games.components.content.blocks.slideshow.slides.slide_description'
71
+ )
72
+ "
73
+ ></v-text-field>
74
+ <v-text-field
75
+ v-model="
76
+ block.metadata.config.slides[index].image_alt
77
+ "
78
+ outlined
79
+ :label="
80
+ $t(
81
+ 'windward.games.components.content.blocks.slideshow.slides.image_alt'
82
+ )
83
+ "
84
+ ></v-text-field>
85
+ <ContentBlockAsset
86
+ id="content-block-asset"
87
+ v-model="block.metadata.config.slides[index].image"
88
+ mimes="image/png,image/jpeg"
89
+ ></ContentBlockAsset>
90
+ </template>
91
+ </SortableExpansionPanel>
70
92
  <v-container>
71
- <v-expansion-panels flat>
72
- <draggable
73
- :list="block.metadata.config.slides"
74
- :disabled="false"
75
- class="flex-fill"
76
- :group="{
77
- name: 'people',
78
- pull: 'clone',
79
- put: false,
80
- }"
81
- >
82
- <v-expansion-panel
83
- v-for="(slide, index) in block.metadata.config
84
- .slides"
85
- :key="index"
86
- >
87
- <v-expansion-panel-header>
88
- <v-container>
89
- <v-row
90
- align="center"
91
- justify="space-between"
92
- >
93
- <h3>
94
- {{
95
- $t(
96
- 'plugin.games.components.content.blocks.slideshow.slides.slide',
97
- [index + 1]
98
- )
99
- }}
100
- </h3>
101
- <v-btn
102
- @click="onDeleteSlide(index)"
103
- color="primary"
104
- >
105
- <v-icon> mdi-delete</v-icon>
106
- <span class="sr-only">{{
107
- $t('shared.forms.delete')
108
- }}</span>
109
- </v-btn>
110
- </v-row>
111
- </v-container>
112
- </v-expansion-panel-header>
113
- <v-expansion-panel-content>
114
- <v-text-field
115
- v-model="slide['header']"
116
- :autofocus="true"
117
- outlined
118
- :label="
119
- $t(
120
- 'plugin.games.components.content.blocks.slideshow.slides.slide_header'
121
- )
122
- "
123
- ></v-text-field>
124
- <v-text-field
125
- v-model="slide['description']"
126
- outlined
127
- :label="
128
- $t(
129
- 'plugin.games.components.content.blocks.slideshow.slides.slide_description'
130
- )
131
- "
132
- ></v-text-field>
133
- <v-text-field
134
- v-model="slide['image_alt']"
135
- outlined
136
- :label="
137
- $t(
138
- 'plugin.games.components.content.blocks.slideshow.slides.image_alt'
139
- )
140
- "
141
- ></v-text-field>
142
- <ContentBlockAsset
143
- id="content-block-asset"
144
- v-model="slide['image']"
145
- mimes="image/png,image/jpeg"
146
- ></ContentBlockAsset>
147
- </v-expansion-panel-content>
148
- </v-expansion-panel>
149
- </draggable>
150
- </v-expansion-panels>
93
+ <v-row justify="center" class="my-4">
94
+ <v-btn @click="onAddSlide" color="primary">
95
+ <v-icon>mdi-plus</v-icon>
96
+ {{
97
+ $t(
98
+ 'windward.games.components.content.blocks.slideshow.add_slide'
99
+ )
100
+ }}
101
+ </v-btn>
102
+ </v-row>
151
103
  </v-container>
152
- </div>
104
+ </v-container>
105
+ </v-form>
106
+ <div v-if="loading" class="text-center">
107
+ <v-progress-circular
108
+ :size="70"
109
+ :width="7"
110
+ color="primary"
111
+ indeterminate
112
+ ></v-progress-circular>
153
113
  </div>
154
114
  </div>
155
115
  </template>
156
116
  <script>
157
117
  import BaseContentSettings from '~/components/Content/Tool/BaseContentSettings.js'
158
- import draggable from 'vuedraggable'
159
118
  import _ from 'lodash'
160
119
  import ContentBlockAsset from '~/components/Content/ContentBlockAsset.vue'
120
+ import SortableExpansionPanel from '~/components/SortableExpansionPanel.vue'
161
121
 
162
122
  export default {
163
123
  name: 'SlideShowManager',
164
124
  extends: BaseContentSettings,
165
125
  components: {
166
- draggable,
167
126
  ContentBlockAsset,
127
+ SortableExpansionPanel,
168
128
  },
169
129
  beforeMount() {
170
130
  if (_.isEmpty(this.block)) {
@@ -180,7 +140,9 @@ export default {
180
140
  this.block.metadata.config = {}
181
141
  }
182
142
  if (_.isEmpty(this.block.metadata.config.title)) {
183
- this.block.metadata.config.title = ''
143
+ this.block.metadata.config.title = this.$t(
144
+ 'windward.games.components.settings.slideshow.form.slideshow_title'
145
+ )
184
146
  }
185
147
  if (_.isEmpty(this.block.metadata.config.instructions)) {
186
148
  this.block.metadata.config.instructions = ''