@elderbyte/ngx-starter 15.0.14 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -68,10 +68,10 @@ export class ElderDateSwitcherComponent extends FormFieldBaseComponent {
68
68
  }
69
69
  }
70
70
  ElderDateSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ElderDateSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
- ElderDateSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: ElderDateSwitcherComponent, selector: "elder-date-switcher", inputs: { datePickerEnabled: "datePickerEnabled", datePickerTouchUi: "datePickerTouchUi", date: "date" }, outputs: { dateChange: "dateChange" }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), usesInheritance: true, ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" >\n\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ ElderDateSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: ElderDateSwitcherComponent, selector: "elder-date-switcher", inputs: { datePickerEnabled: "datePickerEnabled", datePickerTouchUi: "datePickerTouchUi", date: "date" }, outputs: { dateChange: "dateChange" }, host: { classAttribute: "elder-form-field-host" }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), usesInheritance: true, ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"flex full\">\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ElderDateSwitcherComponent, decorators: [{
73
73
  type: Component,
74
- args: [{ selector: 'elder-date-switcher', changeDetection: ChangeDetectionStrategy.OnPush, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), viewProviders: [ViewProviders.ParentControlContainer], template: "<mat-form-field subscriptSizing=\"dynamic\" >\n\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n" }]
74
+ args: [{ selector: 'elder-date-switcher', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'elder-form-field-host' }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), viewProviders: [ViewProviders.ParentControlContainer], template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"flex full\">\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n" }]
75
75
  }], ctorParameters: function () { return []; }, propDecorators: { datePickerEnabled: [{
76
76
  type: Input
77
77
  }], datePickerTouchUi: [{
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
81
81
  }], date: [{
82
82
  type: Input
83
83
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZGF0ZS1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItZGF0ZS1zd2l0Y2hlci9lbGRlci1kYXRlLXN3aXRjaGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1kYXRlLXN3aXRjaGVyL2VsZGVyLWRhdGUtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN2RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFVbkMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFpQztJQWtCL0U7Ozs7Z0ZBSTRFO0lBRTVFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF2QlY7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekUscURBQXFEO1FBRTlDLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUVoQywrREFBK0Q7UUFFeEQsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBVS9CLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxRQUFRLEtBQVUsQ0FBQztJQUUxQjs7OztnRkFJNEU7SUFFNUU7OztPQUdHO0lBQ0gsSUFDVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3pFLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDVyxJQUFJLENBQUMsSUFBVTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztnRkFJNEU7SUFFbEUsWUFBWSxDQUFDLENBQVksRUFBRSxDQUFZO1FBQy9DLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDOzt1SEF6RVUsMEJBQTBCOzJHQUExQiwwQkFBMEIsK0xBSDFCLDZCQUE2QixDQUFDLDBCQUEwQixDQUFDLGlEQ2Z0RSxvWkFZQSx5M0JESWlCLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDOzJGQUUxQywwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsNkJBQTZCLDRCQUE0QixpQkFDckQsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUM7MEVBYzlDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBaUNLLFVBQVU7c0JBRHBCLE1BQU07Z0JBWUksSUFBSTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0Zvcm1GaWVsZEJhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9mb3JtLWZpZWxkLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7TG9jYWxEYXRlfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7YnVpbGRGb3JtSW50ZWdyYXRpb25Qcm92aWRlcnN9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy90ZW1wbGF0ZS1jb21wb3NpdGUtY29udHJvbCc7XG5pbXBvcnQge1ZpZXdQcm92aWRlcnN9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy92aWV3LXByb3ZpZGVycyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUaW1lVXRpbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvdGltZS11dGlsJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWRhdGUtc3dpdGNoZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItZGF0ZS1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWRhdGUtc3dpdGNoZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogYnVpbGRGb3JtSW50ZWdyYXRpb25Qcm92aWRlcnMoRWxkZXJEYXRlU3dpdGNoZXJDb21wb25lbnQpLFxuICB2aWV3UHJvdmlkZXJzOiBbVmlld1Byb3ZpZGVycy5QYXJlbnRDb250cm9sQ29udGFpbmVyXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckRhdGVTd2l0Y2hlckNvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZEJhc2VDb21wb25lbnQ8TG9jYWxEYXRlPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKiBJZiB0cnVlLCBkYXRlIHBpY2tlciBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRlUGlja2VyRW5hYmxlZCA9IHRydWU7XG5cbiAgLyoqIElmIHRydWUsIHRvdWNoIG9wdGltaXplZCBtb2RlIG9mIGRhdGUgcGlja2VyIGlzIGVuYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRlUGlja2VyVG91Y2hVaSA9IGZhbHNlO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShMb2NhbERhdGUubm93KCkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge31cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogRW1pdHMgZGF0ZSB1cG9uIGludGVybmFsIGRhdGUgY2hhbmdlLlxuICAgKiBAZGVwcmVjYXRlZCBNaWdyYXRlIHlvdXIgY29kZSB0byB1c2UgTG9jYWxEYXRlXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBkYXRlQ2hhbmdlKCk6IE9ic2VydmFibGU8RGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICBtYXAobG9jYWxEYXRlID0+IGxvY2FsRGF0ZSA/IFRpbWVVdGlsLmxvY2FsRGF0ZVRvRGF0ZShsb2NhbERhdGUpIDogbnVsbClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqIEBkZXByZWNhdGVkIE1pZ3JhdGUgeW91ciBjb2RlIHRvIHVzZSBMb2NhbERhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy52YWx1ZSA9IGRhdGUgPyBUaW1lVXRpbC5kYXRlVG9Mb2NhbERhdGUoZGF0ZSkgOiBudWxsO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIHZhbHVlc0VxdWFscyhhOiBMb2NhbERhdGUsIGI6IExvY2FsRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoYSAmJiBiKVxuICAgICAgPyBhLmVxdWFscyhiKVxuICAgICAgOiBhID09PSBiO1xuICB9XG5cblxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiA+XG5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbCB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gIDxlbGRlci1sb2NhbC1kYXRlLWlucHV0XG4gICAgYXJyb3dzIHRvZGF5IGF1dG9EYXRlUGlja2VyIGRhdGVQaWNrZXJUb3VjaFVpXG4gICAgW2RhdGVQaWNrZXJFbmFibGVkXT1cImZhbHNlXCJcbiAgICBbZGF0ZVBpY2tlclRvdWNoVWldPVwiZGF0ZVBpY2tlclRvdWNoVWlcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZSQgfCBhc3luY1wiXG4gICAgKHZhbHVlVXBkYXRlZCk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgPlxuICA8L2VsZGVyLWxvY2FsLWRhdGUtaW5wdXQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZGF0ZS1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItZGF0ZS1zd2l0Y2hlci9lbGRlci1kYXRlLXN3aXRjaGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1kYXRlLXN3aXRjaGVyL2VsZGVyLWRhdGUtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN2RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFZbkMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFpQztJQWtCL0U7Ozs7Z0ZBSTRFO0lBRTVFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF2QlY7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekUscURBQXFEO1FBRTlDLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUVoQywrREFBK0Q7UUFFeEQsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBVS9CLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxRQUFRLEtBQVUsQ0FBQztJQUUxQjs7OztnRkFJNEU7SUFFNUU7OztPQUdHO0lBQ0gsSUFDVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3pFLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDVyxJQUFJLENBQUMsSUFBVTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztnRkFJNEU7SUFFbEUsWUFBWSxDQUFDLENBQVksRUFBRSxDQUFZO1FBQy9DLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDOzt1SEF6RVUsMEJBQTBCOzJHQUExQiwwQkFBMEIsa1BBSDFCLDZCQUE2QixDQUFDLDBCQUEwQixDQUFDLGlEQ2pCdEUscWFBV0EseTNCRE9pQixDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQzsyRkFFMUMsMEJBQTBCO2tCQVZ0QyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLFFBRXpDLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFDLGFBQzdCLDZCQUE2Qiw0QkFBNEIsaUJBQ3JELENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDOzBFQWM5QyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsaUJBQWlCO3NCQUR2QixLQUFLO2dCQWlDSyxVQUFVO3NCQURwQixNQUFNO2dCQVlJLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtGb3JtRmllbGRCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9ybXMvZm9ybS1maWVsZC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge2J1aWxkRm9ybUludGVncmF0aW9uUHJvdmlkZXJzfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9ybXMvdGVtcGxhdGUtY29tcG9zaXRlLWNvbnRyb2wnO1xuaW1wb3J0IHtWaWV3UHJvdmlkZXJzfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9ybXMvdmlldy1wcm92aWRlcnMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGltZVV0aWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90aW1lL3RpbWUtdXRpbCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1kYXRlLXN3aXRjaGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWRhdGUtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1kYXRlLXN3aXRjaGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDogeydjbGFzcyc6ICdlbGRlci1mb3JtLWZpZWxkLWhvc3QnfSxcbiAgcHJvdmlkZXJzOiBidWlsZEZvcm1JbnRlZ3JhdGlvblByb3ZpZGVycyhFbGRlckRhdGVTd2l0Y2hlckNvbXBvbmVudCksXG4gIHZpZXdQcm92aWRlcnM6IFtWaWV3UHJvdmlkZXJzLlBhcmVudENvbnRyb2xDb250YWluZXJdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyRGF0ZVN3aXRjaGVyQ29tcG9uZW50IGV4dGVuZHMgRm9ybUZpZWxkQmFzZUNvbXBvbmVudDxMb2NhbERhdGU+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgLyoqIElmIHRydWUsIGRhdGUgcGlja2VyIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVQaWNrZXJFbmFibGVkID0gdHJ1ZTtcblxuICAvKiogSWYgdHJ1ZSwgdG91Y2ggb3B0aW1pemVkIG1vZGUgb2YgZGF0ZSBwaWNrZXIgaXMgZW5hYmxlZC4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVQaWNrZXJUb3VjaFVpID0gZmFsc2U7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKExvY2FsRGF0ZS5ub3coKSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBFbWl0cyBkYXRlIHVwb24gaW50ZXJuYWwgZGF0ZSBjaGFuZ2UuXG4gICAqIEBkZXByZWNhdGVkIE1pZ3JhdGUgeW91ciBjb2RlIHRvIHVzZSBMb2NhbERhdGVcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGRhdGVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxEYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcChsb2NhbERhdGUgPT4gbG9jYWxEYXRlID8gVGltZVV0aWwubG9jYWxEYXRlVG9EYXRlKGxvY2FsRGF0ZSkgOiBudWxsKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGRhdGVcbiAgICogQGRlcHJlY2F0ZWQgTWlncmF0ZSB5b3VyIGNvZGUgdG8gdXNlIExvY2FsRGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRlKGRhdGU6IERhdGUpIHtcbiAgICB0aGlzLnZhbHVlID0gZGF0ZSA/IFRpbWVVdGlsLmRhdGVUb0xvY2FsRGF0ZShkYXRlKSA6IG51bGw7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgdmFsdWVzRXF1YWxzKGE6IExvY2FsRGF0ZSwgYjogTG9jYWxEYXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChhICYmIGIpXG4gICAgICA/IGEuZXF1YWxzKGIpXG4gICAgICA6IGEgPT09IGI7XG4gIH1cblxuXG59XG4iLCI8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIGNsYXNzPVwiZmxleCBmdWxsXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICA8ZWxkZXItbG9jYWwtZGF0ZS1pbnB1dFxuICAgIGFycm93cyB0b2RheSBhdXRvRGF0ZVBpY2tlciBkYXRlUGlja2VyVG91Y2hVaVxuICAgIFtkYXRlUGlja2VyRW5hYmxlZF09XCJmYWxzZVwiXG4gICAgW2RhdGVQaWNrZXJUb3VjaFVpXT1cImRhdGVQaWNrZXJUb3VjaFVpXCJcbiAgICBbdmFsdWVdPVwidmFsdWUkIHwgYXN5bmNcIlxuICAgICh2YWx1ZVVwZGF0ZWQpPVwidXBkYXRlVmFsdWUoJGV2ZW50KVwiXG4gID5cbiAgPC9lbGRlci1sb2NhbC1kYXRlLWlucHV0PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
@@ -6,7 +6,7 @@ import * as i1 from '@angular/platform-browser';
6
6
  import { Duration, Period, TemporalQueries, LocalTime, Instant, LocalDate, nativeJs, ZoneId } from '@js-joda/core';
7
7
  import { LoggerFactory } from '@elderbyte/ts-logger';
8
8
  import { BehaviorSubject, Subject, EMPTY, combineLatest, merge, of, forkJoin, throwError, mergeWith, switchMap as switchMap$1, Observable, ReplaySubject, fromEvent, NEVER } from 'rxjs';
9
- import { distinctUntilChanged, map, filter, takeUntil, debounceTime, catchError, first, take, switchMap, mergeMap, takeWhile, tap, expand, reduce, startWith, skip, delay, share, throttleTime, combineLatestWith, flatMap, timeout, skipWhile } from 'rxjs/operators';
9
+ import { distinctUntilChanged, map, filter, takeUntil, debounceTime, catchError, first, take, switchMap, mergeMap, takeWhile, tap, expand, reduce, startWith, skip, delay, share, throttleTime, combineLatestWith, timeout, skipWhile } from 'rxjs/operators';
10
10
  import * as i1$2 from '@angular/common/http';
11
11
  import { HttpParams, HttpEventType, HttpRequest, HttpClient, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
12
12
  import { DataSource } from '@angular/cdk/collections';
@@ -7347,80 +7347,21 @@ class DataTransferProgressAggregate {
7347
7347
  **************************************************************************/
7348
7348
  DataTransferProgressAggregate.Empty = new DataTransferProgressAggregate(0, 0, 0, 0);
7349
7349
 
7350
- /**
7351
- * Represents a Http data transfer, either a download or upload.
7352
- */
7353
- class HttpDataTransfer {
7350
+ class DataTransferBase {
7354
7351
  /***************************************************************************
7355
7352
  * *
7356
7353
  * Constructor *
7357
7354
  * *
7358
7355
  **************************************************************************/
7359
- /**
7360
- * Creates a new HttpDataTransfer
7361
- * @param httpRequest The http request.
7362
- * @param name The name of this transfer (usually the file name)
7363
- * @param totalBytes The total bytes of the transfer. (If not set, will be auto discovered if possible)
7364
- */
7365
- constructor(httpRequest, name, totalBytes) {
7356
+ constructor(initialState, name) {
7366
7357
  /***************************************************************************
7367
7358
  * *
7368
7359
  * Fields *
7369
7360
  * *
7370
7361
  **************************************************************************/
7371
- this.logger = LoggerFactory.getLogger('HttpDataTransfer');
7372
7362
  this.abort$ = new Subject();
7373
- this._oldBytes = 0;
7374
7363
  this._name = name;
7375
- this._httpRequest = httpRequest;
7376
- this._state = new BehaviorSubject(DataTransferState.pending(totalBytes));
7377
- }
7378
- /***************************************************************************
7379
- * *
7380
- * Static Builder *
7381
- * *
7382
- **************************************************************************/
7383
- /**
7384
- * Creates a new HttpDataTransfer from a HttpClient HttpRequest.
7385
- * @param httpRequest
7386
- * @param name Name of this transfer
7387
- * @param totalBytes The total expected bytes
7388
- */
7389
- static fromRequest(httpRequest, name, totalBytes) {
7390
- return new HttpDataTransfer(httpRequest, name, totalBytes);
7391
- }
7392
- /***************************************************************************
7393
- * *
7394
- * Public API *
7395
- * *
7396
- **************************************************************************/
7397
- /**
7398
- * Starts the data transfer
7399
- */
7400
- start() {
7401
- return this._httpRequest.pipe(takeUntil(this.abort$), tap(event => {
7402
- switch (event.type) {
7403
- case HttpEventType.Sent:
7404
- this.onStart(event);
7405
- break;
7406
- case HttpEventType.UploadProgress:
7407
- case HttpEventType.DownloadProgress:
7408
- this.onProgress(event);
7409
- break;
7410
- case HttpEventType.Response:
7411
- this.onComplete(event);
7412
- break;
7413
- }
7414
- }, err => this.onError(err), () => this.finally()), catchError(err => {
7415
- return of(err);
7416
- }));
7417
- }
7418
- /**
7419
- * Aborts the data transfer
7420
- */
7421
- abort() {
7422
- this.abort$.next();
7423
- this.emitState(DataTransferState.aborted(this.stateSnapshot.progress));
7364
+ this._state = new BehaviorSubject(initialState);
7424
7365
  }
7425
7366
  /***************************************************************************
7426
7367
  * *
@@ -7463,6 +7404,93 @@ class HttpDataTransfer {
7463
7404
  get name() {
7464
7405
  return this._name;
7465
7406
  }
7407
+ /**
7408
+ * Aborts the data transfer
7409
+ */
7410
+ abort() {
7411
+ this.abort$.next();
7412
+ this.emitState(DataTransferState.aborted(this.stateSnapshot.progress));
7413
+ }
7414
+ /***************************************************************************
7415
+ * *
7416
+ * Private methods *
7417
+ * *
7418
+ **************************************************************************/
7419
+ emitState(newState) {
7420
+ this._state.next(newState);
7421
+ }
7422
+ }
7423
+
7424
+ /**
7425
+ * Represents a Http data transfer, either a download or upload.
7426
+ */
7427
+ class HttpDataTransfer extends DataTransferBase {
7428
+ /***************************************************************************
7429
+ * *
7430
+ * Constructor *
7431
+ * *
7432
+ **************************************************************************/
7433
+ /**
7434
+ * Creates a new HttpDataTransfer
7435
+ * @param httpRequest The http request.
7436
+ * @param name The name of this transfer (usually the file name)
7437
+ * @param totalBytes The total bytes of the transfer. (If not set, will be auto discovered if possible)
7438
+ */
7439
+ constructor(httpRequest, name, totalBytes) {
7440
+ super(DataTransferState.pending(totalBytes), name);
7441
+ /***************************************************************************
7442
+ * *
7443
+ * Fields *
7444
+ * *
7445
+ **************************************************************************/
7446
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
7447
+ this._oldBytes = 0;
7448
+ this._httpRequest = httpRequest;
7449
+ }
7450
+ /***************************************************************************
7451
+ * *
7452
+ * Static Builder *
7453
+ * *
7454
+ **************************************************************************/
7455
+ /**
7456
+ * Creates a new HttpDataTransfer from a HttpClient HttpRequest.
7457
+ * @param httpRequest
7458
+ * @param name Name of this transfer
7459
+ * @param totalBytes The total expected bytes
7460
+ */
7461
+ static fromRequest(httpRequest, name, totalBytes) {
7462
+ return new HttpDataTransfer(httpRequest, name, totalBytes);
7463
+ }
7464
+ /***************************************************************************
7465
+ * *
7466
+ * Public API *
7467
+ * *
7468
+ **************************************************************************/
7469
+ /**
7470
+ * Starts the data transfer
7471
+ */
7472
+ start() {
7473
+ return this._httpRequest.pipe(takeUntil(this.abort$), tap({
7474
+ next: event => {
7475
+ switch (event.type) {
7476
+ case HttpEventType.Sent:
7477
+ this.onStart(event);
7478
+ break;
7479
+ case HttpEventType.UploadProgress:
7480
+ case HttpEventType.DownloadProgress:
7481
+ this.onProgress(event);
7482
+ break;
7483
+ case HttpEventType.Response:
7484
+ this.onComplete(event);
7485
+ break;
7486
+ }
7487
+ },
7488
+ error: err => this.onError(err),
7489
+ finalize: () => this.finally()
7490
+ }), catchError(err => {
7491
+ return of(err);
7492
+ }));
7493
+ }
7466
7494
  /***************************************************************************
7467
7495
  * *
7468
7496
  * Private methods *
@@ -7488,9 +7516,6 @@ class HttpDataTransfer {
7488
7516
  this.emitState(DataTransferState.completed(this.stateSnapshot.progress));
7489
7517
  }
7490
7518
  }
7491
- emitState(newState) {
7492
- this._state.next(newState);
7493
- }
7494
7519
  transferProgressFromResponse(event, previous) {
7495
7520
  return new DataTransferProgress(previous ? previous.totalBytes : 0, previous ? previous.bytesPerSec : 0, previous ? previous.avgBytesPerSec : 0, previous ? previous.totalBytes : 0, 100);
7496
7521
  }
@@ -18604,10 +18629,10 @@ class ElderDateSwitcherComponent extends FormFieldBaseComponent {
18604
18629
  }
18605
18630
  }
18606
18631
  ElderDateSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ElderDateSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18607
- ElderDateSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: ElderDateSwitcherComponent, selector: "elder-date-switcher", inputs: { datePickerEnabled: "datePickerEnabled", datePickerTouchUi: "datePickerTouchUi", date: "date" }, outputs: { dateChange: "dateChange" }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), usesInheritance: true, ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" >\n\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18632
+ ElderDateSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: ElderDateSwitcherComponent, selector: "elder-date-switcher", inputs: { datePickerEnabled: "datePickerEnabled", datePickerTouchUi: "datePickerTouchUi", date: "date" }, outputs: { dateChange: "dateChange" }, host: { classAttribute: "elder-form-field-host" }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), usesInheritance: true, ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"flex full\">\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18608
18633
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ElderDateSwitcherComponent, decorators: [{
18609
18634
  type: Component,
18610
- args: [{ selector: 'elder-date-switcher', changeDetection: ChangeDetectionStrategy.OnPush, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), viewProviders: [ViewProviders.ParentControlContainer], template: "<mat-form-field subscriptSizing=\"dynamic\" >\n\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n" }]
18635
+ args: [{ selector: 'elder-date-switcher', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'elder-form-field-host' }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), viewProviders: [ViewProviders.ParentControlContainer], template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"flex full\">\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n" }]
18611
18636
  }], ctorParameters: function () { return []; }, propDecorators: { datePickerEnabled: [{
18612
18637
  type: Input
18613
18638
  }], datePickerTouchUi: [{
@@ -21081,13 +21106,15 @@ class ElderDataTransferService {
21081
21106
  * Fields *
21082
21107
  * *
21083
21108
  **************************************************************************/
21084
- this.logger = LoggerFactory.getLogger('ElderDataTransferService');
21109
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
21085
21110
  this._transfers = new BehaviorSubject([]);
21086
21111
  this._uploadQueue = new Subject();
21087
21112
  this._parallelUploads = 1;
21088
21113
  this._completed = new Subject();
21089
21114
  this._uploadQueue.pipe(mergeMap(transfer => transfer.start().pipe(catchError(err => of(err)), // Avoid killing queue
21090
- tap(null, null, () => this._completed.next(transfer))), this._parallelUploads)).subscribe(completedJob => { }, err => this.logger.error('Data transfer failed', err));
21115
+ tap({ complete: () => this._completed.next(transfer) })), this._parallelUploads)).subscribe({
21116
+ error: err => this.logger.error('Data transfer failed', err)
21117
+ });
21091
21118
  }
21092
21119
  /***************************************************************************
21093
21120
  * *
@@ -21104,7 +21131,7 @@ class ElderDataTransferService {
21104
21131
  return this._completed.asObservable();
21105
21132
  }
21106
21133
  get transferAggregate() {
21107
- return this.transfers.pipe(flatMap(transfers => this.aggregateProgress(transfers)), startWith(DataTransferProgressAggregate.Empty));
21134
+ return this.transfers.pipe(switchMap$1(transfers => this.aggregateProgress(transfers)), startWith(DataTransferProgressAggregate.Empty));
21108
21135
  }
21109
21136
  /***************************************************************************
21110
21137
  * *
@@ -21199,10 +21226,10 @@ class HttpDataTransferOverviewComponent {
21199
21226
  }
21200
21227
  }
21201
21228
  HttpDataTransferOverviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: HttpDataTransferOverviewComponent, deps: [{ token: ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
21202
- HttpDataTransferOverviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview", ngImport: i0, template: "<div class=\"layout-col full\">\n\n <div class=\"layout-col flex\" *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" class=\"layout-col flex scroll-list\">\n <elder-data-transfer class=\"flex-none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div class=\"layout-col place-center-center flex\">\n <span class=\"mat-subtitle-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar class=\"flex-none mat-elevation-z5\">\n <elder-data-transfer-aggregate class=\"flex\" [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\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: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: ["transfer"] }, { kind: "component", type: HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: ["hiddenWhenInactive"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21229
+ HttpDataTransferOverviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview", ngImport: i0, template: "<mat-card appearance=\"raised\" class=\"layout-col full\">\n\n <div class=\"layout-col flex\" *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" class=\"layout-col flex scroll-list\">\n <elder-data-transfer class=\"flex-none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div class=\"layout-col place-center-center flex\">\n <span class=\"mat-subtitle-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar class=\"flex-none mat-elevation-z5\">\n <elder-data-transfer-aggregate class=\"flex\" [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</mat-card>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\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: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: ["transfer"] }, { kind: "component", type: HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: ["hiddenWhenInactive"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21203
21230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: HttpDataTransferOverviewComponent, decorators: [{
21204
21231
  type: Component,
21205
- args: [{ selector: 'elder-data-transfer-overview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-col full\">\n\n <div class=\"layout-col flex\" *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" class=\"layout-col flex scroll-list\">\n <elder-data-transfer class=\"flex-none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div class=\"layout-col place-center-center flex\">\n <span class=\"mat-subtitle-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar class=\"flex-none mat-elevation-z5\">\n <elder-data-transfer-aggregate class=\"flex\" [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\n"] }]
21232
+ args: [{ selector: 'elder-data-transfer-overview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card appearance=\"raised\" class=\"layout-col full\">\n\n <div class=\"layout-col flex\" *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" class=\"layout-col flex scroll-list\">\n <elder-data-transfer class=\"flex-none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div class=\"layout-col place-center-center flex\">\n <span class=\"mat-subtitle-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar class=\"flex-none mat-elevation-z5\">\n <elder-data-transfer-aggregate class=\"flex\" [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</mat-card>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\n"] }]
21206
21233
  }], ctorParameters: function () { return [{ type: ElderDataTransferService }]; } });
21207
21234
 
21208
21235
  class HttpDataTransferIndicatorComponent {
@@ -21231,10 +21258,10 @@ class HttpDataTransferIndicatorComponent {
21231
21258
  }
21232
21259
  }
21233
21260
  HttpDataTransferIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: HttpDataTransferIndicatorComponent, deps: [{ token: ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
21234
- HttpDataTransferIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: HttpDataTransferIndicatorComponent, selector: "elder-data-transfer-indicator", inputs: { activeColor: "activeColor", inactiveColor: "inactiveColor" }, ngImport: i0, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n\n <button mat-icon-button type=\"button\"\n class=\"layout-row place-center-center\"\n [elderOverlayTrigger]=\"overlay\">\n\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"38\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;background-color:#fff;border-radius:5px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$4.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i6$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21261
+ HttpDataTransferIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: HttpDataTransferIndicatorComponent, selector: "elder-data-transfer-indicator", inputs: { activeColor: "activeColor", inactiveColor: "inactiveColor" }, ngImport: i0, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n <button mat-icon-button type=\"button\"\n class=\"layout-row place-center-center\"\n [elderOverlayTrigger]=\"overlay\">\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"24\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;border-radius:4px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$4.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i6$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21235
21262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: HttpDataTransferIndicatorComponent, decorators: [{
21236
21263
  type: Component,
21237
- args: [{ selector: 'elder-data-transfer-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n\n <button mat-icon-button type=\"button\"\n class=\"layout-row place-center-center\"\n [elderOverlayTrigger]=\"overlay\">\n\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"38\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;background-color:#fff;border-radius:5px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"] }]
21264
+ args: [{ selector: 'elder-data-transfer-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n <button mat-icon-button type=\"button\"\n class=\"layout-row place-center-center\"\n [elderOverlayTrigger]=\"overlay\">\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"24\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;border-radius:4px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"] }]
21238
21265
  }], ctorParameters: function () { return [{ type: ElderDataTransferService }]; }, propDecorators: { activeColor: [{
21239
21266
  type: Input
21240
21267
  }], inactiveColor: [{
@@ -21254,7 +21281,7 @@ ElderDataTransferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
21254
21281
  MatProgressSpinnerModule,
21255
21282
  TranslateModule,
21256
21283
  ElderPipesModule,
21257
- ElderOverlayModule], exports: [HttpDataTransferComponent,
21284
+ ElderOverlayModule, MatCardModule], exports: [HttpDataTransferComponent,
21258
21285
  HttpDataTransferAggregateComponent,
21259
21286
  HttpDataTransferOverviewComponent,
21260
21287
  HttpDataTransferIndicatorComponent] });
@@ -21265,7 +21292,7 @@ ElderDataTransferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
21265
21292
  MatProgressSpinnerModule,
21266
21293
  TranslateModule,
21267
21294
  ElderPipesModule,
21268
- ElderOverlayModule] });
21295
+ ElderOverlayModule, MatCardModule] });
21269
21296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ElderDataTransferModule, decorators: [{
21270
21297
  type: NgModule,
21271
21298
  args: [{
@@ -21277,7 +21304,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
21277
21304
  MatProgressSpinnerModule,
21278
21305
  TranslateModule,
21279
21306
  ElderPipesModule,
21280
- ElderOverlayModule
21307
+ ElderOverlayModule, MatCardModule
21281
21308
  ],
21282
21309
  declarations: [
21283
21310
  HttpDataTransferComponent,