@everymatrix/casino-footer-v2 0.0.190 → 0.0.347
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/casino-footer-v2.js +1344 -4018
- package/dist/casino-footer-v2.js.map +1 -1
- package/index.html +101 -15
- package/package.json +2 -2
- package/rollup.config.js +5 -13
- package/src/CasinoFooterV2.svelte +557 -183
- package/src/i18n.js +27 -0
- package/src/translations.js +32 -0
- package/translations.js +32 -0
- package/dist/casino-lobby.js +0 -2
- package/dist/casino-lobby.js.map +0 -1
@@ -1,282 +1,656 @@
|
|
1
1
|
<svelte:options tag={null} />
|
2
|
-
<script lang="typescript">
|
3
|
-
import '@everymatrix/casino-footer-section-v2';
|
4
2
|
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
<script lang="ts">
|
4
|
+
import '@everymatrix/casino-footer-section';
|
5
|
+
import '@everymatrix/panic-button';
|
8
6
|
|
9
|
-
|
7
|
+
import moment from 'moment';
|
8
|
+
import { checkSession } from 'rvhelper';
|
9
|
+
import { _, addNewMessages, setLocale } from './i18n';
|
10
|
+
import { CasinoFooterTranslations } from './translations.js'
|
11
|
+
|
12
|
+
export let endpoint:string = '';
|
13
|
+
export let lang:string = 'en';
|
14
|
+
export let env:string = '';
|
15
|
+
export let clientstyling:string = '';
|
16
|
+
export let clientstylingurl:string = '';
|
17
|
+
export let target:string = '';
|
18
|
+
|
19
|
+
// Clock exposed attributes - If the clock is enabled, all attributes should be given a value, otherwise they can be ignored safely
|
20
|
+
export let clockenabled:string = ''; // "true" to enable, anything to disable
|
21
|
+
export let clocksecondsenabled:string = ''; // "true" to display seconds in our default format and to refresh the clock every 1000ms
|
22
|
+
export let clockcustomformat:string = ''; // "false" for defaulting to our format
|
23
|
+
export let clocktext:string = 'Time'; // string preceding clock
|
24
|
+
|
25
|
+
export let languageselectorenabled = 'true';
|
26
|
+
export let languageslist:string = 'en, ro';
|
27
|
+
export let languagedisplaytype = 'name';
|
28
|
+
export let session:string = '';
|
29
|
+
export let userid:string = '';
|
30
|
+
export let userendpoint:string = '';
|
31
|
+
export let panicbuttonenabled:string = 'true';
|
32
|
+
export let sessiontimerenabled = 'true'; // 'true' to enable, anything to disable
|
33
|
+
|
34
|
+
let gameVendorsLinksTitle:string = '';
|
10
35
|
let gameVendorsRepeater:Array<Object> = [];
|
11
|
-
let paymentLinksTitle:
|
36
|
+
let paymentLinksTitle:string = '';
|
12
37
|
let paymentMethodsRepeater:Array<Object> = [];
|
13
|
-
let sponsorsLinksTitle:
|
38
|
+
let sponsorsLinksTitle:string = '';
|
14
39
|
let sponsorsRepeater:Array<Object> = [];
|
15
|
-
let helpLinksTitle:
|
40
|
+
let helpLinksTitle:string = '';
|
16
41
|
let helpLinksRepeater:Array<Object> = [];
|
17
|
-
let licensesLinksTitle:
|
42
|
+
let licensesLinksTitle:string = '';
|
18
43
|
let licensesRepeater:Array<Object> = [];
|
19
|
-
let socialLinksTitle:
|
44
|
+
let socialLinksTitle:string = '';
|
20
45
|
let socialLinksRepeater:Array<Object> = [];
|
21
|
-
let copyright:
|
22
|
-
let licenseDesc:
|
23
|
-
let
|
24
|
-
let copyrightContainer:HTMLElement;
|
25
|
-
let footerWidget:HTMLElement;
|
26
|
-
let hasErrors:Boolean = false;
|
46
|
+
let copyright:string = '';
|
47
|
+
let licenseDesc:string = '';
|
48
|
+
let hasErrors:boolean = false;
|
27
49
|
let isLoading:boolean = false;
|
28
50
|
let receivedFooterData:any;
|
29
51
|
let customStyling:string = '';
|
52
|
+
let headScript:boolean = false;
|
53
|
+
let licenseScriptSrc:string = '';
|
54
|
+
let licenseScript:string = '';
|
55
|
+
let isLoggedIn:boolean = false;
|
56
|
+
let sessionID:string = '';
|
57
|
+
let playerID:string = '';
|
58
|
+
let selectedLanguage:string = 'hr';
|
59
|
+
let languages:Array<object> = [];
|
60
|
+
|
61
|
+
let time:string;
|
62
|
+
let refreshRate: number;
|
63
|
+
|
64
|
+
let languagesArray:Array<string> = [];
|
65
|
+
let languageDrawer: HTMLElement;
|
66
|
+
let languageDisplayName:string = '';
|
67
|
+
let currentLanguageFlag:string = '';
|
68
|
+
let languagePackLoaded:boolean = false;
|
69
|
+
|
70
|
+
let timeString:string = '';
|
71
|
+
|
72
|
+
let customStylingContainer:HTMLElement;
|
73
|
+
|
74
|
+
Object.keys(CasinoFooterTranslations).forEach((item:any) => {
|
75
|
+
addNewMessages(item, CasinoFooterTranslations[item]);
|
76
|
+
});
|
77
|
+
|
78
|
+
// needed for session timer
|
79
|
+
const setSession = ():void => {
|
80
|
+
checkSession(userendpoint, session).then((res:any) => {
|
81
|
+
sessionID = res.Guid;
|
82
|
+
playerID = res.UserID;
|
83
|
+
isLoggedIn = true;
|
84
|
+
}, (err:any) => {
|
85
|
+
isLoggedIn = false;
|
86
|
+
console.error('Error while checking the session - ', err)
|
87
|
+
});
|
88
|
+
}
|
89
|
+
|
90
|
+
const setSessionTimer = ():void => {
|
91
|
+
// using Date instead of moment because they recommend in their docs to stop using it for new projects
|
92
|
+
const sessionData = JSON.parse(localStorage.session);
|
93
|
+
const loginTime = new Date(sessionData.Login);
|
94
|
+
const timezoneOffsetHours = new Date().getTimezoneOffset() / 60;
|
95
|
+
let currentTime = new Date();
|
96
|
+
let milisecondDifference = currentTime.getTime() - loginTime.getTime();
|
97
|
+
|
98
|
+
let hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
|
99
|
+
let minutes = Math.floor(milisecondDifference % 3600000 / 60000);
|
100
|
+
let seconds = Math.floor(milisecondDifference % 60000 / 1000);
|
101
|
+
|
102
|
+
setInterval(() => {
|
103
|
+
hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
|
104
|
+
minutes = Math.floor(milisecondDifference % 3600000 / 60000);
|
105
|
+
seconds = Math.floor(milisecondDifference % 60000 / 1000);
|
106
|
+
|
107
|
+
timeString = `${hours > 9 ? hours : '0' + hours}:${minutes > 9 ? minutes : '0' + minutes}:${seconds > 9 ? seconds : '0' + seconds}`;
|
108
|
+
|
109
|
+
milisecondDifference += 1000;
|
110
|
+
},1000);
|
111
|
+
}
|
112
|
+
|
113
|
+
const refreshClock = ():void => {
|
114
|
+
setInterval(() => {
|
115
|
+
clockDisplay();
|
116
|
+
}, refreshRate);
|
117
|
+
}
|
118
|
+
|
119
|
+
const clockDisplay = ():void => {
|
120
|
+
const format = clockcustomformat != 'false' ? clockcustomformat : `hh:mm${clocksecondsenabled === "true" ? ':ss' : ''} (UTC Z)`;
|
121
|
+
time = moment().format(format);
|
122
|
+
}
|
123
|
+
|
124
|
+
const getCmsData = ():void => {
|
125
|
+
let url:URL = new URL(`${endpoint}/${lang}/footer-raw-data?env=${env}`);
|
30
126
|
|
31
|
-
const getData = () => {
|
32
127
|
isLoading = true;
|
33
128
|
|
34
|
-
fetch(
|
35
|
-
|
36
|
-
|
37
|
-
|
129
|
+
fetch(url.href)
|
130
|
+
.then((res:any) => res.json())
|
131
|
+
.then((data:any) => {
|
132
|
+
isLoading = false;
|
133
|
+
receivedFooterData = data;
|
134
|
+
let licenseHeadScriptSrc,
|
135
|
+
licenseScriptBody,
|
136
|
+
licenseEvent;
|
137
|
+
({
|
138
|
+
gameVendorsLinksTitle,
|
139
|
+
gameVendorsRepeater,
|
140
|
+
paymentLinksTitle,
|
141
|
+
paymentMethodsRepeater,
|
142
|
+
sponsorsLinksTitle,
|
143
|
+
sponsorsRepeater,
|
144
|
+
helpLinksTitle,
|
145
|
+
helpLinksRepeater,
|
146
|
+
licensesLinksTitle,
|
147
|
+
licensesRepeater,
|
148
|
+
socialLinksTitle,
|
149
|
+
socialLinksRepeater,
|
150
|
+
copyright,
|
151
|
+
licenseDesc,
|
152
|
+
licenseHeadScriptSrc,
|
153
|
+
licenseScriptBody,
|
154
|
+
licenseEvent,
|
155
|
+
language : languages
|
156
|
+
} = receivedFooterData);
|
38
157
|
|
39
|
-
|
158
|
+
if (languages) {
|
159
|
+
languagePackLoaded = true;
|
160
|
+
updateLanguageDisplayName();
|
161
|
+
}
|
162
|
+
|
163
|
+
if (licenseHeadScriptSrc?.length > 0) {
|
164
|
+
headScript = true;
|
165
|
+
licenseScriptSrc = licenseHeadScriptSrc;
|
166
|
+
}
|
167
|
+
|
168
|
+
if (licenseScriptBody?.length > 0) {
|
169
|
+
licenseScript = licenseScriptBody;
|
170
|
+
}
|
40
171
|
|
41
|
-
|
172
|
+
window.postMessage({ type: licenseEvent }, window.location.href);
|
42
173
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
174
|
+
window.postMessage({
|
175
|
+
type: 'FooterData',
|
176
|
+
gameVendorsRepeater,
|
177
|
+
paymentMethodsRepeater,
|
178
|
+
sponsorsRepeater,
|
179
|
+
helpLinksRepeater,
|
180
|
+
licensesRepeater,
|
181
|
+
socialLinksRepeater
|
182
|
+
}, window.location.href);
|
183
|
+
}).catch((err:any) => {
|
184
|
+
hasErrors = true;
|
185
|
+
isLoading = false;
|
47
186
|
|
48
|
-
|
49
|
-
|
187
|
+
console.error(err);
|
188
|
+
});
|
50
189
|
}
|
51
190
|
|
52
|
-
const setContent = (element:HTMLElement, content:any) => {
|
191
|
+
const setContent = (element:HTMLElement, content:any):void => {
|
53
192
|
let htmlContent = document.createElement("div");
|
54
193
|
htmlContent.innerHTML = content;
|
55
194
|
element.append(htmlContent);
|
56
195
|
}
|
57
196
|
|
58
|
-
const setClientStyling = () => {
|
197
|
+
const setClientStyling = ():void => {
|
59
198
|
let sheet = document.createElement('style');
|
60
199
|
sheet.innerHTML = clientstyling;
|
61
|
-
|
200
|
+
if (customStylingContainer) {
|
201
|
+
customStylingContainer.appendChild(sheet);
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
const setClientStylingURL = ():void => {
|
206
|
+
let url:URL = new URL(clientstylingurl);
|
207
|
+
let cssFile:HTMLElement = document.createElement('style');
|
208
|
+
|
209
|
+
fetch(url.href)
|
210
|
+
.then((res:any) => res.text())
|
211
|
+
.then((data:any) => {
|
212
|
+
cssFile.innerHTML = data
|
213
|
+
|
214
|
+
if (customStylingContainer) {
|
215
|
+
setTimeout(() => { customStylingContainer.appendChild(cssFile) }, 1);
|
216
|
+
}
|
217
|
+
});
|
218
|
+
}
|
219
|
+
|
220
|
+
const changeLanguage = ():void => {
|
221
|
+
window.postMessage({type: 'LanguageChanged', selectedLanguage}, window.location.href);
|
222
|
+
};
|
223
|
+
|
224
|
+
const toggleLanguageDrawer = ():void => {
|
225
|
+
languageDrawer.classList.toggle('hidden');
|
226
|
+
}
|
227
|
+
|
228
|
+
const overlayOptionTrigger = (e):void => {
|
229
|
+
let option = e.target.closest('.overlayLanguageOption');
|
230
|
+
selectedLanguage = option.getAttribute('data-lang');
|
231
|
+
changeLanguage();
|
232
|
+
updateLanguageDisplayName();
|
233
|
+
languageDrawer.classList.toggle('hidden');
|
234
|
+
};
|
235
|
+
|
236
|
+
const updateLanguageDisplayName = ():void => {
|
237
|
+
let matchFound = false;
|
238
|
+
|
239
|
+
languages.forEach((l:any, i:number) => {
|
240
|
+
if (l.code == selectedLanguage.toLowerCase()) {
|
241
|
+
matchFound = true;
|
242
|
+
let langName:string = '';
|
243
|
+
currentLanguageFlag = l.flag_icon_editable;
|
244
|
+
switch (languagedisplaytype) {
|
245
|
+
case 'name':
|
246
|
+
langName = l.name;
|
247
|
+
break;
|
248
|
+
|
249
|
+
case 'translatedName':
|
250
|
+
langName = l.translated_name;
|
251
|
+
break;
|
252
|
+
|
253
|
+
default:
|
254
|
+
langName = l.code;
|
255
|
+
break;
|
256
|
+
}
|
257
|
+
languageDisplayName = langName;
|
258
|
+
}
|
259
|
+
});
|
260
|
+
|
261
|
+
if (!matchFound) {
|
262
|
+
languageDisplayName = selectedLanguage;
|
263
|
+
}
|
264
|
+
}
|
265
|
+
|
266
|
+
const setLanguagesArray = ():void => {
|
267
|
+
languagesArray = languageslist.replace(/ /g,'').split(',');
|
268
|
+
languagesArray = languagesArray.map((language:string) => language.toUpperCase());
|
62
269
|
}
|
63
270
|
|
271
|
+
$: lang && setLocale(lang);
|
272
|
+
$: languageslist && setLanguagesArray();
|
273
|
+
$: session && userid && endpoint && setSession();
|
274
|
+
$: isLoggedIn && lang && setSessionTimer();
|
275
|
+
$: endpoint && lang && env && getCmsData();
|
276
|
+
$: clockenabled !== 'false' && clocksecondsenabled && clockcustomformat && clockDisplay();
|
277
|
+
$: clockenabled !== 'false' && clocksecondsenabled && (refreshRate = clocksecondsenabled == "true" ? 1000 : 60000) && refreshClock();
|
278
|
+
$: lang && (selectedLanguage = lang) && languages && (languages.length > 0) && updateLanguageDisplayName();
|
64
279
|
$: clientstyling && setClientStyling();
|
65
|
-
$:
|
280
|
+
$: clientstylingurl && setClientStylingURL();
|
281
|
+
|
66
282
|
</script>
|
67
283
|
|
284
|
+
<svelte:head>
|
285
|
+
{#if headScript}
|
286
|
+
<script src={licenseScriptSrc}></script>
|
287
|
+
{/if}
|
288
|
+
</svelte:head>
|
289
|
+
|
68
290
|
{#if hasErrors}
|
69
291
|
<p class="SearchLoading">500 Error - Internal Server Error</p>
|
70
292
|
{:else}
|
71
293
|
{#if isLoading}
|
72
294
|
<p class="SearchLoading">Loading ...</p>
|
73
295
|
{:else}
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
<p class="FooterTitle">{socialLinksTitle}</p>
|
82
|
-
{/if}
|
83
|
-
<casino-footer-section-v2 class="FooterSection SocialSection" socialflag="1" clientstyling={customStyling} target={target}></casino-footer-section-v2>
|
84
|
-
</div>
|
296
|
+
|
297
|
+
<div class="Footer" bind:this={customStylingContainer}>
|
298
|
+
<div class="FooterSide" >
|
299
|
+
<!-- start helper section -->
|
300
|
+
{#if helpLinksRepeater}
|
301
|
+
{#if helpLinksTitle}
|
302
|
+
<p class="FooterTitle">{helpLinksTitle}</p>
|
85
303
|
{/if}
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
304
|
+
<casino-footer-section helperflag="1" clientstyling={customStyling} target={target} displaycolumn="true"></casino-footer-section>
|
305
|
+
{/if}
|
306
|
+
</div>
|
307
|
+
|
308
|
+
<div class="FooterGrid">
|
309
|
+
<!-- start vendors section -->
|
310
|
+
{#if gameVendorsRepeater}
|
311
|
+
<div class="GridRow">
|
312
|
+
<div>
|
313
|
+
{#if gameVendorsLinksTitle}
|
314
|
+
<p class="FooterTitle">{gameVendorsLinksTitle}</p>
|
96
315
|
{/if}
|
97
|
-
<casino-footer-section
|
316
|
+
<casino-footer-section vendorflag="1" clientstyling={customStyling} target={target}></casino-footer-section>
|
98
317
|
</div>
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
{#if licensesRepeater}
|
104
|
-
<div class="GridRow">
|
105
|
-
<!-- start license section -->
|
106
|
-
{#if licensesRepeater}
|
107
|
-
<div class="GridCol">
|
108
|
-
<casino-footer-section-v2 class="FooterSection" licenseFlag="1" clientstyling={customStyling} target={target}></casino-footer-section-v2>
|
109
|
-
</div>
|
110
|
-
{/if}
|
111
|
-
<!-- end license section -->
|
112
|
-
</div>
|
113
|
-
{/if}
|
318
|
+
</div>
|
319
|
+
{/if}
|
320
|
+
<!-- end vendors section -->
|
321
|
+
<!-- start payments section -->
|
114
322
|
{#if paymentMethodsRepeater}
|
115
323
|
<div class="GridRow">
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
<casino-footer-section-v2 class="FooterSection" paymentflag="1" clientstyling={customStyling} target={target}></casino-footer-section-v2>
|
123
|
-
</div>
|
124
|
-
{/if}
|
125
|
-
<!-- end payments section -->
|
324
|
+
<div>
|
325
|
+
{#if paymentLinksTitle}
|
326
|
+
<p class="FooterTitle">{paymentLinksTitle}</p>
|
327
|
+
{/if}
|
328
|
+
<casino-footer-section paymentflag="1" clientstyling={customStyling} target={target}></casino-footer-section>
|
329
|
+
</div>
|
126
330
|
</div>
|
127
331
|
{/if}
|
128
|
-
|
332
|
+
<!-- end payments section -->
|
333
|
+
|
334
|
+
<!-- start panic button -->
|
335
|
+
{#if panicbuttonenabled === "true"}
|
336
|
+
<panic-button
|
337
|
+
customtext = "Hold the button for 3 seconds to take 24 hours instant lock"
|
338
|
+
alternativestyling="true"
|
339
|
+
{lang}
|
340
|
+
{clientstyling}
|
341
|
+
></panic-button>
|
342
|
+
{/if}
|
343
|
+
<!-- end panic button -->
|
344
|
+
<!-- start license section -->
|
345
|
+
{#if licensesRepeater}
|
129
346
|
<div class="GridRow">
|
130
|
-
|
131
|
-
|
132
|
-
<
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
347
|
+
<div class="LicenseLinks">
|
348
|
+
{#if licensesLinksTitle}
|
349
|
+
<p class="FooterTitle">{licensesLinksTitle}</p>
|
350
|
+
{/if}
|
351
|
+
<casino-footer-section licenseFlag="1" clientstyling={customStyling} target={target}></casino-footer-section>
|
352
|
+
</div>
|
353
|
+
<!-- start detailed licenses section -->
|
354
|
+
<div class="LicenseDesc">
|
355
|
+
{#if licenseDesc}
|
356
|
+
<div class="DetailedLicenses" use:setContent={licenseDesc}></div>
|
357
|
+
<div class="DetailedCustomLicenses" use:setContent={licenseScript}></div>
|
358
|
+
<div>
|
359
|
+
<!-- start clock section -->
|
360
|
+
{#if clockenabled==="true"}
|
361
|
+
<div class="ClockContainer">
|
362
|
+
<span class="ClockText">{clocktext}:</span>
|
363
|
+
<span class="ClockTime">{time}</span>
|
364
|
+
</div>
|
365
|
+
{/if}
|
366
|
+
<!-- end clock section -->
|
367
|
+
<!-- start session timer section -->
|
368
|
+
|
369
|
+
{#if sessiontimerenabled && localStorage.session}
|
370
|
+
<div class="sessionTimerContainer">
|
371
|
+
<span class="SessionText">{$_('casinoFooter.sessionTimer')} {timeString}</span>
|
372
|
+
</div>
|
373
|
+
{/if}
|
374
|
+
<!-- end session timer section -->
|
375
|
+
</div>
|
376
|
+
{/if}
|
377
|
+
</div>
|
378
|
+
<!-- end detailed licenses section -->
|
140
379
|
</div>
|
141
380
|
{/if}
|
381
|
+
<!-- end license section -->
|
382
|
+
|
383
|
+
<!-- start sponsors section -->
|
142
384
|
{#if sponsorsRepeater}
|
143
385
|
<div class="GridRow">
|
144
|
-
<!-- start sponsors section -->
|
145
386
|
{#if sponsorsRepeater}
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
387
|
+
<div>
|
388
|
+
{#if sponsorsLinksTitle}
|
389
|
+
<p class="FooterTitle">{sponsorsLinksTitle}</p>
|
390
|
+
{/if}
|
391
|
+
<casino-footer-section sponsorflag="1" clientstyling={customStyling} target={target}></casino-footer-section>
|
392
|
+
</div>
|
152
393
|
{/if}
|
153
|
-
<!-- end sponsors section -->
|
154
394
|
</div>
|
155
395
|
{/if}
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
396
|
+
<!-- end sponsors section -->
|
397
|
+
|
398
|
+
<!-- start social section -->
|
399
|
+
{#if socialLinksRepeater}
|
400
|
+
<div class="GridRow">
|
401
|
+
{#if socialLinksTitle}
|
402
|
+
<p class="FooterTitle">{socialLinksTitle}</p>
|
403
|
+
{/if}
|
404
|
+
<casino-footer-section socialflag="1" clientstyling={customStyling} target={target}></casino-footer-section>
|
165
405
|
</div>
|
166
|
-
|
167
|
-
|
406
|
+
{/if}
|
407
|
+
<!-- end social section -->
|
408
|
+
|
409
|
+
<!-- start language selector -->
|
410
|
+
{#if (languageselectorenabled==="true" && languagePackLoaded && selectedLanguage)}
|
411
|
+
<div class="GridRow">
|
412
|
+
<div class="languageSelectorContainer">
|
413
|
+
<!-- traditional dropdown option for screenreader users. Works the same way as the old language selector. Display: none -->
|
414
|
+
<select bind:value={selectedLanguage} class="Item ItemLanguage" on:change={()=>changeLanguage()}>
|
415
|
+
{#each languagesArray as operatorLanguage}
|
416
|
+
<option value={operatorLanguage} selected>{operatorLanguage}</option>
|
417
|
+
{/each}
|
418
|
+
</select>
|
419
|
+
|
420
|
+
<!-- Custom dropdown in order to be able to display country flags -->
|
421
|
+
<div class="languageSelectorOverlay">
|
422
|
+
<button class="drawerButton" value="{selectedLanguage}" on:click={toggleLanguageDrawer}><img class="languageFlag" src={currentLanguageFlag}>{languageDisplayName}
|
423
|
+
<svg width="8" height="5" viewBox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg">
|
424
|
+
<path opacity="0.4" d="M0.94 0L4.00067 3.05467L7.06 0L8 0.940667L4.00067 4.94133L0 0.940667L0.94 0Z" fill="black"/>
|
425
|
+
</svg>
|
426
|
+
</button>
|
427
|
+
<div bind:this={languageDrawer} class="languageDrawer hidden">
|
428
|
+
<ul id="languageList">
|
429
|
+
{#each languages as language}
|
430
|
+
<li class="overlayLanguageOption" data-lang={language.code} on:click={overlayOptionTrigger}><img class="languageFlag" src={language.flag_icon_editable}><a href="javascript:void(0)"><span>{language.name}</span></a></li>
|
431
|
+
{/each}
|
432
|
+
</ul>
|
433
|
+
</div>
|
434
|
+
</div>
|
435
|
+
</div>
|
436
|
+
</div>
|
437
|
+
{/if}
|
438
|
+
<!-- end language selector -->
|
439
|
+
|
440
|
+
{#if copyright}
|
441
|
+
<!-- start copyright section -->
|
442
|
+
<div class="CopyrightAreaRights CopyrightArea" use:setContent={copyright}></div>
|
443
|
+
<!-- end copyright section -->
|
444
|
+
{/if}
|
445
|
+
|
168
446
|
</div>
|
447
|
+
</div>
|
169
448
|
{/if}
|
170
449
|
{/if}
|
171
450
|
|
451
|
+
|
172
452
|
<style lang="scss">
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
@function ttp($value) {
|
177
|
-
$multiplicator: 16px;
|
178
|
-
@return $value * $multiplicator;
|
453
|
+
|
454
|
+
:host {
|
455
|
+
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
|
179
456
|
}
|
457
|
+
$color-white : #E8E9EB;
|
180
458
|
|
181
459
|
.SearchLoading {
|
182
|
-
color: #
|
460
|
+
color: var(--emfe-w-color-white, #FFFFFF);
|
183
461
|
text-align: center;
|
184
462
|
}
|
463
|
+
|
464
|
+
.Footer {
|
465
|
+
background-color: $color-white;
|
466
|
+
position: relative;
|
467
|
+
}
|
468
|
+
|
469
|
+
.FooterSide {
|
470
|
+
display: flex;
|
471
|
+
flex-direction: column;
|
472
|
+
position: absolute;
|
473
|
+
background-color: $color-white;
|
474
|
+
.FooterTitle {
|
475
|
+
text-transform: uppercase;
|
476
|
+
font-size: 12px;
|
477
|
+
font-weight: 600;
|
478
|
+
margin: 24px 13px;
|
479
|
+
}
|
480
|
+
}
|
185
481
|
.FooterGrid {
|
186
|
-
font-
|
482
|
+
font-weight: 400;
|
187
483
|
display: flex;
|
188
|
-
padding:
|
189
|
-
|
190
|
-
|
484
|
+
padding: 100px 0;
|
485
|
+
max-width: 1200px;
|
486
|
+
margin: 0 auto;
|
487
|
+
background-color: $color-white;
|
191
488
|
flex-direction: column;
|
192
489
|
align-items: center;
|
193
490
|
justify-content: center;
|
194
|
-
&.NoSponsorSpacing {
|
195
|
-
padding-top: ttp(1.875);
|
196
|
-
}
|
197
491
|
.GridRow {
|
198
492
|
display: flex;
|
199
493
|
flex-flow: row wrap;
|
200
494
|
width: 100%;
|
201
|
-
padding: ttp(1.25) 0;
|
202
495
|
align-items: flex-start;
|
203
496
|
justify-content: center;
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
}
|
210
|
-
&.LicenseRow{
|
211
|
-
border-bottom: 0;
|
212
|
-
}
|
213
|
-
.GridCol {
|
214
|
-
width: 100%;
|
215
|
-
flex:1;
|
216
|
-
p {
|
497
|
+
align-items: center;
|
498
|
+
padding: 20px 0;
|
499
|
+
text-align: center;
|
500
|
+
max-width: 1100px;
|
501
|
+
p {
|
217
502
|
text-align: center;
|
218
503
|
&.FooterTitle {
|
219
|
-
font-size:
|
504
|
+
font-size: 12px;
|
220
505
|
font-weight: 700;
|
221
506
|
}
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
507
|
+
}
|
508
|
+
.LicenseDesc {
|
509
|
+
flex: 1;
|
510
|
+
max-width: 575px;
|
511
|
+
line-height: 1.3;
|
512
|
+
display: flex;
|
513
|
+
flex-direction: column;
|
514
|
+
align-items: flex-start;
|
515
|
+
.DetailedLicenses {
|
516
|
+
font-size: 10px;
|
517
|
+
color: var(--emfe-w-color-gray-150, #828282);
|
518
|
+
|
519
|
+
div {
|
520
|
+
text-align: left;
|
521
|
+
white-space: pre-line;
|
227
522
|
}
|
228
523
|
}
|
229
|
-
|
230
|
-
.DetailedLicenses {
|
231
|
-
margin: ttp(1.875) ttp(3.125) ttp(1.25);
|
232
|
-
font-size: ttp(0.625);
|
233
|
-
text-align: center;
|
234
|
-
color: #828282;
|
524
|
+
}
|
235
525
|
}
|
236
526
|
.CopyrightAreaRights {
|
237
|
-
margin-top:
|
527
|
+
margin-top: 10px;
|
238
528
|
}
|
239
529
|
.CopyrightTextArea p, .CopyrightArea p {
|
240
530
|
margin: 0;
|
241
|
-
color: #828282;
|
242
|
-
font-size:
|
531
|
+
color: var(--emfe-w-color-gray-150, #828282);
|
532
|
+
font-size: 9px;
|
243
533
|
}
|
244
534
|
}
|
245
535
|
@media only screen and (max-width: 768px) {
|
246
|
-
.
|
247
|
-
|
248
|
-
|
249
|
-
|
536
|
+
.Footer {
|
537
|
+
display: flex;
|
538
|
+
flex-direction: column;
|
539
|
+
&Side {
|
540
|
+
position: relative;
|
541
|
+
margin-top: 66px;
|
542
|
+
margin-left: 14px;
|
250
543
|
}
|
251
|
-
|
544
|
+
&Grid {
|
252
545
|
padding: 0;
|
253
|
-
&:not(:last-child) {
|
254
|
-
border-bottom: 0;
|
255
|
-
}
|
256
546
|
&:last-child {
|
257
|
-
|
258
|
-
border-bottom: 0;
|
259
|
-
}
|
260
|
-
}
|
261
|
-
&.SplitRow {
|
262
|
-
.GridCol:first-child, .GridCol:nth-child(2) {
|
263
|
-
flex-basis: unset;
|
264
|
-
}
|
265
|
-
.GridCol:nth-child(2) {
|
266
|
-
border-left: none;
|
267
|
-
}
|
268
|
-
}
|
269
|
-
.GridCol {
|
270
|
-
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
271
|
-
padding: ttp(0.938) 0;
|
272
|
-
#DetailedLicenses {
|
273
|
-
margin: ttp(0.625) auto ttp(1.563);
|
274
|
-
}
|
275
|
-
.PaymentsTitle, .VendorsTitle {
|
276
|
-
margin: ttp(0.625) auto;
|
277
|
-
}
|
547
|
+
padding-bottom: 50px;
|
278
548
|
}
|
279
549
|
}
|
280
550
|
}
|
551
|
+
.GridRow {
|
552
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
553
|
+
gap: 15px;
|
554
|
+
&:last-child {
|
555
|
+
border: none;
|
556
|
+
}
|
557
|
+
}
|
558
|
+
}
|
559
|
+
|
560
|
+
|
561
|
+
.ClockContainer {
|
562
|
+
color: var(--emfe-w-color-gray-150, #828282);
|
563
|
+
font-size: 11px;
|
564
|
+
display: inline;
|
565
|
+
}
|
566
|
+
.sessionTimerContainer {
|
567
|
+
color: #828282;
|
568
|
+
font-size: 11px;
|
569
|
+
display: inline;
|
570
|
+
}
|
571
|
+
|
572
|
+
.ItemLanguage {
|
573
|
+
display: none;
|
574
|
+
}
|
575
|
+
|
576
|
+
#languageList {
|
577
|
+
padding: 0;
|
578
|
+
margin: 0;
|
579
|
+
}
|
580
|
+
|
581
|
+
.languageSelectorOverlay {
|
582
|
+
position: relative;
|
583
|
+
}
|
584
|
+
|
585
|
+
.drawerButton {
|
586
|
+
height: 30px;
|
587
|
+
width: 150px;
|
588
|
+
background: inherit;
|
589
|
+
color: inherit;
|
590
|
+
border: none;
|
591
|
+
padding: 0;
|
592
|
+
font: inherit;
|
593
|
+
cursor: pointer;
|
594
|
+
outline: inherit;
|
595
|
+
|
596
|
+
display: flex;
|
597
|
+
justify-content: space-evenly;
|
598
|
+
align-items: center;
|
599
|
+
|
600
|
+
border-radius: 0px;
|
601
|
+
border: 0;
|
602
|
+
}
|
603
|
+
|
604
|
+
.languageDrawer {
|
605
|
+
position:absolute;
|
606
|
+
background: $color-white;
|
607
|
+
width: 150px;
|
608
|
+
top: 30px;
|
609
|
+
padding: 6px 0;
|
610
|
+
left: 3.9px;
|
611
|
+
|
612
|
+
&.hidden {
|
613
|
+
display: none;
|
614
|
+
}
|
615
|
+
}
|
616
|
+
|
617
|
+
.languageFlag {
|
618
|
+
margin-right: 8px;
|
619
|
+
background: black;
|
620
|
+
border-radius: 50%;
|
621
|
+
width: 14px;
|
622
|
+
height: 14px;
|
623
|
+
}
|
624
|
+
|
625
|
+
.overlayLanguageOption {
|
626
|
+
list-style: none;
|
627
|
+
width: 24px;
|
628
|
+
position: relative;
|
629
|
+
padding: 0;
|
630
|
+
justify-content: center;
|
631
|
+
|
632
|
+
img {
|
633
|
+
position: absolute;
|
634
|
+
z-index: 0;
|
635
|
+
cursor: pointer;
|
636
|
+
top: 6px;
|
637
|
+
left: 12px;
|
638
|
+
}
|
639
|
+
|
640
|
+
a {
|
641
|
+
text-decoration: none;
|
642
|
+
color: black;
|
643
|
+
display: inline-block;
|
644
|
+
|
645
|
+
width: 150px;
|
646
|
+
|
647
|
+
span {
|
648
|
+
width: 100%;
|
649
|
+
display: flex;
|
650
|
+
justify-content: center;
|
651
|
+
margin: 4px 0;
|
652
|
+
}
|
281
653
|
}
|
654
|
+
}
|
655
|
+
|
282
656
|
</style>
|