fcad-core-dragon 2.1.0-beta.4 → 2.1.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 (73) 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 +91 -8
  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 +423 -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/main.js +5 -5
  36. package/src/module/stores/appStore.js +0 -1
  37. package/src/module/xapi/Crypto/Hasher.js +241 -241
  38. package/src/module/xapi/Crypto/WordArray.js +278 -278
  39. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  40. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  41. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  42. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  43. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  44. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  45. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  46. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  47. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  48. package/src/module/xapi/Crypto/index.js +53 -53
  49. package/src/module/xapi/Statement/activity.js +47 -47
  50. package/src/module/xapi/Statement/agent.js +55 -55
  51. package/src/module/xapi/Statement/group.js +26 -26
  52. package/src/module/xapi/Statement/index.js +259 -259
  53. package/src/module/xapi/Statement/statement.js +253 -253
  54. package/src/module/xapi/Statement/statementRef.js +23 -23
  55. package/src/module/xapi/Statement/substatement.js +22 -22
  56. package/src/module/xapi/Statement/verb.js +36 -36
  57. package/src/module/xapi/activitytypes.js +17 -17
  58. package/src/module/xapi/utils.js +167 -167
  59. package/src/module/xapi/verbs.js +294 -294
  60. package/src/module/xapi/xapiStatement.js +444 -444
  61. package/src/plugins/analytics.js +4 -4
  62. package/src/plugins/bus.js +8 -8
  63. package/src/plugins/gsap.js +4 -2
  64. package/src/plugins/helper.js +8 -4
  65. package/src/plugins/save.js +37 -37
  66. package/src/plugins/scorm.js +287 -287
  67. package/src/plugins/xapi.js +11 -11
  68. package/src/public/index.html +33 -33
  69. package/src/router/index.js +1 -1
  70. package/src/shared/validators.js +22 -6
  71. package/.eslintignore +0 -29
  72. package/.eslintrc.cjs +0 -81
  73. package/bk.scss +0 -117
package/.editorconfig CHANGED
@@ -1,33 +1,8 @@
1
- # http://editorconfig.org
2
- root = true
3
-
4
- [*]
5
- indent_style = space
6
- indent_size = 2
7
- end_of_line = lf
8
- charset = utf-8
9
- trim_trailing_whitespace = true
10
- insert_final_newline = true
11
-
12
-
13
- # The JSON files contain newlines inconsistently
14
- [*.json]
15
- insert_final_newline = ignore
16
-
17
- # Minified JavaScript files shouldn't be changed
18
- [**.min.js]
19
- indent_style = ignore
20
- insert_final_newline = ignore
21
-
22
- # Makefiles always use tabs for indentation
23
- [Makefile]
24
- indent_style = tab
25
-
26
- # Batch files use tabs for indentation
27
- [*.bat]
28
- indent_style = tab
29
-
30
- [*.md]
31
- trim_trailing_whitespace = false
32
- insert_final_newline = false
33
-
1
+ [*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]
2
+ charset = utf-8
3
+ indent_size = 2
4
+ indent_style = space
5
+ insert_final_newline = true
6
+ trim_trailing_whitespace = true
7
+ end_of_line = lf
8
+ max_line_length = 80
package/.prettierrc ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://www.schemastore.org/prettierrc.json",
3
+ "singleQuote": true,
4
+ "semi": false,
5
+ "tabWidth": 2,
6
+ "trailingComma": "none",
7
+ "arrowParens": "always",
8
+ "htmlWhitespaceSensitivity": "ignore",
9
+ "endOfLine": "auto",
10
+ "printWidth": 80
11
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "recommendations": [
3
+ "Vue.volar",
4
+ "dbaeumer.vscode-eslint",
5
+ "EditorConfig.EditorConfig",
6
+ "esbenp.prettier-vscode"
7
+ ]
8
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "explorer.fileNesting.enabled": true,
3
+ "explorer.fileNesting.patterns": {
4
+ "tsconfig.json": "tsconfig.*.json, env.d.ts",
5
+ "vite.config.*": "jsconfig*, vitest.config.*, cypress.config.*, playwright.config.*",
6
+ "package.json": "package-lock.json, pnpm*, .yarnrc*, yarn*, .eslint*, eslint*, .oxlint*, oxlint*, .prettier*, prettier*, .editorconfig"
7
+ },
8
+ "editor.codeActionsOnSave": {
9
+ "source.fixAll": "explicit"
10
+ },
11
+ "editor.formatOnSave": true,
12
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
13
+ "[vue]": {
14
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
15
+ }
16
+ }
package/CHANGELOG CHANGED
@@ -1,5 +1,25 @@
1
+ 2.1.0(24 novembre 2025)
2
+ Correction de 2.1.0-beta.10 à 2.1.0-beta.1
3
+
4
+ 2.1.0-beta.10(20 novembre 2025)
5
+ Correction de l’affichage des listes déroulantes
6
+
7
+ Correction de la validation des object de quiz si le quiz n’est pas null il ne valide pas le contenu du pop-up neutre
8
+
9
+ Correction des titres dans les pop-ups de fin d’activité et de leçon (le titre est la maintenant)
10
+
11
+ 2.1.0-beta.5(22 octobre 2025)
12
+ Correction du problème de complétion avec les fenêtres latérales
13
+
14
+ Multiples corrections de l’accessibilité
15
+
16
+ Optimisation des dépendances (package.json)
17
+
18
+ Amélioration de quizrecall (récupération du data)
19
+
1
20
  2.1.0-beta.4(26 septembre 2025)
2
21
  ajout du plugin ScrollTrigger à l’objet $gsap
22
+
3
23
 
4
24
  2.1.0-beta.3(24 septembre 2025)
5
25
  RUPTURE DE COMPATIBILITÉ : Ajout de Google Analytics (analytics_id dans app.vue) nouvelle dépendance : npm install vue-gtag@2.0.1
@@ -0,0 +1,60 @@
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import pluginVue from 'eslint-plugin-vue'
4
+ import { defineConfig, globalIgnores } from 'eslint/config'
5
+ import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
6
+
7
+ export default defineConfig([
8
+ {
9
+ files: ['**/*.{js,mjs,cjs,vue}']
10
+ },
11
+ globalIgnores([
12
+ '**/.DS_Store',
13
+ '**/node_modules',
14
+ '**/dist/**',
15
+ '**/coverage/**',
16
+ '**/yalc.lock',
17
+ '**/package-lock.json',
18
+ '**/.zip',
19
+ '**/.env.local',
20
+ '**/.env.*.local',
21
+ '**/npm-debug.log*',
22
+ '**/.idea',
23
+ '**/.vscode',
24
+ '**/*.suo',
25
+ '**/*.ntvs*',
26
+ '**/*.njsproj',
27
+ '**/*.sln',
28
+ '**/*.sw?',
29
+ '**/\\_*',
30
+ '**/.gitignore'
31
+ ]),
32
+ {
33
+ languageOptions: {
34
+ globals: {
35
+ ...globals.node,
36
+ ...globals.browser
37
+ }
38
+ }
39
+ },
40
+ js.configs.recommended,
41
+ ...pluginVue.configs['flat/recommended'],
42
+ {
43
+ rules: {
44
+ 'no-unused-vars': [
45
+ 'warn',
46
+ { vars: 'local', args: 'none', ignoreRestSiblings: true }
47
+ ],
48
+ 'vue/no-unused-vars': 'warn',
49
+ 'no-prototype-builtins': 'off',
50
+ 'vue/html-self-closing': 'off',
51
+ 'vue/no-v-html': 'off',
52
+ 'vue/no-v-text-v-html-on-component': 'off',
53
+ 'vue/no-deprecated-delete-set': 'warn',
54
+ 'vue/max-attributes-per-line': 'off',
55
+ 'vue/singleline-html-element-content-newline': 'off',
56
+ 'vue/component-name-in-template-casing': ['error', 'kebab-case']
57
+ }
58
+ },
59
+ skipFormatting
60
+ ])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fcad-core-dragon",
3
- "version": "2.1.0-beta.4",
3
+ "version": "2.1.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./src/main.js",
@@ -10,14 +10,14 @@
10
10
  "docs:build": "vitepress build documentation",
11
11
  "docs:dev": "vitepress dev documentation",
12
12
  "docs:preview": "vitepress preview documentation",
13
- "format": "prettier --write src/",
14
- "lintfix": "eslint --ext .js,.vue --ignore-path .gitignore --fix src",
15
- "lintreport": "eslint src --ext .js,.vue --ignore-path .gitignore",
13
+ "lintfix": "eslint --fix src",
14
+ "lintreport": "eslint ./src",
16
15
  "preview": "vite preview",
17
16
  "reset": "rm -rf ./node_modules package-lock.json .cache dist && npm i && npm run watch",
18
17
  "test:unit": "vitest",
19
18
  "vue": "vue",
20
- "watch": "nodemon -e js,vue,html,json -x yalc publish --push"
19
+ "watch": "nodemon -e js,vue,html,json -x yalc publish --push",
20
+ "format": "prettier --write src/"
21
21
  },
22
22
  "config": {
23
23
  "projname": ""
@@ -37,20 +37,20 @@
37
37
  "vue-safe-teleport": "^0.1.2"
38
38
  },
39
39
  "devDependencies": {
40
+ "@eslint/js": "^9.38.0",
40
41
  "@vitejs/plugin-vue": "^6.0.1",
41
42
  "@vue/eslint-config-prettier": "^10.2.0",
42
43
  "@vue/test-utils": "^2.4.6",
43
- "eslint": "^9.31.0",
44
+ "eslint": "^9.38.0",
44
45
  "eslint-plugin-cypress": "^5.1.0",
45
46
  "eslint-plugin-vue": "~10.3.0",
47
+ "globals": "^16.4.0",
46
48
  "jsdom": "^25.0.1",
47
49
  "nodemon": "^3.1.0",
48
- "prettier": "3.6.2",
50
+ "prettier": "^3.6.2",
49
51
  "sass-embedded": "^1.91.0",
50
- "vite-plugin-vue-devtools": "^8.0.2",
51
52
  "vitepress": "^1.6.3",
52
53
  "vitest": "^3.2.4",
53
- "vue": "^3.5.18",
54
54
  "vue-router": "^4.4.5"
55
55
  },
56
56
  "engines": {
@@ -98,10 +98,10 @@
98
98
  "activity_title": "My activities",
99
99
  "activity_progress": "Progress status:",
100
100
  "carousel": "Carousel",
101
- "conclusion": "Conclusion",
101
+ "conclusion": "Conclusion to the Lesson",
102
102
  "complete": "Completed",
103
103
  "error": "error",
104
- "introduction": "Introduction",
104
+ "introduction": "Introduction to the Lesson",
105
105
  "lesson": "Lesson",
106
106
  "quiz": "Words to complete the sentence",
107
107
  "place_holder": {
@@ -154,4 +154,4 @@
154
154
  "seek_slider": "Seek slider",
155
155
  "range_expression": "at %x of %y."
156
156
  }
157
- }
157
+ }
@@ -61,10 +61,10 @@
61
61
  "activity_title": "Mes activités",
62
62
  "activity_progress": "État d’avancement :",
63
63
  "carousel": "Carrousel",
64
- "conclusion": "Conclusion",
64
+ "conclusion": "Conclusion de la leçon",
65
65
  "complete": "Terminé",
66
66
  "error": "erreur",
67
- "introduction": "Introduction",
67
+ "introduction": "Introduction de la leçon",
68
68
  "lesson": "Leçon",
69
69
  "quiz": "Mot complétant la phrase",
70
70
  "place_holder": {
@@ -117,4 +117,4 @@
117
117
  "seek_slider": "Barre de lecture",
118
118
  "range_expression": "à %x sur %y."
119
119
  }
120
- }
120
+ }
@@ -1,47 +1,47 @@
1
- {
2
- "message_1": {
3
- "type": "popup-avert",
4
- "value": {
5
- "title": "Bienvenue dans la visite guidée du FCAD !",
6
- "hypertext_1": "<p>Le bouton Confirmer vous fera passer à la prochaine étape de la visite.</p><p>Vous pouvez y mettre fin en tout temps avec le bouton Annuler.</p>"
7
- }
8
- },
9
- "message_2": {
10
- "type": "tooltip",
11
- "value": {
12
- "target": "activity_progress",
13
- "title": "Navigation secondaire",
14
- "content": "<p>Les flèches permettent de passer à la page précédente ou suivante de l'activité.</p><p>Les rectangles représentent une section de l'activité.</p>"
15
- }
16
- },
17
- "message_3": {
18
- "type": "tooltip",
19
- "value": {
20
- "target": "btn_back_summary",
21
- "title": "Navigation secondaire",
22
- "content": "<p>Ce bouton permet de retourner au sommaire de l'activité en tout temps.</p>"
23
- }
24
- },
25
- "message_4": {
26
- "type": "tooltip",
27
- "value": {
28
- "target": "primary_activity",
29
- "title": "Navigation principale",
30
- "content": "<p>La navigation principale permet de valider ses réponses de quiz et de passer à la page suivante.</p>"
31
- }
32
- },
33
- "message_5": {
34
- "type": "popup-avert",
35
- "value": {
36
- "title": "Visite guidée",
37
- "hypertext_1": "<p>Message pour la barre de lecture.</p>"
38
- }
39
- },
40
- "message_6": {
41
- "type": "popup-avert",
42
- "value": {
43
- "title": "Visite guidée",
44
- "hypertext_1": "<p>Message pour les Paramètres.</p>"
45
- }
46
- }
47
- }
1
+ {
2
+ "message_1": {
3
+ "type": "popup-avert",
4
+ "value": {
5
+ "title": "Bienvenue dans la visite guidée du FCAD !",
6
+ "hypertext_1": "<p>Le bouton Confirmer vous fera passer à la prochaine étape de la visite.</p><p>Vous pouvez y mettre fin en tout temps avec le bouton Annuler.</p>"
7
+ }
8
+ },
9
+ "message_2": {
10
+ "type": "tooltip",
11
+ "value": {
12
+ "target": "activity_progress",
13
+ "title": "Navigation secondaire",
14
+ "content": "<p>Les flèches permettent de passer à la page précédente ou suivante de l'activité.</p><p>Les rectangles représentent une section de l'activité.</p>"
15
+ }
16
+ },
17
+ "message_3": {
18
+ "type": "tooltip",
19
+ "value": {
20
+ "target": "btn_back_summary",
21
+ "title": "Navigation secondaire",
22
+ "content": "<p>Ce bouton permet de retourner au sommaire de l'activité en tout temps.</p>"
23
+ }
24
+ },
25
+ "message_4": {
26
+ "type": "tooltip",
27
+ "value": {
28
+ "target": "primary_activity",
29
+ "title": "Navigation principale",
30
+ "content": "<p>La navigation principale permet de valider ses réponses de quiz et de passer à la page suivante.</p>"
31
+ }
32
+ },
33
+ "message_5": {
34
+ "type": "popup-avert",
35
+ "value": {
36
+ "title": "Visite guidée",
37
+ "hypertext_1": "<p>Message pour la barre de lecture.</p>"
38
+ }
39
+ },
40
+ "message_6": {
41
+ "type": "popup-avert",
42
+ "value": {
43
+ "title": "Visite guidée",
44
+ "hypertext_1": "<p>Message pour les Paramètres.</p>"
45
+ }
46
+ }
47
+ }
@@ -39,7 +39,7 @@
39
39
  <div v-if="appDebugMode" class="timer">
40
40
  <!-- <div class="timer"> -->
41
41
  <div>Act: {{ appTimer.ISOTimeParser(activityDuration) }}</div>
42
- <span>&nbsp|&nbsp</span>
42
+ <span>&nbsp;|&nbsp;</span>
43
43
  <div>Les: {{ appTimer.ISOTimeParser(lessonDuration) }}</div>
44
44
  </div>
45
45
  <app-icons-next :extra-icons="userExtraIcons" />
@@ -70,7 +70,7 @@ import { Timer } from '../composables/useTimer.js'
70
70
  import { IdleDetector } from '../composables/useIdleDetector.js'
71
71
  import { validateAppContent } from '../shared/validators'
72
72
  import { version as fcadVersion } from '../../package.json'
73
- import { computed, h, reactive } from 'vue'
73
+ import { computed, reactive } from 'vue'
74
74
  import mobileDetect from 'mobile-detect'
75
75
 
76
76
  export default {
@@ -193,10 +193,9 @@ export default {
193
193
  }
194
194
  },
195
195
  'store.$state.userDataLoaded': {
196
- handler() {
197
- !this.store.$state.userDataLoaded
198
- ? this.updateTracker('appBase', 'loading')
199
- : this.updateTracker('appBase', 'ready')
196
+ handler(newValue) {
197
+ if (!newValue) return this.updateTracker('appBase', 'loading')
198
+ this.updateTracker('appBase', 'ready')
200
199
  },
201
200
  immediate: true
202
201
  },