fcad-core-dragon 2.1.1 → 2.1.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 (160) hide show
  1. package/.editorconfig +7 -7
  2. package/.gitlab-ci.yml +124 -0
  3. package/.prettierrc +11 -11
  4. package/.vscode/extensions.json +8 -8
  5. package/.vscode/settings.json +46 -16
  6. package/CHANGELOG +520 -520
  7. package/README.md +57 -57
  8. package/documentation/.vitepress/config.js +114 -114
  9. package/documentation/api-examples.md +49 -49
  10. package/documentation/composants/app-base-button.md +58 -58
  11. package/documentation/composants/app-base-error-display.md +59 -59
  12. package/documentation/composants/app-base-popover.md +68 -68
  13. package/documentation/composants/app-comp-audio.md +75 -75
  14. package/documentation/composants/app-comp-branch-buttons.md +111 -111
  15. package/documentation/composants/app-comp-button-progress.md +53 -53
  16. package/documentation/composants/app-comp-carousel.md +53 -53
  17. package/documentation/composants/app-comp-container.md +53 -53
  18. package/documentation/composants/app-comp-input-checkbox-next.md +42 -42
  19. package/documentation/composants/app-comp-input-dropdown-next.md +34 -34
  20. package/documentation/composants/app-comp-input-radio-next.md +39 -39
  21. package/documentation/composants/app-comp-input-text-next.md +35 -35
  22. package/documentation/composants/app-comp-input-text-table-next.md +34 -34
  23. package/documentation/composants/app-comp-input-text-to-fill-dropdown-next.md +53 -53
  24. package/documentation/composants/app-comp-input-text-to-fill-next.md +31 -31
  25. package/documentation/composants/app-comp-jauge.md +31 -31
  26. package/documentation/composants/app-comp-menu-item.md +55 -55
  27. package/documentation/composants/app-comp-menu.md +29 -29
  28. package/documentation/composants/app-comp-navigation.md +41 -41
  29. package/documentation/composants/app-comp-note-call.md +53 -53
  30. package/documentation/composants/app-comp-note-credit.md +53 -53
  31. package/documentation/composants/app-comp-play-bar-next.md +53 -53
  32. package/documentation/composants/app-comp-pop-up-next.md +93 -93
  33. package/documentation/composants/app-comp-quiz-next.md +235 -235
  34. package/documentation/composants/app-comp-quiz-recall.md +53 -53
  35. package/documentation/composants/app-comp-svg-next.md +53 -53
  36. package/documentation/composants/app-comp-table-of-content.md +50 -50
  37. package/documentation/composants/app-comp-video-player.md +82 -82
  38. package/documentation/composants.md +46 -46
  39. package/documentation/composants_critiques/ModelPageComposant.md +53 -53
  40. package/documentation/composants_critiques/app-base-module.md +43 -43
  41. package/documentation/composants_critiques/app-base-page.md +48 -48
  42. package/documentation/composants_critiques/app-base.md +311 -311
  43. package/documentation/composants_critiques/main.md +15 -15
  44. package/documentation/demarrage.md +50 -50
  45. package/documentation/deploiement.md +57 -57
  46. package/documentation/index.md +33 -33
  47. package/documentation/markdown-examples.md +85 -85
  48. package/documentation/public/vite.svg +14 -14
  49. package/documentation/public/vuejs.svg +1 -1
  50. package/documentation/public/vuetify.svg +5 -5
  51. package/eslint.config.js +60 -60
  52. package/junit-report.xml +182 -0
  53. package/package.json +66 -59
  54. package/playwright/index.html +12 -0
  55. package/playwright/index.js +21 -0
  56. package/playwright-ct.config.js +95 -0
  57. package/src/$locales/en.json +157 -157
  58. package/src/$locales/fr.json +120 -120
  59. package/src/assets/data/onboardingMessages.json +47 -47
  60. package/src/components/AppBase.vue +1171 -1169
  61. package/src/components/AppBaseButton.vue +90 -95
  62. package/src/components/AppBaseErrorDisplay.vue +438 -438
  63. package/src/components/AppBaseFlipCard.vue +84 -84
  64. package/src/components/AppBaseModule.vue +1639 -1634
  65. package/src/components/AppBasePage.vue +867 -866
  66. package/src/components/AppBasePopover.vue +41 -41
  67. package/src/components/AppBaseSkeleton.vue +66 -66
  68. package/src/components/AppCompAudio.vue +261 -256
  69. package/src/components/AppCompBranchButtons.vue +508 -508
  70. package/src/components/AppCompButtonProgress.vue +137 -132
  71. package/src/components/AppCompCarousel.vue +342 -336
  72. package/src/components/AppCompContainer.vue +29 -29
  73. package/src/components/AppCompInputCheckBoxNx.vue +325 -323
  74. package/src/components/AppCompInputDropdownNx.vue +302 -299
  75. package/src/components/AppCompInputRadioNx.vue +287 -284
  76. package/src/components/AppCompInputTextNx.vue +156 -153
  77. package/src/components/AppCompInputTextTableNx.vue +205 -202
  78. package/src/components/AppCompInputTextToFillDropdownNx.vue +343 -340
  79. package/src/components/AppCompInputTextToFillNx.vue +316 -313
  80. package/src/components/AppCompJauge.vue +81 -81
  81. package/src/components/AppCompMenu.vue +6 -1
  82. package/src/components/AppCompMenuItem.vue +246 -240
  83. package/src/components/AppCompNavigation.vue +977 -972
  84. package/src/components/AppCompNoteCall.vue +167 -161
  85. package/src/components/AppCompNoteCredit.vue +496 -491
  86. package/src/components/AppCompPlayBarNext.vue +2290 -2288
  87. package/src/components/AppCompPopUpNext.vue +508 -504
  88. package/src/components/AppCompQuizNext.vue +515 -510
  89. package/src/components/AppCompQuizRecall.vue +355 -350
  90. package/src/components/AppCompSVGNext.vue +346 -346
  91. package/src/components/AppCompSettingsMenu.vue +177 -172
  92. package/src/components/AppCompTableOfContent.vue +433 -427
  93. package/src/components/AppCompVideoPlayer.vue +377 -377
  94. package/src/components/AppCompViewDisplay.vue +6 -6
  95. package/src/components/BaseModule.vue +55 -55
  96. package/src/composables/useIdleDetector.js +56 -56
  97. package/src/composables/useQuiz.js +89 -89
  98. package/src/composables/useTimer.js +172 -172
  99. package/src/directives/nvdaFix.js +53 -53
  100. package/src/externalComps/ModuleView.vue +22 -22
  101. package/src/externalComps/SummaryView.vue +91 -91
  102. package/src/main.js +493 -476
  103. package/src/module/stores/appStore.js +960 -947
  104. package/src/module/xapi/ADL.js +520 -520
  105. package/src/module/xapi/Crypto/Hasher.js +241 -241
  106. package/src/module/xapi/Crypto/WordArray.js +278 -278
  107. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  108. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  109. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  110. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  111. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  112. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  113. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  114. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  115. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  116. package/src/module/xapi/Crypto/index.js +53 -53
  117. package/src/module/xapi/Statement/activity.js +47 -47
  118. package/src/module/xapi/Statement/agent.js +55 -55
  119. package/src/module/xapi/Statement/group.js +26 -26
  120. package/src/module/xapi/Statement/index.js +259 -259
  121. package/src/module/xapi/Statement/statement.js +253 -253
  122. package/src/module/xapi/Statement/statementRef.js +23 -23
  123. package/src/module/xapi/Statement/substatement.js +22 -22
  124. package/src/module/xapi/Statement/verb.js +36 -36
  125. package/src/module/xapi/activitytypes.js +17 -17
  126. package/src/module/xapi/launch.js +157 -157
  127. package/src/module/xapi/utils.js +167 -167
  128. package/src/module/xapi/verbs.js +294 -294
  129. package/src/module/xapi/wrapper.js +1895 -1895
  130. package/src/module/xapi/xapiStatement.js +444 -444
  131. package/src/plugins/analytics.js +34 -34
  132. package/src/plugins/bus.js +12 -8
  133. package/src/plugins/gsap.js +17 -17
  134. package/src/plugins/helper.js +355 -358
  135. package/src/plugins/i18n.js +27 -26
  136. package/src/plugins/idb.js +227 -227
  137. package/src/plugins/save.js +37 -37
  138. package/src/plugins/scorm.js +287 -287
  139. package/src/plugins/xapi.js +11 -11
  140. package/src/public/index.html +33 -33
  141. package/src/router/index.js +57 -57
  142. package/src/router/routes.js +312 -312
  143. package/src/shared/generalfuncs.js +344 -344
  144. package/src/shared/validators.js +1018 -1018
  145. package/tests/component/AppBaseButton.spec.js +53 -0
  146. package/tests/component/pinia.spec.js +24 -0
  147. package/{src/components/tests__ → tests/unit}/AppBaseButton.spec.js +53 -53
  148. package/tests/unit/AppCompInputCheckBoxNx.spec.js +59 -0
  149. package/tests/unit/AppCompInputDropdownNx.spec.js +51 -0
  150. package/tests/unit/AppCompInputRadioNx.spec.js +59 -0
  151. package/tests/unit/AppCompInputTextNx.spec.js +44 -0
  152. package/tests/unit/AppCompInputTextTableNx.spec.js +77 -0
  153. package/tests/unit/AppCompInputTextToFillDropdownNx.spec.js +60 -0
  154. package/tests/unit/AppCompInputTextToFillNx.spec.js +45 -0
  155. package/tests/unit/AppCompQuizNext.spec.js +114 -0
  156. package/tests/unit/AppCompVideoPlayer.spec.js +177 -0
  157. package/{src/components/tests__ → tests/unit}/useTimer.spec.js +91 -91
  158. package/vitest.config.js +28 -19
  159. package/vitest.setup.js +28 -0
  160. package/src/components/AppBaseButton.test.js +0 -21
@@ -1,161 +1,167 @@
1
- <!--
2
- @ Description:
3
- @ What it does:
4
- -->
5
- <template>
6
- <div
7
- :id="`rnt_${pageRef}__${stripRefNote}`"
8
- :ref="`#rnt_${stripRefNote}`"
9
- :data-ref="`nt_${pageRef}__${stripRefNote}`"
10
- class="callEndNote"
11
- >
12
- <button
13
- v-if="!error"
14
- class="nrlm"
15
- tabindex="0"
16
- :title="$t('text.title_link_call')"
17
- :aria-label="`${$t('label.note_reference')} ${stripRefNote}`"
18
- @click="openNote()"
19
- >
20
- <sup>{{ stripRefNote }}</sup>
21
- </button>
22
-
23
- <div v-else class="nrlm error-Nc" tabindex="0">
24
- <sup>{{ $t('text.error') }}</sup>
25
- </div>
26
- </div>
27
- </template>
28
- <script>
29
- import { mapState } from 'pinia'
30
- import { useAppStore } from '../module/stores/appStore'
31
- export default {
32
- props: {
33
- refNote: {
34
- type: String,
35
- default: ' '
36
- },
37
- pageRef: {
38
- type: String,
39
- default: ' '
40
- }
41
- },
42
- data() {
43
- return {
44
- notes: null
45
- }
46
- },
47
- computed: {
48
- ...mapState(useAppStore, ['getNotes', 'getWidgetOpen']),
49
- // Return the number for the note
50
- stripRefNote() {
51
- let newRef
52
-
53
- let ref = this.refNote
54
- let toStrip = ref.indexOf('_')
55
- newRef = this.refNote.substr(toStrip + 1)
56
- return newRef
57
- },
58
- linkedNote() {
59
- const _notes = this.getNotes(
60
- this.$route.meta.activity_ref,
61
- this.$route.meta.id
62
- )
63
- if (!_notes) return null
64
- let thisPageNotes = null
65
-
66
- for (let p of _notes) {
67
- //find the related page and get its notes
68
- if (Object.keys(p)[0] !== this.pageRef) continue
69
- thisPageNotes = p[this.pageRef]
70
- }
71
- //return weither the note exist or note
72
- return thisPageNotes && thisPageNotes.find((n) => n.id == this.refNote)
73
- },
74
-
75
- error() {
76
- let err = false
77
- if (!this.linkedNote) {
78
- err = true
79
- console.warn(
80
- `%c WARNING!>>> AppCompNoteCall: cette note n'existe pas nt_${this.pageRef}__${this.stripRefNote}.`,
81
- 'background: orange; color: white; display: block; margin:5px;'
82
- )
83
- }
84
- return err
85
- }
86
- },
87
- beforeUnmount() {
88
- this.$bus.$off('close-widget', this.onCloseWidget)
89
- this.$bus.$off('credit-note', this.onCreditNote)
90
- },
91
- mounted() {
92
- this.$bus.$on('close-widget', this.onCloseWidget)
93
- this.$bus.$on('credit-note', this.onCreditNote)
94
- },
95
- methods: {
96
- onCreditNote(data) {
97
- this.notes = data.note
98
- },
99
- onCloseWidget() {
100
- let el = document.getElementsByClassName('callEndNote')
101
-
102
- for (let element of el) {
103
- element.setAttribute('datacurrentnote', false)
104
- }
105
- },
106
- //open the widget and give information to highlight
107
- openNote() {
108
- if (!this.getWidgetOpen) {
109
- this.$bus.$emit('open-notes')
110
-
111
- setTimeout(() => {
112
- this.$bus.$emit('note-to-show', this.$el)
113
-
114
- let e = document.getElementsByClassName('callEndNote')
115
- let t = this.$el.getAttribute('id')
116
-
117
- for (let element of e) {
118
- element.setAttribute('dataCurrentnote', false)
119
- if (element.id === t) {
120
- element.setAttribute('dataCurrentnote', true)
121
- }
122
- }
123
- }, 200)
124
- } else {
125
- this.$bus.$emit('close-widget')
126
- this.$bus.$emit('note-to-show', this.$el)
127
- let e = document.getElementsByClassName('callEndNote')
128
- let t = this.$el.getAttribute('id')
129
-
130
- for (let element of e) {
131
- element.setAttribute('dataCurrentnote', false)
132
- if (element.id === t) {
133
- element.setAttribute('dataCurrentnote', true)
134
- }
135
- }
136
- }
137
- },
138
-
139
- lookForElement(elId) {
140
- let clcn = document.getElementsByClassName('endNoteLink')
141
-
142
- for (let element of clcn) {
143
- if (element.id === elId) {
144
- return element
145
- }
146
- }
147
- }
148
- }
149
- }
150
- </script>
151
- <style lang="scss">
152
- .callEndNote {
153
- display: inline-block;
154
- margin-left: -4px;
155
-
156
- .error-Nc {
157
- color: red;
158
- font-weight: bold;
159
- }
160
- }
161
- </style>
1
+ <!--
2
+ @ Description:
3
+ @ What it does:
4
+ -->
5
+ <template>
6
+ <div
7
+ :id="`rnt_${pageRef}__${stripRefNote}`"
8
+ :ref="`#rnt_${stripRefNote}`"
9
+ :data-ref="`nt_${pageRef}__${stripRefNote}`"
10
+ class="callEndNote"
11
+ >
12
+ <button
13
+ v-if="!error"
14
+ class="nrlm"
15
+ tabindex="0"
16
+ :title="$t('text.title_link_call')"
17
+ :aria-label="`${$t('label.note_reference')} ${stripRefNote}`"
18
+ @click="openNote()"
19
+ >
20
+ <sup>{{ stripRefNote }}</sup>
21
+ </button>
22
+
23
+ <div v-else class="nrlm error-Nc" tabindex="0">
24
+ <sup>{{ $t('text.error') }}</sup>
25
+ </div>
26
+ </div>
27
+ </template>
28
+ <script>
29
+ import { mapState } from 'pinia'
30
+ import { useAppStore } from '../module/stores/appStore'
31
+ import { useI18n } from 'vue-i18n'
32
+
33
+ export default {
34
+ props: {
35
+ refNote: {
36
+ type: String,
37
+ default: ' '
38
+ },
39
+ pageRef: {
40
+ type: String,
41
+ default: ' '
42
+ }
43
+ },
44
+ setup() {
45
+ const { t } = useI18n()
46
+ return { t }
47
+ },
48
+ data() {
49
+ return {
50
+ notes: null
51
+ }
52
+ },
53
+ computed: {
54
+ ...mapState(useAppStore, ['getNotes', 'getWidgetOpen']),
55
+ // Return the number for the note
56
+ stripRefNote() {
57
+ let newRef
58
+
59
+ let ref = this.refNote
60
+ let toStrip = ref.indexOf('_')
61
+ newRef = this.refNote.substr(toStrip + 1)
62
+ return newRef
63
+ },
64
+ linkedNote() {
65
+ const _notes = this.getNotes(
66
+ this.$route.meta.activity_ref,
67
+ this.$route.meta.id
68
+ )
69
+ if (!_notes) return null
70
+ let thisPageNotes = null
71
+
72
+ for (let p of _notes) {
73
+ //find the related page and get its notes
74
+ if (Object.keys(p)[0] !== this.pageRef) continue
75
+ thisPageNotes = p[this.pageRef]
76
+ }
77
+ //return weither the note exist or note
78
+ return thisPageNotes && thisPageNotes.find((n) => n.id == this.refNote)
79
+ },
80
+
81
+ error() {
82
+ let err = false
83
+ if (!this.linkedNote) {
84
+ err = true
85
+ console.warn(
86
+ `%c WARNING!>>> AppCompNoteCall: cette note n'existe pas nt_${this.pageRef}__${this.stripRefNote}.`,
87
+ 'background: orange; color: white; display: block; margin:5px;'
88
+ )
89
+ }
90
+ return err
91
+ }
92
+ },
93
+ beforeUnmount() {
94
+ this.$bus.$off('close-widget', this.onCloseWidget)
95
+ this.$bus.$off('credit-note', this.onCreditNote)
96
+ },
97
+ mounted() {
98
+ this.$bus.$on('close-widget', this.onCloseWidget)
99
+ this.$bus.$on('credit-note', this.onCreditNote)
100
+ },
101
+ methods: {
102
+ onCreditNote(data) {
103
+ this.notes = data.note
104
+ },
105
+ onCloseWidget() {
106
+ let el = document.getElementsByClassName('callEndNote')
107
+
108
+ for (let element of el) {
109
+ element.setAttribute('datacurrentnote', false)
110
+ }
111
+ },
112
+ //open the widget and give information to highlight
113
+ openNote() {
114
+ if (!this.getWidgetOpen) {
115
+ this.$bus.$emit('open-notes')
116
+
117
+ setTimeout(() => {
118
+ this.$bus.$emit('note-to-show', this.$el)
119
+
120
+ let e = document.getElementsByClassName('callEndNote')
121
+ let t = this.$el.getAttribute('id')
122
+
123
+ for (let element of e) {
124
+ element.setAttribute('dataCurrentnote', false)
125
+ if (element.id === t) {
126
+ element.setAttribute('dataCurrentnote', true)
127
+ }
128
+ }
129
+ }, 200)
130
+ } else {
131
+ this.$bus.$emit('close-widget')
132
+ this.$bus.$emit('note-to-show', this.$el)
133
+ let e = document.getElementsByClassName('callEndNote')
134
+ let t = this.$el.getAttribute('id')
135
+
136
+ for (let element of e) {
137
+ element.setAttribute('dataCurrentnote', false)
138
+ if (element.id === t) {
139
+ element.setAttribute('dataCurrentnote', true)
140
+ }
141
+ }
142
+ }
143
+ },
144
+
145
+ lookForElement(elId) {
146
+ let clcn = document.getElementsByClassName('endNoteLink')
147
+
148
+ for (let element of clcn) {
149
+ if (element.id === elId) {
150
+ return element
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ </script>
157
+ <style lang="scss">
158
+ .callEndNote {
159
+ display: inline-block;
160
+ margin-left: -4px;
161
+
162
+ .error-Nc {
163
+ color: red;
164
+ font-weight: bold;
165
+ }
166
+ }
167
+ </style>