@everymatrix/player-change-password-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,679 @@
1
+ <svelte:options tag={null} />
2
+ <script lang="ts">
3
+ import { onMount } from "svelte";
4
+ import { getDevice } from 'rvhelper';
5
+ import { _, addNewMessages, setLocale } from './i18n';
6
+ import { TRANSLATIONS } from './translations';
7
+
8
+ export let lang:string = 'en';
9
+ export let simplepasswordvalidation:string = 'false';
10
+ export let clientstyling:string = '';
11
+ export let clientstylingurl:string = '';
12
+ export let translationurl:string = '';
13
+
14
+ let customStylingContainer:HTMLElement;
15
+ let isLoading:boolean = false;
16
+ let userAgent:String = window.navigator.userAgent;
17
+ let isMobile = (getDevice(userAgent) === 'PC') ? false : true;
18
+ let activateSubmit:boolean = false;
19
+ const mediaQuery = window.matchMedia('(min-width: 768px)');
20
+
21
+ const regexValidators = {
22
+ password: /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,20}$/
23
+ }
24
+ let invalidCurrentPassword:boolean = false;
25
+ let invalidNewPassword:boolean = false;
26
+ let invalidConfirmPassword:boolean = false;
27
+ let currentPasswordVisibilityToggle:HTMLElement;
28
+ let newPasswordVisibilityToggle:HTMLElement;
29
+ let confirmPasswordVisibilityToggle:HTMLElement;
30
+
31
+ let isCurrentPasswordVisible:boolean = false;
32
+ let isNewPasswordVisible:boolean = false;
33
+ let isConfirmPasswordVisible:boolean = false;
34
+ let oldPasswordSameAsNew:boolean = false;
35
+
36
+ let userCurrentPassword:string = '';
37
+ let userNewPassword:string = '';
38
+ let userConfirmPassword:string = '';
39
+ let passwordChanged:boolean = false;
40
+
41
+ let errorPasswordChanged:string = '';
42
+ let showErrorPasswordChanged:boolean = false;
43
+
44
+ const setTranslationUrl = ():void => {
45
+ let url:string = translationurl;
46
+
47
+ fetch(url).then((res:any) => res.json())
48
+ .then((res) => {
49
+ Object.keys(res).forEach((item:any):void => {
50
+ addNewMessages(item, res[item]);
51
+ });
52
+ }).catch((err:any) => {
53
+ console.log(err);
54
+ });
55
+ }
56
+
57
+ Object.keys(TRANSLATIONS).forEach((item:any) => {
58
+ addNewMessages(item, TRANSLATIONS[item]);
59
+ });
60
+
61
+ const togglePassword = (field) => {
62
+ switch(field) {
63
+ case 'userCurrentPassword':
64
+ isCurrentPasswordVisible = !isCurrentPasswordVisible;
65
+ currentPasswordVisibilityToggle.type = isCurrentPasswordVisible ? "text" : "password";
66
+ break;
67
+ case 'userNewPassword':
68
+ isNewPasswordVisible = !isNewPasswordVisible;
69
+ newPasswordVisibilityToggle.type = isNewPasswordVisible ? "text" : "password";
70
+ break;
71
+ case 'userConfirmPassword':
72
+ isConfirmPasswordVisible = !isConfirmPasswordVisible;
73
+ confirmPasswordVisibilityToggle.type = isConfirmPasswordVisible ? "text" : "password";
74
+ break;
75
+
76
+ default:
77
+ break;
78
+ }
79
+ }
80
+
81
+ const verifyTypeOfPassword = ():void => {
82
+ if (simplepasswordvalidation == 'true') {
83
+ regexValidators.password = /^(?!.* ).{8,20}$/;
84
+ }
85
+ }
86
+
87
+ const validatePassword = (invalid, password, elem) => {
88
+ if(elem.id === "CurrentPassword") {
89
+ invalidCurrentPassword = !checkUserPassword(password);
90
+ } else if (elem.id === "NewPassword") {
91
+ invalidNewPassword = !checkUserPassword(password);
92
+ if(userCurrentPassword) {
93
+ oldPasswordSameAsNew = (userCurrentPassword === userNewPassword) ? true : false;
94
+ }
95
+ if(userConfirmPassword) {
96
+ invalidConfirmPassword = (userNewPassword === userConfirmPassword) ? !checkUserPassword(password) : true;
97
+ }
98
+ } else {
99
+ invalidConfirmPassword = (userNewPassword === userConfirmPassword) ? !checkUserPassword(password) : true;
100
+ }
101
+ checkSubmitState();
102
+ }
103
+
104
+ const checkUserPassword = (password:string) => {
105
+ if(regexValidators.password.test(password)) {
106
+ return true;
107
+ } else {
108
+ return false;
109
+ }
110
+ }
111
+
112
+ const checkSubmitState = () => {
113
+ if(!invalidCurrentPassword && !invalidNewPassword && !invalidConfirmPassword && !oldPasswordSameAsNew && userCurrentPassword && userNewPassword && userConfirmPassword) {
114
+ activateSubmit = true;
115
+ } else {
116
+ activateSubmit = false;
117
+ }
118
+ }
119
+
120
+ const submitNewPassword = (e):void => {
121
+ e.preventDefault();
122
+ if(activateSubmit) {
123
+ window.postMessage({ type: 'ChangePassword', userCurrentPassword, userNewPassword }, window.location.href);
124
+ }
125
+ }
126
+
127
+ const toggleScreen = () => {
128
+ window.postMessage({type: 'PlayerAccountMenuActive', isMobile}, window.location.href);
129
+ }
130
+
131
+
132
+ const backToHomePage = () => {
133
+ window.postMessage({ type: 'GoToHomepage' }, window.location.href);
134
+ }
135
+
136
+
137
+ const initialLoad = () => {
138
+ setLocale(lang);
139
+ }
140
+
141
+ const messageHandler = (e:any) => {
142
+ if (e.data) {
143
+ switch(e.data.type) {
144
+ case 'PasswordChangedSuccessfully':
145
+ passwordChanged = true;
146
+ break;
147
+
148
+ case 'ShowPasswordChangedError':
149
+ showErrorPasswordChanged = e.data.showErrorPasswordChanged;
150
+ errorPasswordChanged = e.data.errorPasswordChanged;
151
+ break;
152
+ }
153
+ }
154
+ }
155
+
156
+ const setClientStyling = ():void => {
157
+ let sheet:HTMLElement = document.createElement('style');
158
+ sheet.innerHTML = clientstyling;
159
+ customStylingContainer.appendChild(sheet);
160
+ }
161
+
162
+ const setClientStylingURL = ():void => {
163
+ let url:URL = new URL(clientstylingurl);
164
+ let cssFile:HTMLElement = document.createElement('style');
165
+
166
+ fetch(url.href)
167
+ .then((res:any) => res.text())
168
+ .then((data:any) => {
169
+ cssFile.innerHTML = data
170
+
171
+ setTimeout(() => { customStylingContainer.appendChild(cssFile) }, 1);
172
+ });
173
+ }
174
+
175
+ onMount(() => {
176
+ window.addEventListener('message', messageHandler, false);
177
+ return () => {
178
+ window.removeEventListener('message', messageHandler);
179
+ }
180
+ });
181
+
182
+ $: simplepasswordvalidation && verifyTypeOfPassword();
183
+ $: lang && initialLoad();
184
+ $: passwordChanged;
185
+ $: clientstylingurl && customStylingContainer && setClientStylingURL();
186
+ $: clientstyling && customStylingContainer && setClientStyling();
187
+ $: translationurl && setTranslationUrl();
188
+ </script>
189
+
190
+ <div bind:this={customStylingContainer}>
191
+ {#if isLoading}
192
+ <div class="ModalLoader"></div>
193
+ {:else}
194
+ <form class="PlayerChangePasswordWrapper { isMobile ? 'PlayerChangePasswordWrapperMobile' : '' } {mediaQuery.matches && isMobile ? 'PlayerChangePasswordWrapperTablet' : ''}">
195
+ {#if !passwordChanged}
196
+
197
+ {#if isMobile}
198
+ <div class="MenuReturnButton" on:click={() => toggleScreen()}>
199
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15"><defs><style>.aaa{fill:var(--emw--color-primary, #22B04E);;}</style></defs><g transform="translate(-20 -158)">
200
+ <g transform="translate(20 158)">
201
+ <path class="aaa" d="M7.5,0,6.136,1.364,11.3,6.526H0V8.474H11.3L6.136,13.636,7.5,15,15,7.5Z" transform="translate(15 15) rotate(180)"/>
202
+ </g></g>
203
+ </svg>
204
+ <h2 class="ChangePasswordTitleMobile">{$_('titleChangePassword')}</h2>
205
+ </div>
206
+ {/if}
207
+ <h2 class="ChangePasswordTitle {isMobile ? 'ChangePasswordTitleNone' : ''}">{$_('titleChangePassword')}</h2>
208
+
209
+ <section class="PlayerChangePasswordContent">
210
+ <div class="PlayerChangePasswordBox { invalidCurrentPassword ? 'InvalidField' : '' }">
211
+ <label for="CurrentPassword">{$_('currentPassword')}</label>
212
+ <input bind:value={userCurrentPassword} on:blur={validatePassword(invalidCurrentPassword, userCurrentPassword, currentPasswordVisibilityToggle)} id="CurrentPassword" type="password" bind:this={currentPasswordVisibilityToggle} />
213
+ {#if isCurrentPasswordVisible}
214
+ <svg on:click={() => togglePassword('userCurrentPassword')} class="TogglePasswordVisibility {invalidCurrentPassword ? 'InvalidToggle' : ''} { isMobile ? 'TogglePasswordVisibilityMobile' : '' }" xmlns="http://www.w3.org/2000/svg" width="18.844" height="12.887" viewBox="0 0 18.844 12.887"><defs><style>.a{fill:var(--emw--color-white, #FFFFFF);}</style></defs><g transform="translate(-110.856 -23.242)"><circle class="a" cx="0.05" cy="0.05" r="0.05" transform="translate(121.017 31.148)"/><g transform="translate(117.499 27.37)"><path class="a" d="M147.413,43.174a2.774,2.774,0,0,0-3.229-3.943Z" transform="translate(-142.164 -39.123)"/><path class="a" d="M137.031,43.1a2.778,2.778,0,0,0,3.447,4.209Z" transform="translate(-136.413 -42.068)"/></g><g transform="translate(110.856 24.899)"><path class="a" d="M122.538,42.061a7.043,7.043,0,0,1-2.325.53,10.373,10.373,0,0,1-4.393-1.482,36.509,36.509,0,0,1-3.873-2.391.13.13,0,0,1,0-.208,44.141,44.141,0,0,1,3.873-2.651c.394-.233.768-.437,1.13-.622l-.686-.838c-.322.167-.651.347-.99.55a37.989,37.989,0,0,0-3.977,2.729,1.21,1.21,0,0,0-.442.962,1.1,1.1,0,0,0,.494.936,34.416,34.416,0,0,0,3.977,2.469,11.468,11.468,0,0,0,4.886,1.611,8.427,8.427,0,0,0,3.039-.725Z" transform="translate(-110.856 -33.157)"/><path class="a" d="M149.119,34.14a45.875,45.875,0,0,0-4.055-2.729,20.541,20.541,0,0,0-2.547-1.248,5.6,5.6,0,0,0-4.79-.017l.7.856a5.254,5.254,0,0,1,1.672-.346,10.072,10.072,0,0,1,4.445,1.663,34.132,34.132,0,0,1,3.925,2.651.13.13,0,0,1,0,.208,40.2,40.2,0,0,1-3.925,2.391c-.179.092-.352.176-.525.26l.684.835c.1-.054.2-.1.309-.159a36.356,36.356,0,0,0,4.055-2.469,1.067,1.067,0,0,0,.52-.936A1.159,1.159,0,0,0,149.119,34.14Z" transform="translate(-130.743 -29.617)"/></g><rect class="a" width="0.972" height="15.861" rx="0.486" transform="translate(114.827 23.858) rotate(-39.315)"/></g></svg>
215
+ {:else}
216
+ <svg on:click={() => togglePassword('userCurrentPassword')} class="TogglePasswordVisibility {invalidCurrentPassword ? 'InvalidToggle' : ''} { isMobile ? 'TogglePasswordVisibilityMobile' : '' }" xmlns="http://www.w3.org/2000/svg" width="18.843" height="10.5" viewBox="0 0 18.843 10.5"><defs><style>.a{fill:var(--emw--color-white, #FFFFFF);}</style></defs><g transform="translate(-14.185 -27.832)"><path class="a" d="M23.541,38.332a11.467,11.467,0,0,1-4.886-1.611,34.413,34.413,0,0,1-3.976-2.469,1.1,1.1,0,0,1-.494-.936,1.21,1.21,0,0,1,.442-.962A37.986,37.986,0,0,1,18.6,29.625a16.06,16.06,0,0,1,2.521-1.248,6.862,6.862,0,0,1,2.417-.546,6.862,6.862,0,0,1,2.417.546,20.541,20.541,0,0,1,2.547,1.248,45.872,45.872,0,0,1,4.054,2.729,1.159,1.159,0,0,1,.468.962,1.067,1.067,0,0,1-.52.936,36.353,36.353,0,0,1-4.054,2.469A11.2,11.2,0,0,1,23.541,38.332Zm0-9.46a9.813,9.813,0,0,0-4.392,1.663,44.138,44.138,0,0,0-3.873,2.651.13.13,0,0,0,0,.208,36.5,36.5,0,0,0,3.873,2.391,10.372,10.372,0,0,0,4.392,1.481,11.051,11.051,0,0,0,4.444-1.481,40.2,40.2,0,0,0,3.925-2.391.13.13,0,0,0,0-.208h0a34.132,34.132,0,0,0-3.925-2.651A10.072,10.072,0,0,0,23.541,28.872Z" transform="translate(0)"/><circle class="a" cx="2.779" cy="2.779" r="2.779" transform="translate(20.827 30.303)"/></g></svg>
217
+ {/if}
218
+ {#if invalidCurrentPassword}
219
+ {#if simplepasswordvalidation == 'true'}
220
+ <p class="InvalidInput">{$_('simplePasswordError')}</p>
221
+ {:else}
222
+ <p class="InvalidInput">{$_('invalidCurrentPassword')}</p>
223
+ {/if}
224
+ {/if}
225
+ </div>
226
+ <div class="PlayerChangePasswordBox { invalidNewPassword ? 'InvalidField' : '' }">
227
+ <label for="NewPassword">{$_('newPassword')}</label>
228
+ <input bind:value={userNewPassword} on:blur={validatePassword(invalidNewPassword, userNewPassword, newPasswordVisibilityToggle)} id="NewPassword" autocomplete="new-password" type="password" bind:this={newPasswordVisibilityToggle} />
229
+ {#if isNewPasswordVisible}
230
+ <svg on:click={() => togglePassword('userNewPassword')} class="TogglePasswordVisibility {invalidNewPassword ? 'InvalidToggle' : ''} { isMobile ? 'TogglePasswordVisibilityMobile' : '' }" xmlns="http://www.w3.org/2000/svg" width="18.844" height="12.887" viewBox="0 0 18.844 12.887"><defs><style>.a{fill:var(--emw--color-white, #FFFFFF);}</style></defs><g transform="translate(-110.856 -23.242)"><circle class="a" cx="0.05" cy="0.05" r="0.05" transform="translate(121.017 31.148)"/><g transform="translate(117.499 27.37)"><path class="a" d="M147.413,43.174a2.774,2.774,0,0,0-3.229-3.943Z" transform="translate(-142.164 -39.123)"/><path class="a" d="M137.031,43.1a2.778,2.778,0,0,0,3.447,4.209Z" transform="translate(-136.413 -42.068)"/></g><g transform="translate(110.856 24.899)"><path class="a" d="M122.538,42.061a7.043,7.043,0,0,1-2.325.53,10.373,10.373,0,0,1-4.393-1.482,36.509,36.509,0,0,1-3.873-2.391.13.13,0,0,1,0-.208,44.141,44.141,0,0,1,3.873-2.651c.394-.233.768-.437,1.13-.622l-.686-.838c-.322.167-.651.347-.99.55a37.989,37.989,0,0,0-3.977,2.729,1.21,1.21,0,0,0-.442.962,1.1,1.1,0,0,0,.494.936,34.416,34.416,0,0,0,3.977,2.469,11.468,11.468,0,0,0,4.886,1.611,8.427,8.427,0,0,0,3.039-.725Z" transform="translate(-110.856 -33.157)"/><path class="a" d="M149.119,34.14a45.875,45.875,0,0,0-4.055-2.729,20.541,20.541,0,0,0-2.547-1.248,5.6,5.6,0,0,0-4.79-.017l.7.856a5.254,5.254,0,0,1,1.672-.346,10.072,10.072,0,0,1,4.445,1.663,34.132,34.132,0,0,1,3.925,2.651.13.13,0,0,1,0,.208,40.2,40.2,0,0,1-3.925,2.391c-.179.092-.352.176-.525.26l.684.835c.1-.054.2-.1.309-.159a36.356,36.356,0,0,0,4.055-2.469,1.067,1.067,0,0,0,.52-.936A1.159,1.159,0,0,0,149.119,34.14Z" transform="translate(-130.743 -29.617)"/></g><rect class="a" width="0.972" height="15.861" rx="0.486" transform="translate(114.827 23.858) rotate(-39.315)"/></g></svg>
231
+ {:else}
232
+ <svg on:click={() => togglePassword('userNewPassword')} class="TogglePasswordVisibility {invalidNewPassword ? 'InvalidToggle' : ''} { isMobile ? 'TogglePasswordVisibilityMobile' : '' }" xmlns="http://www.w3.org/2000/svg" width="18.843" height="10.5" viewBox="0 0 18.843 10.5"><defs><style>.a{fill:var(--emw--color-white, #FFFFFF);}</style></defs><g transform="translate(-14.185 -27.832)"><path class="a" d="M23.541,38.332a11.467,11.467,0,0,1-4.886-1.611,34.413,34.413,0,0,1-3.976-2.469,1.1,1.1,0,0,1-.494-.936,1.21,1.21,0,0,1,.442-.962A37.986,37.986,0,0,1,18.6,29.625a16.06,16.06,0,0,1,2.521-1.248,6.862,6.862,0,0,1,2.417-.546,6.862,6.862,0,0,1,2.417.546,20.541,20.541,0,0,1,2.547,1.248,45.872,45.872,0,0,1,4.054,2.729,1.159,1.159,0,0,1,.468.962,1.067,1.067,0,0,1-.52.936,36.353,36.353,0,0,1-4.054,2.469A11.2,11.2,0,0,1,23.541,38.332Zm0-9.46a9.813,9.813,0,0,0-4.392,1.663,44.138,44.138,0,0,0-3.873,2.651.13.13,0,0,0,0,.208,36.5,36.5,0,0,0,3.873,2.391,10.372,10.372,0,0,0,4.392,1.481,11.051,11.051,0,0,0,4.444-1.481,40.2,40.2,0,0,0,3.925-2.391.13.13,0,0,0,0-.208h0a34.132,34.132,0,0,0-3.925-2.651A10.072,10.072,0,0,0,23.541,28.872Z" transform="translate(0)"/><circle class="a" cx="2.779" cy="2.779" r="2.779" transform="translate(20.827 30.303)"/></g></svg>
233
+ {/if}
234
+ {#if oldPasswordSameAsNew}
235
+ <p class="InvalidInputNew">{$_('invalidNewPassword')}</p>
236
+ {:else if invalidNewPassword}
237
+ {#if simplepasswordvalidation == 'true'}
238
+ <p class="InvalidInput">{$_('simplePasswordError')}</p>
239
+ {:else}
240
+ <p class="InvalidInput">{$_('invalidNewPasswordSecondary')}</p>
241
+ {/if}
242
+ {/if}
243
+ </div>
244
+ <div class="PlayerChangePasswordBox { invalidConfirmPassword ? 'InvalidField' : '' }">
245
+ <label for="ConfirmPassword">{$_('confirmPassword')}</label>
246
+ <input bind:value={userConfirmPassword} on:blur={validatePassword(invalidConfirmPassword, userConfirmPassword, confirmPasswordVisibilityToggle)} id="ConfirmPassword" type="password" bind:this={confirmPasswordVisibilityToggle} />
247
+ {#if isConfirmPasswordVisible}
248
+ <svg on:click={() => togglePassword('userConfirmPassword')} class="TogglePasswordVisibility {invalidConfirmPassword ? 'InvalidToggle' : ''} { isMobile ? 'TogglePasswordVisibilityMobile' : '' }" xmlns="http://www.w3.org/2000/svg" width="18.844" height="12.887" viewBox="0 0 18.844 12.887"><defs><style>.a{fill:var(--emw--color-white, #FFFFFF);}</style></defs><g transform="translate(-110.856 -23.242)"><circle class="a" cx="0.05" cy="0.05" r="0.05" transform="translate(121.017 31.148)"/><g transform="translate(117.499 27.37)"><path class="a" d="M147.413,43.174a2.774,2.774,0,0,0-3.229-3.943Z" transform="translate(-142.164 -39.123)"/><path class="a" d="M137.031,43.1a2.778,2.778,0,0,0,3.447,4.209Z" transform="translate(-136.413 -42.068)"/></g><g transform="translate(110.856 24.899)"><path class="a" d="M122.538,42.061a7.043,7.043,0,0,1-2.325.53,10.373,10.373,0,0,1-4.393-1.482,36.509,36.509,0,0,1-3.873-2.391.13.13,0,0,1,0-.208,44.141,44.141,0,0,1,3.873-2.651c.394-.233.768-.437,1.13-.622l-.686-.838c-.322.167-.651.347-.99.55a37.989,37.989,0,0,0-3.977,2.729,1.21,1.21,0,0,0-.442.962,1.1,1.1,0,0,0,.494.936,34.416,34.416,0,0,0,3.977,2.469,11.468,11.468,0,0,0,4.886,1.611,8.427,8.427,0,0,0,3.039-.725Z" transform="translate(-110.856 -33.157)"/><path class="a" d="M149.119,34.14a45.875,45.875,0,0,0-4.055-2.729,20.541,20.541,0,0,0-2.547-1.248,5.6,5.6,0,0,0-4.79-.017l.7.856a5.254,5.254,0,0,1,1.672-.346,10.072,10.072,0,0,1,4.445,1.663,34.132,34.132,0,0,1,3.925,2.651.13.13,0,0,1,0,.208,40.2,40.2,0,0,1-3.925,2.391c-.179.092-.352.176-.525.26l.684.835c.1-.054.2-.1.309-.159a36.356,36.356,0,0,0,4.055-2.469,1.067,1.067,0,0,0,.52-.936A1.159,1.159,0,0,0,149.119,34.14Z" transform="translate(-130.743 -29.617)"/></g><rect class="a" width="0.972" height="15.861" rx="0.486" transform="translate(114.827 23.858) rotate(-39.315)"/></g></svg>
249
+ {:else}
250
+ <svg on:click={() => togglePassword('userConfirmPassword')} class="TogglePasswordVisibility {invalidConfirmPassword ? 'InvalidToggle' : ''} { isMobile ? 'TogglePasswordVisibilityMobile' : '' }" xmlns="http://www.w3.org/2000/svg" width="18.843" height="10.5" viewBox="0 0 18.843 10.5"><defs><style>.a{fill:var(--emw--color-white, #FFFFFF);}</style></defs><g transform="translate(-14.185 -27.832)"><path class="a" d="M23.541,38.332a11.467,11.467,0,0,1-4.886-1.611,34.413,34.413,0,0,1-3.976-2.469,1.1,1.1,0,0,1-.494-.936,1.21,1.21,0,0,1,.442-.962A37.986,37.986,0,0,1,18.6,29.625a16.06,16.06,0,0,1,2.521-1.248,6.862,6.862,0,0,1,2.417-.546,6.862,6.862,0,0,1,2.417.546,20.541,20.541,0,0,1,2.547,1.248,45.872,45.872,0,0,1,4.054,2.729,1.159,1.159,0,0,1,.468.962,1.067,1.067,0,0,1-.52.936,36.353,36.353,0,0,1-4.054,2.469A11.2,11.2,0,0,1,23.541,38.332Zm0-9.46a9.813,9.813,0,0,0-4.392,1.663,44.138,44.138,0,0,0-3.873,2.651.13.13,0,0,0,0,.208,36.5,36.5,0,0,0,3.873,2.391,10.372,10.372,0,0,0,4.392,1.481,11.051,11.051,0,0,0,4.444-1.481,40.2,40.2,0,0,0,3.925-2.391.13.13,0,0,0,0-.208h0a34.132,34.132,0,0,0-3.925-2.651A10.072,10.072,0,0,0,23.541,28.872Z" transform="translate(0)"/><circle class="a" cx="2.779" cy="2.779" r="2.779" transform="translate(20.827 30.303)"/></g></svg>
251
+ {/if}
252
+ {#if invalidConfirmPassword}
253
+ <p class="InvalidInput">{$_('confirmPasswordInvalid')}</p>
254
+ {/if}
255
+ </div>
256
+ </section>
257
+ {#if showErrorPasswordChanged}
258
+ <div>
259
+ <p class="PasswordChangedError">{errorPasswordChanged}</p>
260
+ </div>
261
+ {/if}
262
+ <section class="PlayerChangePasswordButtonsArea">
263
+ <button class="PlayerChangePasswordSaveButton {activateSubmit ? '' : 'ButtonInactive'}"
264
+ disabled={!activateSubmit}
265
+ on:click={(e) => submitNewPassword(e)}>{$_('submitChangePassword')}</button>
266
+ </section>
267
+ {:else}
268
+ {#if isMobile}
269
+ <div class="MenuReturnButton" on:click={() => toggleScreen()}>
270
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
271
+ viewBox="0 0 240.823 240.823" style="enable-background:new 0 0 240.823 240.823;" xml:space="preserve" width="18px" fill="var(--emw--color-gray-300, #58586B)">
272
+ <g>
273
+ <path id="Chevron_Right" d="M57.633,129.007L165.93,237.268c4.752,4.74,12.451,4.74,17.215,0c4.752-4.74,4.752-12.439,0-17.179
274
+ l-99.707-99.671l99.695-99.671c4.752-4.74,4.752-12.439,0-17.191c-4.752-4.74-12.463-4.74-17.215,0L57.621,111.816
275
+ C52.942,116.507,52.942,124.327,57.633,129.007z"/>
276
+ </g>
277
+ </svg>
278
+ <span>{$_('returnToMenu')}</span>
279
+ </div>
280
+ {/if}
281
+ <div class="PlayerChangePasswordHeader">
282
+ <h3>{$_('changePasswordText')}</h3>
283
+ </div>
284
+ <div class="ChangedPasswordSuccessfully">
285
+ <div class="SuccessWrapper">
286
+ <div class="IconContainer">
287
+ <div class="Checkmark"></div>
288
+ </div>
289
+ <div class="TextContainer">
290
+ <h3>{$_('passwordReset')}</h3>
291
+ <p>{$_('passwordResetConfirmation')}</p>
292
+ </div>
293
+ </div>
294
+ <div class="PlayerChangePasswordBackButton" on:click={() => backToHomePage()}>{$_('backButtonText')}</div>
295
+ </div>
296
+ {/if}
297
+ </form>
298
+ {/if}
299
+ </div>
300
+
301
+ <style lang="scss">
302
+
303
+
304
+ .PlayerChangePasswordWrapper {
305
+ color: var(--emw--pam-contrast, var(--emw--color-contrast, #07072A));
306
+ padding: 50px;
307
+ max-width: 400px;
308
+ background-color: var(--emw--pam-typography, var(--emw--color-typography, #F1F1F1));
309
+ border-radius: 5%;
310
+ }
311
+
312
+ .ChangePasswordTitle {
313
+ font-size: var(--emw--font-size-x-large, 26px);
314
+ color: var(--emw--color-primary, #22B04E);
315
+ font-weight: var(--emw--font-weight-semibold, 500);
316
+ }
317
+
318
+ .ChangePasswordTitleMobile {
319
+ font-size: var(--emw--font-size-large, 20px);
320
+ color: var(--emw--color-primary, #22B04E);
321
+ }
322
+
323
+ .ChangePasswordTitleNone {
324
+ display: none;
325
+ }
326
+
327
+ .PlayerChangePasswordContent {
328
+ display: grid;
329
+ grid-column-gap: 50px;
330
+ grid-row-gap: 30px;
331
+ grid-template-rows: auto;
332
+ grid-template-columns: 1fr;
333
+ padding-bottom: 30px;
334
+ }
335
+ .PlayerChangePasswordButtonsArea {
336
+ display: grid;
337
+ grid-column-gap: 10px;
338
+ grid-template-rows: auto;
339
+ grid-template-columns: 1fr;
340
+ }
341
+ .PlayerChangePasswordSaveButton, .PlayerChangePasswordCancelButton {
342
+ cursor: pointer;
343
+ border-radius: 5px;
344
+ width: 100%;
345
+ height: 50px;
346
+ display: flex;
347
+ align-items: center;
348
+ justify-content: center;
349
+ font-size: 15px;
350
+ font-family: var(--emw--button-typography);
351
+ color: var(--emw--pam-typography, var(---emw--button-text-color, #FFFFFF));
352
+ text-transform: uppercase;
353
+ text-align: center;
354
+ transition-duration: 0.3s;
355
+ box-sizing: border-box;
356
+ padding: 10px;
357
+ &.ButtonInactive {
358
+ opacity: 0.3;
359
+ }
360
+ }
361
+ .PlayerChangePasswordCancelButton {
362
+ background: transparent;
363
+ font-family: var(--emw--button-typography);
364
+ border: 1px solid var(--emw--color-gray-300, #58586B);
365
+ &.PlayerButtonDisabled {
366
+ background: transparent;
367
+ border: 1px solid var(--emw--color-gray-300, #58586B);
368
+ cursor: not-allowed;
369
+ }
370
+ }
371
+ .PlayerChangePasswordSaveButton {
372
+ background-image: linear-gradient(to bottom, color-mix(in srgb, var(--emw--color-primary, #22B04E) 80%, black 20%), var(--emw--color-primary, #22B04E), color-mix(in srgb, var(--emw--color-primary, #22B04E) 80%, white 30%));
373
+ border: 2px solid var(--emw--button-border-color, #0E5924);
374
+ border-radius: var(--emw--button-border-radius, 50px);
375
+ padding: 30px 0;
376
+ font-size: var(--emw--font-size-large, 20px);
377
+ font-family: var(--emw--button-typography);
378
+ color: var(--emw--button-text-color, #FFFFFF);
379
+ &.PlayerButtonDisabled {
380
+ background: transparent;
381
+ border: 1px solid var(--emw--color-gray-300, #58586B);
382
+ cursor: not-allowed;
383
+ }
384
+ }
385
+ .PlayerChangePasswordBox {
386
+ display: flex;
387
+ flex-direction: column;
388
+ position: relative;
389
+ label {
390
+ font-size: var(--emw--font-size-medium, 16px);
391
+ font-weight: var(--emw--font-weight-semibold, 500);
392
+ margin-bottom: 10px;
393
+ }
394
+ input {
395
+ font-family: inherit;
396
+ font-size: var(--emw--font-size-medium, 16px);
397
+ font-weight: var(--emw--font-weight-light, 300);
398
+ color: var(--emw--color-contrast, #07072A);
399
+ padding: 10px;
400
+ line-height: 16px;
401
+ border: 2px solid var(--emw--color-gray-100, #D6D6D6);
402
+ background: var(--emw-pam-typography, var(--emw--color-typography, #FFFFFF));
403
+ border-radius: 10px;
404
+ outline: none;
405
+ transition-duration: 0.3s;
406
+ &:focus, :focus-within, :focus-visible, :visited {
407
+ box-shadow: 0 0 0 1pt var(--emw--color-primary, #22B04E);
408
+ }
409
+ }
410
+ .FieldDisabled {
411
+ color: var(--emw--color-gray-300, #58586B);
412
+ }
413
+ /* Chrome, Safari, Edge, Opera */
414
+ input::-webkit-outer-spin-button,
415
+ input::-webkit-inner-spin-button {
416
+ -webkit-appearance: none;
417
+ margin: 0;
418
+ }
419
+
420
+ /* MS Edge */
421
+ input::-ms-reveal,
422
+ input::-ms-clear {
423
+ display: none;
424
+ }
425
+
426
+ /* Firefox */
427
+ input[type=number] {
428
+ -moz-appearance: textfield;
429
+ }
430
+
431
+ &.InvalidField {
432
+ input {
433
+ border: 1px solid var(--emw--color-error, #FD2839);
434
+ background: var(--emw--color-pale, #FBECF4);
435
+ color: var(--emw--color-gray-300, #58586B);
436
+ }
437
+ }
438
+ &:last-child {
439
+ &.InvalidField {
440
+ .InvalidInput {
441
+ bottom: -16px;
442
+ }
443
+ .InvalidInputNew {
444
+ bottom: -24px;
445
+ }
446
+ }
447
+ }
448
+ }
449
+ .TogglePasswordVisibility {
450
+ height: 20px;
451
+ position: absolute;
452
+ right: 10px;
453
+ top: 38px;
454
+ cursor: pointer;
455
+ color: var(--emw--color-gray-300, #58586B);
456
+ &.InvalidToggle {
457
+ path, circle, rect {
458
+ fill: var(--emw--color-error, #FD2839);
459
+ }
460
+ }
461
+ path, circle, rect {
462
+ fill: var(--emw--color-gray-300, #58586B);
463
+ }
464
+ }
465
+
466
+ .TogglePasswordVisibilityMobile {
467
+ top: 35px;
468
+
469
+ }
470
+ .InvalidInput, .InvalidInputNew {
471
+ color: var(--emw--color-error, #FD2839);
472
+ font-size: var(--emw--font-size-2x-small, 10px);
473
+ padding-top: 5px;
474
+ margin: 0;
475
+ line-height: 12px;
476
+ }
477
+ .InvalidInputNew {
478
+ bottom: -24px;
479
+ }
480
+ .PasswordChangedError {
481
+ color: var(--emw--color-error, #FD2839);
482
+ font-size: var(--emw--font-size-medium, 16px);
483
+ line-height: 18px;
484
+ margin-top: 0;
485
+ }
486
+ .ChangedPasswordSuccessfully {
487
+ color: var(--emw--button-text-color, #FFFFFF);
488
+ position: relative;
489
+ .SuccessWrapper {
490
+ display: inline-flex;
491
+ align-items: center;
492
+ margin-bottom: 20px;
493
+ }
494
+ .IconContainer {
495
+ width: 45px;
496
+ height: 45px;
497
+ border:1px solid var(--emw--color-valid, #48952a);
498
+ border-radius: var(--emw--button-border-radius, 50px);
499
+ display: flex;
500
+ align-items: center;
501
+ justify-content: center;
502
+ }
503
+ .Checkmark {
504
+ width: 12px;
505
+ height: 22px;
506
+ border: 1px solid var(--emw--color-valid, #48952a);
507
+ border-width: 0 2px 2px 0;
508
+ -webkit-transform: rotate(45deg);
509
+ -ms-transform: rotate(45deg);
510
+ transform: rotate(45deg);
511
+ position: relative;
512
+ top: -3px;
513
+ }
514
+ h3{
515
+ font-size: var(--emw--font-size-large, 20px);
516
+ font-weight: var(--emw--font-weight-normal, 400);
517
+ margin: 10px 0;
518
+ color: var(--emw--color-valid, #48952a);
519
+ }
520
+ p {
521
+ margin: 0;
522
+ font-size: var(--emw--font-size-small, 14px);
523
+ font-weight: var(--emw--font-weight-light, 300);
524
+ color: var(--emw--pam-typography, var(--emw--color-contrast, #07072A));
525
+ }
526
+ .TextContainer {
527
+ display: flex;
528
+ flex-direction: column;
529
+ padding: 10px 20px;
530
+ }
531
+ .PlayerChangePasswordBackButton {
532
+ cursor: pointer;
533
+ border-radius: 5px;
534
+ width: 100%;
535
+ height: 50px;
536
+ display: flex;
537
+ align-items: center;
538
+ justify-content: center;
539
+ font-size: 15px;
540
+ color: var(--emw--button-text-color, #FFFFFF);
541
+ text-transform: uppercase;
542
+ text-align: center;
543
+ transition-duration: 0.3s;
544
+ box-sizing: border-box;
545
+ padding: 10px;
546
+ border: 1px solid var(--emw--color-primary, #22B04E);
547
+ background: var(--emw--color-primary, #22B04E);
548
+ max-width: 185px;
549
+ &:hover {
550
+ color: var(--emw--color-primary, #22B04E);
551
+ background: var(--emw--button-text-color, #FFFFFF);
552
+ }
553
+ }
554
+ }
555
+ .PlayerChangePasswordWrapperMobile {
556
+ height: 100%;
557
+ max-width: unset;
558
+ padding: 20px 20px 40px 20px;
559
+ display: flex;
560
+ flex-flow: column;
561
+ &:after {
562
+ content: '';
563
+ position: absolute;
564
+ bottom: 0;
565
+ }
566
+ .PlayerChangePasswordHeader {
567
+ h3 {
568
+ color: var( --emw-pam-color-primary, var(--emw--color-primary, #22B04E));
569
+ font-size: var(--emw--font-size-small, 14px);
570
+ font-weight: var(--emw--font-weight-normal, 400);
571
+ }
572
+ }
573
+ .PlayerChangePasswordBox {
574
+ label {
575
+ font-family: inherit;
576
+ color: var(--emw--color-gray-300, #58586B);
577
+ font-size: var(--emw--font-size-small, 14px);
578
+ font-weight: var(--emw--font-weight-normal, 400);
579
+ }
580
+ input {
581
+ font-family: inherit;
582
+ color: var(--emw--color-gray-300, #58586B);
583
+ font-size: var(--emw--font-size-x-small, 12px);
584
+ font-weight: var(--emw--font-weight-light, 300);
585
+ }
586
+ }
587
+ .PlayerChangePasswordButtonsArea {
588
+ grid-column-gap: 10px;
589
+ }
590
+ .PlayerChangePasswordSaveButton, .PlayerChangePasswordCancelButton {
591
+ font-family: inherit;
592
+ font-size: var(--emw--font-size-x-small, 12px);
593
+ height: 44px;
594
+ color: var(--emw--color-gray-300, #58586B);
595
+ }
596
+ .PlayerChangePasswordSaveButton {
597
+ font-family: inherit;
598
+ color: var(--emw--button-text-color, #FFFFFF);
599
+ &.ButtonInactive {
600
+ opacity: 0.3;
601
+ }
602
+ }
603
+ .ChangedPasswordSuccessfully {
604
+ color: var(--emw--color-gray-300, #58586B);
605
+ }
606
+ }
607
+ .MenuReturnButton{
608
+ font-family: inherit;
609
+ color: var(--emw--color-gray-300, #58586B);
610
+ display: inline-flex;
611
+ align-items: center;
612
+ column-gap: 10px;
613
+ margin-bottom: 10px;
614
+ }
615
+ .PlayerChangePasswordWrapperTablet {
616
+ padding: 40px 25% 100% 25%;
617
+ .PlayerChangePasswordContent {
618
+ grid-row-gap: 20px;
619
+ }
620
+ .MenuReturnButton {
621
+ font-family: inherit;
622
+ margin-bottom: 30px;
623
+ span {
624
+ font-size: var(--emw--font-size-large, 20px);
625
+ }
626
+ }
627
+
628
+ .PlayerChangePasswordBox {
629
+ label {
630
+ font-size: var(--emw--font-size-large, 20px);
631
+ font-family: inherit;
632
+ }
633
+ input {
634
+ font-family: inherit;
635
+ height: 30px;
636
+ font-size: var(--emw--font-size-large, 20px);
637
+ line-height: 30px;
638
+ }
639
+ .TogglePasswordVisibility {
640
+ width: 30px;
641
+ top: 46px;
642
+ &.InvalidToggle {
643
+ path, circle, rect {
644
+ fill: var(--emw--color-error, #FD2839);
645
+ }
646
+ }
647
+ path, circle, rect {
648
+ fill: var(--emw--color-gray-300, #58586B);
649
+ }
650
+ }
651
+ .InvalidInput {
652
+ font-size: var(--emw--font-size-medium, 16px);
653
+ bottom: -50px;
654
+ }
655
+ &:last-child {
656
+ .InvalidInput {
657
+ font-size: var(--emw--font-size-medium, 16px);
658
+ bottom: -50px;
659
+ }
660
+ }
661
+ }
662
+ .PlayerChangePasswordButtonsArea {
663
+ grid-column-gap: 40px;
664
+ .PlayerChangePasswordSaveButton, .PlayerChangePasswordCancelButton {
665
+ font-size: 18px;
666
+ font-family: inherit;
667
+ height: 56px;
668
+ }
669
+ .PlayerChangePasswordSaveButton {
670
+ color: var(--emw--button-text-color, #FFFFFF);
671
+ font-family: inherit;
672
+ &.ButtonInactive {
673
+ color: var(--emw--color-gray-300, #58586B);
674
+ }
675
+ }
676
+ }
677
+ }
678
+
679
+ </style>