@everymatrix/casino-footer-v2 0.0.358 → 0.0.359
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/dist/casino-footer-v2.js +40 -40
- package/dist/casino-footer-v2.js.map +1 -1
- package/index.html +20 -1
- package/package.json +2 -2
- package/src/CasinoFooterV2.svelte +90 -75
package/index.html
CHANGED
@@ -90,9 +90,28 @@
|
|
90
90
|
</div>
|
91
91
|
<h1 class="header__name"><span>WEBCOMPONENT:</span> casino-footer-v2</h1>
|
92
92
|
</header>
|
93
|
+
<casino-footer-v2
|
94
|
+
endpoint="https://bahcom-stage.everymatrix.com/apijson/en/footer-raw-data?env=stage"
|
95
|
+
userendpoint="https://betathome-de-stage-api.stage.norway.everymatrix.com/v1"
|
96
|
+
session="d919449f-5f5a-4c6f-92c2-29fb947c3f33"
|
97
|
+
userid="4229869"
|
98
|
+
env="local"
|
99
|
+
languageselectorenabled="true"
|
100
|
+
languagelist="de, en, sl, pl, hr, hu, it, sr, pt"
|
101
|
+
languagedisplaytype="name"
|
102
|
+
sessiontimerenabled="true"
|
103
|
+
panicbuttonenabled="true"
|
104
|
+
clockenabled="true"
|
105
|
+
clocksecondsenabled="true"
|
106
|
+
clockcustomformat="LTS"
|
107
|
+
lang="de"
|
108
|
+
></casino-footer-v2>
|
93
109
|
|
94
110
|
<casino-footer-v2
|
95
|
-
endpoint="https://bahcom-stage.everymatrix.com/apijson"
|
111
|
+
endpoint="https://bahcom-stage.everymatrix.com/apijson/en/footer-raw-data?env=stage"
|
112
|
+
userendpoint="https://betathome-de-stage-api.stage.norway.everymatrix.com/v1"
|
113
|
+
session="d919449f-5f5a-4c6f-92c2-29fb947c3f33"
|
114
|
+
userid="4229869"
|
96
115
|
lang="en"
|
97
116
|
env="stage"
|
98
117
|
clocktext="Time"
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@everymatrix/casino-footer-v2",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.359",
|
4
4
|
"main": "dist/casino-footer-v2.js",
|
5
5
|
"svelte": "src/index.ts",
|
6
6
|
"scripts": {
|
@@ -36,5 +36,5 @@
|
|
36
36
|
"publishConfig": {
|
37
37
|
"access": "public"
|
38
38
|
},
|
39
|
-
"gitHead": "
|
39
|
+
"gitHead": "42c2b777ac00a1d72d7ceb43a0b9029e0b024180"
|
40
40
|
}
|
@@ -4,6 +4,7 @@
|
|
4
4
|
import '@everymatrix/casino-footer-section';
|
5
5
|
import '@everymatrix/panic-button';
|
6
6
|
|
7
|
+
import { onMount } from 'svelte';
|
7
8
|
import moment from 'moment';
|
8
9
|
import { checkSession } from 'rvhelper';
|
9
10
|
import { _, addNewMessages, setLocale } from './i18n';
|
@@ -30,7 +31,7 @@
|
|
30
31
|
export let userendpoint:string = '';
|
31
32
|
export let panicbuttonenabled:string = 'true';
|
32
33
|
export let sessiontimerenabled = 'true'; // 'true' to enable, anything to disable
|
33
|
-
|
34
|
+
|
34
35
|
let gameVendorsLinksTitle:string = '';
|
35
36
|
let gameVendorsRepeater:Array<Object> = [];
|
36
37
|
let paymentLinksTitle:string = '';
|
@@ -68,54 +69,56 @@
|
|
68
69
|
let languagePackLoaded:boolean = false;
|
69
70
|
|
70
71
|
let timeString:string = '';
|
72
|
+
let clockInterval:any;
|
73
|
+
let timerInterval:any;
|
71
74
|
|
72
75
|
let customStylingContainer:HTMLElement;
|
73
76
|
|
74
77
|
Object.keys(CasinoFooterTranslations).forEach((item:any) => {
|
75
78
|
addNewMessages(item, CasinoFooterTranslations[item]);
|
76
79
|
});
|
77
|
-
|
80
|
+
|
78
81
|
// needed for session timer
|
79
82
|
const setSession = ():void => {
|
80
83
|
checkSession(userendpoint, session).then((res:any) => {
|
81
84
|
sessionID = res.Guid;
|
82
85
|
playerID = res.UserID;
|
83
86
|
isLoggedIn = true;
|
87
|
+
setSessionTimer(res);
|
84
88
|
}, (err:any) => {
|
85
89
|
isLoggedIn = false;
|
86
90
|
console.error('Error while checking the session - ', err)
|
87
91
|
});
|
88
92
|
}
|
89
93
|
|
90
|
-
const setSessionTimer = ():void => {
|
94
|
+
const setSessionTimer = (sessionData):void => {
|
91
95
|
// using Date instead of moment because they recommend in their docs to stop using it for new projects
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
let milisecondDifference = currentTime.getTime() - loginTime.getTime();
|
96
|
+
const loginTime = new Date(sessionData.Login);
|
97
|
+
const timezoneOffsetHours = new Date().getTimezoneOffset() / 60;
|
98
|
+
let currentTime = new Date();
|
99
|
+
let milisecondDifference = currentTime.getTime() - loginTime.getTime();
|
97
100
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
+
let hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
|
102
|
+
let minutes = Math.floor(milisecondDifference % 3600000 / 60000);
|
103
|
+
let seconds = Math.floor(milisecondDifference % 60000 / 1000);
|
101
104
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
105
|
+
timerInterval = setInterval(() => {
|
106
|
+
hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
|
107
|
+
minutes = Math.floor(milisecondDifference % 3600000 / 60000);
|
108
|
+
seconds = Math.floor(milisecondDifference % 60000 / 1000);
|
106
109
|
|
107
|
-
|
110
|
+
timeString = `${hours > 9 ? hours : '0' + hours}:${minutes > 9 ? minutes : '0' + minutes}:${seconds > 9 ? seconds : '0' + seconds}`;
|
108
111
|
|
109
|
-
|
110
|
-
|
112
|
+
milisecondDifference += 1000;
|
113
|
+
}, 1000);
|
111
114
|
}
|
112
115
|
|
113
116
|
const refreshClock = ():void => {
|
114
|
-
setInterval(() => {
|
117
|
+
clockInterval = setInterval(() => {
|
115
118
|
clockDisplay();
|
116
|
-
}, refreshRate);
|
119
|
+
}, refreshRate);
|
117
120
|
}
|
118
|
-
|
121
|
+
|
119
122
|
const clockDisplay = ():void => {
|
120
123
|
const format = clockcustomformat != 'false' ? clockcustomformat : `hh:mm${clocksecondsenabled === "true" ? ':ss' : ''} (UTC Z)`;
|
121
124
|
time = moment().format(format);
|
@@ -134,20 +137,20 @@
|
|
134
137
|
let licenseHeadScriptSrc,
|
135
138
|
licenseScriptBody,
|
136
139
|
licenseEvent;
|
137
|
-
({
|
138
|
-
gameVendorsLinksTitle,
|
139
|
-
gameVendorsRepeater,
|
140
|
-
paymentLinksTitle,
|
141
|
-
paymentMethodsRepeater,
|
142
|
-
sponsorsLinksTitle,
|
143
|
-
sponsorsRepeater,
|
144
|
-
helpLinksTitle,
|
145
|
-
helpLinksRepeater,
|
146
|
-
licensesLinksTitle,
|
147
|
-
licensesRepeater,
|
148
|
-
socialLinksTitle,
|
149
|
-
socialLinksRepeater,
|
150
|
-
copyright,
|
140
|
+
({
|
141
|
+
gameVendorsLinksTitle,
|
142
|
+
gameVendorsRepeater,
|
143
|
+
paymentLinksTitle,
|
144
|
+
paymentMethodsRepeater,
|
145
|
+
sponsorsLinksTitle,
|
146
|
+
sponsorsRepeater,
|
147
|
+
helpLinksTitle,
|
148
|
+
helpLinksRepeater,
|
149
|
+
licensesLinksTitle,
|
150
|
+
licensesRepeater,
|
151
|
+
socialLinksTitle,
|
152
|
+
socialLinksRepeater,
|
153
|
+
copyright,
|
151
154
|
licenseDesc,
|
152
155
|
licenseHeadScriptSrc,
|
153
156
|
licenseScriptBody,
|
@@ -155,29 +158,29 @@
|
|
155
158
|
language : languages
|
156
159
|
} = receivedFooterData);
|
157
160
|
|
158
|
-
if (languages) {
|
161
|
+
if (languages) {
|
159
162
|
languagePackLoaded = true;
|
160
163
|
updateLanguageDisplayName();
|
161
164
|
}
|
162
|
-
|
165
|
+
|
163
166
|
if (licenseHeadScriptSrc?.length > 0) {
|
164
167
|
headScript = true;
|
165
168
|
licenseScriptSrc = licenseHeadScriptSrc;
|
166
169
|
}
|
167
|
-
|
170
|
+
|
168
171
|
if (licenseScriptBody?.length > 0) {
|
169
172
|
licenseScript = licenseScriptBody;
|
170
173
|
}
|
171
174
|
|
172
175
|
window.postMessage({ type: licenseEvent }, window.location.href);
|
173
176
|
|
174
|
-
window.postMessage({
|
175
|
-
type: 'FooterData',
|
176
|
-
gameVendorsRepeater,
|
177
|
-
paymentMethodsRepeater,
|
178
|
-
sponsorsRepeater,
|
179
|
-
helpLinksRepeater,
|
180
|
-
licensesRepeater,
|
177
|
+
window.postMessage({
|
178
|
+
type: 'FooterData',
|
179
|
+
gameVendorsRepeater,
|
180
|
+
paymentMethodsRepeater,
|
181
|
+
sponsorsRepeater,
|
182
|
+
helpLinksRepeater,
|
183
|
+
licensesRepeater,
|
181
184
|
socialLinksRepeater
|
182
185
|
}, window.location.href);
|
183
186
|
}).catch((err:any) => {
|
@@ -224,12 +227,15 @@
|
|
224
227
|
const toggleLanguageDrawer = ():void => {
|
225
228
|
languageDrawer.classList.toggle('hidden');
|
226
229
|
}
|
227
|
-
|
228
|
-
const overlayOptionTrigger = (e):void => {
|
230
|
+
|
231
|
+
const overlayOptionTrigger = (e:any):void => {
|
229
232
|
let option = e.target.closest('.overlayLanguageOption');
|
233
|
+
|
230
234
|
selectedLanguage = option.getAttribute('data-lang');
|
235
|
+
|
231
236
|
changeLanguage();
|
232
237
|
updateLanguageDisplayName();
|
238
|
+
|
233
239
|
languageDrawer.classList.toggle('hidden');
|
234
240
|
};
|
235
241
|
|
@@ -238,9 +244,11 @@
|
|
238
244
|
|
239
245
|
languages.forEach((l:any, i:number) => {
|
240
246
|
if (l.code == selectedLanguage.toLowerCase()) {
|
241
|
-
matchFound = true;
|
242
247
|
let langName:string = '';
|
248
|
+
|
249
|
+
matchFound = true;
|
243
250
|
currentLanguageFlag = l.flag_icon_editable;
|
251
|
+
|
244
252
|
switch (languagedisplaytype) {
|
245
253
|
case 'name':
|
246
254
|
langName = l.name;
|
@@ -254,6 +262,7 @@
|
|
254
262
|
langName = l.code;
|
255
263
|
break;
|
256
264
|
}
|
265
|
+
|
257
266
|
languageDisplayName = langName;
|
258
267
|
}
|
259
268
|
});
|
@@ -268,14 +277,20 @@
|
|
268
277
|
languagesArray = languagesArray.map((language:string) => language.toUpperCase());
|
269
278
|
}
|
270
279
|
|
280
|
+
onMount(() => {
|
281
|
+
return () => {
|
282
|
+
clearInterval(clockInterval);
|
283
|
+
clearInterval(timerInterval)
|
284
|
+
};
|
285
|
+
});
|
286
|
+
|
271
287
|
$: lang && setLocale(lang);
|
272
288
|
$: languageslist && setLanguagesArray();
|
273
|
-
$: session && userid &&
|
274
|
-
$: isLoggedIn && lang && setSessionTimer();
|
289
|
+
$: session && userid && userendpoint && setSession();
|
275
290
|
$: endpoint && lang && env && getCmsData();
|
276
291
|
$: clockenabled !== 'false' && clocksecondsenabled && clockcustomformat && clockDisplay();
|
277
292
|
$: clockenabled !== 'false' && clocksecondsenabled && (refreshRate = clocksecondsenabled == "true" ? 1000 : 60000) && refreshClock();
|
278
|
-
$: lang && (selectedLanguage = lang) && languages && (languages.length > 0) && updateLanguageDisplayName();
|
293
|
+
$: lang && (selectedLanguage = lang) && languages && (languages.length > 0) && updateLanguageDisplayName();
|
279
294
|
$: clientstyling && setClientStyling();
|
280
295
|
$: clientstylingurl && setClientStylingURL();
|
281
296
|
|
@@ -317,7 +332,7 @@
|
|
317
332
|
</div>
|
318
333
|
</div>
|
319
334
|
{/if}
|
320
|
-
<!-- end vendors section -->
|
335
|
+
<!-- end vendors section -->
|
321
336
|
<!-- start payments section -->
|
322
337
|
{#if paymentMethodsRepeater}
|
323
338
|
<div class="GridRow">
|
@@ -330,10 +345,10 @@
|
|
330
345
|
</div>
|
331
346
|
{/if}
|
332
347
|
<!-- end payments section -->
|
333
|
-
|
348
|
+
|
334
349
|
<!-- start panic button -->
|
335
|
-
{#if panicbuttonenabled === "true"}
|
336
|
-
<panic-button
|
350
|
+
{#if panicbuttonenabled === "true" && isLoggedIn}
|
351
|
+
<panic-button
|
337
352
|
customtext = "Hold the button for 3 seconds to take 24 hours instant lock"
|
338
353
|
alternativestyling="true"
|
339
354
|
{lang}
|
@@ -353,7 +368,7 @@
|
|
353
368
|
<!-- start detailed licenses section -->
|
354
369
|
<div class="LicenseDesc">
|
355
370
|
{#if licenseDesc}
|
356
|
-
<div class="DetailedLicenses" use:setContent={licenseDesc}></div>
|
371
|
+
<div class="DetailedLicenses" use:setContent={licenseDesc}></div>
|
357
372
|
<div class="DetailedCustomLicenses" use:setContent={licenseScript}></div>
|
358
373
|
<div>
|
359
374
|
<!-- start clock section -->
|
@@ -365,8 +380,8 @@
|
|
365
380
|
{/if}
|
366
381
|
<!-- end clock section -->
|
367
382
|
<!-- start session timer section -->
|
368
|
-
|
369
|
-
{#if sessiontimerenabled
|
383
|
+
|
384
|
+
{#if sessiontimerenabled}
|
370
385
|
<div class="sessionTimerContainer">
|
371
386
|
<span class="SessionText">{$_('casinoFooter.sessionTimer')} {timeString}</span>
|
372
387
|
</div>
|
@@ -379,7 +394,7 @@
|
|
379
394
|
</div>
|
380
395
|
{/if}
|
381
396
|
<!-- end license section -->
|
382
|
-
|
397
|
+
|
383
398
|
<!-- start sponsors section -->
|
384
399
|
{#if sponsorsRepeater}
|
385
400
|
<div class="GridRow">
|
@@ -394,7 +409,7 @@
|
|
394
409
|
</div>
|
395
410
|
{/if}
|
396
411
|
<!-- end sponsors section -->
|
397
|
-
|
412
|
+
|
398
413
|
<!-- start social section -->
|
399
414
|
{#if socialLinksRepeater}
|
400
415
|
<div class="GridRow">
|
@@ -405,18 +420,18 @@
|
|
405
420
|
</div>
|
406
421
|
{/if}
|
407
422
|
<!-- end social section -->
|
408
|
-
|
423
|
+
|
409
424
|
<!-- start language selector -->
|
410
|
-
{#if (languageselectorenabled==="true" && languagePackLoaded && selectedLanguage)}
|
425
|
+
{#if (languageselectorenabled==="true" && languagePackLoaded && selectedLanguage)}
|
411
426
|
<div class="GridRow">
|
412
|
-
<div class="languageSelectorContainer">
|
427
|
+
<div class="languageSelectorContainer">
|
413
428
|
<!-- traditional dropdown option for screenreader users. Works the same way as the old language selector. Display: none -->
|
414
|
-
<select bind:value={selectedLanguage} class="Item ItemLanguage" on:change={()=>changeLanguage()}>
|
415
|
-
{#each languagesArray as operatorLanguage}
|
416
|
-
<option value={operatorLanguage} selected>{operatorLanguage}</option>
|
417
|
-
{/each}
|
418
|
-
</select>
|
419
|
-
|
429
|
+
<select bind:value={selectedLanguage} class="Item ItemLanguage" on:change={()=>changeLanguage()}>
|
430
|
+
{#each languagesArray as operatorLanguage}
|
431
|
+
<option value={operatorLanguage} selected>{operatorLanguage}</option>
|
432
|
+
{/each}
|
433
|
+
</select>
|
434
|
+
|
420
435
|
<!-- Custom dropdown in order to be able to display country flags -->
|
421
436
|
<div class="languageSelectorOverlay">
|
422
437
|
<button class="drawerButton" value="{selectedLanguage}" on:click={toggleLanguageDrawer}><img class="languageFlag" src={currentLanguageFlag}>{languageDisplayName}
|
@@ -433,16 +448,16 @@
|
|
433
448
|
</div>
|
434
449
|
</div>
|
435
450
|
</div>
|
436
|
-
</div>
|
451
|
+
</div>
|
437
452
|
{/if}
|
438
453
|
<!-- end language selector -->
|
439
|
-
|
454
|
+
|
440
455
|
{#if copyright}
|
441
456
|
<!-- start copyright section -->
|
442
457
|
<div class="CopyrightAreaRights CopyrightArea" use:setContent={copyright}></div>
|
443
458
|
<!-- end copyright section -->
|
444
459
|
{/if}
|
445
|
-
|
460
|
+
|
446
461
|
</div>
|
447
462
|
</div>
|
448
463
|
{/if}
|
@@ -466,7 +481,7 @@
|
|
466
481
|
position: relative;
|
467
482
|
}
|
468
483
|
|
469
|
-
.FooterSide {
|
484
|
+
.FooterSide {
|
470
485
|
display: flex;
|
471
486
|
flex-direction: column;
|
472
487
|
position: absolute;
|
@@ -515,7 +530,7 @@
|
|
515
530
|
.DetailedLicenses {
|
516
531
|
font-size: 10px;
|
517
532
|
color: var(--emfe-w-color-gray-150, #828282);
|
518
|
-
|
533
|
+
|
519
534
|
div {
|
520
535
|
text-align: left;
|
521
536
|
white-space: pre-line;
|
@@ -608,7 +623,7 @@
|
|
608
623
|
top: 30px;
|
609
624
|
padding: 6px 0;
|
610
625
|
left: 3.9px;
|
611
|
-
|
626
|
+
|
612
627
|
&.hidden {
|
613
628
|
display: none;
|
614
629
|
}
|