@dontdrinkandroot/ngx-material-extensions 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/_index.scss +153 -0
  2. package/{esm2015/dontdrinkandroot-ngx-material-extensions.js → esm2020/dontdrinkandroot-ngx-material-extensions.mjs} +0 -0
  3. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  4. package/{esm2015/src/ddr-material-extensions.module.js → esm2020/src/ddr-material-extensions.module.mjs} +8 -10
  5. package/{esm2015/src/gridlist/grid-tile-lazy-image-container.directive.js → esm2020/src/gridlist/grid-tile-lazy-image-container.directive.mjs} +4 -4
  6. package/esm2020/src/gridlist/grid-tile-lazy-img.directive.mjs +115 -0
  7. package/esm2020/src/sidenav/sidenav-container.component.mjs +39 -0
  8. package/{esm2015/src/sidenav/sidenav-toggle.component.js → esm2020/src/sidenav/sidenav-toggle.component.mjs} +7 -7
  9. package/{esm2015/src/sidenav/sidenav.service.js → esm2020/src/sidenav/sidenav.service.mjs} +4 -4
  10. package/fesm2015/{dontdrinkandroot-ngx-material-extensions.js → dontdrinkandroot-ngx-material-extensions.mjs} +35 -39
  11. package/fesm2015/dontdrinkandroot-ngx-material-extensions.mjs.map +1 -0
  12. package/fesm2020/dontdrinkandroot-ngx-material-extensions.mjs +346 -0
  13. package/fesm2020/dontdrinkandroot-ngx-material-extensions.mjs.map +1 -0
  14. package/{dontdrinkandroot-ngx-material-extensions.d.ts → index.d.ts} +0 -0
  15. package/package.json +26 -13
  16. package/src/gridlist/grid-tile-lazy-image-container.directive.d.ts +1 -1
  17. package/src/gridlist/grid-tile-lazy-img.directive.d.ts +1 -1
  18. package/src/sidenav/sidenav-container.component.d.ts +1 -1
  19. package/src/sidenav/sidenav-toggle.component.d.ts +1 -1
  20. package/bundles/dontdrinkandroot-ngx-material-extensions.umd.js +0 -697
  21. package/bundles/dontdrinkandroot-ngx-material-extensions.umd.js.map +0 -1
  22. package/esm2015/src/gridlist/grid-tile-lazy-img.directive.js +0 -114
  23. package/esm2015/src/sidenav/sidenav-container.component.js +0 -42
  24. package/fesm2015/dontdrinkandroot-ngx-material-extensions.js.map +0 -1
  25. package/style.scss +0 -130
@@ -5,14 +5,14 @@ import { Breakpoints } from '@angular/cdk/layout';
5
5
  import { map } from 'rxjs/operators';
6
6
  import * as i2 from '@angular/router';
7
7
  import { NavigationStart } from '@angular/router';
8
- import * as i3 from '@angular/material/sidenav';
9
- import { MatSidenavModule } from '@angular/material/sidenav';
10
- import * as i4 from '@angular/common';
8
+ import * as i3 from '@angular/common';
11
9
  import { CommonModule } from '@angular/common';
12
- import * as i2$1 from '@angular/material/button';
13
- import { MatButtonModule } from '@angular/material/button';
14
- import * as i3$1 from '@angular/material/icon';
10
+ import * as i4 from '@angular/material/sidenav';
11
+ import { MatSidenavModule } from '@angular/material/sidenav';
12
+ import * as i2$1 from '@angular/material/icon';
15
13
  import { MatIconModule } from '@angular/material/icon';
14
+ import * as i3$1 from '@angular/material/button';
15
+ import { MatButtonModule } from '@angular/material/button';
16
16
  import { __decorate } from 'tslib';
17
17
  import { NumberUtils, StringUtils, Debounce, Limit } from '@dontdrinkandroot/ngx-extensions';
18
18
 
@@ -65,9 +65,9 @@ class SidenavService {
65
65
  return this.opened$;
66
66
  }
67
67
  }
68
- SidenavService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SidenavService, deps: [{ token: i1.BreakpointObserver }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
69
- SidenavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SidenavService, providedIn: 'root' });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SidenavService, decorators: [{
68
+ SidenavService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, deps: [{ token: i1.BreakpointObserver }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
69
+ SidenavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, providedIn: 'root' });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, decorators: [{
71
71
  type: Injectable,
72
72
  args: [{
73
73
  providedIn: 'root'
@@ -79,30 +79,27 @@ class SidenavContainerComponent {
79
79
  this.sidenavService = sidenavService;
80
80
  this.breakpointObserver = breakpointObserver;
81
81
  this.stayOpenOnLargeScreen = false;
82
+ this.mode$ = this.sidenavService.getModeObservable();
83
+ this.opened$ = this.sidenavService.getOpenedObservable();
82
84
  }
83
85
  /**
84
86
  * @override
85
87
  */
86
88
  ngOnChanges(changes) {
87
- this.sidenavService.setStayOpenOnLargeScreen(changes.stayOpenOnLargeScreen.currentValue);
89
+ this.sidenavService.setStayOpenOnLargeScreen(changes['stayOpenOnLargeScreen'].currentValue);
88
90
  }
89
91
  /**
90
92
  * @override
91
93
  */
92
94
  ngOnInit() {
93
95
  this.sidenavService.setSidenav(this.sidenav);
94
- this.mode$ = this.sidenavService.getModeObservable();
95
- this.opened$ = this.sidenavService.getOpenedObservable();
96
96
  }
97
97
  }
98
- SidenavContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SidenavContainerComponent, deps: [{ token: SidenavService }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
99
- SidenavContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: SidenavContainerComponent, selector: "ddr-mat-sidenav-container", inputs: { stayOpenOnLargeScreen: "stayOpenOnLargeScreen" }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-sidenav-container [ngClass]=\"(mode$|async)\">\n <mat-sidenav\n #sidenav\n fixedInViewport=\"true\"\n [mode]=\"(mode$|async)\"\n [opened]=\"(opened$|async)\">\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", components: [{ type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { type: i3.MatSidenavContent, selector: "mat-sidenav-content" }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i4.AsyncPipe } });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SidenavContainerComponent, decorators: [{
98
+ SidenavContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavContainerComponent, deps: [{ token: SidenavService }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
99
+ SidenavContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: SidenavContainerComponent, selector: "ddr-mat-sidenav-container", inputs: { stayOpenOnLargeScreen: "stayOpenOnLargeScreen" }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-sidenav-container [ngClass]=\"(mode$|async)\">\n <mat-sidenav\n #sidenav\n fixedInViewport=\"true\"\n [mode]=\"(mode$|async) ?? 'over'\"\n [opened]=\"(opened$|async)\">\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavContainerComponent, decorators: [{
101
101
  type: Component,
102
- args: [{
103
- selector: 'ddr-mat-sidenav-container',
104
- templateUrl: './sidenav-container.component.html'
105
- }]
102
+ args: [{ selector: 'ddr-mat-sidenav-container', template: "<mat-sidenav-container [ngClass]=\"(mode$|async)\">\n <mat-sidenav\n #sidenav\n fixedInViewport=\"true\"\n [mode]=\"(mode$|async) ?? 'over'\"\n [opened]=\"(opened$|async)\">\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n" }]
106
103
  }], ctorParameters: function () { return [{ type: SidenavService }, { type: i1.BreakpointObserver }]; }, propDecorators: { sidenav: [{
107
104
  type: ViewChild,
108
105
  args: ['sidenav', { static: true }]
@@ -118,12 +115,12 @@ class SidenavToggleComponent {
118
115
  this.sidenavService.toggle();
119
116
  }
120
117
  }
121
- SidenavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SidenavToggleComponent, deps: [{ token: SidenavService }], target: i0.ɵɵFactoryTarget.Component });
122
- SidenavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: SidenavToggleComponent, selector: "ddr-mat-sidenav-toggle", ngImport: i0, template: `
118
+ SidenavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavToggleComponent, deps: [{ token: SidenavService }], target: i0.ɵɵFactoryTarget.Component });
119
+ SidenavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: SidenavToggleComponent, selector: "ddr-mat-sidenav-toggle", ngImport: i0, template: `
123
120
  <button mat-icon-button (click)="toggleSidenav()">
124
121
  <mat-icon>menu</mat-icon>
125
- </button>`, isInline: true, components: [{ type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SidenavToggleComponent, decorators: [{
122
+ </button>`, isInline: true, dependencies: [{ kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavToggleComponent, decorators: [{
127
124
  type: Component,
128
125
  args: [{
129
126
  selector: 'ddr-mat-sidenav-toggle',
@@ -144,6 +141,7 @@ class GridTileLazyImgDirective {
144
141
  this.offset = 1000;
145
142
  this.objectFit = 'cover';
146
143
  this.displayed = false;
144
+ this.maxLoadedDimension = null;
147
145
  }
148
146
  recheck() {
149
147
  this.displayed = false;
@@ -216,9 +214,9 @@ class GridTileLazyImgDirective {
216
214
  return window.getComputedStyle(nativeElement).display === 'none';
217
215
  }
218
216
  }
219
- GridTileLazyImgDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: GridTileLazyImgDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
220
- GridTileLazyImgDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.12", type: GridTileLazyImgDirective, selector: "[ddrGridTileLazyImg]", inputs: { src: ["ddrGridTileLazyImg", "src"], offset: "offset", objectFit: "objectFit" }, host: { properties: { "src": "this.hostSrc", "style.object-fit": "this.hostStyleObjectFit", "style.width.px": "this.hostStyleWidthPx", "style.height.px": "this.hostStyleHeightPx", "style.opacity": "this.hostStyleOpacity" } }, usesOnChanges: true, ngImport: i0 });
221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: GridTileLazyImgDirective, decorators: [{
217
+ GridTileLazyImgDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImgDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
218
+ GridTileLazyImgDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: GridTileLazyImgDirective, selector: "[ddrGridTileLazyImg]", inputs: { src: ["ddrGridTileLazyImg", "src"], offset: "offset", objectFit: "objectFit" }, host: { properties: { "src": "this.hostSrc", "style.object-fit": "this.hostStyleObjectFit", "style.width.px": "this.hostStyleWidthPx", "style.height.px": "this.hostStyleHeightPx", "style.opacity": "this.hostStyleOpacity" } }, usesOnChanges: true, ngImport: i0 });
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImgDirective, decorators: [{
222
220
  type: Directive,
223
221
  args: [{ selector: '[ddrGridTileLazyImg]' }]
224
222
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { src: [{
@@ -273,15 +271,15 @@ class GridTileLazyImageContainerDirective {
273
271
  this.changeSubscription.unsubscribe();
274
272
  }
275
273
  }
276
- GridTileLazyImageContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: GridTileLazyImageContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
277
- GridTileLazyImageContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.12", type: GridTileLazyImageContainerDirective, selector: "[ddrGridTileLazyImgContainer]", host: { listeners: { "window:resize": "windowResized($event)", "window:scroll": "windowScroll($event)" } }, queries: [{ propertyName: "lazyImages", predicate: GridTileLazyImgDirective, descendants: true }], ngImport: i0 });
274
+ GridTileLazyImageContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImageContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
275
+ GridTileLazyImageContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: GridTileLazyImageContainerDirective, selector: "[ddrGridTileLazyImgContainer]", host: { listeners: { "window:resize": "windowResized($event)", "window:scroll": "windowScroll($event)" } }, queries: [{ propertyName: "lazyImages", predicate: GridTileLazyImgDirective, descendants: true }], ngImport: i0 });
278
276
  __decorate([
279
277
  Debounce()
280
278
  ], GridTileLazyImageContainerDirective.prototype, "windowResized", null);
281
279
  __decorate([
282
280
  Limit()
283
281
  ], GridTileLazyImageContainerDirective.prototype, "windowScroll", null);
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: GridTileLazyImageContainerDirective, decorators: [{
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImageContainerDirective, decorators: [{
285
283
  type: Directive,
286
284
  args: [{ selector: '[ddrGridTileLazyImgContainer]' }]
287
285
  }], propDecorators: { lazyImages: [{
@@ -297,8 +295,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
297
295
 
298
296
  class DdrMaterialExtensionsModule {
299
297
  }
300
- DdrMaterialExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: DdrMaterialExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
301
- DdrMaterialExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: DdrMaterialExtensionsModule, declarations: [SidenavToggleComponent,
298
+ DdrMaterialExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
299
+ DdrMaterialExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, declarations: [SidenavToggleComponent,
302
300
  GridTileLazyImageContainerDirective,
303
301
  GridTileLazyImgDirective,
304
302
  SidenavContainerComponent], imports: [CommonModule,
@@ -308,13 +306,11 @@ DdrMaterialExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0
308
306
  GridTileLazyImageContainerDirective,
309
307
  GridTileLazyImgDirective,
310
308
  SidenavContainerComponent] });
311
- DdrMaterialExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: DdrMaterialExtensionsModule, imports: [[
312
- CommonModule,
313
- MatSidenavModule,
314
- MatIconModule,
315
- MatButtonModule
316
- ]] });
317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: DdrMaterialExtensionsModule, decorators: [{
309
+ DdrMaterialExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, imports: [CommonModule,
310
+ MatSidenavModule,
311
+ MatIconModule,
312
+ MatButtonModule] });
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, decorators: [{
318
314
  type: NgModule,
319
315
  args: [{
320
316
  declarations: [
@@ -347,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
347
343
  */
348
344
 
349
345
  export { DdrMaterialExtensionsModule, GridTileLazyImageContainerDirective, GridTileLazyImgDirective, SidenavContainerComponent, SidenavService, SidenavToggleComponent };
350
- //# sourceMappingURL=dontdrinkandroot-ngx-material-extensions.js.map
346
+ //# sourceMappingURL=dontdrinkandroot-ngx-material-extensions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dontdrinkandroot-ngx-material-extensions.mjs","sources":["../../src/sidenav/sidenav.service.ts","../../src/sidenav/sidenav-container.component.ts","../../src/sidenav/sidenav-container.component.html","../../src/sidenav/sidenav-toggle.component.ts","../../src/gridlist/grid-tile-lazy-img.directive.ts","../../src/gridlist/grid-tile-lazy-image-container.directive.ts","../../src/ddr-material-extensions.module.ts","../../public-api.ts","../../dontdrinkandroot-ngx-material-extensions.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {MatDrawerMode, MatDrawerToggleResult, MatSidenav} from '@angular/material/sidenav';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {NavigationStart, Router} from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidenavService\n{\n private sidenav!: MatSidenav;\n\n private stayOpenOnLargeScreen = false;\n\n private largeBreakpoints = [\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge\n ];\n\n private screenLarge$: Observable<boolean>;\n\n private mode$: Observable<MatDrawerMode>;\n\n private opened$: Observable<boolean>;\n\n constructor(private breakpointObserver: BreakpointObserver, private router: Router)\n {\n this.screenLarge$ = this.breakpointObserver.observe(this.largeBreakpoints).pipe(\n map(result => result.matches)\n );\n this.mode$ = this.screenLarge$.pipe(\n map(large => large && this.stayOpenOnLargeScreen ? 'side' : 'over')\n );\n this.opened$ = this.screenLarge$.pipe(\n map(large => large && this.stayOpenOnLargeScreen)\n );\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.closeSidebar();\n }\n });\n }\n\n public setSidenav(sidenav: MatSidenav): void\n {\n this.sidenav = sidenav;\n }\n\n public getStayOpenOnLargeScreen(): boolean\n {\n return this.stayOpenOnLargeScreen;\n }\n\n public setStayOpenOnLargeScreen(value: boolean): void\n {\n this.stayOpenOnLargeScreen = value;\n }\n\n public toggle(): Promise<MatDrawerToggleResult>\n {\n if (null == this.sidenav) {\n return Promise.reject('No MatSidenav found. Use setSidenav() of SidenavService');\n }\n\n if (!(this.stayOpenOnLargeScreen && this.breakpointObserver.isMatched(this.largeBreakpoints))) {\n return this.sidenav.toggle();\n }\n\n return Promise.resolve(this.sidenav.opened ? 'open' : 'close');\n }\n\n public closeSidebar(): void\n {\n if (!(this.stayOpenOnLargeScreen && this.breakpointObserver.isMatched(this.largeBreakpoints))) {\n this.sidenav.close();\n }\n }\n\n public getModeObservable(): Observable<MatDrawerMode>\n {\n return this.mode$;\n }\n\n public getOpenedObservable(): Observable<boolean>\n {\n return this.opened$;\n }\n}\n","import {Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild} from '@angular/core';\nimport {MatDrawerMode, MatSidenav} from '@angular/material/sidenav';\nimport {SidenavService} from './sidenav.service';\nimport {BreakpointObserver} from '@angular/cdk/layout';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'ddr-mat-sidenav-container',\n templateUrl: './sidenav-container.component.html'\n})\nexport class SidenavContainerComponent implements OnInit, OnChanges\n{\n @ViewChild('sidenav', {static: true})\n public sidenav!: MatSidenav;\n\n @Input()\n public stayOpenOnLargeScreen = false;\n\n public mode$: Observable<MatDrawerMode> = this.sidenavService.getModeObservable();\n\n public opened$: Observable<boolean> = this.sidenavService.getOpenedObservable();\n\n constructor(private sidenavService: SidenavService, private breakpointObserver: BreakpointObserver)\n {\n }\n\n /**\n * @override\n */\n public ngOnChanges(changes: SimpleChanges): void\n {\n this.sidenavService.setStayOpenOnLargeScreen(changes['stayOpenOnLargeScreen'].currentValue);\n }\n\n /**\n * @override\n */\n public ngOnInit(): void\n {\n this.sidenavService.setSidenav(this.sidenav);\n }\n}\n","<mat-sidenav-container [ngClass]=\"(mode$|async)\">\n <mat-sidenav\n #sidenav\n fixedInViewport=\"true\"\n [mode]=\"(mode$|async) ?? 'over'\"\n [opened]=\"(opened$|async)\">\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n","import {Component} from '@angular/core';\nimport {SidenavService} from './sidenav.service';\n\n@Component({\n selector: 'ddr-mat-sidenav-toggle',\n template: `\n <button mat-icon-button (click)=\"toggleSidenav()\">\n <mat-icon>menu</mat-icon>\n </button>`\n})\nexport class SidenavToggleComponent\n{\n constructor(private sidenavService: SidenavService)\n {\n }\n\n public toggleSidenav()\n {\n this.sidenavService.toggle();\n }\n}\n","import {ChangeDetectorRef, Directive, ElementRef, HostBinding, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {NumberUtils, StringUtils} from '@dontdrinkandroot/ngx-extensions';\n\n@Directive({selector: '[ddrGridTileLazyImg]'})\nexport class GridTileLazyImgDirective implements OnChanges\n{\n @Input('ddrGridTileLazyImg')\n public src!: string;\n\n @HostBinding('src')\n public hostSrc = 'assets/placeholder.gif';\n\n @HostBinding('style.object-fit')\n public hostStyleObjectFit = 'contain';\n\n @HostBinding('style.width.px')\n public hostStyleWidthPx!: number;\n\n @HostBinding('style.height.px')\n public hostStyleHeightPx!: number;\n\n @HostBinding('style.opacity')\n public hostStyleOpacity = 0;\n\n @Input()\n public offset = 1000;\n\n @Input()\n public objectFit = 'cover';\n\n private displayed = false;\n\n private maxLoadedDimension: { width: number, height: number } | null = null;\n\n constructor(private element: ElementRef, private cd: ChangeDetectorRef)\n {\n }\n\n public recheck()\n {\n this.displayed = false;\n this.check();\n }\n\n public check()\n {\n if (\n this.displayed\n || this.isHidden(this.element.nativeElement)\n || !this.isInsideViewport(this.element.nativeElement, this.offset)\n ) {\n return;\n }\n\n this.displayed = true;\n const dimension = this.getDimension();\n\n if (\n null != this.maxLoadedDimension\n && this.maxLoadedDimension.width >= dimension.width\n && this.maxLoadedDimension.height >= dimension.height\n ) {\n return;\n }\n\n this.maxLoadedDimension = dimension;\n this.hostStyleWidthPx = dimension.width;\n this.hostStyleHeightPx = dimension.height;\n let wantedSize: number;\n if (this.objectFit === 'cover') {\n wantedSize = NumberUtils.getNextPowerOfTwo(Math.max(dimension.width, dimension.height));\n this.hostStyleObjectFit = 'cover';\n } else {\n wantedSize = NumberUtils.getNextPowerOfTwo(Math.min(dimension.width, dimension.height));\n this.hostStyleObjectFit = 'contain';\n }\n this.hostSrc = StringUtils.updateUrlParameter(this.src, 'size', String(wantedSize));\n this.hostStyleOpacity = 1;\n this.cd.detectChanges();\n }\n\n /**\n * @override\n */\n public ngOnChanges(changes: SimpleChanges): void\n {\n this.displayed = false;\n this.maxLoadedDimension = null;\n this.hostStyleOpacity = 0;\n if (this.element.nativeElement.parentElement.offsetWidth > 0) {\n this.check();\n }\n }\n\n private isInsideViewport(nativeElement: HTMLElement, offset: number): boolean\n {\n // console.log('isInsideViewport');\n const ownerDocument = nativeElement.ownerDocument;\n const documentTop = window.pageYOffset || ownerDocument.body.scrollTop;\n const documentLeft = window.pageXOffset || ownerDocument.body.scrollLeft;\n\n const documentWidth = window.innerWidth || (ownerDocument.documentElement.clientWidth || document.body.clientWidth);\n const documentHeight = window.innerHeight || (ownerDocument.documentElement.clientHeight || document.body.clientHeight);\n const topOffset = nativeElement.getBoundingClientRect().top + documentTop - ownerDocument.documentElement.clientTop;\n const leftOffset = nativeElement.getBoundingClientRect().left + documentLeft - ownerDocument.documentElement.clientLeft;\n\n // console.log(documentWidth, documentHeight, topOffset, leftOffset);\n\n const isBelowViewport = documentHeight + documentTop <= topOffset - offset;\n const isAtRightOfViewport = documentWidth + window.pageXOffset <= leftOffset - offset;\n const isAboveViewport = documentTop >= topOffset + offset + nativeElement.offsetHeight;\n const isAtLeftOfViewport = documentLeft >= leftOffset + offset + nativeElement.offsetWidth;\n\n return !isBelowViewport && !isAboveViewport && !isAtRightOfViewport && !isAtLeftOfViewport;\n }\n\n private getDimension(): { width: number, height: number }\n {\n return {\n width: this.element.nativeElement.parentElement.offsetWidth,\n height: this.element.nativeElement.parentElement.offsetHeight,\n };\n }\n\n private isHidden(nativeElement: HTMLElement)\n {\n // console.log('isHidden');\n return window.getComputedStyle(nativeElement).display === 'none';\n }\n}\n","import {AfterContentInit, ContentChildren, Directive, HostListener, OnDestroy, QueryList} from '@angular/core';\nimport {GridTileLazyImgDirective} from './grid-tile-lazy-img.directive';\nimport {Subscription} from 'rxjs';\nimport {Debounce, Limit} from '@dontdrinkandroot/ngx-extensions';\n\n@Directive({selector: '[ddrGridTileLazyImgContainer]'})\nexport class GridTileLazyImageContainerDirective implements AfterContentInit, OnDestroy\n{\n @ContentChildren(GridTileLazyImgDirective, {descendants: true}) lazyImages!: QueryList<GridTileLazyImgDirective>;\n\n private changeSubscription!: Subscription;\n\n @HostListener('window:resize', ['$event'])\n @Debounce()\n public windowResized($event: Event)\n {\n if (null != this.lazyImages) {\n this.lazyImages.forEach((lazyImage: GridTileLazyImgDirective, index) => lazyImage.recheck());\n }\n }\n\n @HostListener('window:scroll', ['$event'])\n @Limit()\n public windowScroll($event: Event)\n {\n if (null != this.lazyImages) {\n this.lazyImages.forEach((lazyImage: GridTileLazyImgDirective, index) => lazyImage.check());\n }\n }\n\n /**\n * @override\n */\n public ngAfterContentInit(): void\n {\n this.lazyImages.forEach((lazyImage: GridTileLazyImgDirective, index) => lazyImage.check());\n this.changeSubscription = this.lazyImages.changes.subscribe(() => {\n /* Wait one tick until layout is ready */\n setTimeout(\n () => this.lazyImages.forEach((lazyImage: GridTileLazyImgDirective, index) => lazyImage.recheck())\n , 1\n );\n });\n }\n\n /**\n * @override\n */\n public ngOnDestroy(): void\n {\n this.changeSubscription.unsubscribe();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {SidenavToggleComponent} from './sidenav/sidenav-toggle.component';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {GridTileLazyImageContainerDirective} from './gridlist/grid-tile-lazy-image-container.directive';\nimport {GridTileLazyImgDirective} from './gridlist/grid-tile-lazy-img.directive';\nimport {SidenavContainerComponent} from './sidenav/sidenav-container.component';\nimport {CommonModule} from '@angular/common';\n\n@NgModule({\n declarations: [\n SidenavToggleComponent,\n GridTileLazyImageContainerDirective,\n GridTileLazyImgDirective,\n SidenavContainerComponent\n ],\n imports: [\n CommonModule,\n MatSidenavModule,\n MatIconModule,\n MatButtonModule\n ],\n exports: [\n SidenavToggleComponent,\n GridTileLazyImageContainerDirective,\n GridTileLazyImgDirective,\n SidenavContainerComponent\n ]\n})\nexport class DdrMaterialExtensionsModule\n{\n}\n","/*\n * Public API Surface of ngx-material-extensions\n */\n\nexport * from './src/sidenav/sidenav-container.component';\nexport * from './src/sidenav/sidenav-toggle.component';\nexport * from './src/sidenav/sidenav.service';\n\nexport * from './src/ddr-material-extensions.module';\nexport * from './src/gridlist/grid-tile-lazy-image-container.directive';\nexport * from './src/gridlist/grid-tile-lazy-img.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SidenavService","i2","i3"],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Component, ViewChild, Input, Directive, HostBinding, ContentChildren, HostListener, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/cdk/layout';
4
+ import { Breakpoints } from '@angular/cdk/layout';
5
+ import { map } from 'rxjs/operators';
6
+ import * as i2 from '@angular/router';
7
+ import { NavigationStart } from '@angular/router';
8
+ import * as i3 from '@angular/common';
9
+ import { CommonModule } from '@angular/common';
10
+ import * as i4 from '@angular/material/sidenav';
11
+ import { MatSidenavModule } from '@angular/material/sidenav';
12
+ import * as i2$1 from '@angular/material/icon';
13
+ import { MatIconModule } from '@angular/material/icon';
14
+ import * as i3$1 from '@angular/material/button';
15
+ import { MatButtonModule } from '@angular/material/button';
16
+ import { __decorate } from 'tslib';
17
+ import { NumberUtils, StringUtils, Debounce, Limit } from '@dontdrinkandroot/ngx-extensions';
18
+
19
+ class SidenavService {
20
+ constructor(breakpointObserver, router) {
21
+ this.breakpointObserver = breakpointObserver;
22
+ this.router = router;
23
+ this.stayOpenOnLargeScreen = false;
24
+ this.largeBreakpoints = [
25
+ Breakpoints.Medium,
26
+ Breakpoints.Large,
27
+ Breakpoints.XLarge
28
+ ];
29
+ this.screenLarge$ = this.breakpointObserver.observe(this.largeBreakpoints).pipe(map(result => result.matches));
30
+ this.mode$ = this.screenLarge$.pipe(map(large => large && this.stayOpenOnLargeScreen ? 'side' : 'over'));
31
+ this.opened$ = this.screenLarge$.pipe(map(large => large && this.stayOpenOnLargeScreen));
32
+ this.router.events.subscribe(event => {
33
+ if (event instanceof NavigationStart) {
34
+ this.closeSidebar();
35
+ }
36
+ });
37
+ }
38
+ setSidenav(sidenav) {
39
+ this.sidenav = sidenav;
40
+ }
41
+ getStayOpenOnLargeScreen() {
42
+ return this.stayOpenOnLargeScreen;
43
+ }
44
+ setStayOpenOnLargeScreen(value) {
45
+ this.stayOpenOnLargeScreen = value;
46
+ }
47
+ toggle() {
48
+ if (null == this.sidenav) {
49
+ return Promise.reject('No MatSidenav found. Use setSidenav() of SidenavService');
50
+ }
51
+ if (!(this.stayOpenOnLargeScreen && this.breakpointObserver.isMatched(this.largeBreakpoints))) {
52
+ return this.sidenav.toggle();
53
+ }
54
+ return Promise.resolve(this.sidenav.opened ? 'open' : 'close');
55
+ }
56
+ closeSidebar() {
57
+ if (!(this.stayOpenOnLargeScreen && this.breakpointObserver.isMatched(this.largeBreakpoints))) {
58
+ this.sidenav.close();
59
+ }
60
+ }
61
+ getModeObservable() {
62
+ return this.mode$;
63
+ }
64
+ getOpenedObservable() {
65
+ return this.opened$;
66
+ }
67
+ }
68
+ SidenavService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, deps: [{ token: i1.BreakpointObserver }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
69
+ SidenavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, providedIn: 'root' });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, decorators: [{
71
+ type: Injectable,
72
+ args: [{
73
+ providedIn: 'root'
74
+ }]
75
+ }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i2.Router }]; } });
76
+
77
+ class SidenavContainerComponent {
78
+ constructor(sidenavService, breakpointObserver) {
79
+ this.sidenavService = sidenavService;
80
+ this.breakpointObserver = breakpointObserver;
81
+ this.stayOpenOnLargeScreen = false;
82
+ this.mode$ = this.sidenavService.getModeObservable();
83
+ this.opened$ = this.sidenavService.getOpenedObservable();
84
+ }
85
+ /**
86
+ * @override
87
+ */
88
+ ngOnChanges(changes) {
89
+ this.sidenavService.setStayOpenOnLargeScreen(changes['stayOpenOnLargeScreen'].currentValue);
90
+ }
91
+ /**
92
+ * @override
93
+ */
94
+ ngOnInit() {
95
+ this.sidenavService.setSidenav(this.sidenav);
96
+ }
97
+ }
98
+ SidenavContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavContainerComponent, deps: [{ token: SidenavService }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
99
+ SidenavContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: SidenavContainerComponent, selector: "ddr-mat-sidenav-container", inputs: { stayOpenOnLargeScreen: "stayOpenOnLargeScreen" }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-sidenav-container [ngClass]=\"(mode$|async)\">\n <mat-sidenav\n #sidenav\n fixedInViewport=\"true\"\n [mode]=\"(mode$|async) ?? 'over'\"\n [opened]=\"(opened$|async)\">\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavContainerComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'ddr-mat-sidenav-container', template: "<mat-sidenav-container [ngClass]=\"(mode$|async)\">\n <mat-sidenav\n #sidenav\n fixedInViewport=\"true\"\n [mode]=\"(mode$|async) ?? 'over'\"\n [opened]=\"(opened$|async)\">\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n" }]
103
+ }], ctorParameters: function () { return [{ type: SidenavService }, { type: i1.BreakpointObserver }]; }, propDecorators: { sidenav: [{
104
+ type: ViewChild,
105
+ args: ['sidenav', { static: true }]
106
+ }], stayOpenOnLargeScreen: [{
107
+ type: Input
108
+ }] } });
109
+
110
+ class SidenavToggleComponent {
111
+ constructor(sidenavService) {
112
+ this.sidenavService = sidenavService;
113
+ }
114
+ toggleSidenav() {
115
+ this.sidenavService.toggle();
116
+ }
117
+ }
118
+ SidenavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavToggleComponent, deps: [{ token: SidenavService }], target: i0.ɵɵFactoryTarget.Component });
119
+ SidenavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: SidenavToggleComponent, selector: "ddr-mat-sidenav-toggle", ngImport: i0, template: `
120
+ <button mat-icon-button (click)="toggleSidenav()">
121
+ <mat-icon>menu</mat-icon>
122
+ </button>`, isInline: true, dependencies: [{ kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavToggleComponent, decorators: [{
124
+ type: Component,
125
+ args: [{
126
+ selector: 'ddr-mat-sidenav-toggle',
127
+ template: `
128
+ <button mat-icon-button (click)="toggleSidenav()">
129
+ <mat-icon>menu</mat-icon>
130
+ </button>`
131
+ }]
132
+ }], ctorParameters: function () { return [{ type: SidenavService }]; } });
133
+
134
+ class GridTileLazyImgDirective {
135
+ constructor(element, cd) {
136
+ this.element = element;
137
+ this.cd = cd;
138
+ this.hostSrc = 'assets/placeholder.gif';
139
+ this.hostStyleObjectFit = 'contain';
140
+ this.hostStyleOpacity = 0;
141
+ this.offset = 1000;
142
+ this.objectFit = 'cover';
143
+ this.displayed = false;
144
+ this.maxLoadedDimension = null;
145
+ }
146
+ recheck() {
147
+ this.displayed = false;
148
+ this.check();
149
+ }
150
+ check() {
151
+ if (this.displayed
152
+ || this.isHidden(this.element.nativeElement)
153
+ || !this.isInsideViewport(this.element.nativeElement, this.offset)) {
154
+ return;
155
+ }
156
+ this.displayed = true;
157
+ const dimension = this.getDimension();
158
+ if (null != this.maxLoadedDimension
159
+ && this.maxLoadedDimension.width >= dimension.width
160
+ && this.maxLoadedDimension.height >= dimension.height) {
161
+ return;
162
+ }
163
+ this.maxLoadedDimension = dimension;
164
+ this.hostStyleWidthPx = dimension.width;
165
+ this.hostStyleHeightPx = dimension.height;
166
+ let wantedSize;
167
+ if (this.objectFit === 'cover') {
168
+ wantedSize = NumberUtils.getNextPowerOfTwo(Math.max(dimension.width, dimension.height));
169
+ this.hostStyleObjectFit = 'cover';
170
+ }
171
+ else {
172
+ wantedSize = NumberUtils.getNextPowerOfTwo(Math.min(dimension.width, dimension.height));
173
+ this.hostStyleObjectFit = 'contain';
174
+ }
175
+ this.hostSrc = StringUtils.updateUrlParameter(this.src, 'size', String(wantedSize));
176
+ this.hostStyleOpacity = 1;
177
+ this.cd.detectChanges();
178
+ }
179
+ /**
180
+ * @override
181
+ */
182
+ ngOnChanges(changes) {
183
+ this.displayed = false;
184
+ this.maxLoadedDimension = null;
185
+ this.hostStyleOpacity = 0;
186
+ if (this.element.nativeElement.parentElement.offsetWidth > 0) {
187
+ this.check();
188
+ }
189
+ }
190
+ isInsideViewport(nativeElement, offset) {
191
+ // console.log('isInsideViewport');
192
+ const ownerDocument = nativeElement.ownerDocument;
193
+ const documentTop = window.pageYOffset || ownerDocument.body.scrollTop;
194
+ const documentLeft = window.pageXOffset || ownerDocument.body.scrollLeft;
195
+ const documentWidth = window.innerWidth || (ownerDocument.documentElement.clientWidth || document.body.clientWidth);
196
+ const documentHeight = window.innerHeight || (ownerDocument.documentElement.clientHeight || document.body.clientHeight);
197
+ const topOffset = nativeElement.getBoundingClientRect().top + documentTop - ownerDocument.documentElement.clientTop;
198
+ const leftOffset = nativeElement.getBoundingClientRect().left + documentLeft - ownerDocument.documentElement.clientLeft;
199
+ // console.log(documentWidth, documentHeight, topOffset, leftOffset);
200
+ const isBelowViewport = documentHeight + documentTop <= topOffset - offset;
201
+ const isAtRightOfViewport = documentWidth + window.pageXOffset <= leftOffset - offset;
202
+ const isAboveViewport = documentTop >= topOffset + offset + nativeElement.offsetHeight;
203
+ const isAtLeftOfViewport = documentLeft >= leftOffset + offset + nativeElement.offsetWidth;
204
+ return !isBelowViewport && !isAboveViewport && !isAtRightOfViewport && !isAtLeftOfViewport;
205
+ }
206
+ getDimension() {
207
+ return {
208
+ width: this.element.nativeElement.parentElement.offsetWidth,
209
+ height: this.element.nativeElement.parentElement.offsetHeight,
210
+ };
211
+ }
212
+ isHidden(nativeElement) {
213
+ // console.log('isHidden');
214
+ return window.getComputedStyle(nativeElement).display === 'none';
215
+ }
216
+ }
217
+ GridTileLazyImgDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImgDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
218
+ GridTileLazyImgDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: GridTileLazyImgDirective, selector: "[ddrGridTileLazyImg]", inputs: { src: ["ddrGridTileLazyImg", "src"], offset: "offset", objectFit: "objectFit" }, host: { properties: { "src": "this.hostSrc", "style.object-fit": "this.hostStyleObjectFit", "style.width.px": "this.hostStyleWidthPx", "style.height.px": "this.hostStyleHeightPx", "style.opacity": "this.hostStyleOpacity" } }, usesOnChanges: true, ngImport: i0 });
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImgDirective, decorators: [{
220
+ type: Directive,
221
+ args: [{ selector: '[ddrGridTileLazyImg]' }]
222
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { src: [{
223
+ type: Input,
224
+ args: ['ddrGridTileLazyImg']
225
+ }], hostSrc: [{
226
+ type: HostBinding,
227
+ args: ['src']
228
+ }], hostStyleObjectFit: [{
229
+ type: HostBinding,
230
+ args: ['style.object-fit']
231
+ }], hostStyleWidthPx: [{
232
+ type: HostBinding,
233
+ args: ['style.width.px']
234
+ }], hostStyleHeightPx: [{
235
+ type: HostBinding,
236
+ args: ['style.height.px']
237
+ }], hostStyleOpacity: [{
238
+ type: HostBinding,
239
+ args: ['style.opacity']
240
+ }], offset: [{
241
+ type: Input
242
+ }], objectFit: [{
243
+ type: Input
244
+ }] } });
245
+
246
+ class GridTileLazyImageContainerDirective {
247
+ windowResized($event) {
248
+ if (null != this.lazyImages) {
249
+ this.lazyImages.forEach((lazyImage, index) => lazyImage.recheck());
250
+ }
251
+ }
252
+ windowScroll($event) {
253
+ if (null != this.lazyImages) {
254
+ this.lazyImages.forEach((lazyImage, index) => lazyImage.check());
255
+ }
256
+ }
257
+ /**
258
+ * @override
259
+ */
260
+ ngAfterContentInit() {
261
+ this.lazyImages.forEach((lazyImage, index) => lazyImage.check());
262
+ this.changeSubscription = this.lazyImages.changes.subscribe(() => {
263
+ /* Wait one tick until layout is ready */
264
+ setTimeout(() => this.lazyImages.forEach((lazyImage, index) => lazyImage.recheck()), 1);
265
+ });
266
+ }
267
+ /**
268
+ * @override
269
+ */
270
+ ngOnDestroy() {
271
+ this.changeSubscription.unsubscribe();
272
+ }
273
+ }
274
+ GridTileLazyImageContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImageContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
275
+ GridTileLazyImageContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: GridTileLazyImageContainerDirective, selector: "[ddrGridTileLazyImgContainer]", host: { listeners: { "window:resize": "windowResized($event)", "window:scroll": "windowScroll($event)" } }, queries: [{ propertyName: "lazyImages", predicate: GridTileLazyImgDirective, descendants: true }], ngImport: i0 });
276
+ __decorate([
277
+ Debounce()
278
+ ], GridTileLazyImageContainerDirective.prototype, "windowResized", null);
279
+ __decorate([
280
+ Limit()
281
+ ], GridTileLazyImageContainerDirective.prototype, "windowScroll", null);
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImageContainerDirective, decorators: [{
283
+ type: Directive,
284
+ args: [{ selector: '[ddrGridTileLazyImgContainer]' }]
285
+ }], propDecorators: { lazyImages: [{
286
+ type: ContentChildren,
287
+ args: [GridTileLazyImgDirective, { descendants: true }]
288
+ }], windowResized: [{
289
+ type: HostListener,
290
+ args: ['window:resize', ['$event']]
291
+ }], windowScroll: [{
292
+ type: HostListener,
293
+ args: ['window:scroll', ['$event']]
294
+ }] } });
295
+
296
+ class DdrMaterialExtensionsModule {
297
+ }
298
+ DdrMaterialExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
299
+ DdrMaterialExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, declarations: [SidenavToggleComponent,
300
+ GridTileLazyImageContainerDirective,
301
+ GridTileLazyImgDirective,
302
+ SidenavContainerComponent], imports: [CommonModule,
303
+ MatSidenavModule,
304
+ MatIconModule,
305
+ MatButtonModule], exports: [SidenavToggleComponent,
306
+ GridTileLazyImageContainerDirective,
307
+ GridTileLazyImgDirective,
308
+ SidenavContainerComponent] });
309
+ DdrMaterialExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, imports: [CommonModule,
310
+ MatSidenavModule,
311
+ MatIconModule,
312
+ MatButtonModule] });
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, decorators: [{
314
+ type: NgModule,
315
+ args: [{
316
+ declarations: [
317
+ SidenavToggleComponent,
318
+ GridTileLazyImageContainerDirective,
319
+ GridTileLazyImgDirective,
320
+ SidenavContainerComponent
321
+ ],
322
+ imports: [
323
+ CommonModule,
324
+ MatSidenavModule,
325
+ MatIconModule,
326
+ MatButtonModule
327
+ ],
328
+ exports: [
329
+ SidenavToggleComponent,
330
+ GridTileLazyImageContainerDirective,
331
+ GridTileLazyImgDirective,
332
+ SidenavContainerComponent
333
+ ]
334
+ }]
335
+ }] });
336
+
337
+ /*
338
+ * Public API Surface of ngx-material-extensions
339
+ */
340
+
341
+ /**
342
+ * Generated bundle index. Do not edit.
343
+ */
344
+
345
+ export { DdrMaterialExtensionsModule, GridTileLazyImageContainerDirective, GridTileLazyImgDirective, SidenavContainerComponent, SidenavService, SidenavToggleComponent };
346
+ //# sourceMappingURL=dontdrinkandroot-ngx-material-extensions.mjs.map