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.
- package/esm2020/lib/access-control-config/access-control-config-form/access-control-config-form.component.mjs +127 -0
- package/esm2020/lib/access-control-config/access-control-config-routing.module.mjs +31 -0
- package/esm2020/lib/access-control-config/access-control-config.component.mjs +131 -0
- package/esm2020/lib/access-control-config/access-control-config.model.mjs +21 -0
- package/esm2020/lib/access-control-config/access-control-config.module.mjs +60 -0
- package/esm2020/lib/access-control-config/access-control-config.service.mjs +31 -0
- package/esm2020/lib/change-password/change-password-routing.module.mjs +24 -0
- package/esm2020/lib/change-password/change-password.component.mjs +87 -0
- package/esm2020/lib/change-password/change-password.module.mjs +48 -0
- package/esm2020/lib/entity-files/entity-files-view-all.component.mjs +7 -8
- package/esm2020/lib/forgot-password/forgot-password-routing.module.mjs +22 -0
- package/esm2020/lib/forgot-password/forgot-password.component.mjs +67 -0
- package/esm2020/lib/forgot-password/forgot-password.module.mjs +34 -0
- package/esm2020/lib/forgot-password/index.mjs +3 -0
- package/esm2020/lib/ip-address-selector/ip-address-selector.module.mjs +48 -0
- package/esm2020/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.mjs +109 -0
- package/esm2020/lib/login/index.mjs +3 -0
- package/esm2020/lib/login/login-routing.module.mjs +23 -0
- package/esm2020/lib/login/login.component.mjs +153 -0
- package/esm2020/lib/login/login.module.mjs +50 -0
- package/esm2020/lib/ngx-techlify-users/ngx-techlify-users-routing.module.mjs +43 -0
- package/esm2020/lib/ngx-techlify-users/ngx-techlify-users.module.mjs +22 -0
- package/esm2020/lib/password-requirement-check/password-check-result.mjs +2 -0
- package/esm2020/lib/password-requirement-check/password-check.service.mjs +43 -0
- package/esm2020/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.mjs +47 -0
- package/esm2020/lib/password-requirement-check/password-requirement-check.module.mjs +24 -0
- package/esm2020/lib/profile/index.mjs +3 -0
- package/esm2020/lib/profile/profile-edit.component.mjs +75 -0
- package/esm2020/lib/profile/profile-routing.module.mjs +23 -0
- package/esm2020/lib/profile/profile.module.mjs +36 -0
- package/esm2020/lib/restrictors/index.mjs +4 -0
- package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.mjs +91 -0
- package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.mjs +36 -0
- package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.mjs +91 -0
- package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.mjs +32 -0
- package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.mjs +92 -0
- package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.mjs +36 -0
- package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictor.service.mjs +19 -0
- package/esm2020/lib/restrictors/restrictors-form/restrictors-form.component.mjs +102 -0
- package/esm2020/lib/restrictors/restrictors-form-page/restrictors-form-page.component.mjs +44 -0
- package/esm2020/lib/restrictors/restrictors-list-page/restrictors-list-page.component.mjs +145 -0
- package/esm2020/lib/restrictors/restrictors-routing.module.mjs +42 -0
- package/esm2020/lib/restrictors/restrictors.module.mjs +99 -0
- package/esm2020/lib/role/index.mjs +9 -0
- package/esm2020/lib/role/permission/permission.model.mjs +9 -0
- package/esm2020/lib/role/permission/permission.module.mjs +45 -0
- package/esm2020/lib/role/permission/permission.routes.mjs +26 -0
- package/esm2020/lib/role/permission/permissions-management.component.mjs +105 -0
- package/esm2020/lib/role/role-form.component.mjs +99 -0
- package/esm2020/lib/role/role-view/role-view.component.mjs +39 -0
- package/esm2020/lib/role/role.model.mjs +56 -0
- package/esm2020/lib/role/role.module.mjs +59 -0
- package/esm2020/lib/role/role.routes.mjs +28 -0
- package/esm2020/lib/role/role.service.mjs +26 -0
- package/esm2020/lib/role/roles-view-all.component.mjs +131 -0
- package/esm2020/lib/signup/index.mjs +3 -0
- package/esm2020/lib/signup/signup-routing.module.mjs +22 -0
- package/esm2020/lib/signup/signup.component.mjs +78 -0
- package/esm2020/lib/signup/signup.module.mjs +34 -0
- package/esm2020/lib/user/current-user.service.mjs +135 -0
- package/esm2020/lib/user/index.mjs +8 -0
- package/esm2020/lib/user/user-explore.component.mjs +50 -0
- package/esm2020/lib/user/user-form.component.mjs +219 -0
- package/esm2020/lib/user/user-view.component.mjs +68 -0
- package/esm2020/lib/user/user.model.mjs +30 -0
- package/esm2020/lib/user/user.module.mjs +99 -0
- package/esm2020/lib/user/user.routes.mjs +29 -0
- package/esm2020/lib/user/user.service.mjs +31 -0
- package/esm2020/lib/user/users-view-all.component.mjs +208 -0
- package/esm2020/lib/user-config/index.mjs +3 -0
- package/esm2020/lib/user-config/user-config.model.mjs +50 -0
- package/esm2020/lib/user-config/user-config.service.mjs +65 -0
- package/esm2020/lib/user-selector/index.mjs +3 -0
- package/esm2020/lib/user-selector/user-data.service.mjs +35 -0
- package/esm2020/lib/user-selector/user-selector.component.mjs +91 -0
- package/esm2020/lib/user-selector/user-selector.module.mjs +38 -0
- package/esm2020/public-api.mjs +24 -1
- package/fesm2015/ngx-techlify-core.mjs +3791 -170
- package/fesm2015/ngx-techlify-core.mjs.map +1 -1
- package/fesm2020/ngx-techlify-core.mjs +3759 -170
- package/fesm2020/ngx-techlify-core.mjs.map +1 -1
- package/lib/access-control-config/access-control-config-form/access-control-config-form.component.d.ts +44 -0
- package/lib/access-control-config/access-control-config-routing.module.d.ts +7 -0
- package/lib/access-control-config/access-control-config.component.d.ts +31 -0
- package/lib/access-control-config/access-control-config.model.d.ts +17 -0
- package/lib/access-control-config/access-control-config.module.d.ts +18 -0
- package/lib/access-control-config/access-control-config.service.d.ts +13 -0
- package/lib/change-password/change-password-routing.module.d.ts +7 -0
- package/lib/change-password/change-password.component.d.ts +27 -0
- package/lib/change-password/change-password.module.d.ts +14 -0
- package/lib/forgot-password/forgot-password-routing.module.d.ts +7 -0
- package/lib/forgot-password/forgot-password.component.d.ts +34 -0
- package/lib/forgot-password/forgot-password.module.d.ts +11 -0
- package/lib/forgot-password/index.d.ts +2 -0
- package/lib/ip-address-selector/ip-address-selector.module.d.ts +14 -0
- package/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.d.ts +28 -0
- package/lib/login/index.d.ts +2 -0
- package/lib/login/login-routing.module.d.ts +7 -0
- package/lib/login/login.component.d.ts +53 -0
- package/lib/login/login.module.d.ts +15 -0
- package/lib/ngx-techlify-users/ngx-techlify-users-routing.module.d.ts +7 -0
- package/lib/ngx-techlify-users/ngx-techlify-users.module.d.ts +8 -0
- package/lib/password-requirement-check/password-check-result.d.ts +7 -0
- package/lib/password-requirement-check/password-check.service.d.ts +15 -0
- package/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.d.ts +22 -0
- package/lib/password-requirement-check/password-requirement-check.module.d.ts +8 -0
- package/lib/profile/index.d.ts +2 -0
- package/lib/profile/profile-edit.component.d.ts +33 -0
- package/lib/profile/profile-routing.module.d.ts +7 -0
- package/lib/profile/profile.module.d.ts +11 -0
- package/lib/restrictors/index.d.ts +3 -0
- package/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.d.ts +34 -0
- package/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.d.ts +11 -0
- package/lib/restrictors/restrictor-level-selector/restrictor-level.service.d.ts +9 -0
- package/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.d.ts +34 -0
- package/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.d.ts +10 -0
- package/lib/restrictors/restrictor-status-selector/restrictor-status.service.d.ts +9 -0
- package/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.d.ts +34 -0
- package/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.d.ts +11 -0
- package/lib/restrictors/restrictor-type-selector/restrictor-type.service.d.ts +9 -0
- package/lib/restrictors/restrictor.service.d.ts +9 -0
- package/lib/restrictors/restrictors-form/restrictors-form.component.d.ts +30 -0
- package/lib/restrictors/restrictors-form-page/restrictors-form-page.component.d.ts +21 -0
- package/lib/restrictors/restrictors-list-page/restrictors-list-page.component.d.ts +51 -0
- package/lib/restrictors/restrictors-routing.module.d.ts +7 -0
- package/lib/restrictors/restrictors.module.d.ts +28 -0
- package/lib/role/index.d.ts +8 -0
- package/lib/role/permission/permission.model.d.ts +11 -0
- package/lib/role/permission/permission.module.d.ts +12 -0
- package/lib/role/permission/permission.routes.d.ts +7 -0
- package/lib/role/permission/permissions-management.component.d.ts +38 -0
- package/lib/role/role-form.component.d.ts +34 -0
- package/lib/role/role-view/role-view.component.d.ts +16 -0
- package/lib/role/role.model.d.ts +31 -0
- package/lib/role/role.module.d.ts +16 -0
- package/lib/role/role.routes.d.ts +7 -0
- package/lib/role/role.service.d.ts +11 -0
- package/lib/role/roles-view-all.component.d.ts +40 -0
- package/lib/signup/index.d.ts +2 -0
- package/lib/signup/signup-routing.module.d.ts +7 -0
- package/lib/signup/signup.component.d.ts +29 -0
- package/lib/signup/signup.module.d.ts +11 -0
- package/lib/user/current-user.service.d.ts +63 -0
- package/lib/user/index.d.ts +7 -0
- package/lib/user/user-explore.component.d.ts +26 -0
- package/lib/user/user-form.component.d.ts +52 -0
- package/lib/user/user-view.component.d.ts +31 -0
- package/lib/user/user.model.d.ts +29 -0
- package/lib/user/user.module.d.ts +26 -0
- package/lib/user/user.routes.d.ts +7 -0
- package/lib/user/user.service.d.ts +13 -0
- package/lib/user/users-view-all.component.d.ts +56 -0
- package/lib/user-config/index.d.ts +2 -0
- package/lib/user-config/user-config.model.d.ts +50 -0
- package/lib/user-config/user-config.service.d.ts +14 -0
- package/lib/user-selector/index.d.ts +2 -0
- package/lib/user-selector/user-data.service.d.ts +16 -0
- package/lib/user-selector/user-selector.component.d.ts +29 -0
- package/lib/user-selector/user-selector.module.d.ts +10 -0
- package/package.json +1 -1
- package/public-api.d.ts +23 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY2hlY2stcmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay9wYXNzd29yZC1jaGVjay1yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGludGVyZmFjZSBQYXNzd29yZENoZWNrUmVzdWx0IHtcbiAgbWluTGVuZ3RoPzogYm9vbGVhbjtcbiAgaGFzTnVtYmVyPzogYm9vbGVhbjtcbiAgaGFzU3ltYm9sPzogYm9vbGVhbjtcbiAgaGFzQ2FwaXRhbExldHRlcj86IGJvb2xlYW47XG4gIGlzVmFsaWQ/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PasswordCheckService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
/**
|
|
6
|
+
* Check if the password matches the access control config requirement or not.
|
|
7
|
+
*
|
|
8
|
+
* @param password Password
|
|
9
|
+
* @param config Access control configuration
|
|
10
|
+
*/
|
|
11
|
+
static checkPasswordRequirements(password, config) {
|
|
12
|
+
const { minPasswordLength, isPasswordRequireNumber, isPasswordRequireSymbol, isPasswordRequireCapitalLetter } = config;
|
|
13
|
+
const result = {};
|
|
14
|
+
// Check the minimum password length
|
|
15
|
+
if (minPasswordLength) {
|
|
16
|
+
result.minLength = password.length >= minPasswordLength;
|
|
17
|
+
}
|
|
18
|
+
// Check for at least one number
|
|
19
|
+
if (isPasswordRequireNumber) {
|
|
20
|
+
result.hasNumber = /\d/.test(password);
|
|
21
|
+
}
|
|
22
|
+
// Check for at least one symbol
|
|
23
|
+
if (isPasswordRequireSymbol) {
|
|
24
|
+
result.hasSymbol = /[^\w\s]/.test(password);
|
|
25
|
+
}
|
|
26
|
+
// Check for at least one capital letter
|
|
27
|
+
if (isPasswordRequireCapitalLetter) {
|
|
28
|
+
result.hasCapitalLetter = /[A-Z]/.test(password);
|
|
29
|
+
}
|
|
30
|
+
// Check if all requirements are fulfilled
|
|
31
|
+
result.isValid = Object.values(result).every(value => value === true);
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
PasswordCheckService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordCheckService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
|
+
PasswordCheckService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordCheckService, providedIn: 'root' });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordCheckService, decorators: [{
|
|
38
|
+
type: Injectable,
|
|
39
|
+
args: [{
|
|
40
|
+
providedIn: 'root'
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: function () { return []; } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY2hlY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcGFzc3dvcmQtcmVxdWlyZW1lbnQtY2hlY2svcGFzc3dvcmQtY2hlY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8zQyxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLGdCQUFnQixDQUFDO0lBRWpCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHlCQUF5QixDQUFDLFFBQWdCLEVBQUUsTUFBa0M7UUFDMUYsTUFBTSxFQUNKLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUMvQixHQUFHLE1BQU0sQ0FBQztRQUVYLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7UUFFdkMsb0NBQW9DO1FBQ3BDLElBQUksaUJBQWlCLEVBQUU7WUFDckIsTUFBTSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLGlCQUFpQixDQUFDO1NBQ3pEO1FBRUQsZ0NBQWdDO1FBQ2hDLElBQUksdUJBQXVCLEVBQUU7WUFDM0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsZ0NBQWdDO1FBQ2hDLElBQUksdUJBQXVCLEVBQUU7WUFDM0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsd0NBQXdDO1FBQ3hDLElBQUksOEJBQThCLEVBQUU7WUFDbEMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEQ7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztRQUV0RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztpSEE1Q1Usb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vYWNjZXNzLWNvbnRyb2wtY29uZmlnL2FjY2Vzcy1jb250cm9sLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgUGFzc3dvcmRDaGVja1Jlc3VsdCBmcm9tICcuL3Bhc3N3b3JkLWNoZWNrLXJlc3VsdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkQ2hlY2tTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgcGFzc3dvcmQgbWF0Y2hlcyB0aGUgYWNjZXNzIGNvbnRyb2wgY29uZmlnIHJlcXVpcmVtZW50IG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHBhc3N3b3JkIFBhc3N3b3JkXG4gICAqIEBwYXJhbSBjb25maWcgQWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaGVja1Bhc3N3b3JkUmVxdWlyZW1lbnRzKHBhc3N3b3JkOiBzdHJpbmcsIGNvbmZpZzogQWNjZXNzQ29udHJvbENvbmZpZ3VyYXRpb24pOiBQYXNzd29yZENoZWNrUmVzdWx0IHtcbiAgICBjb25zdCB7XG4gICAgICBtaW5QYXNzd29yZExlbmd0aCxcbiAgICAgIGlzUGFzc3dvcmRSZXF1aXJlTnVtYmVyLFxuICAgICAgaXNQYXNzd29yZFJlcXVpcmVTeW1ib2wsXG4gICAgICBpc1Bhc3N3b3JkUmVxdWlyZUNhcGl0YWxMZXR0ZXJcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgY29uc3QgcmVzdWx0OiBQYXNzd29yZENoZWNrUmVzdWx0ID0ge307XG5cbiAgICAvLyBDaGVjayB0aGUgbWluaW11bSBwYXNzd29yZCBsZW5ndGhcbiAgICBpZiAobWluUGFzc3dvcmRMZW5ndGgpIHtcbiAgICAgIHJlc3VsdC5taW5MZW5ndGggPSBwYXNzd29yZC5sZW5ndGggPj0gbWluUGFzc3dvcmRMZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGF0IGxlYXN0IG9uZSBudW1iZXJcbiAgICBpZiAoaXNQYXNzd29yZFJlcXVpcmVOdW1iZXIpIHtcbiAgICAgIHJlc3VsdC5oYXNOdW1iZXIgPSAvXFxkLy50ZXN0KHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgYXQgbGVhc3Qgb25lIHN5bWJvbFxuICAgIGlmIChpc1Bhc3N3b3JkUmVxdWlyZVN5bWJvbCkge1xuICAgICAgcmVzdWx0Lmhhc1N5bWJvbCA9IC9bXlxcd1xcc10vLnRlc3QocGFzc3dvcmQpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBhdCBsZWFzdCBvbmUgY2FwaXRhbCBsZXR0ZXJcbiAgICBpZiAoaXNQYXNzd29yZFJlcXVpcmVDYXBpdGFsTGV0dGVyKSB7XG4gICAgICByZXN1bHQuaGFzQ2FwaXRhbExldHRlciA9IC9bQS1aXS8udGVzdChwYXNzd29yZCk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgZnVsZmlsbGVkXG4gICAgcmVzdWx0LmlzVmFsaWQgPSBPYmplY3QudmFsdWVzKHJlc3VsdCkuZXZlcnkodmFsdWUgPT4gdmFsdWUgPT09IHRydWUpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { AccessControlConfiguration } from '../../access-control-config/access-control-config.model';
|
|
4
|
+
import { PasswordCheckService } from '../password-check.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../access-control-config/access-control-config.service";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class PasswordRequirementCheckComponent {
|
|
9
|
+
constructor(accessControlConfigService) {
|
|
10
|
+
this.accessControlConfigService = accessControlConfigService;
|
|
11
|
+
this.showResult = false;
|
|
12
|
+
this.result = {};
|
|
13
|
+
}
|
|
14
|
+
ngOnChanges(changes) {
|
|
15
|
+
if (changes.password) {
|
|
16
|
+
this.checkPasswordRequirements();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
checkPasswordRequirements() {
|
|
20
|
+
if (!this.accessControlConfiguration)
|
|
21
|
+
return;
|
|
22
|
+
this.result = PasswordCheckService.checkPasswordRequirements(this.password, this.accessControlConfiguration);
|
|
23
|
+
this.showResult = true;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load the access control config for the current client.
|
|
27
|
+
*/
|
|
28
|
+
getClientConfig() {
|
|
29
|
+
this.accessControlConfigService.index().subscribe({
|
|
30
|
+
next: (response) => {
|
|
31
|
+
this.accessControlConfiguration = AccessControlConfiguration.fromObject(response?.data);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.getClientConfig();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
PasswordRequirementCheckComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckComponent, deps: [{ token: i1.AccessControlConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
PasswordRequirementCheckComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: PasswordRequirementCheckComponent, selector: "techlify-password-requirement-check", inputs: { password: "password" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"alert\"\n style=\"font-size: 12px; padding: 5px;\"\n [ngClass]=\"{ 'alert-success' : result.isValid, 'alert-danger': !result.isValid }\"\n *ngIf=\"showResult\">\n <ul style=\"margin-bottom: 2px; padding-inline-start: 20px;\">\n <li *ngIf=\"accessControlConfiguration?.minPasswordLength > 0\">\n <span [ngClass]=\"{ 'text-success': result.minLength, 'text-danger': !result.minLength }\">\n Minimum Length Requirement: {{ accessControlConfiguration?.minPasswordLength }} Characters\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireNumber\">\n <span [ngClass]=\"{ 'text-success': result.hasNumber, 'text-danger': !result.hasNumber }\">\n Your password is required to add at least 1 number\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireSymbol\">\n <span [ngClass]=\"{ 'text-success': result.hasSymbol, 'text-danger': !result.hasSymbol }\">\n Your password is required to add at least 1 symbol.\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireCapitalLetter\">\n <span [ngClass]=\"{ 'text-success': result.hasCapitalLetter, 'text-danger': !result.hasCapitalLetter }\">\n Your password is required to add at least 1 capital letter\n </span>\n </li>\n </ul>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'techlify-password-requirement-check', template: "<div class=\"alert\"\n style=\"font-size: 12px; padding: 5px;\"\n [ngClass]=\"{ 'alert-success' : result.isValid, 'alert-danger': !result.isValid }\"\n *ngIf=\"showResult\">\n <ul style=\"margin-bottom: 2px; padding-inline-start: 20px;\">\n <li *ngIf=\"accessControlConfiguration?.minPasswordLength > 0\">\n <span [ngClass]=\"{ 'text-success': result.minLength, 'text-danger': !result.minLength }\">\n Minimum Length Requirement: {{ accessControlConfiguration?.minPasswordLength }} Characters\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireNumber\">\n <span [ngClass]=\"{ 'text-success': result.hasNumber, 'text-danger': !result.hasNumber }\">\n Your password is required to add at least 1 number\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireSymbol\">\n <span [ngClass]=\"{ 'text-success': result.hasSymbol, 'text-danger': !result.hasSymbol }\">\n Your password is required to add at least 1 symbol.\n </span>\n </li>\n <li *ngIf=\"accessControlConfiguration?.isPasswordRequireCapitalLetter\">\n <span [ngClass]=\"{ 'text-success': result.hasCapitalLetter, 'text-danger': !result.hasCapitalLetter }\">\n Your password is required to add at least 1 capital letter\n </span>\n </li>\n </ul>\n</div>\n" }]
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i1.AccessControlConfigService }]; }, propDecorators: { password: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVxdWlyZW1lbnQtY2hlY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3Bhc3N3b3JkLXJlcXVpcmVtZW50LWNoZWNrL3Bhc3N3b3JkLXJlcXVpcmVtZW50LWNoZWNrL3Bhc3N3b3JkLXJlcXVpcmVtZW50LWNoZWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFFbkcsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFRL0QsTUFBTSxPQUFPLGlDQUFpQztJQVE1QyxZQUNVLDBCQUFzRDtRQUF0RCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBSmhFLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsV0FBTSxHQUF3QixFQUFFLENBQUM7SUFJOUIsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCO1lBQUUsT0FBTztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDN0csSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDaEQsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFRLEVBQUU7Z0JBQzVCLElBQUksQ0FBQywwQkFBMEIsR0FBRywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzFGLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs4SEFyQ1UsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsa0lDWjlDLHcxQ0EyQkE7MkZEZmEsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLHFDQUFxQztpSEFNdEMsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWNjZXNzQ29udHJvbENvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL2FjY2Vzcy1jb250cm9sLWNvbmZpZy9hY2Nlc3MtY29udHJvbC1jb25maWcubW9kZWwnO1xuaW1wb3J0IFBhc3N3b3JkQ2hlY2tSZXN1bHQgZnJvbSAnLi4vcGFzc3dvcmQtY2hlY2stcmVzdWx0JztcbmltcG9ydCB7UGFzc3dvcmRDaGVja1NlcnZpY2V9IGZyb20gJy4uL3Bhc3N3b3JkLWNoZWNrLnNlcnZpY2UnO1xuaW1wb3J0IHtBY2Nlc3NDb250cm9sQ29uZmlnU2VydmljZX0gZnJvbSBcIi4uLy4uL2FjY2Vzcy1jb250cm9sLWNvbmZpZy9hY2Nlc3MtY29udHJvbC1jb25maWcuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZWNobGlmeS1wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bhc3N3b3JkLXJlcXVpcmVtZW50LWNoZWNrLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQYXNzd29yZFJlcXVpcmVtZW50Q2hlY2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgcGFzc3dvcmQ6IHN0cmluZztcblxuICBhY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbjogQWNjZXNzQ29udHJvbENvbmZpZ3VyYXRpb247XG4gIHNob3dSZXN1bHQgPSBmYWxzZTtcbiAgcmVzdWx0OiBQYXNzd29yZENoZWNrUmVzdWx0ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY2Nlc3NDb250cm9sQ29uZmlnU2VydmljZTogQWNjZXNzQ29udHJvbENvbmZpZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5wYXNzd29yZCkge1xuICAgICAgdGhpcy5jaGVja1Bhc3N3b3JkUmVxdWlyZW1lbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tQYXNzd29yZFJlcXVpcmVtZW50cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWNjZXNzQ29udHJvbENvbmZpZ3VyYXRpb24pIHJldHVybjtcbiAgICB0aGlzLnJlc3VsdCA9IFBhc3N3b3JkQ2hlY2tTZXJ2aWNlLmNoZWNrUGFzc3dvcmRSZXF1aXJlbWVudHModGhpcy5wYXNzd29yZCwgdGhpcy5hY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbik7XG4gICAgdGhpcy5zaG93UmVzdWx0ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBhY2Nlc3MgY29udHJvbCBjb25maWcgZm9yIHRoZSBjdXJyZW50IGNsaWVudC5cbiAgICovXG4gIGdldENsaWVudENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmFjY2Vzc0NvbnRyb2xDb25maWdTZXJ2aWNlLmluZGV4KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuYWNjZXNzQ29udHJvbENvbmZpZ3VyYXRpb24gPSBBY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHJlc3BvbnNlPy5kYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0Q2xpZW50Q29uZmlnKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImFsZXJ0XCJcbiAgICAgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IHBhZGRpbmc6IDVweDtcIlxuICAgICBbbmdDbGFzc109XCJ7ICdhbGVydC1zdWNjZXNzJyA6IHJlc3VsdC5pc1ZhbGlkLCAnYWxlcnQtZGFuZ2VyJzogIXJlc3VsdC5pc1ZhbGlkIH1cIlxuICAgICAqbmdJZj1cInNob3dSZXN1bHRcIj5cbiAgPHVsIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMnB4OyBwYWRkaW5nLWlubGluZS1zdGFydDogMjBweDtcIj5cbiAgICA8bGkgKm5nSWY9XCJhY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbj8ubWluUGFzc3dvcmRMZW5ndGggPiAwXCI+XG4gICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICd0ZXh0LXN1Y2Nlc3MnOiByZXN1bHQubWluTGVuZ3RoLCAndGV4dC1kYW5nZXInOiAhcmVzdWx0Lm1pbkxlbmd0aCB9XCI+XG4gICAgICAgIE1pbmltdW0gTGVuZ3RoIFJlcXVpcmVtZW50OiB7eyBhY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbj8ubWluUGFzc3dvcmRMZW5ndGggfX0gQ2hhcmFjdGVyc1xuICAgICAgPC9zcGFuPlxuICAgIDwvbGk+XG4gICAgPGxpICpuZ0lmPVwiYWNjZXNzQ29udHJvbENvbmZpZ3VyYXRpb24/LmlzUGFzc3dvcmRSZXF1aXJlTnVtYmVyXCI+XG4gICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICd0ZXh0LXN1Y2Nlc3MnOiByZXN1bHQuaGFzTnVtYmVyLCAndGV4dC1kYW5nZXInOiAhcmVzdWx0Lmhhc051bWJlciB9XCI+XG4gICAgICAgIFlvdXIgcGFzc3dvcmQgaXMgcmVxdWlyZWQgdG8gYWRkIGF0IGxlYXN0IDEgbnVtYmVyXG4gICAgICA8L3NwYW4+XG4gICAgPC9saT5cbiAgICA8bGkgKm5nSWY9XCJhY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbj8uaXNQYXNzd29yZFJlcXVpcmVTeW1ib2xcIj5cbiAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ3RleHQtc3VjY2Vzcyc6IHJlc3VsdC5oYXNTeW1ib2wsICd0ZXh0LWRhbmdlcic6ICFyZXN1bHQuaGFzU3ltYm9sIH1cIj5cbiAgICAgICAgWW91ciBwYXNzd29yZCBpcyByZXF1aXJlZCB0byBhZGQgYXQgbGVhc3QgMSBzeW1ib2wuXG4gICAgICA8L3NwYW4+XG4gICAgPC9saT5cbiAgICA8bGkgKm5nSWY9XCJhY2Nlc3NDb250cm9sQ29uZmlndXJhdGlvbj8uaXNQYXNzd29yZFJlcXVpcmVDYXBpdGFsTGV0dGVyXCI+XG4gICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICd0ZXh0LXN1Y2Nlc3MnOiByZXN1bHQuaGFzQ2FwaXRhbExldHRlciwgJ3RleHQtZGFuZ2VyJzogIXJlc3VsdC5oYXNDYXBpdGFsTGV0dGVyIH1cIj5cbiAgICAgICAgWW91ciBwYXNzd29yZCBpcyByZXF1aXJlZCB0byBhZGQgYXQgbGVhc3QgMSBjYXBpdGFsIGxldHRlclxuICAgICAgPC9zcGFuPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { PasswordRequirementCheckComponent } from './password-requirement-check/password-requirement-check.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PasswordRequirementCheckModule {
|
|
6
|
+
}
|
|
7
|
+
PasswordRequirementCheckModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
PasswordRequirementCheckModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckModule, declarations: [PasswordRequirementCheckComponent], imports: [CommonModule], exports: [PasswordRequirementCheckComponent] });
|
|
9
|
+
PasswordRequirementCheckModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckModule, imports: [CommonModule] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PasswordRequirementCheckModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [
|
|
14
|
+
PasswordRequirementCheckComponent
|
|
15
|
+
],
|
|
16
|
+
imports: [
|
|
17
|
+
CommonModule
|
|
18
|
+
],
|
|
19
|
+
exports: [
|
|
20
|
+
PasswordRequirementCheckComponent
|
|
21
|
+
]
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVxdWlyZW1lbnQtY2hlY2subW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sbUVBQW1FLENBQUM7O0FBZXRILE1BQU0sT0FBTyw4QkFBOEI7OzJIQUE5Qiw4QkFBOEI7NEhBQTlCLDhCQUE4QixpQkFUdkMsaUNBQWlDLGFBR2pDLFlBQVksYUFHWixpQ0FBaUM7NEhBR3hCLDhCQUE4QixZQU52QyxZQUFZOzJGQU1ILDhCQUE4QjtrQkFYMUMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osaUNBQWlDO3FCQUNsQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUNBQWlDO3FCQUNsQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGFzc3dvcmRSZXF1aXJlbWVudENoZWNrQ29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay9wYXNzd29yZC1yZXF1aXJlbWVudC1jaGVjay5jb21wb25lbnQnO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUGFzc3dvcmRSZXF1aXJlbWVudENoZWNrQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFBhc3N3b3JkUmVxdWlyZW1lbnRDaGVja0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkUmVxdWlyZW1lbnRDaGVja01vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './profile-edit.component';
|
|
2
|
+
export * from './profile-routing.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3Byb2ZpbGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLWVkaXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZmlsZS1yb3V0aW5nLm1vZHVsZSc7XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Validators, UntypedFormControl } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../core";
|
|
5
|
+
import * as i2 from "../user";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/material/button";
|
|
9
|
+
import * as i6 from "@angular/material/form-field";
|
|
10
|
+
import * as i7 from "@angular/material/input";
|
|
11
|
+
import * as i8 from "@angular/material/divider";
|
|
12
|
+
const errorMessages = {
|
|
13
|
+
name: {
|
|
14
|
+
required: 'Name is required'
|
|
15
|
+
},
|
|
16
|
+
email: {
|
|
17
|
+
required: 'Email is required',
|
|
18
|
+
email: 'Invalid email'
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Component to edit a user
|
|
23
|
+
*
|
|
24
|
+
* @author Saravana Kumar
|
|
25
|
+
* @since 20190719
|
|
26
|
+
*/
|
|
27
|
+
export class ProfileEditComponent {
|
|
28
|
+
constructor(http, alertService, errorHandler, currentUserService, fb, formValidatorService) {
|
|
29
|
+
this.http = http;
|
|
30
|
+
this.alertService = alertService;
|
|
31
|
+
this.errorHandler = errorHandler;
|
|
32
|
+
this.currentUserService = currentUserService;
|
|
33
|
+
this.fb = fb;
|
|
34
|
+
this.formValidatorService = formValidatorService;
|
|
35
|
+
this.isWorking = false;
|
|
36
|
+
this.onSave = new EventEmitter();
|
|
37
|
+
this.profileForm = fb.group({
|
|
38
|
+
name: new UntypedFormControl('', Validators.required),
|
|
39
|
+
email: new UntypedFormControl('', [Validators.required, Validators.email]),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.user = this.currentUserService.getUser();
|
|
44
|
+
this.profileForm.patchValue(this.user);
|
|
45
|
+
}
|
|
46
|
+
save() {
|
|
47
|
+
if (!this.profileForm.valid) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.isWorking = true;
|
|
51
|
+
this.http.put('api/users/profile/update', this.profileForm.value).toPromise().then((res) => {
|
|
52
|
+
this.onSave.emit(res.item);
|
|
53
|
+
this.currentUserService.updateCurrentUser(res.item);
|
|
54
|
+
this.alertService.addAlert('Successfully updated the user. ', 'success');
|
|
55
|
+
this.isWorking = false;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** Method to evaluate form fields*/
|
|
59
|
+
isFieldValid(field) {
|
|
60
|
+
return this.formValidatorService.isFieldValid(field, this.profileForm);
|
|
61
|
+
}
|
|
62
|
+
/** Method to find error in form fields*/
|
|
63
|
+
getErrorMessage(field) {
|
|
64
|
+
return this.formValidatorService.getErrorMessage(field, this.profileForm, errorMessages);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
ProfileEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileEditComponent, deps: [{ token: i1.HttpService }, { token: i1.AlertService }, { token: i1.ErrorHandlerService }, { token: i2.CurrentUserService }, { token: i3.UntypedFormBuilder }, { token: i1.FormValidatorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
ProfileEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ProfileEditComponent, selector: "profile-edit", outputs: { onSave: "onSave" }, ngImport: i0, template: "<form class=\"form-horizontal form-bordered form-medium mx-auto mt-4\" [formGroup]=\"profileForm\" (ngSubmit)=\"save()\">\n <h3 class=\"section title text-center\">\n Edit Profile\n </h3>\n <div class=\"form-group\" *ngIf=\"user.temporarily_invited\">\n <small class=\"form-text text-muted\">\n Please fill your name and you\u2019re currently using a temporary password, please change it to proceed\n </small>\n </div>\n <mat-divider></mat-divider>\n\n <div class=\"form-group row mt-3\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"name\" placeholder=\"Full Name\" type=\"text\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('name')\">{{getErrorMessage('name')}}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"form-group row\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"email\" placeholder=\"Email\" type=\"email\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n </div>\n\n <mat-divider></mat-divider>\n\n <div class=\"form-group mt-3\">\n <div class=\"col-sm-12 text-center\">\n <button mat-button class=\"btn btn-md btn-primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n </div>\n\n</form>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.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: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.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: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] });
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileEditComponent, decorators: [{
|
|
70
|
+
type: Component,
|
|
71
|
+
args: [{ selector: 'profile-edit', template: "<form class=\"form-horizontal form-bordered form-medium mx-auto mt-4\" [formGroup]=\"profileForm\" (ngSubmit)=\"save()\">\n <h3 class=\"section title text-center\">\n Edit Profile\n </h3>\n <div class=\"form-group\" *ngIf=\"user.temporarily_invited\">\n <small class=\"form-text text-muted\">\n Please fill your name and you\u2019re currently using a temporary password, please change it to proceed\n </small>\n </div>\n <mat-divider></mat-divider>\n\n <div class=\"form-group row mt-3\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"name\" placeholder=\"Full Name\" type=\"text\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('name')\">{{getErrorMessage('name')}}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"form-group row\">\n <mat-form-field class=\"offset-2 col-8\">\n <input matInput formControlName=\"email\" placeholder=\"Email\" type=\"email\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('email')\">{{getErrorMessage('email')}}</mat-error>\n </mat-form-field>\n </div>\n\n <mat-divider></mat-divider>\n\n <div class=\"form-group mt-3\">\n <div class=\"col-sm-12 text-center\">\n <button mat-button class=\"btn btn-md btn-primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n </div>\n\n</form>" }]
|
|
72
|
+
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i1.AlertService }, { type: i1.ErrorHandlerService }, { type: i2.CurrentUserService }, { type: i3.UntypedFormBuilder }, { type: i1.FormValidatorService }]; }, propDecorators: { onSave: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9wcm9maWxlL3Byb2ZpbGUtZm9ybS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl4RSxPQUFPLEVBQXdDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBSXRHLE1BQU0sYUFBYSxHQUFRO0lBQ3ZCLElBQUksRUFBRTtRQUNGLFFBQVEsRUFBRSxrQkFBa0I7S0FDL0I7SUFDRCxLQUFLLEVBQUU7UUFDSCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLEtBQUssRUFBRSxlQUFlO0tBQ3pCO0NBQ0osQ0FBQztBQUNGOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLG9CQUFvQjtJQU83QixZQUFvQixJQUFpQixFQUNqQixZQUEwQixFQUMxQixZQUFpQyxFQUNsQyxrQkFBc0MsRUFDckMsRUFBc0IsRUFDdEIsb0JBQTBDO1FBTDFDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckMsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDdEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQVQ5RCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBV2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNyRCxLQUFLLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3RSxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUN6QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDOUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELG9DQUFvQztJQUNwQyxZQUFZLENBQUMsS0FBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLGVBQWUsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM3RixDQUFDOztpSEFsRFEsb0JBQW9CO3FHQUFwQixvQkFBb0IsbUZDM0JqQywwOENBaUNPOzJGRE5NLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDSSxjQUFjO29RQUlkLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIEVycm9ySGFuZGxlclNlcnZpY2UsIEZvcm1WYWxpZGF0b3JTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi91c2VyJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXInO1xuXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XG4gICAgbmFtZToge1xuICAgICAgICByZXF1aXJlZDogJ05hbWUgaXMgcmVxdWlyZWQnXG4gICAgfSxcbiAgICBlbWFpbDoge1xuICAgICAgICByZXF1aXJlZDogJ0VtYWlsIGlzIHJlcXVpcmVkJyxcbiAgICAgICAgZW1haWw6ICdJbnZhbGlkIGVtYWlsJ1xuICAgIH0sXG59O1xuLyoqXG4gKiBDb21wb25lbnQgdG8gZWRpdCBhIHVzZXJcbiAqXG4gKiBAYXV0aG9yIFNhcmF2YW5hIEt1bWFyXG4gKiBAc2luY2UgMjAxOTA3MTlcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwcm9maWxlLWVkaXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLWZvcm0uaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBPdXRwdXQoKSBvblNhdmU6IEV2ZW50RW1pdHRlcjxVc2VyPjtcblxuICAgIGlzV29ya2luZyA9IGZhbHNlO1xuICAgIHByb2ZpbGVGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHVibGljIGN1cnJlbnRVc2VyU2VydmljZTogQ3VycmVudFVzZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5vblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXI+KCk7XG4gICAgICAgIHRoaXMucHJvZmlsZUZvcm0gPSBmYi5ncm91cCh7XG4gICAgICAgICAgICBuYW1lOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIGVtYWlsOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51c2VyID0gdGhpcy5jdXJyZW50VXNlclNlcnZpY2UuZ2V0VXNlcigpO1xuICAgICAgICB0aGlzLnByb2ZpbGVGb3JtLnBhdGNoVmFsdWUodGhpcy51c2VyKTtcbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvZmlsZUZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5odHRwLnB1dCgnYXBpL3VzZXJzL3Byb2ZpbGUvdXBkYXRlJywgdGhpcy5wcm9maWxlRm9ybS52YWx1ZSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQocmVzLml0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXJTZXJ2aWNlLnVwZGF0ZUN1cnJlbnRVc2VyKHJlcy5pdGVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgdGhlIHVzZXIuICcsICdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cbiAgICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5pc0ZpZWxkVmFsaWQoZmllbGQsIHRoaXMucHJvZmlsZUZvcm0pO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdG8gZmluZCBlcnJvciBpbiBmb3JtIGZpZWxkcyovXG4gICAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKGZpZWxkLCB0aGlzLnByb2ZpbGVGb3JtLCBlcnJvck1lc3NhZ2VzKTtcbiAgICB9XG5cbn1cbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsIGZvcm0tYm9yZGVyZWQgZm9ybS1tZWRpdW0gbXgtYXV0byBtdC00XCIgW2Zvcm1Hcm91cF09XCJwcm9maWxlRm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cbiAgICA8aDMgY2xhc3M9XCJzZWN0aW9uIHRpdGxlIHRleHQtY2VudGVyXCI+XG4gICAgICAgIEVkaXQgUHJvZmlsZVxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cInVzZXIudGVtcG9yYXJpbHlfaW52aXRlZFwiPlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgUGxlYXNlIGZpbGwgeW91ciBuYW1lIGFuZCB5b3XigJlyZSBjdXJyZW50bHkgdXNpbmcgYSB0ZW1wb3JhcnkgcGFzc3dvcmQsIHBsZWFzZSBjaGFuZ2UgaXQgdG8gcHJvY2VlZFxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG10LTNcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwib2Zmc2V0LTIgY29sLThcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgcGxhY2Vob2xkZXI9XCJGdWxsIE5hbWVcIiB0eXBlPVwidGV4dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCduYW1lJylcIj57e2dldEVycm9yTWVzc2FnZSgnbmFtZScpfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJvZmZzZXQtMiBjb2wtOFwiPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbWFpbFwiIHR5cGU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdlbWFpbCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoJ2VtYWlsJyl9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWQgYnRuLXByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiPlNhdmU8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvZm9ybT4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { ProfileEditComponent } from './profile-edit.component';
|
|
4
|
+
import { AuthenticationGuard } from '../core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
const routes = [
|
|
8
|
+
{ path: '', component: ProfileEditComponent, canActivate: [AuthenticationGuard] }
|
|
9
|
+
];
|
|
10
|
+
export class ProfileRoutingModule {
|
|
11
|
+
}
|
|
12
|
+
ProfileRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
ProfileRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ProfileRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
14
|
+
ProfileRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileRoutingModule, decorators: [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
imports: [RouterModule.forChild(routes)],
|
|
19
|
+
exports: [RouterModule],
|
|
20
|
+
providers: []
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7O0FBRTlDLE1BQU0sTUFBTSxHQUFXO0lBQ3JCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRTtDQUNsRixDQUFDO0FBT0YsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLHdDQUhyQixZQUFZO2tIQUdYLG9CQUFvQixZQUpyQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzJGQUdYLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlcywgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFByb2ZpbGVFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9wcm9maWxlLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uR3VhcmQgfSBmcm9tICcuLi9jb3JlJztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHsgcGF0aDogJycsIGNvbXBvbmVudDogUHJvZmlsZUVkaXRDb21wb25lbnQsIGNhbkFjdGl2YXRlOiBbQXV0aGVudGljYXRpb25HdWFyZF0gfVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVJvdXRpbmdNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { ProfileEditComponent } from './profile-edit.component';
|
|
5
|
+
import { ProfileRoutingModule } from './profile-routing.module';
|
|
6
|
+
import { MaterialModule } from '../material.module';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class ProfileModule {
|
|
9
|
+
}
|
|
10
|
+
ProfileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
ProfileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ProfileModule, declarations: [ProfileEditComponent], imports: [CommonModule,
|
|
12
|
+
ReactiveFormsModule,
|
|
13
|
+
MaterialModule,
|
|
14
|
+
ProfileRoutingModule], exports: [ProfileEditComponent] });
|
|
15
|
+
ProfileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileModule, imports: [CommonModule,
|
|
16
|
+
ReactiveFormsModule,
|
|
17
|
+
MaterialModule,
|
|
18
|
+
ProfileRoutingModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [
|
|
23
|
+
CommonModule,
|
|
24
|
+
ReactiveFormsModule,
|
|
25
|
+
MaterialModule,
|
|
26
|
+
ProfileRoutingModule,
|
|
27
|
+
],
|
|
28
|
+
declarations: [
|
|
29
|
+
ProfileEditComponent
|
|
30
|
+
],
|
|
31
|
+
exports: [
|
|
32
|
+
ProfileEditComponent
|
|
33
|
+
]
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3Byb2ZpbGUvcHJvZmlsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWdCcEQsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkFOdEIsb0JBQW9CLGFBTnBCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLG9CQUFvQixhQU1wQixvQkFBb0I7MkdBR1gsYUFBYSxZQVp0QixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxvQkFBb0I7MkZBU1gsYUFBYTtrQkFkekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsb0JBQW9CO3FCQUNyQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFByb2ZpbGVFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9wcm9maWxlLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2ZpbGVSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9wcm9maWxlLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFByb2ZpbGVSb3V0aW5nTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBQcm9maWxlRWRpdENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUHJvZmlsZUVkaXRDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './restrictors.module';
|
|
2
|
+
export * from './restrictor-type-selector/restrictor-type-selector.module';
|
|
3
|
+
export * from './restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3Jlc3RyaWN0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHdGQUF3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXN0cmljdG9ycy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXN0cmljdG9yLXR5cGUtc2VsZWN0b3IvcmVzdHJpY3Rvci10eXBlLXNlbGVjdG9yLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3RyaWN0b3ItdHlwZS1zZWxlY3Rvci9yZXN0cmljdG9yLXR5cGUtc2VsZWN0b3IvcmVzdHJpY3Rvci10eXBlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* tslint:disable:component-selector variable-name */
|
|
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 "../restrictor-level.service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@angular/material/button-toggle";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
export class RestrictorLevelSelectorComponent {
|
|
10
|
+
constructor(restrictorLevelService) {
|
|
11
|
+
this.restrictorLevelService = restrictorLevelService;
|
|
12
|
+
this.label = 'Level';
|
|
13
|
+
this.multiple = false;
|
|
14
|
+
this.showLabel = true;
|
|
15
|
+
this.valueChanged = false;
|
|
16
|
+
this.disabled = false;
|
|
17
|
+
this.selectedOption = new FormControl();
|
|
18
|
+
this.options = [];
|
|
19
|
+
this.onChange = (value) => { };
|
|
20
|
+
this.onTouched = () => { };
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
// fetch the data
|
|
24
|
+
this.fetchData();
|
|
25
|
+
// listen for input changes
|
|
26
|
+
this.selectedOption.valueChanges.subscribe((value) => {
|
|
27
|
+
if (this._value || this._value === '') {
|
|
28
|
+
this.valueChanged = true;
|
|
29
|
+
this.onChange(value);
|
|
30
|
+
this.onTouched();
|
|
31
|
+
}
|
|
32
|
+
this._value = value;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
writeValue(value) {
|
|
36
|
+
this.selectedOption.setValue(value);
|
|
37
|
+
}
|
|
38
|
+
registerOnChange(fn) {
|
|
39
|
+
this.onChange = (value) => {
|
|
40
|
+
this.valueChanged = true;
|
|
41
|
+
this._value = value;
|
|
42
|
+
fn(value);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
registerOnTouched(fn) {
|
|
46
|
+
this.onTouched = fn;
|
|
47
|
+
}
|
|
48
|
+
setDisabledState(isDisabled) {
|
|
49
|
+
this.disabled = isDisabled;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Reset the form control value
|
|
53
|
+
*/
|
|
54
|
+
resetField() {
|
|
55
|
+
this.selectedOption.setValue('');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get task types.
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
fetchData() {
|
|
62
|
+
this.restrictorLevelService.index().subscribe((response) => {
|
|
63
|
+
this.options = response?.data;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
RestrictorLevelSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelSelectorComponent, deps: [{ token: i1.RestrictorLevelService }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
RestrictorLevelSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: RestrictorLevelSelectorComponent, selector: "techlify-restrictor-level-selector", inputs: { label: "label", multiple: "multiple", showLabel: "showLabel" }, providers: [
|
|
69
|
+
{
|
|
70
|
+
provide: NG_VALUE_ACCESSOR,
|
|
71
|
+
multi: true,
|
|
72
|
+
useExisting: RestrictorLevelSelectorComponent
|
|
73
|
+
}
|
|
74
|
+
], ngImport: i0, template: "<div *ngIf=\"options?.length > 0\">\n <span *ngIf=\"showLabel\" class=\"mr-1\">{{ label }}</span> <br *ngIf=\"showLabel\">\n <mat-button-toggle-group [formControl]=\"selectedOption\" [multiple]=\"multiple\">\n <mat-button-toggle *ngFor=\"let option of options\"\n [value]=\"option?.id\">\n {{ option?.title }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelSelectorComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'techlify-restrictor-level-selector', providers: [
|
|
78
|
+
{
|
|
79
|
+
provide: NG_VALUE_ACCESSOR,
|
|
80
|
+
multi: true,
|
|
81
|
+
useExisting: RestrictorLevelSelectorComponent
|
|
82
|
+
}
|
|
83
|
+
], template: "<div *ngIf=\"options?.length > 0\">\n <span *ngIf=\"showLabel\" class=\"mr-1\">{{ label }}</span> <br *ngIf=\"showLabel\">\n <mat-button-toggle-group [formControl]=\"selectedOption\" [multiple]=\"multiple\">\n <mat-button-toggle *ngFor=\"let option of options\"\n [value]=\"option?.id\">\n {{ option?.title }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n" }]
|
|
84
|
+
}], ctorParameters: function () { return [{ type: i1.RestrictorLevelService }]; }, propDecorators: { label: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], multiple: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], showLabel: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHJpY3Rvci1sZXZlbC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3Jlc3RyaWN0b3JzL3Jlc3RyaWN0b3ItbGV2ZWwtc2VsZWN0b3IvcmVzdHJpY3Rvci1sZXZlbC1zZWxlY3Rvci9yZXN0cmljdG9yLWxldmVsLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcmVzdHJpY3RvcnMvcmVzdHJpY3Rvci1sZXZlbC1zZWxlY3Rvci9yZXN0cmljdG9yLWxldmVsLXNlbGVjdG9yL3Jlc3RyaWN0b3ItbGV2ZWwtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBdUIsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWVwRixNQUFNLE9BQU8sZ0NBQWdDO0lBRTNDLFlBQ1Usc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFHL0MsVUFBSyxHQUFHLE9BQU8sQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHMUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUVwQixhQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUU5QixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBZmpCLENBQUM7SUFpQkwsUUFBUTtRQUNOLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSyxTQUFTO1FBQ2YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzZIQXRFVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyx1SUFSaEM7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsZ0NBQWdDO1NBQzlDO0tBQ0YsMEJDZkgseVpBU0E7MkZEUWEsZ0NBQWdDO2tCQVo1QyxTQUFTOytCQUNFLG9DQUFvQyxhQUduQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLGtDQUFrQzt5QkFDOUM7cUJBQ0Y7NkdBUVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlOmNvbXBvbmVudC1zZWxlY3RvciB2YXJpYWJsZS1uYW1lICovXG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7UmVzdHJpY3RvckxldmVsU2VydmljZX0gZnJvbSAnLi4vcmVzdHJpY3Rvci1sZXZlbC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGVjaGxpZnktcmVzdHJpY3Rvci1sZXZlbC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0cmljdG9yLWxldmVsLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHJpY3Rvci1sZXZlbC1zZWxlY3Rvci5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogUmVzdHJpY3RvckxldmVsU2VsZWN0b3JDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVzdHJpY3RvckxldmVsU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlc3RyaWN0b3JMZXZlbFNlcnZpY2U6IFJlc3RyaWN0b3JMZXZlbFNlcnZpY2VcbiAgKSB7IH1cblxuICBASW5wdXQoKSBsYWJlbCA9ICdMZXZlbCc7XG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dMYWJlbCA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcbiAgdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgc2VsZWN0ZWRPcHRpb24gPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgb3B0aW9uczogYW55W10gPSBbXTtcblxuICBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBmZXRjaCB0aGUgZGF0YVxuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgLy8gbGlzdGVuIGZvciBpbnB1dCBjaGFuZ2VzXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbi52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBpZiAodGhpcy5fdmFsdWUgfHwgdGhpcy5fdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbi5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICBmbih2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBmb3JtIGNvbnRyb2wgdmFsdWVcbiAgICovXG4gIHJlc2V0RmllbGQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbi5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRhc2sgdHlwZXMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGZldGNoRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc3RyaWN0b3JMZXZlbFNlcnZpY2UuaW5kZXgoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlPy5kYXRhO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwib3B0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICA8c3BhbiAqbmdJZj1cInNob3dMYWJlbFwiIGNsYXNzPVwibXItMVwiPnt7IGxhYmVsIH19PC9zcGFuPiA8YnIgKm5nSWY9XCJzaG93TGFiZWxcIj5cbiAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIFtmb3JtQ29udHJvbF09XCJzZWxlY3RlZE9wdGlvblwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiPlxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uPy5pZFwiPlxuICAgICAge3sgb3B0aW9uPy50aXRsZSB9fVxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
|
package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.mjs
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RestrictorLevelSelectorComponent } from './restrictor-level-selector/restrictor-level-selector.component';
|
|
4
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
5
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class RestrictorLevelSelectorModule {
|
|
9
|
+
}
|
|
10
|
+
RestrictorLevelSelectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
RestrictorLevelSelectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelSelectorModule, declarations: [RestrictorLevelSelectorComponent], imports: [CommonModule,
|
|
12
|
+
MatButtonToggleModule,
|
|
13
|
+
ReactiveFormsModule,
|
|
14
|
+
MatTooltipModule], exports: [RestrictorLevelSelectorComponent] });
|
|
15
|
+
RestrictorLevelSelectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelSelectorModule, imports: [CommonModule,
|
|
16
|
+
MatButtonToggleModule,
|
|
17
|
+
ReactiveFormsModule,
|
|
18
|
+
MatTooltipModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelSelectorModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
declarations: [
|
|
23
|
+
RestrictorLevelSelectorComponent
|
|
24
|
+
],
|
|
25
|
+
imports: [
|
|
26
|
+
CommonModule,
|
|
27
|
+
MatButtonToggleModule,
|
|
28
|
+
ReactiveFormsModule,
|
|
29
|
+
MatTooltipModule
|
|
30
|
+
],
|
|
31
|
+
exports: [
|
|
32
|
+
RestrictorLevelSelectorComponent
|
|
33
|
+
]
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHJpY3Rvci1sZXZlbC1zZWxlY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3Jlc3RyaWN0b3JzL3Jlc3RyaWN0b3ItbGV2ZWwtc2VsZWN0b3IvcmVzdHJpY3Rvci1sZXZlbC1zZWxlY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbkgsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBa0IzRCxNQUFNLE9BQU8sNkJBQTZCOzswSEFBN0IsNkJBQTZCOzJIQUE3Qiw2QkFBNkIsaUJBWnRDLGdDQUFnQyxhQUdoQyxZQUFZO1FBQ1oscUJBQXFCO1FBQ3JCLG1CQUFtQjtRQUNuQixnQkFBZ0IsYUFHaEIsZ0NBQWdDOzJIQUd2Qiw2QkFBNkIsWUFUdEMsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixtQkFBbUI7UUFDbkIsZ0JBQWdCOzJGQU1QLDZCQUE2QjtrQkFkekMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZ0NBQWdDO3FCQUNqQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZ0NBQWdDO3FCQUNqQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVzdHJpY3RvckxldmVsU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL3Jlc3RyaWN0b3ItbGV2ZWwtc2VsZWN0b3IvcmVzdHJpY3Rvci1sZXZlbC1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRCdXR0b25Ub2dnbGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUmVzdHJpY3RvckxldmVsU2VsZWN0b3JDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBSZXN0cmljdG9yTGV2ZWxTZWxlY3RvckNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlc3RyaWN0b3JMZXZlbFNlbGVjdG9yTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TechlifyServiceBaseClass } from '../../base-model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../core";
|
|
5
|
+
export class RestrictorLevelService extends TechlifyServiceBaseClass {
|
|
6
|
+
constructor(httpService) {
|
|
7
|
+
super(httpService, 'restrictor-levels');
|
|
8
|
+
this.httpService = httpService;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
RestrictorLevelService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12
|
+
RestrictorLevelService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelService, providedIn: 'root' });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorLevelService, decorators: [{
|
|
14
|
+
type: Injectable,
|
|
15
|
+
args: [{
|
|
16
|
+
providedIn: 'root'
|
|
17
|
+
}]
|
|
18
|
+
}], ctorParameters: function () { return [{ type: i1.HttpService }]; } });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHJpY3Rvci1sZXZlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yZXN0cmljdG9ycy9yZXN0cmljdG9yLWxldmVsLXNlbGVjdG9yL3Jlc3RyaWN0b3ItbGV2ZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7QUFLMUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHdCQUF3QjtJQUVsRSxZQUNVLFdBQXdCO1FBRWhDLEtBQUssQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUZoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUdsQyxDQUFDOzttSEFOVSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQge1RlY2hsaWZ5U2VydmljZUJhc2VDbGFzc30gZnJvbSAnLi4vLi4vYmFzZS1tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlc3RyaWN0b3JMZXZlbFNlcnZpY2UgZXh0ZW5kcyBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3Mge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGh0dHBTZXJ2aWNlLCAncmVzdHJpY3Rvci1sZXZlbHMnKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* tslint:disable:component-selector variable-name */
|
|
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 "../restrictor-status.service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@angular/material/button-toggle";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
export class RestrictorStatusSelectorComponent {
|
|
10
|
+
constructor(restrictorStatusService) {
|
|
11
|
+
this.restrictorStatusService = restrictorStatusService;
|
|
12
|
+
this.label = 'Status';
|
|
13
|
+
this.multiple = false;
|
|
14
|
+
this.showLabel = true;
|
|
15
|
+
this.valueChanged = false;
|
|
16
|
+
this.disabled = false;
|
|
17
|
+
this.selectedOption = new FormControl();
|
|
18
|
+
this.options = [];
|
|
19
|
+
this.onChange = (value) => { };
|
|
20
|
+
this.onTouched = () => { };
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
// fetch the data
|
|
24
|
+
this.fetchData();
|
|
25
|
+
// listen for input changes
|
|
26
|
+
this.selectedOption.valueChanges.subscribe((value) => {
|
|
27
|
+
if (this._value || this._value === '') {
|
|
28
|
+
this.valueChanged = true;
|
|
29
|
+
this.onChange(value);
|
|
30
|
+
this.onTouched();
|
|
31
|
+
}
|
|
32
|
+
this._value = value;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
writeValue(value) {
|
|
36
|
+
this.selectedOption.setValue(value);
|
|
37
|
+
}
|
|
38
|
+
registerOnChange(fn) {
|
|
39
|
+
this.onChange = (value) => {
|
|
40
|
+
this.valueChanged = true;
|
|
41
|
+
this._value = value;
|
|
42
|
+
fn(value);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
registerOnTouched(fn) {
|
|
46
|
+
this.onTouched = fn;
|
|
47
|
+
}
|
|
48
|
+
setDisabledState(isDisabled) {
|
|
49
|
+
this.disabled = isDisabled;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Reset the form control value
|
|
53
|
+
*/
|
|
54
|
+
resetField() {
|
|
55
|
+
this.selectedOption.setValue('');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get task types.
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
fetchData() {
|
|
62
|
+
this.restrictorStatusService.index().subscribe((response) => {
|
|
63
|
+
this.options = response?.data;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
RestrictorStatusSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorStatusSelectorComponent, deps: [{ token: i1.RestrictorStatusService }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
RestrictorStatusSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: RestrictorStatusSelectorComponent, selector: "techlify-restrictor-status-selector", inputs: { label: "label", multiple: "multiple", showLabel: "showLabel" }, providers: [
|
|
69
|
+
{
|
|
70
|
+
provide: NG_VALUE_ACCESSOR,
|
|
71
|
+
multi: true,
|
|
72
|
+
useExisting: RestrictorStatusSelectorComponent
|
|
73
|
+
}
|
|
74
|
+
], ngImport: i0, template: "<div *ngIf=\"options?.length > 0\">\n <span *ngIf=\"showLabel\" class=\"mr-1\">{{ label }}</span> <br *ngIf=\"showLabel\">\n <mat-button-toggle-group [formControl]=\"selectedOption\" [multiple]=\"multiple\">\n <mat-button-toggle *ngFor=\"let option of options\"\n [value]=\"option?.id\">\n {{ option?.title }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RestrictorStatusSelectorComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'techlify-restrictor-status-selector', providers: [
|
|
78
|
+
{
|
|
79
|
+
provide: NG_VALUE_ACCESSOR,
|
|
80
|
+
multi: true,
|
|
81
|
+
useExisting: RestrictorStatusSelectorComponent
|
|
82
|
+
}
|
|
83
|
+
], template: "<div *ngIf=\"options?.length > 0\">\n <span *ngIf=\"showLabel\" class=\"mr-1\">{{ label }}</span> <br *ngIf=\"showLabel\">\n <mat-button-toggle-group [formControl]=\"selectedOption\" [multiple]=\"multiple\">\n <mat-button-toggle *ngFor=\"let option of options\"\n [value]=\"option?.id\">\n {{ option?.title }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n" }]
|
|
84
|
+
}], ctorParameters: function () { return [{ type: i1.RestrictorStatusService }]; }, propDecorators: { label: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], multiple: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], showLabel: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHJpY3Rvci1zdGF0dXMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yZXN0cmljdG9ycy9yZXN0cmljdG9yLXN0YXR1cy1zZWxlY3Rvci9yZXN0cmljdG9yLXN0YXR1cy1zZWxlY3Rvci9yZXN0cmljdG9yLXN0YXR1cy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3Jlc3RyaWN0b3JzL3Jlc3RyaWN0b3Itc3RhdHVzLXNlbGVjdG9yL3Jlc3RyaWN0b3Itc3RhdHVzLXNlbGVjdG9yL3Jlc3RyaWN0b3Itc3RhdHVzLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWU5RCxNQUFNLE9BQU8saUNBQWlDO0lBRTVDLFlBQ1UsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFHakQsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHMUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUVwQixhQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUU5QixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBZmpCLENBQUM7SUFpQkwsUUFBUTtRQUNOLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSyxTQUFTO1FBQ2YsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzhIQXRFVSxpQ0FBaUM7a0hBQWpDLGlDQUFpQyx3SUFSakM7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsaUNBQWlDO1NBQy9DO0tBQ0YsMEJDZkgseVpBU0E7MkZEUWEsaUNBQWlDO2tCQVo3QyxTQUFTOytCQUNFLHFDQUFxQyxhQUdwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLG1DQUFtQzt5QkFDL0M7cUJBQ0Y7OEdBUVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlOmNvbXBvbmVudC1zZWxlY3RvciB2YXJpYWJsZS1uYW1lICovXG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtSZXN0cmljdG9yU3RhdHVzU2VydmljZX0gZnJvbSAnLi4vcmVzdHJpY3Rvci1zdGF0dXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RlY2hsaWZ5LXJlc3RyaWN0b3Itc3RhdHVzLXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3RyaWN0b3Itc3RhdHVzLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHJpY3Rvci1zdGF0dXMtc2VsZWN0b3IuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IFJlc3RyaWN0b3JTdGF0dXNTZWxlY3RvckNvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZXN0cmljdG9yU3RhdHVzU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVzdHJpY3RvclN0YXR1c1NlcnZpY2U6IFJlc3RyaWN0b3JTdGF0dXNTZXJ2aWNlXG4gICkgeyB9XG5cbiAgQElucHV0KCkgbGFiZWwgPSAnU3RhdHVzJztcbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0xhYmVsID0gdHJ1ZTtcblxuICBwcml2YXRlIF92YWx1ZTogYW55O1xuICB2YWx1ZUNoYW5nZWQgPSBmYWxzZTtcblxuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBzZWxlY3RlZE9wdGlvbiA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBvcHRpb25zOiBhbnlbXSA9IFtdO1xuXG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGZldGNoIHRoZSBkYXRhXG4gICAgdGhpcy5mZXRjaERhdGEoKTtcbiAgICAvLyBsaXN0ZW4gZm9yIGlucHV0IGNoYW5nZXNcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLl92YWx1ZSB8fCB0aGlzLl92YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIGZuKHZhbHVlKTtcbiAgICB9O1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIGZvcm0gY29udHJvbCB2YWx1ZVxuICAgKi9cbiAgcmVzZXRGaWVsZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uLnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGFzayB0eXBlcy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZmV0Y2hEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMucmVzdHJpY3RvclN0YXR1c1NlcnZpY2UuaW5kZXgoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlPy5kYXRhO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJvcHRpb25zPy5sZW5ndGggPiAwXCI+XG4gIDxzcGFuICpuZ0lmPVwic2hvd0xhYmVsXCIgY2xhc3M9XCJtci0xXCI+e3sgbGFiZWwgfX08L3NwYW4+IDxiciAqbmdJZj1cInNob3dMYWJlbFwiPlxuICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgW2Zvcm1Db250cm9sXT1cInNlbGVjdGVkT3B0aW9uXCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCI+XG4gICAgPG1hdC1idXR0b24tdG9nZ2xlICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24/LmlkXCI+XG4gICAgICB7eyBvcHRpb24/LnRpdGxlIH19XG4gICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbjwvZGl2PlxuIl19
|