ngx-techlify-core 14.7.0 → 14.8.0

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.
Files changed (164) hide show
  1. package/esm2020/lib/access-control-config/access-control-config-form/access-control-config-form.component.mjs +127 -0
  2. package/esm2020/lib/access-control-config/access-control-config-routing.module.mjs +31 -0
  3. package/esm2020/lib/access-control-config/access-control-config.component.mjs +131 -0
  4. package/esm2020/lib/access-control-config/access-control-config.model.mjs +21 -0
  5. package/esm2020/lib/access-control-config/access-control-config.module.mjs +60 -0
  6. package/esm2020/lib/access-control-config/access-control-config.service.mjs +31 -0
  7. package/esm2020/lib/change-password/change-password-routing.module.mjs +24 -0
  8. package/esm2020/lib/change-password/change-password.component.mjs +87 -0
  9. package/esm2020/lib/change-password/change-password.module.mjs +48 -0
  10. package/esm2020/lib/entity-files/entity-files-view-all.component.mjs +7 -8
  11. package/esm2020/lib/forgot-password/forgot-password-routing.module.mjs +22 -0
  12. package/esm2020/lib/forgot-password/forgot-password.component.mjs +67 -0
  13. package/esm2020/lib/forgot-password/forgot-password.module.mjs +34 -0
  14. package/esm2020/lib/forgot-password/index.mjs +3 -0
  15. package/esm2020/lib/ip-address-selector/ip-address-selector.module.mjs +48 -0
  16. package/esm2020/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.mjs +109 -0
  17. package/esm2020/lib/login/index.mjs +3 -0
  18. package/esm2020/lib/login/login-routing.module.mjs +23 -0
  19. package/esm2020/lib/login/login.component.mjs +153 -0
  20. package/esm2020/lib/login/login.module.mjs +50 -0
  21. package/esm2020/lib/ngx-techlify-users/ngx-techlify-users-routing.module.mjs +43 -0
  22. package/esm2020/lib/ngx-techlify-users/ngx-techlify-users.module.mjs +22 -0
  23. package/esm2020/lib/password-requirement-check/password-check-result.mjs +2 -0
  24. package/esm2020/lib/password-requirement-check/password-check.service.mjs +43 -0
  25. package/esm2020/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.mjs +47 -0
  26. package/esm2020/lib/password-requirement-check/password-requirement-check.module.mjs +24 -0
  27. package/esm2020/lib/profile/index.mjs +3 -0
  28. package/esm2020/lib/profile/profile-edit.component.mjs +75 -0
  29. package/esm2020/lib/profile/profile-routing.module.mjs +23 -0
  30. package/esm2020/lib/profile/profile.module.mjs +36 -0
  31. package/esm2020/lib/restrictors/index.mjs +4 -0
  32. package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.mjs +91 -0
  33. package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.mjs +36 -0
  34. package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +19 -0
  35. package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.mjs +91 -0
  36. package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.mjs +32 -0
  37. package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +19 -0
  38. package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.mjs +92 -0
  39. package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.mjs +36 -0
  40. package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +19 -0
  41. package/esm2020/lib/restrictors/restrictor.service.mjs +19 -0
  42. package/esm2020/lib/restrictors/restrictors-form/restrictors-form.component.mjs +102 -0
  43. package/esm2020/lib/restrictors/restrictors-form-page/restrictors-form-page.component.mjs +44 -0
  44. package/esm2020/lib/restrictors/restrictors-list-page/restrictors-list-page.component.mjs +145 -0
  45. package/esm2020/lib/restrictors/restrictors-routing.module.mjs +42 -0
  46. package/esm2020/lib/restrictors/restrictors.module.mjs +99 -0
  47. package/esm2020/lib/role/index.mjs +9 -0
  48. package/esm2020/lib/role/permission/permission.model.mjs +9 -0
  49. package/esm2020/lib/role/permission/permission.module.mjs +45 -0
  50. package/esm2020/lib/role/permission/permission.routes.mjs +26 -0
  51. package/esm2020/lib/role/permission/permissions-management.component.mjs +105 -0
  52. package/esm2020/lib/role/role-form.component.mjs +99 -0
  53. package/esm2020/lib/role/role-view/role-view.component.mjs +39 -0
  54. package/esm2020/lib/role/role.model.mjs +56 -0
  55. package/esm2020/lib/role/role.module.mjs +59 -0
  56. package/esm2020/lib/role/role.routes.mjs +28 -0
  57. package/esm2020/lib/role/role.service.mjs +26 -0
  58. package/esm2020/lib/role/roles-view-all.component.mjs +131 -0
  59. package/esm2020/lib/signup/index.mjs +3 -0
  60. package/esm2020/lib/signup/signup-routing.module.mjs +22 -0
  61. package/esm2020/lib/signup/signup.component.mjs +78 -0
  62. package/esm2020/lib/signup/signup.module.mjs +34 -0
  63. package/esm2020/lib/user/current-user.service.mjs +135 -0
  64. package/esm2020/lib/user/index.mjs +8 -0
  65. package/esm2020/lib/user/user-explore.component.mjs +50 -0
  66. package/esm2020/lib/user/user-form.component.mjs +219 -0
  67. package/esm2020/lib/user/user-view.component.mjs +68 -0
  68. package/esm2020/lib/user/user.model.mjs +30 -0
  69. package/esm2020/lib/user/user.module.mjs +99 -0
  70. package/esm2020/lib/user/user.routes.mjs +29 -0
  71. package/esm2020/lib/user/user.service.mjs +31 -0
  72. package/esm2020/lib/user/users-view-all.component.mjs +208 -0
  73. package/esm2020/lib/user-config/index.mjs +3 -0
  74. package/esm2020/lib/user-config/user-config.model.mjs +50 -0
  75. package/esm2020/lib/user-config/user-config.service.mjs +65 -0
  76. package/esm2020/lib/user-selector/index.mjs +3 -0
  77. package/esm2020/lib/user-selector/user-data.service.mjs +35 -0
  78. package/esm2020/lib/user-selector/user-selector.component.mjs +91 -0
  79. package/esm2020/lib/user-selector/user-selector.module.mjs +38 -0
  80. package/esm2020/public-api.mjs +24 -1
  81. package/fesm2015/ngx-techlify-core.mjs +3791 -170
  82. package/fesm2015/ngx-techlify-core.mjs.map +1 -1
  83. package/fesm2020/ngx-techlify-core.mjs +3759 -170
  84. package/fesm2020/ngx-techlify-core.mjs.map +1 -1
  85. package/lib/access-control-config/access-control-config-form/access-control-config-form.component.d.ts +44 -0
  86. package/lib/access-control-config/access-control-config-routing.module.d.ts +7 -0
  87. package/lib/access-control-config/access-control-config.component.d.ts +31 -0
  88. package/lib/access-control-config/access-control-config.model.d.ts +17 -0
  89. package/lib/access-control-config/access-control-config.module.d.ts +18 -0
  90. package/lib/access-control-config/access-control-config.service.d.ts +13 -0
  91. package/lib/change-password/change-password-routing.module.d.ts +7 -0
  92. package/lib/change-password/change-password.component.d.ts +27 -0
  93. package/lib/change-password/change-password.module.d.ts +14 -0
  94. package/lib/forgot-password/forgot-password-routing.module.d.ts +7 -0
  95. package/lib/forgot-password/forgot-password.component.d.ts +34 -0
  96. package/lib/forgot-password/forgot-password.module.d.ts +11 -0
  97. package/lib/forgot-password/index.d.ts +2 -0
  98. package/lib/ip-address-selector/ip-address-selector.module.d.ts +14 -0
  99. package/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.d.ts +28 -0
  100. package/lib/login/index.d.ts +2 -0
  101. package/lib/login/login-routing.module.d.ts +7 -0
  102. package/lib/login/login.component.d.ts +53 -0
  103. package/lib/login/login.module.d.ts +15 -0
  104. package/lib/ngx-techlify-users/ngx-techlify-users-routing.module.d.ts +7 -0
  105. package/lib/ngx-techlify-users/ngx-techlify-users.module.d.ts +8 -0
  106. package/lib/password-requirement-check/password-check-result.d.ts +7 -0
  107. package/lib/password-requirement-check/password-check.service.d.ts +15 -0
  108. package/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.d.ts +22 -0
  109. package/lib/password-requirement-check/password-requirement-check.module.d.ts +8 -0
  110. package/lib/profile/index.d.ts +2 -0
  111. package/lib/profile/profile-edit.component.d.ts +33 -0
  112. package/lib/profile/profile-routing.module.d.ts +7 -0
  113. package/lib/profile/profile.module.d.ts +11 -0
  114. package/lib/restrictors/index.d.ts +3 -0
  115. package/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.d.ts +34 -0
  116. package/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.d.ts +11 -0
  117. package/lib/restrictors/restrictor-level-selector/restrictor-level.service.d.ts +9 -0
  118. package/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.d.ts +34 -0
  119. package/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.d.ts +10 -0
  120. package/lib/restrictors/restrictor-status-selector/restrictor-status.service.d.ts +9 -0
  121. package/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.d.ts +34 -0
  122. package/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.d.ts +11 -0
  123. package/lib/restrictors/restrictor-type-selector/restrictor-type.service.d.ts +9 -0
  124. package/lib/restrictors/restrictor.service.d.ts +9 -0
  125. package/lib/restrictors/restrictors-form/restrictors-form.component.d.ts +30 -0
  126. package/lib/restrictors/restrictors-form-page/restrictors-form-page.component.d.ts +21 -0
  127. package/lib/restrictors/restrictors-list-page/restrictors-list-page.component.d.ts +51 -0
  128. package/lib/restrictors/restrictors-routing.module.d.ts +7 -0
  129. package/lib/restrictors/restrictors.module.d.ts +28 -0
  130. package/lib/role/index.d.ts +8 -0
  131. package/lib/role/permission/permission.model.d.ts +11 -0
  132. package/lib/role/permission/permission.module.d.ts +12 -0
  133. package/lib/role/permission/permission.routes.d.ts +7 -0
  134. package/lib/role/permission/permissions-management.component.d.ts +38 -0
  135. package/lib/role/role-form.component.d.ts +34 -0
  136. package/lib/role/role-view/role-view.component.d.ts +16 -0
  137. package/lib/role/role.model.d.ts +31 -0
  138. package/lib/role/role.module.d.ts +16 -0
  139. package/lib/role/role.routes.d.ts +7 -0
  140. package/lib/role/role.service.d.ts +11 -0
  141. package/lib/role/roles-view-all.component.d.ts +40 -0
  142. package/lib/signup/index.d.ts +2 -0
  143. package/lib/signup/signup-routing.module.d.ts +7 -0
  144. package/lib/signup/signup.component.d.ts +29 -0
  145. package/lib/signup/signup.module.d.ts +11 -0
  146. package/lib/user/current-user.service.d.ts +63 -0
  147. package/lib/user/index.d.ts +7 -0
  148. package/lib/user/user-explore.component.d.ts +26 -0
  149. package/lib/user/user-form.component.d.ts +52 -0
  150. package/lib/user/user-view.component.d.ts +31 -0
  151. package/lib/user/user.model.d.ts +29 -0
  152. package/lib/user/user.module.d.ts +26 -0
  153. package/lib/user/user.routes.d.ts +7 -0
  154. package/lib/user/user.service.d.ts +13 -0
  155. package/lib/user/users-view-all.component.d.ts +56 -0
  156. package/lib/user-config/index.d.ts +2 -0
  157. package/lib/user-config/user-config.model.d.ts +50 -0
  158. package/lib/user-config/user-config.service.d.ts +14 -0
  159. package/lib/user-selector/index.d.ts +2 -0
  160. package/lib/user-selector/user-data.service.d.ts +16 -0
  161. package/lib/user-selector/user-selector.component.d.ts +29 -0
  162. package/lib/user-selector/user-selector.module.d.ts +10 -0
  163. package/package.json +1 -1
  164. package/public-api.d.ts +23 -0
@@ -0,0 +1,34 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { ForgotPasswordRoutingModule } from './forgot-password-routing.module';
5
+ import { ForgotPasswordComponent } from './forgot-password.component';
6
+ import { MaterialModule } from '../material.module';
7
+ import * as i0 from "@angular/core";
8
+ export class ForgotPasswordModule {
9
+ }
10
+ ForgotPasswordModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ ForgotPasswordModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, declarations: [ForgotPasswordComponent], imports: [CommonModule,
12
+ ReactiveFormsModule,
13
+ MaterialModule,
14
+ ForgotPasswordRoutingModule] });
15
+ ForgotPasswordModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, imports: [CommonModule,
16
+ ReactiveFormsModule,
17
+ MaterialModule,
18
+ ForgotPasswordRoutingModule] });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ForgotPasswordModule, decorators: [{
20
+ type: NgModule,
21
+ args: [{
22
+ imports: [
23
+ CommonModule,
24
+ ReactiveFormsModule,
25
+ MaterialModule,
26
+ ForgotPasswordRoutingModule
27
+ ],
28
+ declarations: [
29
+ ForgotPasswordComponent
30
+ ],
31
+ providers: []
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWVwRCxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBTDdCLHVCQUF1QixhQU52QixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCwyQkFBMkI7a0hBUWxCLG9CQUFvQixZQVg3QixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCwyQkFBMkI7MkZBUWxCLG9CQUFvQjtrQkFiaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsMkJBQTJCO3FCQUM1QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3FCQUN4QjtvQkFDRCxTQUFTLEVBQUUsRUFDVjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcmdvdFBhc3N3b3JkUm91dGluZ01vZHVsZSB9IGZyb20gJy4vZm9yZ290LXBhc3N3b3JkLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIEZvcmdvdFBhc3N3b3JkUm91dGluZ01vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGb3Jnb3RQYXNzd29yZENvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb3Jnb3RQYXNzd29yZE1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './forgot-password.component';
2
+ export * from './forgot-password-routing.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ZvcmdvdC1wYXNzd29yZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3Jnb3QtcGFzc3dvcmQtcm91dGluZy5tb2R1bGUnO1xuIl19
@@ -0,0 +1,48 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { IpRangeSelectorComponent } from './ip-range-selector/ip-range-selector.component';
4
+ import { FlexModule } from '@angular/flex-layout';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatInputModule } from '@angular/material/input';
7
+ import { MatOptionModule } from '@angular/material/core';
8
+ import { MatSelectModule } from '@angular/material/select';
9
+ import { ReactiveFormsModule } from '@angular/forms';
10
+ import * as i0 from "@angular/core";
11
+ export class IpAddressSelectorModule {
12
+ }
13
+ IpAddressSelectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ IpAddressSelectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, declarations: [IpRangeSelectorComponent], imports: [CommonModule,
15
+ FlexModule,
16
+ MatFormFieldModule,
17
+ MatInputModule,
18
+ MatOptionModule,
19
+ MatSelectModule,
20
+ ReactiveFormsModule], exports: [IpRangeSelectorComponent] });
21
+ IpAddressSelectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, imports: [CommonModule,
22
+ FlexModule,
23
+ MatFormFieldModule,
24
+ MatInputModule,
25
+ MatOptionModule,
26
+ MatSelectModule,
27
+ ReactiveFormsModule] });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpAddressSelectorModule, decorators: [{
29
+ type: NgModule,
30
+ args: [{
31
+ declarations: [
32
+ IpRangeSelectorComponent
33
+ ],
34
+ imports: [
35
+ CommonModule,
36
+ FlexModule,
37
+ MatFormFieldModule,
38
+ MatInputModule,
39
+ MatOptionModule,
40
+ MatSelectModule,
41
+ ReactiveFormsModule,
42
+ ],
43
+ exports: [
44
+ IpRangeSelectorComponent
45
+ ]
46
+ }]
47
+ }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXAtYWRkcmVzcy1zZWxlY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2lwLWFkZHJlc3Mtc2VsZWN0b3IvaXAtYWRkcmVzcy1zZWxlY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQXFCbkQsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQWZoQyx3QkFBd0IsYUFHcEIsWUFBWTtRQUNaLFVBQVU7UUFDVixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGVBQWU7UUFDZixlQUFlO1FBQ2YsbUJBQW1CLGFBR3ZCLHdCQUF3QjtxSEFHZix1QkFBdUIsWUFaNUIsWUFBWTtRQUNaLFVBQVU7UUFDVixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGVBQWU7UUFDZixlQUFlO1FBQ2YsbUJBQW1COzJGQU1kLHVCQUF1QjtrQkFqQm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHdCQUF3QjtxQkFDekI7b0JBQ0MsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDdEI7b0JBQ0gsT0FBTyxFQUFFO3dCQUNQLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElwUmFuZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vaXAtcmFuZ2Utc2VsZWN0b3IvaXAtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7RmxleE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRPcHRpb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtNYXRTZWxlY3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIElwUmFuZ2VTZWxlY3RvckNvbXBvbmVudFxuICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGbGV4TW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBdLFxuICBleHBvcnRzOiBbXG4gICAgSXBSYW5nZVNlbGVjdG9yQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSXBBZGRyZXNzU2VsZWN0b3JNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,109 @@
1
+ /* tslint:disable:component-selector radix */
2
+ import { Component, Input } from '@angular/core';
3
+ import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/flex-layout/flex";
7
+ import * as i3 from "@angular/material/form-field";
8
+ import * as i4 from "@angular/material/input";
9
+ import * as i5 from "@angular/material/core";
10
+ import * as i6 from "@angular/material/select";
11
+ import * as i7 from "@angular/forms";
12
+ export class IpRangeSelectorComponent {
13
+ constructor() {
14
+ this.label = 'IP Range';
15
+ this.subnetOptions = [
16
+ { value: 32, range: 1 },
17
+ { value: 31, range: 2 },
18
+ { value: 30, range: 4 },
19
+ { value: 29, range: 8 },
20
+ { value: 28, range: 16 },
21
+ { value: 27, range: 32 },
22
+ { value: 26, range: 64 },
23
+ { value: 25, range: 128 },
24
+ { value: 24, range: 256 },
25
+ { value: 23, range: 512 },
26
+ { value: 22, range: 1024 },
27
+ { value: 21, range: 2048 },
28
+ { value: 20, range: 4096 },
29
+ { value: 19, range: 8192 },
30
+ { value: 18, range: 16384 },
31
+ { value: 17, range: 32768 },
32
+ { value: 16, range: 65536 },
33
+ { value: 15, range: 131072 },
34
+ { value: 14, range: 262144 },
35
+ { value: 13, range: 524288 },
36
+ { value: 12, range: 1048576 },
37
+ { value: 11, range: 2096152 },
38
+ { value: 10, range: 4194304 },
39
+ { value: 9, range: 8388608 },
40
+ { value: 8, range: 16777216 },
41
+ { value: 7, range: 33554432 },
42
+ { value: 6, range: 67108864 },
43
+ { value: 5, range: 134217728 },
44
+ { value: 4, range: 268435456 },
45
+ { value: 3, range: 536870912 },
46
+ { value: 2, range: 1073741824 },
47
+ { value: 1, range: 2147483648 },
48
+ ];
49
+ this.disabled = false;
50
+ this.ipAddressControl = new FormControl('');
51
+ this.subnetControl = new FormControl(32);
52
+ this.onChange = (value) => { };
53
+ this.onTouched = () => { };
54
+ }
55
+ ngOnInit() {
56
+ this.ipAddressControl.valueChanges.subscribe(() => this.updateValue());
57
+ this.subnetControl.valueChanges.subscribe(() => this.updateValue());
58
+ }
59
+ registerOnChange(fn) {
60
+ this.onChange = fn;
61
+ }
62
+ writeValue(val) {
63
+ if (val) {
64
+ const [ipAddress, subnet] = val.split('/');
65
+ this.ipAddressControl.setValue(ipAddress);
66
+ this.subnetControl.setValue(Number.parseInt(subnet));
67
+ }
68
+ else {
69
+ this.subnetControl.setValue(32);
70
+ }
71
+ }
72
+ registerOnTouched(fn) {
73
+ this.onTouched = fn;
74
+ }
75
+ setDisabledState(isDisabled) {
76
+ this.disabled = isDisabled;
77
+ }
78
+ /**
79
+ * Update the control value.
80
+ * @private
81
+ */
82
+ updateValue() {
83
+ const ipAddress = this.ipAddressControl.value;
84
+ const subnet = this.subnetControl.value;
85
+ this.onChange(ipAddress + '/' + subnet);
86
+ this.onTouched();
87
+ }
88
+ }
89
+ IpRangeSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpRangeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
90
+ IpRangeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: IpRangeSelectorComponent, selector: "techlify-ip-range-selector", inputs: { label: "label" }, providers: [
91
+ {
92
+ provide: NG_VALUE_ACCESSOR,
93
+ multi: true,
94
+ useExisting: IpRangeSelectorComponent
95
+ }
96
+ ], ngImport: i0, template: "<div fxLayout fxLayoutGap=\"10px\" class=\"w-100\">\n <mat-form-field fxFlex=\"calc(85% - 10px)\">\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" matInput placeholder=\"IP Range\" [formControl]=\"ipAddressControl\">\n <mat-hint>\n What is the ip address or range that we should block? Format can be either a single IP like\n <code>192.175.32.133</code> OR a range specifying the subnet like <code>192.175.32.0/24</code>\n </mat-hint>\n </mat-form-field>\n <mat-form-field fxFlex=\"calc(15% - 10px)\">\n <mat-select [formControl]=\"subnetControl\">\n <mat-option *ngFor=\"let subnet of subnetOptions\" [value]=\"subnet.value\">\n /{{ subnet.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [".custom-suffix{background:gray;margin-top:-20px;position:absolute;right:0;top:20px;height:50px;border-radius:4px;padding-top:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: IpRangeSelectorComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ selector: 'techlify-ip-range-selector', providers: [
100
+ {
101
+ provide: NG_VALUE_ACCESSOR,
102
+ multi: true,
103
+ useExisting: IpRangeSelectorComponent
104
+ }
105
+ ], template: "<div fxLayout fxLayoutGap=\"10px\" class=\"w-100\">\n <mat-form-field fxFlex=\"calc(85% - 10px)\">\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" matInput placeholder=\"IP Range\" [formControl]=\"ipAddressControl\">\n <mat-hint>\n What is the ip address or range that we should block? Format can be either a single IP like\n <code>192.175.32.133</code> OR a range specifying the subnet like <code>192.175.32.0/24</code>\n </mat-hint>\n </mat-form-field>\n <mat-form-field fxFlex=\"calc(15% - 10px)\">\n <mat-select [formControl]=\"subnetControl\">\n <mat-option *ngFor=\"let subnet of subnetOptions\" [value]=\"subnet.value\">\n /{{ subnet.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [".custom-suffix{background:gray;margin-top:-20px;position:absolute;right:0;top:20px;height:50px;border-radius:4px;padding-top:20px}\n"] }]
106
+ }], ctorParameters: function () { return []; }, propDecorators: { label: [{
107
+ type: Input
108
+ }] } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXAtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9pcC1hZGRyZXNzLXNlbGVjdG9yL2lwLXJhbmdlLXNlbGVjdG9yL2lwLXJhbmdlLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaXAtYWRkcmVzcy1zZWxlY3Rvci9pcC1yYW5nZS1zZWxlY3Rvci9pcC1yYW5nZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2Q0FBNkM7QUFDN0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUF1QixXQUFXLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBY3BGLE1BQU0sT0FBTyx3QkFBd0I7SUFFbkM7UUFFUyxVQUFLLEdBQUcsVUFBVSxDQUFDO1FBRTVCLGtCQUFhLEdBQUc7WUFDZCxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUN6QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM3QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM3QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM3QixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxDQUFD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QUUsSUFBSTs0QkFDWCxXQUFXLDBCQUEwQjt5QkFDdEM7cUJBQ0Y7MEVBTVEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6Y29tcG9uZW50LXNlbGVjdG9yIHJhZGl4ICovXG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGVjaGxpZnktaXAtcmFuZ2Utc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vaXAtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pcC1yYW5nZS1zZWxlY3Rvci5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogSXBSYW5nZVNlbGVjdG9yQ29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElwUmFuZ2VTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgQElucHV0KCkgbGFiZWwgPSAnSVAgUmFuZ2UnO1xuXG4gIHN1Ym5ldE9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogMzIsIHJhbmdlOiAxIH0sXG4gICAgeyB2YWx1ZTogMzEsIHJhbmdlOiAyIH0sXG4gICAgeyB2YWx1ZTogMzAsIHJhbmdlOiA0IH0sXG4gICAgeyB2YWx1ZTogMjksIHJhbmdlOiA4IH0sXG4gICAgeyB2YWx1ZTogMjgsIHJhbmdlOiAxNiB9LFxuICAgIHsgdmFsdWU6IDI3LCByYW5nZTogMzIgfSxcbiAgICB7IHZhbHVlOiAyNiwgcmFuZ2U6IDY0IH0sXG4gICAgeyB2YWx1ZTogMjUsIHJhbmdlOiAxMjggfSxcbiAgICB7IHZhbHVlOiAyNCwgcmFuZ2U6IDI1NiB9LFxuICAgIHsgdmFsdWU6IDIzLCByYW5nZTogNTEyIH0sXG4gICAgeyB2YWx1ZTogMjIsIHJhbmdlOiAxMDI0IH0sXG4gICAgeyB2YWx1ZTogMjEsIHJhbmdlOiAyMDQ4IH0sXG4gICAgeyB2YWx1ZTogMjAsIHJhbmdlOiA0MDk2IH0sXG4gICAgeyB2YWx1ZTogMTksIHJhbmdlOiA4MTkyIH0sXG4gICAgeyB2YWx1ZTogMTgsIHJhbmdlOiAxNjM4NCB9LFxuICAgIHsgdmFsdWU6IDE3LCByYW5nZTogMzI3NjggfSxcbiAgICB7IHZhbHVlOiAxNiwgcmFuZ2U6IDY1NTM2IH0sXG4gICAgeyB2YWx1ZTogMTUsIHJhbmdlOiAxMzEwNzIgfSxcbiAgICB7IHZhbHVlOiAxNCwgcmFuZ2U6IDI2MjE0NCB9LFxuICAgIHsgdmFsdWU6IDEzLCByYW5nZTogNTI0Mjg4IH0sXG4gICAgeyB2YWx1ZTogMTIsIHJhbmdlOiAxMDQ4NTc2IH0sXG4gICAgeyB2YWx1ZTogMTEsIHJhbmdlOiAyMDk2MTUyIH0sXG4gICAgeyB2YWx1ZTogMTAsIHJhbmdlOiA0MTk0MzA0IH0sXG4gICAgeyB2YWx1ZTogOSwgcmFuZ2U6IDgzODg2MDggfSxcbiAgICB7IHZhbHVlOiA4LCByYW5nZTogMTY3NzcyMTYgfSxcbiAgICB7IHZhbHVlOiA3LCByYW5nZTogMzM1NTQ0MzIgfSxcbiAgICB7IHZhbHVlOiA2LCByYW5nZTogNjcxMDg4NjQgfSxcbiAgICB7IHZhbHVlOiA1LCByYW5nZTogMTM0MjE3NzI4IH0sXG4gICAgeyB2YWx1ZTogNCwgcmFuZ2U6IDI2ODQzNTQ1NiB9LFxuICAgIHsgdmFsdWU6IDMsIHJhbmdlOiA1MzY4NzA5MTIgfSxcbiAgICB7IHZhbHVlOiAyLCByYW5nZTogMTA3Mzc0MTgyNCB9LFxuICAgIHsgdmFsdWU6IDEsIHJhbmdlOiAyMTQ3NDgzNjQ4IH0sXG4gIF07XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIGlwQWRkcmVzc0NvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBzdWJuZXRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKDMyKTtcblxuICBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlwQWRkcmVzc0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlKCkpO1xuICAgIHRoaXMuc3VibmV0Q29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlVmFsdWUoKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHZhbCkge1xuICAgICAgY29uc3QgW2lwQWRkcmVzcywgc3VibmV0XSA9IHZhbC5zcGxpdCgnLycpO1xuICAgICAgdGhpcy5pcEFkZHJlc3NDb250cm9sLnNldFZhbHVlKGlwQWRkcmVzcyk7XG4gICAgICB0aGlzLnN1Ym5ldENvbnRyb2wuc2V0VmFsdWUoTnVtYmVyLnBhcnNlSW50KHN1Ym5ldCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1Ym5ldENvbnRyb2wuc2V0VmFsdWUoMzIpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgY29udHJvbCB2YWx1ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgaXBBZGRyZXNzID0gdGhpcy5pcEFkZHJlc3NDb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IHN1Ym5ldCA9IHRoaXMuc3VibmV0Q29udHJvbC52YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKGlwQWRkcmVzcyArICcvJyArIHN1Ym5ldCk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dCBmeExheW91dEdhcD1cIjEwcHhcIiBjbGFzcz1cInctMTAwXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg9XCJjYWxjKDg1JSAtIDEwcHgpXCI+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiSVAgUmFuZ2VcIiBbZm9ybUNvbnRyb2xdPVwiaXBBZGRyZXNzQ29udHJvbFwiPlxuICAgIDxtYXQtaGludD5cbiAgICAgIFdoYXQgaXMgdGhlIGlwIGFkZHJlc3Mgb3IgcmFuZ2UgdGhhdCB3ZSBzaG91bGQgYmxvY2s/IEZvcm1hdCBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIElQIGxpa2VcbiAgICAgIDxjb2RlPjE5Mi4xNzUuMzIuMTMzPC9jb2RlPiBPUiBhIHJhbmdlIHNwZWNpZnlpbmcgdGhlIHN1Ym5ldCBsaWtlIDxjb2RlPjE5Mi4xNzUuMzIuMC8yNDwvY29kZT5cbiAgICA8L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiY2FsYygxNSUgLSAxMHB4KVwiPlxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzdWJuZXRDb250cm9sXCI+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc3VibmV0IG9mIHN1Ym5ldE9wdGlvbnNcIiBbdmFsdWVdPVwic3VibmV0LnZhbHVlXCI+XG4gICAgICAgIC97eyBzdWJuZXQudmFsdWUgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './login.component';
2
+ export * from './login-routing.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvZ2luL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbG9naW4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4tcm91dGluZy5tb2R1bGUnO1xuIl19
@@ -0,0 +1,23 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { LoginComponent } from './login.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ const routes = [
7
+ { path: '', component: LoginComponent },
8
+ { path: ':id', component: LoginComponent }
9
+ ];
10
+ export class LoginRoutingModule {
11
+ }
12
+ LoginRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ LoginRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
14
+ LoginRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginRoutingModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ imports: [RouterModule.forChild(routes)],
19
+ exports: [RouterModule],
20
+ providers: []
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvZ2luL2xvZ2luLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRW5ELE1BQU0sTUFBTSxHQUFXO0lBQ3JCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO0lBQ3ZDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO0NBQzNDLENBQUM7QUFPRixNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0Isd0NBSG5CLFlBQVk7Z0hBR1gsa0JBQWtCLFlBSm5CLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBR1gsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2xvZ2luLmNvbXBvbmVudCc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7IHBhdGg6ICcnLCBjb21wb25lbnQ6IExvZ2luQ29tcG9uZW50IH0sXG4gIHsgcGF0aDogJzppZCcsIGNvbXBvbmVudDogTG9naW5Db21wb25lbnQgfVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Sb3V0aW5nTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,153 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component } from '@angular/core';
3
+ import { Validators, UntypedFormControl } from '@angular/forms';
4
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
5
+ import { finalize } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../core";
8
+ import * as i2 from "@angular/router";
9
+ import * as i3 from "../user";
10
+ import * as i4 from "@angular/forms";
11
+ import * as i5 from "../user-config";
12
+ import * as i6 from "@angular/common";
13
+ import * as i7 from "@angular/material/button";
14
+ import * as i8 from "@angular/material/form-field";
15
+ import * as i9 from "@angular/material/input";
16
+ import * as i10 from "@angular/material/card";
17
+ import * as i11 from "@angular/flex-layout/flex";
18
+ const errorMessages = {
19
+ email: {
20
+ required: 'Email is required',
21
+ email: 'Invalid email'
22
+ },
23
+ password: {
24
+ required: 'Password is required'
25
+ }
26
+ };
27
+ let LoginComponent = class LoginComponent {
28
+ constructor(http, alerter, router, authService, config, currentUserService, errorService, storage, credentialService, fb, formValidatorService, route, userConfigService) {
29
+ this.http = http;
30
+ this.alerter = alerter;
31
+ this.router = router;
32
+ this.authService = authService;
33
+ this.config = config;
34
+ this.currentUserService = currentUserService;
35
+ this.errorService = errorService;
36
+ this.storage = storage;
37
+ this.credentialService = credentialService;
38
+ this.fb = fb;
39
+ this.formValidatorService = formValidatorService;
40
+ this.route = route;
41
+ this.userConfigService = userConfigService;
42
+ this.isWorking = false;
43
+ this.loginForm = fb.group({
44
+ email: new UntypedFormControl('', [Validators.required, Validators.email]),
45
+ password: new UntypedFormControl('', Validators.required),
46
+ });
47
+ this.userConfig = this.userConfigService.getConfig();
48
+ }
49
+ ngOnInit() {
50
+ this.route.queryParams.subscribe(params => {
51
+ if (params.access_token) {
52
+ const authData = {
53
+ access_token: params.access_token,
54
+ expires_in: params.expires_in,
55
+ refresh_token: ''
56
+ };
57
+ authData.expires_in = authData.expires_in * 1000;
58
+ this.credentialService.setCredentials({ user: {}, token: authData }, true);
59
+ this.loadUser();
60
+ }
61
+ });
62
+ if (this.credentialService.isAuthenticated) {
63
+ this.router.navigate(['/dashboard']);
64
+ }
65
+ /* Lets clear all localstorage items */
66
+ this.storage.removeItem('currentModule');
67
+ this.storage.removeItem('currentUser');
68
+ }
69
+ login() {
70
+ if (!this.loginForm.valid) {
71
+ return;
72
+ }
73
+ this.isWorking = true;
74
+ // reset login error
75
+ this.loginError = null;
76
+ const data = {
77
+ client_id: 2,
78
+ client_secret: this.config.getAuthClientSecret(),
79
+ grant_type: this.config.getAuthGrantType(),
80
+ username: this.loginForm.value.email,
81
+ password: this.loginForm.value.password,
82
+ remember: true
83
+ };
84
+ this.credentialService.setCredentials();
85
+ const login$ = this.authService.login(data);
86
+ login$.pipe(finalize(() => this.isWorking = false), untilDestroyed(this)).subscribe(credentials => {
87
+ this.router.navigate([this.route.snapshot.queryParams.redirect || 'dashboard'], { replaceUrl: true });
88
+ }, error => {
89
+ this.handleLoginErrors(error);
90
+ });
91
+ }
92
+ loadUser() {
93
+ /* Lets load the current user */
94
+ this.currentUserService.getUserObservable(true).subscribe(user => {
95
+ if (!this.userConfig.allowAllUsersToLogin) {
96
+ if ((!this.userConfig.allowAppAdminLogin && user.user_type_id == 1) || (this.userConfig.allowAppAdminLogin && user.user_type_id != 1)) {
97
+ this.alerter.addAlert('Sorry, you\'re not allowed access to this app. ', 'warning');
98
+ this.authService.logout();
99
+ return;
100
+ }
101
+ }
102
+ this.alerter.addAlert('Successfully Logged In. You will be taken to the dashboard in a moment. ', 'success');
103
+ const credentials = this.credentialService.credentials;
104
+ credentials.user = user;
105
+ this.credentialService.setCredentials(credentials, true);
106
+ this.user = user;
107
+ if ((!this.userConfig.loginWithoutSubscription) && !this.user.client.subscriptions.length) {
108
+ this.router.navigate(['/module/subscriptions']);
109
+ }
110
+ else if (this.user.temporarily_invited) {
111
+ this.router.navigate(['/profile-edit']);
112
+ }
113
+ else if (this.user.is_temporary_password) {
114
+ this.router.navigate(['/user/change-password']);
115
+ }
116
+ else {
117
+ this.router.navigate(['/dashboard']);
118
+ }
119
+ });
120
+ }
121
+ redirect(provider) {
122
+ window.location.href = this.userConfig.socialLoginRedirectUrl + provider;
123
+ }
124
+ /** Method to evaluate form fields*/
125
+ isFieldValid(field) {
126
+ return this.formValidatorService.isFieldValid(field, this.loginForm);
127
+ }
128
+ /** Method to find error in form fields*/
129
+ getErrorMessage(field) {
130
+ return this.formValidatorService.getErrorMessage(field, this.loginForm, errorMessages);
131
+ }
132
+ /**
133
+ * Handle the login errors.
134
+ *
135
+ * @param errorObj
136
+ * @private
137
+ */
138
+ handleLoginErrors(errorObj) {
139
+ const { error, error_description } = errorObj?.error;
140
+ this.loginError = { type: error, message: error_description };
141
+ }
142
+ };
143
+ LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginComponent, deps: [{ token: i1.HttpService }, { token: i1.AlertService }, { token: i2.Router }, { token: i1.AuthenticationService }, { token: i1.ConfigService }, { token: i3.CurrentUserService }, { token: i1.ErrorHandlerService }, { token: i1.StorageService }, { token: i1.CredentialsService }, { token: i4.UntypedFormBuilder }, { token: i1.FormValidatorService }, { token: i2.ActivatedRoute }, { token: i5.UserConfigService }], target: i0.ɵɵFactoryTarget.Component });
144
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LoginComponent, selector: "login", ngImport: i0, template: "<div class=\"h-100\"\n fxLayout fxLayoutAlign=\"center center\"\n style=\"background: #fafafa;\">\n <mat-card fxFlex=\"30%\" class=\"mb-3 mt-3\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" alt=\"Logo\"/>\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\">\n <h4 class=\"section-title text-center mt-4\">LOGIN</h4>\n <form [formGroup]=\"loginForm\"\n (ngSubmit)=\"login()\"\n fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"10px\">\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input matInput\n formControlName=\"email\"\n placeholder=\"Email\"\n type=\"email\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Password</mat-label>\n <input matInput\n formControlName=\"password\"\n placeholder=\"Password\"\n type=\"password\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('password')\">{{getErrorMessage('password')}}</mat-error>\n </mat-form-field>\n\n <div class=\"alert alert-danger\" *ngIf=\"loginError\">\n <p class=\"mb-0\">{{ loginError?.message }}</p>\n </div>\n\n <button mat-raised-button color=\"primary\" class=\"w-100\" type=\"submit\" [disabled]=\"isWorking\">\n LOGIN\n </button>\n\n <div class=\"mt-2\" *ngIf=\"userConfig.showSocialLogin\">\n <button class=\"w-100 google-button mb-2\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('google')\">Google</button>\n\n <button class=\"w-100 facebook-button\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('facebook')\">Facebook</button>\n </div>\n <div class=\"mt-2 mb-4 text-center\"\n *ngIf=\"userConfig.showForgotPassword\">\n <a href=\"javascript:;\" [routerLink]=\"['/forgot-password']\">Forgot password?</a>\n </div>\n </form>\n </div>\n\n <div class=\"mt-3 p-0 mr-0 ml-0\" *ngIf=\"userConfig.showSignup\">\n <p>New to {{ userConfig.appName }}?</p>\n <button mat-raised-button class=\"w-100\" color=\"accent\" type=\"button\"\n [routerLink]=\"['/signup']\">\n Create an account\n </button>\n </div>\n </mat-card>\n</div>\n", styles: ["#login-form-wrapper{margin-top:40px}#login-form-wrapper .branding-block{margin-bottom:60px}#login-form-wrapper .techlify-logo{height:40px;padding-right:10px;bottom:10px;position:relative}#login-form-wrapper .company-name{margin-bottom:0}#login-form-wrapper .google-button{background:#ce1d1d;color:#fff}#login-form-wrapper .facebook-button{background:#38388e;color:#fff}:host{width:100%}.white-box{background-color:#fff;padding:10px}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i2.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i11.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
145
+ LoginComponent = __decorate([
146
+ UntilDestroy()
147
+ ], LoginComponent);
148
+ export { LoginComponent };
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginComponent, decorators: [{
150
+ type: Component,
151
+ args: [{ selector: 'login', template: "<div class=\"h-100\"\n fxLayout fxLayoutAlign=\"center center\"\n style=\"background: #fafafa;\">\n <mat-card fxFlex=\"30%\" class=\"mb-3 mt-3\">\n <header class=\"branding-block mb-0 mt-4\">\n <div class=\"branding text-center\">\n <a *ngIf=\"userConfig.appLogoUrl\" href=\"{{userConfig.appUrl}}\" target=\"_blank\">\n <img class=\"techlify-logo d-inline-block\" [src]=\"userConfig.appLogoUrl\" alt=\"Logo\"/>\n </a>\n </div>\n <div class=\"product-info text-center mt-2\">\n <h3 class=\"product-name\">{{ userConfig.appName }}</h3>\n </div>\n </header>\n\n <div id=\"login-form-wrapper\">\n <h4 class=\"section-title text-center mt-4\">LOGIN</h4>\n <form [formGroup]=\"loginForm\"\n (ngSubmit)=\"login()\"\n fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"10px\">\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input matInput\n formControlName=\"email\"\n placeholder=\"Email\"\n type=\"email\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Password</mat-label>\n <input matInput\n formControlName=\"password\"\n placeholder=\"Password\"\n type=\"password\"\n autocomplete=\"off\"\n required />\n <mat-error *ngIf=\"isFieldValid('password')\">{{getErrorMessage('password')}}</mat-error>\n </mat-form-field>\n\n <div class=\"alert alert-danger\" *ngIf=\"loginError\">\n <p class=\"mb-0\">{{ loginError?.message }}</p>\n </div>\n\n <button mat-raised-button color=\"primary\" class=\"w-100\" type=\"submit\" [disabled]=\"isWorking\">\n LOGIN\n </button>\n\n <div class=\"mt-2\" *ngIf=\"userConfig.showSocialLogin\">\n <button class=\"w-100 google-button mb-2\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('google')\">Google</button>\n\n <button class=\"w-100 facebook-button\"\n mat-raised-button type=\"button\"\n (click)=\"redirect('facebook')\">Facebook</button>\n </div>\n <div class=\"mt-2 mb-4 text-center\"\n *ngIf=\"userConfig.showForgotPassword\">\n <a href=\"javascript:;\" [routerLink]=\"['/forgot-password']\">Forgot password?</a>\n </div>\n </form>\n </div>\n\n <div class=\"mt-3 p-0 mr-0 ml-0\" *ngIf=\"userConfig.showSignup\">\n <p>New to {{ userConfig.appName }}?</p>\n <button mat-raised-button class=\"w-100\" color=\"accent\" type=\"button\"\n [routerLink]=\"['/signup']\">\n Create an account\n </button>\n </div>\n </mat-card>\n</div>\n", styles: ["#login-form-wrapper{margin-top:40px}#login-form-wrapper .branding-block{margin-bottom:60px}#login-form-wrapper .techlify-logo{height:40px;padding-right:10px;bottom:10px;position:relative}#login-form-wrapper .company-name{margin-bottom:0}#login-form-wrapper .google-button{background:#ce1d1d;color:#fff}#login-form-wrapper .facebook-button{background:#38388e;color:#fff}:host{width:100%}.white-box{background-color:#fff;padding:10px}\n"] }]
152
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i1.AlertService }, { type: i2.Router }, { type: i1.AuthenticationService }, { type: i1.ConfigService }, { type: i3.CurrentUserService }, { type: i1.ErrorHandlerService }, { type: i1.StorageService }, { type: i1.CredentialsService }, { type: i4.UntypedFormBuilder }, { type: i1.FormValidatorService }, { type: i2.ActivatedRoute }, { type: i5.UserConfigService }]; } });
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvZ2luL2xvZ2luLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPbEQsT0FBTyxFQUF3QyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUkxQyxNQUFNLGFBQWEsR0FBUTtJQUN6QixLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLEtBQUssRUFBRSxlQUFlO0tBQ3ZCO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLHNCQUFzQjtLQUNqQztDQUNGLENBQUM7SUFTVyxjQUFjLFNBQWQsY0FBYztJQU96QixZQUNVLElBQWlCLEVBQ2pCLE9BQXFCLEVBQ3JCLE1BQWMsRUFDZCxXQUFrQyxFQUNsQyxNQUFxQixFQUN0QixrQkFBc0MsRUFDckMsWUFBaUMsRUFDakMsT0FBdUIsRUFDdkIsaUJBQXFDLEVBQ3JDLEVBQXNCLEVBQ3RCLG9CQUEwQyxFQUMxQyxLQUFxQixFQUN0QixpQkFBb0M7UUFabkMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0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QyxLQUFhO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUIsQ0FBQyxRQUFhO1FBQ3JDLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2hFLENBQUM7Q0FDRixDQUFBOzJHQXpJWSxjQUFjOytGQUFkLGNBQWMsNkNDbEMzQiw2NkZBMEVBO0FEeENhLGNBQWM7SUFQMUIsWUFBWSxFQUFFO0dBT0YsY0FBYyxDQXlJMUI7U0F6SVksY0FBYzsyRkFBZCxjQUFjO2tCQU4xQixTQUFTOytCQUVFLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIEZvcm1WYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5cbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBVc2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZyB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgQ3JlZGVudGlhbHNTZXJ2aWNlLCBFcnJvckhhbmRsZXJTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi91c2VyJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXInO1xuXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XG4gIGVtYWlsOiB7XG4gICAgcmVxdWlyZWQ6ICdFbWFpbCBpcyByZXF1aXJlZCcsXG4gICAgZW1haWw6ICdJbnZhbGlkIGVtYWlsJ1xuICB9LFxuICBwYXNzd29yZDoge1xuICAgIHJlcXVpcmVkOiAnUGFzc3dvcmQgaXMgcmVxdWlyZWQnXG4gIH1cbn07XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdXNlcjogVXNlcjtcbiAgaXNXb3JraW5nID0gZmFsc2U7XG4gIGxvZ2luRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgdXNlckNvbmZpZzogTXVsdGlVc2VyQ29uZmlnO1xuICBsb2dpbkVycm9yOiB7IHR5cGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0ZXI6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBwdWJsaWMgY3VycmVudFVzZXJTZXJ2aWNlOiBDdXJyZW50VXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2U6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxTZXJ2aWNlOiBDcmVkZW50aWFsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyB1c2VyQ29uZmlnU2VydmljZTogVXNlckNvbmZpZ1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMubG9naW5Gb3JtID0gZmIuZ3JvdXAoe1xuICAgICAgZW1haWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSksXG4gICAgICBwYXNzd29yZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG4gICAgdGhpcy51c2VyQ29uZmlnID0gdGhpcy51c2VyQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKFxuICAgICAgcGFyYW1zID0+IHtcbiAgICAgICAgaWYgKHBhcmFtcy5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgICBjb25zdCBhdXRoRGF0YSA9IHtcbiAgICAgICAgICAgIGFjY2Vzc190b2tlbjogcGFyYW1zLmFjY2Vzc190b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNfaW46IHBhcmFtcy5leHBpcmVzX2luLFxuICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogJydcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF1dGhEYXRhLmV4cGlyZXNfaW4gPSBhdXRoRGF0YS5leHBpcmVzX2luICogMTAwMDtcbiAgICAgICAgICB0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLnNldENyZWRlbnRpYWxzKHsgdXNlcjoge30sIHRva2VuOiBhdXRoRGF0YSB9LCB0cnVlKTtcbiAgICAgICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZGFzaGJvYXJkJ10pO1xuICAgIH1cbiAgICAvKiBMZXRzIGNsZWFyIGFsbCBsb2NhbHN0b3JhZ2UgaXRlbXMgKi9cbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnY3VycmVudE1vZHVsZScpO1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKCdjdXJyZW50VXNlcicpO1xuICB9XG5cbiAgbG9naW4oKSB7XG4gICAgaWYgKCF0aGlzLmxvZ2luRm9ybS52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgLy8gcmVzZXQgbG9naW4gZXJyb3JcbiAgICB0aGlzLmxvZ2luRXJyb3IgPSBudWxsO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGNsaWVudF9pZDogMixcbiAgICAgIGNsaWVudF9zZWNyZXQ6IHRoaXMuY29uZmlnLmdldEF1dGhDbGllbnRTZWNyZXQoKSxcbiAgICAgIGdyYW50X3R5cGU6IHRoaXMuY29uZmlnLmdldEF1dGhHcmFudFR5cGUoKSxcbiAgICAgIHVzZXJuYW1lOiB0aGlzLmxvZ2luRm9ybS52YWx1ZS5lbWFpbCxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmxvZ2luRm9ybS52YWx1ZS5wYXNzd29yZCxcbiAgICAgIHJlbWVtYmVyOiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLnNldENyZWRlbnRpYWxzKCk7XG4gICAgY29uc3QgbG9naW4kID0gdGhpcy5hdXRoU2VydmljZS5sb2dpbihkYXRhKTtcbiAgICBsb2dpbiQucGlwZShcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNXb3JraW5nID0gZmFsc2UpLFxuICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICApLnN1YnNjcmliZShjcmVkZW50aWFscyA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5yZWRpcmVjdCB8fCAnZGFzaGJvYXJkJ10sIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxvZ2luRXJyb3JzKGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbG9hZFVzZXIoKSB7XG4gICAgLyogTGV0cyBsb2FkIHRoZSBjdXJyZW50IHVzZXIgKi9cbiAgICB0aGlzLmN1cnJlbnRVc2VyU2VydmljZS5nZXRVc2VyT2JzZXJ2YWJsZSh0cnVlKS5zdWJzY3JpYmUoXG4gICAgICB1c2VyID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXJDb25maWcuYWxsb3dBbGxVc2Vyc1RvTG9naW4pIHtcbiAgICAgICAgICBpZiAoKCF0aGlzLnVzZXJDb25maWcuYWxsb3dBcHBBZG1pbkxvZ2luICYmIHVzZXIudXNlcl90eXBlX2lkID09IDEpIHx8ICh0aGlzLnVzZXJDb25maWcuYWxsb3dBcHBBZG1pbkxvZ2luICYmIHVzZXIudXNlcl90eXBlX2lkICE9IDEpKSB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0ZXIuYWRkQWxlcnQoJ1NvcnJ5LCB5b3VcXCdyZSBub3QgYWxsb3dlZCBhY2Nlc3MgdG8gdGhpcyBhcHAuICcsICd3YXJuaW5nJyk7XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxlcnRlci5hZGRBbGVydCgnU3VjY2Vzc2Z1bGx5IExvZ2dlZCBJbi4gWW91IHdpbGwgYmUgdGFrZW4gdG8gdGhlIGRhc2hib2FyZCBpbiBhIG1vbWVudC4gJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSB0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlLmNyZWRlbnRpYWxzO1xuICAgICAgICBjcmVkZW50aWFscy51c2VyID0gdXNlcjtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFsU2VydmljZS5zZXRDcmVkZW50aWFscyhjcmVkZW50aWFscywgdHJ1ZSk7XG4gICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgIGlmICgoIXRoaXMudXNlckNvbmZpZy5sb2dpbldpdGhvdXRTdWJzY3JpcHRpb24pICYmICF0aGlzLnVzZXIuY2xpZW50LnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbW9kdWxlL3N1YnNjcmlwdGlvbnMnXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy51c2VyLnRlbXBvcmFyaWx5X2ludml0ZWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcm9maWxlLWVkaXQnXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy51c2VyLmlzX3RlbXBvcmFyeV9wYXNzd29yZCkge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3VzZXIvY2hhbmdlLXBhc3N3b3JkJ10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZCddKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICByZWRpcmVjdChwcm92aWRlcikge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy51c2VyQ29uZmlnLnNvY2lhbExvZ2luUmVkaXJlY3RVcmwgKyBwcm92aWRlcjtcbiAgfVxuXG4gIC8qKiBNZXRob2QgdG8gZXZhbHVhdGUgZm9ybSBmaWVsZHMqL1xuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChmaWVsZCwgdGhpcy5sb2dpbkZvcm0pO1xuICB9XG5cbiAgLyoqIE1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZmllbGQsIHRoaXMubG9naW5Gb3JtLCBlcnJvck1lc3NhZ2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIGxvZ2luIGVycm9ycy5cbiAgICpcbiAgICogQHBhcmFtIGVycm9yT2JqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUxvZ2luRXJyb3JzKGVycm9yT2JqOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB7IGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbiB9ID0gZXJyb3JPYmo/LmVycm9yO1xuICAgIHRoaXMubG9naW5FcnJvciA9IHsgdHlwZTogZXJyb3IsIG1lc3NhZ2U6IGVycm9yX2Rlc2NyaXB0aW9uIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLTEwMFwiXG4gICAgIGZ4TGF5b3V0IGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCJcbiAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmFmYWZhO1wiPlxuICA8bWF0LWNhcmQgZnhGbGV4PVwiMzAlXCIgY2xhc3M9XCJtYi0zIG10LTNcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiYnJhbmRpbmctYmxvY2sgbWItMCBtdC00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnJhbmRpbmcgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGEgKm5nSWY9XCJ1c2VyQ29uZmlnLmFwcExvZ29VcmxcIiBocmVmPVwie3t1c2VyQ29uZmlnLmFwcFVybH19XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInRlY2hsaWZ5LWxvZ28gZC1pbmxpbmUtYmxvY2tcIiBbc3JjXT1cInVzZXJDb25maWcuYXBwTG9nb1VybFwiICBhbHQ9XCJMb2dvXCIvPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWluZm8gdGV4dC1jZW50ZXIgbXQtMlwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJwcm9kdWN0LW5hbWVcIj57eyB1c2VyQ29uZmlnLmFwcE5hbWUgfX08L2gzPlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8ZGl2IGlkPVwibG9naW4tZm9ybS13cmFwcGVyXCI+XG4gICAgICA8aDQgY2xhc3M9XCJzZWN0aW9uLXRpdGxlIHRleHQtY2VudGVyIG10LTRcIj5MT0dJTjwvaDQ+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiXG4gICAgICAgICAgICAobmdTdWJtaXQpPVwibG9naW4oKVwiXG4gICAgICAgICAgICBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydFwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5FbWFpbDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW1haWxcIlxuICAgICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICByZXF1aXJlZCAvPlxuICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ2VtYWlsJylcIj57e2dldEVycm9yTWVzc2FnZSgnZW1haWwnKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWxhYmVsPlBhc3N3b3JkPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgIHJlcXVpcmVkIC8+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncGFzc3dvcmQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKCdwYXNzd29yZCcpfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgKm5nSWY9XCJsb2dpbkVycm9yXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgbG9naW5FcnJvcj8ubWVzc2FnZSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInctMTAwXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIj5cbiAgICAgICAgICBMT0dJTlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwidXNlckNvbmZpZy5zaG93U29jaWFsTG9naW5cIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidy0xMDAgZ29vZ2xlLWJ1dHRvbiBtYi0yXCJcbiAgICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZGlyZWN0KCdnb29nbGUnKVwiPkdvb2dsZTwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInctMTAwIGZhY2Vib29rLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWRpcmVjdCgnZmFjZWJvb2snKVwiPkZhY2Vib29rPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBtYi00IHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAqbmdJZj1cInVzZXJDb25maWcuc2hvd0ZvcmdvdFBhc3N3b3JkXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIFtyb3V0ZXJMaW5rXT1cIlsnL2ZvcmdvdC1wYXNzd29yZCddXCI+Rm9yZ290IHBhc3N3b3JkPzwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMyBwLTAgbXItMCBtbC0wXCIgKm5nSWY9XCJ1c2VyQ29uZmlnLnNob3dTaWdudXBcIj5cbiAgICAgIDxwPk5ldyB0byB7eyB1c2VyQ29uZmlnLmFwcE5hbWUgfX0/PC9wPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cInctMTAwXCIgY29sb3I9XCJhY2NlbnRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9zaWdudXAnXVwiPlxuICAgICAgICAgIENyZWF0ZSBhbiBhY2NvdW50XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2FyZD5cbjwvZGl2PlxuIl19
@@ -0,0 +1,50 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { LoginRoutingModule } from './login-routing.module';
5
+ import { LoginComponent } from './login.component';
6
+ import { MaterialModule } from '../material.module';
7
+ import { MatFormFieldModule } from '@angular/material/form-field';
8
+ import { MatButtonModule } from '@angular/material/button';
9
+ import { FlexModule } from '@angular/flex-layout';
10
+ import { MatCardModule } from '@angular/material/card';
11
+ import * as i0 from "@angular/core";
12
+ export class LoginModule {
13
+ }
14
+ LoginModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ LoginModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, declarations: [LoginComponent], imports: [CommonModule,
16
+ ReactiveFormsModule,
17
+ MaterialModule,
18
+ LoginRoutingModule,
19
+ MatFormFieldModule,
20
+ MatButtonModule,
21
+ FlexModule,
22
+ MatCardModule] });
23
+ LoginModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, imports: [CommonModule,
24
+ ReactiveFormsModule,
25
+ MaterialModule,
26
+ LoginRoutingModule,
27
+ MatFormFieldModule,
28
+ MatButtonModule,
29
+ FlexModule,
30
+ MatCardModule] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LoginModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ imports: [
35
+ CommonModule,
36
+ ReactiveFormsModule,
37
+ MaterialModule,
38
+ LoginRoutingModule,
39
+ MatFormFieldModule,
40
+ MatButtonModule,
41
+ FlexModule,
42
+ MatCardModule
43
+ ],
44
+ declarations: [
45
+ LoginComponent
46
+ ],
47
+ providers: [],
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9sb2dpbi9sb2dpbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFrQnJELE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBTHBCLGNBQWMsYUFWZCxZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixVQUFVO1FBQ1YsYUFBYTt5R0FRSixXQUFXLFlBZnBCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLFVBQVU7UUFDVixhQUFhOzJGQVFKLFdBQVc7a0JBakJ2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGFBQWE7cUJBQ2Q7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGNBQWM7cUJBQ2Y7b0JBQ0QsU0FBUyxFQUFFLEVBQ1Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dpblJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2xvZ2luLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IExvZ2luQ29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge0ZsZXhNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7TWF0Q2FyZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgTG9naW5Sb3V0aW5nTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgRmxleE1vZHVsZSxcbiAgICBNYXRDYXJkTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIExvZ2luQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbk1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ const routes = [
6
+ {
7
+ path: '', redirectTo: 'users', pathMatch: 'full'
8
+ },
9
+ {
10
+ path: 'users',
11
+ loadChildren: () => import('../user/user.module').then(mod => mod.UserModule)
12
+ },
13
+ {
14
+ path: 'roles',
15
+ loadChildren: () => import('../role/role.module').then(mod => mod.RoleModule)
16
+ },
17
+ {
18
+ path: 'role-permissions',
19
+ loadChildren: () => import('../role/permission/permission.module').then(mod => mod.PermissionModule),
20
+ },
21
+ {
22
+ path: 'configurations',
23
+ loadChildren: () => import('../access-control-config/access-control-config.module')
24
+ .then(mod => mod.AccessControlConfigModule)
25
+ },
26
+ {
27
+ path: 'restrictors',
28
+ loadChildren: () => import('../restrictors/restrictors.module').then(mod => mod.RestrictorsModule)
29
+ }
30
+ ];
31
+ export class NgxTechlifyUsersRoutingModule {
32
+ }
33
+ NgxTechlifyUsersRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
34
+ NgxTechlifyUsersRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
35
+ NgxTechlifyUsersRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersRoutingModule, decorators: [{
37
+ type: NgModule,
38
+ args: [{
39
+ imports: [RouterModule.forChild(routes)],
40
+ exports: [RouterModule]
41
+ }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlY2hsaWZ5LXVzZXJzLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9uZ3gtdGVjaGxpZnktdXNlcnMvbmd4LXRlY2hsaWZ5LXVzZXJzLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFdkQsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU07S0FDakQ7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7S0FDOUU7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7S0FDOUU7SUFDRDtRQUNFLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztLQUNyRztJQUNEO1FBQ0UsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHVEQUF1RCxDQUFDO2FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztLQUM5QztJQUNEO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztLQUNuRztDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sNkJBQTZCOzswSEFBN0IsNkJBQTZCOzJIQUE3Qiw2QkFBNkIsd0NBRjlCLFlBQVk7MkhBRVgsNkJBQTZCLFlBSDlCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBRVgsNkJBQTZCO2tCQUp6QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLCByZWRpcmVjdFRvOiAndXNlcnMnLCBwYXRoTWF0Y2g6ICdmdWxsJ1xuICB9LFxuICB7XG4gICAgcGF0aDogJ3VzZXJzJyxcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi4vdXNlci91c2VyLm1vZHVsZScpLnRoZW4obW9kID0+IG1vZC5Vc2VyTW9kdWxlKVxuICB9LFxuICB7XG4gICAgcGF0aDogJ3JvbGVzJyxcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi4vcm9sZS9yb2xlLm1vZHVsZScpLnRoZW4obW9kID0+IG1vZC5Sb2xlTW9kdWxlKVxuICB9LFxuICB7XG4gICAgcGF0aDogJ3JvbGUtcGVybWlzc2lvbnMnLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuLi9yb2xlL3Blcm1pc3Npb24vcGVybWlzc2lvbi5tb2R1bGUnKS50aGVuKG1vZCA9PiBtb2QuUGVybWlzc2lvbk1vZHVsZSksXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnY29uZmlndXJhdGlvbnMnLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuLi9hY2Nlc3MtY29udHJvbC1jb25maWcvYWNjZXNzLWNvbnRyb2wtY29uZmlnLm1vZHVsZScpXG4gICAgICAudGhlbihtb2QgPT4gbW9kLkFjY2Vzc0NvbnRyb2xDb25maWdNb2R1bGUpXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAncmVzdHJpY3RvcnMnLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuLi9yZXN0cmljdG9ycy9yZXN0cmljdG9ycy5tb2R1bGUnKS50aGVuKG1vZCA9PiBtb2QuUmVzdHJpY3RvcnNNb2R1bGUpXG4gIH1cbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE5neFRlY2hsaWZ5VXNlcnNSb3V0aW5nTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgxTechlifyUsersRoutingModule } from './ngx-techlify-users-routing.module';
4
+ import * as i0 from "@angular/core";
5
+ export class NgxTechlifyUsersModule {
6
+ }
7
+ NgxTechlifyUsersModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ NgxTechlifyUsersModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, imports: [CommonModule,
9
+ NgxTechlifyUsersRoutingModule] });
10
+ NgxTechlifyUsersModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, imports: [CommonModule,
11
+ NgxTechlifyUsersRoutingModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyUsersModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [],
16
+ imports: [
17
+ CommonModule,
18
+ NgxTechlifyUsersRoutingModule
19
+ ]
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlY2hsaWZ5LXVzZXJzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvbmd4LXRlY2hsaWZ5LXVzZXJzL25neC10ZWNobGlmeS11c2Vycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBU3BGLE1BQU0sT0FBTyxzQkFBc0I7O21IQUF0QixzQkFBc0I7b0hBQXRCLHNCQUFzQixZQUovQixZQUFZO1FBQ1osNkJBQTZCO29IQUdwQixzQkFBc0IsWUFKL0IsWUFBWTtRQUNaLDZCQUE2QjsyRkFHcEIsc0JBQXNCO2tCQVBsQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWiw2QkFBNkI7cUJBQzlCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE5neFRlY2hsaWZ5VXNlcnNSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9uZ3gtdGVjaGxpZnktdXNlcnMtcm91dGluZy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5neFRlY2hsaWZ5VXNlcnNSb3V0aW5nTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4VGVjaGxpZnlVc2Vyc01vZHVsZSB7IH1cbiJdfQ==