fcad-core-dragon 2.0.3 → 2.1.0-beta.2

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 (54) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/.eslintrc.cjs +81 -81
  4. package/CHANGELOG +27 -0
  5. package/bk.scss +117 -117
  6. package/package.json +1 -1
  7. package/src/assets/data/onboardingMessages.json +47 -47
  8. package/src/components/AppBaseErrorDisplay.vue +438 -438
  9. package/src/components/AppBaseFlipCard.vue +84 -84
  10. package/src/components/AppBasePopover.vue +41 -41
  11. package/src/components/AppCompInputCheckBoxNx.vue +1 -1
  12. package/src/components/AppCompInputDropdownNx.vue +4 -0
  13. package/src/components/AppCompInputRadioNx.vue +15 -1
  14. package/src/components/AppCompInputTextNx.vue +5 -0
  15. package/src/components/AppCompInputTextTableNx.vue +4 -0
  16. package/src/components/AppCompInputTextToFillDropdownNx.vue +4 -0
  17. package/src/components/AppCompInputTextToFillNx.vue +37 -1
  18. package/src/components/AppCompPlayBarProgress.vue +82 -82
  19. package/src/components/AppCompQuizNext.vue +1 -1
  20. package/src/components/AppCompSettingsMenu.vue +172 -172
  21. package/src/components/AppCompViewDisplay.vue +6 -6
  22. package/src/externalComps/ModuleView.vue +22 -22
  23. package/src/externalComps/SummaryView.vue +91 -91
  24. package/src/module/xapi/Crypto/Hasher.js +241 -241
  25. package/src/module/xapi/Crypto/WordArray.js +278 -278
  26. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  27. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  28. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  29. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  30. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  31. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  32. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  33. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  34. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  35. package/src/module/xapi/Crypto/index.js +53 -53
  36. package/src/module/xapi/Statement/activity.js +47 -47
  37. package/src/module/xapi/Statement/agent.js +55 -55
  38. package/src/module/xapi/Statement/group.js +26 -26
  39. package/src/module/xapi/Statement/index.js +259 -259
  40. package/src/module/xapi/Statement/statement.js +253 -253
  41. package/src/module/xapi/Statement/statementRef.js +23 -23
  42. package/src/module/xapi/Statement/substatement.js +22 -22
  43. package/src/module/xapi/Statement/verb.js +36 -36
  44. package/src/module/xapi/activitytypes.js +17 -17
  45. package/src/module/xapi/utils.js +167 -167
  46. package/src/module/xapi/verbs.js +294 -294
  47. package/src/module/xapi/xapiStatement.js +444 -444
  48. package/src/plugins/bus.js +8 -8
  49. package/src/plugins/gsap.js +14 -14
  50. package/src/plugins/i18n.js +44 -44
  51. package/src/plugins/save.js +37 -37
  52. package/src/plugins/scorm.js +287 -287
  53. package/src/plugins/xapi.js +11 -11
  54. package/src/public/index.html +33 -33
@@ -1,84 +1,84 @@
1
- <template>
2
- <!--
3
- inspire by : https://vuejsexamples.com/generic-flip-card-in-vue-that-allows-completely-arbitrary-content-on-each-side/
4
- -->
5
- <div class="flip-card" role="button" aria-pressed="false" @click="fnClick">
6
- <div class="inside-card" :class="{ flip: isFlipped }">
7
- <div class="front-card" name="front-card">
8
- <slot name="front-card" />
9
- </div>
10
- <div class="back-card">
11
- <slot name="back-card" />
12
- </div>
13
- </div>
14
- </div>
15
- </template>
16
- <script>
17
- export default {
18
- props: {
19
- isActive: {
20
- type: Boolean,
21
- default: false
22
- }
23
- },
24
- emits: ['click'],
25
- data() {
26
- return {
27
- isFlipped: false
28
- }
29
- },
30
- methods: {
31
- /**
32
- * @fires click to parent componant or page
33
- */
34
- fnClick() {
35
- this.$emit('click', this.$el)
36
- this.isFlipped = !this.isFlipped
37
- }
38
- }
39
- }
40
- </script>
41
- <style lang="scss">
42
- .flip-card {
43
- height: auto;
44
- cursor: pointer;
45
-
46
- /***** Parameretre modifiable *****/
47
- perspective: 100%;
48
- width: 90%;
49
-
50
- .inside-card {
51
- position: relative;
52
- width: 100%;
53
- height: 100%;
54
-
55
- /***** Parameretre modifiable *****/
56
- transform-style: preserve-3d;
57
- transition: transform 0.5s;
58
-
59
- &.flip {
60
- /***** Parameretre modifiable *****/
61
- transform: rotateY(180deg);
62
- }
63
-
64
- .front-card,
65
- .back-card {
66
- position: absolute;
67
- width: 100%;
68
- height: 100%;
69
- -webkit-backface-visibility: hidden;
70
- backface-visibility: hidden;
71
-
72
- .img-flip-card {
73
- width: 90%;
74
- height: auto;
75
- }
76
- }
77
-
78
- .back-card {
79
- /***** Parameretre modifiable *****/
80
- transform: rotateY(180deg);
81
- }
82
- }
83
- }
84
- </style>
1
+ <template>
2
+ <!--
3
+ inspire by : https://vuejsexamples.com/generic-flip-card-in-vue-that-allows-completely-arbitrary-content-on-each-side/
4
+ -->
5
+ <div class="flip-card" role="button" aria-pressed="false" @click="fnClick">
6
+ <div class="inside-card" :class="{ flip: isFlipped }">
7
+ <div class="front-card" name="front-card">
8
+ <slot name="front-card" />
9
+ </div>
10
+ <div class="back-card">
11
+ <slot name="back-card" />
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </template>
16
+ <script>
17
+ export default {
18
+ props: {
19
+ isActive: {
20
+ type: Boolean,
21
+ default: false
22
+ }
23
+ },
24
+ emits: ['click'],
25
+ data() {
26
+ return {
27
+ isFlipped: false
28
+ }
29
+ },
30
+ methods: {
31
+ /**
32
+ * @fires click to parent componant or page
33
+ */
34
+ fnClick() {
35
+ this.$emit('click', this.$el)
36
+ this.isFlipped = !this.isFlipped
37
+ }
38
+ }
39
+ }
40
+ </script>
41
+ <style lang="scss">
42
+ .flip-card {
43
+ height: auto;
44
+ cursor: pointer;
45
+
46
+ /***** Parameretre modifiable *****/
47
+ perspective: 100%;
48
+ width: 90%;
49
+
50
+ .inside-card {
51
+ position: relative;
52
+ width: 100%;
53
+ height: 100%;
54
+
55
+ /***** Parameretre modifiable *****/
56
+ transform-style: preserve-3d;
57
+ transition: transform 0.5s;
58
+
59
+ &.flip {
60
+ /***** Parameretre modifiable *****/
61
+ transform: rotateY(180deg);
62
+ }
63
+
64
+ .front-card,
65
+ .back-card {
66
+ position: absolute;
67
+ width: 100%;
68
+ height: 100%;
69
+ -webkit-backface-visibility: hidden;
70
+ backface-visibility: hidden;
71
+
72
+ .img-flip-card {
73
+ width: 90%;
74
+ height: auto;
75
+ }
76
+ }
77
+
78
+ .back-card {
79
+ /***** Parameretre modifiable *****/
80
+ transform: rotateY(180deg);
81
+ }
82
+ }
83
+ }
84
+ </style>
@@ -1,41 +1,41 @@
1
- <!--
2
- @ Description: This component is used to create a popover that is accessible via keyboard navigation (tab + space/enter)
3
- -->
4
- <template>
5
- <v-tooltip
6
- ref="tooltip"
7
- v-bind="$attrs"
8
- v-model="show"
9
- transition="false"
10
- :open-on-click="true"
11
- :persistent="false"
12
- >
13
- <slot></slot>
14
- </v-tooltip>
15
- </template>
16
-
17
- <script>
18
- export default {
19
- name: 'AppBasePopover',
20
- data() {
21
- return {
22
- show: false,
23
- alertContainer: null
24
- }
25
- },
26
- watch: {
27
- show: {
28
- handler(newValue) {
29
- if (newValue) {
30
- const content = this.$refs.tooltip.contentEl.textContent
31
- this.alertContainer.textContent = ''
32
- this.alertContainer.textContent = content
33
- }
34
- }
35
- }
36
- },
37
- mounted() {
38
- this.alertContainer = document.getElementById('hiddenAlertContainer')
39
- }
40
- }
41
- </script>
1
+ <!--
2
+ @ Description: This component is used to create a popover that is accessible via keyboard navigation (tab + space/enter)
3
+ -->
4
+ <template>
5
+ <v-tooltip
6
+ ref="tooltip"
7
+ v-bind="$attrs"
8
+ v-model="show"
9
+ transition="false"
10
+ :open-on-click="true"
11
+ :persistent="false"
12
+ >
13
+ <slot></slot>
14
+ </v-tooltip>
15
+ </template>
16
+
17
+ <script>
18
+ export default {
19
+ name: 'AppBasePopover',
20
+ data() {
21
+ return {
22
+ show: false,
23
+ alertContainer: null
24
+ }
25
+ },
26
+ watch: {
27
+ show: {
28
+ handler(newValue) {
29
+ if (newValue) {
30
+ const content = this.$refs.tooltip.contentEl.textContent
31
+ this.alertContainer.textContent = ''
32
+ this.alertContainer.textContent = content
33
+ }
34
+ }
35
+ }
36
+ },
37
+ mounted() {
38
+ this.alertContainer = document.getElementById('hiddenAlertContainer')
39
+ }
40
+ }
41
+ </script>
@@ -20,7 +20,7 @@
20
20
  {
21
21
  answerSlct: isSelected(choixReponse.value)
22
22
  },
23
- `${retro[index]}`
23
+ `${retro[index] || ''}`
24
24
  ]"
25
25
  >
26
26
  <input
@@ -252,6 +252,10 @@ export default {
252
252
  position: relative;
253
253
  }
254
254
 
255
+ fieldset {
256
+ border: inherit;
257
+ }
258
+
255
259
  div.texteatrou {
256
260
  display: inline !important;
257
261
  .cnt-input {
@@ -20,7 +20,7 @@
20
20
  class="radio-label"
21
21
  :class="[
22
22
  { answerSlct: selected == choixReponse.value },
23
- `${retro[index]}`
23
+ `${retro[index] || ''}`
24
24
  ]"
25
25
  >
26
26
  <input
@@ -262,3 +262,17 @@ export default {
262
262
  }
263
263
  }
264
264
  </script>
265
+ <style lang="scss">
266
+ .custom-control-input:focus ~ .custom-control-label::before {
267
+ border: inherit;
268
+ }
269
+
270
+ .custom-control-input:focus ~ .custom-control-label::before {
271
+ box-shadow: inherit;
272
+ -webkit-box-shadow: inherit;
273
+ }
274
+
275
+ fieldset {
276
+ border: inherit;
277
+ }
278
+ </style>
@@ -146,3 +146,8 @@ export default {
146
146
  }
147
147
  }
148
148
  </script>
149
+ <style lang="scss">
150
+ fieldset {
151
+ border: inherit;
152
+ }
153
+ </style>
@@ -195,4 +195,8 @@ export default {
195
195
  .cnt-input-text {
196
196
  position: relative;
197
197
  }
198
+
199
+ fieldset {
200
+ border: inherit;
201
+ }
198
202
  </style>
@@ -288,4 +288,8 @@ select {
288
288
  .cnt-input {
289
289
  position: relative;
290
290
  }
291
+
292
+ fieldset {
293
+ border: inherit;
294
+ }
291
295
  </style>
@@ -260,7 +260,7 @@ export default {
260
260
  }
261
261
  }
262
262
  </script>
263
- <style lang="scss" scoped>
263
+ <style lang="scss">
264
264
  .texteatrou {
265
265
  display: inline;
266
266
  position: relative;
@@ -274,4 +274,40 @@ export default {
274
274
  display: inline;
275
275
  width: auto;
276
276
  }
277
+
278
+ fieldset {
279
+ border: inherit;
280
+ }
281
+
282
+ .texteatrou {
283
+ position: relative;
284
+
285
+ .v-input {
286
+ width: 240px;
287
+ height: 29px;
288
+ position: relative;
289
+
290
+ .v-input__details {
291
+ display: none !important;
292
+ }
293
+
294
+ .v-input__control {
295
+ height: 29px;
296
+ width: 240px;
297
+
298
+ .v-field__field {
299
+ min-height: 29px;
300
+ height: 29px;
301
+
302
+ .v-field__input {
303
+ padding-top: 2px;
304
+ padding-bottom: 2px;
305
+ padding-right: 30px;
306
+ height: 29px;
307
+ min-height: 29px;
308
+ }
309
+ }
310
+ }
311
+ }
312
+ }
277
313
  </style>
@@ -1,82 +1,82 @@
1
- <!--@ Description: This component is used to display the playbar associate with the videoPlayer
2
- @ What it does: The component is used to interacted with the videoPlayer via buttons.
3
- v-media class is used to identified which html elements trigger the playBar to be appear (with focus/click)-->
4
- <template>
5
- <!--------------------------------- PLAY-BAR Progress -------------------------------------->
6
- <div ref="$playbar-timeline" class="pb-timeline">
7
- <div ref="$progress-area" class="progress-area">
8
- <div
9
- id="progress-bar"
10
- ref="$progress-bar"
11
- draggable="false"
12
- tabindex="0"
13
- class="v-media pb-progress-bar"
14
- role="slider"
15
- aria-valuemin="0"
16
- :aria-label="mediaA11Y.label"
17
- :aria-valuenow="mediaA11Y.valNow"
18
- :aria-valuemax="mediaA11Y.valMax"
19
- :aria-valuetext="mediaA11Y.valueText"
20
- @focus="changeFocusState('progressBar', true)"
21
- @blur="changeFocusState('progressBar', false)"
22
- >
23
- <!--Class progress-animation is apply when we are not using the thumb to change the progression-->
24
- <div
25
- id="progress-indicator"
26
- ref="$progress-indicator"
27
- draggable="false"
28
- class="progress-indicator"
29
- :class="{ 'progress-animation': !progressThumbDown }"
30
- :style="{ width: progressBarPercentage + '%' }"
31
- >
32
- <!--Mousedown validate if the thumb is cliqued (if yes, the mouse is follow to modify the progress)
33
- MouseOver/MouseOut deactivate click event on progressBar if the mouse hovered the thumb-->
34
- <!-- <div
35
- ref="$progress-thumb"
36
- draggable="false"
37
- class="progress-thumb"
38
- style="z-index: 9"
39
- @mousedown="
40
- savedIsPlaying = isPlaying
41
- progressThumbDown = true
42
- "
43
- @mouseover="progressThumbHover = true"
44
- @mouseleave="progressThumbHover = false"
45
- ></div> -->
46
-
47
- <div
48
- ref="$progress-thumb"
49
- draggable="false"
50
- class="progress-thumb"
51
- style="z-index: 9"
52
- @mouseover="progressThumbHover = true"
53
- @mouseleave="progressThumbHover = false"
54
- ></div>
55
- </div>
56
- </div>
57
- <div
58
- v-if="tooTipTimeCode"
59
- id="seek-tooltip"
60
- ref="$seek-tooltip"
61
- aria-hidden="true"
62
- class="seek-tooltip"
63
- >
64
- {{ tooTipTimeCode }}
65
- </div>
66
- </div>
67
- </div>
68
- </template>
69
-
70
- <script>
71
- import $extendsMedia from '../mixins/$mediaMixins'
72
-
73
- export default {
74
- mixins: [$extendsMedia],
75
- data() {
76
- return {
77
- tooTipTimeCode: null
78
- }
79
- },
80
- mounted() {}
81
- }
82
- </script>
1
+ <!--@ Description: This component is used to display the playbar associate with the videoPlayer
2
+ @ What it does: The component is used to interacted with the videoPlayer via buttons.
3
+ v-media class is used to identified which html elements trigger the playBar to be appear (with focus/click)-->
4
+ <template>
5
+ <!--------------------------------- PLAY-BAR Progress -------------------------------------->
6
+ <div ref="$playbar-timeline" class="pb-timeline">
7
+ <div ref="$progress-area" class="progress-area">
8
+ <div
9
+ id="progress-bar"
10
+ ref="$progress-bar"
11
+ draggable="false"
12
+ tabindex="0"
13
+ class="v-media pb-progress-bar"
14
+ role="slider"
15
+ aria-valuemin="0"
16
+ :aria-label="mediaA11Y.label"
17
+ :aria-valuenow="mediaA11Y.valNow"
18
+ :aria-valuemax="mediaA11Y.valMax"
19
+ :aria-valuetext="mediaA11Y.valueText"
20
+ @focus="changeFocusState('progressBar', true)"
21
+ @blur="changeFocusState('progressBar', false)"
22
+ >
23
+ <!--Class progress-animation is apply when we are not using the thumb to change the progression-->
24
+ <div
25
+ id="progress-indicator"
26
+ ref="$progress-indicator"
27
+ draggable="false"
28
+ class="progress-indicator"
29
+ :class="{ 'progress-animation': !progressThumbDown }"
30
+ :style="{ width: progressBarPercentage + '%' }"
31
+ >
32
+ <!--Mousedown validate if the thumb is cliqued (if yes, the mouse is follow to modify the progress)
33
+ MouseOver/MouseOut deactivate click event on progressBar if the mouse hovered the thumb-->
34
+ <!-- <div
35
+ ref="$progress-thumb"
36
+ draggable="false"
37
+ class="progress-thumb"
38
+ style="z-index: 9"
39
+ @mousedown="
40
+ savedIsPlaying = isPlaying
41
+ progressThumbDown = true
42
+ "
43
+ @mouseover="progressThumbHover = true"
44
+ @mouseleave="progressThumbHover = false"
45
+ ></div> -->
46
+
47
+ <div
48
+ ref="$progress-thumb"
49
+ draggable="false"
50
+ class="progress-thumb"
51
+ style="z-index: 9"
52
+ @mouseover="progressThumbHover = true"
53
+ @mouseleave="progressThumbHover = false"
54
+ ></div>
55
+ </div>
56
+ </div>
57
+ <div
58
+ v-if="tooTipTimeCode"
59
+ id="seek-tooltip"
60
+ ref="$seek-tooltip"
61
+ aria-hidden="true"
62
+ class="seek-tooltip"
63
+ >
64
+ {{ tooTipTimeCode }}
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </template>
69
+
70
+ <script>
71
+ import $extendsMedia from '../mixins/$mediaMixins'
72
+
73
+ export default {
74
+ mixins: [$extendsMedia],
75
+ data() {
76
+ return {
77
+ tooTipTimeCode: null
78
+ }
79
+ },
80
+ mounted() {}
81
+ }
82
+ </script>
@@ -58,7 +58,7 @@
58
58
  </div>
59
59
  </template>
60
60
  </v-col>
61
- <v-col cols="12" aria-live="polite">
61
+ <v-col cols="12" class="ctn-retro" aria-live="polite">
62
62
  <transition name="fade" mode="in-out">
63
63
  <div
64
64
  v-if="showRetro"