@everymatrix/casino-header-controller 0.0.367 → 0.0.368

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,656 +1,656 @@
1
- <svelte:options tag={null} />
2
-
3
- <script lang="ts">
4
- import { onMount } from "svelte";
5
- import { isMobile } from 'rvhelper';
6
- import { _, addNewMessages, setLocale, setupI18n } from './i18n';
7
- import { CasinoHeaderController } from './translations';
8
-
9
- import '@everymatrix/casino-slider';
10
- import '@everymatrix/casino-hamburger-menu';
11
- import '@everymatrix/player-account-balance-modal';
12
- import everymatrixLogo from './images/everymatrix-logo-white.png';
13
-
14
- export let session:string = '';
15
- export let userid:string = '';
16
- export let endpoint:string = '';
17
- export let cmsendpoint:string = '';
18
- export let cmsenv:string = 'stage';
19
- export let lang:string = 'en';
20
- export let languageslist:string = 'en, ro';
21
- export let activecategory:string = '';
22
-
23
- export let operatorid:string = '';
24
- export let pagetag:string = '';
25
- export let positiontag:string = '';
26
-
27
- export let actionevent:string = '';
28
-
29
- export let userroles:string = '';
30
-
31
- let activeIndex:string;
32
- let identity:string = "HeaderMenu";
33
-
34
- setupI18n({ withLocale: 'en', translations: {}});
35
-
36
- Object.keys(CasinoHeaderController).forEach((item:any) => {
37
- addNewMessages(item, CasinoHeaderController[item]);
38
- });
39
-
40
- 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"
41
- viewBox="0 0 384.971 384.971" style="enable-background:new 0 0 384.971 384.971;" xml:space="preserve">
42
- <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
43
- 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
44
- C192.485,366.299,187.095,360.91,180.455,360.91z"/>
45
- <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
46
- 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
47
- 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"/>
48
- </svg>`;
49
-
50
- let mainMenuArray:Array<any> = [];
51
- let secondaryMenuArray:Array<any> = [];
52
- let selectedLanguage:string = '';
53
- let hamburgerURL:URL;
54
- let headerURL:URL;
55
- let logoURL:URL;
56
- let isLoading:boolean = true;
57
- let logoFromCms:boolean = false;
58
-
59
- let mobileView:boolean = false;
60
- let userAgent:string = window.navigator.userAgent;
61
- let isLoggedIn:boolean = false;
62
- let playerID:string = '';
63
- let sessionID:string = '';
64
- let loginActive:boolean = true;
65
- let language:string = '';
66
- let languagesArray:Array<string> = [];
67
- let hamburgerMenuActive:boolean = false;
68
- let logoPath:string = '';
69
-
70
- const menuAction = (data: any) => {
71
- switch (data) {
72
- case 'login':
73
- loginActive = true;
74
- window.postMessage({type: 'OpenLoginRegisterModal', transition: 'Login' }, window.location.href);
75
- break;
76
-
77
- case 'register':
78
- loginActive = false;
79
- window.postMessage({type: 'OpenLoginRegisterModal', transition: 'Register'}, window.location.href);
80
- break;
81
-
82
- case 'lobby':
83
- window.postMessage({type: 'GoToHomepage'}, window.location.href);
84
- break;
85
-
86
- case 'myaccount':
87
- window.postMessage({type: 'PlayerAccountMenuActive', isMobile: isMobile(userAgent)}, window.location.href);
88
- break;
89
-
90
- case 'deposit':
91
- window.postMessage({type: 'GoToDeposit'}, window.location.href);
92
- break;
93
-
94
- case 'language':
95
- window.postMessage({type: 'LanguageChanged', selectedLanguage}, window.location.href);
96
- break;
97
- }
98
- }
99
-
100
- const toggleMenu = () => {
101
- hamburgerMenuActive = true;
102
- window.postMessage({type: 'OpenHamburgerMenuModal'}, window.location.href);
103
- }
104
-
105
- const messageHandler = (e: any) => {
106
- if (e.data) {
107
- switch (e.data.type) {
108
- case 'UserSessionID':
109
- playerID = e.data.userid;
110
- sessionID = e.data.session;
111
- isLoggedIn = true;
112
- break;
113
-
114
- case 'CloseHamburgerMenu':
115
- if (e.data.showhamburger) {
116
- hamburgerMenuActive = false;
117
- }
118
- break;
119
-
120
- case 'LogoutSuccessfull':
121
- isLoggedIn = false;
122
- break;
123
-
124
- case 'LanguageChanged':
125
- createCMSUrls();
126
- getHeaderMenusData(headerURL);
127
- break;
128
- }
129
- }
130
- }
131
-
132
- const setSession = () => {
133
- isLoggedIn = true;
134
- sessionID = session;
135
- }
136
-
137
- const createCMSUrls = () => {
138
- headerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/menu`)
139
- hamburgerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/hamburger-menu`);
140
- logoURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/op-options/style`);
141
-
142
- headerURL.searchParams.append('device', 'dk');
143
- headerURL.searchParams.append('env', cmsenv);
144
- headerURL.searchParams.append('language', selectedLanguage.toLowerCase());
145
- headerURL.searchParams.append('platform', 'dk');
146
- headerURL.searchParams.append('userRoles', userroles);
147
-
148
- hamburgerURL.searchParams.append('device', 'dk');
149
- hamburgerURL.searchParams.append('env', cmsenv);
150
- hamburgerURL.searchParams.append('language', selectedLanguage.toLowerCase());
151
- hamburgerURL.searchParams.append('platform', 'dk');
152
- hamburgerURL.searchParams.append('userRoles', userroles);
153
- }
154
-
155
- const setActiveLanguage = ():void => {
156
- setLocale(lang);
157
- }
158
-
159
- const initialLoad = ():void => {
160
- languagesArray = languageslist.replace(/ /g,'').split(',');
161
- languagesArray = languagesArray.map((language:string) => language.toUpperCase());
162
-
163
- selectedLanguage = lang.toUpperCase();
164
- createCMSUrls();
165
-
166
- getLogo(logoURL);
167
- // getHeaderMenusData need to execute after the initialLoad receives the current lang value
168
- setTimeout(() => {
169
- getHeaderMenusData(headerURL);
170
- })
171
- }
172
-
173
- const setActiveIndex = ():void => {
174
- activeIndex = mainMenuArray.findIndex(item => item.path.indexOf(activecategory) > -1).toString();
175
- }
176
-
177
- const sendSliderData = (sliderData:any):void => {
178
- window.postMessage({ type: 'SliderData', identity, data: mainMenuArray }, window.location.href);
179
- }
180
-
181
- const getHeaderMenusData = (url:any):Promise<any> => {
182
- isLoading = true;
183
-
184
- return new Promise((resolve, reject) => {
185
- fetch(url)
186
- .then((res: any) => res.json())
187
- .then((data: any) => {
188
- mainMenuArray = data.desktop.primary;
189
- secondaryMenuArray = data.desktop.secondary;
190
- isLoading = false;
191
-
192
- resolve(data);
193
- }, (err: any) => {
194
- isLoading = false;
195
- console.error(err);
196
- reject(err);
197
- });
198
- });
199
- }
200
-
201
- const getLogo = (url:any):Promise<any> => {
202
- logoFromCms = false;
203
-
204
- return new Promise((resolve, reject) => {
205
- fetch(url)
206
- .then((res: any) => res.json())
207
- .then((data: any) => {
208
- if (data.logoUrl.length > 0 && (data.logoUrl != "null" || data.logoUrl != "false")) {
209
- logoPath = data.logoUrl;
210
- logoFromCms = true;
211
- } else {
212
- logoFromCms = false;
213
- }
214
- resolve(data);
215
- }, (err: any) => {
216
- logoFromCms = false;
217
- console.error(err);
218
- reject(err);
219
- });
220
- });
221
- }
222
-
223
- onMount(async () => {
224
- window.addEventListener('message', messageHandler, false);
225
-
226
- if (isMobile(userAgent)) {
227
- mobileView = true;
228
- }
229
-
230
- return () => {
231
- window.removeEventListener('message', messageHandler);
232
- }
233
- });
234
-
235
- $: activecategory && !isLoading && setActiveIndex();
236
- $: session && setSession();
237
- $: lang && setActiveLanguage();
238
- $: cmsendpoint && lang && languageslist && userroles && initialLoad();
239
- </script>
240
-
241
- {#if isLoggedIn}
242
- {#if mobileView}
243
- <header class="HeaderWrapper HeaderMobileWrapper" part="HeaderWrapper HeaderMobileWrapper">
244
- <div class="HeaderContainer" part="HeaderContainer">
245
- <div class="HeaderMobileMainNav" part="HeaderMobileMainNav">
246
- {#if !hamburgerMenuActive}
247
- <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
248
- viewBox="0 0 22 16">
249
- <defs>
250
- <style>.a {
251
- fill: var(--emfe-w-color-white, #FFFFFF);
252
- }
253
- </style>
254
- </defs>
255
- <g transform="translate(-14 -13)">
256
- <rect class="a" width="18" height="2" transform="translate(14 13)"/>
257
- <rect class="a" width="22" height="2" transform="translate(14 20)"/>
258
- <rect class="a" width="22" height="2" transform="translate(14 27)"/>
259
- </g>
260
- </svg>
261
- {/if}
262
- </div>
263
- <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
264
- {#if logoFromCms}
265
- <img src={logoPath} alt="Logo">
266
- {:else}
267
- <img src={everymatrixLogo} alt="Logo">
268
- {/if}
269
- </div>
270
-
271
- <div class="HeaderTopActions" part="HeaderTopActions">
272
- <div class="HeaderItemsMenu PrimaryMenu" part="HeaderItemsMenu PrimaryMenu">
273
- <player-account-balance-modal {session} {userid} {endpoint} {lang}/>
274
- <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={()=>menuAction('deposit')}>{$_('headerItem.deposit')}</div>
275
- <div class="Item ItemAccount" part="Item ItemAccount" on:click={()=>menuAction('myaccount')}>
276
- <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
277
- <defs>
278
- <style>.a {
279
- fill: var(--emfe-w-color-white, #FFFFFF);
280
- }
281
- </style>
282
- </defs>
283
- <g transform="translate(-8 -4)">
284
- <path class="a"
285
- 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"
286
- transform="translate(0 0)"/>
287
- </g>
288
- </svg>
289
- </div>
290
- </div>
291
- </div>
292
- </div>
293
- </header>
294
- {:else}
295
- <header class="HeaderWrapper" part="HeaderWrapper">
296
- <div class="HeaderContainer" part="HeaderContainer">
297
- <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
298
- {#if logoFromCms}
299
- <img src={logoPath} alt="Logo">
300
- {:else}
301
- <img src={everymatrixLogo} alt="Logo">
302
- {/if}
303
- </div>
304
-
305
- <nav class="HeaderMainNav" part="HeaderMainNav">
306
- {#if !isLoading}
307
- <casino-slider class="HeaderItemsMenu" part="HeaderItemsMenu" {identity} use:sendSliderData isprimarymenu=true {actionevent} activeindex={activeIndex} location="headerMain"/>
308
- {/if}
309
- </nav>
310
- <div class="HeaderTopActions" part="HeaderItemsMenu">
311
- <div class="HeaderItemsMenu PrimaryMenu" part="HeaderItemsMenu PrimaryMenu">
312
- <player-account-balance-modal {session} {userid} {endpoint} {lang}/>
313
- <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={() => menuAction('deposit')}>{$_('headerItem.deposit')}</div>
314
- <div class="Item ItemAccount" part="Item ItemAccount" on:click={() => menuAction('myaccount')}>
315
- <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
316
- <defs>
317
- <style>.a {
318
- fill: var(--emfe-w-color-white, #FFFFFF);
319
- }
320
- </style>
321
- </defs>
322
- <g transform="translate(-8 -4)">
323
- <path class="a"
324
- 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"
325
- transform="translate(0 0)"/>
326
- </g>
327
- </svg>
328
- </div>
329
- <select bind:value={selectedLanguage} class="Item ItemLanguage" part="Item ItemLanguage" on:change={()=>menuAction('language')}>
330
- {#each languagesArray as operatorLanguage}
331
- <option value={operatorLanguage} selected>{operatorLanguage}</option>
332
- {/each}
333
- </select>
334
- </div>
335
- </div>
336
- </div>
337
- <nav class="HeaderSecondaryNav" part="HeaderSecondaryNav">
338
- <ul class="HeaderItemsMenuSecondary" part="HeaderItemsMenuSecondary">
339
- {#each secondaryMenuArray as secondaryItem}
340
- <li class="ItemSecondary" part="ItemSecondary"><a href={secondaryItem.path}>{secondaryItem.label}</a></li>
341
- {/each}
342
- </ul>
343
- </nav>
344
- </header>
345
- {/if}
346
- {:else}
347
- {#if mobileView}
348
- <header class="HeaderWrapper HeaderMobileWrapper" part="HeaderWrapper HeaderMobileWrapper">
349
- <div class="HeaderContainer" part="HeaderContainer">
350
- <div class="HeaderMobileMainNav" part="HeaderMobileMainNav">
351
- <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
352
- viewBox="0 0 22 16">
353
- <defs>
354
- <style>.a {
355
- fill: var(--emfe-w-color-white, #FFFFFF);
356
- }
357
- </style>
358
- </defs>
359
- <g transform="translate(-14 -13)">
360
- <rect class="a" width="18" height="2" transform="translate(14 13)"/>
361
- <rect class="a" width="22" height="2" transform="translate(14 20)"/>
362
- <rect class="a" width="22" height="2" transform="translate(14 27)"/>
363
- </g>
364
- </svg>
365
- </div>
366
- <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
367
- {#if logoFromCms}
368
- <img src={logoPath} alt="Logo">
369
- {:else}
370
- <img src={everymatrixLogo} alt="Logo">
371
- {/if}
372
- </div>
373
-
374
- <div class="HeaderTopActions" part="HeaderTopActions">
375
- <div class="HeaderItemsMenu" part="HeaderItemsMenu">
376
- <div class="Item ItemLogin" part="Item ItemLogin" on:click={()=>menuAction('login')}>{$_('headerItem.login')}</div>
377
- <div class="Item ItemRegister" part="Item ItemRegister" on:click={()=>menuAction('register')}>{$_('headerItem.register')}</div>
378
- </div>
379
- </div>
380
- </div>
381
- </header>
382
- {:else}
383
- <header class="HeaderWrapper" part="HeaderWrapper">
384
- <div class="HeaderContainer" part="HeaderContainer">
385
- <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
386
- {#if logoFromCms}
387
- <img src={logoPath} alt="Logo">
388
- {:else}
389
- <img src={everymatrixLogo} alt="Logo">
390
- {/if}
391
- </div>
392
-
393
- <nav class="HeaderMainNav" part="HeaderMainNav">
394
- {#if !isLoading}
395
- <casino-slider class="HeaderItemsMenu" part="HeaderItemsMenu" {identity} use:sendSliderData isprimarymenu=true {actionevent} activeindex={activeIndex} location="headerMain"/>
396
- {/if}
397
- </nav>
398
- <div class="HeaderTopActions" part="HeaderTopActions">
399
- <div class="HeaderItemsMenu" part="HeaderItemsMenu">
400
- <div class="Item ItemLogin" part="Item ItemLogin" tabindex="0" on:click={()=>menuAction('login')}>{$_('headerItem.login')}</div>
401
- <div class="Item ItemRegister" part="Item ItemRegister" tabindex="0" on:click={()=>menuAction('register')}>{$_('headerItem.register')}</div>
402
- <select bind:value={selectedLanguage} class="Item ItemLanguage" part="Item ItemLanguage" on:change={()=>menuAction('language')}>
403
- {#each languagesArray as operatorLanguage}
404
- <option value={operatorLanguage}>{operatorLanguage}</option>
405
- {/each}
406
- </select>
407
- </div>
408
- </div>
409
- </div>
410
- <nav class="HeaderSecondaryNav" part="HeaderSecondaryNav">
411
- <ul class="HeaderItemsMenuSecondary" part="HeaderItemsMenuSecondary">
412
- {#each secondaryMenuArray as secondaryItem}
413
- <li class="ItemSecondary" part="ItemSecondary"><a href={secondaryItem.path}>{secondaryItem.label}</a></li>
414
- {/each}
415
- </ul>
416
- </nav>
417
- </header>
418
- {/if}
419
- {/if}
420
-
421
- <casino-hamburger-menu menuitemsurl={hamburgerURL} {activecategory} {lang} {languageslist}></casino-hamburger-menu>
422
-
423
- <style lang="scss">
424
-
425
- :host {
426
- font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
427
- }
428
-
429
- .HeaderSlider {
430
- width: 100%;
431
- height: 400px;
432
- }
433
-
434
- .HeaderWrapper {
435
- background: var(--emfe-w-color-header-bg, #050518);
436
- }
437
-
438
- .HeaderContainer {
439
- max-width: 1300px;
440
- display: flex;
441
- flex-direction: row;
442
- align-items: center;
443
- height: 84px;
444
- margin: 0 auto;
445
- }
446
-
447
- .HeaderMobileMainNav {
448
- display: flex;
449
- align-items: center;
450
- }
451
-
452
- .HeaderBranding {
453
- width: 140px;
454
- margin-right: 15px;
455
- cursor: pointer;
456
- img {
457
- width: 100%;
458
- }
459
- }
460
-
461
- .HeaderMainNav {
462
- text-align: left;
463
- }
464
-
465
- .HeaderTopActions {
466
- text-align: right;
467
- margin-left: auto;
468
- }
469
-
470
- .HeaderSecondaryNav {
471
- flex-direction: row;
472
- width: 100%;
473
- background: var(--emfe-w-color-header-bg, #050518);
474
- border-top: 1px solid var(--emfe-w-color-gray-300, #58586B);
475
- }
476
-
477
- .HeaderItemsMenu {
478
- display: flex;
479
- align-content: flex-start;
480
- list-style: none;
481
- text-transform: uppercase;
482
- color: var(--emfe-w-color-white, #FFFFFF);
483
- font-size: 16px;
484
- align-items: center;
485
-
486
- .Item:hover {
487
- .HeaderSecondaryNav {
488
- display: block;
489
- }
490
- }
491
-
492
- .Item {
493
- padding: 0 12px;
494
- display: flex;
495
- align-items: center;
496
- }
497
-
498
- &.PrimaryMenu {
499
- gap: 10px;
500
- }
501
- }
502
-
503
- .Item a {
504
- color: var(--emfe-w-color-white, #FFFFFF);
505
- text-decoration: none;
506
- border-top: 1px solid transparent;
507
- }
508
-
509
- .Item a:hover {
510
- color: var(--emfe-w-color-primary, #D0046C);
511
- border-top: 1px solid var(--emfe-w-color-primary, #D0046C);
512
- padding-top: 5px;
513
- }
514
-
515
- .ItemLogin {
516
- border-radius: 5px;
517
- background: transparent;
518
- font-size: 14px;
519
- font-weight: 600;
520
- border: solid 1px var(--emfe-w-color-white, #FFFFFF);
521
- height: 44px;
522
- text-align: center;
523
- line-height: 44px;
524
- margin-right: 10px;
525
- cursor: pointer;
526
- }
527
-
528
- .ItemRegister, .ItemDeposit {
529
- border-radius: 5px;
530
- background: var(--emfe-w-color-primary, #D0046C);
531
- font-size: 14px;
532
- height: 44px;
533
- text-align: center;
534
- line-height: 44px;
535
- cursor: pointer;
536
- }
537
-
538
- .ItemDeposit {
539
- background: var(--emfe-w-color-primary, #D0046C);
540
- }
541
-
542
- .ItemLanguage {
543
- height: 44px;
544
- width: 90px;
545
- text-align: center;
546
- line-height: 44px;
547
- background: transparent;
548
- color: var(--emfe-w-color-white, #FFFFFF);
549
- border: none;
550
- cursor: pointer;
551
- outline: none;
552
- -webkit-appearance: none;
553
- -moz-appearance: none;
554
- appearance: none;
555
- 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-color-header-bg, #050518);
556
- background-position: calc(100% - 0.75rem) center;
557
-
558
- option {
559
- color: var(--emfe-w-color-white, #FFFFFF);
560
- }
561
- }
562
-
563
- .ItemBalance {
564
- background: transparent;
565
- color: var(--emfe-w-color-white, #FFFFFF);
566
- border: 0;
567
- }
568
-
569
- .ItemAccount {
570
- cursor: pointer;
571
-
572
- svg {
573
- width: 20px;
574
- height: 20px;
575
- }
576
- }
577
-
578
- .HeaderItemsMenuSecondary {
579
- display: flex;
580
- flex-direction: row;
581
- align-content: flex-start;
582
- align-items: center;
583
- height: 60px;
584
- list-style: none;
585
- text-transform: uppercase;
586
- color: var(--emfe-w-color-white, #FFFFFF);
587
- font-size: 14px;
588
- max-width: 1280px;
589
- margin: 0 auto;
590
- overflow-y: hidden;
591
- overflow-x: auto;
592
- padding: 0;
593
- }
594
-
595
- .HeaderItemsMenuSecondary .ItemSecondary {
596
- padding: 0 15px;
597
- cursor: pointer;
598
- font-weight: 600;
599
- transition-duration: 0.15s;
600
-
601
- a {
602
- color: var(--emfe-w-color-white, #FFFFFF);
603
- text-decoration: none;
604
- }
605
-
606
- &:hover {
607
- a {
608
- color: var(--emfe-w-color-primary, #D0046C);
609
- }
610
- }
611
- }
612
-
613
- .HeaderSliderMobile {
614
- background-position: bottom;
615
- }
616
-
617
- .HeaderMobileWrapper {
618
- .HeaderContainer {
619
- height: 55px;
620
- padding: 0 15px;
621
- gap: 10px;
622
- }
623
-
624
- .HeaderBranding {
625
- width: 110px;
626
- display: flex;
627
- align-items: center;
628
- }
629
-
630
- .HeaderItemsMenu {
631
- .Item {
632
- padding: 0 10px;
633
- display: block;
634
- width: unset;
635
- }
636
-
637
- .ItemBalance {
638
- font-size: 12px;
639
- }
640
-
641
- .ItemAccount {
642
- padding: 0;
643
- }
644
- }
645
-
646
- .ItemRegister, .ItemDeposit, .ItemLogin {
647
- height: 30px;
648
- line-height: 30px;
649
- font-size: 12px;
650
- }
651
-
652
- .ItemLogin {
653
- margin-right: 10px;
654
- }
655
- }
656
- </style>
1
+ <svelte:options tag={null} />
2
+
3
+ <script lang="ts">
4
+ import { onMount } from "svelte";
5
+ import { isMobile } from 'rvhelper';
6
+ import { _, addNewMessages, setLocale, setupI18n } from './i18n';
7
+ import { CasinoHeaderController } from './translations';
8
+
9
+ import '@everymatrix/casino-slider';
10
+ import '@everymatrix/casino-hamburger-menu';
11
+ import '@everymatrix/player-account-balance-modal';
12
+ import everymatrixLogo from './images/everymatrix-logo-white.png';
13
+
14
+ export let session:string = '';
15
+ export let userid:string = '';
16
+ export let endpoint:string = '';
17
+ export let cmsendpoint:string = '';
18
+ export let cmsenv:string = 'stage';
19
+ export let lang:string = 'en';
20
+ export let languageslist:string = 'en, ro';
21
+ export let activecategory:string = '';
22
+
23
+ export let operatorid:string = '';
24
+ export let pagetag:string = '';
25
+ export let positiontag:string = '';
26
+
27
+ export let actionevent:string = '';
28
+
29
+ export let userroles:string = '';
30
+
31
+ let activeIndex:string;
32
+ let identity:string = "HeaderMenu";
33
+
34
+ setupI18n({ withLocale: 'en', translations: {}});
35
+
36
+ Object.keys(CasinoHeaderController).forEach((item:any) => {
37
+ addNewMessages(item, CasinoHeaderController[item]);
38
+ });
39
+
40
+ 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"
41
+ viewBox="0 0 384.971 384.971" style="enable-background:new 0 0 384.971 384.971;" xml:space="preserve">
42
+ <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
43
+ 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
44
+ C192.485,366.299,187.095,360.91,180.455,360.91z"/>
45
+ <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
46
+ 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
47
+ 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"/>
48
+ </svg>`;
49
+
50
+ let mainMenuArray:Array<any> = [];
51
+ let secondaryMenuArray:Array<any> = [];
52
+ let selectedLanguage:string = '';
53
+ let hamburgerURL:URL;
54
+ let headerURL:URL;
55
+ let logoURL:URL;
56
+ let isLoading:boolean = true;
57
+ let logoFromCms:boolean = false;
58
+
59
+ let mobileView:boolean = false;
60
+ let userAgent:string = window.navigator.userAgent;
61
+ let isLoggedIn:boolean = false;
62
+ let playerID:string = '';
63
+ let sessionID:string = '';
64
+ let loginActive:boolean = true;
65
+ let language:string = '';
66
+ let languagesArray:Array<string> = [];
67
+ let hamburgerMenuActive:boolean = false;
68
+ let logoPath:string = '';
69
+
70
+ const menuAction = (data: any) => {
71
+ switch (data) {
72
+ case 'login':
73
+ loginActive = true;
74
+ window.postMessage({type: 'OpenLoginRegisterModal', transition: 'Login' }, window.location.href);
75
+ break;
76
+
77
+ case 'register':
78
+ loginActive = false;
79
+ window.postMessage({type: 'OpenLoginRegisterModal', transition: 'Register'}, window.location.href);
80
+ break;
81
+
82
+ case 'lobby':
83
+ window.postMessage({type: 'GoToHomepage'}, window.location.href);
84
+ break;
85
+
86
+ case 'myaccount':
87
+ window.postMessage({type: 'PlayerAccountMenuActive', isMobile: isMobile(userAgent)}, window.location.href);
88
+ break;
89
+
90
+ case 'deposit':
91
+ window.postMessage({type: 'GoToDeposit'}, window.location.href);
92
+ break;
93
+
94
+ case 'language':
95
+ window.postMessage({type: 'LanguageChanged', selectedLanguage}, window.location.href);
96
+ break;
97
+ }
98
+ }
99
+
100
+ const toggleMenu = () => {
101
+ hamburgerMenuActive = true;
102
+ window.postMessage({type: 'OpenHamburgerMenuModal'}, window.location.href);
103
+ }
104
+
105
+ const messageHandler = (e: any) => {
106
+ if (e.data) {
107
+ switch (e.data.type) {
108
+ case 'UserSessionID':
109
+ playerID = e.data.userid;
110
+ sessionID = e.data.session;
111
+ isLoggedIn = true;
112
+ break;
113
+
114
+ case 'CloseHamburgerMenu':
115
+ if (e.data.showhamburger) {
116
+ hamburgerMenuActive = false;
117
+ }
118
+ break;
119
+
120
+ case 'LogoutSuccessfull':
121
+ isLoggedIn = false;
122
+ break;
123
+
124
+ case 'LanguageChanged':
125
+ createCMSUrls();
126
+ getHeaderMenusData(headerURL);
127
+ break;
128
+ }
129
+ }
130
+ }
131
+
132
+ const setSession = () => {
133
+ isLoggedIn = true;
134
+ sessionID = session;
135
+ }
136
+
137
+ const createCMSUrls = () => {
138
+ headerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/menu`)
139
+ hamburgerURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/hamburger-menu`);
140
+ logoURL = new URL(`${cmsendpoint}/${selectedLanguage.toLowerCase()}/op-options/style`);
141
+
142
+ headerURL.searchParams.append('device', 'dk');
143
+ headerURL.searchParams.append('env', cmsenv);
144
+ headerURL.searchParams.append('language', selectedLanguage.toLowerCase());
145
+ headerURL.searchParams.append('platform', 'dk');
146
+ headerURL.searchParams.append('userRoles', userroles);
147
+
148
+ hamburgerURL.searchParams.append('device', 'dk');
149
+ hamburgerURL.searchParams.append('env', cmsenv);
150
+ hamburgerURL.searchParams.append('language', selectedLanguage.toLowerCase());
151
+ hamburgerURL.searchParams.append('platform', 'dk');
152
+ hamburgerURL.searchParams.append('userRoles', userroles);
153
+ }
154
+
155
+ const setActiveLanguage = ():void => {
156
+ setLocale(lang);
157
+ }
158
+
159
+ const initialLoad = ():void => {
160
+ languagesArray = languageslist.replace(/ /g,'').split(',');
161
+ languagesArray = languagesArray.map((language:string) => language.toUpperCase());
162
+
163
+ selectedLanguage = lang.toUpperCase();
164
+ createCMSUrls();
165
+
166
+ getLogo(logoURL);
167
+ // getHeaderMenusData need to execute after the initialLoad receives the current lang value
168
+ setTimeout(() => {
169
+ getHeaderMenusData(headerURL);
170
+ })
171
+ }
172
+
173
+ const setActiveIndex = ():void => {
174
+ activeIndex = mainMenuArray.findIndex(item => item.path.indexOf(activecategory) > -1).toString();
175
+ }
176
+
177
+ const sendSliderData = (sliderData:any):void => {
178
+ window.postMessage({ type: 'SliderData', identity, data: mainMenuArray }, window.location.href);
179
+ }
180
+
181
+ const getHeaderMenusData = (url:any):Promise<any> => {
182
+ isLoading = true;
183
+
184
+ return new Promise((resolve, reject) => {
185
+ fetch(url)
186
+ .then((res: any) => res.json())
187
+ .then((data: any) => {
188
+ mainMenuArray = data.desktop.primary;
189
+ secondaryMenuArray = data.desktop.secondary;
190
+ isLoading = false;
191
+
192
+ resolve(data);
193
+ }, (err: any) => {
194
+ isLoading = false;
195
+ console.error(err);
196
+ reject(err);
197
+ });
198
+ });
199
+ }
200
+
201
+ const getLogo = (url:any):Promise<any> => {
202
+ logoFromCms = false;
203
+
204
+ return new Promise((resolve, reject) => {
205
+ fetch(url)
206
+ .then((res: any) => res.json())
207
+ .then((data: any) => {
208
+ if (data.logoUrl.length > 0 && (data.logoUrl != "null" || data.logoUrl != "false")) {
209
+ logoPath = data.logoUrl;
210
+ logoFromCms = true;
211
+ } else {
212
+ logoFromCms = false;
213
+ }
214
+ resolve(data);
215
+ }, (err: any) => {
216
+ logoFromCms = false;
217
+ console.error(err);
218
+ reject(err);
219
+ });
220
+ });
221
+ }
222
+
223
+ onMount(async () => {
224
+ window.addEventListener('message', messageHandler, false);
225
+
226
+ if (isMobile(userAgent)) {
227
+ mobileView = true;
228
+ }
229
+
230
+ return () => {
231
+ window.removeEventListener('message', messageHandler);
232
+ }
233
+ });
234
+
235
+ $: activecategory && !isLoading && setActiveIndex();
236
+ $: session && setSession();
237
+ $: lang && setActiveLanguage();
238
+ $: cmsendpoint && lang && languageslist && userroles && initialLoad();
239
+ </script>
240
+
241
+ {#if isLoggedIn}
242
+ {#if mobileView}
243
+ <header class="HeaderWrapper HeaderMobileWrapper" part="HeaderWrapper HeaderMobileWrapper">
244
+ <div class="HeaderContainer" part="HeaderContainer">
245
+ <div class="HeaderMobileMainNav" part="HeaderMobileMainNav">
246
+ {#if !hamburgerMenuActive}
247
+ <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
248
+ viewBox="0 0 22 16">
249
+ <defs>
250
+ <style>.a {
251
+ fill: var(--emfe-w-color-white, #FFFFFF);
252
+ }
253
+ </style>
254
+ </defs>
255
+ <g transform="translate(-14 -13)">
256
+ <rect class="a" width="18" height="2" transform="translate(14 13)"/>
257
+ <rect class="a" width="22" height="2" transform="translate(14 20)"/>
258
+ <rect class="a" width="22" height="2" transform="translate(14 27)"/>
259
+ </g>
260
+ </svg>
261
+ {/if}
262
+ </div>
263
+ <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
264
+ {#if logoFromCms}
265
+ <img src={logoPath} alt="Logo">
266
+ {:else}
267
+ <img src={everymatrixLogo} alt="Logo">
268
+ {/if}
269
+ </div>
270
+
271
+ <div class="HeaderTopActions" part="HeaderTopActions">
272
+ <div class="HeaderItemsMenu PrimaryMenu" part="HeaderItemsMenu PrimaryMenu">
273
+ <player-account-balance-modal {session} {userid} {endpoint} {lang}/>
274
+ <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={()=>menuAction('deposit')}>{$_('headerItem.deposit')}</div>
275
+ <div class="Item ItemAccount" part="Item ItemAccount" on:click={()=>menuAction('myaccount')}>
276
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
277
+ <defs>
278
+ <style>.a {
279
+ fill: var(--emfe-w-color-white, #FFFFFF);
280
+ }
281
+ </style>
282
+ </defs>
283
+ <g transform="translate(-8 -4)">
284
+ <path class="a"
285
+ 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"
286
+ transform="translate(0 0)"/>
287
+ </g>
288
+ </svg>
289
+ </div>
290
+ </div>
291
+ </div>
292
+ </div>
293
+ </header>
294
+ {:else}
295
+ <header class="HeaderWrapper" part="HeaderWrapper">
296
+ <div class="HeaderContainer" part="HeaderContainer">
297
+ <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
298
+ {#if logoFromCms}
299
+ <img src={logoPath} alt="Logo">
300
+ {:else}
301
+ <img src={everymatrixLogo} alt="Logo">
302
+ {/if}
303
+ </div>
304
+
305
+ <nav class="HeaderMainNav" part="HeaderMainNav">
306
+ {#if !isLoading}
307
+ <casino-slider class="HeaderItemsMenu" part="HeaderItemsMenu" {identity} use:sendSliderData isprimarymenu=true {actionevent} activeindex={activeIndex} location="headerMain"/>
308
+ {/if}
309
+ </nav>
310
+ <div class="HeaderTopActions" part="HeaderItemsMenu">
311
+ <div class="HeaderItemsMenu PrimaryMenu" part="HeaderItemsMenu PrimaryMenu">
312
+ <player-account-balance-modal {session} {userid} {endpoint} {lang}/>
313
+ <div class="Item ItemDeposit" part="Item ItemDeposit" on:click={() => menuAction('deposit')}>{$_('headerItem.deposit')}</div>
314
+ <div class="Item ItemAccount" part="Item ItemAccount" on:click={() => menuAction('myaccount')}>
315
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16.429" viewBox="0 0 15 16.429">
316
+ <defs>
317
+ <style>.a {
318
+ fill: var(--emfe-w-color-white, #FFFFFF);
319
+ }
320
+ </style>
321
+ </defs>
322
+ <g transform="translate(-8 -4)">
323
+ <path class="a"
324
+ 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"
325
+ transform="translate(0 0)"/>
326
+ </g>
327
+ </svg>
328
+ </div>
329
+ <select bind:value={selectedLanguage} class="Item ItemLanguage" part="Item ItemLanguage" on:change={()=>menuAction('language')}>
330
+ {#each languagesArray as operatorLanguage}
331
+ <option value={operatorLanguage} selected>{operatorLanguage}</option>
332
+ {/each}
333
+ </select>
334
+ </div>
335
+ </div>
336
+ </div>
337
+ <nav class="HeaderSecondaryNav" part="HeaderSecondaryNav">
338
+ <ul class="HeaderItemsMenuSecondary" part="HeaderItemsMenuSecondary">
339
+ {#each secondaryMenuArray as secondaryItem}
340
+ <li class="ItemSecondary" part="ItemSecondary"><a href={secondaryItem.path}>{secondaryItem.label}</a></li>
341
+ {/each}
342
+ </ul>
343
+ </nav>
344
+ </header>
345
+ {/if}
346
+ {:else}
347
+ {#if mobileView}
348
+ <header class="HeaderWrapper HeaderMobileWrapper" part="HeaderWrapper HeaderMobileWrapper">
349
+ <div class="HeaderContainer" part="HeaderContainer">
350
+ <div class="HeaderMobileMainNav" part="HeaderMobileMainNav">
351
+ <svg on:click={()=>toggleMenu()} xmlns="http://www.w3.org/2000/svg" width="22" height="16"
352
+ viewBox="0 0 22 16">
353
+ <defs>
354
+ <style>.a {
355
+ fill: var(--emfe-w-color-white, #FFFFFF);
356
+ }
357
+ </style>
358
+ </defs>
359
+ <g transform="translate(-14 -13)">
360
+ <rect class="a" width="18" height="2" transform="translate(14 13)"/>
361
+ <rect class="a" width="22" height="2" transform="translate(14 20)"/>
362
+ <rect class="a" width="22" height="2" transform="translate(14 27)"/>
363
+ </g>
364
+ </svg>
365
+ </div>
366
+ <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
367
+ {#if logoFromCms}
368
+ <img src={logoPath} alt="Logo">
369
+ {:else}
370
+ <img src={everymatrixLogo} alt="Logo">
371
+ {/if}
372
+ </div>
373
+
374
+ <div class="HeaderTopActions" part="HeaderTopActions">
375
+ <div class="HeaderItemsMenu" part="HeaderItemsMenu">
376
+ <div class="Item ItemLogin" part="Item ItemLogin" on:click={()=>menuAction('login')}>{$_('headerItem.login')}</div>
377
+ <div class="Item ItemRegister" part="Item ItemRegister" on:click={()=>menuAction('register')}>{$_('headerItem.register')}</div>
378
+ </div>
379
+ </div>
380
+ </div>
381
+ </header>
382
+ {:else}
383
+ <header class="HeaderWrapper" part="HeaderWrapper">
384
+ <div class="HeaderContainer" part="HeaderContainer">
385
+ <div class="HeaderBranding" part="HeaderBranding" on:click={()=>menuAction('lobby')}>
386
+ {#if logoFromCms}
387
+ <img src={logoPath} alt="Logo">
388
+ {:else}
389
+ <img src={everymatrixLogo} alt="Logo">
390
+ {/if}
391
+ </div>
392
+
393
+ <nav class="HeaderMainNav" part="HeaderMainNav">
394
+ {#if !isLoading}
395
+ <casino-slider class="HeaderItemsMenu" part="HeaderItemsMenu" {identity} use:sendSliderData isprimarymenu=true {actionevent} activeindex={activeIndex} location="headerMain"/>
396
+ {/if}
397
+ </nav>
398
+ <div class="HeaderTopActions" part="HeaderTopActions">
399
+ <div class="HeaderItemsMenu" part="HeaderItemsMenu">
400
+ <div class="Item ItemLogin" part="Item ItemLogin" tabindex="0" on:click={()=>menuAction('login')}>{$_('headerItem.login')}</div>
401
+ <div class="Item ItemRegister" part="Item ItemRegister" tabindex="0" on:click={()=>menuAction('register')}>{$_('headerItem.register')}</div>
402
+ <select bind:value={selectedLanguage} class="Item ItemLanguage" part="Item ItemLanguage" on:change={()=>menuAction('language')}>
403
+ {#each languagesArray as operatorLanguage}
404
+ <option value={operatorLanguage}>{operatorLanguage}</option>
405
+ {/each}
406
+ </select>
407
+ </div>
408
+ </div>
409
+ </div>
410
+ <nav class="HeaderSecondaryNav" part="HeaderSecondaryNav">
411
+ <ul class="HeaderItemsMenuSecondary" part="HeaderItemsMenuSecondary">
412
+ {#each secondaryMenuArray as secondaryItem}
413
+ <li class="ItemSecondary" part="ItemSecondary"><a href={secondaryItem.path}>{secondaryItem.label}</a></li>
414
+ {/each}
415
+ </ul>
416
+ </nav>
417
+ </header>
418
+ {/if}
419
+ {/if}
420
+
421
+ <casino-hamburger-menu menuitemsurl={hamburgerURL} {activecategory} {lang} {languageslist}></casino-hamburger-menu>
422
+
423
+ <style lang="scss">
424
+
425
+ :host {
426
+ font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
427
+ }
428
+
429
+ .HeaderSlider {
430
+ width: 100%;
431
+ height: 400px;
432
+ }
433
+
434
+ .HeaderWrapper {
435
+ background: var(--emfe-w-color-header-bg, #050518);
436
+ }
437
+
438
+ .HeaderContainer {
439
+ max-width: 1300px;
440
+ display: flex;
441
+ flex-direction: row;
442
+ align-items: center;
443
+ height: 84px;
444
+ margin: 0 auto;
445
+ }
446
+
447
+ .HeaderMobileMainNav {
448
+ display: flex;
449
+ align-items: center;
450
+ }
451
+
452
+ .HeaderBranding {
453
+ width: 140px;
454
+ margin-right: 15px;
455
+ cursor: pointer;
456
+ img {
457
+ width: 100%;
458
+ }
459
+ }
460
+
461
+ .HeaderMainNav {
462
+ text-align: left;
463
+ }
464
+
465
+ .HeaderTopActions {
466
+ text-align: right;
467
+ margin-left: auto;
468
+ }
469
+
470
+ .HeaderSecondaryNav {
471
+ flex-direction: row;
472
+ width: 100%;
473
+ background: var(--emfe-w-color-header-bg, #050518);
474
+ border-top: 1px solid var(--emfe-w-color-gray-300, #58586B);
475
+ }
476
+
477
+ .HeaderItemsMenu {
478
+ display: flex;
479
+ align-content: flex-start;
480
+ list-style: none;
481
+ text-transform: uppercase;
482
+ color: var(--emfe-w-color-white, #FFFFFF);
483
+ font-size: 16px;
484
+ align-items: center;
485
+
486
+ .Item:hover {
487
+ .HeaderSecondaryNav {
488
+ display: block;
489
+ }
490
+ }
491
+
492
+ .Item {
493
+ padding: 0 12px;
494
+ display: flex;
495
+ align-items: center;
496
+ }
497
+
498
+ &.PrimaryMenu {
499
+ gap: 10px;
500
+ }
501
+ }
502
+
503
+ .Item a {
504
+ color: var(--emfe-w-color-white, #FFFFFF);
505
+ text-decoration: none;
506
+ border-top: 1px solid transparent;
507
+ }
508
+
509
+ .Item a:hover {
510
+ color: var(--emfe-w-color-primary, #D0046C);
511
+ border-top: 1px solid var(--emfe-w-color-primary, #D0046C);
512
+ padding-top: 5px;
513
+ }
514
+
515
+ .ItemLogin {
516
+ border-radius: 5px;
517
+ background: transparent;
518
+ font-size: 14px;
519
+ font-weight: 600;
520
+ border: solid 1px var(--emfe-w-color-white, #FFFFFF);
521
+ height: 44px;
522
+ text-align: center;
523
+ line-height: 44px;
524
+ margin-right: 10px;
525
+ cursor: pointer;
526
+ }
527
+
528
+ .ItemRegister, .ItemDeposit {
529
+ border-radius: 5px;
530
+ background: var(--emfe-w-color-primary, #D0046C);
531
+ font-size: 14px;
532
+ height: 44px;
533
+ text-align: center;
534
+ line-height: 44px;
535
+ cursor: pointer;
536
+ }
537
+
538
+ .ItemDeposit {
539
+ background: var(--emfe-w-color-primary, #D0046C);
540
+ }
541
+
542
+ .ItemLanguage {
543
+ height: 44px;
544
+ width: 90px;
545
+ text-align: center;
546
+ line-height: 44px;
547
+ background: transparent;
548
+ color: var(--emfe-w-color-white, #FFFFFF);
549
+ border: none;
550
+ cursor: pointer;
551
+ outline: none;
552
+ -webkit-appearance: none;
553
+ -moz-appearance: none;
554
+ appearance: none;
555
+ 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-color-header-bg, #050518);
556
+ background-position: calc(100% - 0.75rem) center;
557
+
558
+ option {
559
+ color: var(--emfe-w-color-white, #FFFFFF);
560
+ }
561
+ }
562
+
563
+ .ItemBalance {
564
+ background: transparent;
565
+ color: var(--emfe-w-color-white, #FFFFFF);
566
+ border: 0;
567
+ }
568
+
569
+ .ItemAccount {
570
+ cursor: pointer;
571
+
572
+ svg {
573
+ width: 20px;
574
+ height: 20px;
575
+ }
576
+ }
577
+
578
+ .HeaderItemsMenuSecondary {
579
+ display: flex;
580
+ flex-direction: row;
581
+ align-content: flex-start;
582
+ align-items: center;
583
+ height: 60px;
584
+ list-style: none;
585
+ text-transform: uppercase;
586
+ color: var(--emfe-w-color-white, #FFFFFF);
587
+ font-size: 14px;
588
+ max-width: 1280px;
589
+ margin: 0 auto;
590
+ overflow-y: hidden;
591
+ overflow-x: auto;
592
+ padding: 0;
593
+ }
594
+
595
+ .HeaderItemsMenuSecondary .ItemSecondary {
596
+ padding: 0 15px;
597
+ cursor: pointer;
598
+ font-weight: 600;
599
+ transition-duration: 0.15s;
600
+
601
+ a {
602
+ color: var(--emfe-w-color-white, #FFFFFF);
603
+ text-decoration: none;
604
+ }
605
+
606
+ &:hover {
607
+ a {
608
+ color: var(--emfe-w-color-primary, #D0046C);
609
+ }
610
+ }
611
+ }
612
+
613
+ .HeaderSliderMobile {
614
+ background-position: bottom;
615
+ }
616
+
617
+ .HeaderMobileWrapper {
618
+ .HeaderContainer {
619
+ height: 55px;
620
+ padding: 0 15px;
621
+ gap: 10px;
622
+ }
623
+
624
+ .HeaderBranding {
625
+ width: 110px;
626
+ display: flex;
627
+ align-items: center;
628
+ }
629
+
630
+ .HeaderItemsMenu {
631
+ .Item {
632
+ padding: 0 10px;
633
+ display: block;
634
+ width: unset;
635
+ }
636
+
637
+ .ItemBalance {
638
+ font-size: 12px;
639
+ }
640
+
641
+ .ItemAccount {
642
+ padding: 0;
643
+ }
644
+ }
645
+
646
+ .ItemRegister, .ItemDeposit, .ItemLogin {
647
+ height: 30px;
648
+ line-height: 30px;
649
+ font-size: 12px;
650
+ }
651
+
652
+ .ItemLogin {
653
+ margin-right: 10px;
654
+ }
655
+ }
656
+ </style>