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.
- package/.editorconfig +8 -33
- package/.prettierrc +11 -0
- package/.vscode/extensions.json +8 -0
- package/.vscode/settings.json +16 -0
- package/CHANGELOG +20 -0
- package/eslint.config.js +60 -0
- package/package.json +9 -9
- package/src/$locales/en.json +3 -3
- package/src/$locales/fr.json +3 -3
- package/src/assets/data/onboardingMessages.json +47 -47
- package/src/components/AppBase.vue +5 -6
- package/src/components/AppBaseErrorDisplay.vue +438 -438
- package/src/components/AppBaseFlipCard.vue +84 -84
- package/src/components/AppBaseModule.vue +15 -17
- package/src/components/AppBasePage.vue +866 -783
- package/src/components/AppBasePopover.vue +41 -41
- package/src/components/AppBaseSkeleton.vue +24 -3
- package/src/components/AppCompAudio.vue +12 -2
- package/src/components/AppCompInputCheckBoxNx.vue +1 -2
- package/src/components/AppCompInputRadioNx.vue +8 -2
- package/src/components/AppCompInputTextToFillDropdownNx.vue +45 -0
- package/src/components/AppCompMenu.vue +424 -423
- package/src/components/AppCompNavigation.vue +2 -2
- package/src/components/AppCompPlayBarNext.vue +123 -94
- package/src/components/AppCompPopUpNext.vue +2 -2
- package/src/components/AppCompQuizNext.vue +12 -2
- package/src/components/AppCompQuizRecall.vue +10 -4
- package/src/components/AppCompSettingsMenu.vue +172 -172
- package/src/components/AppCompTableOfContent.vue +1 -4
- package/src/components/AppCompVideoPlayer.vue +7 -0
- package/src/components/AppCompViewDisplay.vue +6 -6
- package/src/composables/useTimer.js +17 -20
- package/src/externalComps/ModuleView.vue +22 -22
- package/src/externalComps/SummaryView.vue +91 -91
- package/src/module/stores/appStore.js +0 -1
- package/src/module/xapi/Crypto/Hasher.js +241 -241
- package/src/module/xapi/Crypto/WordArray.js +278 -278
- package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
- package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
- package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
- package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
- package/src/module/xapi/Crypto/encoders/Base.js +105 -105
- package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
- package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
- package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
- package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
- package/src/module/xapi/Crypto/index.js +53 -53
- package/src/module/xapi/Statement/activity.js +47 -47
- package/src/module/xapi/Statement/agent.js +55 -55
- package/src/module/xapi/Statement/group.js +26 -26
- package/src/module/xapi/Statement/index.js +259 -259
- package/src/module/xapi/Statement/statement.js +253 -253
- package/src/module/xapi/Statement/statementRef.js +23 -23
- package/src/module/xapi/Statement/substatement.js +22 -22
- package/src/module/xapi/Statement/verb.js +36 -36
- package/src/module/xapi/activitytypes.js +17 -17
- package/src/module/xapi/utils.js +167 -167
- package/src/module/xapi/verbs.js +294 -294
- package/src/module/xapi/xapiStatement.js +444 -444
- package/src/plugins/bus.js +8 -8
- package/src/plugins/helper.js +4 -0
- package/src/plugins/save.js +37 -37
- package/src/plugins/scorm.js +287 -287
- package/src/plugins/xapi.js +11 -11
- package/src/public/index.html +33 -33
- package/src/router/index.js +1 -1
- package/src/shared/validators.js +22 -6
- package/.eslintignore +0 -29
- package/.eslintrc.cjs +0 -81
- 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"
|
|
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:
|
|
18
|
-
skeletonText: { type: String, default:
|
|
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
|
|
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"
|
|
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"
|
|
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>
|