@windward/games 0.0.1

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 (68) hide show
  1. package/.editorconfig +13 -0
  2. package/.eslintrc.js +11 -0
  3. package/.prettierrc +4 -0
  4. package/README.md +43 -0
  5. package/babel.config.js +1 -0
  6. package/components/content/CrudTable.vue +295 -0
  7. package/components/content/DataTableRowHandler.vue +113 -0
  8. package/components/content/DatableEditor.vue +223 -0
  9. package/components/content/blocks/BaseContentBlock.vue +8 -0
  10. package/components/content/blocks/dragDrop/BucketGame.vue +520 -0
  11. package/components/content/blocks/dragDrop/SortingGame.vue +303 -0
  12. package/components/content/blocks/flashcards/CardFace.vue +112 -0
  13. package/components/content/blocks/flashcards/Flashcard.vue +150 -0
  14. package/components/content/blocks/flashcards/FlashcardSlides.vue +121 -0
  15. package/components/content/blocks/matchingGame/MatchingGame.vue +545 -0
  16. package/components/content/blocks/quizshowGame/AnswerPanel.vue +338 -0
  17. package/components/content/blocks/quizshowGame/Gridview.vue +260 -0
  18. package/components/content/blocks/quizshowGame/QuizShow.vue +516 -0
  19. package/components/content/blocks/quizshowGame/feedbackIcons.vue +41 -0
  20. package/components/content/blocks/slideshow/SlideShow.vue +175 -0
  21. package/components/settings/BucketGameSettingsManager.vue +683 -0
  22. package/components/settings/FlashCardSlidesManager.vue +489 -0
  23. package/components/settings/MatchingGameManager.vue +775 -0
  24. package/components/settings/QuizShowSettingsManager.vue +408 -0
  25. package/components/settings/SlideShowManager.vue +248 -0
  26. package/components/settings/SortingGameSettingsManager.vue +286 -0
  27. package/i18n/en-US/components/content/blocks/bucket_game.ts +39 -0
  28. package/i18n/en-US/components/content/blocks/flashcard.ts +5 -0
  29. package/i18n/en-US/components/content/blocks/index.ts +15 -0
  30. package/i18n/en-US/components/content/blocks/matching_game.ts +26 -0
  31. package/i18n/en-US/components/content/blocks/quizshow_game.ts +35 -0
  32. package/i18n/en-US/components/content/blocks/slideshow.ts +13 -0
  33. package/i18n/en-US/components/content/blocks/sorting_game.ts +5 -0
  34. package/i18n/en-US/components/content/crud_table.ts +6 -0
  35. package/i18n/en-US/components/content/index.ts +7 -0
  36. package/i18n/en-US/components/index.ts +9 -0
  37. package/i18n/en-US/components/navigation/index.ts +5 -0
  38. package/i18n/en-US/components/settings/bucket_game.ts +35 -0
  39. package/i18n/en-US/components/settings/flashcard.ts +26 -0
  40. package/i18n/en-US/components/settings/index.ts +13 -0
  41. package/i18n/en-US/components/settings/matching_game.ts +15 -0
  42. package/i18n/en-US/components/settings/quizshow_game.ts +14 -0
  43. package/i18n/en-US/components/settings/slideshow.ts +11 -0
  44. package/i18n/en-US/index.ts +15 -0
  45. package/i18n/en-US/modules/index.ts +5 -0
  46. package/i18n/en-US/pages/index.ts +5 -0
  47. package/i18n/en-US/shared/content_blocks.ts +14 -0
  48. package/i18n/en-US/shared/index.ts +7 -0
  49. package/i18n/en-US/shared/settings.ts +10 -0
  50. package/i18n/en-US.ts +5 -0
  51. package/jest.config.js +18 -0
  52. package/package.json +51 -0
  53. package/plugin.js +150 -0
  54. package/test/blocks/dragDrop/BucketGame.spec.js +26 -0
  55. package/test/blocks/dragDrop/SortingGame.spec.js +47 -0
  56. package/test/blocks/flashcards/CardFace.spec.js +21 -0
  57. package/test/blocks/flashcards/FlashCardSlides.spec.js +24 -0
  58. package/test/blocks/flashcards/Flashcard.spec.js +24 -0
  59. package/test/blocks/matchingGame/MatchingGame.spec.js +26 -0
  60. package/test/blocks/quizShow/quizShow.spec.js +31 -0
  61. package/test/blocks/slideshow/slideshow.spec.js +24 -0
  62. package/test/mocks.js +2 -0
  63. package/test/settings/BucketGameManager.spec.js +125 -0
  64. package/test/settings/FlashCardSlidesManager.spec.js +24 -0
  65. package/test/settings/MatchingGameManager.spec.js +30 -0
  66. package/test/settings/SlideShowManager.spec.js +30 -0
  67. package/test/settings/SortingGameManager.spec.js +71 -0
  68. package/tsconfig.json +20 -0
@@ -0,0 +1,775 @@
1
+ <template>
2
+ <div>
3
+ <br />
4
+ <v-form ref="form" v-model="valid" v-if="!loading">
5
+ <v-text-field
6
+ v-model="block.metadata.config.title"
7
+ :counter="50"
8
+ :label="
9
+ $t(
10
+ 'plugin.games.components.settings.matching_game.form.title'
11
+ )
12
+ "
13
+ ref="title"
14
+ ></v-text-field>
15
+ <br />
16
+ <v-textarea
17
+ outlined
18
+ auto-grow
19
+ v-model="block.metadata.config.instructions"
20
+ :counter="255"
21
+ :label="
22
+ $t(
23
+ 'plugin.games.components.settings.matching_game.form.instructions'
24
+ )
25
+ "
26
+ ></v-textarea>
27
+ <div>
28
+ <v-container class="background pa-0">
29
+ <v-expansion-panels v-model="expansionPanel" flat>
30
+ <v-expansion-panel>
31
+ <v-expansion-panel-header class="pa-0">
32
+ <h3>
33
+ {{
34
+ $t(
35
+ 'plugin.games.components.content.blocks.matching_game.terms'
36
+ )
37
+ }}
38
+ </h3>
39
+ </v-expansion-panel-header>
40
+ <v-expansion-panel-content>
41
+ <draggable
42
+ v-model="
43
+ block.metadata.config.answerObjects
44
+ "
45
+ class="d-flex flex-column mb-6"
46
+ group="cards"
47
+ @change="onDragged"
48
+ >
49
+ <v-container
50
+ v-for="(item, index) in block.metadata
51
+ .config.answerObjects"
52
+ :key="'bucket_' + index"
53
+ fluid
54
+ grid-list
55
+ class="cardOutline"
56
+ elevation="0"
57
+ outlined
58
+ tile
59
+ >
60
+ <v-layout row wrap outlined>
61
+ <v-flex
62
+ xs10
63
+ :class="bottomBorder(index)"
64
+ >
65
+ <p
66
+ class="text-truncate pa-0 ma-0 pTagContainer"
67
+ @click="onOpenEditor(index)"
68
+ v-on:keyup.enter="
69
+ onOpenEditor(index)
70
+ "
71
+ @mouseover="onHover"
72
+ @mouseleave="onHoverLeave"
73
+ :class="cursor"
74
+ tabindex="0"
75
+ >
76
+ <v-icon class="pl-2"
77
+ >mdi-drag-vertical</v-icon
78
+ >
79
+ <span class="ellipsisText">
80
+ {{
81
+ item.display
82
+ ? block.metadata
83
+ .config
84
+ .answerObjects[
85
+ index
86
+ ].display
87
+ : $t(
88
+ 'plugin.games.components.content.blocks.matching_game.click_here'
89
+ )
90
+ }}
91
+ </span>
92
+ </p>
93
+ </v-flex>
94
+ <v-flex
95
+ xs2
96
+ class="sideBorder d-flex justify-center"
97
+ :class="bottomBorder(index)"
98
+ >
99
+ <v-icon
100
+ @click="
101
+ onConfirmDeleteAnswer(
102
+ item
103
+ )
104
+ "
105
+ >mdi-delete-outline</v-icon
106
+ >
107
+ </v-flex>
108
+ <v-container v-if="item.expand">
109
+ <v-flex xs12 class="pt-4">
110
+ <p
111
+ color="primary"
112
+ class="labelChanges"
113
+ >
114
+ {{
115
+ $t(
116
+ 'plugin.games.components.content.blocks.matching_game.term'
117
+ )
118
+ }}
119
+ </p>
120
+ <v-text-field
121
+ v-if="item.expand"
122
+ outlined
123
+ :autofocus="true"
124
+ v-model="
125
+ block.metadata
126
+ .config
127
+ .answerObjects[
128
+ index
129
+ ].display
130
+ "
131
+ ></v-text-field>
132
+ </v-flex>
133
+ <v-flex xs12 class="pt-4">
134
+ <p
135
+ color="primary"
136
+ class="labelChanges"
137
+ >
138
+ {{
139
+ $t(
140
+ 'plugin.games.components.content.blocks.matching_game.prompts'
141
+ )
142
+ }}
143
+ </p>
144
+ </v-flex>
145
+ <template
146
+ v-for="(
147
+ prompt, indexPrompt
148
+ ) in block.metadata.config
149
+ .prompts"
150
+ >
151
+ <v-container
152
+ :key="indexPrompt"
153
+ class="pa-0 d-flex flex-wrap align-center cardOutline"
154
+ v-if="
155
+ onPromptAnswer(
156
+ prompt,
157
+ item
158
+ )
159
+ "
160
+ >
161
+ <v-flex
162
+ xs10
163
+ :class="
164
+ bottomBorder(
165
+ indexPrompt,
166
+ true
167
+ )
168
+ "
169
+ class="rightSideBorder"
170
+ >
171
+ <p
172
+ class="text-truncate pa-0 ma-0 pTagContainer"
173
+ @click="
174
+ onOpenEditor(
175
+ indexPrompt,
176
+ true
177
+ )
178
+ "
179
+ v-on:keyup.enter="
180
+ onOpenEditor(
181
+ indexPrompt,
182
+ true
183
+ )
184
+ "
185
+ @mouseover="
186
+ onHover
187
+ "
188
+ @mouseleave="
189
+ onHoverLeave
190
+ "
191
+ :class="cursor"
192
+ tabindex="0"
193
+ >
194
+ <v-icon
195
+ class="pl-2"
196
+ >mdi-drag-vertical</v-icon
197
+ >
198
+ <span
199
+ v-if="
200
+ !prompt.toggle
201
+ "
202
+ class="ellipsisText"
203
+ >
204
+ {{
205
+ prompt.prompt
206
+ ? block
207
+ .metadata
208
+ .config
209
+ .prompts[
210
+ indexPrompt
211
+ ]
212
+ .prompt
213
+ : $t(
214
+ 'plugin.games.components.content.blocks.matching_game.click_here'
215
+ )
216
+ }}
217
+ </span>
218
+ <span
219
+ v-if="
220
+ prompt.toggle
221
+ "
222
+ class="ellipsisText"
223
+ >{{
224
+ prompt.file !==
225
+ null
226
+ ? prompt
227
+ .file
228
+ .name
229
+ : $t(
230
+ 'plugin.games.components.content.blocks.matching_game.image'
231
+ )
232
+ }}</span
233
+ >
234
+ </p>
235
+ </v-flex>
236
+ <v-flex
237
+ xs2
238
+ class="d-flex justify-center setHeight"
239
+ :class="
240
+ bottomBorder(
241
+ indexPrompt,
242
+ true
243
+ )
244
+ "
245
+ >
246
+ <v-icon
247
+ @click="
248
+ onConfirmDelete(
249
+ prompt
250
+ )
251
+ "
252
+ >mdi-delete-outline</v-icon
253
+ >
254
+ </v-flex>
255
+
256
+ <v-flex
257
+ xs12
258
+ v-if="prompt.expand"
259
+ class="pa-4"
260
+ >
261
+ <v-row
262
+ class="ma-1 d-flex align-center justify-space-between"
263
+ >
264
+ <div
265
+ color="primary mb-0"
266
+ class="labelChanges d-flex align-center"
267
+ >
268
+ {{
269
+ $t(
270
+ 'plugin.games.components.content.blocks.matching_game.prompt'
271
+ )
272
+ }}
273
+ </div>
274
+ <div
275
+ class="justify-end"
276
+ >
277
+ <v-btn
278
+ outlined
279
+ class="pa-0 customButton"
280
+ @click="
281
+ prompt.toggle = false
282
+ "
283
+ ><v-icon
284
+ >mdi-alpha-t</v-icon
285
+ ></v-btn
286
+ >
287
+ <v-btn
288
+ outlined
289
+ class="pa-0 customButton"
290
+ @click="
291
+ prompt.toggle = true
292
+ "
293
+ ><v-icon
294
+ >mdi-image-area</v-icon
295
+ ></v-btn
296
+ >
297
+ </div>
298
+ </v-row>
299
+ <v-text-field
300
+ v-if="
301
+ prompt.expand &&
302
+ !prompt.toggle
303
+ "
304
+ outlined
305
+ :autofocus="
306
+ true
307
+ "
308
+ v-model="
309
+ block
310
+ .metadata
311
+ .config
312
+ .prompts[
313
+ indexPrompt
314
+ ].prompt
315
+ "
316
+ ></v-text-field>
317
+ <v-container
318
+ v-if="
319
+ prompt.expand &&
320
+ prompt.toggle
321
+ "
322
+ class="pa-0"
323
+ >
324
+ <v-text-field
325
+ class="pt-3 pb-3"
326
+ v-if="
327
+ prompt.toggle
328
+ "
329
+ v-model="
330
+ prompt.altText
331
+ "
332
+ :hide-details="
333
+ true
334
+ "
335
+ dense
336
+ outlined
337
+ :autofocus="
338
+ true
339
+ "
340
+ :label="
341
+ $t(
342
+ 'plugin.games.components.content.blocks.matching_game.alt_image'
343
+ )
344
+ "
345
+ ></v-text-field>
346
+ <v-text-field
347
+ class="pt-3 pb-3"
348
+ v-if="
349
+ prompt.toggle
350
+ "
351
+ v-model="
352
+ prompt.ariaDescribedBy
353
+ "
354
+ :hide-details="
355
+ true
356
+ "
357
+ dense
358
+ outlined
359
+ :label="
360
+ $t(
361
+ 'plugin.games.components.content.blocks.matching_game.aria_described'
362
+ )
363
+ "
364
+ ></v-text-field>
365
+ <ContentBlockAsset
366
+ v-if="
367
+ prompt.toggle
368
+ "
369
+ id="contentBlockAsset"
370
+ mimes="image/png,image/jpeg"
371
+ v-model="
372
+ prompt.file
373
+ "
374
+ ></ContentBlockAsset>
375
+ </v-container>
376
+ </v-flex>
377
+ </v-container>
378
+ </template>
379
+ <p
380
+ @mouseover="onHover"
381
+ @mouseleave="onHoverLeave"
382
+ @click="onAddPrompt(index)"
383
+ v-on:keyup.enter="
384
+ onAddPrompt(index)
385
+ "
386
+ class="fullWidth"
387
+ :class="cursor"
388
+ tabindex="0"
389
+ >
390
+ <v-icon
391
+ class="primary addIcon"
392
+ >mdi-plus</v-icon
393
+ >
394
+ {{
395
+ $t(
396
+ 'plugin.games.components.content.blocks.matching_game.add_prompt'
397
+ )
398
+ }}
399
+ </p>
400
+ </v-container>
401
+ </v-layout>
402
+ </v-container>
403
+ </draggable>
404
+ <br />
405
+ <p
406
+ @mouseover="onHover"
407
+ @mouseleave="onHoverLeave"
408
+ @click="onAddAnswer"
409
+ v-on:keyup.enter="onAddAnswer"
410
+ class="fullWidth"
411
+ :class="cursor"
412
+ tabindex="0"
413
+ >
414
+ <v-icon class="primary addIcon"
415
+ >mdi-plus</v-icon
416
+ >
417
+ {{
418
+ $t(
419
+ 'plugin.games.components.content.blocks.matching_game.add_answer'
420
+ )
421
+ }}
422
+ </p>
423
+ <br />
424
+ </v-expansion-panel-content>
425
+ </v-expansion-panel>
426
+ </v-expansion-panels>
427
+ </v-container>
428
+ </div>
429
+ <v-textarea
430
+ class="mt-2"
431
+ outlined
432
+ auto-grow
433
+ v-model="block.metadata.config.feedback_correct"
434
+ :counter="255"
435
+ :label="
436
+ $t(
437
+ 'plugin.games.components.settings.matching_game.form.feedback.correct'
438
+ )
439
+ "
440
+ ></v-textarea>
441
+ <v-textarea
442
+ outlined
443
+ auto-grow
444
+ v-model="block.metadata.config.feedback_incorrect"
445
+ :counter="255"
446
+ :label="
447
+ $t(
448
+ 'plugin.games.components.settings.matching_game.form.feedback.incorrect'
449
+ )
450
+ "
451
+ ></v-textarea>
452
+ </v-form>
453
+ <div v-if="loading" class="text-center">
454
+ <v-progress-circular
455
+ :size="70"
456
+ :width="7"
457
+ color="primary"
458
+ indeterminate
459
+ ></v-progress-circular>
460
+ </div>
461
+ </div>
462
+ </template>
463
+
464
+ <script>
465
+ import BaseContentSettings from '~/components/Content/Tool/BaseContentSettings.js'
466
+ import draggable from 'vuedraggable'
467
+ import _ from 'lodash'
468
+ export default {
469
+ name: 'MatchingGameManager',
470
+ extends: BaseContentSettings,
471
+ components: { draggable },
472
+ beforeMount() {
473
+ if (_.isEmpty(this.block)) {
474
+ this.block = {}
475
+ }
476
+ if (_.isEmpty(this.block.body)) {
477
+ this.block.body = 'Matching Game'
478
+ }
479
+ if (_.isEmpty(this.block.metadata)) {
480
+ this.block.metadata = {}
481
+ }
482
+ if (_.isEmpty(this.block.metadata.config)) {
483
+ this.block.metadata.config = {}
484
+ }
485
+ if (_.isEmpty(this.block.metadata.config.title)) {
486
+ this.block.metadata.config.title = ''
487
+ }
488
+ if (_.isEmpty(this.block.metadata.config.instructions)) {
489
+ this.block.metadata.config.instructions = ''
490
+ }
491
+ if (_.isEmpty(this.block.metadata.config.feedback_correct)) {
492
+ this.block.metadata.config.feedback_correct = ''
493
+ }
494
+ if (_.isEmpty(this.block.metadata.config.feedback_incorrect)) {
495
+ this.block.metadata.config.feedback_incorrect = ''
496
+ }
497
+ if (_.isEmpty(this.block.metadata.config.prompts)) {
498
+ this.block.metadata.config.prompts = []
499
+ }
500
+ if (_.isEmpty(this.block.metadata.config.answerObjects)) {
501
+ this.block.metadata.config.answerObjects = []
502
+ this.onAddAnswer
503
+ }
504
+ },
505
+ beforeDestroy() {
506
+ if (this.debouncer) {
507
+ clearTimeout(this.debouncer)
508
+ }
509
+ },
510
+ data() {
511
+ return {
512
+ valid: true,
513
+ loading: false,
514
+ default_item: {
515
+ id: 0,
516
+ display: '',
517
+ expand: true,
518
+ },
519
+ cursor: '',
520
+ openPanel: '',
521
+ expansionPanel: false,
522
+ }
523
+ },
524
+ watch: {
525
+ expansionPanel(val) {
526
+ if (val == undefined) {
527
+ this.closeAllExpandedAreas()
528
+ }
529
+ },
530
+ },
531
+ mounted() {
532
+ if (this.block.metadata.config.answerObjects.length === 0) {
533
+ this.onAddAnswer()
534
+ }
535
+ if (this.block.metadata.config.prompts.length === 0) {
536
+ this.onAddPrompt()
537
+ }
538
+ this.closeAllExpandedAreas()
539
+ },
540
+ methods: {
541
+ closeAllExpandedAreas() {
542
+ this.block.metadata.config.prompts.forEach((element) => {
543
+ element.expand = false
544
+ })
545
+ this.block.metadata.config.answerObjects.forEach((element) => {
546
+ element.expand = false
547
+ })
548
+ },
549
+ onPromptAnswer(prompt, answer) {
550
+ if (answer.id == prompt.answer.id) {
551
+ return true
552
+ } else {
553
+ return false
554
+ }
555
+ },
556
+ onAddPrompt(index = 0) {
557
+ this.block.metadata.config.prompts.forEach((element) => {
558
+ element.expand = false
559
+ })
560
+ let default_prompt = {
561
+ id: 0,
562
+ toggle: false,
563
+ prompt: '',
564
+ file: null,
565
+ altText: '',
566
+ ariaDescribedBy: '',
567
+ answer: this.block.metadata.config.answerObjects[index],
568
+ expand: true,
569
+ }
570
+ default_prompt.id = this.block.metadata.config.prompts.length + 1
571
+ this.block.metadata.config.prompts.push(default_prompt)
572
+ },
573
+ onAddAnswer() {
574
+ this.block.metadata.config.answerObjects.forEach((element) => {
575
+ element.expand = false
576
+ })
577
+ const addObj = _.cloneDeep(this.default_item)
578
+ addObj.id = this.block.metadata.config.answerObjects.length + 1
579
+ this.openPanel = this.block.metadata.config.answerObjects.length
580
+ this.block.metadata.config.answerObjects.push(addObj)
581
+ },
582
+ onConfirmDelete(item) {
583
+ this.$toast.info(this.$t('shared.forms.confirm_delete_text'), {
584
+ icon: 'mdi-help',
585
+ duration: null,
586
+ action: [
587
+ {
588
+ text: this.$t('shared.forms.cancel'),
589
+ onClick: (e, toastObject) => {
590
+ toastObject.goAway(0)
591
+ },
592
+ },
593
+ {
594
+ text: this.$t('shared.forms.confirm'),
595
+ // router navigation
596
+ onClick: (e, toastObject) => {
597
+ const deleteIndex =
598
+ this.block.metadata.config.prompts.indexOf(item)
599
+ this.block.metadata.config.prompts.splice(
600
+ deleteIndex,
601
+ 1
602
+ )
603
+ toastObject.goAway(0)
604
+ },
605
+ },
606
+ ],
607
+ })
608
+ },
609
+ onConfirmDeleteAnswer(item) {
610
+ this.$toast.info(this.$t('shared.forms.confirm_delete_subject'), {
611
+ icon: 'mdi-help',
612
+ duration: null,
613
+ action: [
614
+ {
615
+ text: this.$t('shared.forms.cancel'),
616
+ onClick: (e, toastObject) => {
617
+ toastObject.goAway(0)
618
+ },
619
+ },
620
+ {
621
+ text: this.$t('shared.forms.confirm'),
622
+ // router navigation
623
+ onClick: (e, toastObject) => {
624
+ const deleteIndex =
625
+ this.block.metadata.config.answerObjects.indexOf(
626
+ item
627
+ )
628
+ this.block.metadata.config.answerObjects.splice(
629
+ deleteIndex,
630
+ 1
631
+ )
632
+ this.block.metadata.config.prompts =
633
+ this.block.metadata.config.prompts.filter(
634
+ (element) => {
635
+ if (element.answer.id !== item.id) {
636
+ return element
637
+ }
638
+ }
639
+ )
640
+ let startId = 1
641
+ this.block.metadata.config.answerObjects.forEach(
642
+ (element) => {
643
+ element.id = startId
644
+ startId = startId + 1
645
+ }
646
+ )
647
+ toastObject.goAway(0)
648
+ },
649
+ },
650
+ ],
651
+ })
652
+ },
653
+ onHover(index) {
654
+ this.cursor = 'changePointer'
655
+ },
656
+ onHoverLeave() {
657
+ this.cursor = ''
658
+ },
659
+ onOpenEditor(index, prompt = null) {
660
+ if (prompt === null) {
661
+ this.block.metadata.config.answerObjects[index].expand =
662
+ !this.block.metadata.config.answerObjects[index].expand
663
+ this.block.metadata.config.answerObjects.forEach((element) => {
664
+ let getIndex =
665
+ this.block.metadata.config.answerObjects.indexOf(
666
+ element
667
+ )
668
+ if (index !== getIndex) {
669
+ element.expand = false
670
+ }
671
+ })
672
+ } else {
673
+ this.block.metadata.config.prompts[index].expand =
674
+ !this.block.metadata.config.prompts[index].expand
675
+ this.block.metadata.config.prompts.forEach((element) => {
676
+ let getIndex =
677
+ this.block.metadata.config.prompts.indexOf(element)
678
+ if (index !== getIndex) {
679
+ element.expand = false
680
+ }
681
+ })
682
+ }
683
+ },
684
+ onDragged() {
685
+ let counter = 1
686
+ this.block.metadata.config.answerObjects.forEach((element) => {
687
+ element.id = counter
688
+ counter = counter + 1
689
+ })
690
+ },
691
+ bottomBorder(index, prompt = null) {
692
+ if (prompt === null) {
693
+ if (
694
+ this.block.metadata.config.answerObjects[index].expand ===
695
+ true
696
+ ) {
697
+ return 'bottomBorder'
698
+ } else {
699
+ return null
700
+ }
701
+ } else {
702
+ if (this.block.metadata.config.prompts[index].expand === true) {
703
+ return 'bottomBorder'
704
+ } else {
705
+ return null
706
+ }
707
+ }
708
+ },
709
+ },
710
+ }
711
+ </script>
712
+
713
+ <style scoped>
714
+ .v-progress-circular {
715
+ margin: 1rem;
716
+ }
717
+ .fullWidth {
718
+ display: flex;
719
+ justify-content: center;
720
+ align-items: center;
721
+ font-weight: bold;
722
+ font-size: 16px;
723
+ }
724
+ #contentBlockAsset {
725
+ max-width: 251px;
726
+ }
727
+ .customButton {
728
+ min-width: 34px !important;
729
+ }
730
+ .changePointer {
731
+ cursor: pointer !important;
732
+ }
733
+ .addIcon {
734
+ margin-right: 5px;
735
+ }
736
+ .v-expansion-panel-content >>> .v-expansion-panel-content__wrap {
737
+ padding: 0 !important;
738
+ }
739
+ .pTagContainer {
740
+ height: 45px;
741
+ display: flex;
742
+ align-items: center;
743
+ }
744
+ .ellipsisText {
745
+ white-space: nowrap;
746
+ overflow: hidden;
747
+ text-overflow: ellipsis;
748
+ }
749
+ .itemHeight {
750
+ display: flex;
751
+ align-content: center;
752
+ justify-content: space-between;
753
+ }
754
+ .bottomBorder {
755
+ border-bottom: 2px solid var(--v-primary-base);
756
+ }
757
+ .setHeight {
758
+ height: 47px;
759
+ }
760
+ .cardOutline {
761
+ border: solid 2px var(--v-primary-base);
762
+ border-radius: 3px !important;
763
+ margin-bottom: 8px;
764
+ }
765
+ .sideBorder {
766
+ border-left: 2px solid var(--v-primary-base);
767
+ }
768
+ .rightSideBorder {
769
+ border-right: 2px solid var(--v-primary-base);
770
+ }
771
+ .labelChanges {
772
+ font-size: 16px;
773
+ font-weight: 500;
774
+ }
775
+ </style>