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

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 (118) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/{.eslintrc.js → .eslintrc.cjs} +81 -86
  4. package/CHANGELOG +364 -364
  5. package/README.md +71 -71
  6. package/bk.scss +117 -0
  7. package/package.json +61 -63
  8. package/src/$locales/en.json +143 -179
  9. package/src/$locales/fr.json +105 -181
  10. package/src/assets/data/onboardingMessages.json +47 -47
  11. package/src/components/AppBase.vue +1054 -614
  12. package/src/components/AppBaseButton.vue +87 -63
  13. package/src/components/AppBaseErrorDisplay.vue +438 -420
  14. package/src/components/AppBaseFlipCard.vue +84 -83
  15. package/src/components/AppBaseModule.vue +1673 -1842
  16. package/src/components/AppBasePage.vue +779 -312
  17. package/src/components/AppBasePopover.vue +41 -0
  18. package/src/components/AppCompAudio.vue +234 -0
  19. package/src/components/AppCompBranchButtons.vue +552 -582
  20. package/src/components/AppCompButtonProgress.vue +126 -147
  21. package/src/components/AppCompCarousel.vue +298 -192
  22. package/src/components/AppCompInputCheckBoxNext.vue +195 -0
  23. package/src/components/AppCompInputDropdownNext.vue +159 -0
  24. package/src/components/AppCompInputRadioNext.vue +152 -0
  25. package/src/components/{AppCompInputTextBox.vue → AppCompInputTextNext.vue} +106 -91
  26. package/src/components/AppCompInputTextTableNext.vue +141 -0
  27. package/src/components/AppCompInputTextToFillDropdownNext.vue +230 -0
  28. package/src/components/{AppCompInputTextToFillText.vue → AppCompInputTextToFillNext.vue} +171 -164
  29. package/src/components/AppCompJauge.vue +74 -55
  30. package/src/components/AppCompMenu.vue +413 -209
  31. package/src/components/AppCompMenuItem.vue +228 -174
  32. package/src/components/AppCompNavigation.vue +960 -949
  33. package/src/components/AppCompNoteCall.vue +133 -126
  34. package/src/components/AppCompNoteCredit.vue +292 -164
  35. package/src/components/AppCompPlayBar.vue +1218 -1319
  36. package/src/components/AppCompPlayBarNext.vue +2052 -0
  37. package/src/components/AppCompPlayBarProgress.vue +82 -0
  38. package/src/components/AppCompPopUpNext.vue +503 -0
  39. package/src/components/{AppCompQuiz.vue → AppCompQuizNext.vue} +2904 -2989
  40. package/src/components/AppCompQuizRecall.vue +276 -250
  41. package/src/components/AppCompSVGNext.vue +347 -0
  42. package/src/components/AppCompSettingsMenu.vue +172 -171
  43. package/src/components/AppCompTableOfContent.vue +387 -264
  44. package/src/components/AppCompTranscript.vue +24 -19
  45. package/src/components/AppCompVideoPlayer.vue +368 -336
  46. package/src/components/AppCompViewDisplay.vue +6 -6
  47. package/src/components/BaseModule.vue +72 -67
  48. package/src/composables/useQuiz.js +206 -0
  49. package/src/externalComps/ModuleView.vue +22 -0
  50. package/src/externalComps/SummaryView.vue +91 -0
  51. package/src/main.js +272 -227
  52. package/src/mixins/$mediaMixins.js +819 -0
  53. package/src/mixins/timerMixin.js +155 -156
  54. package/src/module/stores/appStore.js +893 -0
  55. package/src/module/xapi/ADL.js +376 -339
  56. package/src/module/xapi/Crypto/Hasher.js +241 -241
  57. package/src/module/xapi/Crypto/WordArray.js +278 -278
  58. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  59. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -319
  60. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  61. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  62. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  63. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  64. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  65. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  66. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  67. package/src/module/xapi/Crypto/index.js +53 -53
  68. package/src/module/xapi/Statement/activity.js +47 -47
  69. package/src/module/xapi/Statement/agent.js +55 -55
  70. package/src/module/xapi/Statement/group.js +26 -26
  71. package/src/module/xapi/Statement/index.js +259 -259
  72. package/src/module/xapi/Statement/statement.js +253 -253
  73. package/src/module/xapi/Statement/statementRef.js +23 -23
  74. package/src/module/xapi/Statement/substatement.js +22 -22
  75. package/src/module/xapi/Statement/verb.js +36 -36
  76. package/src/module/xapi/activitytypes.js +17 -17
  77. package/src/module/xapi/launch.js +157 -157
  78. package/src/module/xapi/utils.js +167 -167
  79. package/src/module/xapi/verbs.js +294 -294
  80. package/src/module/xapi/wrapper.js +1963 -1890
  81. package/src/module/xapi/xapiStatement.js +444 -444
  82. package/src/plugins/bus.js +8 -3
  83. package/src/plugins/gsap.js +14 -17
  84. package/src/plugins/helper.js +308 -295
  85. package/src/plugins/i18n.js +44 -31
  86. package/src/plugins/idb.js +219 -212
  87. package/src/plugins/save.js +37 -37
  88. package/src/plugins/scorm.js +287 -287
  89. package/src/plugins/xapi.js +11 -11
  90. package/src/public/index.html +33 -21
  91. package/src/router/index.js +43 -41
  92. package/src/router/routes.js +312 -337
  93. package/src/shared/generalfuncs.js +210 -188
  94. package/src/shared/validators.js +1069 -249
  95. package/vite.config.js +27 -0
  96. package/.prettierrc.js +0 -5
  97. package/babel.config.js +0 -3
  98. package/src/components/AppBaseDragChoice.vue +0 -91
  99. package/src/components/AppBaseDropZone.vue +0 -112
  100. package/src/components/AppCompBif.vue +0 -120
  101. package/src/components/AppCompDragAndDrop.vue +0 -339
  102. package/src/components/AppCompInputAssociation.vue +0 -332
  103. package/src/components/AppCompInputCheckBox.vue +0 -227
  104. package/src/components/AppCompInputDropdown.vue +0 -184
  105. package/src/components/AppCompInputRadio.vue +0 -169
  106. package/src/components/AppCompInputTextTable.vue +0 -155
  107. package/src/components/AppCompInputTextToFillDropdown.vue +0 -255
  108. package/src/components/AppCompMediaPlayer.vue +0 -397
  109. package/src/components/AppCompPopUp.vue +0 -522
  110. package/src/components/AppCompPopover.vue +0 -27
  111. package/src/components/AppCompSVG.vue +0 -309
  112. package/src/mixins/$pageMixins.js +0 -459
  113. package/src/mixins/$quizMixins.js +0 -456
  114. package/src/module/store.js +0 -895
  115. package/src/plugins/timeManager.js +0 -77
  116. package/src/routes_bckp.js +0 -313
  117. package/src/routes_static.js +0 -344
  118. package/vue.config.js +0 -83
@@ -0,0 +1,82 @@
1
+ <!--@ Description: This component is used to display the playbar associate with the videoPlayer
2
+ @ What it does: The component is used to interacted with the videoPlayer via buttons.
3
+ v-media class is used to identified which html elements trigger the playBar to be appear (with focus/click)-->
4
+ <template>
5
+ <!--------------------------------- PLAY-BAR Progress -------------------------------------->
6
+ <div ref="$playbar-timeline" class="pb-timeline">
7
+ <div ref="$progress-area" class="progress-area">
8
+ <div
9
+ id="progress-bar"
10
+ ref="$progress-bar"
11
+ draggable="false"
12
+ tabindex="0"
13
+ class="v-media pb-progress-bar"
14
+ role="slider"
15
+ aria-valuemin="0"
16
+ :aria-label="mediaA11Y.label"
17
+ :aria-valuenow="mediaA11Y.valNow"
18
+ :aria-valuemax="mediaA11Y.valMax"
19
+ :aria-valuetext="mediaA11Y.valueText"
20
+ @focus="changeFocusState('progressBar', true)"
21
+ @blur="changeFocusState('progressBar', false)"
22
+ >
23
+ <!--Class progress-animation is apply when we are not using the thumb to change the progression-->
24
+ <div
25
+ id="progress-indicator"
26
+ ref="$progress-indicator"
27
+ draggable="false"
28
+ class="progress-indicator"
29
+ :class="{ 'progress-animation': !progressThumbDown }"
30
+ :style="{ width: progressBarPercentage + '%' }"
31
+ >
32
+ <!--Mousedown validate if the thumb is cliqued (if yes, the mouse is follow to modify the progress)
33
+ MouseOver/MouseOut deactivate click event on progressBar if the mouse hovered the thumb-->
34
+ <!-- <div
35
+ ref="$progress-thumb"
36
+ draggable="false"
37
+ class="progress-thumb"
38
+ style="z-index: 9"
39
+ @mousedown="
40
+ savedIsPlaying = isPlaying
41
+ progressThumbDown = true
42
+ "
43
+ @mouseover="progressThumbHover = true"
44
+ @mouseleave="progressThumbHover = false"
45
+ ></div> -->
46
+
47
+ <div
48
+ ref="$progress-thumb"
49
+ draggable="false"
50
+ class="progress-thumb"
51
+ style="z-index: 9"
52
+ @mouseover="progressThumbHover = true"
53
+ @mouseleave="progressThumbHover = false"
54
+ ></div>
55
+ </div>
56
+ </div>
57
+ <div
58
+ v-if="tooTipTimeCode"
59
+ id="seek-tooltip"
60
+ ref="$seek-tooltip"
61
+ aria-hidden="true"
62
+ class="seek-tooltip"
63
+ >
64
+ {{ tooTipTimeCode }}
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </template>
69
+
70
+ <script>
71
+ import $extendsMedia from '../mixins/$mediaMixins'
72
+
73
+ export default {
74
+ mixins: [$extendsMedia],
75
+ data() {
76
+ return {
77
+ tooTipTimeCode: null
78
+ }
79
+ },
80
+ mounted() {}
81
+ }
82
+ </script>
@@ -0,0 +1,503 @@
1
+ <!-- About this Component--
2
+ *@ Description: Application component to show instructions in a modal.
3
+ *@ What it does: This component uses the VDialog component to create a Popup. 2 types of popups can be display:
4
+ - end of activities popup (popup-endActivity). Default used by the application at the end of activities (AppCompNavigation)
5
+ - custom popup (popup-custom)- this allow user to defined custom popup using the power of VDialog. Must respect properties defined by VDialog. For more info, refer to https://vuetifyjs.com/en/components/dialogs/#usage.
6
+ It validates the content of the popup before rendering. Will render error view if there are some errors in content definition
7
+ * What it needs: data must contain:
8
+ - type(string) : 'popup-endAcivity' || 'popup-custom || popup-info'
9
+ - value (Object): {$bvArgs(Object), template (String)}
10
+
11
+ *⚠️@Note :There can only be Popup instance of this component in the application. You can ask the application to open the Popup with you defined popup
12
+ *@ Exemple: creating a custom popup using the VDialog props
13
+
14
+ const myCustomProp = {
15
+ type: 'popup-custom',
16
+ value: {
17
+ //⚠️IMPORTANT:Only props of VDialog must be listed in $bvArgs. Check VDialog documentation for full list of props
18
+ $bvArgs: {
19
+ centered: true,
20
+ width: 'auto',
21
+ scrollable: false,
22
+ 'max-width': '600'
23
+ }
24
+ //⚠️IMPORTANT:Must have a template attribute
25
+ tempate:`<div><h4>Exemple of custom popup</h4><p>Hello World</p></div>`
26
+ }
27
+ }
28
+ // Now we can ask the application to open our custom popup
29
+ this.$bus.$emit('open-popup', myCustomProp)
30
+ -->
31
+
32
+ <template>
33
+ <div>
34
+ <template v-if="!errors.length">
35
+ <!------------ End Activity --------------------------->
36
+
37
+ <v-dialog
38
+ id="popUp"
39
+ :model-value="popupType == 'popup-endActivity' && dialogue"
40
+ :class="pType"
41
+ width="auto"
42
+ scrollable
43
+ centered
44
+ @after-leave="$close(pContent.cb_$close)"
45
+ >
46
+ <focus-trap v-model:active="dialogue">
47
+ <div class="pop-outside">
48
+ <div class="pop-header">
49
+ <app-base-button
50
+ id="close-pop"
51
+ class="btn-ghost-ico"
52
+ :title="$t('button.closePopUp')"
53
+ @click="$close()"
54
+ >
55
+ <svg>
56
+ <use href="#close-square-icon" />
57
+ </svg>
58
+ <span class="sr-only">{{ $t('button.closePopUp') }}</span>
59
+ </app-base-button>
60
+ </div>
61
+ <div class="pop-containt">
62
+ <div class="pop-box">
63
+ <div id="popHeader">
64
+ <h4 id="dialogTitle" class="p-title" v-html="pTitle"></h4>
65
+ </div>
66
+ <div class="box-content-popUp"></div>
67
+ <div
68
+ id="end-activity"
69
+ :aria-hidden="pType !== 'popup-endActivity'"
70
+ class="popup-bottom-buttons"
71
+ ></div>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </focus-trap>
76
+ </v-dialog>
77
+ <!------------ POPUP INFO ----------------------------->
78
+ <v-dialog
79
+ id="popUp"
80
+ :model-value="popupType == 'popup-info' && dialogue"
81
+ :class="pType"
82
+ width="auto"
83
+ scrollable
84
+ centered
85
+ v-bind="pArgs"
86
+ @after-leave="$close(pContent.cb_$close)"
87
+ >
88
+ <focus-trap v-model:active="dialogue">
89
+ <div class="pop-outside">
90
+ <div class="pop-header">
91
+ <app-base-button
92
+ id="close-pop"
93
+ class="btn-ghost-ico"
94
+ :title="$t('button.closePopUp')"
95
+ @click="$close()"
96
+ >
97
+ <svg>
98
+ <use href="#close-square-icon" />
99
+ </svg>
100
+ <span class="sr-only">{{ $t('button.closePopUp') }}</span>
101
+ </app-base-button>
102
+ </div>
103
+ <div class="pop-containt">
104
+ <div class="pop-box">
105
+ <div id="popHeader">
106
+ <h4 id="dialogTitle" class="p-title" v-html="pTitle"></h4>
107
+ </div>
108
+ <div class="box-content-popUp">
109
+ <template v-if="contentLength > 0">
110
+ <template v-for="(content, _key, index) of pContent">
111
+ <!-------- Create TEXT element -------------->
112
+ <p
113
+ v-if="_key.includes('text') && !_key.includes('hyper')"
114
+ :id="`${_key}_${index}`"
115
+ :key="_key"
116
+ class="p-txt"
117
+ >
118
+ {{ content }}
119
+ </p>
120
+
121
+ <!-------- Create HTMLelement -------------->
122
+ <div
123
+ v-else-if="_key.includes('hypertext')"
124
+ :id="`${_key}_${index}`"
125
+ :key="`hyp_${_key}`"
126
+ v-html="content"
127
+ />
128
+
129
+ <!-------- Create IMAGE element ------------->
130
+ <img
131
+ v-else-if="_key.includes('image')"
132
+ :id="`${_key}_${index}`"
133
+ :key="`img_${_key}`"
134
+ class="p-img"
135
+ :src="content.path"
136
+ :alt="content.label || 'image'"
137
+ />
138
+
139
+ <!-------- Create LINK element -------------->
140
+ <a
141
+ v-else-if="_key.includes('link')"
142
+ :id="`${_key}_${index}`"
143
+ :key="`lnk_${_key}`"
144
+ :href="content.ref"
145
+ class="p-a"
146
+ target="_blank"
147
+ :title="`${content.label}`"
148
+ >
149
+ {{ content.label }}
150
+ </a>
151
+
152
+ <!-------- Create VIDEO element ------------->
153
+ <video
154
+ v-else-if="_key.includes('video')"
155
+ :id="`${_key}_${index}`"
156
+ :key="`vid_${_key}`"
157
+ :src="content"
158
+ class="p-vid"
159
+ controls
160
+ disablepictureinpicture
161
+ controlslist="nofullscreen nodownload"
162
+ />
163
+
164
+ <!--------Create AUDIO element--------------->
165
+ <audio
166
+ v-else-if="_key.includes('audio')"
167
+ :id="`${_key}_${index}`"
168
+ :key="`aud_${_key}`"
169
+ :src="content"
170
+ class="p-aud"
171
+ controls
172
+ controlslist="nodownload"
173
+ />
174
+ </template>
175
+ </template>
176
+ </div>
177
+ <div
178
+ id="end-activity"
179
+ :aria-hidden="pType !== 'popup-endActivity'"
180
+ class="popup-bottom-buttons"
181
+ ></div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </focus-trap>
186
+ </v-dialog>
187
+ <!------------ POPUP CUSTOM --------------------------->
188
+ <v-dialog
189
+ id="popUp"
190
+ :model-value="popupType == 'popup-custom' && dialogue"
191
+ :class="pType"
192
+ v-bind="pArgs"
193
+ @after-leave="$close(pContent.cb_$close)"
194
+ >
195
+ <focus-trap v-model:active="dialogue">
196
+ <component :is="{ template: pContent.template }"></component>
197
+ </focus-trap>
198
+ </v-dialog>
199
+ <!------------------------------- END POPUPS ------------------------------>
200
+ </template>
201
+ <app-base-error-display
202
+ v-show="errors.length"
203
+ :error-group="'component'"
204
+ :error-title="'ERREUR: COMPOSANT DE POPUP'"
205
+ :errors-list="errors"
206
+ />
207
+ </div>
208
+ </template>
209
+
210
+ <script>
211
+ import AppBaseErrorDisplay from './AppBaseErrorDisplay.vue'
212
+ import { mapActions } from 'pinia'
213
+ import { useAppStore } from '../module/stores/appStore'
214
+
215
+ export default {
216
+ name: 'AppCompPopUp',
217
+ components: { AppBaseErrorDisplay },
218
+ data() {
219
+ return {
220
+ pType: null,
221
+ pName: 'noName',
222
+ pContent: {},
223
+ pArgs: null,
224
+ pTitle: '',
225
+ errors: [],
226
+ docLink:
227
+ 'https://fcaddocumentation.netlify.app/guide/ressources.html#creer-un-popup-custom',
228
+ animationOff: false,
229
+ dialogue: false
230
+ }
231
+ },
232
+ computed: {
233
+ contentLength() {
234
+ let size = null
235
+ if (!this.pType || this.pType !== 'popup-info') return
236
+
237
+ if (this.pContent && Object.keys(this.pContent).length > 0)
238
+ size = Object.keys(this.pContent).length
239
+ return size
240
+ },
241
+
242
+ popupType() {
243
+ if (!this.pType) return
244
+ return this.pType
245
+ }
246
+ },
247
+
248
+ mounted() {
249
+ this.$bus.$on('popup-open', this.validateContent)
250
+ this.$bus.$on('popup-close', this.$close)
251
+ },
252
+ beforeUnmount() {
253
+ this.$bus.$off('popup-open', this.validateContent)
254
+ this.$bus.$off('popup-close', this.$close)
255
+ },
256
+ methods: {
257
+ ...mapActions(useAppStore, ['updateEndPopUp']),
258
+ /**
259
+ * @description - Validate the data for the component
260
+ * @param {Object} data
261
+ */
262
+ validateContent(data) {
263
+ if (!data) return
264
+ const typeList = ['popup-custom', 'popup-endActivity', 'popup-info']
265
+
266
+ if (this.errors.length > 0) this.errors = []
267
+
268
+ if (data.type) {
269
+ // validate the type value of popup
270
+ const validType = typeList.includes(data.type)
271
+
272
+ if (!validType) this.errors.push('Invalid value for type')
273
+ } else this.errors.push('Missing argument: type')
274
+
275
+ // validate value of the popup according to popup type
276
+ // Content must be String|Object
277
+ if (data.value) {
278
+ let validObject = false
279
+ if (
280
+ data.value.constructor === Object &&
281
+ Object.keys(data.value).length > 0
282
+ )
283
+ validObject = true
284
+
285
+ if (validObject) {
286
+ let KeywordsList
287
+ //Validate the content accordint to popup type
288
+ switch (true) {
289
+ case data.type === 'popup-endActivity':
290
+ KeywordsList = ['template', 'title'] // accepted keywords in value declaration for pop-up end-Activity
291
+ break
292
+
293
+ case data.type === 'popup-custom':
294
+ KeywordsList = ['$bvArgs', 'template'] // accepted keywords in value declaration for pop-up custom
295
+ //Must have required keywords
296
+ for (const key of KeywordsList) {
297
+ if (data.value[key]) continue
298
+ this.errors.push(
299
+ `Missing required attribute 👉${key}👈. Required attributes are ${[...KeywordsList]}`
300
+ )
301
+ }
302
+
303
+ break
304
+ default:
305
+ KeywordsList = [
306
+ 'title',
307
+ 'text_',
308
+ 'image_',
309
+ 'video_',
310
+ 'audio_',
311
+ 'link_',
312
+ 'hypertext_',
313
+ '$bvArgs'
314
+ ] // accepted keyword in value declaration for pop-up custom
315
+ }
316
+ //validate each key in value content
317
+
318
+ for (let key of Object.keys(data.value)) {
319
+ let expectedKey = key
320
+ // search if key match lists
321
+ if (key.includes('_') && !key.includes('cb_$'))
322
+ expectedKey = `${key.split('_')[0]}_`
323
+
324
+ //===============================================
325
+ const test = (regexp) => regexp.test(expectedKey) //defining the testing function
326
+
327
+ switch (true) {
328
+ case ![...KeywordsList].includes(expectedKey):
329
+ this.errors.push(
330
+ `Invalid attribute declaration 👉${key}👈 . Expected attributes are ${[...KeywordsList]}`
331
+ )
332
+ break
333
+
334
+ case test(/link/):
335
+ // Validating content of link element
336
+ if (!data.value[key].ref) {
337
+ this.errors.push('Missing ref for link')
338
+ }
339
+ break
340
+
341
+ case test(/image/):
342
+ // Validating content of link element
343
+ if (!data.value[key].path) {
344
+ this.errors.push('Missing path for image')
345
+ }
346
+ break
347
+
348
+ case test(/cb_\$/):
349
+ // validating content of cb_$ keys to be a function
350
+ if (data.value[key].constructor != Function)
351
+ this.errors.push(
352
+ `Invalid assignment for attribute 👉${expectedKey} popup. Must be a Function`
353
+ )
354
+ break
355
+
356
+ case test(/\$bvArgs/):
357
+ // validating content of cb_$ keys to be a function
358
+
359
+ if (data.value[key].constructor != Object)
360
+ this.errors.push(
361
+ `Invalid assignment for attribute 👉${expectedKey} popup. Must be an Object`
362
+ )
363
+
364
+ break
365
+
366
+ default: {
367
+ if (data.value[key].constructor != String) {
368
+ this.errors.push(
369
+ `Invalid assignment for attribute 👉${key} in popup. Must be a String`
370
+ )
371
+ }
372
+ }
373
+ }
374
+ }
375
+ } else this.errors.push('Invalid object declaration for value')
376
+ } else this.errors.push('Missing argument - value')
377
+
378
+ if (import.meta.env.DEV) {
379
+ for (const err of this.errors)
380
+ console.warn(
381
+ `%c WARNING!>>> POP-UP: ${err} `,
382
+ 'background: orange; color: white; display: block; border-radius:5px; margin:5px;'
383
+ )
384
+ }
385
+
386
+ if (!this.errors.length) {
387
+ if (data.type === 'popup-endActivity') {
388
+ const { title, ...filtered } = data.value
389
+ this.pContent = filtered
390
+ this.pTitle = title
391
+ } else {
392
+ const { title, $bvArgs, ...filtered } = data.value
393
+ this.pContent = filtered
394
+ this.pTitle = title
395
+ this.pArgs = $bvArgs // native VDialog props
396
+ }
397
+ this.pType = data.type
398
+ this.pName = data.name
399
+
400
+ console.log(this.pType)
401
+
402
+ if (this.pType == 'popup-endActivity')
403
+ this.updateEndPopUp(true) //This will handle the activation of the element in the portal
404
+ else this.updateEndPopUp(false) //This will handle the activation of the element in the portal
405
+ this.$open()
406
+ }
407
+ },
408
+
409
+ /**
410
+ * @description - method to open the popup
411
+ * @param {Function} cb
412
+ */
413
+ $open(cb) {
414
+ this.dialogue = true
415
+ },
416
+ /**
417
+ * @description - method to close the popup
418
+ * @param {Function} cb
419
+ */
420
+ $close(options, cb) {
421
+ if (this.pType === 'popup-endActivity') this.updateEndPopUp(false)
422
+ this.dialogue = false
423
+ }
424
+ }
425
+ }
426
+ </script>
427
+ <style lang="scss">
428
+ .v-overlay__scrim {
429
+ background: none !important;
430
+ }
431
+
432
+ .popup-info {
433
+ .v-overlay__content {
434
+ width: 565px !important;
435
+ padding: 16px 24px 24px 24px;
436
+ overflow: hidden;
437
+
438
+ .pop-outside {
439
+ .pop-header {
440
+ display: flex;
441
+ flex-direction: row;
442
+ justify-content: flex-end;
443
+ width: 100%;
444
+
445
+ #close-pop {
446
+ margin-right: 2px;
447
+ margin-top: 2px;
448
+ }
449
+ }
450
+ }
451
+ }
452
+ }
453
+
454
+ .popup-endActivity {
455
+ .v-overlay__content {
456
+ max-height: 277px !important;
457
+ margin: 0 !important;
458
+ width: 100% !important;
459
+ max-width: 100% !important;
460
+
461
+ .pop-outside {
462
+ display: flex;
463
+ flex-direction: column;
464
+ padding: 24px;
465
+
466
+ .pop-header {
467
+ display: flex;
468
+ justify-content: flex-end;
469
+ }
470
+ .pop-containt {
471
+ display: flex;
472
+ justify-content: center;
473
+
474
+ #popHeader {
475
+ //#hypertext_1_0 {
476
+ display: flex;
477
+ justify-content: center;
478
+ margin-bottom: 24px;
479
+ // }
480
+ }
481
+
482
+ .popup-bottom-buttons {
483
+ display: flex;
484
+ justify-content: center;
485
+
486
+ .btn {
487
+ &:first-child {
488
+ margin-right: 24px;
489
+ }
490
+ }
491
+ }
492
+ }
493
+ }
494
+ }
495
+ }
496
+
497
+ .popup-custom {
498
+ .v-overlay__content {
499
+ margin: 0 !important;
500
+ width: 100% !important;
501
+ }
502
+ }
503
+ </style>