@everymatrix/casino-header-controller 1.44.0 → 1.45.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>