verben-authentication-ui 0.3.3 → 0.3.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.
- package/esm2022/lib/components/button/button.component.mjs +46 -0
- package/esm2022/lib/components/button/button.module.mjs +20 -0
- package/esm2022/lib/components/forgot-password/ForgotPasswordData.mjs +2 -0
- package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +86 -0
- package/esm2022/lib/components/forgot-password/forgot-password.module.mjs +34 -0
- package/esm2022/lib/components/mail/mail.component.mjs +69 -0
- package/esm2022/lib/components/mail/mail.module.mjs +21 -0
- package/esm2022/lib/components/mail-validation/mail-validation.component.mjs +108 -0
- package/esm2022/lib/components/mail-validation/mail-validation.module.mjs +34 -0
- package/esm2022/lib/components/o-auth/o-auth.component.mjs +45 -0
- package/esm2022/lib/components/o-auth/o-auth.module.mjs +19 -0
- package/esm2022/lib/components/otp-input/otp-input.component.mjs +75 -0
- package/esm2022/lib/components/otp-input/otp-input.module.mjs +23 -0
- package/esm2022/lib/components/reset-password/ResetPasswordData.mjs +2 -0
- package/esm2022/lib/components/reset-password/reset-password.component.mjs +107 -0
- package/esm2022/lib/components/reset-password/reset-password.module.mjs +34 -0
- package/esm2022/lib/components/sign-in/sign-in.component.mjs +240 -0
- package/esm2022/lib/components/sign-in/sign-in.module.mjs +24 -0
- package/esm2022/lib/components/sign-up/sign-up.component.mjs +223 -0
- package/esm2022/lib/components/sign-up/sign-up.module.mjs +24 -0
- package/esm2022/lib/components/sso/base-table-style.mjs +53 -0
- package/esm2022/lib/components/sso/helper.mjs +14 -0
- package/esm2022/lib/components/sso/sso-form/sso-form.component.mjs +74 -0
- package/esm2022/lib/components/sso/sso.columns.mjs +29 -0
- package/esm2022/lib/components/sso/sso.component.mjs +236 -0
- package/esm2022/lib/components/sso/sso.module.mjs +63 -0
- package/esm2022/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +228 -0
- package/esm2022/lib/components/two-factor-auth-otp/two-factor-auth-otp.module.mjs +22 -0
- package/esm2022/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.mjs +90 -0
- package/esm2022/lib/components/two-factor-auth-setup/two-factor-auth-setup.module.mjs +19 -0
- package/esm2022/lib/components/user-management/base-table-style.mjs +53 -0
- package/esm2022/lib/components/user-management/helper.mjs +26 -0
- package/esm2022/lib/components/user-management/useer-management.module.mjs +68 -0
- package/esm2022/lib/components/user-management/user-management-form/use-management-form.component.mjs +57 -0
- package/esm2022/lib/components/user-management/user-management.columns.mjs +43 -0
- package/esm2022/lib/components/user-management/user-management.component.mjs +323 -0
- package/esm2022/lib/components/user-request/user-request.component.mjs +206 -0
- package/esm2022/lib/components/user-request/user-request.module.mjs +34 -0
- package/esm2022/lib/components/user-request-approval/access-request.columns.mjs +24 -0
- package/esm2022/lib/components/user-request-approval/base-table-style.mjs +53 -0
- package/esm2022/lib/components/user-request-approval/facades/user-access-request.facade.mjs +128 -0
- package/esm2022/lib/components/user-request-approval/helper.mjs +35 -0
- package/esm2022/lib/components/user-request-approval/services/user-access-request.service.mjs +72 -0
- package/esm2022/lib/components/user-request-approval/states/user-access-request.state.mjs +59 -0
- package/esm2022/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.mjs +26 -0
- package/esm2022/lib/components/user-request-approval/user-request-approval.component.mjs +251 -0
- package/esm2022/lib/components/user-request-approval/user-request-approval.module.mjs +77 -0
- package/esm2022/lib/components/user-request-approval/user-request-approval.service.mjs +32 -0
- package/esm2022/lib/components/user-request-approval/user-request-form/use-request-form.component.mjs +64 -0
- package/esm2022/lib/models/ErrorResponse.mjs +11 -0
- package/esm2022/lib/models/PasswordRequestParam.mjs +2 -0
- package/esm2022/lib/models/ResponseKeyValue.mjs +2 -0
- package/esm2022/lib/models/UserRequest.mjs +2 -0
- package/esm2022/lib/models/auth-mechanism.mjs +8 -0
- package/esm2022/lib/models/base.mjs +2 -0
- package/esm2022/lib/models/log-in.mjs +2 -0
- package/esm2022/lib/models/mainUser.mjs +2 -0
- package/esm2022/lib/models/object-state.mjs +8 -0
- package/esm2022/lib/models/otpValue.mjs +2 -0
- package/esm2022/lib/models/paged.mjs +2 -0
- package/esm2022/lib/models/query-params.mjs +2 -0
- package/esm2022/lib/models/request-status.mjs +5 -0
- package/esm2022/lib/models/resend-otp-data.mjs +2 -0
- package/esm2022/lib/models/sign-up.mjs +2 -0
- package/esm2022/lib/models/single-sign-on.mjs +2 -0
- package/esm2022/lib/models/status.mjs +6 -0
- package/esm2022/lib/models/user-access-request-status.mjs +7 -0
- package/esm2022/lib/models/user-access-request.mjs +2 -0
- package/esm2022/lib/models/user.mjs +2 -0
- package/esm2022/lib/services/environment.service.mjs +26 -0
- package/esm2022/lib/services/http-web-request.service.mjs +82 -0
- package/esm2022/lib/services/util.service.mjs +32 -0
- package/esm2022/public-api.mjs +43 -0
- package/esm2022/verben-authentication-ui.mjs +5 -0
- package/fesm2022/verben-authentication-ui.mjs +3622 -0
- package/fesm2022/verben-authentication-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/button/button.component.d.ts +17 -0
- package/lib/components/button/button.module.d.ts +10 -0
- package/{src/lib/components/forgot-password/ForgotPasswordData.ts → lib/components/forgot-password/ForgotPasswordData.d.ts} +1 -1
- package/lib/components/forgot-password/forgot-password.component.d.ts +28 -0
- package/lib/components/forgot-password/forgot-password.module.d.ts +10 -0
- package/lib/components/mail/mail.component.d.ts +32 -0
- package/lib/components/mail/mail.module.d.ts +11 -0
- package/lib/components/mail-validation/mail-validation.component.d.ts +42 -0
- package/lib/components/mail-validation/mail-validation.module.d.ts +10 -0
- package/lib/components/o-auth/o-auth.component.d.ts +18 -0
- package/lib/components/o-auth/o-auth.module.d.ts +9 -0
- package/lib/components/otp-input/otp-input.component.d.ts +20 -0
- package/lib/components/otp-input/otp-input.module.d.ts +13 -0
- package/lib/components/reset-password/ResetPasswordData.d.ts +5 -0
- package/lib/components/reset-password/reset-password.component.d.ts +30 -0
- package/lib/components/reset-password/reset-password.module.d.ts +10 -0
- package/lib/components/sign-in/sign-in.component.d.ts +81 -0
- package/lib/components/sign-in/sign-in.module.d.ts +13 -0
- package/lib/components/sign-up/sign-up.component.d.ts +66 -0
- package/lib/components/sign-up/sign-up.module.d.ts +13 -0
- package/lib/components/sso/base-table-style.d.ts +1 -0
- package/lib/components/sso/helper.d.ts +2 -0
- package/lib/components/sso/sso-form/sso-form.component.d.ts +21 -0
- package/lib/components/sso/sso.columns.d.ts +3 -0
- package/lib/components/sso/sso.component.d.ts +54 -0
- package/lib/components/sso/sso.module.d.ts +11 -0
- package/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.d.ts +67 -0
- package/lib/components/two-factor-auth-otp/two-factor-auth-otp.module.d.ts +12 -0
- package/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.d.ts +39 -0
- package/lib/components/two-factor-auth-setup/two-factor-auth-setup.module.d.ts +9 -0
- package/lib/components/user-management/base-table-style.d.ts +1 -0
- package/lib/components/user-management/helper.d.ts +2 -0
- package/lib/components/user-management/useer-management.module.d.ts +11 -0
- package/lib/components/user-management/user-management-form/use-management-form.component.d.ts +20 -0
- package/lib/components/user-management/user-management.columns.d.ts +3 -0
- package/lib/components/user-management/user-management.component.d.ts +60 -0
- package/lib/components/user-request/user-request.component.d.ts +60 -0
- package/lib/components/user-request/user-request.module.d.ts +10 -0
- package/lib/components/user-request-approval/access-request.columns.d.ts +3 -0
- package/lib/components/user-request-approval/base-table-style.d.ts +1 -0
- package/lib/components/user-request-approval/facades/user-access-request.facade.d.ts +23 -0
- package/lib/components/user-request-approval/helper.d.ts +6 -0
- package/lib/components/user-request-approval/services/user-access-request.service.d.ts +50 -0
- package/lib/components/user-request-approval/states/user-access-request.state.d.ts +21 -0
- package/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.d.ts +12 -0
- package/lib/components/user-request-approval/user-request-approval.component.d.ts +59 -0
- package/lib/components/user-request-approval/user-request-approval.module.d.ts +12 -0
- package/lib/components/user-request-approval/user-request-approval.service.d.ts +18 -0
- package/lib/components/user-request-approval/user-request-form/use-request-form.component.d.ts +21 -0
- package/lib/models/ErrorResponse.d.ts +6 -0
- package/lib/models/PasswordRequestParam.d.ts +5 -0
- package/lib/models/ResponseKeyValue.d.ts +5 -0
- package/lib/models/UserRequest.d.ts +24 -0
- package/lib/models/auth-mechanism.d.ts +13 -0
- package/lib/models/base.d.ts +10 -0
- package/lib/models/log-in.d.ts +7 -0
- package/{src/lib/models/mainUser.ts → lib/models/mainUser.d.ts} +2 -3
- package/lib/models/object-state.d.ts +6 -0
- package/{src/lib/models/otpValue.ts → lib/models/otpValue.d.ts} +1 -3
- package/lib/models/paged.d.ts +9 -0
- package/lib/models/query-params.d.ts +7 -0
- package/lib/models/request-status.d.ts +3 -0
- package/lib/models/resend-otp-data.d.ts +8 -0
- package/lib/models/sign-up.d.ts +9 -0
- package/lib/models/single-sign-on.d.ts +7 -0
- package/lib/models/status.d.ts +4 -0
- package/lib/models/user-access-request-status.d.ts +5 -0
- package/{src/lib/models/user-access-request.ts → lib/models/user-access-request.d.ts} +3 -4
- package/lib/models/user.d.ts +23 -0
- package/lib/services/environment.service.d.ts +16 -0
- package/lib/services/http-web-request.service.d.ts +23 -0
- package/lib/services/util.service.d.ts +8 -0
- package/package.json +14 -8
- package/{src/public-api.ts → public-api.d.ts} +0 -21
- package/ng-package.json +0 -8
- package/src/lib/components/button/button.component.css +0 -3
- package/src/lib/components/button/button.component.html +0 -13
- package/src/lib/components/button/button.component.spec.ts +0 -23
- package/src/lib/components/button/button.component.ts +0 -24
- package/src/lib/components/button/button.module.ts +0 -11
- package/src/lib/components/forgot-password/forgot-password.component.css +0 -29
- package/src/lib/components/forgot-password/forgot-password.component.html +0 -13
- package/src/lib/components/forgot-password/forgot-password.component.spec.ts +0 -23
- package/src/lib/components/forgot-password/forgot-password.component.ts +0 -86
- package/src/lib/components/forgot-password/forgot-password.module.ts +0 -18
- package/src/lib/components/mail/mail.component.css +0 -0
- package/src/lib/components/mail/mail.component.html +0 -11
- package/src/lib/components/mail/mail.component.spec.ts +0 -23
- package/src/lib/components/mail/mail.component.ts +0 -47
- package/src/lib/components/mail/mail.module.ts +0 -13
- package/src/lib/components/mail-validation/mail-validation.component.css +0 -59
- package/src/lib/components/mail-validation/mail-validation.component.html +0 -37
- package/src/lib/components/mail-validation/mail-validation.component.spec.ts +0 -23
- package/src/lib/components/mail-validation/mail-validation.component.ts +0 -66
- package/src/lib/components/mail-validation/mail-validation.module.ts +0 -18
- package/src/lib/components/o-auth/o-auth.component.css +0 -21
- package/src/lib/components/o-auth/o-auth.component.html +0 -60
- package/src/lib/components/o-auth/o-auth.component.spec.ts +0 -23
- package/src/lib/components/o-auth/o-auth.component.ts +0 -43
- package/src/lib/components/o-auth/o-auth.module.ts +0 -11
- package/src/lib/components/otp-input/otp-input.component.css +0 -19
- package/src/lib/components/otp-input/otp-input.component.html +0 -14
- package/src/lib/components/otp-input/otp-input.component.spec.ts +0 -23
- package/src/lib/components/otp-input/otp-input.component.ts +0 -73
- package/src/lib/components/otp-input/otp-input.module.ts +0 -15
- package/src/lib/components/reset-password/ResetPasswordData.ts +0 -5
- package/src/lib/components/reset-password/reset-password.component.css +0 -29
- package/src/lib/components/reset-password/reset-password.component.html +0 -22
- package/src/lib/components/reset-password/reset-password.component.spec.ts +0 -23
- package/src/lib/components/reset-password/reset-password.component.ts +0 -108
- package/src/lib/components/reset-password/reset-password.module.ts +0 -18
- package/src/lib/components/sign-in/sign-in.component.css +0 -21
- package/src/lib/components/sign-in/sign-in.component.html +0 -84
- package/src/lib/components/sign-in/sign-in.component.spec.ts +0 -23
- package/src/lib/components/sign-in/sign-in.component.ts +0 -184
- package/src/lib/components/sign-in/sign-in.module.ts +0 -17
- package/src/lib/components/sign-up/sign-up.component.css +0 -36
- package/src/lib/components/sign-up/sign-up.component.html +0 -132
- package/src/lib/components/sign-up/sign-up.component.spec.ts +0 -23
- package/src/lib/components/sign-up/sign-up.component.ts +0 -176
- package/src/lib/components/sign-up/sign-up.module.ts +0 -15
- package/src/lib/components/sso/base-table-style.ts +0 -52
- package/src/lib/components/sso/helper.ts +0 -15
- package/src/lib/components/sso/sso-form/sso-form.component.css +0 -13
- package/src/lib/components/sso/sso-form/sso-form.component.html +0 -109
- package/src/lib/components/sso/sso-form/sso-form.component.spec.ts +0 -23
- package/src/lib/components/sso/sso-form/sso-form.component.ts +0 -70
- package/src/lib/components/sso/sso.columns.ts +0 -32
- package/src/lib/components/sso/sso.component.css +0 -47
- package/src/lib/components/sso/sso.component.html +0 -208
- package/src/lib/components/sso/sso.component.spec.ts +0 -23
- package/src/lib/components/sso/sso.component.ts +0 -261
- package/src/lib/components/sso/sso.module.ts +0 -40
- package/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.css +0 -8
- package/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.html +0 -30
- package/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.spec.ts +0 -23
- package/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.ts +0 -183
- package/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.module.ts +0 -15
- package/src/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.css +0 -17
- package/src/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.html +0 -45
- package/src/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.spec.ts +0 -23
- package/src/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.ts +0 -57
- package/src/lib/components/two-factor-auth-setup/two-factor-auth-setup.module.ts +0 -11
- package/src/lib/components/user-management/base-table-style.ts +0 -52
- package/src/lib/components/user-management/helper.ts +0 -29
- package/src/lib/components/user-management/index.ts +0 -4
- package/src/lib/components/user-management/useer-management.module.ts +0 -48
- package/src/lib/components/user-management/user-management-form/use-management-form.component.ts +0 -61
- package/src/lib/components/user-management/user-management-form/user-management-form.component.css +0 -0
- package/src/lib/components/user-management/user-management-form/user-management-form.component.html +0 -91
- package/src/lib/components/user-management/user-management-form/user-management-form.component.spec.ts +0 -23
- package/src/lib/components/user-management/user-management.columns.ts +0 -45
- package/src/lib/components/user-management/user-management.component.css +0 -26
- package/src/lib/components/user-management/user-management.component.html +0 -275
- package/src/lib/components/user-management/user-management.component.spec.ts +0 -23
- package/src/lib/components/user-management/user-management.component.ts +0 -380
- package/src/lib/components/user-management/user-management.service.ts +0 -42
- package/src/lib/components/user-request/user-request.component.css +0 -91
- package/src/lib/components/user-request/user-request.component.html +0 -165
- package/src/lib/components/user-request/user-request.component.spec.ts +0 -23
- package/src/lib/components/user-request/user-request.component.ts +0 -167
- package/src/lib/components/user-request/user-request.module.ts +0 -18
- package/src/lib/components/user-request-approval/access-request.columns.ts +0 -26
- package/src/lib/components/user-request-approval/base-table-style.ts +0 -52
- package/src/lib/components/user-request-approval/facades/user-access-request.facade.ts +0 -152
- package/src/lib/components/user-request-approval/helper.ts +0 -39
- package/src/lib/components/user-request-approval/services/user-access-request.service.spec.ts +0 -16
- package/src/lib/components/user-request-approval/services/user-access-request.service.ts +0 -87
- package/src/lib/components/user-request-approval/states/user-access-request.state.ts +0 -65
- package/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.css +0 -0
- package/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.html +0 -7
- package/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.spec.ts +0 -23
- package/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.ts +0 -22
- package/src/lib/components/user-request-approval/user-request-approval.component.css +0 -1
- package/src/lib/components/user-request-approval/user-request-approval.component.html +0 -218
- package/src/lib/components/user-request-approval/user-request-approval.component.spec.ts +0 -23
- package/src/lib/components/user-request-approval/user-request-approval.component.ts +0 -301
- package/src/lib/components/user-request-approval/user-request-approval.module.ts +0 -52
- package/src/lib/components/user-request-approval/user-request-approval.service.spec.ts +0 -16
- package/src/lib/components/user-request-approval/user-request-approval.service.ts +0 -58
- package/src/lib/components/user-request-approval/user-request-form/use-request-form.component.ts +0 -66
- package/src/lib/components/user-request-approval/user-request-form/user-request-form.component.css +0 -0
- package/src/lib/components/user-request-approval/user-request-form/user-request-form.component.html +0 -97
- package/src/lib/components/user-request-approval/user-request-form/user-request-form.component.spec.ts +0 -23
- package/src/lib/models/ErrorResponse.ts +0 -7
- package/src/lib/models/PasswordRequestParam.ts +0 -5
- package/src/lib/models/ResponseKeyValue.ts +0 -5
- package/src/lib/models/UserRequest.ts +0 -28
- package/src/lib/models/auth-mechanism.ts +0 -14
- package/src/lib/models/base.ts +0 -11
- package/src/lib/models/log-in.ts +0 -7
- package/src/lib/models/object-state.ts +0 -6
- package/src/lib/models/paged.ts +0 -9
- package/src/lib/models/query-params.ts +0 -7
- package/src/lib/models/request-status.ts +0 -4
- package/src/lib/models/resend-otp-data.ts +0 -8
- package/src/lib/models/resource.ts +0 -27
- package/src/lib/models/sign-up.ts +0 -11
- package/src/lib/models/single-sign-on.ts +0 -9
- package/src/lib/models/status.ts +0 -5
- package/src/lib/models/user-access-request-status.ts +0 -5
- package/src/lib/models/user.ts +0 -24
- package/src/lib/services/environment.service.spec.ts +0 -16
- package/src/lib/services/environment.service.ts +0 -23
- package/src/lib/services/http-web-request.service.spec.ts +0 -16
- package/src/lib/services/http-web-request.service.ts +0 -101
- package/src/lib/services/util.service.spec.ts +0 -16
- package/src/lib/services/util.service.ts +0 -28
- package/src/styles.css +0 -96
- package/src/theme/tailwind-setup.css +0 -3
- package/src/theme/tailwind.css +0 -980
- package/tailwind.config.js +0 -20
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.spec.json +0 -15
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class OtpInputComponent {
|
|
7
|
+
fb;
|
|
8
|
+
length = 6;
|
|
9
|
+
otpClass = '';
|
|
10
|
+
otpChange = new EventEmitter();
|
|
11
|
+
otpForm;
|
|
12
|
+
constructor(fb) {
|
|
13
|
+
this.fb = fb;
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this.otpForm = this.fb.group({
|
|
17
|
+
otpArray: this.fb.array(Array(this.length).fill('').map(() => new FormControl('')))
|
|
18
|
+
});
|
|
19
|
+
this.otpArray.valueChanges.subscribe(() => {
|
|
20
|
+
this.emitOtp();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get otpArray() {
|
|
24
|
+
return this.otpForm.get('otpArray');
|
|
25
|
+
}
|
|
26
|
+
handleInput(event, index) {
|
|
27
|
+
const value = event.target.value;
|
|
28
|
+
// /\d/.test(value)
|
|
29
|
+
if (value.length > 0) {
|
|
30
|
+
this.otpArray.at(index).setValue(value);
|
|
31
|
+
if (index < this.length - 1) {
|
|
32
|
+
this.focusNextInput(index);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.otpArray.at(index).setValue('');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
handleKeydown(event, index) {
|
|
40
|
+
if (event.key === 'Backspace') {
|
|
41
|
+
const currentValue = this.otpArray.at(index).value;
|
|
42
|
+
if (currentValue) {
|
|
43
|
+
this.otpArray.at(index).setValue('');
|
|
44
|
+
}
|
|
45
|
+
else if (index > 0) {
|
|
46
|
+
this.focusPreviousInput(index);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
focusNextInput(index) {
|
|
51
|
+
const nextInput = document.getElementById(`otp-input-${index + 1}`);
|
|
52
|
+
nextInput?.focus();
|
|
53
|
+
}
|
|
54
|
+
focusPreviousInput(index) {
|
|
55
|
+
const prevInput = document.getElementById(`otp-input-${index - 1}`);
|
|
56
|
+
prevInput?.focus();
|
|
57
|
+
}
|
|
58
|
+
emitOtp() {
|
|
59
|
+
const otp = this.otpArray.value.join('');
|
|
60
|
+
this.otpChange.emit(otp);
|
|
61
|
+
}
|
|
62
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtpInputComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OtpInputComponent, selector: "verben-otp-input", inputs: { length: "length", otpClass: "otpClass" }, outputs: { otpChange: "otpChange" }, ngImport: i0, template: "<form [formGroup]=\"otpForm\" >\n <div formArrayName=\"otpArray\" class=\"otp-container\">\n <input\n *ngFor=\"let control of otpArray.controls; let i = index\"\n [id]=\"'otp-input-' + i\"\n class=\"otp-input {{otpClass}}\"\n maxlength=\"1\"\n (input)=\"handleInput($event, i)\"\n (keydown)=\"handleKeydown($event, i)\"\n [formControlName]=\"i\"\n type=\"text\"\n />\n </div>\n</form>\n", styles: [".otp-container{display:flex;gap:15px}.otp-input{width:50px;height:46px;text-align:center;font-size:1.5rem;border:1px solid #66666658;border-radius:12px}.otp-input:focus{border-color:#ffe681;outline:none}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] });
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtpInputComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'verben-otp-input', template: "<form [formGroup]=\"otpForm\" >\n <div formArrayName=\"otpArray\" class=\"otp-container\">\n <input\n *ngFor=\"let control of otpArray.controls; let i = index\"\n [id]=\"'otp-input-' + i\"\n class=\"otp-input {{otpClass}}\"\n maxlength=\"1\"\n (input)=\"handleInput($event, i)\"\n (keydown)=\"handleKeydown($event, i)\"\n [formControlName]=\"i\"\n type=\"text\"\n />\n </div>\n</form>\n", styles: [".otp-container{display:flex;gap:15px}.otp-input{width:50px;height:46px;text-align:center;font-size:1.5rem;border:1px solid #66666658;border-radius:12px}.otp-input:focus{border-color:#ffe681;outline:none}\n"] }]
|
|
68
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { length: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], otpClass: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], otpChange: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvb3RwLWlucHV0L290cC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL290cC1pbnB1dC9vdHAtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQTBCLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBT2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFPUjtJQU5YLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUNyQixTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUVqRCxPQUFPLENBQWE7SUFFcEIsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7SUFBRyxDQUFDO0lBRXZDLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBYyxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVSxFQUFFLEtBQWE7UUFDbkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFakMsbUJBQW1CO1FBQ25CLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBb0IsRUFBRSxLQUFhO1FBQy9DLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFFbkQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsS0FBYTtRQUNsQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLE9BQU87UUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQzt3R0EvRFUsaUJBQWlCOzRGQUFqQixpQkFBaUIsaUpDUjlCLG9iQWNBOzs0RkROYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0Usa0JBQWtCO2dGQUtuQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLW90cC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vdHAtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vb3RwLWlucHV0LmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE90cElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbGVuZ3RoOiBudW1iZXIgPSA2O1xuICBASW5wdXQoKSBvdHBDbGFzczogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBvdHBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBvdHBGb3JtITogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub3RwRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgb3RwQXJyYXk6IHRoaXMuZmIuYXJyYXkoQXJyYXkodGhpcy5sZW5ndGgpLmZpbGwoJycpLm1hcCgoKSA9PiBuZXcgRm9ybUNvbnRyb2woJycpKSlcbiAgICB9KTtcblxuICAgIHRoaXMub3RwQXJyYXkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmVtaXRPdHAoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBvdHBBcnJheSgpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLm90cEZvcm0uZ2V0KCdvdHBBcnJheScpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGhhbmRsZUlucHV0KGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuICAgIC8vIC9cXGQvLnRlc3QodmFsdWUpXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub3RwQXJyYXkuYXQoaW5kZXgpLnNldFZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKGluZGV4IDwgdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMuZm9jdXNOZXh0SW5wdXQoaW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm90cEFycmF5LmF0KGluZGV4KS5zZXRWYWx1ZSgnJyk7IFxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5vdHBBcnJheS5hdChpbmRleCkudmFsdWU7XG4gIFxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLm90cEFycmF5LmF0KGluZGV4KS5zZXRWYWx1ZSgnJyk7XG4gICAgICB9IGVsc2UgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJbnB1dChpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c05leHRJbnB1dChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgbmV4dElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYG90cC1pbnB1dC0ke2luZGV4ICsgMX1gKTtcbiAgICBuZXh0SW5wdXQ/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzUHJldmlvdXNJbnB1dChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcHJldklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYG90cC1pbnB1dC0ke2luZGV4IC0gMX1gKTtcbiAgICBwcmV2SW5wdXQ/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRPdHAoKSB7XG4gICAgY29uc3Qgb3RwID0gdGhpcy5vdHBBcnJheS52YWx1ZS5qb2luKCcnKTtcbiAgICB0aGlzLm90cENoYW5nZS5lbWl0KG90cCk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwib3RwRm9ybVwiID5cbiAgPGRpdiBmb3JtQXJyYXlOYW1lPVwib3RwQXJyYXlcIiBjbGFzcz1cIm90cC1jb250YWluZXJcIj5cbiAgICA8aW5wdXRcbiAgICAgICpuZ0Zvcj1cImxldCBjb250cm9sIG9mIG90cEFycmF5LmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIFtpZF09XCInb3RwLWlucHV0LScgKyBpXCJcbiAgICAgIGNsYXNzPVwib3RwLWlucHV0IHt7b3RwQ2xhc3N9fVwiXG4gICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgkZXZlbnQsIGkpXCJcbiAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleWRvd24oJGV2ZW50LCBpKVwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImlcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { RouterLink } from '@angular/router';
|
|
5
|
+
import { VerbenaInputModule } from 'verben-ng-ui';
|
|
6
|
+
import { OAuthModule } from '../o-auth/o-auth.module';
|
|
7
|
+
import { ButtonModule } from '../button/button.module';
|
|
8
|
+
import { OtpInputComponent } from './otp-input.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class OtpInputModule {
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtpInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OtpInputModule, declarations: [OtpInputComponent], imports: [CommonModule, FormsModule, VerbenaInputModule, RouterLink, ButtonModule, OAuthModule, ReactiveFormsModule], exports: [OtpInputComponent] });
|
|
13
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtpInputModule, imports: [CommonModule, FormsModule, VerbenaInputModule, ButtonModule, OAuthModule, ReactiveFormsModule] });
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OtpInputModule, decorators: [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
declarations: [OtpInputComponent],
|
|
19
|
+
imports: [CommonModule, FormsModule, VerbenaInputModule, RouterLink, ButtonModule, OAuthModule, ReactiveFormsModule],
|
|
20
|
+
exports: [OtpInputComponent]
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RwLWlucHV0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvb3RwLWlucHV0L290cC1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUcsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPMUQsTUFBTSxPQUFPLGNBQWM7d0dBQWQsY0FBYzt5R0FBZCxjQUFjLGlCQUpWLGlCQUFpQixhQUN0QixZQUFZLEVBQUUsV0FBVyxFQUFDLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxZQUFZLEVBQUMsV0FBVyxFQUFDLG1CQUFtQixhQUNyRyxpQkFBaUI7eUdBRWhCLGNBQWMsWUFIZixZQUFZLEVBQUUsV0FBVyxFQUFDLGtCQUFrQixFQUFhLFlBQVksRUFBQyxXQUFXLEVBQUMsbUJBQW1COzs0RkFHcEcsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBQyxrQkFBa0IsRUFBRSxVQUFVLEVBQUMsWUFBWSxFQUFDLFdBQVcsRUFBQyxtQkFBbUIsQ0FBQztvQkFDaEgsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgIFZlcmJlbmFJbnB1dE1vZHVsZSB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBPQXV0aE1vZHVsZSB9IGZyb20gJy4uL28tYXV0aC9vLWF1dGgubW9kdWxlJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24ubW9kdWxlJztcbmltcG9ydCB7IE90cElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9vdHAtaW5wdXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbT3RwSW5wdXRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSxWZXJiZW5hSW5wdXRNb2R1bGUsIFJvdXRlckxpbmssQnV0dG9uTW9kdWxlLE9BdXRoTW9kdWxlLFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBleHBvcnRzOiBbT3RwSW5wdXRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIE90cElucHV0TW9kdWxlIHt9Il19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzZXRQYXNzd29yZERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3Jlc2V0LXBhc3N3b3JkL1Jlc2V0UGFzc3dvcmREYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJlc2V0UGFzc3dvcmREYXRhIHtcbiAgT2xkUGFzc3dvcmQ/OiBzdHJpbmc7XG4gIFBhc3N3b3JkOiBzdHJpbmc7XG4gIENvbmZpcm1QYXNzd29yZDogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators, } from '@angular/forms';
|
|
3
|
+
import { ErrorResponse } from '../../models/ErrorResponse';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "../../services/http-web-request.service";
|
|
7
|
+
import * as i3 from "../../services/util.service";
|
|
8
|
+
import * as i4 from "verben-ng-ui";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
export class ResetPasswordComponent {
|
|
11
|
+
fb;
|
|
12
|
+
server;
|
|
13
|
+
utilService;
|
|
14
|
+
title = 'Reset Password';
|
|
15
|
+
subTitle = 'Create a New Password';
|
|
16
|
+
buttonCaption = 'Submit';
|
|
17
|
+
buttonTextColor;
|
|
18
|
+
buttonBackgroundColor;
|
|
19
|
+
showOldPassword = false;
|
|
20
|
+
token;
|
|
21
|
+
onSubmit = new EventEmitter();
|
|
22
|
+
onSubmitEnd = new EventEmitter();
|
|
23
|
+
resetPasswordForm;
|
|
24
|
+
constructor(fb, server, utilService) {
|
|
25
|
+
this.fb = fb;
|
|
26
|
+
this.server = server;
|
|
27
|
+
this.utilService = utilService;
|
|
28
|
+
this.resetPasswordForm = this.fb.group({
|
|
29
|
+
OldPassword: new FormControl(null, this.oldPasswordValidator.bind(this)),
|
|
30
|
+
Password: new FormControl(null, Validators.required),
|
|
31
|
+
ConfirmPassword: new FormControl(null, [
|
|
32
|
+
Validators.required,
|
|
33
|
+
this.confirmPasswordValidator.bind(this),
|
|
34
|
+
]),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
checkForm() {
|
|
38
|
+
return this.resetPasswordForm.valid;
|
|
39
|
+
}
|
|
40
|
+
oldPasswordValidator(control) {
|
|
41
|
+
if (this.showOldPassword && control.value == null) {
|
|
42
|
+
return { customValidation: true };
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
confirmPasswordValidator(control) {
|
|
47
|
+
if (this.resetPasswordForm &&
|
|
48
|
+
this.resetPasswordForm.controls['Password'] &&
|
|
49
|
+
this.resetPasswordForm.controls['Password'].value !== control.value) {
|
|
50
|
+
return { customValidation: true };
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
async submit() {
|
|
55
|
+
if (!this.checkForm()) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
var data = {
|
|
59
|
+
OldPassword: this.showOldPassword
|
|
60
|
+
? this.resetPasswordForm.controls['OldPassword'].value
|
|
61
|
+
: undefined,
|
|
62
|
+
Password: this.resetPasswordForm.controls['Password'].value,
|
|
63
|
+
ConfirmPassword: this.resetPasswordForm.controls['ConfirmPassword'].value,
|
|
64
|
+
};
|
|
65
|
+
this.onSubmit.emit(data);
|
|
66
|
+
var passwordRequest = {
|
|
67
|
+
NewPassword: data.Password,
|
|
68
|
+
OldPassword: data.OldPassword,
|
|
69
|
+
Token: this.token,
|
|
70
|
+
};
|
|
71
|
+
this.utilService.sendBI(true);
|
|
72
|
+
const res = await this.server.post(`User/CompleteChangePasswordRequest`, passwordRequest);
|
|
73
|
+
this.utilService.sendBI(false);
|
|
74
|
+
if (res instanceof ErrorResponse) {
|
|
75
|
+
this.onSubmitEnd.emit(res);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
var result = res;
|
|
79
|
+
this.onSubmitEnd.emit(result);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i3.UtilService }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResetPasswordComponent, selector: "verben-reset-password", inputs: { title: "title", subTitle: "subTitle", buttonCaption: "buttonCaption", buttonTextColor: "buttonTextColor", buttonBackgroundColor: "buttonBackgroundColor", showOldPassword: "showOldPassword", token: "token" }, outputs: { onSubmit: "onSubmit", onSubmitEnd: "onSubmitEnd" }, ngImport: i0, template: "<div [formGroup]=\"this.resetPasswordForm\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-header flex flex-col\">\n <div class=\"reset-password-title\">{{title}}</div>\n <div class=\"reset-password-subtitle\">{{subTitle}}</div>\n </div>\n <div *ngIf=\"showOldPassword\" class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Old Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"OldPassword\" type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">New Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"Password\" type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Confirm Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"ConfirmPassword\"\n type=\"password\"></verbena-input>\n </div>\n <verbena-button fontWeight=\"700\" (click)=\"submit()\" [text]=\"buttonCaption\" width=\"100%\" [textColor]=\"buttonTextColor\"\n [bgColor]=\"buttonBackgroundColor\" borderRadius=\"25px\" [disable]=\"!this.checkForm()\"></verbena-button>\n\n</div>\n", styles: ["*{font-family:sans-serif;font-size:16px}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.reset-password-container{gap:25px;padding:50px;border:1px solid rgba(102,102,102,.5);box-shadow:4px 4px 4px #00000040;border-radius:24px}.reset-password-title{font-size:30px;font-weight:700}.reset-password-subtitle{font-size:14px;font-weight:500;color:#666}.form-field{gap:5px}.form-field-caption{color:#666}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordComponent, decorators: [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{ selector: 'verben-reset-password', template: "<div [formGroup]=\"this.resetPasswordForm\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-header flex flex-col\">\n <div class=\"reset-password-title\">{{title}}</div>\n <div class=\"reset-password-subtitle\">{{subTitle}}</div>\n </div>\n <div *ngIf=\"showOldPassword\" class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Old Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"OldPassword\" type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">New Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"Password\" type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Confirm Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"ConfirmPassword\"\n type=\"password\"></verbena-input>\n </div>\n <verbena-button fontWeight=\"700\" (click)=\"submit()\" [text]=\"buttonCaption\" width=\"100%\" [textColor]=\"buttonTextColor\"\n [bgColor]=\"buttonBackgroundColor\" borderRadius=\"25px\" [disable]=\"!this.checkForm()\"></verbena-button>\n\n</div>\n", styles: ["*{font-family:sans-serif;font-size:16px}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.reset-password-container{gap:25px;padding:50px;border:1px solid rgba(102,102,102,.5);box-shadow:4px 4px 4px #00000040;border-radius:24px}.reset-password-title{font-size:30px;font-weight:700}.reset-password-subtitle{font-size:14px;font-weight:500;color:#666}.form-field{gap:5px}.form-field-caption{color:#666}\n"] }]
|
|
88
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.HttpWebRequestService }, { type: i3.UtilService }], propDecorators: { title: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], subTitle: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], buttonCaption: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], buttonTextColor: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], buttonBackgroundColor: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], showOldPassword: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], token: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], onSubmit: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}], onSubmitEnd: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}] } });
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUdMLFdBQVcsRUFHWCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFXM0QsTUFBTSxPQUFPLHNCQUFzQjtJQWdCdkI7SUFDQTtJQUNBO0lBakJELEtBQUssR0FBVyxnQkFBZ0IsQ0FBQztJQUNqQyxRQUFRLEdBQVcsdUJBQXVCLENBQUM7SUFDM0MsYUFBYSxHQUFXLFFBQVEsQ0FBQztJQUNqQyxlQUFlLENBQVU7SUFDekIscUJBQXFCLENBQVU7SUFDL0IsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxLQUFLLENBQVU7SUFFZCxRQUFRLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7SUFDL0QsV0FBVyxHQUNuQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXJCLGlCQUFpQixDQUFZO0lBRTdCLFlBQ1UsRUFBZSxFQUNmLE1BQTZCLEVBQzdCLFdBQXdCO1FBRnhCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUM3QixnQkFBVyxH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QUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzt3R0FuRlUsc0JBQXNCOzRGQUF0QixzQkFBc0Isc1ZDdEJuQywyd0NBc0JBOzs0RkRBYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsdUJBQXVCOzhJQU14QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZXNldFBhc3N3b3JkRGF0YSB9IGZyb20gJy4vUmVzZXRQYXNzd29yZERhdGEnO1xuaW1wb3J0IHsgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvRXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBSZXNwb25zZUtleVZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1Jlc3BvbnNlS2V5VmFsdWUnO1xuaW1wb3J0IHsgUGFzc3dvcmRSZXF1ZXN0UGFyYW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvUGFzc3dvcmRSZXF1ZXN0UGFyYW0nO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tcmVzZXQtcGFzc3dvcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LmNzcycsXG59KVxuXG5leHBvcnQgY2xhc3MgUmVzZXRQYXNzd29yZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnUmVzZXQgUGFzc3dvcmQnO1xuICBASW5wdXQoKSBzdWJUaXRsZTogc3RyaW5nID0gJ0NyZWF0ZSBhIE5ldyBQYXNzd29yZCc7XG4gIEBJbnB1dCgpIGJ1dHRvbkNhcHRpb246IHN0cmluZyA9ICdTdWJtaXQnO1xuICBASW5wdXQoKSBidXR0b25UZXh0Q29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJ1dHRvbkJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgQElucHV0KCkgc2hvd09sZFBhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRva2VuPzogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBvblN1Ym1pdDogRXZlbnRFbWl0dGVyPFJlc2V0UGFzc3dvcmREYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0RW5kOiBFdmVudEVtaXR0ZXI8UmVzcG9uc2VLZXlWYWx1ZSB8IEVycm9yUmVzcG9uc2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcmVzZXRQYXNzd29yZEZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHNlcnZlcjogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucmVzZXRQYXNzd29yZEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIE9sZFBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4oXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMub2xkUGFzc3dvcmRWYWxpZGF0b3IuYmluZCh0aGlzKVxuICAgICAgKSxcbiAgICAgIFBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBDb25maXJtUGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIHRoaXMuY29uZmlybVBhc3N3b3JkVmFsaWRhdG9yLmJpbmQodGhpcyksXG4gICAgICBdKSxcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXNldFBhc3N3b3JkRm9ybS52YWxpZDtcbiAgfVxuXG4gIG9sZFBhc3N3b3JkVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAodGhpcy5zaG93T2xkUGFzc3dvcmQgJiYgY29udHJvbC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4geyBjdXN0b21WYWxpZGF0aW9uOiB0cnVlIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNldFBhc3N3b3JkRm9ybSAmJlxuICAgICAgdGhpcy5yZXNldFBhc3N3b3JkRm9ybS5jb250cm9sc1snUGFzc3dvcmQnXSAmJlxuICAgICAgdGhpcy5yZXNldFBhc3N3b3JkRm9ybS5jb250cm9sc1snUGFzc3dvcmQnXS52YWx1ZSAhPT0gY29udHJvbC52YWx1ZVxuICAgICkge1xuICAgICAgcmV0dXJuIHsgY3VzdG9tVmFsaWRhdGlvbjogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdCgpIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JtKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGRhdGE6IFJlc2V0UGFzc3dvcmREYXRhID0ge1xuICAgICAgT2xkUGFzc3dvcmQ6IHRoaXMuc2hvd09sZFBhc3N3b3JkXG4gICAgICAgID8gdGhpcy5yZXNldFBhc3N3b3JkRm9ybS5jb250cm9sc1snT2xkUGFzc3dvcmQnXS52YWx1ZVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIFBhc3N3b3JkOiB0aGlzLnJlc2V0UGFzc3dvcmRGb3JtLmNvbnRyb2xzWydQYXNzd29yZCddLnZhbHVlLFxuICAgICAgQ29uZmlybVBhc3N3b3JkOiB0aGlzLnJlc2V0UGFzc3dvcmRGb3JtLmNvbnRyb2xzWydDb25maXJtUGFzc3dvcmQnXS52YWx1ZSxcbiAgICB9O1xuICAgIHRoaXMub25TdWJtaXQuZW1pdChkYXRhKTtcbiAgICB2YXIgcGFzc3dvcmRSZXF1ZXN0OiBQYXNzd29yZFJlcXVlc3RQYXJhbSA9IHtcbiAgICAgIE5ld1Bhc3N3b3JkOiBkYXRhLlBhc3N3b3JkLFxuICAgICAgT2xkUGFzc3dvcmQ6IGRhdGEuT2xkUGFzc3dvcmQsXG4gICAgICBUb2tlbjogdGhpcy50b2tlbixcbiAgICB9O1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoXG4gICAgICBgVXNlci9Db21wbGV0ZUNoYW5nZVBhc3N3b3JkUmVxdWVzdGAsXG4gICAgICBwYXNzd29yZFJlcXVlc3RcbiAgICApO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgdGhpcy5vblN1Ym1pdEVuZC5lbWl0KHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSByZXMgYXMgUmVzcG9uc2VLZXlWYWx1ZTtcbiAgICAgIHRoaXMub25TdWJtaXRFbmQuZW1pdChyZXN1bHQpO1xuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwidGhpcy5yZXNldFBhc3N3b3JkRm9ybVwiIGNsYXNzPVwicmVzZXQtcGFzc3dvcmQtY29udGFpbmVyIGZsZXggZmxleC1jb2xcIj5cbiAgPGRpdiBjbGFzcz1cInJlc2V0LXBhc3N3b3JkLWhlYWRlciBmbGV4IGZsZXgtY29sXCI+XG4gICAgPGRpdiBjbGFzcz1cInJlc2V0LXBhc3N3b3JkLXRpdGxlXCI+e3t0aXRsZX19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJlc2V0LXBhc3N3b3JkLXN1YnRpdGxlXCI+e3tzdWJUaXRsZX19PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd09sZFBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWZpZWxkIGZsZXggZmxleC1jb2xcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1jYXB0aW9uXCI+T2xkIFBhc3N3b3JkPC9kaXY+XG4gICAgPHZlcmJlbmEtaW5wdXQgYmdDb2xvcj1cIndoaXRlXCIgYm9yZGVyUmFkaXVzPVwiMTJweFwiIGZvcm1Db250cm9sTmFtZT1cIk9sZFBhc3N3b3JkXCIgdHlwZT1cInBhc3N3b3JkXCI+PC92ZXJiZW5hLWlucHV0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGQgZmxleCBmbGV4LWNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkLWNhcHRpb25cIj5OZXcgUGFzc3dvcmQ8L2Rpdj5cbiAgICA8dmVyYmVuYS1pbnB1dCBiZ0NvbG9yPVwid2hpdGVcIiBib3JkZXJSYWRpdXM9XCIxMnB4XCIgZm9ybUNvbnRyb2xOYW1lPVwiUGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIj48L3ZlcmJlbmEtaW5wdXQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZCBmbGV4IGZsZXgtY29sXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtY2FwdGlvblwiPkNvbmZpcm0gUGFzc3dvcmQ8L2Rpdj5cbiAgICA8dmVyYmVuYS1pbnB1dCBiZ0NvbG9yPVwid2hpdGVcIiBib3JkZXJSYWRpdXM9XCIxMnB4XCIgZm9ybUNvbnRyb2xOYW1lPVwiQ29uZmlybVBhc3N3b3JkXCJcbiAgICAgIHR5cGU9XCJwYXNzd29yZFwiPjwvdmVyYmVuYS1pbnB1dD5cbiAgPC9kaXY+XG4gIDx2ZXJiZW5hLWJ1dHRvbiBmb250V2VpZ2h0PVwiNzAwXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCIgW3RleHRdPVwiYnV0dG9uQ2FwdGlvblwiIHdpZHRoPVwiMTAwJVwiIFt0ZXh0Q29sb3JdPVwiYnV0dG9uVGV4dENvbG9yXCJcbiAgICBbYmdDb2xvcl09XCJidXR0b25CYWNrZ3JvdW5kQ29sb3JcIiBib3JkZXJSYWRpdXM9XCIyNXB4XCIgW2Rpc2FibGVdPVwiIXRoaXMuY2hlY2tGb3JtKClcIj48L3ZlcmJlbmEtYnV0dG9uPlxuXG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { ResetPasswordComponent } from './reset-password.component';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { VerbenaButtonModule, VerbenaInputModule } from 'verben-ng-ui';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ResetPasswordModule {
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordModule, declarations: [ResetPasswordComponent], imports: [FormsModule,
|
|
10
|
+
ReactiveFormsModule,
|
|
11
|
+
VerbenaInputModule,
|
|
12
|
+
VerbenaButtonModule,
|
|
13
|
+
CommonModule], exports: [ResetPasswordComponent] });
|
|
14
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordModule, imports: [FormsModule,
|
|
15
|
+
ReactiveFormsModule,
|
|
16
|
+
VerbenaInputModule,
|
|
17
|
+
VerbenaButtonModule,
|
|
18
|
+
CommonModule] });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordModule, decorators: [{
|
|
21
|
+
type: NgModule,
|
|
22
|
+
args: [{
|
|
23
|
+
declarations: [ResetPasswordComponent],
|
|
24
|
+
imports: [
|
|
25
|
+
FormsModule,
|
|
26
|
+
ReactiveFormsModule,
|
|
27
|
+
VerbenaInputModule,
|
|
28
|
+
VerbenaButtonModule,
|
|
29
|
+
CommonModule,
|
|
30
|
+
],
|
|
31
|
+
exports: [ResetPasswordComponent],
|
|
32
|
+
}]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFhL0MsTUFBTSxPQUFPLG1CQUFtQjt3R0FBbkIsbUJBQW1CO3lHQUFuQixtQkFBbUIsaUJBVmYsc0JBQXNCLGFBRW5DLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixZQUFZLGFBRUosc0JBQXNCO3lHQUVyQixtQkFBbUIsWUFSNUIsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLFlBQVk7OzRGQUlILG1CQUFtQjtrQkFYL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzZXRQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVmVyYmVuYUJ1dHRvbk1vZHVsZSwgVmVyYmVuYUlucHV0TW9kdWxlIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1Jlc2V0UGFzc3dvcmRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBWZXJiZW5hSW5wdXRNb2R1bGUsXG4gICAgVmVyYmVuYUJ1dHRvbk1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtSZXNldFBhc3N3b3JkQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgUmVzZXRQYXNzd29yZE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators, } from '@angular/forms';
|
|
3
|
+
import { ErrorResponse } from '../../models/ErrorResponse';
|
|
4
|
+
import { MechanismType } from '../../models/auth-mechanism';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "../../services/http-web-request.service";
|
|
8
|
+
import * as i3 from "../../services/util.service";
|
|
9
|
+
import * as i4 from "../../services/environment.service";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
import * as i6 from "verben-ng-ui";
|
|
12
|
+
import * as i7 from "@angular/router";
|
|
13
|
+
import * as i8 from "../o-auth/o-auth.component";
|
|
14
|
+
import * as i9 from "../button/button.component";
|
|
15
|
+
export class SignInComponent {
|
|
16
|
+
fb;
|
|
17
|
+
server;
|
|
18
|
+
utilService;
|
|
19
|
+
envSvc;
|
|
20
|
+
headlingText = 'Sign in';
|
|
21
|
+
width = '';
|
|
22
|
+
maxWidth = '';
|
|
23
|
+
margin = '';
|
|
24
|
+
pd = '';
|
|
25
|
+
customClass = '';
|
|
26
|
+
headlingClass = '';
|
|
27
|
+
bgColor = '#fff';
|
|
28
|
+
boxShadow = '4px 4px 4px rgba(0, 0, 0, 0.25)';
|
|
29
|
+
border = '1px solid #66666680';
|
|
30
|
+
borderRadius = '24px';
|
|
31
|
+
textColor = '#333';
|
|
32
|
+
height = 'auto';
|
|
33
|
+
forgetPasswordClass = '';
|
|
34
|
+
requestAccessClass = '';
|
|
35
|
+
createAccountClass = '';
|
|
36
|
+
createAccountLinkClass = '';
|
|
37
|
+
// links
|
|
38
|
+
forgetPasswordLink = '';
|
|
39
|
+
createAccountLink = '';
|
|
40
|
+
requestAccessLink = '';
|
|
41
|
+
// button styles
|
|
42
|
+
btnClass = '';
|
|
43
|
+
btnBgColor = '#FFE681';
|
|
44
|
+
btnColor = '';
|
|
45
|
+
btnBorder = '';
|
|
46
|
+
btnBorderRadius = '24px';
|
|
47
|
+
btnPd = '';
|
|
48
|
+
btnText = 'Log in';
|
|
49
|
+
//inputStyles
|
|
50
|
+
inputLabelColor = '';
|
|
51
|
+
inputBgColor = 'transparent';
|
|
52
|
+
inputBorder = '1px solid #66666659';
|
|
53
|
+
inputBorderRadius = '12px';
|
|
54
|
+
termsErrorText = 'Please agree to the terms of use and privacy policy.';
|
|
55
|
+
formSubmit = new EventEmitter();
|
|
56
|
+
onSubmitEnd = new EventEmitter();
|
|
57
|
+
googleClick = new EventEmitter();
|
|
58
|
+
microsoftClick = new EventEmitter();
|
|
59
|
+
appleClick = new EventEmitter();
|
|
60
|
+
tenantDetails = null;
|
|
61
|
+
AuthMechanisms = null;
|
|
62
|
+
showform = false;
|
|
63
|
+
loginForm;
|
|
64
|
+
apiKey;
|
|
65
|
+
secret;
|
|
66
|
+
constructor(fb, server, utilService, envSvc) {
|
|
67
|
+
this.fb = fb;
|
|
68
|
+
this.server = server;
|
|
69
|
+
this.utilService = utilService;
|
|
70
|
+
this.envSvc = envSvc;
|
|
71
|
+
this.loginForm = this.fb.group({
|
|
72
|
+
Email: new FormControl(null, [
|
|
73
|
+
Validators.required,
|
|
74
|
+
Validators.email,
|
|
75
|
+
]),
|
|
76
|
+
Password: new FormControl(null, [
|
|
77
|
+
Validators.required,
|
|
78
|
+
Validators.minLength(5),
|
|
79
|
+
]),
|
|
80
|
+
});
|
|
81
|
+
this.apiKey = this.envSvc.environment.APIKey;
|
|
82
|
+
this.secret = this.envSvc.environment.Secret;
|
|
83
|
+
}
|
|
84
|
+
ngOnInit() {
|
|
85
|
+
this.getTenantConfig();
|
|
86
|
+
}
|
|
87
|
+
async getTenantConfig() {
|
|
88
|
+
const res = await this.server.get(`Tenant/GetTenantConfigByKey/${this.apiKey}`);
|
|
89
|
+
this.tenantDetails = res;
|
|
90
|
+
this.AuthMechanisms = this.tenantDetails?.AuthMechanisms;
|
|
91
|
+
if (!this.tenantDetails?.AuthMechanism && this.tenantDetails?.AuthMechanism !== MechanismType.InApp) {
|
|
92
|
+
this.showform = false;
|
|
93
|
+
}
|
|
94
|
+
else if (this.tenantDetails?.AuthMechanism === MechanismType.InApp) {
|
|
95
|
+
this.showform = true;
|
|
96
|
+
}
|
|
97
|
+
else if (this.AuthMechanisms !== null) {
|
|
98
|
+
this.showform = this.AuthMechanisms.some(item => item.AuthMechanism.includes(MechanismType.InApp));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
checkForm() {
|
|
102
|
+
return this.loginForm.valid;
|
|
103
|
+
}
|
|
104
|
+
async submit() {
|
|
105
|
+
if (!this.checkForm()) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const data = {
|
|
109
|
+
MailAddress: this.loginForm.controls['Email'].value,
|
|
110
|
+
Password: this.loginForm.controls['Password'].value,
|
|
111
|
+
LoginType: this.tenantDetails?.AuthMechanism,
|
|
112
|
+
APIKey: this.apiKey,
|
|
113
|
+
Secrete: this.secret
|
|
114
|
+
};
|
|
115
|
+
this.formSubmit.emit(data);
|
|
116
|
+
this.utilService.sendBI(true);
|
|
117
|
+
const res = await this.server.post(`Authentication/Login`, data);
|
|
118
|
+
this.utilService.sendBI(false);
|
|
119
|
+
if (res instanceof ErrorResponse) {
|
|
120
|
+
this.onSubmitEnd.emit(res);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
var result = res;
|
|
124
|
+
this.onSubmitEnd.emit(result);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
handleGoogleAuth() {
|
|
128
|
+
if (this.AuthMechanisms !== null) {
|
|
129
|
+
const data = this.AuthMechanisms.filter(item => item.AuthMechanism === MechanismType.Google);
|
|
130
|
+
this.googleClick.emit();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
handleMicrosoft() {
|
|
134
|
+
if (this.AuthMechanisms !== null) {
|
|
135
|
+
const data = this.AuthMechanisms.filter(item => item.AuthMechanism === MechanismType.MicrosoftAD);
|
|
136
|
+
this.microsoftClick.emit();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
handleAppleAuth() {
|
|
140
|
+
if (this.AuthMechanisms !== null) {
|
|
141
|
+
const data = this.AuthMechanisms.filter(item => item.AuthMechanism === MechanismType.Apple);
|
|
142
|
+
this.appleClick.emit();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
get styles() {
|
|
146
|
+
return {
|
|
147
|
+
'background-color': this.bgColor,
|
|
148
|
+
'box-shadow': this.boxShadow,
|
|
149
|
+
'border': this.border,
|
|
150
|
+
'border-radius': this.borderRadius,
|
|
151
|
+
'color': this.textColor,
|
|
152
|
+
'width': this.width,
|
|
153
|
+
'max-width': this.maxWidth,
|
|
154
|
+
'margin': this.margin,
|
|
155
|
+
'height': this.height,
|
|
156
|
+
'padding': this.pd
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i3.UtilService }, { token: i4.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
160
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignInComponent, selector: "verben-sign-in", inputs: { headlingText: "headlingText", width: "width", maxWidth: "maxWidth", margin: "margin", pd: "pd", customClass: "customClass", headlingClass: "headlingClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", forgetPasswordClass: "forgetPasswordClass", requestAccessClass: "requestAccessClass", createAccountClass: "createAccountClass", createAccountLinkClass: "createAccountLinkClass", forgetPasswordLink: "forgetPasswordLink", createAccountLink: "createAccountLink", requestAccessLink: "requestAccessLink", btnClass: "btnClass", btnBgColor: "btnBgColor", btnColor: "btnColor", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnPd: "btnPd", btnText: "btnText", inputLabelColor: "inputLabelColor", inputBgColor: "inputBgColor", inputBorder: "inputBorder", inputBorderRadius: "inputBorderRadius", termsErrorText: "termsErrorText" }, outputs: { formSubmit: "formSubmit", onSubmitEnd: "onSubmitEnd", googleClick: "googleClick", microsoftClick: "microsoftClick", appleClick: "appleClick" }, ngImport: i0, template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit()\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [customErrorMessages]=\"{\n password:'length must be 5 characters'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n (googleClick)=\"handleGoogleAuth()\"\n (appleClick)=\"handleAppleAuth()\"\n (microsoftClick)=\"handleMicrosoft()\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </div>\n </form>\n </section>\n ", styles: ["a{text-decoration:underline}.flexWrapper{display:flex;flex-direction:column;gap:20px;margin-top:12px}.formWrapper{display:flex;flex-direction:column;gap:20px}.pwdWrapper{display:flex;justify-content:flex-end;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "component", type: i6.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.OAuthComponent, selector: "verben-o-auth", inputs: ["authMechanisms"], outputs: ["microsoftClick", "googleClick", "appleClick"] }, { kind: "component", type: i9.ButtonComponent, selector: "lib-button", inputs: ["text", "color", "border", "borderRadius", "bgColor", "width", "pd", "buttonClass", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
161
|
+
}
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, decorators: [{
|
|
163
|
+
type: Component,
|
|
164
|
+
args: [{ selector: 'verben-sign-in', template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h2 class=\"{{headlingClass}}\">{{headlingText}}</h2>\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit()\" class=\"flexWrapper\"> \n <div class=\"formWrapper\" *ngIf=\"showform\"> \n <verbena-input\n [label]=\"'Email'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"Email\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div> \n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"inputLabelColor\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"Password\"\n [showBorder]=\"true\"\n [bgColor]=\"inputBgColor\"\n [border]=\"inputBorder\"\n [borderRadius]=\"inputBorderRadius\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n [passwordToggle]=\"true\"\n [customErrorMessages]=\"{\n password:'length must be 5 characters'\n }\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <div class=\"pwdWrapper\"> \n <p clas=\"mb-0\"> <a [routerLink]=\"forgetPasswordLink\" class=\"{{forgetPasswordClass}}\">Forgot password</a></p>\n </div>\n </div>\n <lib-button \n [buttonClass]=\"btnClass\"\n [color]=\"btnColor\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [bgColor]=\"btnBgColor\"\n [pd]=\"btnPd\"\n [text]=\"btnText\" \n type=\"submit\" \n [disabled]=\"!this.checkForm()\"\n ></lib-button>\n </div>\n <div> \n <p *ngIf=\"requestAccessLink\">\n <a [routerLink]=\"requestAccessLink\" class=\"{{requestAccessClass}}\">Click here to request user access</a>\n </p>\n <div> \n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n (googleClick)=\"handleGoogleAuth()\"\n (appleClick)=\"handleAppleAuth()\"\n (microsoftClick)=\"handleMicrosoft()\"\n ></verben-o-auth>\n </div>\n <p class=\"{{createAccountClass}}\" *ngIf=\"createAccountLink\">\n Don't have an account?\n <a [routerLink]=\"createAccountLink\" class=\"{{createAccountLinkClass}}\">Create an account</a>\n </p>\n </div>\n </div>\n </form>\n </section>\n ", styles: ["a{text-decoration:underline}.flexWrapper{display:flex;flex-direction:column;gap:20px;margin-top:12px}.formWrapper{display:flex;flex-direction:column;gap:20px}.pwdWrapper{display:flex;justify-content:flex-end;cursor:pointer}\n"] }]
|
|
165
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.HttpWebRequestService }, { type: i3.UtilService }, { type: i4.EnvironmentService }], propDecorators: { headlingText: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], width: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], maxWidth: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], margin: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], pd: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], customClass: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], headlingClass: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], bgColor: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], boxShadow: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], border: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], borderRadius: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], textColor: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], height: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], forgetPasswordClass: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], requestAccessClass: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], createAccountClass: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], createAccountLinkClass: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], forgetPasswordLink: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], createAccountLink: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], requestAccessLink: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], btnClass: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], btnBgColor: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], btnColor: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], btnBorder: [{
|
|
212
|
+
type: Input
|
|
213
|
+
}], btnBorderRadius: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], btnPd: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], btnText: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], inputLabelColor: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], inputBgColor: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], inputBorder: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], inputBorderRadius: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], termsErrorText: [{
|
|
228
|
+
type: Input
|
|
229
|
+
}], formSubmit: [{
|
|
230
|
+
type: Output
|
|
231
|
+
}], onSubmitEnd: [{
|
|
232
|
+
type: Output
|
|
233
|
+
}], googleClick: [{
|
|
234
|
+
type: Output
|
|
235
|
+
}], microsoftClick: [{
|
|
236
|
+
type: Output
|
|
237
|
+
}], appleClick: [{
|
|
238
|
+
type: Output
|
|
239
|
+
}] } });
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHTCxXQUFXLEVBR1gsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE9BQU8sRUFBaUIsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7O0FBUzNFLE1BQU0sT0FBTyxlQUFlO0lBcUROO0lBQ1Y7SUFDQTtJQUNBO0lBdkRELFlBQVksR0FBVyxTQUFTLENBQUM7SUFDakMsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLE1BQU0sR0FBVyxFQUFFLENBQUM7SUFDcEIsRUFBRSxHQUFXLEVBQUUsQ0FBQztJQUNoQixXQUFXLEdBQVcsRUFBRSxDQUFBO0lBQ3hCLGFBQWEsR0FBVyxFQUFFLENBQUE7SUFDMUIsT0FBTyxHQUFXLE1BQU0sQ0FBQztJQUN6QixTQUFTLEdBQVcsaUNBQWlDLENBQUM7SUFDdEQsTUFBTSxHQUFXLHFCQUFxQixDQUFDO0lBQ3ZDLFlBQVksR0FBVyxNQUFNLENBQUM7SUFDOUIsU0FBUyxHQUFXLE1BQU0sQ0FBQztJQUMzQixNQUFNLEdBQVcsTUFBTSxD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Q0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dpbkRhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvbG9nLWluJztcbmltcG9ydCB7IEh0dHBXZWJSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAtd2ViLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgUmVzcG9uc2VLZXlWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9SZXNwb25zZUtleVZhbHVlJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnXG5pbXBvcnQgeyBBdXRoTWVjaGFuaXNtLCBNZWNoYW5pc21UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dGgtbWVjaGFuaXNtJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tc2lnbi1pbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduLWluLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3NpZ24taW4uY29tcG9uZW50LmNzcydcbn0pXG5cbmV4cG9ydCBjbGFzcyBTaWduSW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBoZWFkbGluZ1RleHQ6IHN0cmluZyA9ICdTaWduIGluJztcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBtYXhXaWR0aDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1hcmdpbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M6IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIGhlYWRsaW5nQ2xhc3M6IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIGJnQ29sb3I6IHN0cmluZyA9ICcjZmZmJztcbiAgQElucHV0KCkgYm94U2hhZG93OiBzdHJpbmcgPSAnNHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KSc7XG4gIEBJbnB1dCgpIGJvcmRlcjogc3RyaW5nID0gJzFweCBzb2xpZCAjNjY2NjY2ODAnO1xuICBASW5wdXQoKSBib3JkZXJSYWRpdXM6IHN0cmluZyA9ICcyNHB4JztcbiAgQElucHV0KCkgdGV4dENvbG9yOiBzdHJpbmcgPSAnIzMzMyc7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJ2F1dG8nO1xuICBASW5wdXQoKSBmb3JnZXRQYXNzd29yZENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmVxdWVzdEFjY2Vzc0NsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3JlYXRlQWNjb3VudENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3JlYXRlQWNjb3VudExpbmtDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgLy8gbGlua3NcbiAgQElucHV0KCkgZm9yZ2V0UGFzc3dvcmRMaW5rOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3JlYXRlQWNjb3VudExpbms6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZXF1ZXN0QWNjZXNzTGluazogc3RyaW5nID0gJyc7XG5cbiAgLy8gYnV0dG9uIHN0eWxlc1xuICBASW5wdXQoKSBidG5DbGFzczogc3RyaW5nID0gJydcbiAgQElucHV0KCkgYnRuQmdDb2xvcjogc3RyaW5nID0gJyNGRkU2ODEnXG4gIEBJbnB1dCgpIGJ0bkNvbG9yOiBzdHJpbmcgPSAnJ1xuICBASW5wdXQoKSBidG5Cb3JkZXI6IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIGJ0bkJvcmRlclJhZGl1czogc3RyaW5nID0gJzI0cHgnXG4gIEBJbnB1dCgpIGJ0blBkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYnRuVGV4dDogc3RyaW5nID0gJ0xvZyBpbic7XG5cbiAgLy9pbnB1dFN0eWxlc1xuICAgQElucHV0KCkgaW5wdXRMYWJlbENvbG9yOiBzdHJpbmcgPSAnJ1xuICAgQElucHV0KCkgaW5wdXRCZ0NvbG9yOiBzdHJpbmcgPSAndHJhbnNwYXJlbnQnXG4gICBASW5wdXQoKSBpbnB1dEJvcmRlcjogc3RyaW5nID0gJzFweCBzb2xpZCAjNjY2NjY2NTknXG4gICBASW5wdXQoKSBpbnB1dEJvcmRlclJhZGl1czogc3RyaW5nID0gJzEycHgnXG4gICBASW5wdXQoKSB0ZXJtc0Vycm9yVGV4dDogc3RyaW5nID0gJ1BsZWFzZSBhZ3JlZSB0byB0aGUgdGVybXMgb2YgdXNlIGFuZCBwcml2YWN5IHBvbGljeS4nXG5cbiAgIEBPdXRwdXQoKSBmb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxMb2dpbkRhdGE+KCk7XG4gICBAT3V0cHV0KCkgb25TdWJtaXRFbmQ6IEV2ZW50RW1pdHRlcjxSZXNwb25zZUtleVZhbHVlIHwgRXJyb3JSZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICBAT3V0cHV0KCkgZ29vZ2xlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICBAT3V0cHV0KCkgbWljcm9zb2Z0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICBAT3V0cHV0KCkgYXBwbGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiBcbiAgdGVuYW50RGV0YWlsczphbnkgfCBudWxsID0gbnVsbDtcbiAgQXV0aE1lY2hhbmlzbXM6QXV0aE1lY2hhbmlzbVtdIHwgbnVsbCA9IG51bGxcbiAgc2hvd2Zvcm06Ym9vbGVhbiA9IGZhbHNlO1xuICBsb2dpbkZvcm06IEZvcm1Hcm91cDtcbiAgYXBpS2V5OnN0cmluZztcbiAgc2VjcmV0OnN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHNlcnZlcjogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBFbWFpbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcbiAgICAgIF0pLFxuICAgICAgUGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLFxuICAgICAgXSksXG4gICAgfSk7XG4gICB0aGlzLmFwaUtleSA9ICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXlcbiAgIHRoaXMuc2VjcmV0ID0gIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LlNlY3JldFxuICB9XG5cbiAgbmdPbkluaXQoKXsgXG4gICAgdGhpcy5nZXRUZW5hbnRDb25maWcoKVxuICB9XG5cbiAgYXN5bmMgZ2V0VGVuYW50Q29uZmlnKCl7IFxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLmdldChcbiAgICAgIGBUZW5hbnQvR2V0VGVuYW50Q29uZmlnQnlLZXkvJHt0aGlzLmFwaUtleX1gXG4gICAgKTtcbiAgIHRoaXMudGVuYW50RGV0YWlscyA9IHJlcztcbiAgIHRoaXMuQXV0aE1lY2hhbmlzbXMgPSAgdGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtcztcbiAgIGlmKCF0aGlzLnRlbmFudERldGFpbHM/LkF1dGhNZWNoYW5pc20gJiYgdGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtICE9PSBNZWNoYW5pc21UeXBlLkluQXBwKXsgXG4gICAgdGhpcy5zaG93Zm9ybSA9IGZhbHNlO1xuICAgfWVsc2UgaWYodGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtID09PSBNZWNoYW5pc21UeXBlLkluQXBwKXsgXG4gICAgdGhpcy5zaG93Zm9ybSA9IHRydWU7XG4gICB9ZWxzZSAgaWYodGhpcy5BdXRoTWVjaGFuaXNtcyAhPT0gbnVsbCl7IFxuICAgIHRoaXMuc2hvd2Zvcm0gPSB0aGlzLkF1dGhNZWNoYW5pc21zLnNvbWUoaXRlbSA9PlxuICAgICAgaXRlbS5BdXRoTWVjaGFuaXNtLmluY2x1ZGVzKE1lY2hhbmlzbVR5cGUuSW5BcHApXG4gICAgKSBcbiAgIH0gXG4gIH1cbiBcbiAgY2hlY2tGb3JtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvZ2luRm9ybS52YWxpZDtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdCgpIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JtKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZGF0YTogTG9naW5EYXRhID0ge1xuICAgICAgTWFpbEFkZHJlc3M6IHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWydFbWFpbCddLnZhbHVlLFxuICAgICAgUGFzc3dvcmQ6IHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWydQYXNzd29yZCddLnZhbHVlLFxuICAgICAgTG9naW5UeXBlOnRoaXMudGVuYW50RGV0YWlscz8uQXV0aE1lY2hhbmlzbSxcbiAgICAgIEFQSUtleTp0aGlzLmFwaUtleSxcbiAgICAgIFNlY3JldGU6dGhpcy5zZWNyZXRcbiAgICB9O1xuICAgIFxuICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KGRhdGEpO1xuXG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgIGBBdXRoZW50aWNhdGlvbi9Mb2dpbmAsZGF0YVxuICAgICk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICB0aGlzLm9uU3VibWl0RW5kLmVtaXQocmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlc3VsdCA9IHJlcyBhcyBSZXNwb25zZUtleVZhbHVlO1xuICAgICAgdGhpcy5vblN1Ym1pdEVuZC5lbWl0KHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlR29vZ2xlQXV0aCgpIHtcbiAgICBpZih0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsKXsgXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5BdXRoTWVjaGFuaXNtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLkF1dGhNZWNoYW5pc20gPT09IE1lY2hhbmlzbVR5cGUuR29vZ2xlKVxuICAgICAgdGhpcy5nb29nbGVDbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG4gIGhhbmRsZU1pY3Jvc29mdCgpeyBcbiAgICBpZih0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsKXsgXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5BdXRoTWVjaGFuaXNtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLkF1dGhNZWNoYW5pc20gPT09IE1lY2hhbmlzbVR5cGUuTWljcm9zb2Z0QUQpXG4gICAgICB0aGlzLm1pY3Jvc29mdENsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlQXBwbGVBdXRoKCkge1xuICAgIGlmKHRoaXMuQXV0aE1lY2hhbmlzbXMgIT09IG51bGwpeyBcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLkF1dGhNZWNoYW5pc21zLmZpbHRlcihpdGVtID0+IGl0ZW0uQXV0aE1lY2hhbmlzbSA9PT0gTWVjaGFuaXNtVHlwZS5BcHBsZSlcbiAgICAgIHRoaXMuYXBwbGVDbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLmJnQ29sb3IsXG4gICAgICAnYm94LXNoYWRvdyc6IHRoaXMuYm94U2hhZG93LFxuICAgICAgJ2JvcmRlcic6IHRoaXMuYm9yZGVyLFxuICAgICAgJ2JvcmRlci1yYWRpdXMnOiB0aGlzLmJvcmRlclJhZGl1cyxcbiAgICAgICdjb2xvcic6IHRoaXMudGV4dENvbG9yLFxuICAgICAgJ3dpZHRoJzogdGhpcy53aWR0aCxcbiAgICAgICdtYXgtd2lkdGgnOnRoaXMubWF4V2lkdGgsXG4gICAgICAnbWFyZ2luJzp0aGlzLm1hcmdpbixcbiAgICAgICdoZWlnaHQnOiB0aGlzLmhlaWdodCxcbiAgICAgICdwYWRkaW5nJzp0aGlzLnBkXG4gICAgfTtcbiAgfVxuXG59XG4iLCI8c2VjdGlvblxuW25nU3R5bGVdPVwic3R5bGVzXCJcbmNsYXNzPVwie3sgY3VzdG9tQ2xhc3MgfX1cIlxuPlxuICAgIDxoMiBjbGFzcz1cInt7aGVhZGxpbmdDbGFzc319XCI+e3toZWFkbGluZ1RleHR9fTwvaDI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJsb2dpbkZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0KClcIiBjbGFzcz1cImZsZXhXcmFwcGVyXCI+IFxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1XcmFwcGVyXCIgKm5nSWY9XCJzaG93Zm9ybVwiPiBcbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFtsYWJlbF09XCInRW1haWwnXCJcbiAgICAgICAgW2xhYmVsQ29sb3JdPVwiaW5wdXRMYWJlbENvbG9yXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbdHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRW1haWxcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW2JnQ29sb3JdPVwiaW5wdXRCZ0NvbG9yXCJcbiAgICAgICAgW2JvcmRlcl09XCJpbnB1dEJvcmRlclwiXG4gICAgICAgIFtib3JkZXJSYWRpdXNdPVwiaW5wdXRCb3JkZXJSYWRpdXNcIlxuICAgICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cbiAgICAgIDxkaXY+IFxuICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICBbbGFiZWxdPVwiJ1Bhc3N3b3JkJ1wiXG4gICAgICAgIFtsYWJlbENvbG9yXT1cImlucHV0TGFiZWxDb2xvclwiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3R5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIlBhc3N3b3JkXCJcbiAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtiZ0NvbG9yXT1cImlucHV0QmdDb2xvclwiXG4gICAgICAgIFtib3JkZXJdPVwiaW5wdXRCb3JkZXJcIlxuICAgICAgICBbYm9yZGVyUmFkaXVzXT1cImlucHV0Qm9yZGVyUmFkaXVzXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBbcGFzc3dvcmRUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjdXN0b21FcnJvck1lc3NhZ2VzXT1cIntcbiAgICAgICAgICBwYXNzd29yZDonbGVuZ3RoIG11c3QgYmUgNSBjaGFyYWN0ZXJzJ1xuICAgICAgICB9XCJcbiAgICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPGRpdiBjbGFzcz1cInB3ZFdyYXBwZXJcIj4gXG4gICAgICAgICAgPHAgY2xhcz1cIm1iLTBcIj4gPGEgW3JvdXRlckxpbmtdPVwiZm9yZ2V0UGFzc3dvcmRMaW5rXCIgY2xhc3M9XCJ7e2ZvcmdldFBhc3N3b3JkQ2xhc3N9fVwiPkZvcmdvdCBwYXNzd29yZDwvYT48L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxpYi1idXR0b24gXG4gICAgICBbYnV0dG9uQ2xhc3NdPVwiYnRuQ2xhc3NcIlxuICAgICAgW2NvbG9yXT1cImJ0bkNvbG9yXCJcbiAgICAgIFtib3JkZXJdPVwiYnRuQm9yZGVyXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiYnRuQm9yZGVyUmFkaXVzXCJcbiAgICAgIFtiZ0NvbG9yXT1cImJ0bkJnQ29sb3JcIlxuICAgICAgW3BkXT1cImJ0blBkXCJcbiAgICAgIFt0ZXh0XT1cImJ0blRleHRcIiBcbiAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgIFtkaXNhYmxlZF09XCIhdGhpcy5jaGVja0Zvcm0oKVwiXG4gICAgICA+PC9saWItYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+IFxuICAgICAgPHAgKm5nSWY9XCJyZXF1ZXN0QWNjZXNzTGlua1wiPlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCJyZXF1ZXN0QWNjZXNzTGlua1wiICBjbGFzcz1cInt7cmVxdWVzdEFjY2Vzc0NsYXNzfX1cIj5DbGljayBoZXJlIHRvIHJlcXVlc3QgdXNlciBhY2Nlc3M8L2E+XG4gICAgICA8L3A+XG4gICAgICA8ZGl2PiBcbiAgICAgICAgPGRpdiAqbmdJZj1cIkF1dGhNZWNoYW5pc21zICE9PSBudWxsXCI+IFxuICAgICAgICAgIDx2ZXJiZW4tby1hdXRoIFxuICAgICAgICAgICAgW2F1dGhNZWNoYW5pc21zXT1cIkF1dGhNZWNoYW5pc21zXCJcbiAgICAgICAgICAgIChnb29nbGVDbGljayk9XCJoYW5kbGVHb29nbGVBdXRoKClcIlxuICAgICAgICAgICAgKGFwcGxlQ2xpY2spPVwiaGFuZGxlQXBwbGVBdXRoKClcIlxuICAgICAgICAgICAgKG1pY3Jvc29mdENsaWNrKT1cImhhbmRsZU1pY3Jvc29mdCgpXCJcbiAgICAgICAgICA+PC92ZXJiZW4tby1hdXRoPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cInt7Y3JlYXRlQWNjb3VudENsYXNzfX1cIiAqbmdJZj1cImNyZWF0ZUFjY291bnRMaW5rXCI+XG4gICAgICAgICAgICBEb24ndCBoYXZlIGFuIGFjY291bnQ/XG4gICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJjcmVhdGVBY2NvdW50TGlua1wiICBjbGFzcz1cInt7Y3JlYXRlQWNjb3VudExpbmtDbGFzc319XCI+Q3JlYXRlIGFuIGFjY291bnQ8L2E+XG4gICAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbiAgPC9zZWN0aW9uPlxuICAiXX0=
|