fcad-core-dragon 2.1.0-beta.4 → 2.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 (70) hide show
  1. package/.editorconfig +8 -33
  2. package/.prettierrc +11 -0
  3. package/.vscode/extensions.json +8 -0
  4. package/.vscode/settings.json +16 -0
  5. package/CHANGELOG +20 -0
  6. package/eslint.config.js +60 -0
  7. package/package.json +9 -9
  8. package/src/$locales/en.json +3 -3
  9. package/src/$locales/fr.json +3 -3
  10. package/src/assets/data/onboardingMessages.json +47 -47
  11. package/src/components/AppBase.vue +5 -6
  12. package/src/components/AppBaseErrorDisplay.vue +438 -438
  13. package/src/components/AppBaseFlipCard.vue +84 -84
  14. package/src/components/AppBaseModule.vue +15 -17
  15. package/src/components/AppBasePage.vue +866 -783
  16. package/src/components/AppBasePopover.vue +41 -41
  17. package/src/components/AppBaseSkeleton.vue +24 -3
  18. package/src/components/AppCompAudio.vue +12 -2
  19. package/src/components/AppCompInputCheckBoxNx.vue +1 -2
  20. package/src/components/AppCompInputRadioNx.vue +8 -2
  21. package/src/components/AppCompInputTextToFillDropdownNx.vue +45 -0
  22. package/src/components/AppCompMenu.vue +424 -423
  23. package/src/components/AppCompNavigation.vue +2 -2
  24. package/src/components/AppCompPlayBarNext.vue +123 -94
  25. package/src/components/AppCompPopUpNext.vue +2 -2
  26. package/src/components/AppCompQuizNext.vue +12 -2
  27. package/src/components/AppCompQuizRecall.vue +10 -4
  28. package/src/components/AppCompSettingsMenu.vue +172 -172
  29. package/src/components/AppCompTableOfContent.vue +1 -4
  30. package/src/components/AppCompVideoPlayer.vue +7 -0
  31. package/src/components/AppCompViewDisplay.vue +6 -6
  32. package/src/composables/useTimer.js +17 -20
  33. package/src/externalComps/ModuleView.vue +22 -22
  34. package/src/externalComps/SummaryView.vue +91 -91
  35. package/src/module/stores/appStore.js +0 -1
  36. package/src/module/xapi/Crypto/Hasher.js +241 -241
  37. package/src/module/xapi/Crypto/WordArray.js +278 -278
  38. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  39. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  40. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  41. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  42. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  43. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  44. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  45. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  46. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  47. package/src/module/xapi/Crypto/index.js +53 -53
  48. package/src/module/xapi/Statement/activity.js +47 -47
  49. package/src/module/xapi/Statement/agent.js +55 -55
  50. package/src/module/xapi/Statement/group.js +26 -26
  51. package/src/module/xapi/Statement/index.js +259 -259
  52. package/src/module/xapi/Statement/statement.js +253 -253
  53. package/src/module/xapi/Statement/statementRef.js +23 -23
  54. package/src/module/xapi/Statement/substatement.js +22 -22
  55. package/src/module/xapi/Statement/verb.js +36 -36
  56. package/src/module/xapi/activitytypes.js +17 -17
  57. package/src/module/xapi/utils.js +167 -167
  58. package/src/module/xapi/verbs.js +294 -294
  59. package/src/module/xapi/xapiStatement.js +444 -444
  60. package/src/plugins/bus.js +8 -8
  61. package/src/plugins/helper.js +4 -0
  62. package/src/plugins/save.js +37 -37
  63. package/src/plugins/scorm.js +287 -287
  64. package/src/plugins/xapi.js +11 -11
  65. package/src/public/index.html +33 -33
  66. package/src/router/index.js +1 -1
  67. package/src/shared/validators.js +22 -6
  68. package/.eslintignore +0 -29
  69. package/.eslintrc.cjs +0 -81
  70. package/bk.scss +0 -117
@@ -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>
@@ -6,7 +6,27 @@
6
6
  <template>
7
7
  <div class="skeleton-wrapper">
8
8
  <div v-if="skeletonText" class="skeleton-text">{{ skeletonText }}</div>
9
- <div v-for="line in skeletonLines" :key="line" class="skeleton-line"></div>
9
+ <div v-for="line in skeletonLines" :key="line" class="skeleton-line" />
10
+
11
+ <div v-show="skeletonType == `quiz-choix`">
12
+ <v-skeleton-loader
13
+ type="heading, avatar,paragraph,
14
+ "
15
+ ></v-skeleton-loader>
16
+ <v-skeleton-loader type="avatar,paragraph"></v-skeleton-loader>
17
+ <v-skeleton-loader type="avatar,paragraph"></v-skeleton-loader>
18
+ </div>
19
+
20
+ <div v-show="skeletonType == `quiz-texte`">
21
+ <v-skeleton-loader
22
+ type="heading, image,
23
+ "
24
+ ></v-skeleton-loader>
25
+ </div>
26
+
27
+ <div v-show="skeletonType == `quiz-recall`">
28
+ <v-skeleton-loader type="heading, paragraph,image"></v-skeleton-loader>
29
+ </div>
10
30
  </div>
11
31
  </template>
12
32
 
@@ -14,8 +34,9 @@
14
34
  export default {
15
35
  name: 'AppBaseSkeleton',
16
36
  props: {
17
- skeletonLines: { type: Number, default: 1 }, //number of skeleton lines to display
18
- skeletonText: { type: String, default: `⏳ LOADING...` } //number of skeleton lines to display
37
+ skeletonLines: { type: Number, default: 0 }, //number of skeleton lines to display
38
+ skeletonText: { type: String, default: `` }, //number of skeleton lines to display
39
+ skeletonType: { type: String, default: `line` }
19
40
  }
20
41
  }
21
42
  </script>
@@ -27,7 +27,12 @@
27
27
  </div>
28
28
  <!--Audio content-->
29
29
  <div v-show="!isLoading && !hasSourceLoadingError" class="audio-content">
30
- <img v-if="mPoster" class="audio-img" :src="mPoster" :alt="mAlt" />
30
+ <img
31
+ v-if="mPoster"
32
+ class="audio-img"
33
+ :src="mPoster"
34
+ aria-hidden="true"
35
+ />
31
36
  <div class="audio-media">
32
37
  <span>{{ mTitle }}</span>
33
38
  <div class="audio-media-player">
@@ -88,7 +93,6 @@ export default {
88
93
  mSources: this.audData.mSources,
89
94
  mTranscript: this.audData.mTranscript,
90
95
  mPoster: this.audData.mPoster,
91
- mAlt: this.audData.mAlt ? this.audData.mAlt : ' ',
92
96
  isSet: false,
93
97
  hasSourceLoadingError: false,
94
98
  hasErr: validateAudioData(this.audData)
@@ -243,4 +247,10 @@ export default {
243
247
  top: 0;
244
248
  }
245
249
  }
250
+
251
+ .debug {
252
+ &:focus {
253
+ border: 5px solid rgba(#fff, 0.05);
254
+ }
255
+ }
246
256
  </style>
@@ -11,7 +11,7 @@
11
11
  v-for="(choixReponse, index) in inputData"
12
12
  :Key="`div_chx_${id}_${choixReponse.id}`"
13
13
  >
14
- <div class="box-checkbox" role="group">
14
+ <div class="box-checkbox">
15
15
  <label
16
16
  :key="`lbl_chx_${id}-${choixReponse.id}`"
17
17
  :for="`boxchx_${id}_${choixReponse.id}`"
@@ -36,7 +36,6 @@
36
36
  <span
37
37
  :id="`span_${id}_${choixReponse.id}`"
38
38
  class="checkbox-contenu"
39
- aria-hidden="true"
40
39
  v-html="choixReponse.value"
41
40
  ></span>
42
41
  <span
@@ -13,7 +13,7 @@
13
13
  v-for="(choixReponse, index) in quizInputDataValue"
14
14
  :Key="`div_chx_${id}-${choixReponse.id}`"
15
15
  >
16
- <div class="box-radio" role="group">
16
+ <div class="box-radio">
17
17
  <label
18
18
  :key="`lbl_chx_${id}_${choixReponse.id}`"
19
19
  :for="`chx_${id}_${choixReponse.id}`"
@@ -37,7 +37,6 @@
37
37
 
38
38
  <span
39
39
  :id="`span_${id}_${choixReponse.id}`"
40
- aria-hidden="true"
41
40
  class="radio-contenu"
42
41
  v-html="choixReponse.value"
43
42
  />
@@ -275,4 +274,11 @@ export default {
275
274
  fieldset {
276
275
  border: inherit;
277
276
  }
277
+
278
+ .radio-label {
279
+ //position: relative;
280
+ span {
281
+ width: 90%;
282
+ }
283
+ }
278
284
  </style>
@@ -292,4 +292,49 @@ select {
292
292
  fieldset {
293
293
  border: inherit;
294
294
  }
295
+
296
+ div.texteatrou {
297
+ display: inline !important;
298
+
299
+
300
+ .cnt-input {
301
+ display: inline;
302
+ .v-input {
303
+ display: inline-block !important;
304
+
305
+
306
+
307
+ :deep(.v-input__control),
308
+ :deep(.v-field) {
309
+ width: 240px !important;
310
+ grid-area: inherit !important;
311
+
312
+ .v-field__field {
313
+ height: 25px !important;
314
+ padding: 0 !important;
315
+ min-height: inherit !important;
316
+
317
+ div.v-field__input {
318
+ padding-top: 0 !important;
319
+ padding-bottom: 0 !important;
320
+ min-height: inherit !important;
321
+
322
+ .v-select__selection {
323
+ min-height: inherit !important;
324
+ }
325
+ }
326
+ }
327
+
328
+ .v-field__append-inner {
329
+ margin-right: 6px;
330
+ }
331
+ }
332
+
333
+ .v-input__details {
334
+ display: none;
335
+ }
336
+ }
337
+ }
338
+ }
339
+
295
340
  </style>