verben-authentication-ui 0.3.3 → 0.3.5
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 +89 -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 +123 -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 +3702 -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 +29 -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 +27 -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,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { RouterLink } from '@angular/router';
|
|
5
|
+
import { SignUpComponent } from './sign-up.component';
|
|
6
|
+
import { VerbenaInputModule } from 'verben-ng-ui';
|
|
7
|
+
import { OAuthModule } from '../o-auth/o-auth.module';
|
|
8
|
+
import { ButtonModule } from '../button/button.module';
|
|
9
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class SignUpModule {
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignUpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SignUpModule, declarations: [SignUpComponent], imports: [CommonModule, FormsModule, VerbenaInputModule, RouterLink, ButtonModule, OAuthModule, ReactiveFormsModule], exports: [SignUpComponent] });
|
|
14
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignUpModule, imports: [CommonModule, FormsModule, VerbenaInputModule, ButtonModule, OAuthModule, ReactiveFormsModule] });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignUpModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
declarations: [SignUpComponent],
|
|
20
|
+
imports: [CommonModule, FormsModule, VerbenaInputModule, RouterLink, ButtonModule, OAuthModule, ReactiveFormsModule],
|
|
21
|
+
exports: [SignUpComponent]
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24tdXAvc2lnbi11cC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFHLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTXJELE1BQU0sT0FBTyxZQUFZO3dHQUFaLFlBQVk7eUdBQVosWUFBWSxpQkFKUixlQUFlLGFBQ3BCLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFDLFlBQVksRUFBQyxXQUFXLEVBQUMsbUJBQW1CLGFBQ3RHLGVBQWU7eUdBRWQsWUFBWSxZQUhiLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQWEsWUFBWSxFQUFDLFdBQVcsRUFBQyxtQkFBbUI7OzRGQUdyRyxZQUFZO2tCQUx4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDL0IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUMsWUFBWSxFQUFDLFdBQVcsRUFBQyxtQkFBbUIsQ0FBQztvQkFDakgsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNpZ25VcENvbXBvbmVudCB9IGZyb20gJy4vc2lnbi11cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgIFZlcmJlbmFJbnB1dE1vZHVsZSB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBPQXV0aE1vZHVsZSB9IGZyb20gJy4uL28tYXV0aC9vLWF1dGgubW9kdWxlJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24ubW9kdWxlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTaWduVXBDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVmVyYmVuYUlucHV0TW9kdWxlLCBSb3V0ZXJMaW5rLEJ1dHRvbk1vZHVsZSxPQXV0aE1vZHVsZSxSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgZXhwb3J0czogW1NpZ25VcENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgU2lnblVwTW9kdWxlIHt9Il19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const baseStyle = {
|
|
2
|
+
width: '100%',
|
|
3
|
+
fontFamily: '"Fraunces", serif',
|
|
4
|
+
fontSize: '125%',
|
|
5
|
+
whiteSpace: 'nowrap',
|
|
6
|
+
margin: '0',
|
|
7
|
+
border: '1px solid #D4A007',
|
|
8
|
+
borderRadius: '16px',
|
|
9
|
+
borderCollapse: 'separate',
|
|
10
|
+
borderSpacing: '0',
|
|
11
|
+
tableLayout: 'fixed',
|
|
12
|
+
overflow: 'hidden',
|
|
13
|
+
rows: {
|
|
14
|
+
even: {
|
|
15
|
+
backgroundColor: '#FDFDFD',
|
|
16
|
+
},
|
|
17
|
+
odd: {
|
|
18
|
+
backgroundColor: '#F1F4FB',
|
|
19
|
+
},
|
|
20
|
+
height: '68px',
|
|
21
|
+
},
|
|
22
|
+
cells: {
|
|
23
|
+
padding: '0.5rem 1rem',
|
|
24
|
+
},
|
|
25
|
+
header: {
|
|
26
|
+
stickyTop: true,
|
|
27
|
+
zIndex: 2,
|
|
28
|
+
backgroundColor: '#EFF2FB',
|
|
29
|
+
fontWeight: 'bold',
|
|
30
|
+
textAlign: 'left',
|
|
31
|
+
padding: '12px 16px',
|
|
32
|
+
height: '40px',
|
|
33
|
+
},
|
|
34
|
+
footer: {
|
|
35
|
+
stickyBottom: true,
|
|
36
|
+
zIndex: 2,
|
|
37
|
+
padding: '3px',
|
|
38
|
+
},
|
|
39
|
+
// body: {
|
|
40
|
+
// background: '#fff',
|
|
41
|
+
// padding: '4px 5px',
|
|
42
|
+
// textAlign: 'center',
|
|
43
|
+
// },
|
|
44
|
+
// firstColumn: {
|
|
45
|
+
// stickyLeft: true,
|
|
46
|
+
// zIndex: 1,
|
|
47
|
+
// },
|
|
48
|
+
lastColumn: {
|
|
49
|
+
stickyRight: true,
|
|
50
|
+
zIndex: 1,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10YWJsZS1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvc3NvL2Jhc2UtdGFibGUtc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFRO0lBQzVCLEtBQUssRUFBRSxNQUFNO0lBQ2IsVUFBVSxFQUFFLG1CQUFtQjtJQUMvQixRQUFRLEVBQUUsTUFBTTtJQUNoQixVQUFVLEVBQUUsUUFBUTtJQUNwQixNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRSxtQkFBbUI7SUFDM0IsWUFBWSxFQUFFLE1BQU07SUFDcEIsY0FBYyxFQUFFLFVBQVU7SUFDMUIsYUFBYSxFQUFFLEdBQUc7SUFDbEIsV0FBVyxFQUFFLE9BQU87SUFDcEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osZUFBZSxFQUFFLFNBQVM7U0FDM0I7UUFDRCxHQUFHLEVBQUU7WUFDSCxlQUFlLEVBQUUsU0FBUztTQUMzQjtRQUNELE1BQU0sRUFBRSxNQUFNO0tBQ2Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQUUsYUFBYTtLQUN2QjtJQUNELE1BQU0sRUFBRTtRQUNOLFNBQVMsRUFBRSxJQUFJO1FBQ2YsTUFBTSxFQUFFLENBQUM7UUFDVCxlQUFlLEVBQUUsU0FBUztRQUMxQixVQUFVLEVBQUUsTUFBTTtRQUNsQixTQUFTLEVBQUUsTUFBTTtRQUNqQixPQUFPLEVBQUUsV0FBVztRQUNwQixNQUFNLEVBQUUsTUFBTTtLQUNmO0lBQ0QsTUFBTSxFQUFFO1FBQ04sWUFBWSxFQUFFLElBQUk7UUFDbEIsTUFBTSxFQUFFLENBQUM7UUFDVCxPQUFPLEVBQUUsS0FBSztLQUNmO0lBQ0QsWUFBWTtJQUNaLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLE9BQU87SUFDUCxpQkFBaUI7SUFDakIsc0JBQXNCO0lBQ3RCLGVBQWU7SUFDZixLQUFLO0lBQ0wsVUFBVSxFQUFFO1FBQ1YsV0FBVyxFQUFFLElBQUk7UUFDakIsTUFBTSxFQUFFLENBQUM7S0FDVjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmFzZVN0eWxlOiBhbnkgPSB7XG4gIHdpZHRoOiAnMTAwJScsXG4gIGZvbnRGYW1pbHk6ICdcIkZyYXVuY2VzXCIsIHNlcmlmJyxcbiAgZm9udFNpemU6ICcxMjUlJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIG1hcmdpbjogJzAnLFxuICBib3JkZXI6ICcxcHggc29saWQgI0Q0QTAwNycsXG4gIGJvcmRlclJhZGl1czogJzE2cHgnLFxuICBib3JkZXJDb2xsYXBzZTogJ3NlcGFyYXRlJyxcbiAgYm9yZGVyU3BhY2luZzogJzAnLFxuICB0YWJsZUxheW91dDogJ2ZpeGVkJyxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICByb3dzOiB7XG4gICAgZXZlbjoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnI0ZERkRGRCcsXG4gICAgfSxcbiAgICBvZGQ6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyNGMUY0RkInLFxuICAgIH0sXG4gICAgaGVpZ2h0OiAnNjhweCcsXG4gIH0sXG4gIGNlbGxzOiB7XG4gICAgcGFkZGluZzogJzAuNXJlbSAxcmVtJyxcbiAgfSxcbiAgaGVhZGVyOiB7XG4gICAgc3RpY2t5VG9wOiB0cnVlLFxuICAgIHpJbmRleDogMixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRUZGMkZCJyxcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgcGFkZGluZzogJzEycHggMTZweCcsXG4gICAgaGVpZ2h0OiAnNDBweCcsXG4gIH0sXG4gIGZvb3Rlcjoge1xuICAgIHN0aWNreUJvdHRvbTogdHJ1ZSxcbiAgICB6SW5kZXg6IDIsXG4gICAgcGFkZGluZzogJzNweCcsXG4gIH0sXG4gIC8vICAgYm9keToge1xuICAvLyAgICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAvLyAgICAgcGFkZGluZzogJzRweCA1cHgnLFxuICAvLyAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgLy8gICB9LFxuICAvLyBmaXJzdENvbHVtbjoge1xuICAvLyAgIHN0aWNreUxlZnQ6IHRydWUsXG4gIC8vICAgekluZGV4OiAxLFxuICAvLyB9LFxuICBsYXN0Q29sdW1uOiB7XG4gICAgc3RpY2t5UmlnaHQ6IHRydWUsXG4gICAgekluZGV4OiAxLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ObjectState } from '../../models/object-state';
|
|
2
|
+
export const mockData = new Array(10).fill(1).map((id, i) => ({
|
|
3
|
+
Name: `Name ${id + i}`,
|
|
4
|
+
Id: id,
|
|
5
|
+
id: id.toString(),
|
|
6
|
+
Description: `Sign in option ${id + i}`,
|
|
7
|
+
Logo: `./assets/images/test-logo.png`,
|
|
8
|
+
Link: `Link ${id + i}`,
|
|
9
|
+
CreatedAt: new Date(),
|
|
10
|
+
UpdatedAt: new Date(),
|
|
11
|
+
DataState: ObjectState.New,
|
|
12
|
+
Tenant: `Tenant ${id + i}`,
|
|
13
|
+
}));
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy9zc28vaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQW1CLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUU7SUFDdEIsRUFBRSxFQUFFLEVBQUU7SUFDTixFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqQixXQUFXLEVBQUUsa0JBQWtCLEVBQUUsR0FBQyxDQUFDLEVBQUU7SUFDckMsSUFBSSxFQUFFLCtCQUErQjtJQUNyQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUMsQ0FBQyxFQUFFO0lBQ3BCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtJQUNyQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7SUFDckIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxHQUFHO0lBQzFCLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUU7Q0FDM0IsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYmplY3RTdGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9vYmplY3Qtc3RhdGUnO1xuaW1wb3J0IHsgU2luZ2xlU2lnbk9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpbmdsZS1zaWduLW9uJztcblxuZXhwb3J0IGNvbnN0IG1vY2tEYXRhOiBTaW5nbGVTaWduT25bXSA9IG5ldyBBcnJheSgxMCkuZmlsbCgxKS5tYXAoKGlkLCBpKSA9PiAoe1xuICBOYW1lOiBgTmFtZSAke2lkICsgaX1gLFxuICBJZDogaWQsXG4gIGlkOiBpZC50b1N0cmluZygpLFxuICBEZXNjcmlwdGlvbjogYFNpZ24gaW4gb3B0aW9uICR7aWQraX1gLFxuICBMb2dvOiBgLi9hc3NldHMvaW1hZ2VzL3Rlc3QtbG9nby5wbmdgLFxuICBMaW5rOiBgTGluayAke2lkK2l9YCxcbiAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICBUZW5hbnQ6IGBUZW5hbnQgJHtpZCArIGl9YCxcbn0pKTtcbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "verben-ng-ui";
|
|
6
|
+
export class SsoFormComponent {
|
|
7
|
+
fb;
|
|
8
|
+
isUploading = false;
|
|
9
|
+
uploadedFileName = null;
|
|
10
|
+
fileUploadError = null;
|
|
11
|
+
currentData = null;
|
|
12
|
+
switchView = new EventEmitter();
|
|
13
|
+
form;
|
|
14
|
+
constructor(fb) {
|
|
15
|
+
this.fb = fb;
|
|
16
|
+
this.form = this.fb.group({
|
|
17
|
+
Description: [''],
|
|
18
|
+
Name: [''],
|
|
19
|
+
Link: [''],
|
|
20
|
+
Logo: [''],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() { }
|
|
24
|
+
onSave() {
|
|
25
|
+
if (this.form.valid) {
|
|
26
|
+
// Emit save event with form value
|
|
27
|
+
console.log('Form saved:', this.form.value);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
onDelete() {
|
|
31
|
+
// Emit delete event
|
|
32
|
+
console.log('Delete requested');
|
|
33
|
+
}
|
|
34
|
+
onFileSelected(event) {
|
|
35
|
+
const input = event.target;
|
|
36
|
+
if (input.files && input.files.length > 0) {
|
|
37
|
+
const file = input.files[0];
|
|
38
|
+
this.fileUploadError = null;
|
|
39
|
+
if (!file) {
|
|
40
|
+
this.isUploading = true;
|
|
41
|
+
}
|
|
42
|
+
if (file.size > 5000000) {
|
|
43
|
+
this.fileUploadError = 'File size exceeds 5MB limit.';
|
|
44
|
+
this.uploadedFileName = null;
|
|
45
|
+
this.isUploading = false; // Reset isUploading state
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.uploadedFileName = file.name;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.isUploading = false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
removeFile() {
|
|
56
|
+
this.uploadedFileName = null;
|
|
57
|
+
this.fileUploadError = null;
|
|
58
|
+
const fileInput = document.getElementById('attachment');
|
|
59
|
+
if (fileInput) {
|
|
60
|
+
fileInput.value = '';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SsoFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SsoFormComponent, selector: "lib-sso-form", inputs: { currentData: "currentData" }, outputs: { switchView: "switchView" }, ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative\"\n>\n <verbena-input\n name=\"Name\"\n label=\"Name:\"\n formControlName=\"Name\"\n [(ngModel)]=\"currentData?.data.Name\"\n />\n <verbena-input\n label=\"Description:\"\n name=\"Description\"\n formControlName=\"Description\"\n [(ngModel)]=\"currentData?.data.Description\"\n />\n <verbena-input\n label=\"Link:\"\n name=\"Link\"\n formControlName=\"Link\"\n [(ngModel)]=\"currentData?.data.Link\"\n/>\n<span class=\"block my-2 \">Logo</span>\n<label [style.background-color]=\"'#f9f9f9'\" class=\"border cursor-pointer border-secondary-200 rounded-md w-full px-4 py-2 flex justify-between\">\n <span *ngIf=\"!uploadedFileName\">{{isUploading?\"uploading...\":\"Upload a photo\"}}</span>\n <span *ngIf=\"fileUploadError\" class=\"error\">{{ fileUploadError }}</span>\n <div *ngIf=\"uploadedFileName\" class=\"flex items-center text-sm gap-2 border border-primary rounded-lg px-3 \">\n <span>{{ uploadedFileName }}</span>\n <button\n [style.color]=\"'black'\"\n type=\"button\"\n (click)=\"removeFile()\"\n >\n ✕\n </button>\n </div>\n <input\n id=\"logo\"\n[type]=\"'file'\"\n label=\"Logo:\"\n name=\"Logo\"\n accept=\"image/png\"\n formControlName=\"Logo\"\n (change)=\"onFileSelected($event)\"\n formControlName=\"Logo\"\n/>\n<span class=\"flex gap-2\">\n<span class=\"bg-primary flex icon-container rounded-md justify-center items-center\">\n <img src=\"./assets/icons/cam.png\" class=\"icon-width\"/>\n</span>\n<span class=\"bg-primary flex icon-container rounded-md justify-center items-center\">\n <img src=\"./assets/icons/file.png\" class=\"icon-width2\"/>\n</span>\n</span>\n</label>\n\n <!-- buttons -->\n <div\n class=\"flex justify-between bottom-8 left-0 right-0 px-3 pb-2 absolute\"\n style=\"\n display: flex;\n justify-content: space-between;\n position: absolute;\n padding: 8px 12px;\n right: 0;\n left: 0;\n bottom: 32;\n \"\n >\n <!-- <verbena-button\n text=\"Delete\"\n class=\"bg-secondary-200 text-[black]\"\n (click)=\"onDelete()\"\n />\n <verbena-button\n text=\"Save\"\n class=\"bg-primary text-[black]\"\n (click)=\"onSave()\"\n />\n\n <verbena-button\n text=\"Secondary Button\"\n styleType=\"secondary\"\n ></verbena-button> -->\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n [bgColor]=\"'#999999'\"\n [textColor]=\"'#404040'\"\n borderRadius=\"10px\"\n ></verbena-button>\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Save\"\n bgColor=\"#28a745\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n [bgColor]=\"'#FFE681'\"\n width=\"114px\"\n height=\"39px\"\n ></verbena-button>\n </div>\n</form>\n", styles: ["#logo{display:none}.icon-width{width:20px}.icon-width2{width:15px}.icon-container{width:30px;height:30px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.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: i3.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: "component", type: i3.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"] }] });
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SsoFormComponent, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'lib-sso-form', template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative\"\n>\n <verbena-input\n name=\"Name\"\n label=\"Name:\"\n formControlName=\"Name\"\n [(ngModel)]=\"currentData?.data.Name\"\n />\n <verbena-input\n label=\"Description:\"\n name=\"Description\"\n formControlName=\"Description\"\n [(ngModel)]=\"currentData?.data.Description\"\n />\n <verbena-input\n label=\"Link:\"\n name=\"Link\"\n formControlName=\"Link\"\n [(ngModel)]=\"currentData?.data.Link\"\n/>\n<span class=\"block my-2 \">Logo</span>\n<label [style.background-color]=\"'#f9f9f9'\" class=\"border cursor-pointer border-secondary-200 rounded-md w-full px-4 py-2 flex justify-between\">\n <span *ngIf=\"!uploadedFileName\">{{isUploading?\"uploading...\":\"Upload a photo\"}}</span>\n <span *ngIf=\"fileUploadError\" class=\"error\">{{ fileUploadError }}</span>\n <div *ngIf=\"uploadedFileName\" class=\"flex items-center text-sm gap-2 border border-primary rounded-lg px-3 \">\n <span>{{ uploadedFileName }}</span>\n <button\n [style.color]=\"'black'\"\n type=\"button\"\n (click)=\"removeFile()\"\n >\n ✕\n </button>\n </div>\n <input\n id=\"logo\"\n[type]=\"'file'\"\n label=\"Logo:\"\n name=\"Logo\"\n accept=\"image/png\"\n formControlName=\"Logo\"\n (change)=\"onFileSelected($event)\"\n formControlName=\"Logo\"\n/>\n<span class=\"flex gap-2\">\n<span class=\"bg-primary flex icon-container rounded-md justify-center items-center\">\n <img src=\"./assets/icons/cam.png\" class=\"icon-width\"/>\n</span>\n<span class=\"bg-primary flex icon-container rounded-md justify-center items-center\">\n <img src=\"./assets/icons/file.png\" class=\"icon-width2\"/>\n</span>\n</span>\n</label>\n\n <!-- buttons -->\n <div\n class=\"flex justify-between bottom-8 left-0 right-0 px-3 pb-2 absolute\"\n style=\"\n display: flex;\n justify-content: space-between;\n position: absolute;\n padding: 8px 12px;\n right: 0;\n left: 0;\n bottom: 32;\n \"\n >\n <!-- <verbena-button\n text=\"Delete\"\n class=\"bg-secondary-200 text-[black]\"\n (click)=\"onDelete()\"\n />\n <verbena-button\n text=\"Save\"\n class=\"bg-primary text-[black]\"\n (click)=\"onSave()\"\n />\n\n <verbena-button\n text=\"Secondary Button\"\n styleType=\"secondary\"\n ></verbena-button> -->\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n [bgColor]=\"'#999999'\"\n [textColor]=\"'#404040'\"\n borderRadius=\"10px\"\n ></verbena-button>\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Save\"\n bgColor=\"#28a745\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n [bgColor]=\"'#FFE681'\"\n width=\"114px\"\n height=\"39px\"\n ></verbena-button>\n </div>\n</form>\n", styles: ["#logo{display:none}.icon-width{width:20px}.icon-width2{width:15px}.icon-container{width:30px;height:30px}\n"] }]
|
|
69
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { currentData: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], switchView: [{
|
|
72
|
+
type: Output
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NvLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy9zc28vc3NvLWZvcm0vc3NvLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy9zc28vc3NvLWZvcm0vc3NvLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVOUYsTUFBTSxPQUFPLGdCQUFnQjtJQVNQO0lBUnBCLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsZ0JBQWdCLEdBQWtCLElBQUksQ0FBQztJQUN2QyxlQUFlLEdBQWtCLElBQUksQ0FBQztJQUM3QixXQUFXLEdBQWUsSUFBSSxDQUFBO0lBQzdCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO0lBRXJELElBQUksQ0FBWTtJQUVoQixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFbkIsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixrQ0FBa0M7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDTixvQkFBb0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxjQUFjLENBQUMsS0FBWTtRQUN6QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyw4QkFBOEIsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQywwQkFBMEI7WUFDdEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQXFCLENBQUM7UUFDNUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLFNBQVMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO3dHQXpEVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQixtSUNWN0Isd2dHQTZHQTs7NEZEbkdhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO2dGQVFmLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYXJkRGF0YSB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNzby1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Nzby1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Nzby1mb3JtLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTc29Gb3JtQ29tcG9uZW50IHtcbiAgaXNVcGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdXBsb2FkZWRGaWxlTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGZpbGVVcGxvYWRFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGN1cnJlbnREYXRhOkNhcmREYXRhfG51bGw9bnVsbFxuICBAT3V0cHV0KCkgc3dpdGNoVmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5kZWZpbmVkPigpO1xuXG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgRGVzY3JpcHRpb246IFsnJ10sXG4gICAgICBOYW1lOiBbJyddLFxuICAgICAgTGluazogWycnXSxcbiAgICAgIExvZ286IFsnJ10sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIC8vIEVtaXQgc2F2ZSBldmVudCB3aXRoIGZvcm0gdmFsdWVcbiAgICAgIGNvbnNvbGUubG9nKCdGb3JtIHNhdmVkOicsIHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgfVxuICB9XG4gIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgIC8vIEVtaXQgZGVsZXRlIGV2ZW50XG4gICAgY29uc29sZS5sb2coJ0RlbGV0ZSByZXF1ZXN0ZWQnKTtcbiAgfVxuICBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChpbnB1dC5maWxlcyAmJiBpbnB1dC5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG4gICAgICB0aGlzLmZpbGVVcGxvYWRFcnJvciA9IG51bGw7XG4gICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZmlsZS5zaXplID4gNTAwMDAwMCkge1xuICAgICAgICB0aGlzLmZpbGVVcGxvYWRFcnJvciA9ICdGaWxlIHNpemUgZXhjZWVkcyA1TUIgbGltaXQuJztcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVOYW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlOyAvLyBSZXNldCBpc1VwbG9hZGluZyBzdGF0ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVOYW1lID0gZmlsZS5uYW1lO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRmlsZSgpIHtcbiAgICB0aGlzLnVwbG9hZGVkRmlsZU5hbWUgPSBudWxsO1xuICAgIHRoaXMuZmlsZVVwbG9hZEVycm9yID0gbnVsbDtcbiAgICBjb25zdCBmaWxlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXR0YWNobWVudCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGZpbGVJbnB1dCkge1xuICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxmb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBweC0zIHBiLTMgcm91bmRlZC14bCBoLWZ1bGwgdy1mdWxsIHJlbGF0aXZlXCJcbj5cbiAgPHZlcmJlbmEtaW5wdXRcbiAgICBuYW1lPVwiTmFtZVwiXG4gICAgbGFiZWw9XCJOYW1lOlwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiTmFtZVwiXG4gICAgWyhuZ01vZGVsKV09XCJjdXJyZW50RGF0YT8uZGF0YS5OYW1lXCJcbiAgLz5cbiAgPHZlcmJlbmEtaW5wdXRcbiAgICBsYWJlbD1cIkRlc2NyaXB0aW9uOlwiXG4gICAgbmFtZT1cIkRlc2NyaXB0aW9uXCJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJEZXNjcmlwdGlvblwiXG4gICAgWyhuZ01vZGVsKV09XCJjdXJyZW50RGF0YT8uZGF0YS5EZXNjcmlwdGlvblwiXG4gIC8+XG4gIDx2ZXJiZW5hLWlucHV0XG4gIGxhYmVsPVwiTGluazpcIlxuICBuYW1lPVwiTGlua1wiXG4gIGZvcm1Db250cm9sTmFtZT1cIkxpbmtcIlxuICBbKG5nTW9kZWwpXT1cImN1cnJlbnREYXRhPy5kYXRhLkxpbmtcIlxuLz5cbjxzcGFuIGNsYXNzPVwiYmxvY2sgbXktMiBcIj5Mb2dvPC9zcGFuPlxuPGxhYmVsIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjZjlmOWY5J1wiIGNsYXNzPVwiYm9yZGVyIGN1cnNvci1wb2ludGVyIGJvcmRlci1zZWNvbmRhcnktMjAwIHJvdW5kZWQtbWQgdy1mdWxsIHB4LTQgcHktMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICA8c3BhbiAqbmdJZj1cIiF1cGxvYWRlZEZpbGVOYW1lXCI+e3tpc1VwbG9hZGluZz9cInVwbG9hZGluZy4uLlwiOlwiVXBsb2FkIGEgcGhvdG9cIn19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cImZpbGVVcGxvYWRFcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57eyBmaWxlVXBsb2FkRXJyb3IgfX08L3NwYW4+XG4gIDxkaXYgKm5nSWY9XCJ1cGxvYWRlZEZpbGVOYW1lXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGdhcC0yIGJvcmRlciBib3JkZXItcHJpbWFyeSByb3VuZGVkLWxnIHB4LTMgXCI+XG4gICAgPHNwYW4+e3sgdXBsb2FkZWRGaWxlTmFtZSB9fTwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJ2JsYWNrJ1wiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKClcIlxuICAgID5cbiAgICAgICYjeDI3MTU7XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8aW5wdXRcbiAgaWQ9XCJsb2dvXCJcblt0eXBlXT1cIidmaWxlJ1wiXG4gIGxhYmVsPVwiTG9nbzpcIlxuICBuYW1lPVwiTG9nb1wiXG4gIGFjY2VwdD1cImltYWdlL3BuZ1wiXG4gIGZvcm1Db250cm9sTmFtZT1cIkxvZ29cIlxuICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICBmb3JtQ29udHJvbE5hbWU9XCJMb2dvXCJcbi8+XG48c3BhbiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cbjxzcGFuIGNsYXNzPVwiYmctcHJpbWFyeSBmbGV4IGljb24tY29udGFpbmVyIHJvdW5kZWQtbWQganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gIDxpbWcgc3JjPVwiLi9hc3NldHMvaWNvbnMvY2FtLnBuZ1wiIGNsYXNzPVwiaWNvbi13aWR0aFwiLz5cbjwvc3Bhbj5cbjxzcGFuICBjbGFzcz1cImJnLXByaW1hcnkgZmxleCBpY29uLWNvbnRhaW5lciByb3VuZGVkLW1kIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiPlxuICA8aW1nIHNyYz1cIi4vYXNzZXRzL2ljb25zL2ZpbGUucG5nXCIgY2xhc3M9XCJpY29uLXdpZHRoMlwiLz5cbjwvc3Bhbj5cbjwvc3Bhbj5cbjwvbGFiZWw+XG5cbiAgPCEtLSBidXR0b25zIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBib3R0b20tOCBsZWZ0LTAgcmlnaHQtMCBweC0zIHBiLTIgYWJzb2x1dGVcIlxuICAgIHN0eWxlPVwiXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICByaWdodDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3R0b206IDMyO1xuICAgIFwiXG4gID5cbiAgICA8IS0tIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgdGV4dD1cIkRlbGV0ZVwiXG4gICAgICBjbGFzcz1cImJnLXNlY29uZGFyeS0yMDAgdGV4dC1bYmxhY2tdXCJcbiAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgpXCJcbiAgICAvPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgdGV4dD1cIlNhdmVcIlxuICAgICAgY2xhc3M9XCJiZy1wcmltYXJ5IHRleHQtW2JsYWNrXVwiXG4gICAgICAoY2xpY2spPVwib25TYXZlKClcIlxuICAgIC8+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIHRleHQ9XCJTZWNvbmRhcnkgQnV0dG9uXCJcbiAgICAgIHN0eWxlVHlwZT1cInNlY29uZGFyeVwiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+IC0tPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgd2lkdGg9XCIxMTRweFwiXG4gICAgICBoZWlnaHQ9XCIzOXB4XCJcbiAgICAgIHRleHQ9XCJEZWxldGVcIlxuICAgICAgW2JnQ29sb3JdPVwiJyM5OTk5OTknXCJcbiAgICAgIFt0ZXh0Q29sb3JdPVwiJyM0MDQwNDAnXCJcbiAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgKGNsaWNrKT1cInN3aXRjaFZpZXcuZW1pdCgpXCJcbiAgICAgIHRleHQ9XCJTd2l0Y2ggVG8gVGFibGVcIlxuICAgICAgc3R5bGVUeXBlPVwieWx3LW91dGxpbmVcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgdGV4dD1cIlNhdmVcIlxuICAgICAgYmdDb2xvcj1cIiMyOGE3NDVcIlxuICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgIFtiZ0NvbG9yXT1cIicjRkZFNjgxJ1wiXG4gICAgICB3aWR0aD1cIjExNHB4XCJcbiAgICAgIGhlaWdodD1cIjM5cHhcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const columns = [
|
|
2
|
+
{
|
|
3
|
+
id: 'createdAt',
|
|
4
|
+
header: 'Created',
|
|
5
|
+
accessorKey: 'CreatedAt',
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
id: 'name',
|
|
9
|
+
header: 'Name',
|
|
10
|
+
accessorKey: 'Name',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
id: 'description',
|
|
14
|
+
header: 'Description',
|
|
15
|
+
accessorKey: 'Description',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: 'link',
|
|
19
|
+
header: 'Link',
|
|
20
|
+
accessorKey: 'Link',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'logo',
|
|
24
|
+
header: 'Logo',
|
|
25
|
+
accessorKey: 'Logo',
|
|
26
|
+
},
|
|
27
|
+
{ id: 'actions', header: 'Actions', accessorKey: 'Name' },
|
|
28
|
+
];
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NvLmNvbHVtbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3Nzby9zc28uY29sdW1ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQXFDO0lBQ3ZEO1FBQ0UsRUFBRSxFQUFFLFdBQVc7UUFDZixNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsV0FBVztLQUN6QjtJQUNEO1FBQ0UsRUFBRSxFQUFFLE1BQU07UUFDVixNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsYUFBYTtRQUNqQixNQUFNLEVBQUUsYUFBYTtRQUNyQixXQUFXLEVBQUUsYUFBYTtLQUMzQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLE1BQU07UUFDVixNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxNQUFNO0tBQ3BCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsTUFBTTtRQUNWLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLE1BQU07S0FDcEI7SUFDRCxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0NBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbHVtbkRlZmluaXRpb24gfSBmcm9tICd2ZXJiZW4tbmctdWknO1xuaW1wb3J0IHsgU2luZ2xlU2lnbk9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpbmdsZS1zaWduLW9uJztcblxuZXhwb3J0IGNvbnN0IGNvbHVtbnM6IENvbHVtbkRlZmluaXRpb248U2luZ2xlU2lnbk9uPltdID0gW1xuICB7XG4gICAgaWQ6ICdjcmVhdGVkQXQnLFxuICAgIGhlYWRlcjogJ0NyZWF0ZWQnLFxuICAgIGFjY2Vzc29yS2V5OiAnQ3JlYXRlZEF0JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnbmFtZScsXG4gICAgaGVhZGVyOiAnTmFtZScsXG4gICAgYWNjZXNzb3JLZXk6ICdOYW1lJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnZGVzY3JpcHRpb24nLFxuICAgIGhlYWRlcjogJ0Rlc2NyaXB0aW9uJyxcbiAgICBhY2Nlc3NvcktleTogJ0Rlc2NyaXB0aW9uJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnbGluaycsXG4gICAgaGVhZGVyOiAnTGluaycsXG4gICAgYWNjZXNzb3JLZXk6ICdMaW5rJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnbG9nbycsXG4gICAgaGVhZGVyOiAnTG9nbycsXG4gICAgYWNjZXNzb3JLZXk6ICdMb2dvJyxcbiAgfSxcbiAgeyBpZDogJ2FjdGlvbnMnLCBoZWFkZXI6ICdBY3Rpb25zJywgYWNjZXNzb3JLZXk6ICdOYW1lJyB9LFxuXTtcbiJdfQ==
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { columns } from './sso.columns';
|
|
3
|
+
import { mockData } from './helper';
|
|
4
|
+
import { baseStyle } from './base-table-style';
|
|
5
|
+
import { DataFilterType, } from 'verben-ng-ui';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "verben-ng-ui";
|
|
9
|
+
import * as i3 from "./sso-form/sso-form.component";
|
|
10
|
+
export class SsoComponent {
|
|
11
|
+
cardDataView;
|
|
12
|
+
dataView;
|
|
13
|
+
columns = columns;
|
|
14
|
+
data = mockData;
|
|
15
|
+
filteredColumns = columns;
|
|
16
|
+
styles = baseStyle;
|
|
17
|
+
currentData = null;
|
|
18
|
+
isGridView = true;
|
|
19
|
+
selected = null;
|
|
20
|
+
cardData = mockData.map(({ Name, Description, Link, Logo }) => ({
|
|
21
|
+
selected: false,
|
|
22
|
+
title: Name,
|
|
23
|
+
data: { Name, Description, Link, Logo },
|
|
24
|
+
body: [
|
|
25
|
+
{ title: 'Description', value: Description ?? '' },
|
|
26
|
+
],
|
|
27
|
+
children: [],
|
|
28
|
+
}));
|
|
29
|
+
openDetailView(name) {
|
|
30
|
+
const cardItem = this.getCardDataByMailAddress(name);
|
|
31
|
+
if (cardItem && this.cardDataView) {
|
|
32
|
+
this.dataView.toggleView();
|
|
33
|
+
this.cardData.forEach((item) => {
|
|
34
|
+
item.selected = false;
|
|
35
|
+
if (item.children) {
|
|
36
|
+
item.children.forEach((child) => (child.selected = false));
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
cardItem.selected = true;
|
|
40
|
+
this.currentData = this.cardDataView.onItemClick(cardItem);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
getCardDataByMailAddress(name) {
|
|
44
|
+
return this.cardData.find(({ data }) => data.Name === name);
|
|
45
|
+
}
|
|
46
|
+
onViewChange(isGridView) {
|
|
47
|
+
isGridView = isGridView;
|
|
48
|
+
if (this.currentData) {
|
|
49
|
+
this.cardDataView?.clearData();
|
|
50
|
+
this.currentData = null;
|
|
51
|
+
}
|
|
52
|
+
if (this.selected) {
|
|
53
|
+
this.cardDataView.onItemClick(this.selected);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
openFormView(index) {
|
|
57
|
+
const item = this.cardData[index];
|
|
58
|
+
console.log('ITEM = ', item);
|
|
59
|
+
}
|
|
60
|
+
handleExport(exportedData) {
|
|
61
|
+
console.log('Exported data:', exportedData);
|
|
62
|
+
this.downloadCSV(exportedData);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @param data Simple csv export for testing
|
|
67
|
+
*/
|
|
68
|
+
downloadCSV(data) {
|
|
69
|
+
const headers = Object.keys(data[0]);
|
|
70
|
+
const csvContent = [
|
|
71
|
+
headers.join(','),
|
|
72
|
+
...data.map((row) => headers.map((header) => row[header]).join(',')),
|
|
73
|
+
].join('\n');
|
|
74
|
+
const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
|
|
75
|
+
const link = document.createElement('a');
|
|
76
|
+
if (link.download !== undefined) {
|
|
77
|
+
const url = URL.createObjectURL(blob);
|
|
78
|
+
link.setAttribute('href', url);
|
|
79
|
+
link.setAttribute('download', 'export.csv');
|
|
80
|
+
link.style.visibility = 'hidden';
|
|
81
|
+
document.body.appendChild(link);
|
|
82
|
+
link.click();
|
|
83
|
+
document.body.removeChild(link);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
onSelectionChange(selectedRows) {
|
|
87
|
+
console.log('Selection changed:', selectedRows);
|
|
88
|
+
// Handle the selection change
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Copied over from card view doc until I understand usage
|
|
92
|
+
*/
|
|
93
|
+
selectedColumnCount = 0;
|
|
94
|
+
selectedFilterTableCount = 0;
|
|
95
|
+
isOPen = true;
|
|
96
|
+
selectedSortCount = 0;
|
|
97
|
+
showColumn = false;
|
|
98
|
+
showSort = false;
|
|
99
|
+
showExport = false;
|
|
100
|
+
selectedAll = false;
|
|
101
|
+
showFilter = false;
|
|
102
|
+
visibleColumns = columns.map((col) => ({
|
|
103
|
+
checked: false,
|
|
104
|
+
name: typeof col.header === 'string' ? col.header : col.id,
|
|
105
|
+
type: DataFilterType.Bool,
|
|
106
|
+
}));
|
|
107
|
+
filterArray = [
|
|
108
|
+
{
|
|
109
|
+
name: 'Name',
|
|
110
|
+
type: DataFilterType.String,
|
|
111
|
+
checked: false,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'Description',
|
|
115
|
+
type: DataFilterType.String,
|
|
116
|
+
checked: false,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'Logo',
|
|
120
|
+
type: DataFilterType.String,
|
|
121
|
+
checked: false,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: 'Link',
|
|
125
|
+
type: DataFilterType.String,
|
|
126
|
+
checked: false,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'CreatedAt',
|
|
130
|
+
type: DataFilterType.Date,
|
|
131
|
+
checked: false,
|
|
132
|
+
},
|
|
133
|
+
];
|
|
134
|
+
sortOptions = [
|
|
135
|
+
{
|
|
136
|
+
name: 'Name',
|
|
137
|
+
type: DataFilterType.String,
|
|
138
|
+
checked: false,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'Description',
|
|
142
|
+
type: DataFilterType.String,
|
|
143
|
+
checked: false,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'Link',
|
|
147
|
+
type: DataFilterType.String,
|
|
148
|
+
checked: false,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: 'Logo',
|
|
152
|
+
type: DataFilterType.String,
|
|
153
|
+
checked: false,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: 'CreatedAt',
|
|
157
|
+
type: DataFilterType.Date,
|
|
158
|
+
checked: false,
|
|
159
|
+
},
|
|
160
|
+
];
|
|
161
|
+
clearData() {
|
|
162
|
+
this.currentData = {};
|
|
163
|
+
}
|
|
164
|
+
loadMore() {
|
|
165
|
+
this.cardData = this.cardData.concat(this.cardData);
|
|
166
|
+
}
|
|
167
|
+
onColumnChange(event) {
|
|
168
|
+
this.showColumn = event;
|
|
169
|
+
}
|
|
170
|
+
onSortChange(event) {
|
|
171
|
+
this.showSort = false;
|
|
172
|
+
console.log(event);
|
|
173
|
+
}
|
|
174
|
+
onColumnsUpdated(updatedColumns) {
|
|
175
|
+
this.showColumn = false;
|
|
176
|
+
this.selectedColumnCount = updatedColumns.length;
|
|
177
|
+
if (updatedColumns) {
|
|
178
|
+
// Filter columns to include only visible ones
|
|
179
|
+
this.filteredColumns = this.columns.filter((col) => this.visibleColumns.find((filter) => filter.name === col.header && filter.checked));
|
|
180
|
+
// Reorder columns based on the order in visibleColumns
|
|
181
|
+
const visibleColumnOrder = this.visibleColumns
|
|
182
|
+
.filter((filter) => filter.checked)
|
|
183
|
+
.map((filter) => filter.name);
|
|
184
|
+
this.columns.sort((a, b) => {
|
|
185
|
+
const indexA = visibleColumnOrder.indexOf(a.header);
|
|
186
|
+
const indexB = visibleColumnOrder.indexOf(b.header);
|
|
187
|
+
return indexA - indexB;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
onFilterApplied(appliedFilter) {
|
|
192
|
+
this.showFilter = false;
|
|
193
|
+
if (Array.isArray(appliedFilter)) {
|
|
194
|
+
this.selectedFilterTableCount = appliedFilter.length;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
console.log('appliedFilter is not an array');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
onSortUpdated(updatedSorts) {
|
|
201
|
+
this.onSortChange(false);
|
|
202
|
+
this.selectedSortCount = updatedSorts.length;
|
|
203
|
+
console.log(updatedSorts);
|
|
204
|
+
}
|
|
205
|
+
onStateChange(event) {
|
|
206
|
+
switch (event.key) {
|
|
207
|
+
case 'column':
|
|
208
|
+
this.showColumn = event.value;
|
|
209
|
+
break;
|
|
210
|
+
case 'sort':
|
|
211
|
+
this.showSort = event.value;
|
|
212
|
+
break;
|
|
213
|
+
case 'export':
|
|
214
|
+
this.showExport = event.value;
|
|
215
|
+
break;
|
|
216
|
+
case 'filter':
|
|
217
|
+
this.showFilter = event.value;
|
|
218
|
+
break;
|
|
219
|
+
default:
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SsoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
224
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SsoComponent, selector: "lib-sso", viewQueries: [{ propertyName: "cardDataView", first: true, predicate: ["vdcv"], descendants: true }, { propertyName: "dataView", first: true, predicate: ["vdv"], descendants: true }], ngImport: i0, template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isToggle:true\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n [showColumnChild]=\"showColumn\"\n [showSortChild]=\"showSort\"\n [showFilterChild]=\"showFilter\"\n [isTableView]=\"false\"\n [selectedFilterTableCount]=\"0\"\n [cardIcon]=\"'list-view'\"\n [tableIcon]=\"'table-view'\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data\"\n [columns]=\"filteredColumns\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"logo\">\n <ng-template #cell let-value>\n <img class=\"logo-width\" [src]=\"value\"/>\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-deleteRow let-rowIndex>\n <div class=\"flex space-x-8\" style=\"display: flex; gap: 24px\">\n <verben-svg\n (click)=\"openDetailView(value)\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n class=\"cursor-pointer\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Link\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n >\n <verben-left-card-data-view class=\"\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Link\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"vlcd.showChildren(item)\"\n [ngClass]=\"vlcd.showToggle(item) ? 'visible' : 'invisible'\"\n class=\"items-center flex pr-1 cursor-pointer\"\n [icon]=\"item.isChildrenExpanded ? 'minus' : 'plus'\"\n />\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex\">\n <span class=\"font-bold text-sm\">{{ item.data.Name }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"flex items-center justify-between gap-2\">\n <div>\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black text-xs font-semibold\">{{ item.data.Description }}</span>\n </div>\n <img class=\"logo-width\" [alt]=\"ciItem.title\" [src]=\"item.data.Logo\"/>\n </div>\n }\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-sso-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n ></lib-sso-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"float-right\">\n <div class=\"flex gap-2 mt-1\">\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button (click)=\"loadMore()\" class=\"load-more\">Load more</button>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterApplied($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-export [data]=\"data\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export>\n </div>\n </verben-data-view>\n</div>\n", styles: [".flex{display:flex}.w-full{width:100%}.bg-secondary-200{background-color:#e8eaf1}.flex-col{flex-direction:column}.items-center{align-items:center}.bg-primary{background-color:#d4a007}.border-primary{border:1px solid #d4a007}.rounded-lg{border-radius:20px}.w-3{width:6px}.rounded-tr-none{border-top-right-radius:0}.rounded-br-none{border-bottom-right-radius:0}.bg-secondary-100{background-color:#8080800e}.bg-secondary{background-color:#e8eaf1}.p-2{padding:6px}.logo-width{width:70px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "exportCustomClass", "selectCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "columnTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "showColumnChild", "showSortChild", "showFilterChild", "showExportChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i2.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied"] }, { kind: "component", type: i2.SortTableComponent, selector: "verben-sort-table", inputs: ["enableDragAndDrop", "sortOptions", "resetText", "displayedOptions", "propertyText", "showMoreText", "sortButtonText", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "containerHeight"], outputs: ["selectedOptions"] }, { kind: "component", type: i2.DataExportComponent, selector: "lib-data-export", inputs: ["data"], outputs: ["exportDataEvent"] }, { kind: "component", type: i2.VisibleColumnComponent, selector: "verben-visible-column", inputs: ["columns", "items", "enableDragAndDrop", "displayedColumns", "showMore", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "closeColumn"], outputs: ["columnsUpdated"] }, { kind: "component", type: i2.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "onItemClick", "onCardChildClick"], outputs: ["loadMoreClick"] }, { kind: "component", type: i2.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i2.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i2.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i2.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i2.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowDelete", "selectionChange"] }, { kind: "directive", type: i2.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i3.SsoFormComponent, selector: "lib-sso-form", inputs: ["currentData"], outputs: ["switchView"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
225
|
+
}
|
|
226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SsoComponent, decorators: [{
|
|
227
|
+
type: Component,
|
|
228
|
+
args: [{ selector: 'lib-sso', template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isToggle:true\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n [showColumnChild]=\"showColumn\"\n [showSortChild]=\"showSort\"\n [showFilterChild]=\"showFilter\"\n [isTableView]=\"false\"\n [selectedFilterTableCount]=\"0\"\n [cardIcon]=\"'list-view'\"\n [tableIcon]=\"'table-view'\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data\"\n [columns]=\"filteredColumns\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"logo\">\n <ng-template #cell let-value>\n <img class=\"logo-width\" [src]=\"value\"/>\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-deleteRow let-rowIndex>\n <div class=\"flex space-x-8\" style=\"display: flex; gap: 24px\">\n <verben-svg\n (click)=\"openDetailView(value)\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n class=\"cursor-pointer\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Link\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n >\n <verben-left-card-data-view class=\"\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Link\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"vlcd.showChildren(item)\"\n [ngClass]=\"vlcd.showToggle(item) ? 'visible' : 'invisible'\"\n class=\"items-center flex pr-1 cursor-pointer\"\n [icon]=\"item.isChildrenExpanded ? 'minus' : 'plus'\"\n />\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex\">\n <span class=\"font-bold text-sm\">{{ item.data.Name }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"flex items-center justify-between gap-2\">\n <div>\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black text-xs font-semibold\">{{ item.data.Description }}</span>\n </div>\n <img class=\"logo-width\" [alt]=\"ciItem.title\" [src]=\"item.data.Logo\"/>\n </div>\n }\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-sso-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n ></lib-sso-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"float-right\">\n <div class=\"flex gap-2 mt-1\">\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button (click)=\"loadMore()\" class=\"load-more\">Load more</button>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterApplied($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-export [data]=\"data\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export>\n </div>\n </verben-data-view>\n</div>\n", styles: [".flex{display:flex}.w-full{width:100%}.bg-secondary-200{background-color:#e8eaf1}.flex-col{flex-direction:column}.items-center{align-items:center}.bg-primary{background-color:#d4a007}.border-primary{border:1px solid #d4a007}.rounded-lg{border-radius:20px}.w-3{width:6px}.rounded-tr-none{border-top-right-radius:0}.rounded-br-none{border-bottom-right-radius:0}.bg-secondary-100{background-color:#8080800e}.bg-secondary{background-color:#e8eaf1}.p-2{padding:6px}.logo-width{width:70px}\n"] }]
|
|
229
|
+
}], propDecorators: { cardDataView: [{
|
|
230
|
+
type: ViewChild,
|
|
231
|
+
args: ['vdcv']
|
|
232
|
+
}], dataView: [{
|
|
233
|
+
type: ViewChild,
|
|
234
|
+
args: ['vdv']
|
|
235
|
+
}] } });
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvc3NvL3Nzby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3Nzby9zc28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBSUwsY0FBYyxHQUdmLE1BQU0sY0FBYyxDQUFDOzs7OztBQVV0QixNQUFNLE9BQU8sWUFBWTtJQUNKLFlBQVksQ0FBeUI7SUFDdEMsUUFBUSxDQUFxQjtJQUUvQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ2xCLElBQUksR0FBRyxRQUFRLENBQUM7SUFDaEIsZUFBZSxHQUFvQyxPQUFPLENBQUE7SUFDMUQsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNuQixXQUFXLEdBQW9CLElBQUksQ0FBQztJQUNwQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBRWpDLFFBQVEsR0FBZSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RSxRQUFRLEVBQUUsS0FBSztRQUNmLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFF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bEIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxVQUFVLEdBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQTtnQkFDM0IsTUFBTTtZQUNOLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsUUFBUSxHQUFDLEtBQUssQ0FBQyxLQUFLLENBQUE7Z0JBQ3pCLE1BQU07WUFDTixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBQyxLQUFLLENBQUMsS0FBSyxDQUFBO2dCQUMzQixNQUFNO1lBQ04sS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxVQUFVLEdBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQTtnQkFDM0IsTUFBTTtZQUNkO2dCQUNFLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzt3R0E5T1UsWUFBWTs0RkFBWixZQUFZLHVPQ3JCekIsNjJPQWdOQTs7NEZEM0xhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsU0FBUzs4QkFLQSxZQUFZO3NCQUE5QixTQUFTO3VCQUFDLE1BQU07Z0JBQ0MsUUFBUTtzQkFBekIsU0FBUzt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbHVtbnMgfSBmcm9tICcuL3Nzby5jb2x1bW5zJztcbmltcG9ydCB7IG1vY2tEYXRhIH0gZnJvbSAnLi9oZWxwZXInO1xuaW1wb3J0IHsgYmFzZVN0eWxlIH0gZnJvbSAnLi9iYXNlLXRhYmxlLXN0eWxlJztcbmltcG9ydCB7XG4gIENhcmREYXRhLFxuICBDYXJkRGF0YVZpZXdDb21wb25lbnQsXG4gIENvbHVtbkRlZmluaXRpb24sXG4gIERhdGFGaWx0ZXJUeXBlLFxuICBEYXRhVmlld0NvbXBvbmVudCxcbiAgSURhdGFGaWx0ZXIsXG59IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBTaW5nbGVTaWduT24gfSBmcm9tICcuLi8uLi9tb2RlbHMvc2luZ2xlLXNpZ24tb24nO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNzbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zc28uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3NvLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTc29Db21wb25lbnQge1xuICBAVmlld0NoaWxkKCd2ZGN2JykgY2FyZERhdGFWaWV3ITogQ2FyZERhdGFWaWV3Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd2ZHYnKSBkYXRhVmlldyE6IERhdGFWaWV3Q29tcG9uZW50O1xuXG4gIGNvbHVtbnMgPSBjb2x1bW5zO1xuICBkYXRhID0gbW9ja0RhdGE7XG4gIGZpbHRlcmVkQ29sdW1uczogQ29sdW1uRGVmaW5pdGlvbjxTaW5nbGVTaWduT24+W10gPWNvbHVtbnNcbiAgc3R5bGVzID0gYmFzZVN0eWxlO1xuICBjdXJyZW50RGF0YTogQ2FyZERhdGEgfCBudWxsID0gbnVsbDtcbiAgaXNHcmlkVmlldyA9IHRydWU7XG4gIHNlbGVjdGVkOiBDYXJkRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gIGNhcmREYXRhOiBDYXJkRGF0YVtdID0gbW9ja0RhdGEubWFwKCh7IE5hbWUsIERlc2NyaXB0aW9uLCBMaW5rLExvZ28gfSkgPT4gKHtcbiAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgdGl0bGU6IE5hbWUsXG4gICAgZGF0YTogeyBOYW1lLCBEZXNjcmlwdGlvbixMaW5rLExvZ28gfSBhcyBQYXJ0aWFsPFNpbmdsZVNpZ25Pbj4sXG4gICAgYm9keTogW1xuICAgICAgeyB0aXRsZTogJ0Rlc2NyaXB0aW9uJywgdmFsdWU6RGVzY3JpcHRpb24/PycnICB9LFxuICAgIF0sXG4gICAgY2hpbGRyZW46IFtdLFxuICB9KSk7XG5cbiAgb3BlbkRldGFpbFZpZXcobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY2FyZEl0ZW0gPSB0aGlzLmdldENhcmREYXRhQnlNYWlsQWRkcmVzcyhuYW1lKTtcbiAgICBpZiAoY2FyZEl0ZW0gJiYgdGhpcy5jYXJkRGF0YVZpZXcpIHtcbiAgICAgIHRoaXMuZGF0YVZpZXcudG9nZ2xlVmlldygpO1xuICAgICAgdGhpcy5jYXJkRGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiAoY2hpbGQuc2VsZWN0ZWQgPSBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY2FyZEl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jdXJyZW50RGF0YSA9IHRoaXMuY2FyZERhdGFWaWV3Lm9uSXRlbUNsaWNrKGNhcmRJdGVtKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YUJ5TWFpbEFkZHJlc3MobmFtZTogc3RyaW5nKTogQ2FyZERhdGEgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNhcmREYXRhLmZpbmQoKHsgZGF0YSB9KSA9PiBkYXRhLk5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgb25WaWV3Q2hhbmdlKGlzR3JpZFZpZXc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgaXNHcmlkVmlldz1pc0dyaWRWaWV3XG4gICAgXG4gICAgaWYgKHRoaXMuY3VycmVudERhdGEpIHtcbiAgICAgIHRoaXMuY2FyZERhdGFWaWV3Py5jbGVhckRhdGEoKTtcbiAgICAgIHRoaXMuY3VycmVudERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmNhcmREYXRhVmlldy5vbkl0ZW1DbGljayh0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRm9ybVZpZXcoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNhcmREYXRhW2luZGV4XTtcbiAgICBjb25zb2xlLmxvZygnSVRFTSA9ICcsIGl0ZW0pO1xuICB9XG5cbiAgaGFuZGxlRXhwb3J0KGV4cG9ydGVkRGF0YTogUGFydGlhbDxhbnk+W10pIHtcbiAgICBjb25zb2xlLmxvZygnRXhwb3J0ZWQgZGF0YTonLCBleHBvcnRlZERhdGEpO1xuICAgIHRoaXMuZG93bmxvYWRDU1YoZXhwb3J0ZWREYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBTaW1wbGUgY3N2IGV4cG9ydCBmb3IgdGVzdGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBkb3dubG9hZENTVihkYXRhOiBQYXJ0aWFsPGFueT5bXSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBPYmplY3Qua2V5cyhkYXRhWzBdKTtcbiAgICBjb25zdCBjc3ZDb250ZW50ID0gW1xuICAgICAgaGVhZGVycy5qb2luKCcsJyksXG4gICAgICAuLi5kYXRhLm1hcCgocm93KSA9PiBoZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiByb3dbaGVhZGVyXSkuam9pbignLCcpKSxcbiAgICBdLmpvaW4oJ1xcbicpO1xuXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZDb250ZW50XSwgeyB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnIH0pO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgaWYgKGxpbmsuZG93bmxvYWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsICdleHBvcnQuY3N2Jyk7XG4gICAgICBsaW5rLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUm93czpTaW5nbGVTaWduT25bXSkge1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3Rpb24gY2hhbmdlZDonLCBzZWxlY3RlZFJvd3MpO1xuICAgIC8vIEhhbmRsZSB0aGUgc2VsZWN0aW9uIGNoYW5nZVxuICB9XG5cbiAgLyoqXG4gICAqIENvcGllZCBvdmVyIGZyb20gY2FyZCB2aWV3IGRvYyB1bnRpbCBJIHVuZGVyc3RhbmQgdXNhZ2VcbiAgICovXG4gIHNlbGVjdGVkQ29sdW1uQ291bnQ6IG51bWJlciA9IDA7XG4gIHNlbGVjdGVkRmlsdGVyVGFibGVDb3VudDogbnVtYmVyID0gMDtcbiAgaXNPUGVuOiBib29sZWFuID0gdHJ1ZTtcbiAgc2VsZWN0ZWRTb3J0Q291bnQ6IG51bWJlciA9IDA7XG4gIHNob3dDb2x1bW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd1NvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0V4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHZpc2libGVDb2x1bW5zOiBJRGF0YUZpbHRlcltdID0gY29sdW1ucy5tYXAoKGNvbCkgPT4gKHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBuYW1lOiB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZycgPyBjb2wuaGVhZGVyIDogY29sLmlkLFxuICAgIHR5cGU6IERhdGFGaWx0ZXJUeXBlLkJvb2wsXG4gIH0pKTtcbiAgZmlsdGVyQXJyYXk6IElEYXRhRmlsdGVyW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ05hbWUnLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnRGVzY3JpcHRpb24nLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnTG9nbycsXG4gICAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsXG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdMaW5rJyxcbiAgICAgIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZyxcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0NyZWF0ZWRBdCcsXG4gICAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5EYXRlLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgXTtcbiAgc29ydE9wdGlvbnM6IElEYXRhRmlsdGVyW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ05hbWUnLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnRGVzY3JpcHRpb24nLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnTGluaycsXG4gICAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsXG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdMb2dvJyxcbiAgICAgIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZyxcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0NyZWF0ZWRBdCcsXG4gICAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5EYXRlLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgXTtcbiAgY2xlYXJEYXRhKCkge1xuICAgIHRoaXMuY3VycmVudERhdGEgPSB7fSBhcyBDYXJkRGF0YTtcbiAgfVxuICBsb2FkTW9yZSgpIHtcbiAgICB0aGlzLmNhcmREYXRhID0gdGhpcy5jYXJkRGF0YS5jb25jYXQodGhpcy5jYXJkRGF0YSk7XG4gIH1cbiAgb25Db2x1bW5DaGFuZ2UoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dDb2x1bW4gPSBldmVudDtcbiAgfVxuICBvblNvcnRDaGFuZ2UoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dTb3J0ID0gZmFsc2VcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gIH1cblxuICBcbiAgb25Db2x1bW5zVXBkYXRlZCh1cGRhdGVkQ29sdW1uczogSURhdGFGaWx0ZXJbXSkge1xuICAgIHRoaXMuc2hvd0NvbHVtbiA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Db3VudCA9IHVwZGF0ZWRDb2x1bW5zLmxlbmd0aDtcbiAgXG4gICAgaWYgKHVwZGF0ZWRDb2x1bW5zKSB7XG4gICAgICAvLyBGaWx0ZXIgY29sdW1ucyB0byBpbmNsdWRlIG9ubHkgdmlzaWJsZSBvbmVzXG4gICAgICB0aGlzLmZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKGNvbCkgPT5cbiAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucy5maW5kKFxuICAgICAgICAgIChmaWx0ZXIpID0+IGZpbHRlci5uYW1lID09PSBjb2wuaGVhZGVyICYmIGZpbHRlci5jaGVja2VkXG4gICAgICAgIClcbiAgICAgICk7XG4gIFxuICAgICAgLy8gUmVvcmRlciBjb2x1bW5zIGJhc2VkIG9uIHRoZSBvcmRlciBpbiB2aXNpYmxlQ29sdW1uc1xuICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbk9yZGVyID0gdGhpcy52aXNpYmxlQ29sdW1uc1xuICAgICAgICAuZmlsdGVyKChmaWx0ZXIpID0+IGZpbHRlci5jaGVja2VkKVxuICAgICAgICAubWFwKChmaWx0ZXIpID0+IGZpbHRlci5uYW1lKTtcbiAgXG4gICAgICB0aGlzLmNvbHVtbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBpbmRleEEgPSB2aXNpYmxlQ29sdW1uT3JkZXIuaW5kZXhPZihhLmhlYWRlciBhcyBzdHJpbmcpO1xuICAgICAgICBjb25zdCBpbmRleEIgPSB2aXNpYmxlQ29sdW1uT3JkZXIuaW5kZXhPZihiLmhlYWRlciBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIFxuICBvbkZpbHRlckFwcGxpZWQoYXBwbGllZEZpbHRlcjogSURhdGFGaWx0ZXJbXSkge1xuICAgICB0aGlzLnNob3dGaWx0ZXI9ZmFsc2VcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcHBsaWVkRmlsdGVyKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlclRhYmxlQ291bnQgPSBhcHBsaWVkRmlsdGVyLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2FwcGxpZWRGaWx0ZXIgaXMgbm90IGFuIGFycmF5Jyk7XG4gICAgfVxuICB9XG4gIFxuICBvblNvcnRVcGRhdGVkKHVwZGF0ZWRTb3J0czogSURhdGFGaWx0ZXJbXSkge1xuICAgIHRoaXMub25Tb3J0Q2hhbmdlKGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkU29ydENvdW50ID0gdXBkYXRlZFNvcnRzLmxlbmd0aDtcbiAgICBjb25zb2xlLmxvZyh1cGRhdGVkU29ydHMpO1xuICAgIFxuICB9XG5cbiAgb25TdGF0ZUNoYW5nZShldmVudDogeyBrZXk6IHN0cmluZzsgdmFsdWU6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdjb2x1bW4nOlxuICAgICAgICB0aGlzLnNob3dDb2x1bW49ZXZlbnQudmFsdWVcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NvcnQnOlxuICAgICAgICAgIHRoaXMuc2hvd1NvcnQ9ZXZlbnQudmFsdWVcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICAgICAgdGhpcy5zaG93RXhwb3J0PWV2ZW50LnZhbHVlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcic6XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0ZpbHRlcj1ldmVudC52YWx1ZVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNwYWNlLXktOFwiPlxuICA8dmVyYmVuLWRhdGEtdmlld1xuICAgICN2ZHZcbiAgICBbdmlld1N0YXRlXT1cIntcbiAgICAgICAgaXNTZWFyY2g6IHRydWUsXG4gICAgICAgIGlzQ29sdW1uOiB0cnVlLFxuICAgICAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICAgICAgaXNTb3J0OiB0cnVlLFxuICAgICAgICBpc0V4cG9ydDogdHJ1ZSxcbiAgICAgICAgaXNTZWxlY3Q6IHRydWUsXG4gICAgICAgIGlzVG9nZ2xlOnRydWVcbiAgICAgIH1cIlxuICAgIFtidXR0b25DbGFzc109XCInbXktY3VzdG9tLWJ1dHRvbi1jbGFzcydcIlxuICAgIFtpY29uQ2xhc3NdPVwiJ215LWljb24tY2xhc3MnXCJcbiAgICBbYWN0aXZlSWNvbkNsYXNzXT1cIidteS1hY3RpdmUtaWNvbi1jbGFzcydcIlxuICAgIFtzZWxlY3RlZFNvcnRDb3VudF09XCJzZWxlY3RlZFNvcnRDb3VudFwiXG4gICAgW3NlbGVjdGVkQ29sdW1uQ291bnRdPVwic2VsZWN0ZWRDb2x1bW5Db3VudFwiXG4gICAgW3NlbGVjdGVkRmlsdGVyVGFibGVDb3VudF09XCJzZWxlY3RlZEZpbHRlclRhYmxlQ291bnRcIlxuICAgIFtzaG93Q29sdW1uQ2hpbGRdPVwic2hvd0NvbHVtblwiXG4gICAgW3Nob3dTb3J0Q2hpbGRdPVwic2hvd1NvcnRcIlxuICAgIFtzaG93RmlsdGVyQ2hpbGRdPVwic2hvd0ZpbHRlclwiXG4gICAgW2lzVGFibGVWaWV3XT1cImZhbHNlXCJcbiAgICBbc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50XT1cIjBcIlxuICAgIFtjYXJkSWNvbl09XCInbGlzdC12aWV3J1wiXG4gICAgW3RhYmxlSWNvbl09XCIndGFibGUtdmlldydcIlxuICAgICh2aWV3Q2hhbmdlKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoc3RhdGVDaGFuZ2UpPVwib25TdGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXYgdGFibGUtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS10YWJsZVxuICAgICAgICBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiZmlsdGVyZWRDb2x1bW5zXCJcbiAgICAgICAgW3N0eWxlQ29uZmlnXT1cInN0eWxlc1wiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiY3JlYXRlZEF0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC12YWx1ZT5cbiAgICAgICAgICAgIHt7IHZhbHVlIHwgZGF0ZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImxvZ29cIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImxvZ28td2lkdGhcIiBbc3JjXT1cInZhbHVlXCIvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXZhbHVlIGxldC1kZWxldGVSb3cgbGV0LXJvd0luZGV4PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggc3BhY2UteC04XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDI0cHhcIj5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRldGFpbFZpZXcodmFsdWUpXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ3OUU5XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0UyMDAwMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJvdygpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICA8c3Ryb25nPkFjdGlvbnM8L3N0cm9uZz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGliLWRhdGEtdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjYXJkLWNvbnRlbnQ+XG4gICAgICA8dmVyYmVuLWNhcmQtZGF0YS12aWV3XG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEycHhcIlxuICAgICAgICAobG9hZE1vcmVDbGljayk9XCJsb2FkTW9yZSgpXCJcbiAgICAgICAgI3ZkY3ZcbiAgICAgICAgZGF0YUlkPVwiTGlua1wiXG4gICAgICAgIGJvcmRlcj1cIjVweFwiXG4gICAgICAgIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGFcIlxuICAgICAgICByYmdDb2xvcj1cIiNmNWY2ZjlcIlxuICAgICAgPlxuICAgICAgICA8dmVyYmVuLWxlZnQtY2FyZC1kYXRhLXZpZXcgY2xhc3M9XCJcIj5cbiAgICAgICAgICA8dmVyYmVuLWxlZnQtY2FyZC1kYXRhXG4gICAgICAgICAgICAjdmxjZFxuICAgICAgICAgICAgW3BhcmVudF09XCJ2ZGN2XCJcbiAgICAgICAgICAgIGRhdGFJZD1cIkxpbmtcIlxuICAgICAgICAgICAgY2xhc3M9XCJiZy1zZWNvbmRhcnktMTAwIHJvdW5kZWQteGwgYm9yZGVyLXByaW1hcnkgYm9yZGVyLVsxcHhdXCJcbiAgICAgICAgICAgIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FyZCBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiY3VycmVudERhdGEgPSB2ZGN2Lm9uSXRlbUNsaWNrKGl0ZW0pXCIgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2bGNkLnNob3dDaGlsZHJlbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ2bGNkLnNob3dUb2dnbGUoaXRlbSkgPyAndmlzaWJsZScgOiAnaW52aXNpYmxlJ1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1zLWNlbnRlciBmbGV4IHByLTEgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwiaXRlbS5pc0NoaWxkcmVuRXhwYW5kZWQgPyAnbWludXMnIDogJ3BsdXMnXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW50RGF0YSA9IHZkY3Yub25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGN1cnNvci1wb2ludGVyIHctZnVsbCBiZy1zZWNvbmRhcnkgcm91bmRlZC14bFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMyByb3VuZGVkLXhsIHJvdW5kZWQtdHItbm9uZSByb3VuZGVkLWJyLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID8gJ2JnLXByaW1hcnknIDogJ2JnLXNlY29uZGFyeS0yMDAnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBweS0yIHB4LTQgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC1zbVwiPnt7IGl0ZW0uZGF0YS5OYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY2lJdGVtIG9mIGl0ZW0uYm9keTsgdHJhY2sgY2lJdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGZvbnQtbGlnaHQgdGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID57eyBjaUl0ZW0udGl0bGUgfX06PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmxhY2sgdGV4dC14cyBmb250LXNlbWlib2xkXCI+e3sgaXRlbS5kYXRhLkRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJsb2dvLXdpZHRoXCIgW2FsdF09XCJjaUl0ZW0udGl0bGVcIiBbc3JjXT1cIml0ZW0uZGF0YS5Mb2dvXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YT5cbiAgICAgICAgPC92ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldz5cblxuICAgICAgICA8dmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGFyZW50PlxuICAgICAgICAgICAgPGxpYi1zc28tZm9ybVxuICAgICAgICAgICAgICBbY3VycmVudERhdGFdPVwiY3VycmVudERhdGFcIlxuICAgICAgICAgICAgICAoc3dpdGNoVmlldyk9XCJ2ZHYudG9nZ2xlVmlldygpXCJcbiAgICAgICAgICAgID48L2xpYi1zc28tZm9ybT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3ZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlldz5cblxuICAgICAgICA8dmVyYmVuLWNhcmQtZGF0YS12aWV3LWZvb3RlciBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgbXQtMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiXG4gICAgICAgICAgICAgID57eyBjYXJkRGF0YS5sZW5ndGggfX0gcmVjb3JkcyBsb2FkZWQ8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNb3JlKClcIiBjbGFzcz1cImxvYWQtbW9yZVwiPkxvYWQgbW9yZTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3ZlcmJlbi1jYXJkLWRhdGEtdmlldy1mb290ZXI+XG4gICAgICA8L3ZlcmJlbi1jYXJkLWRhdGEtdmlldz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNvbHVtbi1jb250ZW50PlxuICAgICAgPHZlcmJlbi12aXNpYmxlLWNvbHVtblxuICAgICAgICAoY29sdW1uc1VwZGF0ZWQpPVwib25Db2x1bW5zVXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgICBib3hTaGFkb3c9XCIycHggMnB4IDJweCAwcHggc2lsdmVyXCJcbiAgICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgICAgd2lkdGg9XCI0MDBweFwiXG4gICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgcGQ9XCIxcmVtXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICAgIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiXG4gICAgICAgIFtjb2x1bW5zXT1cInZpc2libGVDb2x1bW5zXCJcbiAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdPVwiNVwiXG4gICAgICA+PC92ZXJiZW4tdmlzaWJsZS1jb2x1bW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBmaWx0ZXItY29udGVudD5cbiAgICAgIDx2ZXJiZW4tdGFibGUtZmlsdGVyXG4gICAgICAoZmlsdGVyc0FwcGxpZWQpPVwib25GaWx0ZXJBcHBsaWVkKCRldmVudClcIlxuICAgICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgcmdiYSgyMTIsIDE2MCwgNywgMSknXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiMTBweFwiXG4gICAgICAgIGJveFNoYWRvdz1cIjJweCAycHggMnB4IDBweCBzaWx2ZXJcIlxuICAgICAgICBiZ0NvbG9yPVwid2hpdGVcIlxuICAgICAgICB3aWR0aD1cIjQyMHB4XCJcbiAgICAgICAgdGV4dENvbG9yPVwiYmxhY2tcIlxuICAgICAgICBwZD1cIjFyZW1cIlxuICAgICAgICBwcmltYXJ5Q29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3I9XCIjMzQ3OUU5XCJcbiAgICAgICAgdGVydGlhcnlDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgICBbZmlsdGVyT3B0aW9uc109XCJmaWx0ZXJBcnJheVwiXG4gICAgICAgIFttYXhGaWx0ZXJMZW5ndGhdPVwiM1wiXG4gICAgICA+PC92ZXJiZW4tdGFibGUtZmlsdGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc29ydC1jb250ZW50PlxuICAgICAgPHZlcmJlbi1zb3J0LXRhYmxlXG4gICAgICAgIChzZWxlY3RlZE9wdGlvbnMpPVwib25Tb3J0VXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgICBib3hTaGFkb3c9XCIycHggMnB4IDJweCAwcHggc2lsdmVyXCJcbiAgICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgICAgd2lkdGg9XCI0MDBweFwiXG4gICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgcGQ9XCIxcmVtXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICAgIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiXG4gICAgICAgIHRlcnRpYXJ5Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgICAgW2VuYWJsZURyYWdBbmREcm9wXT1cInRydWVcIlxuICAgICAgICBbc29ydE9wdGlvbnNdPVwic29ydE9wdGlvbnNcIlxuICAgICAgPjwvdmVyYmVuLXNvcnQtdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBleHBvcnQtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS1leHBvcnQgW2RhdGFdPVwiZGF0YVwiIChleHBvcnREYXRhRXZlbnQpPVwiaGFuZGxlRXhwb3J0KCRldmVudClcIj5cbiAgICAgIDwvbGliLWRhdGEtZXhwb3J0PlxuICAgIDwvZGl2PlxuICA8L3ZlcmJlbi1kYXRhLXZpZXc+XG48L2Rpdj5cbiJdfQ==
|