@everymatrix/casino-header-controller 1.44.0 → 1.45.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.
@@ -1,1234 +0,0 @@
1
- <svelte:options tag={null} />
2
-
3
- <script lang="ts">
4
- import { onMount } from "svelte";
5
- import { isMobile, getDevice } from 'rvhelper';
6
- import { _, addNewMessages, setLocale, setupI18n } from './i18n';
7
- import { TRANSLATIONS } from './translations';
8
-
9
- import '@everymatrix/casino-slider';
10
- import '@everymatrix/casino-hamburger-menu';
11
- import '@everymatrix/player-account-balance-modal';
12
- import '@everymatrix/player-deposit';
13
-
14
- import everymatrixLogo from './images/everymatrix-logo-white.png';
15
-
16
- export let session:string = '';
17
- export let userid:string = '';
18
- export let endpoint:string = '';
19
- export let cmsendpoint:string = '';
20
- export let cmsenv:string = 'stage';
21
- export let lang:string = 'en';
22
- export let languageslist:string = 'en, ro';
23
- export let activecategory:string = '';
24
- export let translationurl:string = '';
25
- export let customlocaleidentifier:string = '';
26
- export let gmversion:string = '';
27
- export let countryflagheader:string = 'false';
28
- export let displaybalanceoption:string = 'All';
29
- export let countryflaghamburger:string = 'false';
30
- export let hasdefaultamount:string = '';
31
- export let playercurrency: string ='';
32
-
33
- //short cashier
34
- export let shortcashierenabled:string = '';
35
- export let producttype:string = '';
36
- export let successurl:string = '';
37
- export let failurl:string = '';
38
- export let cancelurl:string = '';
39
- export let sportsurl:string = '';
40
- export let casinourl:string = '';
41
- export let contacturl:string = '';
42
- export let homeurl:string = '';
43
- export let depositurl:string = '';
44
-
45
- export let actionevent:string = '';
46
-
47
- export let userroles:string = '';
48
- export let showsubgroups:string = 'false';
49
- export let clientstyling:string = '';
50
- export let clientstylingurl:string = '';
51
-
52
- export let currencyseparator:string = '';
53
- export let currencydecimal:string = '';
54
- export let currencyprecision:string = '';
55
- export let totalcalculationmode = '';
56
-
57
-
58
- let primaryActiveIndex:string;
59
- let secondaryActiveIndex:string;
60
- let identity:string = "HeaderMenu";
61
- let customStylingContainer:HTMLElement;
62
-
63
- setupI18n({ withLocale: 'en', translations: {}});
64
-
65
- const setTranslationUrl = ():void => {
66
- let url:string = translationurl;
67
-
68
- fetch(url).then((res:any) => res.json())
69
- .then((res) => {
70
- Object.keys(res).forEach((item:any):void => {
71
- addNewMessages(item, res[item]);
72
- });
73
- }).catch((err:any) => {
74
- console.log(err);
75
- });
76
- }
77
-
78
- Object.keys(TRANSLATIONS).forEach((item:any) => {
79
- addNewMessages(item, TRANSLATIONS[item]);
80
- });
81
-
82
- const genericIcon:string = `<svg version="1.1" fill="#fff" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="width: 30px; color: #fff;" x="0px" y="0px"
83
- viewBox="0 0 384.971 384.971" style="enable-background:new 0 0 384.971 384.971;" xml:space="preserve">
84
- <path style="color: var(--emfe-w-color-white, #FFFFFF)" d="M180.455,360.91H24.061V24.061h156.394c6.641,0,12.03-5.39,12.03-12.03s-5.39-12.03-12.03-12.03H12.03
85
- C5.39,0.001,0,5.39,0,12.031V372.94c0,6.641,5.39,12.03,12.03,12.03h168.424c6.641,0,12.03-5.39,12.03-12.03
86
- C192.485,366.299,187.095,360.91,180.455,360.91z"/>
87
- <path style="color: var(--emfe-w-color-white, #FFFFFF)" d="M381.481,184.088l-83.009-84.2c-4.704-4.752-12.319-4.74-17.011,0c-4.704,4.74-4.704,12.439,0,17.179l62.558,63.46H96.279
88
- c-6.641,0-12.03,5.438-12.03,12.151c0,6.713,5.39,12.151,12.03,12.151h247.74l-62.558,63.46c-4.704,4.752-4.704,12.439,0,17.179
89
- c4.704,4.752,12.319,4.752,17.011,0l82.997-84.2C386.113,196.588,386.161,188.756,381.481,184.088z"/>
90
- </svg>`;
91
-
92
- let mainMenuArray:Array<any> = [];
93
- let secondaryMenuArray:Array<any> = [];
94
- let selectedLanguage:string = '';
95
- let hamburgerURL:URL;
96
- let headerURL:URL;
97
- let logoURL:URL;
98
- let isLoading:boolean = true;
99
- let logoFromCms:boolean = false;
100
-
101
- let isOptionsListVisible:boolean = false;
102
- let mobileView:boolean = false;
103
- let userAgent:string = window.navigator.userAgent;
104
- let isLoggedIn:boolean = false;
105
- let playerID:string = '';
106
- let sessionID:string = '';
107
- let loginActive:boolean = true;
108
- let language:string = '';
109
- let languagesArray:Array<string> = [];
110
- let hamburgerMenuActive:boolean = false;
111
- let logoPath:string = '';
112
- let shortCashierActivated:boolean = false;
113
-
114
- const menuAction = (data: any) => {
115
- switch (data) {
116
- case 'login':
117
- loginActive = true;
118
- window.postMessage({type: 'OpenLoginRegisterModal', transition: 'Login' }, window.location.href);
119
-
120
- //Analytics event
121
- if (typeof gtag == 'function'){
122
- gtag('event', 'OpenLoginModal', {
123
- 'context': 'HeaderController'
124
- });
125
- }
126
- break;
127
-
128
- case 'register':
129
- loginActive = false;
130
- window.postMessage({type: 'OpenLoginRegisterModal', transition: 'Register'}, window.location.href);
131
-
132
- //Analytics event
133
- if (typeof gtag == 'function'){
134
- gtag('event', 'OpenRegisterModal', {
135
- 'context': 'HeaderController'
136
- });
137
- }
138
- break;
139
-
140
- case 'lobby':
141
- window.postMessage({type: 'GoToHomepage'}, window.location.href);
142
- break;
143
-
144
- case 'myaccount':
145
- window.postMessage({type: 'PlayerAccountMenuActive', isMobile: isMobile(userAgent)}, window.location.href);
146
- break;
147
-
148
- case 'deposit':
149
- if (isShortCashierEnabled) {
150
- shortCashierActivated = true;
151
- window.postMessage({ type: 'DisableScroll' }, window.location.href);
152
- } else {
153
- window.postMessage({type: 'GoToDeposit'}, window.location.href);
154
- }
155
-
156
- //Analytics event
157
- if (typeof gtag == 'function'){
158
- gtag('event', 'GoToDeposit', {
159
- 'context': 'HeaderController'
160
- });
161
- }
162
- break;
163
-
164
- case 'language':
165
- window.postMessage({type: 'LanguageChanged', selectedLanguage}, window.location.href);
166
- break;
167
- }
168
- }
169
-
170
- const toggleMenu = () => {
171
- hamburgerMenuActive = true;
172
- window.postMessage({type: 'OpenHamburgerMenuModal'}, window.location.href);
173
- }
174
-
175
- const messageHandler = (e: any) => {
176
- if (e.data) {
177
- switch (e.data.type) {
178
- case 'UserSessionID':
179
- playerID = e.data.userid;
180
- sessionID = e.data.session;
181
- isLoggedIn = true;
182
- break;
183
-
184
- case 'CloseHamburgerMenu':
185
- window.postMessage({ type: 'EnableScroll'}, window.location.href);
186
- if (e.data.showhamburger) {
187
- hamburgerMenuActive = false;
188
- }
189
- break;
190
-
191
- case 'LogoutSuccessfull':
192
- isLoggedIn = false;
193
- break;
194
-
195
- case 'LanguageChanged':
196
- createCMSUrls();
197
- getHeaderMenusData(headerURL);
198
- break;
199
-
200
- case 'OpenShortCashier':
201
- menuAction('deposit');
202
- break;
203
-
204
- case 'CloseShortCashier':
205
- closeShortCashier();
206
- break;
207
-
208
- case 'RequestHeaderHeight':
209
- window.postMessage({ type: 'HeaderHeight', headerHeight: customStylingContainer.clientHeight }, window.location.href);
210
- break;
211
- }
212
- }
213
- }
214
-
215
- const setSession = () => {
216
- isLoggedIn = true;
217
- sessionID = session;
218
- }
219
-
220
- const closeShortCashier = (event?) => {
221
- shortCashierActivated = false;
222
- window.postMessage({ type: 'EnableScroll' }, window.location.href);
223
- event?.stopPropagation();
224
- }
225
-
226
- const createCMSUrls = () => {
227
- headerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/menu`)
228
- hamburgerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/hamburger-menu`);
229
- logoURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/op-options/style`);
230
-
231
- let device = getDevice(userAgent)
232
-
233
- headerURL.searchParams.append('env', cmsenv);
234
- headerURL.searchParams.append('language', selectedLanguage.toLowerCase());
235
- //headerURL.searchParams.append('platform', 'dk');
236
- headerURL.searchParams.append('userRoles', userroles);
237
-
238
- if (device) {
239
- if (device === 'PC'){
240
- hamburgerURL.searchParams.append('device', 'dk');
241
- headerURL.searchParams.append('device', 'dk');
242
- } else if (device === 'iPad' || device === 'iPhone') {
243
- hamburgerURL.searchParams.append('device', 'mtWeb'); // replace with ios when we will have a native ios up for this
244
- headerURL.searchParams.append('device', 'mtWeb'); // replace with ios when we will have a native ios up for this
245
- } else {
246
- hamburgerURL.searchParams.append('device', 'mtWeb');
247
- headerURL.searchParams.append('device', 'mtWeb');
248
- }
249
- }
250
- hamburgerURL.searchParams.append('env', cmsenv);
251
- hamburgerURL.searchParams.append('language', selectedLanguage.toLowerCase());
252
- //hamburgerURL.searchParams.append('platform', 'dk');
253
- hamburgerURL.searchParams.append('userRoles', userroles);
254
-
255
- }
256
-
257
- const setActiveLanguage = ():void => {
258
- setLocale(lang);
259
- }
260
-
261
- const initialLoad = ():void => {
262
- languagesArray = languageslist.replace(/ /g,'').split(',');
263
- languagesArray = languagesArray.map((language:string) => language.toUpperCase());
264
-
265
- selectedLanguage = lang.toUpperCase();
266
- createCMSUrls();
267
-
268
- getLogo(logoURL);
269
- // getHeaderMenusData need to execute after the initialLoad receives the current lang value
270
- setTimeout(() => {
271
- getHeaderMenusData(headerURL);
272
- })
273
- }
274
-
275
- const initializeMenu = ():void => {
276
- primaryActiveIndex = setActiveIndex(activecategory, mainMenuArray);
277
- secondaryActiveIndex = setActiveIndex(activecategory, secondaryMenuArray);
278
- }
279
-
280
- const setActiveIndex = (activecategory, menuList) => {
281
- let result = menuList.find(item => {
282
- if (activecategory.indexOf('/sport') > -1) {
283
- return item.path.indexOf(activecategory) > -1;
284
- } else {
285
- if (item.path.includes(activecategory)) {
286
- return true;
287
- }
288
- }
289
- });
290
-
291
- if (!result) {
292
- result = menuList.find(item => {
293
- return item.path.split('/').indexOf(activecategory.split('/')[1]) > -1;
294
- });
295
- }
296
-
297
- if (result) {
298
- return result.id;
299
- } else {
300
- return -1;
301
- }
302
- }
303
-
304
- const sendSliderData = ():void => {
305
- window.postMessage({ type: 'SliderData', identity, data: mainMenuArray }, window.location.href);
306
- }
307
-
308
- const getHeaderMenusData = (url:any):Promise<any> => {
309
- isLoading = true;
310
-
311
- return new Promise((resolve, reject) => {
312
- fetch(url)
313
- .then((res: any) => res.json())
314
- .then((data: any) => {
315
- mainMenuArray = data.desktop.primary;
316
- secondaryMenuArray = data.desktop.secondary;
317
- isLoading = false;
318
-
319
- resolve(data);
320
- }, (err: any) => {
321
- isLoading = false;
322
- console.error(err);
323
- reject(err);
324
- });
325
- });
326
- }
327
-
328
- const getLogo = (url:any):Promise<any> => {
329
- logoFromCms = false;
330
-
331
- return new Promise((resolve, reject) => {
332
- fetch(url)
333
- .then((res: any) => res.json())
334
- .then((data: any) => {
335
- if (data.logoUrl.length > 0 && (data.logoUrl != "null" || data.logoUrl != "false")) {
336
- logoPath = data.logoUrl;
337
- logoFromCms = true;
338
- } else {
339
- logoFromCms = false;
340
- }
341
- resolve(data);
342
- }, (err: any) => {
343
- logoFromCms = false;
344
- console.error(err);
345
- reject(err);
346
- });
347
- });
348
- }
349
-
350
- const navigationTrigger = (itemData:any) => {
351
- window.postMessage({ type: 'NavigateTo', itemId: itemData.id, item: itemData, path: itemData.path, externalLink: itemData.externalLink || false, target: itemData.attrs?.target || null }, window.location.href);
352
- }
353
-
354
- const selectLanguage = (operatorLanguage:string): void => {
355
- selectedLanguage = operatorLanguage;
356
- isOptionsListVisible = false;
357
- menuAction('language');
358
- }
359
-
360
- const toggleLanguageDropdown = (): void => {
361
- isOptionsListVisible = !isOptionsListVisible;
362
- }
363
-
364
- const determineFlag = (selectedLanguage: string): string => {
365
- if (customlocaleidentifier) {
366
- selectedLanguage =
367
- customlocaleidentifier.includes(selectedLanguage.toLowerCase()) ?
368
- customlocaleidentifier.slice(-2) :
369
- selectedLanguage;
370
- }
371
-
372
- return selectedLanguage == 'EN' ? 'US' : selectedLanguage.toUpperCase();
373
- }
374
-
375
- const setClientStyling = ():void => {
376
- let sheet = document.createElement('style');
377
- sheet.innerHTML = clientstyling;
378
- customStylingContainer.appendChild(sheet);
379
- }
380
-
381
- const setClientStylingURL = ():void => {
382
- let url:URL = new URL(clientstylingurl);
383
- let cssFile:HTMLElement = document.createElement('style');
384
-
385
- fetch(url.href)
386
- .then((res:any) => res.text())
387
- .then((data:any) => {
388
- cssFile.innerHTML = data
389
-
390
- setTimeout(() => { customStylingContainer.appendChild(cssFile) }, 1);
391
- });
392
- }
393
-
394
- onMount(async () => {
395
- window.addEventListener('message', messageHandler, false);
396
-
397
- if (isMobile(userAgent)) {
398
- mobileView = true;
399
- }
400
-
401
- return () => {
402
- window.removeEventListener('message', messageHandler);
403
- }
404
- });
405
-
406
- $: activecategory && !isLoading && initializeMenu();
407
- $: session && setSession();
408
- $: isShortCashierEnabled = shortcashierenabled.toLocaleLowerCase() === 'true';
409
- $: lang && setActiveLanguage();
410
- $: cmsendpoint && lang && languageslist && userroles && initialLoad();
411
- $: translationurl && setTranslationUrl();
412
- $: clientstyling && customStylingContainer && setClientStyling();
413
- $: clientstylingurl && customStylingContainer && setClientStylingURL();
414
- </script>
415
-
416
- <svelte:head>
417
- <script type="module" src="https://unpkg.com/@everymatrix/user-deposit-withdrawal"></script>
418
- </svelte:head>
419
-
420
- {#if isLoggedIn}
421
- {#if mobileView}
422
- <header class="HeaderWrapper HeaderMobileWrapper" bind:this={customStylingContainer}>
423
- <div class="HeaderContainer">
424
- <div class="HeaderMobileMainNav">
425
- {#if !hamburgerMenuActive}
426
- <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
427
- viewBox="0 0 22 16">
428
- <defs>
429
- <style>.a {
430
- fill: var(--emfe-w-color-white, #FFFFFF);
431
- }
432
- </style>
433
- </defs>
434
- <g transform="translate(-14 -13)">
435
- <rect class="a" width="18" height="2" transform="translate(14 13)"/>
436
- <rect class="a" width="22" height="2" transform="translate(14 20)"/>
437
- <rect class="a" width="22" height="2" transform="translate(14 27)"/>
438
- </g>
439
- </svg>
440
- {/if}
441
- </div>
442
- <div class="HeaderBranding" on:click={()=>menuAction('lobby')}>
443
- {#if logoFromCms}
444
- <img src={logoPath} alt="Logo">
445
- {:else}
446
- <img src={everymatrixLogo} alt="Logo">
447
- {/if}
448
- </div>
449
-
450
- <div class="HeaderTopActions" part="HeaderTopActions">
451
- <div class="HeaderItemsMenu PrimaryMenu" part="HeaderItemsMenu PrimaryMenu">
452
- <player-account-balance-modal {session} {userid} {endpoint} {lang} {clientstyling} {clientstylingurl} {customlocaleidentifier} {gmversion} {displaybalanceoption} {totalcalculationmode} {currencyseparator} {currencydecimal} {currencyprecision} />
453
- <div>
454
- <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={() => menuAction('deposit')}>{$_('deposit')}</div>
455
- {#if shortCashierActivated}
456
- <div class="ShortCashierWindow" on:click={(event) => closeShortCashier(event)}></div>
457
- <div class="ShortCashierContainerWrapperMobile">
458
- <div class="ShortCashierContainerMobile">
459
- <div class="ClosePopUpButtonShortCashier" on:click={(event) => closeShortCashier(event)}>
460
- <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg">
461
- <line x1="2" y1="2" x2="18" y2="18" stroke="black" stroke-width="2"/>
462
- <line x1="18" y1="2" x2="2" y2="18" stroke="black" stroke-width="2"/>
463
- </svg>
464
- </div>
465
- {#if gmversion === 'gmcore'}
466
- <player-deposit
467
- {endpoint}
468
- {session}
469
- playerid={userid}
470
- {lang}
471
- {hasdefaultamount}
472
- {playercurrency}
473
- {shortcashierenabled}
474
- {clientstyling}
475
- {clientstylingurl}
476
- ></player-deposit>
477
- {:else}
478
- <user-deposit-withdrawal
479
- {endpoint}
480
- type="deposit"
481
- channel="Mobile"
482
- language={lang}
483
- is-short-cashier={shortcashierenabled}
484
- product-type={producttype}
485
- user-id={userid}
486
- {session}
487
- success-url={'https://' + window.location.hostname + '/' + lang + successurl}
488
- cancel-url={'https://' + window.location.hostname + '/' + lang + cancelurl}
489
- fail-url={'https://' + window.location.hostname + '/' + lang + failurl}
490
- sports-url={'https://' + window.location.hostname + '/' + lang + sportsurl}
491
- casino-url={'https://' + window.location.hostname + '/' + lang + casinourl}
492
- contact-url={'https://' + window.location.hostname + '/' + lang + contacturl}
493
- home-url={'https://' + window.location.hostname + '/' + lang + homeurl}
494
- deposit-url={'https://' + window.location.hostname + '/' + lang + depositurl}
495
- client-styling={clientstyling}
496
- client-styling-url={clientstylingurl}
497
- ></user-deposit-withdrawal>
498
- {/if}
499
- </div>
500
- </div>
501
- {/if}
502
- </div>
503
- <div class="Item ItemAccount" part="Item ItemAccount" on:click={() => menuAction('myaccount')}>
504
- <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
505
- <defs>
506
- <style>.a {
507
- fill: var(--emfe-w-color-white, #FFFFFF);
508
- }
509
- </style>
510
- </defs>
511
- <g transform="translate(-8 -4)">
512
- <path class="a"
513
- d="M15.5,4a3.75,3.75,0,1,0,3.75,3.75A3.761,3.761,0,0,0,15.5,4Zm0,1.429A2.321,2.321,0,1,1,13.179,7.75,2.311,2.311,0,0,1,15.5,5.429Zm0,6.429A7.7,7.7,0,0,0,8,19.714a.714.714,0,0,0,.714.714H22.286A.714.714,0,0,0,23,19.714,7.7,7.7,0,0,0,15.5,11.857Zm0,1.429A6.18,6.18,0,0,1,21.5,19H9.5A6.18,6.18,0,0,1,15.5,13.286Z"
514
- transform="translate(0 0)"/>
515
- </g>
516
- </svg>
517
- </div>
518
- </div>
519
- </div>
520
- </div>
521
- </header>
522
- {:else}
523
- <header class="HeaderWrapper" bind:this={customStylingContainer}>
524
- <div class="HeaderContainer">
525
- <div class="HeaderBranding" on:click={()=>menuAction('lobby')}>
526
- {#if logoFromCms}
527
- <img src={logoPath} alt="Logo">
528
- {:else}
529
- <img src={everymatrixLogo} alt="Logo">
530
- {/if}
531
- </div>
532
-
533
- <nav class="HeaderMainNav">
534
- {#if !isLoading}
535
- <casino-slider
536
- class="HeaderItemsMenu"
537
- part="HeaderItemsMenu"
538
- {identity}
539
- use:sendSliderData
540
- isprimarymenu=true
541
- {actionevent}
542
- activeindex={primaryActiveIndex}
543
- {endpoint}
544
- {lang}
545
- location="headerMain"
546
- {showsubgroups}
547
- {clientstyling}
548
- {clientstylingurl}
549
- />
550
- {/if}
551
- </nav>
552
- <div class="HeaderTopActions">
553
- <div class="HeaderItemsMenu PrimaryMenu">
554
- <player-account-balance-modal {session} {userid} {endpoint} {lang} {clientstyling} {clientstylingurl} {customlocaleidentifier} {gmversion} {displaybalanceoption} {totalcalculationmode} {currencyseparator} {currencydecimal} {currencyprecision} />
555
- <div>
556
- <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={() => menuAction('deposit')}>{$_('deposit')}</div>
557
- {#if shortCashierActivated}
558
- <div class="ShortCashierWindow" on:click={(event) => closeShortCashier(event)}></div>
559
- <div class="ShortCashierContainerWrapper">
560
- <div class="ShortCashierContainer">
561
- <div class="ClosePopUpButtonShortCashier" on:click={(event) => closeShortCashier(event)}>
562
- <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg">
563
- <line x1="2" y1="2" x2="18" y2="18" stroke="black" stroke-width="2"/>
564
- <line x1="18" y1="2" x2="2" y2="18" stroke="black" stroke-width="2"/>
565
- </svg>
566
- </div>
567
- {#if gmversion === 'gmcore'}
568
- <player-deposit
569
- {endpoint}
570
- {session}
571
- playerid={userid}
572
- {lang}
573
- {hasdefaultamount}
574
- {playercurrency}
575
- {shortcashierenabled}
576
- {clientstyling}
577
- {clientstylingurl}
578
- ></player-deposit>
579
- {:else}
580
- <user-deposit-withdrawal
581
- {endpoint}
582
- type="deposit"
583
- channel="Desktop"
584
- language={lang}
585
- is-short-cashier={shortcashierenabled}
586
- product-type={producttype}
587
- user-id={userid}
588
- {session}
589
- success-url={'https://' + window.location.hostname + '/' + lang + successurl}
590
- cancel-url={'https://' + window.location.hostname + '/' + lang + cancelurl}
591
- fail-url={'https://' + window.location.hostname + '/' + lang + failurl}
592
- sports-url={'https://' + window.location.hostname + '/' + lang + sportsurl}
593
- casino-url={'https://' + window.location.hostname + '/' + lang + casinourl}
594
- contact-url={'https://' + window.location.hostname + '/' + lang + contacturl}
595
- home-url={'https://' + window.location.hostname + '/' + lang + homeurl}
596
- deposit-url={'https://' + window.location.hostname + '/' + lang + depositurl}
597
- client-styling={clientstyling}
598
- client-styling-url={clientstylingurl}
599
- ></user-deposit-withdrawal>
600
- {/if}
601
- </div>
602
- </div>
603
- {/if}
604
- </div>
605
- <div class="Item ItemAccount" part="Item ItemAccount" on:click={() => menuAction('myaccount')}>
606
- <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
607
- <defs>
608
- <style>.a {
609
- fill: var(--emfe-w-color-white, #FFFFFF);
610
- }
611
- </style>
612
- </defs>
613
- <g transform="translate(-8 -4)">
614
- <path class="a"
615
- d="M15.5,4a3.75,3.75,0,1,0,3.75,3.75A3.761,3.761,0,0,0,15.5,4Zm0,1.429A2.321,2.321,0,1,1,13.179,7.75,2.311,2.311,0,0,1,15.5,5.429Zm0,6.429A7.7,7.7,0,0,0,8,19.714a.714.714,0,0,0,.714.714H22.286A.714.714,0,0,0,23,19.714,7.7,7.7,0,0,0,15.5,11.857Zm0,1.429A6.18,6.18,0,0,1,21.5,19H9.5A6.18,6.18,0,0,1,15.5,13.286Z"
616
- transform="translate(0 0)"/>
617
- </g>
618
- </svg>
619
- </div>
620
- {#if (languagesArray.length > 1) }
621
- {#if countryflagheader !== 'true'}
622
- <select bind:value={selectedLanguage} class="Item ItemLanguage NoFlag" on:change={()=>menuAction('language')}>
623
- {#each languagesArray as operatorLanguage}
624
- <option value={operatorLanguage} selected>{operatorLanguage.slice(-2)}</option>
625
- {/each}
626
- </select>
627
- {:else}
628
- <div class="LanguageDropdown">
629
- <!-- svelte-ignore a11y-click-events-have-key-events -->
630
- <div class="SelectedOption Item ItemLanguage" on:click={() => toggleLanguageDropdown()}>
631
- <span class="FlagIcon">
632
- <img src={`http://purecatamphetamine.github.io/country-flag-icons/3x2/${determineFlag(selectedLanguage.slice(-2))}.svg`}/>
633
- </span>
634
- <span class="LanguageName">{selectedLanguage.slice(-2)}</span>
635
- <span class="TriangleInactive {isOptionsListVisible ? 'TriangleActive' : ''}">
636
- <svg xmlns="http://www.w3.org/2000/svg" width="14" height="6.835" viewBox="0 0 14 6.835">
637
- <path id="arrow" d="M281.541,447.921a.488.488,0,0,0,.295-.122l6.5-5.851a.488.488,0,1,0-.65-.726l-6.176,5.556-6.176-5.556h0a.488.488,0,1,0-.65.726l6.5,5.851a.488.488,0,0,0,.355.122Z" transform="translate(-274.511 -441.088)" fill="#d1d1d1"/>
638
- </svg>
639
- </span>
640
- </div>
641
- {#if isOptionsListVisible}
642
- <div class="OptionList">
643
- {#each languagesArray as operatorLanguage}
644
- <div class="LanguageOption" on:click={() => selectLanguage(operatorLanguage)}>
645
- <span class="FlagIcon">
646
- <img src={`http://purecatamphetamine.github.io/country-flag-icons/3x2/${determineFlag(operatorLanguage.slice(-2))}.svg`}/>
647
- </span>
648
- <span class="LanguageName">{operatorLanguage.slice(-2)}</span>
649
- </div>
650
- {/each}
651
- </div>
652
- {/if}
653
- </div>
654
- {/if}
655
- {/if}
656
- </div>
657
- </div>
658
- </div>
659
- <nav class="HeaderSecondaryNav">
660
- <ul class="HeaderItemsMenuSecondary">
661
- {#each secondaryMenuArray as secondaryItem}
662
- <li class="ItemSecondary {secondaryActiveIndex?.toString().indexOf('$') > -1 ? (secondaryActiveIndex?.split("$").pop() == secondaryItem.id.split("$").pop() ? 'active': '') : (secondaryActiveIndex == secondaryItem.id ? 'active': '')}" part="ItemSecondary">
663
- <button on:click={() => navigationTrigger(secondaryItem)}>{secondaryItem.label}</button>
664
- </li>
665
- {/each}
666
- </ul>
667
- </nav>
668
- </header>
669
- {/if}
670
- {:else}
671
- {#if mobileView}
672
- <header class="HeaderWrapper HeaderMobileWrapper" bind:this={customStylingContainer}>
673
- <div class="HeaderContainer">
674
- <div class="HeaderMobileMainNav">
675
- <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
676
- viewBox="0 0 22 16">
677
- <defs>
678
- <style>.a {
679
- fill: var(--emfe-w-color-white, #FFFFFF);
680
- }
681
- </style>
682
- </defs>
683
- <g transform="translate(-14 -13)">
684
- <rect class="a" width="18" height="2" transform="translate(14 13)"/>
685
- <rect class="a" width="22" height="2" transform="translate(14 20)"/>
686
- <rect class="a" width="22" height="2" transform="translate(14 27)"/>
687
- </g>
688
- </svg>
689
- </div>
690
- <div class="HeaderBranding" on:click={()=>menuAction('lobby')}>
691
- {#if logoFromCms}
692
- <img src={logoPath} alt="Logo">
693
- {:else}
694
- <img src={everymatrixLogo} alt="Logo">
695
- {/if}
696
- </div>
697
-
698
- <div class="HeaderTopActions">
699
- <div class="HeaderItemsMenu">
700
- <div class="Item ItemLogin" on:click={()=>menuAction('login')}>{$_('login')}</div>
701
- <div class="Item ItemRegister" on:click={()=>menuAction('register')}>{$_('register')}</div>
702
- </div>
703
- </div>
704
- </div>
705
- </header>
706
- {:else}
707
- <header class="HeaderWrapper" bind:this={customStylingContainer}>
708
- <div class="HeaderContainer">
709
- <div class="HeaderBranding" on:click={()=>menuAction('lobby')}>
710
- {#if logoFromCms}
711
- <img src={logoPath} alt="Logo">
712
- {:else}
713
- <img src={everymatrixLogo} alt="Logo">
714
- {/if}
715
- </div>
716
-
717
- <nav class="HeaderMainNav">
718
- {#if !isLoading}
719
- <casino-slider
720
- class="HeaderItemsMenu"
721
- part="HeaderItemsMenu"
722
- {identity}
723
- use:sendSliderData
724
- isprimarymenu=true
725
- {actionevent}
726
- activeindex={primaryActiveIndex}
727
- location="headerMain"
728
- {endpoint}
729
- {lang}
730
- {clientstyling}
731
- {clientstylingurl}
732
- />
733
- {/if}
734
- </nav>
735
- <div class="HeaderTopActions">
736
- <div class="HeaderItemsMenu">
737
- <div class="Item ItemLogin" tabindex="0" on:click={()=>menuAction('login')}>{$_('login')}</div>
738
- <div class="Item ItemRegister" tabindex="0" on:click={()=>menuAction('register')}>{$_('register')}</div>
739
- {#if (languagesArray.length > 1) }
740
- {#if countryflagheader !== 'true'}
741
- <select bind:value={selectedLanguage} class="Item ItemLanguage NoFlag" on:change={()=>menuAction('language')}>
742
- {#each languagesArray as operatorLanguage}
743
- <option value={operatorLanguage}>{operatorLanguage.slice(-2)}</option>
744
- {/each}
745
- </select>
746
- {:else}
747
- <div class="LanguageDropdown">
748
- <div class="SelectedOption Item ItemLanguage" on:click={() => toggleLanguageDropdown()}>
749
- <span class="FlagIcon">
750
- <img src={`http://purecatamphetamine.github.io/country-flag-icons/3x2/${determineFlag(selectedLanguage.slice(-2))}.svg`}/>
751
- </span>
752
- <span class="LanguageName">{selectedLanguage.slice(-2)}</span>
753
- <span class="TriangleInactive {isOptionsListVisible ? 'TriangleActive' : ''}">
754
- <svg xmlns="http://www.w3.org/2000/svg" width="14" height="6.835" viewBox="0 0 14 6.835">
755
- <path id="arrow" d="M281.541,447.921a.488.488,0,0,0,.295-.122l6.5-5.851a.488.488,0,1,0-.65-.726l-6.176,5.556-6.176-5.556h0a.488.488,0,1,0-.65.726l6.5,5.851a.488.488,0,0,0,.355.122Z" transform="translate(-274.511 -441.088)" fill="#d1d1d1"/>
756
- </svg>
757
- </span>
758
- </div>
759
- {#if isOptionsListVisible}
760
- <div class="OptionList">
761
- {#each languagesArray as operatorLanguage}
762
- <div class="LanguageOption" on:click={() => selectLanguage(operatorLanguage)}>
763
- <span class="FlagIcon">
764
- <img src={`http://purecatamphetamine.github.io/country-flag-icons/3x2/${determineFlag(operatorLanguage.slice(-2))}.svg`}/>
765
- </span>
766
- <span class="LanguageName">{operatorLanguage.slice(-2)}</span>
767
- </div>
768
- {/each}
769
- </div>
770
- {/if}
771
- </div>
772
- {/if}
773
- {/if}
774
- </div>
775
- </div>
776
- </div>
777
- <nav class="HeaderSecondaryNav">
778
- <ul class="HeaderItemsMenuSecondary">
779
- {#each secondaryMenuArray as secondaryItem}
780
- <li class="ItemSecondary {secondaryActiveIndex?.toString().indexOf('$') > -1 ? (secondaryActiveIndex?.split("$").pop() == secondaryItem.id.split("$").pop() ? 'active': '') : (secondaryActiveIndex == secondaryItem.id ? 'active': '')}" part="ItemSecondary">
781
- <button on:click={() => navigationTrigger(secondaryItem)}>{secondaryItem.label}</button>
782
- </li>
783
- {/each}
784
- </ul>
785
- </nav>
786
- </header>
787
- {/if}
788
- {/if}
789
-
790
- <casino-hamburger-menu menuitemsurl={hamburgerURL} {activecategory} {lang} {countryflaghamburger} {customlocaleidentifier} {languageslist} {clientstyling} {clientstylingurl}></casino-hamburger-menu>
791
-
792
- <style lang="scss">
793
-
794
- *,
795
- *::before,
796
- *::after {
797
- font-family: inherit
798
- }
799
-
800
- :host {
801
- font-family: inherit;
802
- }
803
-
804
- @keyframes ModalBounce {
805
- 0% {
806
- opacity: 0;
807
- transform: translateY(20px);
808
- }
809
- 50% {
810
- transform: translateY(-6px);
811
- opacity: 0.8;
812
- }
813
- 100% {
814
- transform: translateY(0);
815
- opacity: 1;
816
- }
817
- }
818
-
819
-
820
- input,
821
- textarea,
822
- button {font-family: inherit}
823
-
824
-
825
- .HeaderSlider {
826
- width: 100%;
827
- height: 400px;
828
- }
829
-
830
- .LanguageDropdown {
831
- margin-right: 16px;
832
- position: relative;
833
- display: inline-block;
834
- }
835
-
836
- .ClosePopUpButtonShortCashier{
837
- margin-left: auto;
838
- cursor: pointer;
839
- svg {
840
- position: absolute;
841
- top: 10px;
842
- right: 10px;
843
- }
844
- }
845
-
846
- .ShortCashierWindow{
847
- background-color: rgba(0, 0, 0, 0.7);
848
- position: fixed;
849
- top: 0;
850
- bottom: 0;
851
- left: 0;
852
- right: 0;
853
- z-index: 16;
854
- }
855
-
856
- .ShortCashierContainerWrapper{
857
- position: relative;
858
- animation: ModalBounce .5s forwards;
859
- z-index: 17;
860
- right: 60%;
861
- }
862
- .ShortCashierContainer{
863
- background-color: var(--emfe-w-color-white, #FFFFFF);
864
- position: absolute;
865
- width: 360px;
866
- top: 16px;
867
- transform: translateX(-60%);
868
- box-shadow: 0px 30px 30px var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
869
- border-radius: 5px;
870
- z-index: 17;
871
- box-shadow: 0px 5px 20px 0px #191919;
872
- &:before {
873
- content: "";
874
- background: var(--emfe-w-color-white, #FFFFFF);
875
- clip-path: polygon(50% 0, 0% 100%, 100% 100%);
876
- position: absolute;
877
- top: -8px;
878
- left: 84%;
879
- width: 25px;
880
- height: 10px;
881
- transform: translateX(-50%);
882
- z-index: 1;
883
- }
884
- }
885
-
886
- .ShortCashierContainerWrapperMobile{
887
- position: relative;
888
- animation: ModalBounce .5s forwards;
889
- right: 110%;
890
- z-index: 17;
891
- }
892
- .ShortCashierContainerMobile {
893
- background-color: var(--emfe-w-color-white, #FFFFFF);
894
- position: absolute;
895
- width: 80vw;
896
- top: 14px;
897
- left: 50%;
898
- transform: translateX(-60%);
899
- box-shadow: 0px 30px 30px var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
900
- border-radius: 5px;
901
- z-index: 17;
902
- box-shadow: 0px 5px 20px 0px #191919;
903
- &:before {
904
- content: "";
905
- background: var(--emfe-w-color-white, #FFFFFF);
906
- clip-path: polygon(50% 0, 0% 100%, 100% 100%);
907
- position: absolute;
908
- top: -8px;
909
- left: 84%;
910
- width: 25px;
911
- height: 10px;
912
- transform: translateX(-50%);
913
- z-index: 1;
914
- }
915
- }
916
-
917
- .SelectedOption,
918
- .OptionList {
919
- border: 1px solid var(--emfe-w-header-color-primary);
920
- padding: 8px;
921
- cursor: pointer;
922
- width: 76px;
923
- border-radius: 4px;
924
- }
925
-
926
- .SelectedOption {
927
- display: flex;
928
- align-items: center;
929
- }
930
-
931
- .FlagIcon img {
932
- width: 20px;
933
- height: 14px;
934
- margin-right: 8px;
935
- border-radius: 2px;
936
- }
937
-
938
- .OptionList {
939
- position: absolute;
940
- z-index: 1;
941
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
942
- background: var(--emfe-w-header-color-secondary-menu-bg, var(--emfe-w-color-background-secondary, #050518));
943
- max-height: 150px;
944
- overflow-y: auto;
945
- }
946
-
947
- .LanguageOption {
948
- display: flex;
949
- align-items: center;
950
- padding: 4px;
951
- }
952
-
953
- .TriangleInactive {
954
- display: block;
955
- color: currentColor;
956
- margin: 0 0 0 10px;
957
- transition: all .5s;
958
-
959
- svg{
960
- margin: 2px 0px;
961
- }
962
- }
963
-
964
- .TriangleActive {
965
- transform: rotate(180deg);
966
- position: relative;
967
-
968
- svg{
969
- margin: 2px 0px;
970
- }
971
- }
972
-
973
- .LanguageOption:hover {
974
- background-color: var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
975
- border-radius: 2px;
976
- }
977
- .HeaderWrapper {
978
- background: var(--emfe-w-header-color-menu-bg, var(--emfe-w-color-background-secondary, #050518));
979
- }
980
-
981
- .HeaderContainer {
982
- max-width: 1300px;
983
- display: flex;
984
- flex-direction: row;
985
- align-items: center;
986
- height: 84px;
987
- margin: 0 auto;
988
- }
989
-
990
- .HeaderMobileMainNav {
991
- display: flex;
992
- align-items: center;
993
- }
994
-
995
- .HeaderBranding {
996
- width: 140px;
997
- margin-right: 15px;
998
- cursor: pointer;
999
- img {
1000
- width: 100%;
1001
- }
1002
- @media only screen and (max-width: 360px) {
1003
- margin-right: 0;
1004
- }
1005
- }
1006
-
1007
- .HeaderMainNav {
1008
- text-align: left;
1009
- }
1010
-
1011
- .HeaderTopActions {
1012
- text-align: right;
1013
- margin-left: auto;
1014
- }
1015
-
1016
- .HeaderSecondaryNav {
1017
- flex-direction: row;
1018
- width: 100%;
1019
- background: var(--emfe-w-header-color-secondary-menu-bg, var(--emfe-w-color-background-secondary, #050518));
1020
- border-top: 1px solid var(--emfe-w-color-gray-300, #58586B);
1021
- }
1022
-
1023
- .HeaderItemsMenu {
1024
- gap: 8px;
1025
- display: flex;
1026
- align-content: flex-start;
1027
- list-style: none;
1028
- text-transform: uppercase;
1029
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1030
- font-size: 16px;
1031
- align-items: center;
1032
-
1033
- .Item:hover {
1034
- .HeaderSecondaryNav {
1035
- display: block;
1036
- }
1037
- }
1038
-
1039
- .Item {
1040
- gap: 2px;
1041
- padding: 0 12px;
1042
- display: flex;
1043
- align-items: center;
1044
- }
1045
-
1046
- &.PrimaryMenu {
1047
- gap: 10px;
1048
- }
1049
- }
1050
-
1051
- .Item a {
1052
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1053
- text-decoration: none;
1054
- border-top: 1px solid transparent;
1055
- }
1056
-
1057
- .Item a:hover {
1058
- color: var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
1059
- border-top: 1px solid var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
1060
- padding-top: 5px;
1061
- }
1062
-
1063
- .ItemLogin {
1064
- border-radius: 5px;
1065
- background: transparent;
1066
- font-size: 14px;
1067
- font-weight: 600;
1068
- border: solid 1px var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1069
- height: 44px;
1070
- text-align: center;
1071
- line-height: 44px;
1072
- margin-right: 10px;
1073
- cursor: pointer;
1074
- }
1075
-
1076
- .ItemRegister, .ItemDeposit {
1077
- border-radius: 5px;
1078
- background: var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
1079
- font-size: 14px;
1080
- height: 44px;
1081
- text-align: center;
1082
- line-height: 44px;
1083
- cursor: pointer;
1084
- }
1085
-
1086
- .ItemDeposit {
1087
- background: var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
1088
- }
1089
-
1090
- .ItemLanguage {
1091
- height: 44px;
1092
- width: 74px;
1093
- text-align: center;
1094
- line-height: 44px;
1095
- background: transparent;
1096
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1097
- border: none;
1098
- cursor: pointer;
1099
- outline: none;
1100
- -webkit-appearance: none;
1101
- -moz-appearance: none;
1102
- appearance: none;
1103
-
1104
- option {
1105
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1106
- }
1107
- }
1108
-
1109
- .ItemLanguage.NoFlag{
1110
- background: url("data:image/svg+xml,<svg height='10px' width='10px' viewBox='0 0 16 16' fill='%23FFFFFF' xmlns='http://www.w3.org/2000/svg'><path d='M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/></svg>") no-repeat var(--emfe-w-header-color-menu-bg, var(--emfe-w-color-background-secondary, #050518));
1111
- background-position: calc(100% - 0.75rem) center;
1112
- width: 90px;
1113
- margin-right: 6px;
1114
- }
1115
-
1116
- .ItemBalance {
1117
- background: transparent;
1118
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1119
- border: 0;
1120
- }
1121
-
1122
- .ItemAccount {
1123
- cursor: pointer;
1124
-
1125
- svg {
1126
- width: 20px;
1127
- height: 20px;
1128
- }
1129
- }
1130
-
1131
- .HeaderItemsMenuSecondary {
1132
- display: flex;
1133
- flex-direction: row;
1134
- align-content: flex-start;
1135
- align-items: center;
1136
- height: 60px;
1137
- list-style: none;
1138
- text-transform: uppercase;
1139
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1140
- font-size: 14px;
1141
- max-width: 1280px;
1142
- margin: 0 auto;
1143
- overflow-y: hidden;
1144
- overflow-x: auto;
1145
- padding: 0;
1146
- }
1147
-
1148
- .HeaderItemsMenuSecondary .ItemSecondary {
1149
- width: auto;
1150
- height: 100%;
1151
- display: flex;
1152
- justify-content: center;
1153
- padding: 0 15px;
1154
- font-weight: 600;
1155
- transition-duration: 0.15s;
1156
-
1157
- button {
1158
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1159
- text-decoration: none;
1160
- border: none;
1161
- background: none;
1162
- font-size: 14px;
1163
- font-weight: 600;
1164
- text-transform: uppercase;
1165
- cursor: pointer;
1166
- &:hover {
1167
- color: var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
1168
- }
1169
-
1170
- &:focus {
1171
- color: var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
1172
- }
1173
-
1174
- &:visited {
1175
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1176
- }
1177
-
1178
- &:focus-visible {
1179
- color: var(--emfe-w-header-typography, var(--emfe-w-color-white, #FFFFFF));
1180
- outline: none;
1181
- }
1182
- }
1183
- &.active {
1184
- background: var(--emfe-w-header-color-primary, var(--emfe-w-color-primary, #D0046C));
1185
- }
1186
- }
1187
-
1188
- .HeaderSliderMobile {
1189
- background-position: bottom;
1190
- }
1191
-
1192
- .HeaderMobileWrapper {
1193
- .HeaderContainer {
1194
- height: 55px;
1195
- padding: 0 15px;
1196
- gap: 10px;
1197
- @media only screen and (max-width: 360px) {
1198
- padding: 0 5px;
1199
- }
1200
- }
1201
-
1202
- .HeaderBranding {
1203
- width: 110px;
1204
- display: flex;
1205
- align-items: center;
1206
- }
1207
-
1208
- .HeaderItemsMenu {
1209
- .Item {
1210
- padding: 0 10px;
1211
- display: block;
1212
- width: unset;
1213
- }
1214
-
1215
- .ItemBalance {
1216
- font-size: 12px;
1217
- }
1218
-
1219
- .ItemAccount {
1220
- padding: 0;
1221
- }
1222
- }
1223
-
1224
- .ItemRegister, .ItemDeposit, .ItemLogin {
1225
- height: 30px;
1226
- line-height: 30px;
1227
- font-size: 12px;
1228
- }
1229
-
1230
- .ItemLogin {
1231
- margin-right: 10px;
1232
- }
1233
- }
1234
- </style>