@cleavelandprice/ngx-lib 2.1.2 → 2.2.1
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/README.md +615 -615
- package/esm2020/cleavelandprice-ngx-lib.mjs +5 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +1 -1
- package/esm2020/src/authentication/authentication.module.mjs +112 -0
- package/esm2020/src/authentication/components/login/login.component.mjs +40 -0
- package/esm2020/src/authentication/components/login-form/login-form.component.mjs +45 -0
- package/esm2020/src/authentication/model/authentication-token.mjs +2 -0
- package/{esm2015/src/authentication/model/authentication.service.config.js → esm2020/src/authentication/model/authentication.service.config.mjs} +1 -1
- package/esm2020/src/authentication/services/authentication.service.mjs +136 -0
- package/esm2020/src/dialog/components/_dialog/dialog.component.mjs +83 -0
- package/esm2020/src/dialog/components/confirmation-dialog/confirmation-dialog.component.mjs +21 -0
- package/esm2020/src/dialog/components/input-dialog/input-dialog.component.mjs +21 -0
- package/esm2020/src/dialog/components/message-dialog/message-dialog.component.mjs +21 -0
- package/esm2020/src/dialog/dialog.module.mjs +74 -0
- package/{esm2015/src/dialog/model/confirmation-dialog-mode.enum.js → esm2020/src/dialog/model/confirmation-dialog-mode.enum.mjs} +1 -1
- package/esm2020/src/email/email.module.mjs +47 -0
- package/esm2020/src/email/model/email-dto.mjs +2 -0
- package/{esm2015/src/email/model/email-sender.js → esm2020/src/email/model/email-sender.mjs} +2 -1
- package/{esm2015/src/email/model/email.js → esm2020/src/email/model/email.mjs} +2 -1
- package/{esm2015/src/email/model/email.service.config.js → esm2020/src/email/model/email.service.config.mjs} +1 -1
- package/esm2020/src/email/services/email.service.mjs +31 -0
- package/esm2020/src/employee/employee.module.mjs +91 -0
- package/esm2020/src/employee/model/employee.mjs +2 -0
- package/{esm2015/src/employee/model/employee.service.config.js → esm2020/src/employee/model/employee.service.config.mjs} +1 -1
- package/esm2020/src/employee/pipes/departments.pipe.mjs +24 -0
- package/esm2020/src/employee/pipes/employee-by-dn.pipe.mjs +17 -0
- package/esm2020/src/employee/pipes/employee-photo-url.pipe.mjs +27 -0
- package/esm2020/src/employee/pipes/employees-with-property-value.pipe.mjs +17 -0
- package/esm2020/src/employee/pipes/filter-employees.pipe.mjs +22 -0
- package/esm2020/src/employee/pipes/is-member-of.pipe.mjs +17 -0
- package/esm2020/src/employee/pipes/sort-employees.pipe.mjs +44 -0
- package/esm2020/src/employee/services/employee.service.mjs +41 -0
- package/esm2020/src/file-upload/components/upload/upload.component.mjs +34 -0
- package/esm2020/src/file-upload/components/upload-dialog/upload-dialog.component.mjs +102 -0
- package/{esm2015/src/file-upload/model/database-file-info.js → esm2020/src/file-upload/model/database-file-info.mjs} +2 -1
- package/{esm2015/src/file-upload/model/file-upload-request.js → esm2020/src/file-upload/model/file-upload-request.mjs} +2 -1
- package/esm2020/src/file-upload/model/filesystem-file-info.mjs +2 -0
- package/esm2020/src/file-upload/model/upload.service.config.mjs +3 -0
- package/esm2020/src/file-upload/services/upload.service.mjs +93 -0
- package/esm2020/src/file-upload/upload.module.mjs +93 -0
- package/{esm2015/src/sharepoint/model/sharepoint-calendar-event.js → esm2020/src/sharepoint/model/sharepoint-calendar-event.mjs} +2 -1
- package/esm2020/src/sharepoint/model/sharepoint-customer-visit.mjs +2 -0
- package/{esm2015/src/sharepoint/model/sharepoint-employee-picture.js → esm2020/src/sharepoint/model/sharepoint-employee-picture.mjs} +2 -1
- package/esm2020/src/sharepoint/model/sharepoint-list-item.mjs +2 -0
- package/esm2020/src/sharepoint/model/sharepoint-list.mjs +2 -0
- package/esm2020/src/sharepoint/model/sharepoint-person.mjs +2 -0
- package/esm2020/src/sharepoint/model/sharepoint-picture.mjs +2 -0
- package/{esm2015/src/sharepoint/model/sharepoint.service.config.js → esm2020/src/sharepoint/model/sharepoint.service.config.mjs} +1 -1
- package/esm2020/src/sharepoint/pipes/sharepoint-photo-url.pipe.mjs +16 -0
- package/esm2020/src/sharepoint/pipes/sharepoint-url.pipe.mjs +16 -0
- package/esm2020/src/sharepoint/services/sharepoint.service.mjs +77 -0
- package/esm2020/src/sharepoint/sharepoint.module.mjs +69 -0
- package/esm2020/src/url/pipes/safe-url.pipe.mjs +21 -0
- package/esm2020/src/url/pipes/uri-scheme.pipe.mjs +103 -0
- package/esm2020/src/url/url.module.mjs +38 -0
- package/fesm2015/cleavelandprice-ngx-lib.mjs +1412 -0
- package/fesm2015/cleavelandprice-ngx-lib.mjs.map +1 -0
- package/fesm2020/cleavelandprice-ngx-lib.mjs +1384 -0
- package/fesm2020/cleavelandprice-ngx-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +22 -10
- package/src/authentication/authentication.module.d.ts +17 -0
- package/src/authentication/components/login/login.component.d.ts +6 -1
- package/src/authentication/components/login-form/login-form.component.d.ts +3 -0
- package/src/authentication/model/authentication-token.d.ts +1 -8
- package/src/authentication/services/authentication.service.d.ts +12 -2
- package/src/dialog/components/_dialog/dialog.component.d.ts +3 -0
- package/src/dialog/components/confirmation-dialog/confirmation-dialog.component.d.ts +3 -0
- package/src/dialog/components/input-dialog/input-dialog.component.d.ts +3 -0
- package/src/dialog/components/message-dialog/message-dialog.component.d.ts +3 -0
- package/src/dialog/dialog.module.d.ts +14 -0
- package/src/email/email.module.d.ts +5 -0
- package/src/email/services/email.service.d.ts +3 -0
- package/src/employee/employee.module.d.ts +12 -0
- package/src/employee/pipes/departments.pipe.d.ts +3 -0
- package/src/employee/pipes/employee-by-dn.pipe.d.ts +3 -0
- package/src/employee/pipes/employee-photo-url.pipe.d.ts +3 -0
- package/src/employee/pipes/employees-with-property-value.pipe.d.ts +3 -0
- package/src/employee/pipes/filter-employees.pipe.d.ts +3 -0
- package/src/employee/pipes/is-member-of.pipe.d.ts +3 -0
- package/src/employee/pipes/sort-employees.pipe.d.ts +3 -0
- package/src/employee/services/employee.service.d.ts +3 -0
- package/src/file-upload/components/upload/upload.component.d.ts +3 -0
- package/src/file-upload/components/upload-dialog/upload-dialog.component.d.ts +3 -0
- package/src/file-upload/services/upload.service.d.ts +3 -0
- package/src/file-upload/upload.module.d.ts +13 -0
- package/src/sharepoint/model/sharepoint-calendar-event.d.ts +3 -3
- package/src/sharepoint/model/sharepoint-customer-visit.d.ts +5 -5
- package/src/sharepoint/model/sharepoint-employee-picture.d.ts +2 -3
- package/src/sharepoint/model/sharepoint-list-item.d.ts +9 -9
- package/src/sharepoint/model/sharepoint-list.d.ts +8 -0
- package/src/sharepoint/model/sharepoint-person.d.ts +9 -0
- package/src/sharepoint/model/sharepoint-picture.d.ts +11 -8
- package/src/sharepoint/model/sharepoint.service.config.d.ts +2 -5
- package/src/sharepoint/pipes/sharepoint-photo-url.pipe.d.ts +3 -0
- package/src/sharepoint/pipes/sharepoint-url.pipe.d.ts +3 -0
- package/src/sharepoint/services/sharepoint.service.d.ts +11 -6
- package/src/sharepoint/sharepoint.module.d.ts +9 -4
- package/src/url/pipes/safe-url.pipe.d.ts +3 -0
- package/src/url/pipes/uri-scheme.pipe.d.ts +3 -0
- package/src/url/url.module.d.ts +7 -0
- package/bundles/cleavelandprice-ngx-lib.umd.js +0 -1360
- package/bundles/cleavelandprice-ngx-lib.umd.js.map +0 -1
- package/bundles/cleavelandprice-ngx-lib.umd.min.js +0 -2
- package/bundles/cleavelandprice-ngx-lib.umd.min.js.map +0 -1
- package/cleavelandprice-ngx-lib.d.ts +0 -5
- package/cleavelandprice-ngx-lib.metadata.json +0 -1
- package/esm2015/cleavelandprice-ngx-lib.js +0 -6
- package/esm2015/src/authentication/authentication.module.js +0 -84
- package/esm2015/src/authentication/components/login/login.component.js +0 -41
- package/esm2015/src/authentication/components/login-form/login-form.component.js +0 -41
- package/esm2015/src/authentication/model/authentication-token.js +0 -1
- package/esm2015/src/authentication/services/authentication.service.js +0 -129
- package/esm2015/src/dialog/components/_dialog/dialog.component.js +0 -75
- package/esm2015/src/dialog/components/confirmation-dialog/confirmation-dialog.component.js +0 -19
- package/esm2015/src/dialog/components/input-dialog/input-dialog.component.js +0 -19
- package/esm2015/src/dialog/components/message-dialog/message-dialog.component.js +0 -19
- package/esm2015/src/dialog/dialog.module.js +0 -54
- package/esm2015/src/email/email.module.js +0 -41
- package/esm2015/src/email/model/email-dto.js +0 -1
- package/esm2015/src/email/services/email.service.js +0 -30
- package/esm2015/src/employee/employee.module.js +0 -73
- package/esm2015/src/employee/model/employee.js +0 -1
- package/esm2015/src/employee/pipes/departments.pipe.js +0 -20
- package/esm2015/src/employee/pipes/employee-by-dn.pipe.js +0 -13
- package/esm2015/src/employee/pipes/employee-photo-url.pipe.js +0 -23
- package/esm2015/src/employee/pipes/employees-with-property-value.pipe.js +0 -13
- package/esm2015/src/employee/pipes/filter-employees.pipe.js +0 -18
- package/esm2015/src/employee/pipes/is-member-of.pipe.js +0 -13
- package/esm2015/src/employee/pipes/sort-employees.pipe.js +0 -40
- package/esm2015/src/employee/services/employee.service.js +0 -40
- package/esm2015/src/file-upload/components/upload/upload.component.js +0 -34
- package/esm2015/src/file-upload/components/upload-dialog/upload-dialog.component.js +0 -101
- package/esm2015/src/file-upload/model/filesystem-file-info.js +0 -1
- package/esm2015/src/file-upload/model/upload.service.config.js +0 -3
- package/esm2015/src/file-upload/services/upload.service.js +0 -91
- package/esm2015/src/file-upload/upload.module.js +0 -73
- package/esm2015/src/sharepoint/model/sharepoint-customer-visit.js +0 -1
- package/esm2015/src/sharepoint/model/sharepoint-list-item.js +0 -1
- package/esm2015/src/sharepoint/model/sharepoint-list-items-request.js +0 -1
- package/esm2015/src/sharepoint/model/sharepoint-picture.js +0 -1
- package/esm2015/src/sharepoint/model/sharepoint-uri-request.js +0 -1
- package/esm2015/src/sharepoint/model/sharepoint-user-request.js +0 -1
- package/esm2015/src/sharepoint/model/sharepoint-user.js +0 -1
- package/esm2015/src/sharepoint/pipes/sharepoint-photo-url.pipe.js +0 -12
- package/esm2015/src/sharepoint/pipes/sharepoint-url.pipe.js +0 -12
- package/esm2015/src/sharepoint/services/sharepoint.service.js +0 -71
- package/esm2015/src/sharepoint/sharepoint.module.js +0 -65
- package/esm2015/src/url/pipes/safe-url.pipe.js +0 -20
- package/esm2015/src/url/pipes/uri-scheme.pipe.js +0 -99
- package/esm2015/src/url/url.module.js +0 -31
- package/fesm2015/cleavelandprice-ngx-lib.js +0 -1247
- package/fesm2015/cleavelandprice-ngx-lib.js.map +0 -1
- package/src/sharepoint/model/sharepoint-list-items-request.d.ts +0 -10
- package/src/sharepoint/model/sharepoint-uri-request.d.ts +0 -5
- package/src/sharepoint/model/sharepoint-user-request.d.ts +0 -6
- package/src/sharepoint/model/sharepoint-user.d.ts +0 -8
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"AuthenticationModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":45,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":46,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":47,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":48,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":49,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":50,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":51,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":52,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":53,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":54,"character":4},{"__symbolic":"reference","name":"DialogModule"}],"declarations":[{"__symbolic":"reference","name":"LoginComponent"},{"__symbolic":"reference","name":"LoginFormComponent"}],"exports":[{"__symbolic":"reference","name":"LoginComponent"},{"__symbolic":"reference","name":"LoginFormComponent"}],"providers":[],"entryComponents":[{"__symbolic":"reference","name":"LoginFormComponent"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":81,"character":16}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":81,"character":28}}]],"parameters":[{"__symbolic":"reference","name":"AuthenticationModule"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":["authenticationConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"AuthenticationModule"},"providers":[{"__symbolic":"reference","name":"AuthenticationService"},{"provide":{"__symbolic":"reference","name":"AuthenticationServiceConfig"},"useValue":{"__symbolic":"reference","name":"authenticationConfig"}}]}}}},"AuthenticationServiceConfig":{"__symbolic":"class","members":{}},"AuthenticationToken":{"__symbolic":"interface"},"AuthenticationService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"authenticatedChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":21,"character":3}}]}],"authenticatingChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":16}}],null,null],"parameters":[{"__symbolic":"reference","name":"AuthenticationServiceConfig"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":54,"character":18},{"__symbolic":"reference","name":"SharePointService"}]}],"login":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"validateUser":[{"__symbolic":"method"}],"getPhoto":[{"__symbolic":"method"}],"checkForExistingToken":[{"__symbolic":"method"}]}},"LoginComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"cp-login","template":"<div id=\"user-id\">\n <i id=\"unauthenticated-user-image\" *ngIf=\"!authenticationService.authenticated\"\n class=\"fa fa-user-circle\"\n [class.fa-spin]=\"authenticationService.authenticating\"\n aria-hidden=\"true\"\n matTooltip=\"Login\"\n (click)=\"login()\"></i>\n\n <img id=\"authenticated-user-image\"\n *ngIf=\"authenticationService.authenticated && authenticationService.authenticatedUser.photoUrl\"\n [src]=\"authenticationService.authenticatedUser.photoUrl\"\n matTooltip=\"Logout\"\n (click)=\"confirmLogout()\" />\n\n <i id=\"authenticated-user-image\"\n *ngIf=\"authenticationService.authenticated && !authenticationService.authenticatedUser.photoUrl\"\n class=\"fa fa-user-circle\"\n matTooltip=\"Logout\"\n (click)=\"confirmLogout()\"></i>\n\n <div id=\"user-name\" *ngIf=\"authenticationService.authenticated\">\n {{ authenticationService.authenticatedUser.displayName }}\n </div>\n</div>","styles":["#user-id{display:flex;font-family:Verdana,Geneva,Tahoma,sans-serif;height:2em;padding:.3em}.fa{font-size:2em}img{border-radius:100%;height:2em;width:2em}#user-id>div{align-items:center;display:flex;font-size:1.15em;height:100%;margin-left:.75em}"]}]}],"members":{"adminGroup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":14,"character":29},{"__symbolic":"reference","name":"AuthenticationService"}]}],"login":[{"__symbolic":"method"}],"confirmLogout":[{"__symbolic":"method"}]}},"LoginFormComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"cp-login-form","template":"<h2 mat-dialog-title>\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\n</h2>\n\n<mat-dialog-content [class.loginError]=\"loginError\">\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\n </div>\n\n <div *ngIf=\"!authenticationService.authenticating\">\n <div>\n <mat-form-field>\n <input matInput placeholder=\"Username\" [(ngModel)]=\"username\" name=\"username\" required (keyup.enter)=\"authenticate()\">\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field>\n <input matInput type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\" name=\"password\" required (keyup.enter)=\"authenticate()\">\n </mat-form-field>\n </div>\n </div>\n\n <div *ngIf=\"!authenticationService.authenticating && loginError\" class=\"alert alert-danger\">\n Bad username or password\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\n <button type=\"button\" mat-raised-button (click)=\"authenticate()\">OK</button>\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">Cancel</button>\n</mat-dialog-actions>","styles":["#spinner{align-items:center;display:flex;height:100%;justify-content:center;width:100%}mat-dialog-content{height:150px}mat-dialog-content.loginError{height:200px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":19,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"LoginFormComponent"}]},{"__symbolic":"reference","name":"SharePointService"},{"__symbolic":"reference","name":"AuthenticationService"},{"__symbolic":"reference","name":"any"}]}],"ngOnInit":[{"__symbolic":"method"}],"authenticate":[{"__symbolic":"method"}]}},"DialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":28,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":30,"character":8},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":31,"character":8},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":32,"character":8},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":33,"character":8},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":34,"character":8},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":35,"character":8}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ConfirmationDialogComponent"},{"__symbolic":"reference","name":"InputDialogComponent"},{"__symbolic":"reference","name":"MessageDialogComponent"}],"exports":[{"__symbolic":"reference","name":"ConfirmationDialogComponent"},{"__symbolic":"reference","name":"InputDialogComponent"},{"__symbolic":"reference","name":"MessageDialogComponent"}],"entryComponents":[{"__symbolic":"reference","name":"ConfirmationDialogComponent"},{"__symbolic":"reference","name":"InputDialogComponent"},{"__symbolic":"reference","name":"MessageDialogComponent"}]}]}],"members":{}},"ConfirmationDialogMode":{"OkCancel":0,"YesNo":1,"TrueFalse":2,"Custom":3},"ConfirmationDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"cp-confirmation-dialog","template":"<cp-dialog\n [data]=\"data\"\n [dialogType]=\"'confirmation'\"\n (closed)=\"dialogRef.close($event)\">\n</cp-dialog>"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":10,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ConfirmationDialogComponent"}]},{"__symbolic":"reference","name":"any"}]}]}},"InputDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"cp-input-dialog","template":"<cp-dialog\n [data]=\"data\"\n [dialogType]=\"'input'\"\n (closed)=\"dialogRef.close($event)\">\n</cp-dialog>"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":9,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":9,"character":16}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"InputDialogComponent"}]},{"__symbolic":"reference","name":"any"}]}]}},"MessageDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"cp-message-dialog","template":"<cp-dialog\n [data]=\"data\"\n [dialogType]=\"'message'\"\n (closed)=\"dialogRef.close($event)\">\n</cp-dialog>"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":9,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":9,"character":16}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"MessageDialogComponent"}]},{"__symbolic":"reference","name":"any"}]}]}},"EmailModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":13}],"declarations":[],"exports":[]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":34,"character":16}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":34,"character":28}}]],"parameters":[{"__symbolic":"reference","name":"EmailModule"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":["emailConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"EmailModule"},"providers":[{"__symbolic":"reference","name":"EmailService"},{"provide":{"__symbolic":"reference","name":"EmailServiceConfig"},"useValue":{"__symbolic":"reference","name":"emailConfig"}}]}}}},"EmailServiceConfig":{"__symbolic":"class","members":{}},"Email":{"__symbolic":"interface"},"EmailService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}],null],"parameters":[{"__symbolic":"reference","name":"EmailServiceConfig"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":14,"character":18}]}],"send":[{"__symbolic":"method"}]}},"EmployeeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":37,"character":12}],"declarations":[{"__symbolic":"reference","name":"DepartmentsPipe"},{"__symbolic":"reference","name":"EmployeeByDnPipe"},{"__symbolic":"reference","name":"EmployeesWithPropertyValuePipe"},{"__symbolic":"reference","name":"FilterEmployeesPipe"},{"__symbolic":"reference","name":"IsMemberOfPipe"},{"__symbolic":"reference","name":"EmployeePhotoUrlPipe"},{"__symbolic":"reference","name":"SortEmployeesPipe"}],"exports":[{"__symbolic":"reference","name":"DepartmentsPipe"},{"__symbolic":"reference","name":"EmployeeByDnPipe"},{"__symbolic":"reference","name":"EmployeesWithPropertyValuePipe"},{"__symbolic":"reference","name":"FilterEmployeesPipe"},{"__symbolic":"reference","name":"IsMemberOfPipe"},{"__symbolic":"reference","name":"EmployeePhotoUrlPipe"},{"__symbolic":"reference","name":"SortEmployeesPipe"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":68,"character":16}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":68,"character":28}}]],"parameters":[{"__symbolic":"reference","name":"EmployeeModule"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":["employeeConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"EmployeeModule"},"providers":[{"__symbolic":"reference","name":"EmployeeService"},{"provide":{"__symbolic":"reference","name":"EmployeeServiceConfig"},"useValue":{"__symbolic":"reference","name":"employeeConfig"}}]}}}},"EmployeeServiceConfig":{"__symbolic":"class","members":{}},"Employee":{"__symbolic":"interface"},"EmployeeService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":17,"character":16}}],null],"parameters":[{"__symbolic":"reference","name":"EmployeeServiceConfig"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":18,"character":18}]}],"getEmployees":[{"__symbolic":"method"}],"getEmployee":[{"__symbolic":"method"}]}},"DepartmentsPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"departments"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"EmployeeByDnPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"employeeByDn"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"EmployeePhotoUrlPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"employeePhotoUrl"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"EmployeesWithPropertyValuePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"employeesWithPropertyValue"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"FilterEmployeesPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"filterEmployees"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"IsMemberOfPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"isMemberOf"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"SortEmployeesPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"sortEmployees"}]}],"members":{"transform":[{"__symbolic":"method"}],"getSorted":[{"__symbolic":"method"}]}},"SharePointModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":38,"character":4}],"declarations":[{"__symbolic":"reference","name":"SharePointPhotoUrlPipe"},{"__symbolic":"reference","name":"SharePointUrlPipe"}],"exports":[{"__symbolic":"reference","name":"SharePointPhotoUrlPipe"},{"__symbolic":"reference","name":"SharePointUrlPipe"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":60,"character":16}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":60,"character":28}}]],"parameters":[{"__symbolic":"reference","name":"SharePointModule"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":["sharePointConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"SharePointModule"},"providers":[{"__symbolic":"reference","name":"SharePointService"},{"provide":{"__symbolic":"reference","name":"SharePointServiceConfig"},"useValue":{"__symbolic":"reference","name":"sharePointConfig"}}]}}}},"SharePointCalendarEvent":{"__symbolic":"interface"},"SharePointCustomerVisit":{"__symbolic":"interface"},"SharePointEmployeePicture":{"__symbolic":"interface"},"SharePointListItem":{"__symbolic":"interface"},"SharePointUser":{"__symbolic":"interface"},"SharePointPicture":{"__symbolic":"interface"},"SharePointListItemsRequest":{"__symbolic":"interface"},"SharePointUserRequest":{"__symbolic":"interface"},"SharePointUriRequest":{"__symbolic":"interface"},"SharePointServiceConfig":{"__symbolic":"class","members":{}},"SharePointService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":24,"character":15}}],null],"parameters":[{"__symbolic":"reference","name":"SharePointServiceConfig"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":25,"character":18}]}],"getListItems":[{"__symbolic":"method"}],"getPeople":[{"__symbolic":"method"}],"getPhotos":[{"__symbolic":"method"}]}},"SharePointPhotoUrlPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"sharePointPhotoUrl"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"SharePointUrlPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"sharePointUrl"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"UploadModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":38,"character":8},{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"BrowserAnimationsModule","line":39,"character":8},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":40,"character":8},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":42,"character":8},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":43,"character":8},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":44,"character":8},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":45,"character":8}],"declarations":[{"__symbolic":"reference","name":"UploadComponent"},{"__symbolic":"reference","name":"UploadDialogComponent"}],"exports":[{"__symbolic":"reference","name":"UploadComponent"},{"__symbolic":"reference","name":"UploadDialogComponent"}],"entryComponents":[{"__symbolic":"reference","name":"UploadDialogComponent"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":69,"character":19}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":69,"character":31}}]],"parameters":[{"__symbolic":"reference","name":"UploadModule"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":["uploadConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"UploadModule"},"providers":[{"__symbolic":"reference","name":"UploadService"},{"provide":{"__symbolic":"reference","name":"UploadServiceConfig"},"useValue":{"__symbolic":"reference","name":"uploadConfig"}}]}}}},"DatabaseFileInfo":{"__symbolic":"interface"},"FileUploadRequest":{"__symbolic":"interface"},"FilesystemFileInfo":{"__symbolic":"interface"},"UploadServiceConfig":{"__symbolic":"class","members":{}},"UploadService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":27,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":26,"character":28},{"__symbolic":"reference","name":"UploadServiceConfig"}]}],"upload":[{"__symbolic":"method"}],"exists":[{"__symbolic":"method"}],"download":[{"__symbolic":"method"}],"getUploadInfo":[{"__symbolic":"method"}]}},"UploadDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"cp-upload-dialog","template":"<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n","styles":["#title{display:flex;justify-content:space-between}#actions{display:flex;justify-content:flex-end}#conflict{color:red;font-size:.8em;margin-top:.5em}"]}]}],"members":{"file":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":11,"character":3},"arguments":["file",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"UploadDialogComponent"}]},{"__symbolic":"reference","name":"UploadService"}]}],"ngOnInit":[{"__symbolic":"method"}],"addFiles":[{"__symbolic":"method"}],"onFilesAdded":[{"__symbolic":"method"}],"closeDialog":[{"__symbolic":"method"}]}},"UploadComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"cp-upload","template":"<button mat-raised-button (click)=\"openUploadDialog()\">{{ uploadButtonText }}</button>"}]}],"members":{"dialogClosed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":10,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":13,"character":31},{"__symbolic":"reference","name":"UploadService"}]}],"ngOnInit":[{"__symbolic":"method"}],"openUploadDialog":[{"__symbolic":"method"}]}},"UrlModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":8}],"declarations":[{"__symbolic":"reference","name":"SafeUrlPipe"},{"__symbolic":"reference","name":"UriSchemePipe"}],"exports":[{"__symbolic":"reference","name":"SafeUrlPipe"},{"__symbolic":"reference","name":"UriSchemePipe"}],"entryComponents":[]}]}],"members":{}},"SafeUrlPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"safeUrl"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":10,"character":36}]}],"transform":[{"__symbolic":"method"}]}},"UriSchemePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"uriScheme","pure":false}]}],"members":{"transform":[{"__symbolic":"method"}],"app":[{"__symbolic":"method"}],"command":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"cp-dialog","template":"<h2 *ngIf=\"title\" mat-dialog-title [innerHTML]=\"title\"></h2>\n\n<mat-dialog-content>\n <div *ngIf=\"message\" [innerHTML]=\"message\"></div>\n\n <mat-form-field *ngIf=\"dialogType === 'input'\">\n <textarea matInput [placeholder]=\"placeholder\" [(ngModel)]=\"userInput\"></textarea>\n </mat-form-field>\n\n <div id=\"checkbox\" *ngIf=\"checkboxMessage\">\n <mat-checkbox [(ngModel)]=\"checkboxValue\">\n <span [innerHTML]=\"checkboxMessage\"></span>\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"close()\" [disabled]=\"dialogType === 'input' && !userInput\">\n <span [ngSwitch]=\"mode\">\n <span *ngSwitchCase=\"ConfirmationDialogMode.YesNo\">Yes</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.TrueFalse\">True</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.Custom\">{{ customTrueFalseText[0] }}</span>\n <span *ngSwitchDefault>OK</span>\n </span>\n </button>\n <button *ngIf=\"dialogType !== 'message'\" mat-raised-button (click)=\"cancel()\">\n <span [ngSwitch]=\"mode\">\n <span *ngSwitchCase=\"ConfirmationDialogMode.YesNo\">No</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.TrueFalse\">False</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.Custom\">{{ customTrueFalseText[1] }}</span>\n <span *ngSwitchDefault>Cancel</span>\n </span>\n </button>\n</mat-dialog-actions>","styles":["mat-form-field{margin-top:2em;width:100%}#checkbox{margin:2em 0}"]}]}],"members":{"dialogType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":5}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":5}}]}],"closed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":11,"character":5}}]}],"ngOnInit":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}]}}},"origins":{"AuthenticationModule":"./src/authentication/authentication.module","AuthenticationServiceConfig":"./src/authentication/model/authentication.service.config","AuthenticationToken":"./src/authentication/model/authentication-token","AuthenticationService":"./src/authentication/services/authentication.service","LoginComponent":"./src/authentication/components/login/login.component","LoginFormComponent":"./src/authentication/components/login-form/login-form.component","DialogModule":"./src/dialog/dialog.module","ConfirmationDialogMode":"./src/dialog/model/confirmation-dialog-mode.enum","ConfirmationDialogComponent":"./src/dialog/components/confirmation-dialog/confirmation-dialog.component","InputDialogComponent":"./src/dialog/components/input-dialog/input-dialog.component","MessageDialogComponent":"./src/dialog/components/message-dialog/message-dialog.component","EmailModule":"./src/email/email.module","EmailServiceConfig":"./src/email/model/email.service.config","Email":"./src/email/model/email","EmailService":"./src/email/services/email.service","EmployeeModule":"./src/employee/employee.module","EmployeeServiceConfig":"./src/employee/model/employee.service.config","Employee":"./src/employee/model/employee","EmployeeService":"./src/employee/services/employee.service","DepartmentsPipe":"./src/employee/pipes/departments.pipe","EmployeeByDnPipe":"./src/employee/pipes/employee-by-dn.pipe","EmployeePhotoUrlPipe":"./src/employee/pipes/employee-photo-url.pipe","EmployeesWithPropertyValuePipe":"./src/employee/pipes/employees-with-property-value.pipe","FilterEmployeesPipe":"./src/employee/pipes/filter-employees.pipe","IsMemberOfPipe":"./src/employee/pipes/is-member-of.pipe","SortEmployeesPipe":"./src/employee/pipes/sort-employees.pipe","SharePointModule":"./src/sharepoint/sharepoint.module","SharePointCalendarEvent":"./src/sharepoint/model/sharepoint-calendar-event","SharePointCustomerVisit":"./src/sharepoint/model/sharepoint-customer-visit","SharePointEmployeePicture":"./src/sharepoint/model/sharepoint-employee-picture","SharePointListItem":"./src/sharepoint/model/sharepoint-list-item","SharePointUser":"./src/sharepoint/model/sharepoint-user","SharePointPicture":"./src/sharepoint/model/sharepoint-picture","SharePointListItemsRequest":"./src/sharepoint/model/sharepoint-list-items-request","SharePointUserRequest":"./src/sharepoint/model/sharepoint-user-request","SharePointUriRequest":"./src/sharepoint/model/sharepoint-uri-request","SharePointServiceConfig":"./src/sharepoint/model/sharepoint.service.config","SharePointService":"./src/sharepoint/services/sharepoint.service","SharePointPhotoUrlPipe":"./src/sharepoint/pipes/sharepoint-photo-url.pipe","SharePointUrlPipe":"./src/sharepoint/pipes/sharepoint-url.pipe","UploadModule":"./src/file-upload/upload.module","DatabaseFileInfo":"./src/file-upload/model/database-file-info","FileUploadRequest":"./src/file-upload/model/file-upload-request","FilesystemFileInfo":"./src/file-upload/model/filesystem-file-info","UploadServiceConfig":"./src/file-upload/model/upload.service.config","UploadService":"./src/file-upload/services/upload.service","UploadDialogComponent":"./src/file-upload/components/upload-dialog/upload-dialog.component","UploadComponent":"./src/file-upload/components/upload/upload.component","UrlModule":"./src/url/url.module","SafeUrlPipe":"./src/url/pipes/safe-url.pipe","UriSchemePipe":"./src/url/pipes/uri-scheme.pipe","ɵa":"./src/dialog/components/_dialog/dialog.component"},"importAs":"@cleavelandprice/ngx-lib"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
5
|
-
export { DialogComponent as ɵa } from './src/dialog/components/_dialog/dialog.component';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXZlbGFuZHByaWNlLW5neC1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jbGVhdmVsYW5kcHJpY2Utbmd4LWxpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sa0RBQWtELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7RGlhbG9nQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9zcmMvZGlhbG9nL2NvbXBvbmVudHMvX2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JzsiXX0=
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
//#region Imports
|
|
2
|
-
import { NgModule, Optional, SkipSelf } from '@angular/core';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
|
-
// Angular Material
|
|
6
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
8
|
-
import { MatDialogModule } from '@angular/material/dialog';
|
|
9
|
-
import { MatInputModule } from '@angular/material/input';
|
|
10
|
-
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
11
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
12
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
13
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
14
|
-
// Modules
|
|
15
|
-
import { DialogModule } from './../dialog/dialog.module';
|
|
16
|
-
// Services
|
|
17
|
-
import { AuthenticationServiceConfig } from './model/authentication.service.config';
|
|
18
|
-
import { AuthenticationService } from './services/authentication.service';
|
|
19
|
-
// Components
|
|
20
|
-
import { LoginComponent } from './components/login/login.component';
|
|
21
|
-
import { LoginFormComponent } from './components/login-form/login-form.component';
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region Exports
|
|
24
|
-
// Model
|
|
25
|
-
export * from './model/authentication.service.config';
|
|
26
|
-
export * from './model/authentication-token';
|
|
27
|
-
// Services
|
|
28
|
-
export * from './services/authentication.service';
|
|
29
|
-
// Components
|
|
30
|
-
export * from './components/login/login.component';
|
|
31
|
-
export * from './components/login-form/login-form.component';
|
|
32
|
-
//#endregion
|
|
33
|
-
/**
|
|
34
|
-
* Provides a component and a service that allows you to perform Active/Directory authentication
|
|
35
|
-
*/
|
|
36
|
-
export class AuthenticationModule {
|
|
37
|
-
constructor(parentModule) {
|
|
38
|
-
if (parentModule) {
|
|
39
|
-
throw new Error('AuthenticationModule is already loaded. Import it in the AppModule only');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
static forRoot(authenticationConfig) {
|
|
43
|
-
return {
|
|
44
|
-
ngModule: AuthenticationModule,
|
|
45
|
-
providers: [
|
|
46
|
-
AuthenticationService,
|
|
47
|
-
{ provide: AuthenticationServiceConfig, useValue: authenticationConfig }
|
|
48
|
-
]
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
AuthenticationModule.decorators = [
|
|
53
|
-
{ type: NgModule, args: [{
|
|
54
|
-
imports: [
|
|
55
|
-
CommonModule,
|
|
56
|
-
FormsModule,
|
|
57
|
-
MatButtonModule,
|
|
58
|
-
MatCheckboxModule,
|
|
59
|
-
MatDialogModule,
|
|
60
|
-
MatInputModule,
|
|
61
|
-
MatProgressBarModule,
|
|
62
|
-
MatProgressSpinnerModule,
|
|
63
|
-
MatTooltipModule,
|
|
64
|
-
MatSelectModule,
|
|
65
|
-
DialogModule
|
|
66
|
-
],
|
|
67
|
-
declarations: [
|
|
68
|
-
LoginComponent,
|
|
69
|
-
LoginFormComponent
|
|
70
|
-
],
|
|
71
|
-
exports: [
|
|
72
|
-
LoginComponent,
|
|
73
|
-
LoginFormComponent
|
|
74
|
-
],
|
|
75
|
-
providers: [],
|
|
76
|
-
entryComponents: [
|
|
77
|
-
LoginFormComponent
|
|
78
|
-
]
|
|
79
|
-
},] }
|
|
80
|
-
];
|
|
81
|
-
AuthenticationModule.ctorParameters = () => [
|
|
82
|
-
{ type: AuthenticationModule, decorators: [{ type: Optional }, { type: SkipSelf }] }
|
|
83
|
-
];
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLG1CQUFtQjtBQUNuQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsVUFBVTtBQUNWLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxXQUFXO0FBQ1gsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsYUFBYTtBQUNiLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixZQUFZO0FBRVosaUJBQWlCO0FBQ2pCLFFBQVE7QUFDUixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsOEJBQThCLENBQUM7QUFFN0MsV0FBVztBQUNYLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsYUFBYTtBQUNiLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxZQUFZO0FBRVo7O0dBRUc7QUE0QkgsTUFBTSxPQUFPLG9CQUFvQjtJQVcvQixZQUFxQyxZQUFrQztRQUNyRSxJQUFJLFlBQVksRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLHlFQUF5RSxDQUFDLENBQUM7U0FDOUU7SUFDSCxDQUFDO0lBZkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBaUQ7UUFDOUQsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULHFCQUFxQjtnQkFDckIsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO2FBQ3pFO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQXBDRixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxlQUFlO29CQUNmLGlCQUFpQjtvQkFDakIsZUFBZTtvQkFDZixjQUFjO29CQUNkLG9CQUFvQjtvQkFDcEIsd0JBQXdCO29CQUN4QixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YsWUFBWTtpQkFDYjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osY0FBYztvQkFDZCxrQkFBa0I7aUJBQ25CO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxjQUFjO29CQUNkLGtCQUFrQjtpQkFDbkI7Z0JBQ0QsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsZUFBZSxFQUFFO29CQUNmLGtCQUFrQjtpQkFDbkI7YUFDRjs7O1lBWW9ELG9CQUFvQix1QkFBekQsUUFBUSxZQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gSW1wb3J0c1xuaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBBbmd1bGFyIE1hdGVyaWFsXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbi8vIE1vZHVsZXNcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJy4vLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuXG4vLyBTZXJ2aWNlc1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLmNvbmZpZyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9naW5Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luLWZvcm0vbG9naW4tZm9ybS5jb21wb25lbnQnO1xuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBFeHBvcnRzXG4vLyBNb2RlbFxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsL2F1dGhlbnRpY2F0aW9uLXRva2VuJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luLWZvcm0vbG9naW4tZm9ybS5jb21wb25lbnQnO1xuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogUHJvdmlkZXMgYSBjb21wb25lbnQgYW5kIGEgc2VydmljZSB0aGF0IGFsbG93cyB5b3UgdG8gcGVyZm9ybSBBY3RpdmUvRGlyZWN0b3J5IGF1dGhlbnRpY2F0aW9uXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIExvZ2luQ29tcG9uZW50LFxuICAgIExvZ2luRm9ybUNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTG9naW5Db21wb25lbnQsXG4gICAgTG9naW5Gb3JtQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG4gIGVudHJ5Q29tcG9uZW50czogW1xuICAgIExvZ2luRm9ybUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoYXV0aGVudGljYXRpb25Db25maWc6IEF1dGhlbnRpY2F0aW9uU2VydmljZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXV0aGVudGljYXRpb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEF1dGhlbnRpY2F0aW9uTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBBdXRoZW50aWNhdGlvblNlcnZpY2VDb25maWcsIHVzZVZhbHVlOiBhdXRoZW50aWNhdGlvbkNvbmZpZyB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU6IEF1dGhlbnRpY2F0aW9uTW9kdWxlKSB7XG4gICAgaWYgKHBhcmVudE1vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQXV0aGVudGljYXRpb25Nb2R1bGUgaXMgYWxyZWFkeSBsb2FkZWQuIEltcG9ydCBpdCBpbiB0aGUgQXBwTW9kdWxlIG9ubHknKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
-
import { LoginFormComponent } from './../login-form/login-form.component';
|
|
4
|
-
import { AuthenticationService } from './../../services/authentication.service';
|
|
5
|
-
import { ConfirmationDialogComponent } from './../../../dialog/components/confirmation-dialog/confirmation-dialog.component';
|
|
6
|
-
export class LoginComponent {
|
|
7
|
-
constructor(dialog, authenticationService) {
|
|
8
|
-
this.dialog = dialog;
|
|
9
|
-
this.authenticationService = authenticationService;
|
|
10
|
-
}
|
|
11
|
-
login() {
|
|
12
|
-
this.dialog.open(LoginFormComponent, {
|
|
13
|
-
data: { adminGroup: this.adminGroup }
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
confirmLogout() {
|
|
17
|
-
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
18
|
-
data: { message: `Are you sure you want to logout?` }
|
|
19
|
-
});
|
|
20
|
-
dialogRef.afterClosed().subscribe(result => {
|
|
21
|
-
if (result) {
|
|
22
|
-
this.authenticationService.logout();
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
LoginComponent.decorators = [
|
|
28
|
-
{ type: Component, args: [{
|
|
29
|
-
selector: 'cp-login',
|
|
30
|
-
template: "<div id=\"user-id\">\n <i id=\"unauthenticated-user-image\" *ngIf=\"!authenticationService.authenticated\"\n class=\"fa fa-user-circle\"\n [class.fa-spin]=\"authenticationService.authenticating\"\n aria-hidden=\"true\"\n matTooltip=\"Login\"\n (click)=\"login()\"></i>\n\n <img id=\"authenticated-user-image\"\n *ngIf=\"authenticationService.authenticated && authenticationService.authenticatedUser.photoUrl\"\n [src]=\"authenticationService.authenticatedUser.photoUrl\"\n matTooltip=\"Logout\"\n (click)=\"confirmLogout()\" />\n\n <i id=\"authenticated-user-image\"\n *ngIf=\"authenticationService.authenticated && !authenticationService.authenticatedUser.photoUrl\"\n class=\"fa fa-user-circle\"\n matTooltip=\"Logout\"\n (click)=\"confirmLogout()\"></i>\n\n <div id=\"user-name\" *ngIf=\"authenticationService.authenticated\">\n {{ authenticationService.authenticatedUser.displayName }}\n </div>\n</div>",
|
|
31
|
-
styles: ["#user-id{display:flex;font-family:Verdana,Geneva,Tahoma,sans-serif;height:2em;padding:.3em}.fa{font-size:2em}img{border-radius:100%;height:2em;width:2em}#user-id>div{align-items:center;display:flex;font-size:1.15em;height:100%;margin-left:.75em}"]
|
|
32
|
-
},] }
|
|
33
|
-
];
|
|
34
|
-
LoginComponent.ctorParameters = () => [
|
|
35
|
-
{ type: MatDialog },
|
|
36
|
-
{ type: AuthenticationService }
|
|
37
|
-
];
|
|
38
|
-
LoginComponent.propDecorators = {
|
|
39
|
-
adminGroup: [{ type: Input }]
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F1dGhlbnRpY2F0aW9uL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQU83SCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFtQixNQUFpQixFQUMzQixxQkFBNEM7UUFEbEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO0lBQ3JELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDbkMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUM5RCxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUU7U0FDdEQsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQTVCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLHE4QkFBcUM7O2FBRXRDOzs7WUFUUSxTQUFTO1lBRVQscUJBQXFCOzs7eUJBUzNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTG9naW5Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uLy4uL2RpYWxvZy9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcC1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGFkbWluR3JvdXA6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlKSB7XG4gIH1cblxuICBsb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZy5vcGVuKExvZ2luRm9ybUNvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBhZG1pbkdyb3VwOiB0aGlzLmFkbWluR3JvdXAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29uZmlybUxvZ291dCgpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBtZXNzYWdlOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxvZ291dD9gIH1cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dvdXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
-
import { AuthenticationService } from './../../services/authentication.service';
|
|
4
|
-
import { SharePointService } from './../../../sharepoint/services/sharepoint.service';
|
|
5
|
-
export class LoginFormComponent {
|
|
6
|
-
constructor(dialogRef, sharePointService, authenticationService, data) {
|
|
7
|
-
this.dialogRef = dialogRef;
|
|
8
|
-
this.sharePointService = sharePointService;
|
|
9
|
-
this.authenticationService = authenticationService;
|
|
10
|
-
this.data = data;
|
|
11
|
-
this.adminGroup = data.adminGroup;
|
|
12
|
-
}
|
|
13
|
-
ngOnInit() {
|
|
14
|
-
this.authenticationService.authenticatedChanged
|
|
15
|
-
.subscribe((authenticated) => {
|
|
16
|
-
if (authenticated) {
|
|
17
|
-
this.dialogRef.close();
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
authenticate() {
|
|
22
|
-
if (!this.sharePointService || !this.username || !this.password) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
this.authenticationService.login(this.username, this.password, this.adminGroup);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
LoginFormComponent.decorators = [
|
|
29
|
-
{ type: Component, args: [{
|
|
30
|
-
selector: 'cp-login-form',
|
|
31
|
-
template: "<h2 mat-dialog-title>\n <span *ngIf=\"!authenticationService.authenticating\">Login</span>\n <span *ngIf=\"authenticationService.authenticating\">Authenticating...</span>\n</h2>\n\n<mat-dialog-content [class.loginError]=\"loginError\">\n <div id=\"spinner\" *ngIf=\"authenticationService.authenticating\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"></mat-progress-spinner>\n </div>\n\n <div *ngIf=\"!authenticationService.authenticating\">\n <div>\n <mat-form-field>\n <input matInput placeholder=\"Username\" [(ngModel)]=\"username\" name=\"username\" required (keyup.enter)=\"authenticate()\">\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field>\n <input matInput type=\"password\" placeholder=\"Password\" [(ngModel)]=\"password\" name=\"password\" required (keyup.enter)=\"authenticate()\">\n </mat-form-field>\n </div>\n </div>\n\n <div *ngIf=\"!authenticationService.authenticating && loginError\" class=\"alert alert-danger\">\n Bad username or password\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions *ngIf=\"!authenticationService.authenticating\">\n <button type=\"button\" mat-raised-button (click)=\"authenticate()\">OK</button>\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">Cancel</button>\n</mat-dialog-actions>",
|
|
32
|
-
styles: ["#spinner{align-items:center;display:flex;height:100%;justify-content:center;width:100%}mat-dialog-content{height:150px}mat-dialog-content.loginError{height:200px}"]
|
|
33
|
-
},] }
|
|
34
|
-
];
|
|
35
|
-
LoginFormComponent.ctorParameters = () => [
|
|
36
|
-
{ type: MatDialogRef },
|
|
37
|
-
{ type: SharePointService },
|
|
38
|
-
{ type: AuthenticationService },
|
|
39
|
-
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
40
|
-
];
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXV0aGVudGljYXRpb24vY29tcG9uZW50cy9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFPdEYsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUFtQixTQUEyQyxFQUNwRCxpQkFBb0MsRUFDckMscUJBQTRDLEVBQ25CLElBQVM7UUFIeEIsY0FBUyxHQUFULFNBQVMsQ0FBa0M7UUFDcEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQUs7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQjthQUM1QyxTQUFTLENBQUMsQ0FBQyxhQUFzQixFQUFFLEVBQUU7WUFDcEMsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9ELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRixDQUFDOzs7WUFoQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QiwyMENBQTBDOzthQUUzQzs7O1lBUlEsWUFBWTtZQUVaLGlCQUFpQjtZQURqQixxQkFBcUI7NENBaUJ6QixNQUFNLFNBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTaGFyZVBvaW50U2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vc2hhcmVwb2ludC9zZXJ2aWNlcy9zaGFyZXBvaW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcC1sb2dpbi1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2dpbi1mb3JtLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBhZG1pbkdyb3VwOiBzdHJpbmc7XG4gIGxvZ2luRXJyb3I6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPExvZ2luRm9ybUNvbXBvbmVudD4sXG4gICAgcHJpdmF0ZSBzaGFyZVBvaW50U2VydmljZTogU2hhcmVQb2ludFNlcnZpY2UsXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XG4gICAgICB0aGlzLmFkbWluR3JvdXAgPSBkYXRhLmFkbWluR3JvdXA7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVkQ2hhbmdlZFxuICAgICAgLnN1YnNjcmliZSgoYXV0aGVudGljYXRlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoYXV0aGVudGljYXRlZCkge1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgYXV0aGVudGljYXRlKCkge1xuICAgIGlmICghdGhpcy5zaGFyZVBvaW50U2VydmljZSB8fCAhdGhpcy51c2VybmFtZSB8fCAhdGhpcy5wYXNzd29yZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dpbih0aGlzLnVzZXJuYW1lLCB0aGlzLnBhc3N3b3JkLCB0aGlzLmFkbWluR3JvdXApO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXV0aGVudGljYXRpb24vbW9kZWwvYXV0aGVudGljYXRpb24tdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXV0aGVudGljYXRpb25Ub2tlbiB7XG4gICAgLy9hdWQ6IHN0cmluZztcbiAgICBkZXBhcnRtZW50OiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBkaXN0aW5ndWlzaGVkTmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgZW1wbG95ZWVOdW1iZXI6IHN0cmluZztcbiAgICBleHA6IG51bWJlcjtcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICBoaXJlRGF0ZTogRGF0ZTtcbiAgICBpc3M6IHN0cmluZztcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xuICAgIG1hbmFnZXI6IHN0cmluZztcbiAgICBtZW1iZXJPZjogc3RyaW5nO1xuICAgIG5iZjogbnVtYmVyO1xuICAgIHBob25lOiBzdHJpbmc7XG4gICAgcm9sZTogc3RyaW5nO1xuICAgIHNpZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgd2luYWNjb3VudG5hbWU6IHN0cmluZztcbiAgICB3b3JrU2hpZnQ6IHN0cmluZztcblxuICAgIC8vIGFkZGVkIGxhdGVyIGJ5IGF1dGhlbnRpY2F0aW9uLnNlcnZpY2VcbiAgICBhY2NvdW50TmFtZT86IHN0cmluZztcbiAgICBhZG1pbj86IGJvb2xlYW47XG4gICAgcGhvdG9Vcmw/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
//#region Imports
|
|
2
|
-
import { Injectable, Output, EventEmitter, Optional } from '@angular/core';
|
|
3
|
-
import { HttpClient } from '@angular/common/http';
|
|
4
|
-
// import { JwtHelper } from 'angular2-jwt';
|
|
5
|
-
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
6
|
-
import { AuthenticationServiceConfig } from './../model/authentication.service.config';
|
|
7
|
-
import { SharePointService } from './../../sharepoint/services/sharepoint.service';
|
|
8
|
-
//#endregion
|
|
9
|
-
/**
|
|
10
|
-
* Authenticate Active Directory user
|
|
11
|
-
*/
|
|
12
|
-
export class AuthenticationService {
|
|
13
|
-
//#endregion
|
|
14
|
-
//#region Lifecycle
|
|
15
|
-
/**
|
|
16
|
-
* @ignore
|
|
17
|
-
*/
|
|
18
|
-
constructor(config, http, sharePointService) {
|
|
19
|
-
this.http = http;
|
|
20
|
-
this.sharePointService = sharePointService;
|
|
21
|
-
this.authenticatedChanged = new EventEmitter();
|
|
22
|
-
this.authenticatingChanged = new EventEmitter();
|
|
23
|
-
/**
|
|
24
|
-
* Flag set to true while the service is attempting to authenticate the user
|
|
25
|
-
*/
|
|
26
|
-
this.authenticating = false;
|
|
27
|
-
/**
|
|
28
|
-
* Flag set to true when the user is successfully authenticated
|
|
29
|
-
*/
|
|
30
|
-
this.authenticated = false;
|
|
31
|
-
this.authenticationApiUrl = config.authenticationApiUrl;
|
|
32
|
-
this.checkForExistingToken();
|
|
33
|
-
}
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region Utilities
|
|
36
|
-
/**
|
|
37
|
-
* Authenticate the user and store the token in Local Storage
|
|
38
|
-
*
|
|
39
|
-
* @param username AD sAMAccountName
|
|
40
|
-
* @param password
|
|
41
|
-
* @param adminGroup AD group that determines if authenticated user is considered an administrator of the app
|
|
42
|
-
*/
|
|
43
|
-
login(username, password, adminGroup) {
|
|
44
|
-
const request = {
|
|
45
|
-
username: username,
|
|
46
|
-
password: password,
|
|
47
|
-
adminGroup: adminGroup
|
|
48
|
-
};
|
|
49
|
-
this.authenticating = true;
|
|
50
|
-
this.authenticatingChanged.emit(this.authenticating);
|
|
51
|
-
this.http.request('POST', this.authenticationApiUrl, { responseType: 'text', body: request })
|
|
52
|
-
// this.http.post<string>(this.authenticationApiUrl, request)
|
|
53
|
-
.subscribe(token => this.validateUser(token), err => {
|
|
54
|
-
this.authenticating = false;
|
|
55
|
-
this.authenticatingChanged.emit(this.authenticating);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Logout the user and delete the token from Local Storage
|
|
60
|
-
*/
|
|
61
|
-
logout() {
|
|
62
|
-
if (localStorage.getItem('token')) {
|
|
63
|
-
localStorage.removeItem('token');
|
|
64
|
-
}
|
|
65
|
-
this.authenticatedUser = null;
|
|
66
|
-
this.authenticated = false;
|
|
67
|
-
this.authenticatedChanged.emit(false);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* @ignore
|
|
71
|
-
*/
|
|
72
|
-
validateUser(token) {
|
|
73
|
-
if (!token) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const jwtHelper = new JwtHelperService();
|
|
77
|
-
const decoded = jwtHelper.decodeToken(token);
|
|
78
|
-
if (jwtHelper.isTokenExpired(token)) {
|
|
79
|
-
this.logout();
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
this.authenticatedUser = decoded;
|
|
83
|
-
this.authenticatedUser.accountName = decoded.winaccountname;
|
|
84
|
-
this.authenticatedUser.admin = decoded.role === 'Admin';
|
|
85
|
-
localStorage.setItem('token', token);
|
|
86
|
-
this.getPhoto();
|
|
87
|
-
this.authenticated = true;
|
|
88
|
-
this.authenticatedChanged.emit(this.authenticated);
|
|
89
|
-
this.authenticating = false;
|
|
90
|
-
this.authenticatingChanged.emit(this.authenticating);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* @ignore
|
|
94
|
-
*/
|
|
95
|
-
getPhoto() {
|
|
96
|
-
this.sharePointService.getPhotos()
|
|
97
|
-
.subscribe(photos => {
|
|
98
|
-
// The user may have been logged out by the time the photos came back
|
|
99
|
-
if (!this.authenticatedUser || !this.authenticatedUser.employeeNumber) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const photo = photos.find(pic => +pic.employeeNumber === +this.authenticatedUser.employeeNumber);
|
|
103
|
-
if (photo) {
|
|
104
|
-
this.authenticatedUser.photoUrl = photo.encodedAbsUrl;
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* @ignore
|
|
110
|
-
*/
|
|
111
|
-
checkForExistingToken() {
|
|
112
|
-
if (localStorage.getItem('token')) {
|
|
113
|
-
this.validateUser(localStorage.getItem('token'));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
AuthenticationService.decorators = [
|
|
118
|
-
{ type: Injectable }
|
|
119
|
-
];
|
|
120
|
-
AuthenticationService.ctorParameters = () => [
|
|
121
|
-
{ type: AuthenticationServiceConfig, decorators: [{ type: Optional }] },
|
|
122
|
-
{ type: HttpClient },
|
|
123
|
-
{ type: SharePointService }
|
|
124
|
-
];
|
|
125
|
-
AuthenticationService.propDecorators = {
|
|
126
|
-
authenticatedChanged: [{ type: Output }],
|
|
127
|
-
authenticatingChanged: [{ type: Output }]
|
|
128
|
-
};
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hdXRoZW50aWNhdGlvbi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsWUFBWTtBQUVaOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQWlDaEMsWUFBWTtJQUVaLG1CQUFtQjtJQUNuQjs7T0FFRztJQUNILFlBQXlCLE1BQW1DLEVBQ2xELElBQWdCLEVBQ2hCLGlCQUFvQztRQURwQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFsQ3BDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbkQsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU5RDs7V0FFRztRQUNILG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUF5QnBCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUM7UUFDeEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELFlBQVk7SUFFWixtQkFBbUI7SUFDbkI7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxVQUFtQjtRQUMzRCxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUM7WUFDNUYsNkRBQTZEO2FBQzFELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQzVDLEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLE9BQU87U0FBRTtRQUV2QixNQUFNLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQXdCLENBQUM7UUFFcEUsSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7UUFFeEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNLLFFBQVE7UUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFO2FBQy9CLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixxRUFBcUU7WUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JFLE9BQU87YUFDUjtZQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFakcsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO2FBQ3ZEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxxQkFBcUI7UUFDM0IsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQzs7O1lBaEpGLFVBQVU7OztZQVBGLDJCQUEyQix1QkErQ3BCLFFBQVE7WUFuRGYsVUFBVTtZQUtWLGlCQUFpQjs7O21DQWN2QixNQUFNO29DQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gSW1wb3J0c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Ub2tlbiB9IGZyb20gJy4vLi4vbW9kZWwvYXV0aGVudGljYXRpb24tdG9rZW4nO1xuLy8gaW1wb3J0IHsgSnd0SGVscGVyIH0gZnJvbSAnYW5ndWxhcjItand0JztcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi8uLi9tb2RlbC9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLmNvbmZpZyc7XG5pbXBvcnQgeyBTaGFyZVBvaW50U2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2hhcmVwb2ludC9zZXJ2aWNlcy9zaGFyZXBvaW50LnNlcnZpY2UnO1xuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogQXV0aGVudGljYXRlIEFjdGl2ZSBEaXJlY3RvcnkgdXNlclxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25TZXJ2aWNlIHtcbiAgLy8jcmVnaW9uIEZpZWxkc1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvbkFwaVVybDogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBhdXRoZW50aWNhdGVkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGF1dGhlbnRpY2F0aW5nQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogRmxhZyBzZXQgdG8gdHJ1ZSB3aGlsZSB0aGUgc2VydmljZSBpcyBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxuICAgKi9cbiAgYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogRmxhZyBzZXQgdG8gdHJ1ZSB3aGVuIHRoZSB1c2VyIGlzIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkXG4gICAqL1xuICBhdXRoZW50aWNhdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlclxuICAgKi9cbiAgLyphdXRoZW50aWNhdGVkVXNlcjoge1xuICAgIGFkbWluOiBib29sZWFuLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICBkaXN0aW5ndWlzaGVkTmFtZTogc3RyaW5nO1xuICAgIGVtcGxveWVlTnVtYmVyOiBzdHJpbmc7XG4gICAgcGhvdG9Vcmw/OiBzdHJpbmc7XG4gICAgbWVtYmVyT2Y/OiBzdHJpbmc7XG4gIH07Ki9cbiAgYXV0aGVudGljYXRlZFVzZXI6IEF1dGhlbnRpY2F0aW9uVG9rZW47XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBMaWZlY3ljbGVcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKCBAT3B0aW9uYWwoKSBjb25maWc6IEF1dGhlbnRpY2F0aW9uU2VydmljZUNvbmZpZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBzaGFyZVBvaW50U2VydmljZTogU2hhcmVQb2ludFNlcnZpY2UpIHtcblxuICAgIHRoaXMuYXV0aGVudGljYXRpb25BcGlVcmwgPSBjb25maWcuYXV0aGVudGljYXRpb25BcGlVcmw7XG4gICAgdGhpcy5jaGVja0ZvckV4aXN0aW5nVG9rZW4oKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gVXRpbGl0aWVzXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGUgdGhlIHVzZXIgYW5kIHN0b3JlIHRoZSB0b2tlbiBpbiBMb2NhbCBTdG9yYWdlXG4gICAqXG4gICAqIEBwYXJhbSB1c2VybmFtZSBBRCBzQU1BY2NvdW50TmFtZVxuICAgKiBAcGFyYW0gcGFzc3dvcmRcbiAgICogQHBhcmFtIGFkbWluR3JvdXAgQUQgZ3JvdXAgdGhhdCBkZXRlcm1pbmVzIGlmIGF1dGhlbnRpY2F0ZWQgdXNlciBpcyBjb25zaWRlcmVkIGFuIGFkbWluaXN0cmF0b3Igb2YgdGhlIGFwcFxuICAgKi9cbiAgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgYWRtaW5Hcm91cD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZTogdXNlcm5hbWUsXG4gICAgICBwYXNzd29yZDogcGFzc3dvcmQsXG4gICAgICBhZG1pbkdyb3VwOiBhZG1pbkdyb3VwXG4gICAgfTtcblxuICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XG5cbiAgICB0aGlzLmh0dHAucmVxdWVzdCgnUE9TVCcsIHRoaXMuYXV0aGVudGljYXRpb25BcGlVcmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcsIGJvZHk6IHJlcXVlc3R9KVxuICAgIC8vIHRoaXMuaHR0cC5wb3N0PHN0cmluZz4odGhpcy5hdXRoZW50aWNhdGlvbkFwaVVybCwgcmVxdWVzdClcbiAgICAgIC5zdWJzY3JpYmUodG9rZW4gPT4gdGhpcy52YWxpZGF0ZVVzZXIodG9rZW4pLFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW5nQ2hhbmdlZC5lbWl0KHRoaXMuYXV0aGVudGljYXRpbmcpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9nb3V0IHRoZSB1c2VyIGFuZCBkZWxldGUgdGhlIHRva2VuIGZyb20gTG9jYWwgU3RvcmFnZVxuICAgKi9cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rva2VuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlciA9IG51bGw7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVkQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVXNlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0b2tlbikgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IGp3dEhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XG4gICAgY29uc3QgZGVjb2RlZCA9IGp3dEhlbHBlci5kZWNvZGVUb2tlbih0b2tlbikgYXMgQXV0aGVudGljYXRpb25Ub2tlbjtcblxuICAgIGlmIChqd3RIZWxwZXIuaXNUb2tlbkV4cGlyZWQodG9rZW4pKSB7XG4gICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXIgPSBkZWNvZGVkO1xuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXIuYWNjb3VudE5hbWUgPSBkZWNvZGVkLndpbmFjY291bnRuYW1lO1xuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXIuYWRtaW4gPSBkZWNvZGVkLnJvbGUgPT09ICdBZG1pbic7XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9rZW4nLCB0b2tlbik7XG5cbiAgICB0aGlzLmdldFBob3RvKCk7XG5cbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSB0cnVlO1xuICAgIHRoaXMuYXV0aGVudGljYXRlZENoYW5nZWQuZW1pdCh0aGlzLmF1dGhlbnRpY2F0ZWQpO1xuXG4gICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuYXV0aGVudGljYXRpbmdDaGFuZ2VkLmVtaXQodGhpcy5hdXRoZW50aWNhdGluZyk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQaG90bygpOiB2b2lkIHtcbiAgICB0aGlzLnNoYXJlUG9pbnRTZXJ2aWNlLmdldFBob3RvcygpXG4gICAgICAuc3Vic2NyaWJlKHBob3RvcyA9PiB7XG4gICAgICAgIC8vIFRoZSB1c2VyIG1heSBoYXZlIGJlZW4gbG9nZ2VkIG91dCBieSB0aGUgdGltZSB0aGUgcGhvdG9zIGNhbWUgYmFja1xuICAgICAgICBpZiAoIXRoaXMuYXV0aGVudGljYXRlZFVzZXIgfHwgIXRoaXMuYXV0aGVudGljYXRlZFVzZXIuZW1wbG95ZWVOdW1iZXIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaG90byA9IHBob3Rvcy5maW5kKHBpYyA9PiArcGljLmVtcGxveWVlTnVtYmVyID09PSArdGhpcy5hdXRoZW50aWNhdGVkVXNlci5lbXBsb3llZU51bWJlcik7XG5cbiAgICAgICAgaWYgKHBob3RvKSB7XG4gICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVkVXNlci5waG90b1VybCA9IHBob3RvLmVuY29kZWRBYnNVcmw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hlY2tGb3JFeGlzdGluZ1Rva2VuKCk6IHZvaWQge1xuICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVVzZXIobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rva2VuJykpO1xuICAgIH1cbiAgfVxuICAvLyNlbmRyZWdpb25cbn1cbiJdfQ==
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { ConfirmationDialogMode } from './../../model/confirmation-dialog-mode.enum';
|
|
3
|
-
export class DialogComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.closed = new EventEmitter();
|
|
6
|
-
this.ConfirmationDialogMode = ConfirmationDialogMode;
|
|
7
|
-
this.mode = ConfirmationDialogMode.OkCancel;
|
|
8
|
-
this.customTrueFalseText = null;
|
|
9
|
-
}
|
|
10
|
-
ngOnInit() {
|
|
11
|
-
if (this.data) {
|
|
12
|
-
this.title = this.data.title || null;
|
|
13
|
-
this.message = this.data.message || null;
|
|
14
|
-
this.checkboxMessage = this.data.checkboxMessage || null;
|
|
15
|
-
this.placeholder = this.data.placeholder || null;
|
|
16
|
-
this.userInput = this.data.value || null;
|
|
17
|
-
this.mode = this.data.mode || ConfirmationDialogMode.OkCancel;
|
|
18
|
-
this.customTrueFalseText = this.data.customTrueFalseText;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
close() {
|
|
22
|
-
let data;
|
|
23
|
-
switch (this.dialogType) {
|
|
24
|
-
case 'message':
|
|
25
|
-
data = this.checkboxMessage ?
|
|
26
|
-
{
|
|
27
|
-
checkbox: this.checkboxValue || false
|
|
28
|
-
} :
|
|
29
|
-
null;
|
|
30
|
-
break;
|
|
31
|
-
case 'input':
|
|
32
|
-
data = this.checkboxMessage ?
|
|
33
|
-
{
|
|
34
|
-
response: this.userInput,
|
|
35
|
-
checkbox: this.checkboxValue || false
|
|
36
|
-
} :
|
|
37
|
-
this.userInput;
|
|
38
|
-
break;
|
|
39
|
-
case 'confirmation':
|
|
40
|
-
data = this.checkboxMessage ?
|
|
41
|
-
{
|
|
42
|
-
response: true,
|
|
43
|
-
checkbox: this.checkboxValue || false
|
|
44
|
-
} :
|
|
45
|
-
true;
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
this.closed.emit(data);
|
|
49
|
-
}
|
|
50
|
-
cancel() {
|
|
51
|
-
let data;
|
|
52
|
-
if (this.dialogType === 'confirmation') {
|
|
53
|
-
data = this.checkboxMessage ?
|
|
54
|
-
{
|
|
55
|
-
response: false,
|
|
56
|
-
checkbox: this.checkboxValue || false
|
|
57
|
-
} :
|
|
58
|
-
false;
|
|
59
|
-
}
|
|
60
|
-
this.closed.emit(data);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
DialogComponent.decorators = [
|
|
64
|
-
{ type: Component, args: [{
|
|
65
|
-
selector: 'cp-dialog',
|
|
66
|
-
template: "<h2 *ngIf=\"title\" mat-dialog-title [innerHTML]=\"title\"></h2>\n\n<mat-dialog-content>\n <div *ngIf=\"message\" [innerHTML]=\"message\"></div>\n\n <mat-form-field *ngIf=\"dialogType === 'input'\">\n <textarea matInput [placeholder]=\"placeholder\" [(ngModel)]=\"userInput\"></textarea>\n </mat-form-field>\n\n <div id=\"checkbox\" *ngIf=\"checkboxMessage\">\n <mat-checkbox [(ngModel)]=\"checkboxValue\">\n <span [innerHTML]=\"checkboxMessage\"></span>\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"close()\" [disabled]=\"dialogType === 'input' && !userInput\">\n <span [ngSwitch]=\"mode\">\n <span *ngSwitchCase=\"ConfirmationDialogMode.YesNo\">Yes</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.TrueFalse\">True</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.Custom\">{{ customTrueFalseText[0] }}</span>\n <span *ngSwitchDefault>OK</span>\n </span>\n </button>\n <button *ngIf=\"dialogType !== 'message'\" mat-raised-button (click)=\"cancel()\">\n <span [ngSwitch]=\"mode\">\n <span *ngSwitchCase=\"ConfirmationDialogMode.YesNo\">No</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.TrueFalse\">False</span>\n <span *ngSwitchCase=\"ConfirmationDialogMode.Custom\">{{ customTrueFalseText[1] }}</span>\n <span *ngSwitchDefault>Cancel</span>\n </span>\n </button>\n</mat-dialog-actions>",
|
|
67
|
-
styles: ["mat-form-field{margin-top:2em;width:100%}#checkbox{margin:2em 0}"]
|
|
68
|
-
},] }
|
|
69
|
-
];
|
|
70
|
-
DialogComponent.propDecorators = {
|
|
71
|
-
dialogType: [{ type: Input }],
|
|
72
|
-
data: [{ type: Input }],
|
|
73
|
-
closed: [{ type: Output }]
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9kaWFsb2cvY29tcG9uZW50cy9fZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQU9yRixNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQVFjLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTNDLDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBQ2hELFNBQUksR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7UUFLdkMsd0JBQW1CLEdBQWEsSUFBSSxDQUFDO0lBK0R6QyxDQUFDO0lBMURHLFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztZQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztZQUM5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztTQUM1RDtJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxJQUFTLENBQUM7UUFFZCxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDckIsS0FBSyxTQUFTO2dCQUNWLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ3pCO3dCQUNJLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUs7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUM7Z0JBQ1QsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUN6Qjt3QkFDSSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7d0JBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUs7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNuQixNQUFNO1lBQ1YsS0FBSyxjQUFjO2dCQUNmLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ3pCO3dCQUNJLFFBQVEsRUFBRSxJQUFJO3dCQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUs7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUM7Z0JBQ1QsTUFBTTtTQUNiO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLElBQVMsQ0FBQztRQUVkLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxjQUFjLEVBQUU7WUFDcEMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDekI7b0JBQ0ksUUFBUSxFQUFFLEtBQUs7b0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSztpQkFDeEMsQ0FBQyxDQUFDO2dCQUNILEtBQUssQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7O1lBOUVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsV0FBVztnQkFDckIsc2hEQUFzQzs7YUFFekM7Ozt5QkFFSSxLQUFLO21CQUNMLEtBQUs7cUJBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ01vZGUgfSBmcm9tICcuLy4uLy4uL21vZGVsL2NvbmZpcm1hdGlvbi1kaWFsb2ctbW9kZS5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjcC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RpYWxvZy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBkaWFsb2dUeXBlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGF0YTogYW55O1xuICAgIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIENvbmZpcm1hdGlvbkRpYWxvZ01vZGUgPSBDb25maXJtYXRpb25EaWFsb2dNb2RlO1xuICAgIG1vZGUgPSBDb25maXJtYXRpb25EaWFsb2dNb2RlLk9rQ2FuY2VsO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGNoZWNrYm94TWVzc2FnZTogc3RyaW5nO1xuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgY3VzdG9tVHJ1ZUZhbHNlVGV4dDogc3RyaW5nW10gPSBudWxsO1xuXG4gICAgdXNlcklucHV0OiBzdHJpbmc7XG4gICAgY2hlY2tib3hWYWx1ZTogYm9vbGVhbjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy5kYXRhLnRpdGxlIHx8IG51bGw7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLmRhdGEubWVzc2FnZSB8fCBudWxsO1xuICAgICAgICAgICAgdGhpcy5jaGVja2JveE1lc3NhZ2UgPSB0aGlzLmRhdGEuY2hlY2tib3hNZXNzYWdlIHx8IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5kYXRhLnBsYWNlaG9sZGVyIHx8IG51bGw7XG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dCA9IHRoaXMuZGF0YS52YWx1ZSB8fCBudWxsO1xuICAgICAgICAgICAgdGhpcy5tb2RlID0gdGhpcy5kYXRhLm1vZGUgfHwgQ29uZmlybWF0aW9uRGlhbG9nTW9kZS5Pa0NhbmNlbDtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVHJ1ZUZhbHNlVGV4dCA9IHRoaXMuZGF0YS5jdXN0b21UcnVlRmFsc2VUZXh0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGxldCBkYXRhOiBhbnk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmRpYWxvZ1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmNoZWNrYm94TWVzc2FnZSA/XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94OiB0aGlzLmNoZWNrYm94VmFsdWUgfHwgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSA6XG4gICAgICAgICAgICAgICAgICAgIG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuY2hlY2tib3hNZXNzYWdlID9cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHRoaXMudXNlcklucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g6IHRoaXMuY2hlY2tib3hWYWx1ZSB8fCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VySW5wdXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb25maXJtYXRpb24nOlxuICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmNoZWNrYm94TWVzc2FnZSA/XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g6IHRoaXMuY2hlY2tib3hWYWx1ZSB8fCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoZGF0YSk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICBsZXQgZGF0YTogYW55O1xuXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1R5cGUgPT09ICdjb25maXJtYXRpb24nKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5jaGVja2JveE1lc3NhZ2UgP1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjaGVja2JveDogdGhpcy5jaGVja2JveFZhbHVlIHx8IGZhbHNlXG4gICAgICAgICAgICAgICAgfSA6XG4gICAgICAgICAgICAgICAgZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KGRhdGEpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
-
export class ConfirmationDialogComponent {
|
|
4
|
-
constructor(dialogRef, data) {
|
|
5
|
-
this.dialogRef = dialogRef;
|
|
6
|
-
this.data = data;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
ConfirmationDialogComponent.decorators = [
|
|
10
|
-
{ type: Component, args: [{
|
|
11
|
-
selector: 'cp-confirmation-dialog',
|
|
12
|
-
template: "<cp-dialog\n [data]=\"data\"\n [dialogType]=\"'confirmation'\"\n (closed)=\"dialogRef.close($event)\">\n</cp-dialog>"
|
|
13
|
-
},] }
|
|
14
|
-
];
|
|
15
|
-
ConfirmationDialogComponent.ctorParameters = () => [
|
|
16
|
-
{ type: MatDialogRef },
|
|
17
|
-
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
18
|
-
];
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGlhbG9nL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTXpFLE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBbUIsU0FBb0QsRUFDckMsSUFBUztRQUR4QixjQUFTLEdBQVQsU0FBUyxDQUEyQztRQUNyQyxTQUFJLEdBQUosSUFBSSxDQUFLO0lBQzNDLENBQUM7OztZQVJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxtSUFBbUQ7YUFDcEQ7OztZQUxRLFlBQVk7NENBU2hCLE1BQU0sU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3AtY29uZmlybWF0aW9uLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XG4gIH1cbn1cbiJdfQ==
|