@c8y/ngx-components 1018.503.45 → 1018.503.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/context-dashboard/add-dashboard.factory.d.ts +3 -2
  2. package/context-dashboard/context-dashboard.model.d.ts +16 -1
  3. package/context-dashboard/context-dashboard.service.d.ts +4 -2
  4. package/context-dashboard/report-dashboard/report-dashboard-list.component.d.ts +3 -2
  5. package/core/common/ApplicationOptions.d.ts +2 -2
  6. package/core/login/credentials.component.d.ts +1 -3
  7. package/core/login/login.component.d.ts +3 -1
  8. package/esm2020/context-dashboard/add-dashboard.factory.mjs +17 -5
  9. package/esm2020/context-dashboard/context-dashboard.component.mjs +24 -4
  10. package/esm2020/context-dashboard/context-dashboard.model.mjs +19 -4
  11. package/esm2020/context-dashboard/context-dashboard.service.mjs +21 -6
  12. package/esm2020/context-dashboard/dashboard-availability.component.mjs +3 -3
  13. package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +21 -6
  14. package/esm2020/core/common/ApplicationOptions.mjs +1 -1
  15. package/esm2020/core/login/credentials.component.mjs +15 -18
  16. package/esm2020/core/login/login.component.mjs +18 -15
  17. package/esm2020/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.mjs +17 -9
  18. package/esm2020/widgets/implementations/map/map-widget.component.mjs +26 -11
  19. package/esm2020/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.mjs +3 -3
  20. package/esm2020/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.mjs +3 -3
  21. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +91 -15
  22. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  23. package/fesm2015/c8y-ngx-components-widgets-implementations-device-control-message.mjs +19 -8
  24. package/fesm2015/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  25. package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs +37 -20
  26. package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  27. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs +2 -2
  28. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map +1 -1
  29. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs +2 -2
  30. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs.map +1 -1
  31. package/fesm2015/c8y-ngx-components.mjs +11 -11
  32. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  33. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +91 -15
  34. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  35. package/fesm2020/c8y-ngx-components-widgets-implementations-device-control-message.mjs +15 -8
  36. package/fesm2020/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  37. package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs +25 -13
  38. package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  39. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs +2 -2
  40. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map +1 -1
  41. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs +2 -2
  42. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs.map +1 -1
  43. package/fesm2020/c8y-ngx-components.mjs +11 -11
  44. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  45. package/package.json +1 -1
  46. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts +4 -2
  47. package/widgets/implementations/map/map-widget.component.d.ts +7 -4
  48. package/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.d.ts +79 -1
  49. package/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.d.ts +76 -1
  50. package/esm2020/widgets/implementations/three-d-rotation/box-model/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -5
  51. package/esm2020/widgets/implementations/three-d-rotation/box-model/index.mjs +0 -4
  52. package/esm2020/widgets/implementations/three-d-rotation/phone-model/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -5
  53. package/esm2020/widgets/implementations/three-d-rotation/phone-model/index.mjs +0 -4
  54. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -10
  55. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs.map +0 -1
  56. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -10
  57. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs.map +0 -1
  58. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -10
  59. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs.map +0 -1
  60. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -10
  61. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs.map +0 -1
  62. package/widgets/implementations/three-d-rotation/box-model/index.d.ts +0 -1
  63. package/widgets/implementations/three-d-rotation/phone-model/index.d.ts +0 -1
@@ -14762,10 +14762,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
14762
14762
  }] } });
14763
14763
 
14764
14764
  class CredentialsComponent {
14765
- constructor(loginService, alert, ui, credentialsFromQueryParamsService) {
14765
+ constructor(loginService, alert, credentialsFromQueryParamsService) {
14766
14766
  this.loginService = loginService;
14767
14767
  this.alert = alert;
14768
- this.ui = ui;
14769
14768
  this.credentialsFromQueryParamsService = credentialsFromQueryParamsService;
14770
14769
  this.onChangeView = new EventEmitter();
14771
14770
  this.loginViewParams = {
@@ -14859,12 +14858,12 @@ class CredentialsComponent {
14859
14858
  this.alert.warning(gettext('Two-factor authentication has been turned on for this account. Provide your phone number above to save it in your user profile and start receiving verification codes via SMS.'));
14860
14859
  }
14861
14860
  }
14862
- CredentialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CredentialsComponent, deps: [{ token: LoginService }, { token: AlertService }, { token: AppStateService }, { token: CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
14863
- CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <c8y-password-input\n [id]=\"'password'\"\n name=\"password\"\n required\n [(ngModel)]=\"model.password\"\n [autocomplete]=\"'off'\"\n ></c8y-password-input>\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n <div\n class=\"text-center m-t-8\"\n *ngIf=\"!!(ui.state$ | async).loginExtraLink\"\n >\n <a\n class=\"small\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n role=\"button\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PasswordInputComponent, selector: "c8y-password-input", inputs: ["id", "autocomplete"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] });
14861
+ CredentialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CredentialsComponent, deps: [{ token: LoginService }, { token: AlertService }, { token: CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
14862
+ CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <c8y-password-input\n name=\"password\"\n required\n [id]=\"'password'\"\n [(ngModel)]=\"model.password\"\n [autocomplete]=\"'off'\"\n ></c8y-password-input>\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PasswordInputComponent, selector: "c8y-password-input", inputs: ["id", "autocomplete"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14864
14863
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CredentialsComponent, decorators: [{
14865
14864
  type: Component,
14866
- args: [{ selector: 'c8y-credentials', template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <c8y-password-input\n [id]=\"'password'\"\n name=\"password\"\n required\n [(ngModel)]=\"model.password\"\n [autocomplete]=\"'off'\"\n ></c8y-password-input>\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n <div\n class=\"text-center m-t-8\"\n *ngIf=\"!!(ui.state$ | async).loginExtraLink\"\n >\n <a\n class=\"small\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n role=\"button\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n" }]
14867
- }], ctorParameters: function () { return [{ type: LoginService }, { type: AlertService }, { type: AppStateService }, { type: CredentialsFromQueryParamsService }]; }, propDecorators: { onChangeView: [{
14865
+ args: [{ selector: 'c8y-credentials', template: "<div\n id=\"oauth\"\n *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\"\n>\n <button\n class=\"btn btn-block btn-lg form-group\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n >\n <i\n class=\"pull-left\"\n [c8yIcon]=\"'sign-in'\"\n ></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form\n class=\"loginForm\"\n (ngSubmit)=\"login()\"\n #loginForm=\"ngForm\"\n *ngIf=\"showLoginForm\"\n novalidate\n>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n\n <ng-template #orLegend>\n <div\n class=\"legend form-block center\"\n translate\n >\n or\n </div>\n </ng-template>\n\n <c8y-form-group\n class=\"tenantField\"\n id=\"tenantField\"\n *ngIf=\"showTenant\"\n >\n <label\n for=\"tenant\"\n translate\n >\n Tenant ID\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n name=\"tenant\"\n type=\"text\"\n required\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"user\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"user\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n name=\"user\"\n type=\"text\"\n required\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder-no-required-hint\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <c8y-password-input\n name=\"password\"\n required\n [id]=\"'password'\"\n [(ngModel)]=\"model.password\"\n [autocomplete]=\"'off'\"\n ></c8y-password-input>\n </c8y-form-group>\n <div\n class=\"form-group\"\n *ngIf=\"showBasicAuth\"\n >\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Remember me' | translate }}\"\n >\n <input\n name=\"remember\"\n type=\"checkbox\"\n [(ngModel)]=\"loginService.rememberMe\"\n />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Forgot password?' | translate }}\"\n type=\"button\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n</form>\n" }]
14866
+ }], ctorParameters: function () { return [{ type: LoginService }, { type: AlertService }, { type: CredentialsFromQueryParamsService }]; }, propDecorators: { onChangeView: [{
14868
14867
  type: Output
14869
14868
  }], loginViewParams: [{
14870
14869
  type: Input
@@ -15012,11 +15011,12 @@ class LoginComponent {
15012
15011
  /**
15013
15012
  * Just DI.
15014
15013
  */
15015
- constructor(loginService, options, alert, credentialsFromQueryParamsService) {
15014
+ constructor(loginService, options, alert, credentialsFromQueryParamsService, ui) {
15016
15015
  this.loginService = loginService;
15017
15016
  this.options = options;
15018
15017
  this.alert = alert;
15019
15018
  this.credentialsFromQueryParamsService = credentialsFromQueryParamsService;
15019
+ this.ui = ui;
15020
15020
  this.currentView = LoginViews.None;
15021
15021
  this.LOGIN_VIEWS = LoginViews;
15022
15022
  this.disabled = false;
@@ -15101,12 +15101,12 @@ class LoginComponent {
15101
15101
  return token;
15102
15102
  }
15103
15103
  }
15104
- LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LoginComponent, deps: [{ token: LoginService }, { token: OptionsService }, { token: AlertService }, { token: CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
15105
- LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: ["credentials"], outputs: ["onCancel"] }, { kind: "component", type: ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: ["credentials"], outputs: ["onCancel", "onChangeView"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: RecoverPasswordComponent, selector: "c8y-recover-password", outputs: ["onChangeView"] }, { kind: "component", type: ChangePasswordComponent, selector: "c8y-change-password", inputs: ["credentials"], outputs: ["onChangeView"] }, { kind: "component", type: CredentialsComponent, selector: "c8y-credentials", inputs: ["loginViewParams"], outputs: ["onChangeView"] }, { kind: "component", type: TotpAuthComponent, selector: "c8y-totp-auth", inputs: ["credentials", "view"], outputs: ["onCancel"] }, { kind: "component", type: TenantIdSetupComponent, selector: "c8y-tenant-id-setup", outputs: ["onChangeView"] }] });
15104
+ LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LoginComponent, deps: [{ token: LoginService }, { token: OptionsService }, { token: AlertService }, { token: CredentialsFromQueryParamsService }, { token: AppStateService }], target: i0.ɵɵFactoryTarget.Component });
15105
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <div\n class=\"text-center m-t-8\"\n *ngIf=\"!!(ui.state$ | async).loginExtraLink\"\n >\n <div *ngIf=\"!!(ui.state$ | async).loginExtraLink.length; else singleExtraLink\">\n <a\n class=\"small d-block m-t-8\"\n title=\"{{ link.label }}\"\n role=\"button\"\n *ngFor=\"let link of (ui.state$ | async).loginExtraLink\"\n [href]=\"link.url\"\n >\n {{ link.label }}\n </a>\n </div>\n <ng-template #singleExtraLink>\n <a\n class=\"small\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n role=\"button\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </ng-template>\n </div>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: ["credentials"], outputs: ["onCancel"] }, { kind: "component", type: ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: ["credentials"], outputs: ["onCancel", "onChangeView"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: RecoverPasswordComponent, selector: "c8y-recover-password", outputs: ["onChangeView"] }, { kind: "component", type: ChangePasswordComponent, selector: "c8y-change-password", inputs: ["credentials"], outputs: ["onChangeView"] }, { kind: "component", type: CredentialsComponent, selector: "c8y-credentials", inputs: ["loginViewParams"], outputs: ["onChangeView"] }, { kind: "component", type: TotpAuthComponent, selector: "c8y-totp-auth", inputs: ["credentials", "view"], outputs: ["onCancel"] }, { kind: "component", type: TenantIdSetupComponent, selector: "c8y-tenant-id-setup", outputs: ["onChangeView"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] });
15106
15106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LoginComponent, decorators: [{
15107
15107
  type: Component,
15108
- args: [{ selector: 'c8y-login', template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n" }]
15109
- }], ctorParameters: function () { return [{ type: LoginService }, { type: OptionsService }, { type: AlertService }, { type: CredentialsFromQueryParamsService }]; }, propDecorators: { name: [{
15108
+ args: [{ selector: 'c8y-login', template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <div\n class=\"text-center m-t-8\"\n *ngIf=\"!!(ui.state$ | async).loginExtraLink\"\n >\n <div *ngIf=\"!!(ui.state$ | async).loginExtraLink.length; else singleExtraLink\">\n <a\n class=\"small d-block m-t-8\"\n title=\"{{ link.label }}\"\n role=\"button\"\n *ngFor=\"let link of (ui.state$ | async).loginExtraLink\"\n [href]=\"link.url\"\n >\n {{ link.label }}\n </a>\n </div>\n <ng-template #singleExtraLink>\n <a\n class=\"small\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n role=\"button\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </ng-template>\n </div>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n" }]
15109
+ }], ctorParameters: function () { return [{ type: LoginService }, { type: OptionsService }, { type: AlertService }, { type: CredentialsFromQueryParamsService }, { type: AppStateService }]; }, propDecorators: { name: [{
15110
15110
  type: Input
15111
15111
  }], onkeyup: [{
15112
15112
  type: HostListener,