@everymatrix/casino-header-controller-nd 1.37.4

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.
@@ -0,0 +1,1823 @@
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 * as countryFlags from 'country-flag-icons/string/3x2';
15
+
16
+ // @ts-ignore
17
+ import everymatrixLogo from './images/everymatrix-logo-white.png';
18
+
19
+ export let session: string = '';
20
+ export let userid: string = '';
21
+ export let endpoint: string = '';
22
+ export let cmsendpoint: string = '';
23
+ export let cmsenv: string = 'stage';
24
+ export let lang: string = 'en';
25
+ export let languageslist: string = 'en, ro';
26
+ export let activecategory: string = '';
27
+ export let translationurl: string = '';
28
+ export let customlocaleidentifier: string = '';
29
+ export let gmversion: string = '';
30
+ export let countryflagheader: string = 'false';
31
+ export let displaybalanceoption: string = 'All';
32
+ export let countryflaghamburger: string = 'false';
33
+ export let hasdefaultamount: string = '';
34
+ export let playercurrency: string ='';
35
+
36
+ //short cashier
37
+ export let shortcashierenabled: string = '';
38
+ export let producttype: string = '';
39
+ export let successurl: string = '';
40
+ export let failurl: string = '';
41
+ export let cancelurl: string = '';
42
+ export let sportsurl: string = '';
43
+ export let casinourl: string = '';
44
+ export let contacturl: string = '';
45
+ export let homeurl: string = '';
46
+ export let depositurl: string = '';
47
+
48
+ export let actionevent: string = '';
49
+
50
+ export let userroles: string = '';
51
+ export let showsubgroups: string = 'false';
52
+ export let clientstyling: string = '';
53
+ export let clientstylingurl: string = '';
54
+
55
+ export let currencyseparator: string = '';
56
+ export let currencydecimal: string = '';
57
+ export let currencyprecision: string = '';
58
+
59
+ let activeIndex: number;
60
+ let customStylingContainer: HTMLElement;
61
+ let balanceContainer: HTMLElement;
62
+ let depositContainer: HTMLElement;
63
+ let backgroundContainer: HTMLElement;
64
+
65
+ setupI18n({ withLocale: 'en', translations: {}});
66
+
67
+ const setTranslationUrl = (): void => {
68
+ fetch(translationurl)
69
+ .then((res: any): void => res.json())
70
+ .then((res: any): void => {
71
+ Object.keys(res).forEach((item:any): void => {
72
+ addNewMessages(item, res[item]);
73
+ });
74
+ }).catch((err: any): void => {
75
+ console.log(err);
76
+ });
77
+ }
78
+
79
+ Object.keys(TRANSLATIONS).forEach((item: string): void => {
80
+ addNewMessages(item, TRANSLATIONS[item]);
81
+ });
82
+
83
+ let mainMenuArray: Array<string> = [];
84
+ let secondaryMenuArray: Array<string> = [];
85
+ let selectedLanguage: string = '';
86
+ let hamburgerURL: URL;
87
+ let headerURL: URL;
88
+ let logoURL: URL;
89
+ let isLoading: boolean = true;
90
+ let logoFromCms: boolean = false;
91
+ let primaryMenuLoading: boolean = true;
92
+
93
+ let isOptionsListVisible: boolean = false;
94
+ let mobileView: boolean = false;
95
+ let userAgent: string = window.navigator.userAgent;
96
+ let isLoggedIn: boolean = false;
97
+ let playerID: string = '';
98
+ let sessionID: string = '';
99
+ let languagesArray: Array<string> = [];
100
+ let hamburgerMenuActive: boolean = false;
101
+ let logoPath: string = '';
102
+ let shortCashierActivated: boolean = false;
103
+ let isBalanceOpened: boolean = false;
104
+
105
+ const gtagCall = (eventName: string): void => {
106
+ // @ts-ignore
107
+ if (typeof gtag == 'function'){
108
+ // @ts-ignore
109
+ gtag('event', eventName, {
110
+ 'context': 'HeaderController'
111
+ });
112
+ }
113
+ }
114
+
115
+ const menuAction = (type: string, data?: any): void => {
116
+ switch (type) {
117
+ case 'login':
118
+ window.postMessage({ type: 'OpenLoginRegisterModal', transition: 'Login' }, window.location.href);
119
+
120
+ gtagCall('OpenLoginModal');
121
+ break;
122
+
123
+ case 'register':
124
+ window.postMessage({ type: 'OpenLoginRegisterModal', transition: 'Register'}, window.location.href);
125
+
126
+ gtagCall('OpenRegisterModal');
127
+ break;
128
+
129
+ case 'lobby':
130
+ window.postMessage({ type: 'GoToHomepage' }, window.location.href);
131
+
132
+ gtagCall('GoToHomepage');
133
+ break;
134
+
135
+ case 'myaccount':
136
+ window.postMessage({ type: 'PlayerAccountMenuActive', isMobile: isMobile(userAgent) }, window.location.href);
137
+
138
+ gtagCall('GoToMyAccount');
139
+ break;
140
+
141
+ case 'deposit':
142
+ if (isShortCashierEnabled) {
143
+ shortCashierActivated = true;
144
+ window.postMessage({ type: 'DisableScroll' }, window.location.href);
145
+ } else {
146
+ window.postMessage({ type: 'GoToDeposit' }, window.location.href);
147
+ }
148
+
149
+ gtagCall('GoToDeposit');
150
+ break;
151
+
152
+ case 'language':
153
+ window.postMessage({ type: 'LanguageChanged', selectedLanguage }, window.location.href);
154
+ break;
155
+
156
+ case 'page':
157
+ window.postMessage({ type: 'NavigateTo', item: data, path: data.path });
158
+ break;
159
+ }
160
+ }
161
+
162
+ const toggleMenu = (): void => {
163
+ hamburgerMenuActive = !hamburgerMenuActive;
164
+ window.postMessage({ type: 'OpenHamburgerMenuModal' }, window.location.href);
165
+ }
166
+
167
+ const messageHandler = (e: any): void => {
168
+ if (e.data) {
169
+ switch (e.data.type) {
170
+ case 'UserSessionID':
171
+ playerID = e.data.userid;
172
+ sessionID = e.data.session;
173
+ isLoggedIn = true;
174
+ break;
175
+
176
+ case 'CloseHamburgerMenu':
177
+ window.postMessage({ type: 'EnableScroll' }, window.location.href);
178
+ if (e.data.showhamburger) {
179
+ hamburgerMenuActive = false;
180
+ }
181
+ break;
182
+
183
+ case 'LogoutSuccessfull':
184
+ isLoggedIn = false;
185
+ break;
186
+
187
+ case 'LanguageChanged':
188
+ if (e.data.selectedLanguage.toLowerCase() != lang) {
189
+ primaryMenuLoading = true;
190
+ }
191
+ createCMSUrls();
192
+ getHeaderMenusData(headerURL);
193
+ break;
194
+
195
+ case 'OpenShortCashier':
196
+ menuAction('deposit');
197
+ break;
198
+
199
+ case 'CloseShortCashier':
200
+ closeShortCashier();
201
+ break;
202
+
203
+ case 'RequestHeaderHeight':
204
+ window.postMessage({ type: 'HeaderHeight', headerHeight: customStylingContainer.clientHeight }, window.location.href);
205
+ break;
206
+
207
+ case 'BalanceModalStatus':
208
+ isBalanceOpened = e.data.status == 'open';
209
+ adaptDepositBackground(isBalanceOpened);
210
+ break;
211
+
212
+ case 'BalancedFetched':
213
+ setInitialStateForDepositBackground();
214
+ break;
215
+ }
216
+ }
217
+ }
218
+
219
+ const setInitialStateForDepositBackground = (): void => {
220
+ let width = depositContainer.getBoundingClientRect().width;
221
+ backgroundContainer.style.width = `${width}px`;
222
+ backgroundContainer.style.left = `${balanceContainer.getBoundingClientRect().width}px`;
223
+ }
224
+
225
+ const adaptDepositBackground = (isBalanceOpened): void => {
226
+ if (isBalanceOpened) {
227
+ let width = balanceContainer.getBoundingClientRect().width;
228
+ backgroundContainer.style.width = `${width}px`;
229
+ backgroundContainer.style.left = `0px`;
230
+ } else {
231
+ setInitialStateForDepositBackground();
232
+ }
233
+ }
234
+
235
+ const setSession = (): void => {
236
+ isLoggedIn = true;
237
+ sessionID = session;
238
+ }
239
+
240
+ const closeShortCashier = (event?: any): void => {
241
+ shortCashierActivated = false;
242
+ window.postMessage({ type: 'EnableScroll' }, window.location.href);
243
+ event?.stopPropagation();
244
+ }
245
+
246
+ const createCMSUrls = (): void => {
247
+ headerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/menu`);
248
+ hamburgerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/hamburger-menu`);
249
+ logoURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/op-options/style`);
250
+
251
+ let device = getDevice(userAgent);
252
+
253
+ headerURL.searchParams.append('env', cmsenv);
254
+ headerURL.searchParams.append('language', selectedLanguage.toLowerCase());
255
+ headerURL.searchParams.append('userRoles', userroles);
256
+
257
+ if (device) {
258
+ if (device === 'PC'){
259
+ hamburgerURL.searchParams.append('device', 'dk');
260
+ headerURL.searchParams.append('device', 'dk');
261
+ } else if (device === 'iPad' || device === 'iPhone') {
262
+ hamburgerURL.searchParams.append('device', 'mtWeb'); // replace with ios when we will have a native ios up for this
263
+ headerURL.searchParams.append('device', 'mtWeb'); // replace with ios when we will have a native ios up for this
264
+ } else {
265
+ hamburgerURL.searchParams.append('device', 'mtWeb');
266
+ headerURL.searchParams.append('device', 'mtWeb');
267
+ }
268
+ }
269
+ hamburgerURL.searchParams.append('env', cmsenv);
270
+ hamburgerURL.searchParams.append('language', selectedLanguage.toLowerCase());
271
+ hamburgerURL.searchParams.append('userRoles', userroles);
272
+
273
+ getHeaderMenusData(headerURL);
274
+ }
275
+
276
+ const setActiveLanguage = (): void => {
277
+ setLocale(lang);
278
+ }
279
+
280
+ const initialLoad = (): void => {
281
+ languagesArray = languageslist.replace(/ /g,'').split(',');
282
+ languagesArray = languagesArray.map((language:string) => language.toUpperCase());
283
+
284
+ selectedLanguage = lang.toUpperCase();
285
+
286
+ createCMSUrls();
287
+ getLogo(logoURL);
288
+ }
289
+
290
+ const initializeMenu = (): void => {
291
+ const primaryActiveIndex = setActiveIndex(activecategory, mainMenuArray);
292
+ const secondaryActiveIndex = setActiveIndex(activecategory, secondaryMenuArray);
293
+ activeIndex = primaryActiveIndex > secondaryActiveIndex ? primaryActiveIndex : secondaryActiveIndex;
294
+ }
295
+
296
+ const setActiveIndex = (activecategory: any, menuList: any): any => {
297
+ let result = menuList.find(item => {
298
+ if (activecategory.indexOf('/sport') > -1) {
299
+ return item.path.indexOf(activecategory) > -1;
300
+ } else {
301
+ if (item.path.includes(activecategory)) {
302
+ return true;
303
+ }
304
+ }
305
+ });
306
+
307
+ if (!result) {
308
+ result = menuList.find((item: any): boolean => {
309
+ return item.path.split('/').indexOf(activecategory.split('/')[1]) > -1;
310
+ });
311
+ }
312
+
313
+ if (result) {
314
+ return result.id;
315
+ } else {
316
+ return -1;
317
+ }
318
+ }
319
+
320
+ const getHeaderMenusData = (url: any): Promise<any> => {
321
+ isLoading = true;
322
+
323
+ return new Promise((resolve, reject): void => {
324
+ fetch(url)
325
+ .then((res: any): void => res.json())
326
+ .then((data: any): void => {
327
+ mainMenuArray = data.desktop.primary;
328
+ secondaryMenuArray = data.desktop.secondary;
329
+ isLoading = false;
330
+ primaryMenuLoading = false;
331
+
332
+ resolve(data);
333
+ }, (err: any): void => {
334
+ isLoading = false;
335
+ console.error(err);
336
+ reject(err);
337
+ });
338
+ });
339
+ }
340
+
341
+ const getLogo = (url: URL): Promise<any> => {
342
+ logoFromCms = false;
343
+
344
+ return new Promise((resolve, reject): void => {
345
+ fetch(url)
346
+ .then((res: any): void => res.json())
347
+ .then((data: any): void => {
348
+ if (data.logoUrl.length > 0 && (data.logoUrl != "null" || data.logoUrl != "false")) {
349
+ logoPath = data.logoUrl;
350
+ logoFromCms = true;
351
+ } else {
352
+ logoFromCms = false;
353
+ }
354
+ resolve(data);
355
+ }, (err: any): void => {
356
+ logoFromCms = false;
357
+ console.error(err);
358
+ reject(err);
359
+ });
360
+ });
361
+ }
362
+
363
+ const navigationTrigger = (itemData: any): void => {
364
+ window.postMessage({ type: 'NavigateTo', itemId: itemData.id, item: itemData, path: itemData.path, externalLink: itemData.externalLink || false, target: itemData.attrs?.target || null }, window.location.href);
365
+ }
366
+
367
+ const selectLanguage = (operatorLanguage: string): void => {
368
+ selectedLanguage = operatorLanguage;
369
+ isOptionsListVisible = false;
370
+ menuAction('language');
371
+ }
372
+
373
+ const toggleLanguageDropdown = (): void => {
374
+ isOptionsListVisible = !isOptionsListVisible;
375
+ }
376
+
377
+ const determineFlag = (operatorLanguage?: string): string => {
378
+ let flag = operatorLanguage ? operatorLanguage.slice(-2) : selectedLanguage.slice(-2);
379
+
380
+ if (customlocaleidentifier) {
381
+ flag =
382
+ customlocaleidentifier.includes(flag.toLowerCase()) ?
383
+ customlocaleidentifier.slice(-2) :
384
+ flag;
385
+ }
386
+
387
+ return flag == 'EN' ? 'US' : flag.toUpperCase();
388
+ }
389
+
390
+ const setClientStyling = (): void => {
391
+ let sheet = document.createElement('style');
392
+ sheet.innerHTML = clientstyling;
393
+ customStylingContainer.appendChild(sheet);
394
+ }
395
+
396
+ const setClientStylingURL = (): void => {
397
+ let url: URL = new URL(clientstylingurl);
398
+ let cssFile: HTMLElement = document.createElement('style');
399
+
400
+ fetch(url.href)
401
+ .then((res: any): void => res.text())
402
+ .then((data: any): void => {
403
+ cssFile.innerHTML = data
404
+
405
+ setTimeout(() => { customStylingContainer.appendChild(cssFile) }, 1);
406
+ });
407
+ }
408
+
409
+ onMount(async () => {
410
+ window.addEventListener('message', messageHandler, false);
411
+
412
+ mobileView = isMobile(userAgent);
413
+
414
+ return () => {
415
+ window.removeEventListener('message', messageHandler);
416
+ }
417
+ });
418
+
419
+ $: activecategory && !isLoading && initializeMenu();
420
+ $: session && setSession();
421
+ $: isShortCashierEnabled = shortcashierenabled.toLocaleLowerCase() == 'true';
422
+ $: lang && setActiveLanguage();
423
+ $: cmsendpoint && lang && languageslist && userroles && initialLoad();
424
+ $: translationurl && setTranslationUrl();
425
+ $: clientstyling && customStylingContainer && setClientStyling();
426
+ $: clientstylingurl && customStylingContainer && setClientStylingURL();
427
+ </script>
428
+
429
+ <div class="HeaderContainer" bind:this={customStylingContainer}>
430
+ <div class="MainNav">
431
+ {#if mobileView}
432
+ <div class="HeaderMobileMainNav">
433
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
434
+ <div on:click={toggleMenu} class="NavIcon {hamburgerMenuActive ? 'Open' : ''}">
435
+ <span></span>
436
+ <span></span>
437
+ <span></span>
438
+ </div>
439
+ </div>
440
+ {/if}
441
+ <div class="Logo">
442
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
443
+ <div class="HeaderBranding" on:click={()=>menuAction('lobby')}>
444
+ {#if logoFromCms}
445
+ <img src={logoPath} alt="Logo">
446
+ {:else}
447
+ <img src={everymatrixLogo} alt="Logo">
448
+ {/if}
449
+ </div>
450
+ </div>
451
+ <nav class="PrimaryMenu">
452
+ {#if !mobileView}
453
+ {#if primaryMenuLoading}
454
+ {#each new Array(6) as item}
455
+ <div class="Skeleton SkeletonText"></div>
456
+ {/each}
457
+ {:else}
458
+ {#each mainMenuArray as menuItem}
459
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
460
+ <div class="ItemMenu {menuItem.id == activeIndex ? 'Active' : ''}" on:click={() => menuAction('page', menuItem)}>
461
+ <p>{menuItem.label}</p>
462
+ <div class="MenuHover"></div>
463
+ </div>
464
+ {/each}
465
+ {/if}
466
+ {/if}
467
+ </nav>
468
+ {#if isLoggedIn}
469
+ <div class="BalanceDepositWrapper">
470
+ <div class="Balance {isBalanceOpened ? 'Open' : ''}" bind:this={balanceContainer}>
471
+ <player-account-balance-modal {session} {userid} {endpoint} {lang} {clientstyling} {clientstylingurl} {customlocaleidentifier} {gmversion} {displaybalanceoption} {currencyseparator} {currencydecimal} {currencyprecision} />
472
+ </div>
473
+ <div class="Deposit {isBalanceOpened ? 'Open' : ''}" bind:this={depositContainer}>
474
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
475
+ <div class="DepositButton" on:click={() => menuAction('deposit')}>
476
+ <p>{$_('deposit')}</p>
477
+ </div>
478
+ {#if shortCashierActivated}
479
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
480
+ <div class="ShortCashierWindow" on:click={(event) => closeShortCashier(event)}></div>
481
+ <div class="ShortCashierContainerWrapperMobile">
482
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
483
+ <div class="ShortCashierContainerMobile">
484
+ <div class="ClosePopUpButtonShortCashier" on:click={(event) => closeShortCashier(event)}>
485
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg">
486
+ <line x1="2" y1="2" x2="18" y2="18" stroke-width="2"/>
487
+ <line x1="18" y1="2" x2="2" y2="18" stroke-width="2"/>
488
+ </svg>
489
+ </div>
490
+ {#if gmversion === 'gmcore'}
491
+ <player-deposit
492
+ {endpoint}
493
+ {session}
494
+ playerid={userid}
495
+ {lang}
496
+ {hasdefaultamount}
497
+ {playercurrency}
498
+ {shortcashierenabled}
499
+ {clientstyling}
500
+ {clientstylingurl}
501
+ ></player-deposit>
502
+ {:else}
503
+ <user-deposit-withdrawal
504
+ {endpoint}
505
+ type="deposit"
506
+ channel="Mobile"
507
+ language={lang}
508
+ is-short-cashier={shortcashierenabled}
509
+ product-type={producttype}
510
+ user-id={userid}
511
+ {session}
512
+ success-url={'https://' + window.location.hostname + '/' + lang + successurl}
513
+ cancel-url={'https://' + window.location.hostname + '/' + lang + cancelurl}
514
+ fail-url={'https://' + window.location.hostname + '/' + lang + failurl}
515
+ sports-url={'https://' + window.location.hostname + '/' + lang + sportsurl}
516
+ casino-url={'https://' + window.location.hostname + '/' + lang + casinourl}
517
+ contact-url={'https://' + window.location.hostname + '/' + lang + contacturl}
518
+ home-url={'https://' + window.location.hostname + '/' + lang + homeurl}
519
+ deposit-url={'https://' + window.location.hostname + '/' + lang + depositurl}
520
+ ></user-deposit-withdrawal>
521
+ {/if}
522
+ </div>
523
+ </div>
524
+ {/if}
525
+ </div>
526
+ <div class="Background {isBalanceOpened ? 'Open' : ''}" bind:this={backgroundContainer}></div>
527
+ </div>
528
+ <div class="Profile">
529
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
530
+ <div class="ProfileWrapper" on:click={() => menuAction('myaccount')}>
531
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 16.429">
532
+ <g transform="translate(-8 -4)">
533
+ <path class="a"
534
+ 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"
535
+ transform="translate(0 0)"/>
536
+ </g>
537
+ </svg>
538
+ </div>
539
+ </div>
540
+ {:else}
541
+ <div class="AuthButtons">
542
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
543
+ <div class="Item ItemLogin" on:click={() => menuAction('login')}>
544
+ <p>{$_('login')}</p>
545
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"/></svg>
546
+ </div>
547
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
548
+ <div class="Item ItemRegister" on:click={() => menuAction('register')}>
549
+ <p>{$_('register')}</p>
550
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"/></svg>
551
+ </div>
552
+ </div>
553
+ {/if}
554
+ <div class="Slot1">
555
+ <slot name="slot1"></slot>
556
+ </div>
557
+ <div class="Slot2">
558
+ <slot name="slot2"></slot>
559
+ </div>
560
+ <div class="Slot3">
561
+ <slot name="slot3"></slot>
562
+ </div>
563
+ {#if !mobileView}
564
+ <div class="LanguageSelector">
565
+ {#if (languagesArray.length > 1) }
566
+ <div class="LanguageDropdown">
567
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
568
+ <div class="SelectedOption" on:click={() => toggleLanguageDropdown()}>
569
+ {#if countryflagheader == 'true' }
570
+ <span class="LanguageName">{@html countryFlags[determineFlag()]}</span>
571
+ {:else}
572
+ <span class="LanguageName">{determineFlag()}</span>
573
+ {/if}
574
+ <span class=" {isOptionsListVisible ? 'TriangleActive' : 'TriangleInactive'}">
575
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="6.835" viewBox="0 0 14 6.835">
576
+ <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"/>
577
+ </svg>
578
+ </span>
579
+ </div>
580
+ </div>
581
+ <div class="OptionList {isOptionsListVisible ? 'Active' : ''}">
582
+ {#each languagesArray as operatorLanguage}
583
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
584
+ <div class="LanguageOption" on:click={() => selectLanguage(operatorLanguage)}>
585
+ {#if countryflagheader == 'true' }
586
+ <span class="FlagIcon">
587
+ {@html countryFlags[determineFlag(operatorLanguage)]}
588
+ </span>
589
+ {/if}
590
+ <span class="LanguageName">{operatorLanguage.slice(-2)}</span>
591
+ </div>
592
+ {/each}
593
+ </div>
594
+ {/if}
595
+ </div>
596
+ {/if}
597
+ </div>
598
+ <div class="Separator">
599
+
600
+ </div>
601
+ {#if !mobileView}
602
+ <div class="SecondaryNav">
603
+ <div class="LeftSpace">
604
+ <span class="fi fi-gr"></span> <span class="fi fi-gr fis"></span>
605
+ </div>
606
+ <div class="SecondaryMenuContent">
607
+ {#if primaryMenuLoading}
608
+ {#each new Array(2) as item}
609
+ <div class="Skeleton SkeletonText"></div>
610
+ {/each}
611
+ {:else}
612
+ {#each secondaryMenuArray as secondaryItem}
613
+ <span class="ItemSecondary {secondaryItem.id == activeIndex ? 'Active' : ''}">
614
+ <p on:click={() => navigationTrigger(secondaryItem)}>{secondaryItem.label}</p>
615
+ </span>
616
+ {/each}
617
+ {/if}
618
+ </div>
619
+ </div>
620
+ {/if}
621
+ </div>
622
+ <!--
623
+ {#if isLoggedIn}
624
+ {#if mobileView}
625
+ <header class="HeaderWrapper HeaderMobileWrapper" bind:this={customStylingContainer}>
626
+ <div class="HeaderContainer">
627
+ <div class="HeaderMobileMainNav">
628
+ {#if !hamburgerMenuActive}
629
+ <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
630
+ viewBox="0 0 22 16">
631
+ <defs>
632
+ <style>.a {
633
+ fill: var(--emw-color-white, #FFFFFF);
634
+ }
635
+ </style>
636
+ </defs>
637
+ <g transform="translate(-14 -13)">
638
+ <rect class="a" width="18" height="2" transform="translate(14 13)"/>
639
+ <rect class="a" width="22" height="2" transform="translate(14 20)"/>
640
+ <rect class="a" width="22" height="2" transform="translate(14 27)"/>
641
+ </g>
642
+ </svg>
643
+ {/if}
644
+ </div>
645
+
646
+ <div class="HeaderTopActions" part="HeaderTopActions">
647
+ <div class="HeaderItemsMenu PrimaryMenu" part="HeaderItemsMenu PrimaryMenu">
648
+ <player-account-balance-modal {session} {userid} {endpoint} {lang} {clientstyling} {clientstylingurl} {customlocaleidentifier} {gmversion} {displaybalanceoption} {currencyseparator} {currencydecimal} {currencyprecision} />
649
+ <div>
650
+ <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={() => menuAction('deposit')}>{$_('deposit')}</div>
651
+ {#if shortCashierActivated}
652
+ <div class="ShortCashierWindow" on:click={(event) => closeShortCashier(event)}></div>
653
+ <div class="ShortCashierContainerWrapperMobile">
654
+ <div class="ShortCashierContainerMobile">
655
+ <div class="ClosePopUpButtonShortCashier" on:click={(event) => closeShortCashier(event)}>
656
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg">
657
+ <line x1="2" y1="2" x2="18" y2="18" stroke="black" stroke-width="2"/>
658
+ <line x1="18" y1="2" x2="2" y2="18" stroke="black" stroke-width="2"/>
659
+ </svg>
660
+ </div>
661
+ {#if gmversion === 'gmcore'}
662
+ <player-deposit
663
+ {endpoint}
664
+ {session}
665
+ playerid={userid}
666
+ {lang}
667
+ {hasdefaultamount}
668
+ {playercurrency}
669
+ {shortcashierenabled}
670
+ {clientstyling}
671
+ {clientstylingurl}
672
+ ></player-deposit>
673
+ {:else}
674
+ <user-deposit-withdrawal
675
+ {endpoint}
676
+ type="deposit"
677
+ channel="Mobile"
678
+ language={lang}
679
+ is-short-cashier={shortcashierenabled}
680
+ product-type={producttype}
681
+ user-id={userid}
682
+ {session}
683
+ success-url={'https://' + window.location.hostname + '/' + lang + successurl}
684
+ cancel-url={'https://' + window.location.hostname + '/' + lang + cancelurl}
685
+ fail-url={'https://' + window.location.hostname + '/' + lang + failurl}
686
+ sports-url={'https://' + window.location.hostname + '/' + lang + sportsurl}
687
+ casino-url={'https://' + window.location.hostname + '/' + lang + casinourl}
688
+ contact-url={'https://' + window.location.hostname + '/' + lang + contacturl}
689
+ home-url={'https://' + window.location.hostname + '/' + lang + homeurl}
690
+ deposit-url={'https://' + window.location.hostname + '/' + lang + depositurl}
691
+ ></user-deposit-withdrawal>
692
+ {/if}
693
+ </div>
694
+ </div>
695
+ {/if}
696
+ </div>
697
+ <div class="Item ItemAccount" part="Item ItemAccount" on:click={() => menuAction('myaccount')}>
698
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
699
+ <defs>
700
+ <style>.a {
701
+ fill: var(--emw-color-white, #FFFFFF);
702
+ }
703
+ </style>
704
+ </defs>
705
+ <g transform="translate(-8 -4)">
706
+ <path class="a"
707
+ 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"
708
+ transform="translate(0 0)"/>
709
+ </g>
710
+ </svg>
711
+ </div>
712
+ </div>
713
+ </div>
714
+ </div>
715
+ </header>
716
+ {:else}
717
+ <header class="HeaderWrapper" bind:this={customStylingContainer}>
718
+ <div class="HeaderContainer">
719
+
720
+ <nav class="HeaderMainNav">
721
+ {#if !isLoading}
722
+ <casino-slider
723
+ class="HeaderItemsMenu"
724
+ part="HeaderItemsMenu"
725
+ {identity}
726
+ use:sendSliderData
727
+ isprimarymenu=true
728
+ {actionevent}
729
+ activeindex={primaryActiveIndex}
730
+ {endpoint}
731
+ {lang}
732
+ location="headerMain"
733
+ {showsubgroups}
734
+ {clientstyling}
735
+ {clientstylingurl}
736
+ />
737
+ {/if}
738
+ </nav>
739
+ <div class="HeaderTopActions">
740
+ <div class="HeaderItemsMenu PrimaryMenu">
741
+ <player-account-balance-modal {session} {userid} {endpoint} {lang} {clientstyling} {clientstylingurl} {customlocaleidentifier} {gmversion} {displaybalanceoption} {currencyseparator} {currencydecimal} {currencyprecision}/>
742
+ <div>
743
+ <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={() => menuAction('deposit')}>{$_('deposit')}</div>
744
+ {#if shortCashierActivated}
745
+ <div class="ShortCashierWindow" on:click={(event) => closeShortCashier(event)}></div>
746
+ <div class="ShortCashierContainerWrapper">
747
+ <div class="ShortCashierContainer">
748
+ <div class="ClosePopUpButtonShortCashier" on:click={(event) => closeShortCashier(event)}>
749
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg">
750
+ <line x1="2" y1="2" x2="18" y2="18" stroke="black" stroke-width="2"/>
751
+ <line x1="18" y1="2" x2="2" y2="18" stroke="black" stroke-width="2"/>
752
+ </svg>
753
+ </div>
754
+ {#if gmversion === 'gmcore'}
755
+ <player-deposit
756
+ {endpoint}
757
+ {session}
758
+ playerid={userid}
759
+ {lang}
760
+ {hasdefaultamount}
761
+ {playercurrency}
762
+ {shortcashierenabled}
763
+ {clientstyling}
764
+ {clientstylingurl}
765
+ ></player-deposit>
766
+ {:else}
767
+ <user-deposit-withdrawal
768
+ {endpoint}
769
+ type="deposit"
770
+ channel="Desktop"
771
+ language={lang}
772
+ is-short-cashier={shortcashierenabled}
773
+ product-type={producttype}
774
+ user-id={userid}
775
+ {session}
776
+ success-url={'https://' + window.location.hostname + '/' + lang + successurl}
777
+ cancel-url={'https://' + window.location.hostname + '/' + lang + cancelurl}
778
+ fail-url={'https://' + window.location.hostname + '/' + lang + failurl}
779
+ sports-url={'https://' + window.location.hostname + '/' + lang + sportsurl}
780
+ casino-url={'https://' + window.location.hostname + '/' + lang + casinourl}
781
+ contact-url={'https://' + window.location.hostname + '/' + lang + contacturl}
782
+ home-url={'https://' + window.location.hostname + '/' + lang + homeurl}
783
+ deposit-url={'https://' + window.location.hostname + '/' + lang + depositurl}
784
+ ></user-deposit-withdrawal>
785
+ {/if}
786
+ </div>
787
+ </div>
788
+ {/if}
789
+ </div>
790
+ <div class="Item ItemAccount" part="Item ItemAccount" on:click={() => menuAction('myaccount')}>
791
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
792
+ <defs>
793
+ <style>.a {
794
+ fill: var(--emw-color-white, #FFFFFF);
795
+ }
796
+ </style>
797
+ </defs>
798
+ <g transform="translate(-8 -4)">
799
+ <path class="a"
800
+ 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"
801
+ transform="translate(0 0)"/>
802
+ </g>
803
+ </svg>
804
+ </div>
805
+ </div>
806
+ </div>
807
+ </div>
808
+ <nav class="HeaderSecondaryNav">
809
+ <ul class="HeaderItemsMenuSecondary">
810
+ {#each secondaryMenuArray as secondaryItem}
811
+ <li class="ItemSecondary {secondaryActiveIndex?.toString().indexOf('$') > -1 ? (secondaryActiveIndex?.split("$").pop() == secondaryItem.id.split("$").pop() ? 'active': '') : (secondaryActiveIndex == secondaryItem.id ? 'active': '')}" part="ItemSecondary">
812
+ <button on:click={() => navigationTrigger(secondaryItem)}>{secondaryItem.label}</button>
813
+ </li>
814
+ {/each}
815
+ </ul>
816
+ </nav>
817
+ </header>
818
+ {/if}
819
+ {:else}
820
+ {#if mobileView}
821
+ <header class="HeaderWrapper HeaderMobileWrapper" bind:this={customStylingContainer}>
822
+ <div class="HeaderContainer">
823
+ <div class="HeaderMobileMainNav">
824
+ <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
825
+ viewBox="0 0 22 16">
826
+ <defs>
827
+ <style>.a {
828
+ fill: var(--emw-color-white, #FFFFFF);
829
+ }
830
+ </style>
831
+ </defs>
832
+ <g transform="translate(-14 -13)">
833
+ <rect class="a" width="18" height="2" transform="translate(14 13)"/>
834
+ <rect class="a" width="22" height="2" transform="translate(14 20)"/>
835
+ <rect class="a" width="22" height="2" transform="translate(14 27)"/>
836
+ </g>
837
+ </svg>
838
+ </div>
839
+ <div class="HeaderBranding" on:click={()=>menuAction('lobby')}>
840
+ {#if logoFromCms}
841
+ <img src={logoPath} alt="Logo">
842
+ {:else}
843
+ <img src={everymatrixLogo} alt="Logo">
844
+ {/if}
845
+ </div>
846
+
847
+ <div class="HeaderTopActions">
848
+ <div class="HeaderItemsMenu">
849
+ <div class="Item ItemLogin" on:click={()=>menuAction('login')}>{$_('login')}</div>
850
+ <div class="Item ItemRegister" on:click={()=>menuAction('register')}>{$_('register')}</div>
851
+ </div>
852
+ </div>
853
+ </div>
854
+ </header>
855
+ {:else}
856
+ <header class="HeaderWrapper" bind:this={customStylingContainer}>
857
+ <div class="HeaderContainer">
858
+ <div class="HeaderBranding" on:click={()=>menuAction('lobby')}>
859
+ {#if logoFromCms}
860
+ <img src={logoPath} alt="Logo">
861
+ {:else}
862
+ <img src={everymatrixLogo} alt="Logo">
863
+ {/if}
864
+ </div>
865
+
866
+ <nav class="HeaderMainNav">
867
+ {#if !isLoading}
868
+ <casino-slider
869
+ class="HeaderItemsMenu"
870
+ part="HeaderItemsMenu"
871
+ {identity}
872
+ use:sendSliderData
873
+ isprimarymenu=true
874
+ {actionevent}
875
+ activeindex={primaryActiveIndex}
876
+ location="headerMain"
877
+ {endpoint}
878
+ {lang}
879
+ {clientstyling}
880
+ {clientstylingurl}
881
+ />
882
+ {/if}
883
+ </nav>
884
+ <div class="HeaderTopActions">
885
+ <div class="HeaderItemsMenu">
886
+ <div class="Item ItemLogin" tabindex="0" on:click={()=>menuAction('login')}>{$_('login')}</div>
887
+ <div class="Item ItemRegister" tabindex="0" on:click={()=>menuAction('register')}>{$_('register')}</div>
888
+ {#if (languagesArray.length > 1) }
889
+ {#if countryflagheader !== 'true'}
890
+ <select bind:value={selectedLanguage} class="Item ItemLanguage NoFlag" on:change={()=>menuAction('language')}>
891
+ {#each languagesArray as operatorLanguage}
892
+ <option value={operatorLanguage}>{operatorLanguage.slice(-2)}</option>
893
+ {/each}
894
+ </select>
895
+ {:else}
896
+ <div class="LanguageDropdown">
897
+ <div class="SelectedOption Item ItemLanguage" on:click={() => toggleLanguageDropdown()}>
898
+ <span class="FlagIcon">
899
+ <img src={`http://purecatamphetamine.github.io/country-flag-icons/3x2/${determineFlag(selectedLanguage.slice(-2))}.svg`}/>
900
+ </span>
901
+ <span class="LanguageName">{selectedLanguage.slice(-2)}</span>
902
+ <span class="TriangleInactive {isOptionsListVisible ? 'TriangleActive' : ''}">
903
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="6.835" viewBox="0 0 14 6.835">
904
+ <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"/>
905
+ </svg>
906
+ </span>
907
+ </div>
908
+ {#if isOptionsListVisible}
909
+ <div class="OptionList">
910
+ {#each languagesArray as operatorLanguage}
911
+ <div class="LanguageOption" on:click={() => selectLanguage(operatorLanguage)}>
912
+ <span class="FlagIcon">
913
+ <img src={`http://purecatamphetamine.github.io/country-flag-icons/3x2/${determineFlag(operatorLanguage.slice(-2))}.svg`}/>
914
+ </span>
915
+ <span class="LanguageName">{operatorLanguage.slice(-2)}</span>
916
+ </div>
917
+ {/each}
918
+ </div>
919
+ {/if}
920
+ </div>
921
+ {/if}
922
+ {/if}
923
+ </div>
924
+ </div>
925
+ </div>
926
+ <nav class="HeaderSecondaryNav">
927
+ <ul class="HeaderItemsMenuSecondary">
928
+ {#each secondaryMenuArray as secondaryItem}
929
+ <li class="ItemSecondary {secondaryActiveIndex?.toString().indexOf('$') > -1 ? (secondaryActiveIndex?.split("$").pop() == secondaryItem.id.split("$").pop() ? 'active': '') : (secondaryActiveIndex == secondaryItem.id ? 'active': '')}" part="ItemSecondary">
930
+ <button on:click={() => navigationTrigger(secondaryItem)}>{secondaryItem.label}</button>
931
+ </li>
932
+ {/each}
933
+ </ul>
934
+ </nav>
935
+ </header>
936
+ {/if}
937
+ {/if}
938
+ -->
939
+
940
+ <casino-hamburger-menu {cmsendpoint} {cmsenv} {userroles} {activecategory} {lang} {countryflaghamburger} {customlocaleidentifier} {languageslist} {clientstyling} {clientstylingurl}></casino-hamburger-menu>
941
+
942
+ <style lang="scss">
943
+ *,
944
+ *::before,
945
+ *::after {
946
+ font-family: inherit
947
+ }
948
+
949
+ :host {
950
+ font-family: inherit;
951
+ }
952
+
953
+ // ------> new stuff
954
+ .NavIcon {
955
+ width: 30px;
956
+ height: 28px;
957
+ position: relative;
958
+ margin: 50px auto;
959
+ -webkit-transform: rotate(0deg);
960
+ -moz-transform: rotate(0deg);
961
+ -o-transform: rotate(0deg);
962
+ transform: rotate(0deg);
963
+ -webkit-transition: .5s ease-in-out;
964
+ -moz-transition: .5s ease-in-out;
965
+ -o-transition: .5s ease-in-out;
966
+ transition: .5s ease-in-out;
967
+ cursor: pointer;
968
+
969
+ span {
970
+ display: block;
971
+ position: absolute;
972
+ height: 3px;
973
+ width: 100%;
974
+ background: #ffffff;
975
+ border-radius: 9px;
976
+ opacity: 1;
977
+ left: 0;
978
+ -webkit-transform: rotate(0deg);
979
+ -moz-transform: rotate(0deg);
980
+ -o-transform: rotate(0deg);
981
+ transform: rotate(0deg);
982
+ -webkit-transition: .25s ease-in-out;
983
+ -moz-transition: .25s ease-in-out;
984
+ -o-transition: .25s ease-in-out;
985
+ transition: .25s ease-in-out;
986
+ }
987
+
988
+ span:nth-child(1) {
989
+ top: 0px;
990
+ width: 80%;
991
+ }
992
+
993
+ span:nth-child(2) {
994
+ top: 9px;
995
+ }
996
+
997
+ span:nth-child(3) {
998
+ top: 18px;
999
+ }
1000
+
1001
+ &.Open span:nth-child(1) {
1002
+ top: 9px;
1003
+ width: 100%;
1004
+ -webkit-transform: rotate(135deg);
1005
+ -moz-transform: rotate(135deg);
1006
+ -o-transform: rotate(135deg);
1007
+ transform: rotate(135deg);
1008
+ }
1009
+
1010
+ &.Open span:nth-child(2) {
1011
+ opacity: 0;
1012
+ left: -60px;
1013
+ }
1014
+
1015
+ &.Open span:nth-child(3) {
1016
+ top: 9px;
1017
+ -webkit-transform: rotate(-135deg);
1018
+ -moz-transform: rotate(-135deg);
1019
+ -o-transform: rotate(-135deg);
1020
+ transform: rotate(-135deg);
1021
+ }
1022
+ }
1023
+
1024
+ .Skeleton {
1025
+ animation: skeleton-loading .6s linear infinite alternate;
1026
+ }
1027
+
1028
+ @keyframes skeleton-loading {
1029
+ 0% {
1030
+ background: linear-gradient(90deg, rgba(35, 178, 78, .2) 0%, rgba(0, 61, 93, .2) 100%);
1031
+ }
1032
+ 12% {
1033
+ background: linear-gradient(90deg, rgba(35, 178, 78, .225) 0%, rgba(0, 61, 93, .225) 100%);
1034
+ }
1035
+ 25% {
1036
+ background: linear-gradient(90deg, rgba(35, 178, 78, .25) 0%, rgba(0, 61, 93, .25) 100%);
1037
+ }
1038
+ 33% {
1039
+ background: linear-gradient(90deg, rgba(35, 178, 78, .275) 0%, rgba(0, 61, 93, .275) 100%);
1040
+ }
1041
+ 50% {
1042
+ background: linear-gradient(90deg, rgba(35, 178, 78, .3) 0%, rgba(0, 61, 93, .3) 100%);
1043
+ }
1044
+ 63% {
1045
+ background: linear-gradient(90deg, rgba(35, 178, 78, .325) 0%, rgba(0, 61, 93, .325) 100%);
1046
+ }
1047
+ 75% {
1048
+ background: linear-gradient(90deg, rgba(35, 178, 78, .35) 0%, rgba(0, 61, 93, .35) 100%);
1049
+ }
1050
+ 88% {
1051
+ background: linear-gradient(90deg, rgba(35, 178, 78, .375) 0%, rgba(0, 61, 93, .375) 100%);
1052
+ }
1053
+ 100% {
1054
+ background: linear-gradient(90deg, rgba(35, 178, 78, .4) 0%, rgba(0, 61, 93, .4) 100%);
1055
+ }
1056
+ }
1057
+
1058
+ .SkeletonText {
1059
+ opacity: 0.5;
1060
+ margin: 0 15px;
1061
+ width: 125px;
1062
+ height: 15px;
1063
+ border-radius: 15px;
1064
+ }
1065
+
1066
+ .HeaderContainer {
1067
+ position: fixed;
1068
+ width: 100%;
1069
+ z-index: 999;
1070
+ background-color: var(--emw-header-color-background, var(--emw-color-background, #000000));
1071
+ display: flex;
1072
+ flex-direction: column;
1073
+ align-items: center;
1074
+ user-select: none;
1075
+
1076
+ .MainNav {
1077
+ width: 99%;
1078
+ height: 84px;
1079
+ display: flex;
1080
+ gap: 5px;
1081
+ flex-direction: row;
1082
+ align-items: center;
1083
+ margin: 0 15px;
1084
+
1085
+ .HeaderMobileMainNav {
1086
+ display: flex;
1087
+ margin-left: 5px;
1088
+ }
1089
+
1090
+ .Logo {
1091
+ display: flex;
1092
+ justify-content: center;
1093
+ align-items: center;
1094
+ width: 10%;
1095
+ min-width: 75px;
1096
+ transition: all .2s;
1097
+
1098
+ .HeaderBranding {
1099
+ width: 140px;
1100
+ cursor: pointer;
1101
+ img {
1102
+ width: 100%;
1103
+ }
1104
+ @media only screen and (max-width: 360px) {
1105
+ margin-right: 0;
1106
+ }
1107
+ }
1108
+
1109
+ &:active {
1110
+ opacity: .9;
1111
+ transform: scale(1.02);
1112
+ }
1113
+ }
1114
+
1115
+ .BalanceDepositWrapper {
1116
+ height: 34px;
1117
+ background-color: white;
1118
+ display: flex;
1119
+ position: relative;
1120
+ justify-content: center;
1121
+ align-items: center;
1122
+ border-radius: 30px;
1123
+
1124
+ .Background {
1125
+ height: 34px;
1126
+ position: absolute;
1127
+ background: linear-gradient(0deg, rgba(35,178,78,1) 0%, rgba(26,205,80,1) 100%) padding-box,
1128
+ linear-gradient(180deg, rgba(35,178,78,.2) 0%, rgba(26,205,80,.2) 100%) border-box;
1129
+ border-radius: 30px;
1130
+ z-index: 3;
1131
+ transition: all 0.3s ease;
1132
+ }
1133
+
1134
+ .Deposit {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ cursor: pointer;
1138
+ justify-content: center;
1139
+ z-index: 4;
1140
+
1141
+ .DepositButton {
1142
+ font-size: 14px;
1143
+ text-align: center;
1144
+ cursor: pointer;
1145
+ padding: 0 10px;
1146
+ transition: all .5s linear;
1147
+ display: flex;
1148
+ justify-content: center;
1149
+ align-items: center;
1150
+ p {
1151
+ text-transform: uppercase;
1152
+ color: white;
1153
+ transition: all .3s ease;
1154
+
1155
+ &:hover {
1156
+ text-shadow: 0px 1px 5px rgba(0, 0, 0, .2);
1157
+ }
1158
+
1159
+ &:active {
1160
+ color: black;
1161
+ }
1162
+ }
1163
+ }
1164
+
1165
+ &.Open {
1166
+ .DepositButton {
1167
+ p {
1168
+ transition: all .5s linear;
1169
+ color: black;
1170
+ opacity: .5;
1171
+ }
1172
+ }
1173
+
1174
+ }
1175
+ }
1176
+
1177
+ .Balance {
1178
+ display: flex;
1179
+ z-index: 4;
1180
+ height: 100%;
1181
+ padding-left: 10px;
1182
+ align-items: center;
1183
+
1184
+ &.Open {
1185
+ color: white;
1186
+ }
1187
+ }
1188
+ }
1189
+
1190
+ .Profile {
1191
+ display: flex;
1192
+ justify-content: center;
1193
+ flex-direction: column;
1194
+ cursor: pointer;
1195
+
1196
+ .ProfileWrapper {
1197
+ width: 30px;
1198
+ height: 30px;
1199
+ background-color: orange;
1200
+ border-radius: 50px;
1201
+ display: flex;
1202
+ justify-content: center;
1203
+ align-items: center;
1204
+ transition: all .3s ease;
1205
+
1206
+ svg {
1207
+ width: 15px;
1208
+ height: 16px;
1209
+ fill: var(--emw-color-white, #FFFFFF)
1210
+
1211
+ }
1212
+ &:hover {
1213
+ box-shadow: 0px 0px 4px white;
1214
+ }
1215
+
1216
+ &:active {
1217
+ svg {
1218
+ fill: var(--emw-color-black, #000000)
1219
+ }
1220
+ }
1221
+ }
1222
+ }
1223
+
1224
+ .PrimaryMenu {
1225
+ display: flex;
1226
+ flex-direction: row;
1227
+ align-items: center;
1228
+ width: 100%;
1229
+
1230
+ .ItemMenu {
1231
+ color: white;
1232
+ margin: 0 20px;
1233
+ text-transform: uppercase;
1234
+ height: 84px;
1235
+ transition: all .5s;
1236
+ cursor: pointer;
1237
+
1238
+ &:after {
1239
+ content: "";
1240
+ display: block;
1241
+ height: 5px;
1242
+ width: 100%;
1243
+ cursor: pointer;
1244
+ background-color: pink;
1245
+ position: relative;
1246
+ }
1247
+
1248
+ .MenuHover {
1249
+ width: 0px;
1250
+ transition: transform 0.3s ease-in-out;
1251
+ transform-origin: center;
1252
+ transform: scaleX(0);
1253
+ }
1254
+
1255
+ p {
1256
+ height: 33px;
1257
+ margin-top: 35px;
1258
+ }
1259
+
1260
+ &:hover, &.Active {
1261
+ color: #22B04F;
1262
+
1263
+ .MenuHover {
1264
+ transform: scaleX(1);
1265
+ opacity: 1;
1266
+ background-color: rgba(255, 255, 255, 0.5);
1267
+ width: 100%;
1268
+ position: relative;
1269
+ height: 5px;
1270
+ z-index: 4;
1271
+ }
1272
+ }
1273
+
1274
+ &:active {
1275
+ color: rgba(255,255,255,1);
1276
+ }
1277
+ }
1278
+ }
1279
+
1280
+ .AuthButtons {
1281
+ display: flex;
1282
+ flex-direction: row;
1283
+ justify-content: center;
1284
+ align-items: center;
1285
+
1286
+ .Item {
1287
+ gap: 5px;
1288
+ padding: 0 25px;
1289
+ display: flex;
1290
+ align-items: center;
1291
+ color: white;
1292
+
1293
+ &.ItemLogin {
1294
+ font-size: 14px;
1295
+ height: 36px;
1296
+ text-align: center;
1297
+ margin-right: 10px;
1298
+ position: relative;
1299
+ cursor: pointer;
1300
+ background: linear-gradient(0deg, rgba(231,145,28,1) 0%, rgba(224,169,76,1) 100%) padding-box,
1301
+ linear-gradient(180deg, rgba(231,145,28,.2) 0%, rgba(224,169,76,.2) 100%) border-box;
1302
+ border-radius: 30px;
1303
+ border: 2px solid transparent;
1304
+ transition: all .3s linear;
1305
+
1306
+ &:hover {
1307
+ color: white;
1308
+ background: linear-gradient(180deg, rgba(231,145,28,1) 0%, rgba(224,169,76,1) 100%) padding-box,
1309
+ linear-gradient(0deg, rgba(231,145,28,.2) 0%, rgba(224,169,76,.2) 100%) border-box;
1310
+ border: 2px solid white;
1311
+ }
1312
+
1313
+ &:active {
1314
+ background: linear-gradient(0deg, rgba(231,145,28,1) 0%, rgba(224,169,76,1) 100%) padding-box,
1315
+ linear-gradient(180deg, rgba(231,145,28,.4) 0%, rgba(224,169,76,.4) 100%) border-box;
1316
+ }
1317
+ }
1318
+
1319
+ &.ItemRegister {
1320
+ background: linear-gradient(0deg, rgba(35,178,78,1) 0%, rgba(26,205,80,1) 100%) padding-box,
1321
+ linear-gradient(180deg, rgba(35,178,78,.2) 0%, rgba(26,205,80,.2) 100%) border-box;
1322
+ border-radius: 30px;
1323
+ border: 2px solid transparent;
1324
+ font-size: 14px;
1325
+ height: 36px;
1326
+ text-align: center;
1327
+ line-height: 44px;
1328
+ cursor: pointer;
1329
+ transition: all .3s linear;
1330
+
1331
+ &:hover {
1332
+ background: linear-gradient(180deg, rgba(35,178,78,1) 0%, rgba(26,205,80,1) 100%) padding-box,
1333
+ linear-gradient(0deg, rgba(35,178,78,.2) 0%, rgba(26,205,80,.2) 100%) border-box;
1334
+ border: 2px solid white;
1335
+ }
1336
+
1337
+ &:active {
1338
+ background: linear-gradient(0deg, rgba(35,178,78,1) 0%, rgba(26,205,80,1) 100%) padding-box,
1339
+ linear-gradient(180deg, rgba(35,178,78,.2) 0%, rgba(26,205,80,.2) 100%) border-box;
1340
+ }
1341
+ }
1342
+
1343
+ svg {
1344
+ width: 15px;
1345
+ height: 15px;
1346
+ fill: white;
1347
+ padding-bottom: 2px;
1348
+ }
1349
+ }
1350
+ }
1351
+
1352
+ .Slot1 {}
1353
+ .Slot2 {}
1354
+ .Slot3 {}
1355
+ .LanguageSelector {
1356
+ align-content: center;
1357
+ height: 100%;
1358
+ cursor: pointer;
1359
+ transform: all .3s linear;
1360
+ color: white;
1361
+
1362
+ .SelectedOption {
1363
+ display: flex;
1364
+ align-items: center;
1365
+ justify-content: center;
1366
+
1367
+ .TriangleActive, .TriangleInactive {
1368
+ display: block;
1369
+ margin: 0 0 0 10px;
1370
+ transition: all .2s;
1371
+ &:hover {
1372
+ transform: scale(1.2);
1373
+ }
1374
+
1375
+ svg{
1376
+ margin: 2px 0px;
1377
+ }
1378
+ }
1379
+
1380
+ .TriangleActive {
1381
+ transform: scale(1.1) rotateX(180deg);
1382
+ margin-bottom: 5px;
1383
+
1384
+ &:hover {
1385
+ transform: scale(1.1) rotateX(180deg);
1386
+ }
1387
+ }
1388
+ }
1389
+ .LanguageName {
1390
+ .ItemLanguage {
1391
+ display: flex;
1392
+ justify-content: space-around;
1393
+ }
1394
+
1395
+ svg {
1396
+ width: 30px;
1397
+ border-radius: 20px;
1398
+ }
1399
+ }
1400
+
1401
+ .OptionList {
1402
+ border: 1px solid var(--emw-header-color-primary);
1403
+ padding: 10px;
1404
+ position: absolute;
1405
+ cursor: pointer;
1406
+ display: flex;
1407
+ gap: 4px;
1408
+ flex-direction: column;
1409
+ border-radius: 10px;
1410
+ opacity: 0;
1411
+ transition: all 0.4s;
1412
+ z-index: 6;
1413
+ right: 5px;
1414
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1415
+ background: linear-gradient(90deg, rgba(42,79,55,1) 0%, rgba(0,61,92,1) 100%);
1416
+
1417
+ &.Active {
1418
+ opacity: 1;
1419
+ }
1420
+
1421
+ .FlagIcon {
1422
+ width: 16px;
1423
+
1424
+ svg {
1425
+ border-radius: 5px;
1426
+ }
1427
+ }
1428
+
1429
+ .LanguageOption {
1430
+ display: flex;
1431
+ align-items: center;
1432
+ transform: scale(1.1);
1433
+ gap: 3px;
1434
+ padding: 7px;
1435
+
1436
+ &:hover {
1437
+ transition: all 0.2s;
1438
+ color: var(--emw-color-primary);
1439
+ background: var(--emw-color-primary) transparent;
1440
+ box-shadow: inset 0px 0px 0px 2px var(--emw-color-primary);
1441
+ border-radius: 20px;
1442
+ box-sizing: border-box;
1443
+ }
1444
+ }
1445
+ }
1446
+ }
1447
+ }
1448
+
1449
+ .Separator {
1450
+ width: 100%;
1451
+ height: 5px;
1452
+ background: rgb(0,0,0);
1453
+ background: linear-gradient(90deg, rgba(0,0,0,1) 0%, rgba(35,172,77,1) 50%, rgba(0,0,0,1) 100%);
1454
+ z-index: 3;
1455
+ }
1456
+
1457
+ .SecondaryNav {
1458
+ width: 100%;
1459
+ height: 50px;
1460
+ display: flex;
1461
+ align-items: center;
1462
+ background: linear-gradient(90deg, rgba(35,172,77,1) 0%, rgba(18,62,33,1) 100%);
1463
+ z-index: 3;
1464
+
1465
+ .LeftSpace {
1466
+ width: 10%;
1467
+ }
1468
+
1469
+ .SecondaryMenuContent {
1470
+ text-transform: uppercase;
1471
+ margin: 0 20px;
1472
+ color: white;
1473
+ transition: all .5s;
1474
+ display: flex;
1475
+ cursor: pointer;
1476
+ user-select: none;
1477
+
1478
+ .Active {
1479
+ transition: all .5s;
1480
+ color: black;
1481
+
1482
+ &:hover {
1483
+ opacity: .5;
1484
+ color: white;
1485
+ }
1486
+ }
1487
+
1488
+ &:hover {
1489
+ color: black;
1490
+ }
1491
+
1492
+ &:active {
1493
+ color: white;
1494
+ }
1495
+ }
1496
+ }
1497
+ }
1498
+
1499
+ // ------> old stuff
1500
+
1501
+ @keyframes ModalBounce {
1502
+ 0% {
1503
+ opacity: 0;
1504
+ transform: translateY(20px);
1505
+ }
1506
+ 50% {
1507
+ transform: translateY(-6px);
1508
+ opacity: 0.8;
1509
+ }
1510
+ 100% {
1511
+ transform: translateY(0);
1512
+ opacity: 1;
1513
+ }
1514
+ }
1515
+
1516
+
1517
+ input,
1518
+ textarea,
1519
+ button {font-family: inherit}
1520
+
1521
+
1522
+ .HeaderSlider {
1523
+ width: 100%;
1524
+ height: 400px;
1525
+ }
1526
+
1527
+
1528
+ .ClosePopUpButtonShortCashier{
1529
+ margin-left: auto;
1530
+ cursor: pointer;
1531
+ svg {
1532
+ position: absolute;
1533
+ top: 10px;
1534
+ right: 10px;
1535
+ }
1536
+ }
1537
+
1538
+ .ShortCashierWindow{
1539
+ background-color: rgba(0, 0, 0, 0.7);
1540
+ position: fixed;
1541
+ top: 0;
1542
+ bottom: 0;
1543
+ left: 0;
1544
+ right: 0;
1545
+ z-index: 16;
1546
+ }
1547
+
1548
+ .ShortCashierContainerWrapper{
1549
+ position: relative;
1550
+ animation: ModalBounce .5s forwards;
1551
+ z-index: 17;
1552
+ right: 60%;
1553
+ }
1554
+ .ShortCashierContainer{
1555
+ background-color: var(--emw-color-white, #FFFFFF);
1556
+ position: absolute;
1557
+ width: 360px;
1558
+ top: 16px;
1559
+ transform: translateX(-60%);
1560
+ box-shadow: 0px 30px 30px var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1561
+ border-radius: 5px;
1562
+ z-index: 17;
1563
+ box-shadow: 0px 5px 20px 0px #191919;
1564
+ &:before {
1565
+ content: "";
1566
+ background: var(--emw-color-white, #FFFFFF);
1567
+ clip-path: polygon(50% 0, 0% 100%, 100% 100%);
1568
+ position: absolute;
1569
+ top: -8px;
1570
+ left: 84%;
1571
+ width: 25px;
1572
+ height: 10px;
1573
+ transform: translateX(-50%);
1574
+ z-index: 1;
1575
+ }
1576
+ }
1577
+
1578
+ .ShortCashierContainerWrapperMobile{
1579
+ position: relative;
1580
+ animation: ModalBounce .5s forwards;
1581
+ right: 110%;
1582
+ z-index: 17;
1583
+ }
1584
+ .ShortCashierContainerMobile {
1585
+ background-color: var(--emw-color-white, #FFFFFF);
1586
+ position: absolute;
1587
+ width: 80vw;
1588
+ top: 14px;
1589
+ left: 50%;
1590
+ transform: translateX(-60%);
1591
+ box-shadow: 0px 30px 30px var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1592
+ border-radius: 5px;
1593
+ z-index: 17;
1594
+ box-shadow: 0px 5px 20px 0px #191919;
1595
+ &:before {
1596
+ content: "";
1597
+ background: var(--emw-color-white, #FFFFFF);
1598
+ clip-path: polygon(50% 0, 0% 100%, 100% 100%);
1599
+ position: absolute;
1600
+ top: -8px;
1601
+ left: 84%;
1602
+ width: 25px;
1603
+ height: 10px;
1604
+ transform: translateX(-50%);
1605
+ z-index: 1;
1606
+ }
1607
+ }
1608
+
1609
+
1610
+ .FlagIcon img {
1611
+ width: 20px;
1612
+ height: 14px;
1613
+ margin-right: 8px;
1614
+ border-radius: 2px;
1615
+ }
1616
+
1617
+
1618
+
1619
+ .HeaderWrapper {
1620
+ background: var(--emw-header-color-menu-bg, var(--emw-color-background-secondary, #050518));
1621
+ }
1622
+
1623
+
1624
+
1625
+ .HeaderMainNav {
1626
+ text-align: left;
1627
+ }
1628
+
1629
+ .HeaderTopActions {
1630
+ text-align: right;
1631
+ margin-left: auto;
1632
+ }
1633
+
1634
+ .HeaderSecondaryNav {
1635
+ flex-direction: row;
1636
+ width: 100%;
1637
+ background: var(--emw-header-color-secondary-menu-bg, var(--emw-color-background-secondary, #050518));
1638
+ border-top: 1px solid var(--emw-color-gray-300, #58586B);
1639
+ }
1640
+
1641
+ .HeaderItemsMenu {
1642
+ gap: 8px;
1643
+ display: flex;
1644
+ align-content: flex-start;
1645
+ list-style: none;
1646
+ text-transform: uppercase;
1647
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1648
+ font-size: 16px;
1649
+ align-items: center;
1650
+
1651
+ .Item:hover {
1652
+ .HeaderSecondaryNav {
1653
+ display: block;
1654
+ }
1655
+ }
1656
+
1657
+ .Item {
1658
+ gap: 2px;
1659
+ padding: 0 12px;
1660
+ display: flex;
1661
+ align-items: center;
1662
+ }
1663
+
1664
+ &.PrimaryMenu {
1665
+ gap: 10px;
1666
+ }
1667
+ }
1668
+
1669
+ /*.Item a {
1670
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1671
+ text-decoration: none;
1672
+ border-top: 1px solid transparent;
1673
+ }
1674
+
1675
+ .Item a:hover {
1676
+ color: var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1677
+ border-top: 1px solid var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1678
+ padding-top: 5px;
1679
+ }*/
1680
+
1681
+ .ItemDeposit {
1682
+ background: var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1683
+ }
1684
+
1685
+ .ItemLanguage {
1686
+ height: 44px;
1687
+ width: 74px;
1688
+ text-align: center;
1689
+ line-height: 44px;
1690
+ background: transparent;
1691
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1692
+ border: none;
1693
+ cursor: pointer;
1694
+ outline: none;
1695
+ -webkit-appearance: none;
1696
+ -moz-appearance: none;
1697
+ appearance: none;
1698
+
1699
+ option {
1700
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1701
+ }
1702
+ }
1703
+
1704
+ .ItemLanguage.NoFlag{
1705
+ 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(--emw-header-color-menu-bg, var(--emw-color-background-secondary, #050518));
1706
+ background-position: calc(100% - 0.75rem) center;
1707
+ width: 90px;
1708
+ margin-right: 6px;
1709
+ }
1710
+
1711
+ .ItemBalance {
1712
+ background: transparent;
1713
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1714
+ border: 0;
1715
+ }
1716
+
1717
+ .ItemAccount {
1718
+ cursor: pointer;
1719
+
1720
+ svg {
1721
+ width: 20px;
1722
+ height: 20px;
1723
+ }
1724
+ }
1725
+
1726
+ .HeaderItemsMenuSecondary {
1727
+ display: flex;
1728
+ flex-direction: row;
1729
+ align-content: flex-start;
1730
+ align-items: center;
1731
+ height: 60px;
1732
+ list-style: none;
1733
+ text-transform: uppercase;
1734
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1735
+ font-size: 14px;
1736
+ max-width: 1280px;
1737
+ margin: 0 auto;
1738
+ overflow-y: hidden;
1739
+ overflow-x: auto;
1740
+ padding: 0;
1741
+ }
1742
+
1743
+ .HeaderItemsMenuSecondary .ItemSecondary {
1744
+ width: auto;
1745
+ height: 100%;
1746
+ display: flex;
1747
+ justify-content: center;
1748
+ padding: 0 15px;
1749
+ font-weight: 600;
1750
+ transition-duration: 0.15s;
1751
+
1752
+ button {
1753
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1754
+ text-decoration: none;
1755
+ border: none;
1756
+ background: none;
1757
+ font-size: 14px;
1758
+ font-weight: 600;
1759
+ text-transform: uppercase;
1760
+ cursor: pointer;
1761
+ &:hover {
1762
+ color: var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1763
+ }
1764
+
1765
+ &:focus {
1766
+ color: var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1767
+ }
1768
+
1769
+ &:visited {
1770
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1771
+ }
1772
+
1773
+ &:focus-visible {
1774
+ color: var(--emw-header-typography, var(--emw-color-white, #FFFFFF));
1775
+ outline: none;
1776
+ }
1777
+ }
1778
+ &.active {
1779
+ background: var(--emw-header-color-primary, var(--emw-color-primary, #D0046C));
1780
+ }
1781
+ }
1782
+
1783
+ .HeaderSliderMobile {
1784
+ background-position: bottom;
1785
+ }
1786
+
1787
+ .HeaderMobileWrapper {
1788
+ .HeaderContainer {
1789
+ height: 55px;
1790
+ padding: 0 15px;
1791
+ gap: 10px;
1792
+ @media only screen and (max-width: 360px) {
1793
+ padding: 0 5px;
1794
+ }
1795
+ }
1796
+
1797
+ .HeaderItemsMenu {
1798
+ .Item {
1799
+ padding: 0 10px;
1800
+ display: block;
1801
+ width: unset;
1802
+ }
1803
+
1804
+ .ItemBalance {
1805
+ font-size: 12px;
1806
+ }
1807
+
1808
+ .ItemAccount {
1809
+ padding: 0;
1810
+ }
1811
+ }
1812
+
1813
+ .ItemRegister, .ItemDeposit, .ItemLogin {
1814
+ height: 30px;
1815
+ line-height: 30px;
1816
+ font-size: 12px;
1817
+ }
1818
+
1819
+ .ItemLogin {
1820
+ margin-right: 10px;
1821
+ }
1822
+ }
1823
+ </style>