fcad-core-dragon 2.0.0-beta.3 → 2.0.0-beta.5

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 (90) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/.eslintrc.cjs +81 -81
  4. package/CHANGELOG +13 -0
  5. package/README.md +71 -71
  6. package/bk.scss +117 -117
  7. package/package.json +8 -8
  8. package/src/$locales/en.json +145 -143
  9. package/src/$locales/fr.json +107 -105
  10. package/src/assets/data/onboardingMessages.json +47 -47
  11. package/src/components/AppBase.vue +1150 -1054
  12. package/src/components/AppBaseButton.test.js +22 -0
  13. package/src/components/AppBaseButton.vue +93 -87
  14. package/src/components/AppBaseErrorDisplay.vue +438 -438
  15. package/src/components/AppBaseFlipCard.vue +84 -84
  16. package/src/components/AppBaseModule.vue +1657 -1673
  17. package/src/components/AppBasePage.vue +742 -779
  18. package/src/components/AppBasePopover.vue +41 -41
  19. package/src/components/AppCompAudio.vue +265 -234
  20. package/src/components/AppCompBranchButtons.vue +556 -552
  21. package/src/components/AppCompButtonProgress.vue +121 -126
  22. package/src/components/AppCompCarousel.vue +328 -298
  23. package/src/components/AppCompInputCheckBoxNext.vue +200 -195
  24. package/src/components/AppCompInputDropdownNext.vue +201 -159
  25. package/src/components/AppCompInputRadioNext.vue +152 -152
  26. package/src/components/AppCompInputTextNext.vue +125 -106
  27. package/src/components/AppCompInputTextTableNext.vue +142 -141
  28. package/src/components/AppCompInputTextToFillDropdownNext.vue +238 -230
  29. package/src/components/AppCompInputTextToFillNext.vue +171 -171
  30. package/src/components/AppCompJauge.vue +74 -74
  31. package/src/components/AppCompMenu.vue +25 -10
  32. package/src/components/AppCompMenuItem.vue +228 -228
  33. package/src/components/AppCompNavigation.vue +972 -960
  34. package/src/components/AppCompNoteCall.vue +159 -133
  35. package/src/components/AppCompNoteCredit.vue +490 -292
  36. package/src/components/AppCompPlayBar.vue +1217 -1218
  37. package/src/components/AppCompPlayBarNext.vue +2060 -2052
  38. package/src/components/AppCompPlayBarProgress.vue +82 -82
  39. package/src/components/AppCompPopUpNext.vue +500 -503
  40. package/src/components/AppCompQuizNext.vue +2908 -2904
  41. package/src/components/AppCompQuizRecall.vue +298 -276
  42. package/src/components/AppCompSVGNext.vue +347 -347
  43. package/src/components/AppCompSettingsMenu.vue +172 -172
  44. package/src/components/AppCompTableOfContent.vue +386 -387
  45. package/src/components/AppCompTranscript.vue +24 -24
  46. package/src/components/AppCompVideoPlayer.vue +368 -368
  47. package/src/components/BaseModule.vue +55 -72
  48. package/src/components/tests__/AppBaseButton.spec.js +53 -0
  49. package/src/composables/useQuiz.js +206 -206
  50. package/src/externalComps/ModuleView.vue +22 -22
  51. package/src/externalComps/SummaryView.vue +91 -91
  52. package/src/main.js +272 -272
  53. package/src/mixins/$mediaMixins.js +819 -819
  54. package/src/mixins/timerMixin.js +155 -155
  55. package/src/module/stores/appStore.js +954 -893
  56. package/src/module/xapi/ADL.js +380 -376
  57. package/src/module/xapi/Crypto/Hasher.js +241 -241
  58. package/src/module/xapi/Crypto/WordArray.js +278 -278
  59. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  60. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  61. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  62. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  63. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  64. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  65. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  66. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  67. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  68. package/src/module/xapi/Statement/agent.js +55 -55
  69. package/src/module/xapi/Statement/index.js +259 -259
  70. package/src/module/xapi/Statement/statement.js +253 -253
  71. package/src/module/xapi/launch.js +157 -157
  72. package/src/module/xapi/utils.js +167 -167
  73. package/src/module/xapi/verbs.js +294 -294
  74. package/src/module/xapi/wrapper.js +1963 -1963
  75. package/src/module/xapi/xapiStatement.js +444 -444
  76. package/src/plugins/bus.js +8 -8
  77. package/src/plugins/gsap.js +14 -14
  78. package/src/plugins/helper.js +355 -308
  79. package/src/plugins/i18n.js +44 -44
  80. package/src/plugins/idb.js +227 -219
  81. package/src/plugins/save.js +37 -37
  82. package/src/plugins/scorm.js +287 -287
  83. package/src/plugins/xapi.js +11 -11
  84. package/src/public/index.html +33 -33
  85. package/src/router/index.js +48 -43
  86. package/src/router/routes.js +312 -312
  87. package/src/shared/generalfuncs.js +210 -210
  88. package/src/shared/validators.js +926 -1069
  89. package/vitest.config.js +19 -0
  90. package/vite.config.js +0 -27
@@ -1,133 +1,159 @@
1
- <!--
2
- @ Description:
3
- @ What it does:
4
- -->
5
- <template>
6
- <div
7
- :id="`rnt_${stripRefNote}`"
8
- :ref="`#rnt_${stripRefNote}`"
9
- :data-ref="`nt_${stripRefNote}`"
10
- class="callEndNote"
11
- >
12
- <button
13
- class="nrlm"
14
- tabindex="0"
15
- :title="$t('text.title_link_call')"
16
- @click="openNote()"
17
- >
18
- <sup>{{ stripRefNote }}</sup>
19
- </button>
20
- </div>
21
- </template>
22
- <script>
23
- import { mapState } from 'pinia'
24
- import { useAppStore } from '../module/stores/appStore'
25
- export default {
26
- props: {
27
- refNote: {
28
- type: String,
29
- default: ' '
30
- }
31
- },
32
- data() {
33
- return {
34
- notes: null
35
- }
36
- },
37
- computed: {
38
- ...mapState(useAppStore, ['getDataNoteCredit']),
39
- // Return the number for the note
40
- stripRefNote() {
41
- let newRef
42
-
43
- let ref = this.refNote
44
- let toStrip = ref.indexOf('_')
45
- newRef = this.refNote.substr(toStrip + 1)
46
-
47
- return newRef
48
- } //,
49
- // error() {
50
- // let er = false
51
- // let data = this.getDataNoteCredit.note
52
-
53
- // let s = document.querySelectorAll(`[dataref="r${this.refNote}"]`)
54
- // console.log(s)
55
-
56
- // if (data) {
57
- // if (s.length) {
58
- // er = false
59
- // } else {
60
- // er = true
61
- // console.warn(
62
- // `%c WARNING!>>> AppCompNoteCall: cette note n'existe pas ${this.refNote}.`,
63
- // 'background: orange; color: white; display: block; margin:5px;'
64
- // )
65
- // }
66
- // }
67
-
68
- // return er
69
- // }
70
- },
71
- beforeUnmount() {
72
- this.$bus.$off('close-widget', this.onCloseWidget)
73
- this.$bus.$off('credit-note', this.onCreditNote)
74
- },
75
- mounted() {
76
- this.$bus.$on('close-widget', this.onCloseWidget)
77
- this.$bus.$on('credit-note', this.onCreditNote)
78
- },
79
- methods: {
80
- onCreditNote(data) {
81
- this.notes = data.note
82
- },
83
- onCloseWidget() {
84
- let el = document.getElementsByClassName('callEndNote')
85
-
86
- for (let element of el) {
87
- element.setAttribute('datacurrentnote', false)
88
- }
89
- },
90
- //open the widget and give information to highlight
91
- openNote() {
92
- this.$bus.$emit('toggle-widget', 'noteCredit')
93
- this.$bus.$emit('note-to-show', this.$el)
94
-
95
- let e = document.getElementsByClassName('callEndNote')
96
- let t = this.$el.getAttribute('id')
97
-
98
- for (let element of e) {
99
- element.setAttribute('dataCurrentnote', false)
100
- if (element.id === t) {
101
- element.setAttribute('dataCurrentnote', true)
102
- }
103
- }
104
-
105
- this.focusWidgetNote(t)
106
- },
107
- lookForElement(elId) {
108
- let clcn = document.getElementsByClassName('endNoteLink')
109
-
110
- for (let element of clcn) {
111
- if (element.id === elId) {
112
- return element
113
- }
114
- }
115
- },
116
- focusWidgetNote(element) {
117
- let s = document.querySelectorAll(`[noteref="${element}"]`)
118
- s[0].focus()
119
- }
120
- }
121
- }
122
- </script>
123
- <style lang="scss">
124
- .callEndNote {
125
- display: inline-block;
126
- margin-left: -4px;
127
-
128
- .error-Nc {
129
- color: red;
130
- font-weight: bold;
131
- }
132
- }
133
- </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
+ @click="openNote()"
18
+ >
19
+ <sup>{{ stripRefNote }}</sup>
20
+ </button>
21
+
22
+ <div v-else class="nrlm error-Nc" tabindex="0">
23
+ <sup>{{ $t('text.error') }}</sup>
24
+ </div>
25
+ </div>
26
+ </template>
27
+ <script>
28
+ import { mapState } from 'pinia'
29
+ import { useAppStore } from '../module/stores/appStore'
30
+ export default {
31
+ props: {
32
+ refNote: {
33
+ type: String,
34
+ default: ' '
35
+ },
36
+ pageRef: {
37
+ type: String,
38
+ default: ' '
39
+ }
40
+ },
41
+ data() {
42
+ return {
43
+ notes: null
44
+ }
45
+ },
46
+ computed: {
47
+ ...mapState(useAppStore, ['getNotes', 'getWidgetOpen']),
48
+ // Return the number for the note
49
+ stripRefNote() {
50
+ let newRef
51
+
52
+ let ref = this.refNote
53
+ let toStrip = ref.indexOf('_')
54
+ newRef = this.refNote.substr(toStrip + 1)
55
+ return newRef
56
+ },
57
+ linkedNote() {
58
+ const _notes = this.getNotes(
59
+ this.$route.meta.activity_ref,
60
+ this.$route.meta.id
61
+ )
62
+ if (!_notes) return null
63
+ let thisPageNotes = null
64
+
65
+ for (let p of _notes) {
66
+ //find the related page and get its notes
67
+ if (Object.keys(p)[0] !== this.pageRef) continue
68
+ thisPageNotes = p[this.pageRef]
69
+ }
70
+ //return weither the note exist or note
71
+ return thisPageNotes && thisPageNotes.find((n) => n.id == this.refNote)
72
+ },
73
+
74
+ error() {
75
+ let err = false
76
+ if (!this.linkedNote) {
77
+ err = true
78
+ console.warn(
79
+ `%c WARNING!>>> AppCompNoteCall: cette note n'existe pas nt_${this.pageRef}__${this.stripRefNote}.`,
80
+ 'background: orange; color: white; display: block; margin:5px;'
81
+ )
82
+ }
83
+ return err
84
+ }
85
+ },
86
+ beforeUnmount() {
87
+ this.$bus.$off('close-widget', this.onCloseWidget)
88
+ this.$bus.$off('credit-note', this.onCreditNote)
89
+ },
90
+ mounted() {
91
+ this.$bus.$on('close-widget', this.onCloseWidget)
92
+ this.$bus.$on('credit-note', this.onCreditNote)
93
+ },
94
+ methods: {
95
+ onCreditNote(data) {
96
+ this.notes = data.note
97
+ },
98
+ onCloseWidget() {
99
+ let el = document.getElementsByClassName('callEndNote')
100
+
101
+ for (let element of el) {
102
+ element.setAttribute('datacurrentnote', false)
103
+ }
104
+ },
105
+ //open the widget and give information to highlight
106
+ openNote() {
107
+ if (!this.getWidgetOpen) {
108
+ this.$bus.$emit('open-notes')
109
+
110
+ setTimeout(() => {
111
+ this.$bus.$emit('note-to-show', this.$el)
112
+
113
+ let e = document.getElementsByClassName('callEndNote')
114
+ let t = this.$el.getAttribute('id')
115
+
116
+ for (let element of e) {
117
+ element.setAttribute('dataCurrentnote', false)
118
+ if (element.id === t) {
119
+ element.setAttribute('dataCurrentnote', true)
120
+ }
121
+ }
122
+ }, 200)
123
+ } else {
124
+ this.$bus.$emit('note-to-show', this.$el)
125
+ let e = document.getElementsByClassName('callEndNote')
126
+ let t = this.$el.getAttribute('id')
127
+
128
+ for (let element of e) {
129
+ element.setAttribute('dataCurrentnote', false)
130
+ if (element.id === t) {
131
+ element.setAttribute('dataCurrentnote', true)
132
+ }
133
+ }
134
+ }
135
+ },
136
+
137
+ lookForElement(elId) {
138
+ let clcn = document.getElementsByClassName('endNoteLink')
139
+
140
+ for (let element of clcn) {
141
+ if (element.id === elId) {
142
+ return element
143
+ }
144
+ }
145
+ }
146
+ }
147
+ }
148
+ </script>
149
+ <style lang="scss">
150
+ .callEndNote {
151
+ display: inline-block;
152
+ margin-left: -4px;
153
+
154
+ .error-Nc {
155
+ color: red;
156
+ font-weight: bold;
157
+ }
158
+ }
159
+ </style>