@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,37 +1,33 @@
1
1
  <template>
2
- <div
3
- v-bind:style="{
4
- color: textColor,
5
- }"
6
- >
7
- <v-row class="card-header" align="center" justify="center">
8
- <content-viewer v-model="settings.header" />
9
- </v-row>
2
+ <v-container>
10
3
  <br />
11
4
  <div class="card-content">
5
+ <v-row align="center" justify="center">
6
+ <content-viewer :class="textClass" v-model="settings.text" />
7
+ </v-row>
8
+ <br />
12
9
  <v-row
13
- :class="settings.img ? '' : ' text-justify '"
10
+ no-gutters
14
11
  align="center"
15
12
  justify="center"
13
+ v-if="settings.img !== ''"
16
14
  >
17
- <content-viewer :class="textClass" v-model="settings.text" />
18
- </v-row>
19
- <v-row align="center" justify="center" v-if="settings.img !== ''">
20
15
  <v-img
21
16
  contain
22
17
  :aspect-ratio="16 / 9"
23
18
  :src="settings.img"
24
19
  :alt="settings.altText"
25
- max-height="250"
20
+ max-height="210"
26
21
  max-width="600"
27
22
  />
28
23
  </v-row>
24
+ <br />
29
25
  </div>
30
-
31
- <v-row class="card-footer" align="center" justify="center">{{
32
- settings.footer
33
- }}</v-row>
34
- </div>
26
+ <v-row class="card-footer pt-4" align="center" justify="center">
27
+ {{ settings.footer }}&nbsp;
28
+ <v-icon color="primary">mdi-orbit-variant</v-icon>
29
+ </v-row>
30
+ </v-container>
35
31
  </template>
36
32
 
37
33
  <script>
@@ -42,16 +38,21 @@ export default {
42
38
  components: { ContentViewer },
43
39
  props: {
44
40
  settings: { type: Object },
45
- textColor: { type: String },
41
+ side: { type: String },
46
42
  },
47
43
  computed: {
48
44
  textClass() {
49
45
  if (
50
46
  !this.settings.img &&
51
47
  this.settings.text &&
52
- this.settings.text.length < 300
48
+ this.settings.text.length < 100 &&
49
+ this.side === 'front'
53
50
  ) {
54
- return 'centered'
51
+ return 'text-justify centered card-content--bold'
52
+ }
53
+
54
+ if (this.side === 'front') {
55
+ return 'text-center card-content--bold'
55
56
  }
56
57
  if (
57
58
  !this.settings.img &&
@@ -59,38 +60,35 @@ export default {
59
60
  (MathHelper.containsMathML(this.settings.text.length) ||
60
61
  MathHelper.containsLatex(this.settings.text.length))
61
62
  ) {
62
- return 'centered'
63
+ return 'text-justify centered'
63
64
  }
64
65
 
65
- if (
66
- !this.settings.img &&
67
- this.settings.text &&
68
- this.settings.text.length > 100 &&
69
- !(
70
- MathHelper.containsMathML(this.settings.text.length) ||
71
- MathHelper.containsLatex(this.settings.text.length)
72
- )
73
- ) {
74
- return 'paragraph'
75
- }
76
66
 
77
- return ''
67
+ return 'px-6 text-justify'
78
68
  },
79
69
  },
80
70
  methods: {},
81
71
  }
82
72
  </script>
83
73
 
84
- <style scoped>
74
+ <style lang="scss" scoped>
85
75
  .card-header {
86
- font-weight: bold;
87
76
  }
88
77
  .card-content {
78
+ color: var(--v-primary-base);
79
+ font-size: 1rem;
80
+ }
81
+ .card-content--bold {
89
82
  font-weight: bold;
90
- margin: 5px;
83
+ font-size: 1.5rem;
84
+ }
85
+
86
+ p.card-content {
87
+ font-size: 1.5rem !important;
91
88
  }
92
89
  .card-footer {
93
90
  font-weight: bold;
91
+ color: var(--v-primary-base);
94
92
  }
95
93
  .centered {
96
94
  margin: 0;
@@ -102,11 +100,12 @@ export default {
102
100
  .card-footer {
103
101
  margin: 0;
104
102
  position: absolute;
105
- top: 95%;
103
+ top: 90%;
106
104
  left: 50%;
107
105
  transform: translate(-50%, -50%);
106
+ color: var(--v-primary-base);
108
107
  }
109
108
  .paragraph {
110
- margin: 2%;
109
+ margin: 5%;
111
110
  }
112
111
  </style>
@@ -1,33 +1,31 @@
1
1
  <template>
2
- <v-container>
3
- <v-card
4
- @click="toggleCard"
5
- v-show="value"
6
- :class="cardClass"
7
- max-height="900"
8
- min-height="460"
9
- >
10
- <card-face :settings="frontFace"></card-face>
2
+ <v-container style="height: 100%" class="div-container">
3
+ <v-card outlined @click="toggleCard" v-show="value" :class="cardClass">
4
+ <v-card-text>
5
+ <card-face :settings="frontFace" side="front"></card-face>
6
+ </v-card-text>
11
7
  </v-card>
12
- <v-card
13
- @click="toggleCard"
14
- v-show="!value"
15
- :class="cardClass"
16
- max-height="900"
17
- min-height="460"
18
- >
19
- <card-face :settings="backFace"></card-face>
8
+ <v-card outlined @click="toggleCard" v-show="!value" :class="cardClass">
9
+ <v-card-title class="card-title">
10
+ <v-row align="center" justify="center">{{
11
+ backFace.header
12
+ }}</v-row>
13
+ </v-card-title>
14
+ <v-card-text>
15
+ <cardFace :settings="backFace" side="back"></cardFace>
16
+ </v-card-text>
20
17
  </v-card>
21
18
  </v-container>
22
19
  </template>
23
20
  <script>
24
21
  import CardFace from './CardFace'
22
+ import _ from 'lodash'
25
23
  export default {
26
24
  components: { CardFace },
27
25
  data() {
28
26
  return {
29
27
  settings: {},
30
- cardClass: 'animated flashcard',
28
+ flip: false,
31
29
  }
32
30
  },
33
31
  props: {
@@ -37,6 +35,22 @@ export default {
37
35
  },
38
36
 
39
37
  computed: {
38
+ cardClass() {
39
+ let result = 'animated flashcard'
40
+ if (this.flip) {
41
+ result = result + ' flipInY'
42
+ }
43
+
44
+ if (this.frontFace.img === '' && this.backFace.img === '') {
45
+ result = result + ' flashcard--size-md'
46
+ }
47
+
48
+ if (this.frontFace.img !== '' || this.backFace.img !== '') {
49
+ result = result + ' flashcard--size-lg'
50
+ }
51
+
52
+ return result
53
+ },
40
54
  frontFace() {
41
55
  return {
42
56
  img:
@@ -49,7 +63,7 @@ export default {
49
63
  text: this.options.front.text,
50
64
  header: this.options.front.header,
51
65
  footer: this.$t(
52
- 'plugin.games.components.content.blocks.flashcard.click_to_show_back'
66
+ 'windward.games.components.content.blocks.flashcard.flip_card'
53
67
  ),
54
68
  }
55
69
  },
@@ -65,7 +79,7 @@ export default {
65
79
  text: this.options.back.text,
66
80
  header: this.options.back.header,
67
81
  footer: this.$t(
68
- 'plugin.games.components.content.blocks.flashcard.click_to_show_front'
82
+ 'windward.games.components.content.blocks.flashcard.flip_card'
69
83
  ),
70
84
  }
71
85
  },
@@ -73,29 +87,96 @@ export default {
73
87
  methods: {
74
88
  toggleCard() {
75
89
  //only flip card when user click
76
- this.cardClass = 'animated flipInY flashcard'
90
+ this.flip = true
91
+ //this.cardClass = 'animated flipInY flashcard flashcard--size-md'
77
92
  this.$emit('input', !this.value)
78
93
  },
79
94
  },
80
95
  }
81
96
  </script>
82
- <style scoped>
97
+ <style lang="scss" scoped>
83
98
  .center {
84
99
  text-align: center;
85
100
  }
86
101
 
102
+ .card-title {
103
+ background-color: var(--v-primary-base);
104
+ color: var(--v-background-base);
105
+ }
87
106
  .flashcard {
88
107
  cursor: pointer;
89
- border-radius: 10px;
90
- max-height: 100vh;
91
- margin: 0.5em;
92
- padding: 25px;
93
- box-shadow: 0 0px 10px rgba(0, 0, 0, 0.4);
108
+ border: 1px solid;
109
+ border-radius: 8px;
110
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
94
111
  text-align: center;
95
112
  }
113
+ .div-container {
114
+ container-type: inline-size;
115
+ }
116
+ @container (width >1168px) {
117
+ .flashcard--size-md {
118
+ min-height: 60%;
119
+ width: 90%;
120
+ top: 20%;
121
+ left: 5%;
122
+ }
123
+
124
+ .flashcard--size-lg {
125
+ min-height: 90%;
126
+ width: 90%;
127
+ top: 5%;
128
+ left: 5%;
129
+ }
130
+ }
131
+ @container (width < 1168px) {
132
+ .flashcard--size-md {
133
+ min-height: 60%;
134
+ width: 88%;
135
+ top: 20%;
136
+ left: 6%;
137
+ }
138
+
139
+ .flashcard--size-lg {
140
+ min-height: 90%;
141
+ width: 88%;
142
+ top: 5%;
143
+ left: 6%;
144
+ }
145
+ }
146
+ @container (width < 850px) {
147
+ .flashcard--size-md {
148
+ min-height: 60%;
149
+ width: 84%;
150
+ top: 20%;
151
+ left: 8%;
152
+ }
153
+
154
+ .flashcard--size-lg {
155
+ min-height: 90%;
156
+ width: 84%;
157
+ top: 5%;
158
+ left: 8%;
159
+ }
160
+ }
161
+ @container (width < 650px) {
162
+ .flashcard--size-md {
163
+ min-height: 90%;
164
+ width: 76%;
165
+ top: 5%;
166
+ left: 12%;
167
+ }
168
+
169
+ .flashcard--size-lg {
170
+ min-height: 90%;
171
+ width: 76%;
172
+ top: 5%;
173
+ left: 12%;
174
+ }
175
+ }
96
176
 
97
177
  .flashcard:hover {
98
- box-shadow: 0 0px 25px rgba(0, 0, 0, 0.8);
178
+ box-shadow: 0 0px 12px rgba(0, 0, 0, 0.8);
179
+ background-color: var(--v-background-darken1);
99
180
  }
100
181
 
101
182
  .animated {
@@ -10,7 +10,6 @@
10
10
  <br />
11
11
  <v-carousel
12
12
  v-model="block.metadata.config.currentSlide"
13
- show-arrows-on-hover
14
13
  hide-delimiters
15
14
  >
16
15
  <template #prev="{ on, attrs }">
@@ -87,7 +86,9 @@ export default {
87
86
  if (_.isEmpty(this.block.metadata.config)) {
88
87
  this.block.metadata.config = {}
89
88
  this.block.metadata.config.currentSlide = 0
90
- this.block.metadata.config.title = ''
89
+ this.block.metadata.config.title = this.$t(
90
+ 'windward.games.components.content.blocks.flashcard.title'
91
+ )
91
92
  this.block.metadata.config.instructions = ''
92
93
  }
93
94