@cleavelandprice/ngx-lib 3.10.0 → 3.11.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 (79) hide show
  1. package/active-directory/gui/components/user-chooser/user-chooser.component.d.ts +2 -1
  2. package/active-directory/gui/components/user-form-field/user-form-field.component.d.ts +1 -1
  3. package/active-directory/gui/model/selectable-group.d.ts +4 -0
  4. package/active-directory/gui/model/selectable-user.d.ts +1 -4
  5. package/esm2022/active-directory/active-directory.module.mjs +8 -9
  6. package/esm2022/active-directory/gui/components/user-chooser/user-chooser.component.mjs +18 -20
  7. package/esm2022/active-directory/gui/components/user-form-field/user-form-field.component.mjs +16 -18
  8. package/esm2022/active-directory/gui/gui.module.mjs +8 -9
  9. package/esm2022/active-directory/gui/model/selectable-group.mjs +2 -0
  10. package/esm2022/active-directory/gui/model/selectable-user.mjs +1 -1
  11. package/esm2022/active-directory/services/active-directory.service.mjs +7 -8
  12. package/esm2022/authentication/authentication.base.module.mjs +6 -7
  13. package/esm2022/authentication/object/object.module.mjs +8 -9
  14. package/esm2022/authentication/object/services/authentication.service.mjs +8 -9
  15. package/esm2022/authentication/token/gui/components/login/login.component.mjs +8 -10
  16. package/esm2022/authentication/token/gui/components/login-form/login-form.component.mjs +15 -17
  17. package/esm2022/authentication/token/gui/services/authentication.service.mjs +7 -8
  18. package/esm2022/authentication/token/gui/token-gui.module.mjs +8 -9
  19. package/esm2022/authentication/token/services/authentication.service.mjs +7 -8
  20. package/esm2022/authentication/token/token.module.mjs +8 -9
  21. package/esm2022/dialog/components/base/base.component.mjs +12 -14
  22. package/esm2022/dialog/components/choice/choice.component.mjs +7 -8
  23. package/esm2022/dialog/components/confirmation/confirmation.component.mjs +7 -8
  24. package/esm2022/dialog/components/input/input.component.mjs +7 -8
  25. package/esm2022/dialog/components/message/message.component.mjs +7 -8
  26. package/esm2022/dialog/dialog.module.mjs +6 -7
  27. package/esm2022/lib/model/service-config.mjs +1 -1
  28. package/esm2022/lib/ngx-lib.module.mjs +8 -9
  29. package/esm2022/lib/services/app-path-config.service.mjs +7 -8
  30. package/esm2022/msgraph/msgraph.module.mjs +8 -9
  31. package/esm2022/quill/components/editor/editor.component.mjs +9 -10
  32. package/esm2022/quill/components/raw/raw.component.mjs +7 -8
  33. package/esm2022/quill/mention/components/editor/editor.component.mjs +9 -10
  34. package/esm2022/quill/mention/quill-mention.module.mjs +8 -9
  35. package/esm2022/quill/quill.module.mjs +8 -9
  36. package/esm2022/sharepoint/components/employee-photo/employee-photo.component.mjs +7 -8
  37. package/esm2022/sharepoint/pipes/employee-photo-url.pipe.mjs +6 -7
  38. package/esm2022/sharepoint/services/sharepoint.service.mjs +7 -8
  39. package/esm2022/sharepoint/sharepoint.module.mjs +8 -9
  40. package/esm2022/table/components/table/table.component.mjs +5 -6
  41. package/esm2022/upload/components/upload/upload.component.mjs +6 -7
  42. package/esm2022/upload/components/upload-dialog/upload-dialog.component.mjs +11 -12
  43. package/esm2022/upload/services/upload.service.mjs +7 -8
  44. package/esm2022/upload/upload.module.mjs +8 -9
  45. package/esm2022/url-utilities/pipes/safe-resource-url.pipe.mjs +6 -7
  46. package/esm2022/url-utilities/pipes/safe-url.pipe.mjs +6 -7
  47. package/esm2022/url-utilities/pipes/uri-scheme.pipe.mjs +5 -6
  48. package/esm2022/url-utilities/url-utilities.module.mjs +6 -7
  49. package/fesm2022/cleavelandprice-ngx-lib-active-directory-gui.mjs +31 -32
  50. package/fesm2022/cleavelandprice-ngx-lib-active-directory-gui.mjs.map +1 -1
  51. package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs +11 -11
  52. package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -1
  53. package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs +12 -12
  54. package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
  55. package/fesm2022/cleavelandprice-ngx-lib-authentication-token-gui.mjs +30 -31
  56. package/fesm2022/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +1 -1
  57. package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs +11 -11
  58. package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
  59. package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs +4 -4
  60. package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
  61. package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs +34 -35
  62. package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
  63. package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs +6 -6
  64. package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs.map +1 -1
  65. package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs +13 -13
  66. package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs.map +1 -1
  67. package/fesm2022/cleavelandprice-ngx-lib-quill.mjs +18 -18
  68. package/fesm2022/cleavelandprice-ngx-lib-quill.mjs.map +1 -1
  69. package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs +20 -20
  70. package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -1
  71. package/fesm2022/cleavelandprice-ngx-lib-table.mjs +3 -3
  72. package/fesm2022/cleavelandprice-ngx-lib-table.mjs.map +1 -1
  73. package/fesm2022/cleavelandprice-ngx-lib-upload.mjs +25 -25
  74. package/fesm2022/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
  75. package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs +15 -15
  76. package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -1
  77. package/fesm2022/cleavelandprice-ngx-lib.mjs +11 -11
  78. package/fesm2022/cleavelandprice-ngx-lib.mjs.map +1 -1
  79. package/package.json +3 -3
@@ -1,6 +1,6 @@
1
1
  import { Pipe } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- class UriSchemePipe {
3
+ export class UriSchemePipe {
4
4
  // https://docs.microsoft.com/en-us/office/client-developer/office-uri-schemes
5
5
  transform(value, ignoreLocalStorage = false) {
6
6
  if (!localStorage.getItem('useUriScheme') && !ignoreLocalStorage) {
@@ -92,15 +92,14 @@ class UriSchemePipe {
92
92
  return `of${openMode}`; // default: open file as view/edit
93
93
  }
94
94
  }
95
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UriSchemePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
96
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.4", ngImport: i0, type: UriSchemePipe, name: "uriScheme", pure: false }); }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UriSchemePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
96
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: UriSchemePipe, name: "uriScheme", pure: false }); }
97
97
  }
98
- export { UriSchemePipe };
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UriSchemePipe, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UriSchemePipe, decorators: [{
100
99
  type: Pipe,
101
100
  args: [{
102
101
  name: 'uriScheme',
103
102
  pure: false
104
103
  }]
105
104
  }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLXNjaGVtZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXJsLXV0aWxpdGllcy9zcmMvcGlwZXMvdXJpLXNjaGVtZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUVwRCxNQUlhLGFBQWE7SUFDeEIsOEVBQThFO0lBRTlFLFNBQVMsQ0FBQyxLQUFhLEVBQUUsa0JBQWtCLEdBQUcsS0FBSztRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUVuRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztTQUFFO1FBRWpDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVoQyxPQUFPLE1BQU0sR0FBRyxJQUFJLE9BQU8sTUFBTSxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU8sR0FBRyxDQUFDLFNBQWlCO1FBQzNCLFFBQVEsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQy9CLFlBQVk7WUFDWixLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQ3hCLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDekIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxFQUFFLFlBQVk7Z0JBQ2hELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDeEIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxLQUFLLENBQUM7WUFDakQsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxFQUFFLFlBQVk7Z0JBQ2hELE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDeEIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDbEQsS0FBSyxNQUFNLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUN6QixLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLEVBQUUsWUFBWTtnQkFDaEQsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUN4QixLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxFQUFFLFlBQVk7Z0JBQ25DLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxPQUFPLENBQUM7WUFBQyxLQUFLLE9BQU8sQ0FBQztZQUFDLEtBQUssT0FBTyxDQUFDO1lBQ3JELEtBQUssT0FBTyxFQUFFLFlBQVk7Z0JBQ3hCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDeEIsS0FBSyxLQUFLLEVBQUUsWUFBWTtnQkFDdEIsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sV0FBVyxDQUFDO1lBQ3JCLEtBQUssS0FBSztnQkFDUixPQUFPLFVBQVUsQ0FBQztZQUNwQjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVPLE9BQU8sQ0FBQyxTQUFpQjtRQUMvQixRQUFRLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUMvQixLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDckMsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQ3JDLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUNyQyxLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQ3hCLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDLENBQUMsb0JBQW9CO1lBQ3BDO2dCQUNFLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDLDJCQUEyQjtnQkFDakQsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDLENBQUMsa0NBQWtDO1NBQzdEO0lBQ0gsQ0FBQzs4R0FoRVUsYUFBYTs0R0FBYixhQUFhOztTQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLEtBQUs7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3VyaVNjaGVtZScsXG4gIHB1cmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIFVyaVNjaGVtZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvb2ZmaWNlL2NsaWVudC1kZXZlbG9wZXIvb2ZmaWNlLXVyaS1zY2hlbWVzXG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGlnbm9yZUxvY2FsU3RvcmFnZSA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VVcmlTY2hlbWUnKSAmJiAhaWdub3JlTG9jYWxTdG9yYWdlKSB7IHJldHVybiB2YWx1ZTsgfVxuXG4gICAgY29uc3QgdXJsU3BsaXQgPSB2YWx1ZS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IHVybFNwbGl0W3VybFNwbGl0Lmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKCFleHRlbnNpb24pIHsgcmV0dXJuIHZhbHVlOyB9XG5cbiAgICBjb25zdCBjb21tYW5kID0gdGhpcy5jb21tYW5kKGV4dGVuc2lvbik7XG4gICAgY29uc3QgYXBwID0gdGhpcy5hcHAoZXh0ZW5zaW9uKTtcblxuICAgIHJldHVybiBgbXMtJHthcHB9OiR7Y29tbWFuZH18dXwke3ZhbHVlfWA7XG4gIH1cblxuICBwcml2YXRlIGFwcChleHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChleHRlbnNpb24udG9Mb3dlckNhc2UoKSkge1xuICAgICAgLy8gZG9jdW1lbnRzXG4gICAgICBjYXNlICdkb2MnOiBjYXNlICdkb2N4JzpcbiAgICAgIGNhc2UgJ2RvY20nOiBjYXNlICdkb2NiJzpcbiAgICAgIGNhc2UgJ2RvdCc6IGNhc2UgJ2RvdHgnOiBjYXNlICdkb3RtJzogLy8gdGVtcGxhdGVzXG4gICAgICAgIHJldHVybiAnd29yZCc7XG4gICAgICBjYXNlICd4bHMnOiBjYXNlICd4bHN4JzpcbiAgICAgIGNhc2UgJ3hsbSc6IGNhc2UgJ3hsc20nOiBjYXNlICd4bHNiJzogY2FzZSAneGx3JzpcbiAgICAgIGNhc2UgJ3hsdCc6IGNhc2UgJ3hsdHgnOiBjYXNlICd4bHRtJzogLy8gdGVtcGxhdGVzXG4gICAgICAgIHJldHVybiAnZXhjZWwnO1xuICAgICAgY2FzZSAncHB0JzogY2FzZSAncHB0eCc6XG4gICAgICBjYXNlICdwcHMnOiBjYXNlICdwcHN4JzogY2FzZSAncHB0bSc6IGNhc2UgJ3Bwc20nOlxuICAgICAgY2FzZSAnc2xkeCc6IGNhc2UgJ3NsZG0nOlxuICAgICAgY2FzZSAncG90JzogY2FzZSAncG90eCc6IGNhc2UgJ3BvdG0nOiAvLyB0ZW1wbGF0ZXNcbiAgICAgICAgcmV0dXJuICdwb3dlcnBvaW50JztcbiAgICAgIGNhc2UgJ3ZzZCc6IGNhc2UgJ3ZzZHgnOlxuICAgICAgY2FzZSAndnN0JzogY2FzZSAndnN0eCc6IC8vIHRlbXBsYXRlc1xuICAgICAgICByZXR1cm4gJ3Zpc2lvJztcbiAgICAgIGNhc2UgJ21kYic6IGNhc2UgJ2FjY2RiJzogY2FzZSAnYWNjZGUnOiBjYXNlICdhY2Nkcic6XG4gICAgICBjYXNlICdhY2NkdCc6IC8vIHRlbXBsYXRlc1xuICAgICAgICByZXR1cm4gJ2FjY2Vzcyc7XG4gICAgICBjYXNlICdtcHAnOiBjYXNlICdtcHB4JzpcbiAgICAgIGNhc2UgJ21wdCc6IC8vIHRlbXBsYXRlc1xuICAgICAgICByZXR1cm4gJ3Byb2plY3QnO1xuICAgICAgY2FzZSAncHViJzpcbiAgICAgICAgcmV0dXJuICdwdWJsaXNoZXInO1xuICAgICAgY2FzZSAneHNuJzpcbiAgICAgICAgcmV0dXJuICdpbmZvcGF0aCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21tYW5kKGV4dGVuc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdkb3QnOiBjYXNlICdkb3R4JzogY2FzZSAnZG90bSc6XG4gICAgICBjYXNlICd4bHQnOiBjYXNlICd4bHR4JzogY2FzZSAneGx0bSc6XG4gICAgICBjYXNlICdwb3QnOiBjYXNlICdwb3R4JzogY2FzZSAncG90bSc6XG4gICAgICBjYXNlICd2c3QnOiBjYXNlICd2c3R4JzpcbiAgICAgIGNhc2UgJ2FjY2R0JzpcbiAgICAgIGNhc2UgJ21wdCc6XG4gICAgICAgIHJldHVybiAnbmZ0JzsgLy8gbmV3IGZyb20gdGVtcGxhdGVcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnN0IG9wZW5Nb2RlID0gJ3YnOyAvLyBmb3Igdmlldywgb3IgJ2UnIG9yIGVkaXRcbiAgICAgICAgcmV0dXJuIGBvZiR7b3Blbk1vZGV9YDsgLy8gZGVmYXVsdDogb3BlbiBmaWxlIGFzIHZpZXcvZWRpdFxuICAgIH1cbiAgfVxufVxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLXNjaGVtZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXJsLXV0aWxpdGllcy9zcmMvcGlwZXMvdXJpLXNjaGVtZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTtJQUN4Qiw4RUFBOEU7SUFFOUUsU0FBUyxDQUFDLEtBQWEsRUFBRSxrQkFBa0IsR0FBRyxLQUFLO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUFDLE9BQU8sS0FBSyxDQUFDO1FBQUMsQ0FBQztRQUVuRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLE9BQU8sS0FBSyxDQUFDO1FBQUMsQ0FBQztRQUVqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFaEMsT0FBTyxNQUFNLEdBQUcsSUFBSSxPQUFPLE1BQU0sS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVPLEdBQUcsQ0FBQyxTQUFpQjtRQUMzQixRQUFRLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLFlBQVk7WUFDWixLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQ3hCLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDekIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxFQUFFLFlBQVk7Z0JBQ2hELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDeEIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxLQUFLLENBQUM7WUFDakQsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxFQUFFLFlBQVk7Z0JBQ2hELE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDeEIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDbEQsS0FBSyxNQUFNLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUN6QixLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLEVBQUUsWUFBWTtnQkFDaEQsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUN4QixLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxFQUFFLFlBQVk7Z0JBQ25DLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxPQUFPLENBQUM7WUFBQyxLQUFLLE9BQU8sQ0FBQztZQUFDLEtBQUssT0FBTyxDQUFDO1lBQ3JELEtBQUssT0FBTyxFQUFFLFlBQVk7Z0JBQ3hCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDeEIsS0FBSyxLQUFLLEVBQUUsWUFBWTtnQkFDdEIsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sV0FBVyxDQUFDO1lBQ3JCLEtBQUssS0FBSztnQkFDUixPQUFPLFVBQVUsQ0FBQztZQUNwQjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLFNBQWlCO1FBQy9CLFFBQVEsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDaEMsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQ3JDLEtBQUssS0FBSyxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUNyQyxLQUFLLEtBQUssQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDO1lBQUMsS0FBSyxNQUFNLENBQUM7WUFDckMsS0FBSyxLQUFLLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQztZQUN4QixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssS0FBSztnQkFDUixPQUFPLEtBQUssQ0FBQyxDQUFDLG9CQUFvQjtZQUNwQztnQkFDRSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQywyQkFBMkI7Z0JBQ2pELE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQzs4R0FoRVUsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAndXJpU2NoZW1lJyxcbiAgcHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgVXJpU2NoZW1lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvLyBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9vZmZpY2UvY2xpZW50LWRldmVsb3Blci9vZmZpY2UtdXJpLXNjaGVtZXNcblxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgaWdub3JlTG9jYWxTdG9yYWdlID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICghbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZVVyaVNjaGVtZScpICYmICFpZ25vcmVMb2NhbFN0b3JhZ2UpIHsgcmV0dXJuIHZhbHVlOyB9XG5cbiAgICBjb25zdCB1cmxTcGxpdCA9IHZhbHVlLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gdXJsU3BsaXRbdXJsU3BsaXQubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoIWV4dGVuc2lvbikgeyByZXR1cm4gdmFsdWU7IH1cblxuICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLmNvbW1hbmQoZXh0ZW5zaW9uKTtcbiAgICBjb25zdCBhcHAgPSB0aGlzLmFwcChleHRlbnNpb24pO1xuXG4gICAgcmV0dXJuIGBtcy0ke2FwcH06JHtjb21tYW5kfXx1fCR7dmFsdWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwKGV4dGVuc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAvLyBkb2N1bWVudHNcbiAgICAgIGNhc2UgJ2RvYyc6IGNhc2UgJ2RvY3gnOlxuICAgICAgY2FzZSAnZG9jbSc6IGNhc2UgJ2RvY2InOlxuICAgICAgY2FzZSAnZG90JzogY2FzZSAnZG90eCc6IGNhc2UgJ2RvdG0nOiAvLyB0ZW1wbGF0ZXNcbiAgICAgICAgcmV0dXJuICd3b3JkJztcbiAgICAgIGNhc2UgJ3hscyc6IGNhc2UgJ3hsc3gnOlxuICAgICAgY2FzZSAneGxtJzogY2FzZSAneGxzbSc6IGNhc2UgJ3hsc2InOiBjYXNlICd4bHcnOlxuICAgICAgY2FzZSAneGx0JzogY2FzZSAneGx0eCc6IGNhc2UgJ3hsdG0nOiAvLyB0ZW1wbGF0ZXNcbiAgICAgICAgcmV0dXJuICdleGNlbCc7XG4gICAgICBjYXNlICdwcHQnOiBjYXNlICdwcHR4JzpcbiAgICAgIGNhc2UgJ3Bwcyc6IGNhc2UgJ3Bwc3gnOiBjYXNlICdwcHRtJzogY2FzZSAncHBzbSc6XG4gICAgICBjYXNlICdzbGR4JzogY2FzZSAnc2xkbSc6XG4gICAgICBjYXNlICdwb3QnOiBjYXNlICdwb3R4JzogY2FzZSAncG90bSc6IC8vIHRlbXBsYXRlc1xuICAgICAgICByZXR1cm4gJ3Bvd2VycG9pbnQnO1xuICAgICAgY2FzZSAndnNkJzogY2FzZSAndnNkeCc6XG4gICAgICBjYXNlICd2c3QnOiBjYXNlICd2c3R4JzogLy8gdGVtcGxhdGVzXG4gICAgICAgIHJldHVybiAndmlzaW8nO1xuICAgICAgY2FzZSAnbWRiJzogY2FzZSAnYWNjZGInOiBjYXNlICdhY2NkZSc6IGNhc2UgJ2FjY2RyJzpcbiAgICAgIGNhc2UgJ2FjY2R0JzogLy8gdGVtcGxhdGVzXG4gICAgICAgIHJldHVybiAnYWNjZXNzJztcbiAgICAgIGNhc2UgJ21wcCc6IGNhc2UgJ21wcHgnOlxuICAgICAgY2FzZSAnbXB0JzogLy8gdGVtcGxhdGVzXG4gICAgICAgIHJldHVybiAncHJvamVjdCc7XG4gICAgICBjYXNlICdwdWInOlxuICAgICAgICByZXR1cm4gJ3B1Ymxpc2hlcic7XG4gICAgICBjYXNlICd4c24nOlxuICAgICAgICByZXR1cm4gJ2luZm9wYXRoJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbW1hbmQoZXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2RvdCc6IGNhc2UgJ2RvdHgnOiBjYXNlICdkb3RtJzpcbiAgICAgIGNhc2UgJ3hsdCc6IGNhc2UgJ3hsdHgnOiBjYXNlICd4bHRtJzpcbiAgICAgIGNhc2UgJ3BvdCc6IGNhc2UgJ3BvdHgnOiBjYXNlICdwb3RtJzpcbiAgICAgIGNhc2UgJ3ZzdCc6IGNhc2UgJ3ZzdHgnOlxuICAgICAgY2FzZSAnYWNjZHQnOlxuICAgICAgY2FzZSAnbXB0JzpcbiAgICAgICAgcmV0dXJuICduZnQnOyAvLyBuZXcgZnJvbSB0ZW1wbGF0ZVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc3Qgb3Blbk1vZGUgPSAndic7IC8vIGZvciB2aWV3LCBvciAnZScgb3IgZWRpdFxuICAgICAgICByZXR1cm4gYG9mJHtvcGVuTW9kZX1gOyAvLyBkZWZhdWx0OiBvcGVuIGZpbGUgYXMgdmlldy9lZGl0XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -4,17 +4,16 @@ import { SafeResourceUrlPipe } from './pipes/safe-resource-url.pipe';
4
4
  import { SafeUrlPipe } from './pipes/safe-url.pipe';
5
5
  import { UriSchemePipe } from './pipes/uri-scheme.pipe';
6
6
  import * as i0 from "@angular/core";
7
- class UrlUtilitiesModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UrlUtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.4", ngImport: i0, type: UrlUtilitiesModule, declarations: [SafeResourceUrlPipe,
7
+ export class UrlUtilitiesModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UrlUtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: UrlUtilitiesModule, declarations: [SafeResourceUrlPipe,
10
10
  SafeUrlPipe,
11
11
  UriSchemePipe], imports: [CommonModule], exports: [SafeResourceUrlPipe,
12
12
  SafeUrlPipe,
13
13
  UriSchemePipe] }); }
14
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UrlUtilitiesModule, imports: [CommonModule] }); }
14
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UrlUtilitiesModule, imports: [CommonModule] }); }
15
15
  }
16
- export { UrlUtilitiesModule };
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UrlUtilitiesModule, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UrlUtilitiesModule, decorators: [{
18
17
  type: NgModule,
19
18
  args: [{
20
19
  declarations: [
@@ -32,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
32
31
  ]
33
32
  }]
34
33
  }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLXV0aWxpdGllcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cmwtdXRpbGl0aWVzL3NyYy91cmwtdXRpbGl0aWVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUV4RCxNQWVhLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsaUJBYjNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsYUFBYSxhQUdiLFlBQVksYUFHWixtQkFBbUI7WUFDbkIsV0FBVztZQUNYLGFBQWE7K0dBR0osa0JBQWtCLFlBUjNCLFlBQVk7O1NBUUgsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBZjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsYUFBYTtxQkFDZDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmxQaXBlIH0gZnJvbSAnLi9waXBlcy9zYWZlLXJlc291cmNlLXVybC5waXBlJztcbmltcG9ydCB7IFNhZmVVcmxQaXBlIH0gZnJvbSAnLi9waXBlcy9zYWZlLXVybC5waXBlJztcbmltcG9ydCB7IFVyaVNjaGVtZVBpcGUgfSBmcm9tICcuL3BpcGVzL3VyaS1zY2hlbWUucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNhZmVSZXNvdXJjZVVybFBpcGUsXG4gICAgU2FmZVVybFBpcGUsXG4gICAgVXJpU2NoZW1lUGlwZVxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTYWZlUmVzb3VyY2VVcmxQaXBlLFxuICAgIFNhZmVVcmxQaXBlLFxuICAgIFVyaVNjaGVtZVBpcGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVcmxVdGlsaXRpZXNNb2R1bGUgeyB9XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLXV0aWxpdGllcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cmwtdXRpbGl0aWVzL3NyYy91cmwtdXRpbGl0aWVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWlCeEQsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsaUJBYjNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsYUFBYSxhQUdiLFlBQVksYUFHWixtQkFBbUI7WUFDbkIsV0FBVztZQUNYLGFBQWE7K0dBR0osa0JBQWtCLFlBUjNCLFlBQVk7OzJGQVFILGtCQUFrQjtrQkFmOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxhQUFhO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtcmVzb3VyY2UtdXJsLnBpcGUnO1xuaW1wb3J0IHsgU2FmZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtdXJsLnBpcGUnO1xuaW1wb3J0IHsgVXJpU2NoZW1lUGlwZSB9IGZyb20gJy4vcGlwZXMvdXJpLXNjaGVtZS5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2FmZVJlc291cmNlVXJsUGlwZSxcbiAgICBTYWZlVXJsUGlwZSxcbiAgICBVcmlTY2hlbWVQaXBlXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNhZmVSZXNvdXJjZVVybFBpcGUsXG4gICAgU2FmZVVybFBpcGUsXG4gICAgVXJpU2NoZW1lUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFVybFV0aWxpdGllc01vZHVsZSB7IH1cbiJdfQ==
@@ -3,33 +3,32 @@ import { ActiveDirectoryService, ServiceConfig } from '@cleavelandprice/ngx-lib/
3
3
  export * from '@cleavelandprice/ngx-lib/active-directory';
4
4
  import * as i0 from '@angular/core';
5
5
  import { Component, Inject, ViewChild, EventEmitter, Output, Input, NgModule, Optional, SkipSelf } from '@angular/core';
6
- import * as i5 from '@angular/forms';
6
+ import * as i4 from '@angular/forms';
7
7
  import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
8
8
  import * as i1 from '@angular/material/dialog';
9
9
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
10
- import * as i10 from '@angular/material/list';
10
+ import * as i9 from '@angular/material/list';
11
11
  import { MatSelectionList, MatListModule } from '@angular/material/list';
12
12
  import { MatTableDataSource, MatTableModule } from '@angular/material/table';
13
13
  import { of, forkJoin, debounceTime } from 'rxjs';
14
14
  import * as i3 from '@cleavelandprice/ngx-lib/sharepoint';
15
- import * as i4 from '@angular/common';
16
- import { CommonModule } from '@angular/common';
17
- import * as i6 from '@angular/material/button';
15
+ import * as i5 from '@angular/material/button';
18
16
  import { MatButtonModule } from '@angular/material/button';
19
- import * as i7 from '@angular/material/form-field';
17
+ import * as i6 from '@angular/material/form-field';
20
18
  import { MatFormFieldModule } from '@angular/material/form-field';
21
- import * as i8 from '@angular/material/icon';
19
+ import * as i7 from '@angular/material/icon';
22
20
  import { MatIconModule } from '@angular/material/icon';
23
- import * as i9 from '@angular/material/input';
21
+ import * as i8 from '@angular/material/input';
24
22
  import { MatInputModule } from '@angular/material/input';
25
- import * as i11 from '@angular/material/progress-spinner';
23
+ import * as i10 from '@angular/material/progress-spinner';
26
24
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
27
- import * as i12 from '@angular/material/slide-toggle';
25
+ import * as i11 from '@angular/material/slide-toggle';
28
26
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
29
- import * as i13 from '@angular/material/tooltip';
27
+ import * as i12 from '@angular/material/tooltip';
30
28
  import { MatTooltipModule } from '@angular/material/tooltip';
31
- import * as i10$1 from '@angular/material/progress-bar';
29
+ import * as i9$1 from '@angular/material/progress-bar';
32
30
  import { MatProgressBarModule } from '@angular/material/progress-bar';
31
+ import { CommonModule } from '@angular/common';
33
32
 
34
33
  class UserChooserFilterOptions {
35
34
  constructor() {
@@ -446,16 +445,16 @@ class UserChooserComponent {
446
445
  .join('\n') :
447
446
  '';
448
447
  }
449
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UserChooserComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.ActiveDirectoryService }, { token: i3.SharePointService }], target: i0.ɵɵFactoryTarget.Component }); }
450
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: UserChooserComponent, selector: "ng-component", viewQueries: [{ propertyName: "selectionList", first: true, predicate: MatSelectionList, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], ngImport: i0, template: "<div id=\"dialog-title\">\n <h2 mat-dialog-title>{{ data.title }}</h2>\n\n <div id=\"num-selected\">\n {{ selectedOptions.length }} selected\n </div>\n</div>\n\n<mat-dialog-content>\n <div *ngIf=\"!(dataSource && photos)\">\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n <h2 id=\"spinner-message\">Getting users and photos...</h2>\n </div>\n\n <ng-container *ngIf=\"dataSource && photos\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field *ngIf=\"dataSource\">\n <input matInput placeholder=\"Search\" formControlName=\"filter\" #filterInput>\n\n <button *ngIf=\"filterForm.value.filter\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"filterForm.get('filter')?.setValue('')\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <mat-selection-list [multiple]=\"isMultiMode\"\n (selectionChange)=\"listSelectionChanged($event.options)\">\n\n <mat-list-option *ngFor=\"let user of dataSource?.filteredData\" [value]=\"user\" [selected]=\"user.selected\"\n (selectedChange)=\"optionSelectionChanged(option)\" #option>\n\n <img *ngIf=\"getPhoto(user)\" matListItemAvatar alt=\"\" [src]=\"getPhoto(user)\">\n\n <mat-icon *ngIf=\"!getPhoto(user)\" matListItemAvatar class=\"no-photo\"\n [fontIcon]=\"isUser(user) ? 'account_circle' : 'group'\">\n </mat-icon>\n \n <div class=\"user\">\n <div [matTooltip]=\"tooltip(user)\" class=\"user-name\">\n {{ user.displayName }}\n <div *ngIf=\"isUser(user) && data.showPhone && castUser(user).telephoneNumber\">{{ castUser(user).telephoneNumber }}</div>\n </div>\n \n <ng-container *ngIf=\"isUser(user)\">\n <div>{{ castUser(user).department }}</div>\n \n <div class=\"title\">{{ castUser(user).title }}</div>\n </ng-container>\n </div>\n </mat-list-option>\n </mat-selection-list>\n </ng-container>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <ng-container *ngIf=\"dataSource && photos\">\n <mat-slide-toggle *ngIf=\"selectedOptions.length\" (change)=\"hideUnselectedChanged($event.checked)\">\n Hide Unselected\n </mat-slide-toggle>\n\n <button mat-raised-button color=\"primary\" (click)=\"selectAll()\"\n *ngIf=\"isMultiMode\">\n <mat-icon fontIcon=\"select_all\"></mat-icon>\n <span class=\"hide-mobile\">Select All</span>\n </button>\n \n <button mat-raised-button color=\"primary\" (click)=\"deselectAll()\"\n *ngIf=\"isMultiMode && selectedOptions.length\">\n <mat-icon fontIcon=\"clear_all\"></mat-icon>\n <span class=\"hide-mobile\">Clear All</span>\n </button>\n\n <button *ngIf=\"isMultiMode || !data.closeWhenSelectionMade\" mat-raised-button color=\"primary\" (click)=\"close()\" matTooltip=\"Accept your selection\"\n [disabled]=\"!selectedOptions.length\">\n <mat-icon fontIcon=\"check\"></mat-icon>\n <span class=\"hide-mobile\">Ok</span>\n </button>\n </ng-container>\n\n <button mat-raised-button color=\"warn\" mat-dialog-close matTooltip=\"Close this window\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n <span class=\"hide-mobile\">Cancel</span>\n </button>\n</mat-dialog-actions>", styles: ["::ng-deep .mat-tooltip{font-size:1em!important;white-space:pre-line}mat-dialog-content{min-width:50vw}#dialog-title{display:flex;justify-content:space-between}#num-selected{margin:1em 1em 0 0}mat-spinner{margin:0 auto}#spinner-message{text-align:center;padding:.5em}mat-form-field{width:100%}.title{font-style:italic;color:#757575}img,.no-photo{width:2rem;height:2rem;font-size:2.3rem!important;border-radius:100%}.hide-mobile{display:none}mat-dialog-actions{display:grid;grid-auto-flow:column;grid-gap:1em;justify-content:center}.user-name{display:flex;justify-content:space-between}.user-name>div:last-child{margin-right:10rem;font-weight:400;font-style:italic;color:#757575}@media (min-width:801px){.user{display:grid;grid-template-columns:1fr 1fr 1fr}.user>div:first-child{font-weight:700}.hide-mobile{display:initial}}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i10.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i10.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
448
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UserChooserComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.ActiveDirectoryService }, { token: i3.SharePointService }], target: i0.ɵɵFactoryTarget.Component }); }
449
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: UserChooserComponent, selector: "ng-component", viewQueries: [{ propertyName: "selectionList", first: true, predicate: MatSelectionList, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], ngImport: i0, template: "<div id=\"dialog-title\">\n <h2 mat-dialog-title>{{ data.title }}</h2>\n\n <div id=\"num-selected\">\n {{ selectedOptions.length }} selected\n </div>\n</div>\n\n<mat-dialog-content>\n @if (!(dataSource && photos)) {\n <div>\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n <h2 id=\"spinner-message\">Getting users and photos...</h2>\n </div>\n }\n\n @if (dataSource && photos) {\n <form [formGroup]=\"filterForm\">\n @if (dataSource) {\n <mat-form-field>\n <input matInput placeholder=\"Search\" formControlName=\"filter\" #filterInput>\n @if (filterForm.value.filter) {\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"filterForm.get('filter')?.setValue('')\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n }\n </mat-form-field>\n }\n </form>\n <mat-selection-list [multiple]=\"isMultiMode\"\n (selectionChange)=\"listSelectionChanged($event.options)\">\n @for (user of dataSource?.filteredData; track user) {\n <mat-list-option [value]=\"user\" [selected]=\"user.selected\"\n (selectedChange)=\"optionSelectionChanged(option)\" #option>\n @if (getPhoto(user)) {\n <img matListItemAvatar alt=\"\" [src]=\"getPhoto(user)\">\n }\n @if (!getPhoto(user)) {\n <mat-icon matListItemAvatar class=\"no-photo\"\n [fontIcon]=\"isUser(user) ? 'account_circle' : 'group'\">\n </mat-icon>\n }\n <div class=\"user\">\n <div [matTooltip]=\"tooltip(user)\" class=\"user-name\">\n {{ user.displayName }}\n @if (isUser(user) && data.showPhone && castUser(user).telephoneNumber) {\n <div>{{ castUser(user).telephoneNumber }}</div>\n }\n </div>\n @if (isUser(user)) {\n <div>{{ castUser(user).department }}</div>\n <div class=\"title\">{{ castUser(user).title }}</div>\n }\n </div>\n </mat-list-option>\n }\n </mat-selection-list>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (dataSource && photos) {\n @if (selectedOptions.length) {\n <mat-slide-toggle (change)=\"hideUnselectedChanged($event.checked)\">\n Hide Unselected\n </mat-slide-toggle>\n }\n @if (isMultiMode) {\n <button mat-raised-button color=\"primary\" (click)=\"selectAll()\"\n >\n <mat-icon fontIcon=\"select_all\"></mat-icon>\n <span class=\"hide-mobile\">Select All</span>\n </button>\n }\n @if (isMultiMode && selectedOptions.length) {\n <button mat-raised-button color=\"primary\" (click)=\"deselectAll()\"\n >\n <mat-icon fontIcon=\"clear_all\"></mat-icon>\n <span class=\"hide-mobile\">Clear All</span>\n </button>\n }\n @if (isMultiMode || !data.closeWhenSelectionMade) {\n <button mat-raised-button color=\"primary\" (click)=\"close()\" matTooltip=\"Accept your selection\"\n [disabled]=\"!selectedOptions.length\">\n <mat-icon fontIcon=\"check\"></mat-icon>\n <span class=\"hide-mobile\">Ok</span>\n </button>\n }\n }\n\n <button mat-raised-button color=\"warn\" mat-dialog-close matTooltip=\"Close this window\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n <span class=\"hide-mobile\">Cancel</span>\n </button>\n</mat-dialog-actions>", styles: ["::ng-deep .mat-tooltip{font-size:1em!important;white-space:pre-line}mat-dialog-content{min-width:50vw}#dialog-title{display:flex;justify-content:space-between}#num-selected{margin:1em 1em 0 0}mat-spinner{margin:0 auto}#spinner-message{text-align:center;padding:.5em}mat-form-field{width:100%}.title{font-style:italic;color:#757575}img,.no-photo{width:2rem;height:2rem;font-size:2.3rem!important;border-radius:100%}.hide-mobile{display:none}mat-dialog-actions{display:grid;grid-auto-flow:column;grid-gap:1em;justify-content:center}.user-name{display:flex;justify-content:space-between}.user-name>div:last-child{margin-right:10rem;font-weight:400;font-style:italic;color:#757575}@media (min-width:801px){.user{display:grid;grid-template-columns:1fr 1fr 1fr}.user>div:first-child{font-weight:700}.hide-mobile{display:initial}}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"], dependencies: [{ 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.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: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.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: i9.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i9.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i9.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
451
450
  }
452
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UserChooserComponent, decorators: [{
451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UserChooserComponent, decorators: [{
453
452
  type: Component,
454
- args: [{ template: "<div id=\"dialog-title\">\n <h2 mat-dialog-title>{{ data.title }}</h2>\n\n <div id=\"num-selected\">\n {{ selectedOptions.length }} selected\n </div>\n</div>\n\n<mat-dialog-content>\n <div *ngIf=\"!(dataSource && photos)\">\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n <h2 id=\"spinner-message\">Getting users and photos...</h2>\n </div>\n\n <ng-container *ngIf=\"dataSource && photos\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field *ngIf=\"dataSource\">\n <input matInput placeholder=\"Search\" formControlName=\"filter\" #filterInput>\n\n <button *ngIf=\"filterForm.value.filter\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"filterForm.get('filter')?.setValue('')\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <mat-selection-list [multiple]=\"isMultiMode\"\n (selectionChange)=\"listSelectionChanged($event.options)\">\n\n <mat-list-option *ngFor=\"let user of dataSource?.filteredData\" [value]=\"user\" [selected]=\"user.selected\"\n (selectedChange)=\"optionSelectionChanged(option)\" #option>\n\n <img *ngIf=\"getPhoto(user)\" matListItemAvatar alt=\"\" [src]=\"getPhoto(user)\">\n\n <mat-icon *ngIf=\"!getPhoto(user)\" matListItemAvatar class=\"no-photo\"\n [fontIcon]=\"isUser(user) ? 'account_circle' : 'group'\">\n </mat-icon>\n \n <div class=\"user\">\n <div [matTooltip]=\"tooltip(user)\" class=\"user-name\">\n {{ user.displayName }}\n <div *ngIf=\"isUser(user) && data.showPhone && castUser(user).telephoneNumber\">{{ castUser(user).telephoneNumber }}</div>\n </div>\n \n <ng-container *ngIf=\"isUser(user)\">\n <div>{{ castUser(user).department }}</div>\n \n <div class=\"title\">{{ castUser(user).title }}</div>\n </ng-container>\n </div>\n </mat-list-option>\n </mat-selection-list>\n </ng-container>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <ng-container *ngIf=\"dataSource && photos\">\n <mat-slide-toggle *ngIf=\"selectedOptions.length\" (change)=\"hideUnselectedChanged($event.checked)\">\n Hide Unselected\n </mat-slide-toggle>\n\n <button mat-raised-button color=\"primary\" (click)=\"selectAll()\"\n *ngIf=\"isMultiMode\">\n <mat-icon fontIcon=\"select_all\"></mat-icon>\n <span class=\"hide-mobile\">Select All</span>\n </button>\n \n <button mat-raised-button color=\"primary\" (click)=\"deselectAll()\"\n *ngIf=\"isMultiMode && selectedOptions.length\">\n <mat-icon fontIcon=\"clear_all\"></mat-icon>\n <span class=\"hide-mobile\">Clear All</span>\n </button>\n\n <button *ngIf=\"isMultiMode || !data.closeWhenSelectionMade\" mat-raised-button color=\"primary\" (click)=\"close()\" matTooltip=\"Accept your selection\"\n [disabled]=\"!selectedOptions.length\">\n <mat-icon fontIcon=\"check\"></mat-icon>\n <span class=\"hide-mobile\">Ok</span>\n </button>\n </ng-container>\n\n <button mat-raised-button color=\"warn\" mat-dialog-close matTooltip=\"Close this window\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n <span class=\"hide-mobile\">Cancel</span>\n </button>\n</mat-dialog-actions>", styles: ["::ng-deep .mat-tooltip{font-size:1em!important;white-space:pre-line}mat-dialog-content{min-width:50vw}#dialog-title{display:flex;justify-content:space-between}#num-selected{margin:1em 1em 0 0}mat-spinner{margin:0 auto}#spinner-message{text-align:center;padding:.5em}mat-form-field{width:100%}.title{font-style:italic;color:#757575}img,.no-photo{width:2rem;height:2rem;font-size:2.3rem!important;border-radius:100%}.hide-mobile{display:none}mat-dialog-actions{display:grid;grid-auto-flow:column;grid-gap:1em;justify-content:center}.user-name{display:flex;justify-content:space-between}.user-name>div:last-child{margin-right:10rem;font-weight:400;font-style:italic;color:#757575}@media (min-width:801px){.user{display:grid;grid-template-columns:1fr 1fr 1fr}.user>div:first-child{font-weight:700}.hide-mobile{display:initial}}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"] }]
455
- }], ctorParameters: function () { return [{ type: UserChooserData, decorators: [{
453
+ args: [{ template: "<div id=\"dialog-title\">\n <h2 mat-dialog-title>{{ data.title }}</h2>\n\n <div id=\"num-selected\">\n {{ selectedOptions.length }} selected\n </div>\n</div>\n\n<mat-dialog-content>\n @if (!(dataSource && photos)) {\n <div>\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n <h2 id=\"spinner-message\">Getting users and photos...</h2>\n </div>\n }\n\n @if (dataSource && photos) {\n <form [formGroup]=\"filterForm\">\n @if (dataSource) {\n <mat-form-field>\n <input matInput placeholder=\"Search\" formControlName=\"filter\" #filterInput>\n @if (filterForm.value.filter) {\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"filterForm.get('filter')?.setValue('')\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n }\n </mat-form-field>\n }\n </form>\n <mat-selection-list [multiple]=\"isMultiMode\"\n (selectionChange)=\"listSelectionChanged($event.options)\">\n @for (user of dataSource?.filteredData; track user) {\n <mat-list-option [value]=\"user\" [selected]=\"user.selected\"\n (selectedChange)=\"optionSelectionChanged(option)\" #option>\n @if (getPhoto(user)) {\n <img matListItemAvatar alt=\"\" [src]=\"getPhoto(user)\">\n }\n @if (!getPhoto(user)) {\n <mat-icon matListItemAvatar class=\"no-photo\"\n [fontIcon]=\"isUser(user) ? 'account_circle' : 'group'\">\n </mat-icon>\n }\n <div class=\"user\">\n <div [matTooltip]=\"tooltip(user)\" class=\"user-name\">\n {{ user.displayName }}\n @if (isUser(user) && data.showPhone && castUser(user).telephoneNumber) {\n <div>{{ castUser(user).telephoneNumber }}</div>\n }\n </div>\n @if (isUser(user)) {\n <div>{{ castUser(user).department }}</div>\n <div class=\"title\">{{ castUser(user).title }}</div>\n }\n </div>\n </mat-list-option>\n }\n </mat-selection-list>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (dataSource && photos) {\n @if (selectedOptions.length) {\n <mat-slide-toggle (change)=\"hideUnselectedChanged($event.checked)\">\n Hide Unselected\n </mat-slide-toggle>\n }\n @if (isMultiMode) {\n <button mat-raised-button color=\"primary\" (click)=\"selectAll()\"\n >\n <mat-icon fontIcon=\"select_all\"></mat-icon>\n <span class=\"hide-mobile\">Select All</span>\n </button>\n }\n @if (isMultiMode && selectedOptions.length) {\n <button mat-raised-button color=\"primary\" (click)=\"deselectAll()\"\n >\n <mat-icon fontIcon=\"clear_all\"></mat-icon>\n <span class=\"hide-mobile\">Clear All</span>\n </button>\n }\n @if (isMultiMode || !data.closeWhenSelectionMade) {\n <button mat-raised-button color=\"primary\" (click)=\"close()\" matTooltip=\"Accept your selection\"\n [disabled]=\"!selectedOptions.length\">\n <mat-icon fontIcon=\"check\"></mat-icon>\n <span class=\"hide-mobile\">Ok</span>\n </button>\n }\n }\n\n <button mat-raised-button color=\"warn\" mat-dialog-close matTooltip=\"Close this window\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n <span class=\"hide-mobile\">Cancel</span>\n </button>\n</mat-dialog-actions>", styles: ["::ng-deep .mat-tooltip{font-size:1em!important;white-space:pre-line}mat-dialog-content{min-width:50vw}#dialog-title{display:flex;justify-content:space-between}#num-selected{margin:1em 1em 0 0}mat-spinner{margin:0 auto}#spinner-message{text-align:center;padding:.5em}mat-form-field{width:100%}.title{font-style:italic;color:#757575}img,.no-photo{width:2rem;height:2rem;font-size:2.3rem!important;border-radius:100%}.hide-mobile{display:none}mat-dialog-actions{display:grid;grid-auto-flow:column;grid-gap:1em;justify-content:center}.user-name{display:flex;justify-content:space-between}.user-name>div:last-child{margin-right:10rem;font-weight:400;font-style:italic;color:#757575}@media (min-width:801px){.user{display:grid;grid-template-columns:1fr 1fr 1fr}.user>div:first-child{font-weight:700}.hide-mobile{display:initial}}\n", ".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}\n"] }]
454
+ }], ctorParameters: () => [{ type: UserChooserData, decorators: [{
456
455
  type: Inject,
457
456
  args: [MAT_DIALOG_DATA]
458
- }] }, { type: i1.MatDialogRef }, { type: i2.ActiveDirectoryService }, { type: i3.SharePointService }]; }, propDecorators: { selectionList: [{
457
+ }] }, { type: i1.MatDialogRef }, { type: i2.ActiveDirectoryService }, { type: i3.SharePointService }], propDecorators: { selectionList: [{
459
458
  type: ViewChild,
460
459
  args: [MatSelectionList]
461
460
  }], filterInput: [{
@@ -553,12 +552,12 @@ class UserFormFieldComponent {
553
552
  this.photos = photos;
554
553
  });
555
554
  }
556
- isGroupAccount(accountName) {
557
- return !!this.groups?.find(g => g.sAMAccountName.toLowerCase() === accountName.toLowerCase());
558
- }
559
555
  getUser(accountName) {
560
556
  return this.users?.find(u => u.sAMAccountName.toLowerCase() === accountName.toLowerCase());
561
557
  }
558
+ getGroup(accountName) {
559
+ return this.groups?.find(g => g.sAMAccountName.toLowerCase() === accountName.toLowerCase());
560
+ }
562
561
  getPhoto(accountName) {
563
562
  const user = this.getUser(accountName);
564
563
  if (!user) {
@@ -569,13 +568,13 @@ class UserFormFieldComponent {
569
568
  p.displayName?.toLowerCase() === user.displayName.toLowerCase() ||
570
569
  p.title?.toLowerCase() === user.displayName.toLowerCase())?.encodedAbsUrl;
571
570
  }
572
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UserFormFieldComponent, deps: [{ token: i1.MatDialog }, { token: i2.ActiveDirectoryService }, { token: i3.SharePointService }], target: i0.ɵɵFactoryTarget.Component }); }
573
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: UserFormFieldComponent, selector: "cp-user-field", inputs: { placeholder: "placeholder", clickable: "clickable", userChooserData: "userChooserData" }, outputs: { usersSelected: "usersSelected", userUnSelected: "userUnSelected" }, ngImport: i0, template: "\n<!-- In Microsoft Edge, selectUser() never gets called if the input fields are disabled\n So... I'm dynamically setting the disabled property based on whether or not the browser is Edge.\n It's definitely a better experience if the field IS disabled.\n Otherwise, it's confusing - especially because Edge is SO SLOW to display the resulting dialog window.\n-->\n<!-- Update 8/24/2023:\n The above problem also exists in Chrome now.\n So instead of dynamically setting [disabled] based on browser type,\n I'm applying CSS to suppress mouse events on the input - thus making it bubble up to the parent control, which responds the way we want/\n-->\n\n<mat-progress-bar *ngIf=\"!(users && photos)\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"users && photos\" (click)=\"selectUser()\" [class.clickable]=\"clickable\">\n <mat-form-field *ngIf=\"!accountNames?.length\">\n <input matInput disabled [placeholder]=\"placeholder\"> <!-- [disabled]=\"!isEdge\" -->\n </mat-form-field>\n \n <div *ngIf=\"accountNames?.length\"\n [class.grid]=\"accountNames.length > 1\"\n [class.three]=\"accountNames.length > 2\"\n [class.four]=\"accountNames.length > 3\"\n [class.five]=\"accountNames.length > 4\">\n\n <div *ngFor=\"let accountName of accountNames; let i=index\" class=\"user\">\n <!--<img *ngIf=\"accountName && empUtils.getEmployee(accountName)\" alt=\"\" [src]=\"empUtils.getEmployee(accountName) | employeePhotoUrl:cacheService.photos\">-->\n <img *ngIf=\"getPhoto(accountName)\" matListItemAvatar alt=\"\" [src]=\"getPhoto(accountName)\">\n <mat-icon *ngIf=\"isGroupAccount(accountName)\">group</mat-icon>\n \n <mat-form-field>\n\n <!-- [disabled]=\"!isEdge\" -->\n <input matInput disabled [placeholder]=\"i === 0 ? placeholder : ''\"\n [value]=\"getUser(accountName) ? getUser(accountName)?.displayName : accountName\">\n\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"$event.stopPropagation(); unSelectUser(accountName)\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n </div>\n </div>\n </div>", styles: [".user{display:grid;grid-template-columns:auto 1fr;grid-gap:.5em;align-items:center}.clickable,.clickable input{cursor:pointer!important}img{width:2em;height:2em;border-radius:100%}@media (min-width:801px){.grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1em}.three{grid-template-columns:repeat(3,1fr)}.four{grid-template-columns:repeat(4,1fr)}.five{grid-template-columns:repeat(5,1fr)}::ng-deep .grid mat-form-field{width:15vw}}input[disabled]{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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: "directive", type: i10.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "component", type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
571
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UserFormFieldComponent, deps: [{ token: i1.MatDialog }, { token: i2.ActiveDirectoryService }, { token: i3.SharePointService }], target: i0.ɵɵFactoryTarget.Component }); }
572
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: UserFormFieldComponent, selector: "cp-user-field", inputs: { placeholder: "placeholder", clickable: "clickable", userChooserData: "userChooserData" }, outputs: { usersSelected: "usersSelected", userUnSelected: "userUnSelected" }, ngImport: i0, template: "\n<!-- In Microsoft Edge, selectUser() never gets called if the input fields are disabled\nSo... I'm dynamically setting the disabled property based on whether or not the browser is Edge.\nIt's definitely a better experience if the field IS disabled.\nOtherwise, it's confusing - especially because Edge is SO SLOW to display the resulting dialog window.\n-->\n<!-- Update 8/24/2023:\nThe above problem also exists in Chrome now.\nSo instead of dynamically setting [disabled] based on browser type,\nI'm applying CSS to suppress mouse events on the input - thus making it bubble up to the parent control, which responds the way we want/\n-->\n\n@if (!(users && photos)) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n}\n\n@if (users && photos) {\n <div (click)=\"selectUser()\" [class.clickable]=\"clickable\">\n @if (!accountNames?.length) {\n <mat-form-field>\n <input matInput disabled [placeholder]=\"placeholder\"> <!-- [disabled]=\"!isEdge\" -->\n </mat-form-field>\n }\n @if (accountNames?.length) {\n <div\n [class.grid]=\"accountNames.length > 1\"\n [class.three]=\"accountNames.length > 2\"\n [class.four]=\"accountNames.length > 3\"\n [class.five]=\"accountNames.length > 4\">\n @for (accountName of accountNames; track accountName; let i = $index) {\n <div class=\"user\">\n <!--<img *ngIf=\"accountName && empUtils.getEmployee(accountName)\" alt=\"\" [src]=\"empUtils.getEmployee(accountName) | employeePhotoUrl:cacheService.photos\">-->\n @if (getPhoto(accountName)) {\n <img matListItemAvatar alt=\"\" [src]=\"getPhoto(accountName)\">\n }\n @if (getGroup(accountName)) {\n <mat-icon>group</mat-icon>\n }\n <mat-form-field>\n <!-- [disabled]=\"!isEdge\" -->\n <input matInput disabled [placeholder]=\"i === 0 ? placeholder : ''\"\n [value]=\"getUser(accountName) ? getUser(accountName)?.displayName : getGroup(accountName) ? getGroup(accountName)?.displayName : accountName\">\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"$event.stopPropagation(); unSelectUser(accountName)\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n </div>\n }\n </div>\n}", styles: [".user{display:grid;grid-template-columns:auto 1fr;grid-gap:.5em;align-items:center}.clickable,.clickable input{cursor:pointer!important}img{width:2em;height:2em;border-radius:100%}@media (min-width:801px){.grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1em}.three{grid-template-columns:repeat(3,1fr)}.four{grid-template-columns:repeat(4,1fr)}.five{grid-template-columns:repeat(5,1fr)}::ng-deep .grid mat-form-field{width:15vw}}input[disabled]{pointer-events:none}\n"], dependencies: [{ kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.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: "directive", type: i9.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "component", type: i9$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
574
573
  }
575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: UserFormFieldComponent, decorators: [{
574
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: UserFormFieldComponent, decorators: [{
576
575
  type: Component,
577
- args: [{ selector: 'cp-user-field', template: "\n<!-- In Microsoft Edge, selectUser() never gets called if the input fields are disabled\n So... I'm dynamically setting the disabled property based on whether or not the browser is Edge.\n It's definitely a better experience if the field IS disabled.\n Otherwise, it's confusing - especially because Edge is SO SLOW to display the resulting dialog window.\n-->\n<!-- Update 8/24/2023:\n The above problem also exists in Chrome now.\n So instead of dynamically setting [disabled] based on browser type,\n I'm applying CSS to suppress mouse events on the input - thus making it bubble up to the parent control, which responds the way we want/\n-->\n\n<mat-progress-bar *ngIf=\"!(users && photos)\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"users && photos\" (click)=\"selectUser()\" [class.clickable]=\"clickable\">\n <mat-form-field *ngIf=\"!accountNames?.length\">\n <input matInput disabled [placeholder]=\"placeholder\"> <!-- [disabled]=\"!isEdge\" -->\n </mat-form-field>\n \n <div *ngIf=\"accountNames?.length\"\n [class.grid]=\"accountNames.length > 1\"\n [class.three]=\"accountNames.length > 2\"\n [class.four]=\"accountNames.length > 3\"\n [class.five]=\"accountNames.length > 4\">\n\n <div *ngFor=\"let accountName of accountNames; let i=index\" class=\"user\">\n <!--<img *ngIf=\"accountName && empUtils.getEmployee(accountName)\" alt=\"\" [src]=\"empUtils.getEmployee(accountName) | employeePhotoUrl:cacheService.photos\">-->\n <img *ngIf=\"getPhoto(accountName)\" matListItemAvatar alt=\"\" [src]=\"getPhoto(accountName)\">\n <mat-icon *ngIf=\"isGroupAccount(accountName)\">group</mat-icon>\n \n <mat-form-field>\n\n <!-- [disabled]=\"!isEdge\" -->\n <input matInput disabled [placeholder]=\"i === 0 ? placeholder : ''\"\n [value]=\"getUser(accountName) ? getUser(accountName)?.displayName : accountName\">\n\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"$event.stopPropagation(); unSelectUser(accountName)\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n </div>\n </div>\n </div>", styles: [".user{display:grid;grid-template-columns:auto 1fr;grid-gap:.5em;align-items:center}.clickable,.clickable input{cursor:pointer!important}img{width:2em;height:2em;border-radius:100%}@media (min-width:801px){.grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1em}.three{grid-template-columns:repeat(3,1fr)}.four{grid-template-columns:repeat(4,1fr)}.five{grid-template-columns:repeat(5,1fr)}::ng-deep .grid mat-form-field{width:15vw}}input[disabled]{pointer-events:none}\n"] }]
578
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.ActiveDirectoryService }, { type: i3.SharePointService }]; }, propDecorators: { usersSelected: [{
576
+ args: [{ selector: 'cp-user-field', template: "\n<!-- In Microsoft Edge, selectUser() never gets called if the input fields are disabled\nSo... I'm dynamically setting the disabled property based on whether or not the browser is Edge.\nIt's definitely a better experience if the field IS disabled.\nOtherwise, it's confusing - especially because Edge is SO SLOW to display the resulting dialog window.\n-->\n<!-- Update 8/24/2023:\nThe above problem also exists in Chrome now.\nSo instead of dynamically setting [disabled] based on browser type,\nI'm applying CSS to suppress mouse events on the input - thus making it bubble up to the parent control, which responds the way we want/\n-->\n\n@if (!(users && photos)) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n}\n\n@if (users && photos) {\n <div (click)=\"selectUser()\" [class.clickable]=\"clickable\">\n @if (!accountNames?.length) {\n <mat-form-field>\n <input matInput disabled [placeholder]=\"placeholder\"> <!-- [disabled]=\"!isEdge\" -->\n </mat-form-field>\n }\n @if (accountNames?.length) {\n <div\n [class.grid]=\"accountNames.length > 1\"\n [class.three]=\"accountNames.length > 2\"\n [class.four]=\"accountNames.length > 3\"\n [class.five]=\"accountNames.length > 4\">\n @for (accountName of accountNames; track accountName; let i = $index) {\n <div class=\"user\">\n <!--<img *ngIf=\"accountName && empUtils.getEmployee(accountName)\" alt=\"\" [src]=\"empUtils.getEmployee(accountName) | employeePhotoUrl:cacheService.photos\">-->\n @if (getPhoto(accountName)) {\n <img matListItemAvatar alt=\"\" [src]=\"getPhoto(accountName)\">\n }\n @if (getGroup(accountName)) {\n <mat-icon>group</mat-icon>\n }\n <mat-form-field>\n <!-- [disabled]=\"!isEdge\" -->\n <input matInput disabled [placeholder]=\"i === 0 ? placeholder : ''\"\n [value]=\"getUser(accountName) ? getUser(accountName)?.displayName : getGroup(accountName) ? getGroup(accountName)?.displayName : accountName\">\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"$event.stopPropagation(); unSelectUser(accountName)\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n </div>\n }\n </div>\n}", styles: [".user{display:grid;grid-template-columns:auto 1fr;grid-gap:.5em;align-items:center}.clickable,.clickable input{cursor:pointer!important}img{width:2em;height:2em;border-radius:100%}@media (min-width:801px){.grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1em}.three{grid-template-columns:repeat(3,1fr)}.four{grid-template-columns:repeat(4,1fr)}.five{grid-template-columns:repeat(5,1fr)}::ng-deep .grid mat-form-field{width:15vw}}input[disabled]{pointer-events:none}\n"] }]
577
+ }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.ActiveDirectoryService }, { type: i3.SharePointService }], propDecorators: { usersSelected: [{
579
578
  type: Output
580
579
  }], userUnSelected: [{
581
580
  type: Output
@@ -602,8 +601,8 @@ class GuiModule {
602
601
  throw new Error('ActiveDirectoryGuiModule is already loaded. Import it in the AppModule only');
603
602
  }
604
603
  }
605
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: GuiModule, deps: [{ token: GuiModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
606
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.4", ngImport: i0, type: GuiModule, declarations: [UserChooserComponent,
604
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GuiModule, deps: [{ token: GuiModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
605
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: GuiModule, declarations: [UserChooserComponent,
607
606
  UserFormFieldComponent], imports: [CommonModule,
608
607
  ReactiveFormsModule,
609
608
  MatButtonModule,
@@ -618,7 +617,7 @@ class GuiModule {
618
617
  MatTableModule,
619
618
  MatTooltipModule], exports: [UserChooserComponent,
620
619
  UserFormFieldComponent] }); }
621
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: GuiModule, imports: [CommonModule,
620
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GuiModule, imports: [CommonModule,
622
621
  ReactiveFormsModule,
623
622
  MatButtonModule,
624
623
  MatDialogModule,
@@ -632,7 +631,7 @@ class GuiModule {
632
631
  MatTableModule,
633
632
  MatTooltipModule] }); }
634
633
  }
635
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: GuiModule, decorators: [{
634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GuiModule, decorators: [{
636
635
  type: NgModule,
637
636
  args: [{
638
637
  declarations: [
@@ -659,11 +658,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
659
658
  UserFormFieldComponent
660
659
  ]
661
660
  }]
662
- }], ctorParameters: function () { return [{ type: GuiModule, decorators: [{
661
+ }], ctorParameters: () => [{ type: GuiModule, decorators: [{
663
662
  type: Optional
664
663
  }, {
665
664
  type: SkipSelf
666
- }] }]; } });
665
+ }] }] });
667
666
 
668
667
  /**
669
668
  * Generated bundle index. Do not edit.