@dontdrinkandroot/ngx-material-extensions 0.0.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/_index.scss +149 -0
  2. package/{esm2015/dontdrinkandroot-ngx-material-extensions.js → esm2020/dontdrinkandroot-ngx-material-extensions.mjs} +1 -1
  3. package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
  4. package/esm2020/src/ddr-material-extensions.module.mjs +51 -0
  5. package/esm2020/src/gridlist/grid-tile-lazy-image-container.directive.mjs +55 -0
  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/esm2020/src/sidenav/sidenav-toggle.component.mjs +29 -0
  9. package/esm2020/src/sidenav/sidenav.service.mjs +65 -0
  10. package/fesm2015/dontdrinkandroot-ngx-material-extensions.mjs +346 -0
  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} +1 -0
  15. package/package.json +26 -14
  16. package/src/ddr-material-extensions.module.d.ts +12 -0
  17. package/src/gridlist/grid-tile-lazy-image-container.directive.d.ts +3 -0
  18. package/src/gridlist/grid-tile-lazy-img.directive.d.ts +3 -0
  19. package/src/sidenav/sidenav-container.component.d.ts +3 -0
  20. package/src/sidenav/sidenav-toggle.component.d.ts +3 -0
  21. package/src/sidenav/sidenav.service.d.ts +3 -0
  22. package/bundles/dontdrinkandroot-ngx-material-extensions.umd.js +0 -619
  23. package/bundles/dontdrinkandroot-ngx-material-extensions.umd.js.map +0 -1
  24. package/bundles/dontdrinkandroot-ngx-material-extensions.umd.min.js +0 -2
  25. package/bundles/dontdrinkandroot-ngx-material-extensions.umd.min.js.map +0 -1
  26. package/dontdrinkandroot-ngx-material-extensions.metadata.json +0 -1
  27. package/esm2015/src/ddr-material-extensions.module.js +0 -34
  28. package/esm2015/src/gridlist/grid-tile-lazy-image-container.directive.js +0 -47
  29. package/esm2015/src/gridlist/grid-tile-lazy-img.directive.js +0 -102
  30. package/esm2015/src/sidenav/sidenav-container.component.js +0 -39
  31. package/esm2015/src/sidenav/sidenav-toggle.component.js +0 -23
  32. package/esm2015/src/sidenav/sidenav.service.js +0 -66
  33. package/fesm2015/dontdrinkandroot-ngx-material-extensions.js +0 -305
  34. package/fesm2015/dontdrinkandroot-ngx-material-extensions.js.map +0 -1
  35. package/style.scss +0 -130
package/_index.scss ADDED
@@ -0,0 +1,149 @@
1
+ @use '@angular/material' as mat;
2
+
3
+ @include mat.core();
4
+
5
+ $ddr-mat-primary: mat.define-palette(mat.$blue-palette, 700, 300, 900) !default;
6
+ $ddr-mat-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);
7
+ $ddr-mat-warn: mat.define-palette(mat.$red-palette) !default;
8
+ $ddr-mat-theme: mat.define-light-theme($ddr-mat-primary, $ddr-mat-accent, $ddr-mat-warn) !default;
9
+
10
+ @include mat.all-component-themes($ddr-mat-theme);
11
+
12
+ //
13
+ // Theme vars
14
+ //
15
+ $ddr-mat-fab-height: 88px !default;
16
+ $ddr-mat-sidenav-width: 300px !default;
17
+ $ddr-mat-toolbar-height: 56px !default;
18
+ $ddr-mat-toolbar-height-sm-up: 64px !default;
19
+ $ddr-breakpoint-sm: 600px;
20
+
21
+ html, body {
22
+ height: 100%;
23
+ }
24
+
25
+ body {
26
+ margin: 0;
27
+ font-family: Roboto, "Helvetica Neue", sans-serif;
28
+ }
29
+
30
+ //
31
+ // Utilities
32
+ //
33
+
34
+ .d-flex {
35
+ display: flex !important;
36
+ }
37
+
38
+ .flex-row {
39
+ flex-direction: row !important;
40
+ }
41
+
42
+ .flex-column {
43
+ flex-direction: column !important;
44
+ }
45
+
46
+ .d-grid {
47
+ display: grid !important;
48
+ grid-gap: 1rem;
49
+
50
+ &.equal-columns {
51
+ grid-auto-columns: minmax(0, 1fr);
52
+ grid-auto-flow: column;
53
+ }
54
+ }
55
+
56
+ .p-3 {
57
+ padding: 1rem;
58
+ }
59
+
60
+ .mb-0 {
61
+ margin-bottom: 0;
62
+ }
63
+
64
+ .mb-3 {
65
+ margin-bottom: 1rem;
66
+ }
67
+
68
+ //
69
+ // Extensions
70
+ //
71
+
72
+ .mat-raised-button {
73
+ text-transform: uppercase;
74
+ }
75
+
76
+ .mat-sidenav-container {
77
+
78
+ ddr-mat-sidenav-toggle {
79
+ margin-right: 1rem;
80
+ }
81
+
82
+ &.side {
83
+ ddr-mat-sidenav-toggle {
84
+ display: none;
85
+ }
86
+
87
+ .mat-sidenav-content {
88
+ .mat-toolbar {
89
+ transition-duration: 400ms;
90
+ transition-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1);
91
+ transition-property: left, width;
92
+ left: $ddr-mat-sidenav-width;
93
+ width: calc(100vw - #{$ddr-mat-sidenav-width});
94
+ }
95
+ }
96
+ }
97
+
98
+ .mat-sidenav {
99
+ min-width: $ddr-mat-sidenav-width;
100
+ }
101
+
102
+ .mat-sidenav-content {
103
+
104
+ padding-top: $ddr-mat-toolbar-height;
105
+ min-height: calc(100vh - #{$ddr-mat-toolbar-height});
106
+
107
+ .mat-toolbar {
108
+ position: fixed;
109
+ left: 0;
110
+ top: 0;
111
+ z-index: 1;
112
+ }
113
+
114
+ @media (min-width: $ddr-breakpoint-sm) {
115
+ padding-top: $ddr-mat-toolbar-height-sm-up;
116
+ min-height: calc(100vh - #{$ddr-mat-toolbar-height-sm-up});
117
+ }
118
+ }
119
+ }
120
+
121
+ .ddr-mat-fab-container {
122
+
123
+ height: $ddr-mat-fab-height;
124
+
125
+ .mat-fab {
126
+ position: fixed !important;
127
+ right: 0;
128
+ bottom: 0;
129
+ margin-right: 1rem !important;
130
+ margin-bottom: 1rem !important;
131
+ z-index: 2;
132
+ }
133
+ }
134
+
135
+ .mat-toolbar {
136
+
137
+ @extend .mat-elevation-z1;
138
+
139
+ .spacer {
140
+ flex: 1 1 auto;
141
+ }
142
+ }
143
+
144
+ .mat-card {
145
+ .mat-list-item-content {
146
+ padding-left: 0 !important;
147
+ padding-right: 0 !important;
148
+ }
149
+ }
@@ -2,4 +2,4 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udGRyaW5rYW5kcm9vdC1uZ3gtbWF0ZXJpYWwtZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8iLCJzb3VyY2VzIjpbImRvbnRkcmlua2FuZHJvb3Qtbmd4LW1hdGVyaWFsLWV4dGVuc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udGRyaW5rYW5kcm9vdC1uZ3gtbWF0ZXJpYWwtZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2RvbnRkcmlua2FuZHJvb3Qtbmd4LW1hdGVyaWFsLWV4dGVuc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -7,4 +7,4 @@ export * from './src/sidenav/sidenav.service';
7
7
  export * from './src/ddr-material-extensions.module';
8
8
  export * from './src/gridlist/grid-tile-lazy-image-container.directive';
9
9
  export * from './src/gridlist/grid-tile-lazy-img.directive';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LW1hdGVyaWFsLWV4dGVuc2lvbnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NyYy9zaWRlbmF2L3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zaWRlbmF2L3NpZGVuYXYtdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zaWRlbmF2L3NpZGVuYXYuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL2Rkci1tYXRlcmlhbC1leHRlbnNpb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9ncmlkbGlzdC9ncmlkLXRpbGUtbGF6eS1pbWFnZS1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2dyaWRsaXN0L2dyaWQtdGlsZS1sYXp5LWltZy5kaXJlY3RpdmUnO1xuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LW1hdGVyaWFsLWV4dGVuc2lvbnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NyYy9zaWRlbmF2L3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zaWRlbmF2L3NpZGVuYXYtdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zaWRlbmF2L3NpZGVuYXYuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL2Rkci1tYXRlcmlhbC1leHRlbnNpb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9ncmlkbGlzdC9ncmlkLXRpbGUtbGF6eS1pbWFnZS1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2dyaWRsaXN0L2dyaWQtdGlsZS1sYXp5LWltZy5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,51 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { SidenavToggleComponent } from './sidenav/sidenav-toggle.component';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatSidenavModule } from '@angular/material/sidenav';
6
+ import { GridTileLazyImageContainerDirective } from './gridlist/grid-tile-lazy-image-container.directive';
7
+ import { GridTileLazyImgDirective } from './gridlist/grid-tile-lazy-img.directive';
8
+ import { SidenavContainerComponent } from './sidenav/sidenav-container.component';
9
+ import { CommonModule } from '@angular/common';
10
+ import * as i0 from "@angular/core";
11
+ export class DdrMaterialExtensionsModule {
12
+ }
13
+ DdrMaterialExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ DdrMaterialExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, declarations: [SidenavToggleComponent,
15
+ GridTileLazyImageContainerDirective,
16
+ GridTileLazyImgDirective,
17
+ SidenavContainerComponent], imports: [CommonModule,
18
+ MatSidenavModule,
19
+ MatIconModule,
20
+ MatButtonModule], exports: [SidenavToggleComponent,
21
+ GridTileLazyImageContainerDirective,
22
+ GridTileLazyImgDirective,
23
+ SidenavContainerComponent] });
24
+ DdrMaterialExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, imports: [CommonModule,
25
+ MatSidenavModule,
26
+ MatIconModule,
27
+ MatButtonModule] });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DdrMaterialExtensionsModule, decorators: [{
29
+ type: NgModule,
30
+ args: [{
31
+ declarations: [
32
+ SidenavToggleComponent,
33
+ GridTileLazyImageContainerDirective,
34
+ GridTileLazyImgDirective,
35
+ SidenavContainerComponent
36
+ ],
37
+ imports: [
38
+ CommonModule,
39
+ MatSidenavModule,
40
+ MatIconModule,
41
+ MatButtonModule
42
+ ],
43
+ exports: [
44
+ SidenavToggleComponent,
45
+ GridTileLazyImageContainerDirective,
46
+ GridTileLazyImgDirective,
47
+ SidenavContainerComponent
48
+ ]
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGRyLW1hdGVyaWFsLWV4dGVuc2lvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rkci1tYXRlcmlhbC1leHRlbnNpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLG1DQUFtQyxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDeEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQXNCN0MsTUFBTSxPQUFPLDJCQUEyQjs7d0hBQTNCLDJCQUEyQjt5SEFBM0IsMkJBQTJCLGlCQWxCaEMsc0JBQXNCO1FBQ3RCLG1DQUFtQztRQUNuQyx3QkFBd0I7UUFDeEIseUJBQXlCLGFBR3pCLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsYUFBYTtRQUNiLGVBQWUsYUFHZixzQkFBc0I7UUFDdEIsbUNBQW1DO1FBQ25DLHdCQUF3QjtRQUN4Qix5QkFBeUI7eUhBR3BCLDJCQUEyQixZQVpoQyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixlQUFlOzJGQVNWLDJCQUEyQjtrQkFwQnZDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLHNCQUFzQjt3QkFDdEIsbUNBQW1DO3dCQUNuQyx3QkFBd0I7d0JBQ3hCLHlCQUF5QjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGVBQWU7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxzQkFBc0I7d0JBQ3RCLG1DQUFtQzt3QkFDbkMsd0JBQXdCO3dCQUN4Qix5QkFBeUI7cUJBQzVCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NpZGVuYXZUb2dnbGVDb21wb25lbnR9IGZyb20gJy4vc2lkZW5hdi9zaWRlbmF2LXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRTaWRlbmF2TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7R3JpZFRpbGVMYXp5SW1hZ2VDb250YWluZXJEaXJlY3RpdmV9IGZyb20gJy4vZ3JpZGxpc3QvZ3JpZC10aWxlLWxhenktaW1hZ2UtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0dyaWRUaWxlTGF6eUltZ0RpcmVjdGl2ZX0gZnJvbSAnLi9ncmlkbGlzdC9ncmlkLXRpbGUtbGF6eS1pbWcuZGlyZWN0aXZlJztcbmltcG9ydCB7U2lkZW5hdkNvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9zaWRlbmF2L3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgU2lkZW5hdlRvZ2dsZUNvbXBvbmVudCxcbiAgICAgICAgR3JpZFRpbGVMYXp5SW1hZ2VDb250YWluZXJEaXJlY3RpdmUsXG4gICAgICAgIEdyaWRUaWxlTGF6eUltZ0RpcmVjdGl2ZSxcbiAgICAgICAgU2lkZW5hdkNvbnRhaW5lckNvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBTaWRlbmF2VG9nZ2xlQ29tcG9uZW50LFxuICAgICAgICBHcmlkVGlsZUxhenlJbWFnZUNvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICAgICAgR3JpZFRpbGVMYXp5SW1nRGlyZWN0aXZlLFxuICAgICAgICBTaWRlbmF2Q29udGFpbmVyQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZHJNYXRlcmlhbEV4dGVuc2lvbnNNb2R1bGVcbntcbn1cbiJdfQ==
@@ -0,0 +1,55 @@
1
+ import { __decorate } from "tslib";
2
+ import { ContentChildren, Directive, HostListener } from '@angular/core';
3
+ import { GridTileLazyImgDirective } from './grid-tile-lazy-img.directive';
4
+ import { Debounce, Limit } from '@dontdrinkandroot/ngx-extensions';
5
+ import * as i0 from "@angular/core";
6
+ export class GridTileLazyImageContainerDirective {
7
+ windowResized($event) {
8
+ if (null != this.lazyImages) {
9
+ this.lazyImages.forEach((lazyImage, index) => lazyImage.recheck());
10
+ }
11
+ }
12
+ windowScroll($event) {
13
+ if (null != this.lazyImages) {
14
+ this.lazyImages.forEach((lazyImage, index) => lazyImage.check());
15
+ }
16
+ }
17
+ /**
18
+ * @override
19
+ */
20
+ ngAfterContentInit() {
21
+ this.lazyImages.forEach((lazyImage, index) => lazyImage.check());
22
+ this.changeSubscription = this.lazyImages.changes.subscribe(() => {
23
+ /* Wait one tick until layout is ready */
24
+ setTimeout(() => this.lazyImages.forEach((lazyImage, index) => lazyImage.recheck()), 1);
25
+ });
26
+ }
27
+ /**
28
+ * @override
29
+ */
30
+ ngOnDestroy() {
31
+ this.changeSubscription.unsubscribe();
32
+ }
33
+ }
34
+ GridTileLazyImageContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImageContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
+ 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 });
36
+ __decorate([
37
+ Debounce()
38
+ ], GridTileLazyImageContainerDirective.prototype, "windowResized", null);
39
+ __decorate([
40
+ Limit()
41
+ ], GridTileLazyImageContainerDirective.prototype, "windowScroll", null);
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImageContainerDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{ selector: '[ddrGridTileLazyImgContainer]' }]
45
+ }], propDecorators: { lazyImages: [{
46
+ type: ContentChildren,
47
+ args: [GridTileLazyImgDirective, { descendants: true }]
48
+ }], windowResized: [{
49
+ type: HostListener,
50
+ args: ['window:resize', ['$event']]
51
+ }], windowScroll: [{
52
+ type: HostListener,
53
+ args: ['window:scroll', ['$event']]
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10aWxlLWxhenktaW1hZ2UtY29udGFpbmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmlkbGlzdC9ncmlkLXRpbGUtbGF6eS1pbWFnZS1jb250YWluZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW1CLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxNQUFNLGtDQUFrQyxDQUFDOztBQUdqRSxNQUFNLE9BQU8sbUNBQW1DO0lBUXJDLGFBQWEsQ0FBQyxNQUFhO1FBRTlCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFtQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDaEc7SUFDTCxDQUFDO0lBSU0sWUFBWSxDQUFDLE1BQWE7UUFFN0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQW1DLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUM5RjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGtCQUFrQjtRQUVyQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQW1DLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RCx5Q0FBeUM7WUFDekMsVUFBVSxDQUNOLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBbUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUNoRyxDQUFDLENBQ04sQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUVkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDOztnSUE3Q1EsbUNBQW1DO29IQUFuQyxtQ0FBbUMsNE1BRTNCLHdCQUF3Qjs7SUFLeEMsUUFBUSxFQUFFO3dFQU1WOztJQUdBLEtBQUssRUFBRTt1RUFNUDsyRkF0QlEsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUMsUUFBUSxFQUFFLCtCQUErQixFQUFDOzhCQUdjLFVBQVU7c0JBQXpFLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQU12RCxhQUFhO3NCQUZuQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbEMsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7R3JpZFRpbGVMYXp5SW1nRGlyZWN0aXZlfSBmcm9tICcuL2dyaWQtdGlsZS1sYXp5LWltZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEZWJvdW5jZSwgTGltaXR9IGZyb20gJ0Bkb250ZHJpbmthbmRyb290L25neC1leHRlbnNpb25zJztcblxuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbZGRyR3JpZFRpbGVMYXp5SW1nQ29udGFpbmVyXSd9KVxuZXhwb3J0IGNsYXNzIEdyaWRUaWxlTGF6eUltYWdlQ29udGFpbmVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gICAgQENvbnRlbnRDaGlsZHJlbihHcmlkVGlsZUxhenlJbWdEaXJlY3RpdmUsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGxhenlJbWFnZXMhOiBRdWVyeUxpc3Q8R3JpZFRpbGVMYXp5SW1nRGlyZWN0aXZlPjtcblxuICAgIHByaXZhdGUgY2hhbmdlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgQERlYm91bmNlKClcbiAgICBwdWJsaWMgd2luZG93UmVzaXplZCgkZXZlbnQ6IEV2ZW50KVxuICAgIHtcbiAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5sYXp5SW1hZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmxhenlJbWFnZXMuZm9yRWFjaCgobGF6eUltYWdlOiBHcmlkVGlsZUxhenlJbWdEaXJlY3RpdmUsIGluZGV4KSA9PiBsYXp5SW1hZ2UucmVjaGVjaygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKVxuICAgIEBMaW1pdCgpXG4gICAgcHVibGljIHdpbmRvd1Njcm9sbCgkZXZlbnQ6IEV2ZW50KVxuICAgIHtcbiAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5sYXp5SW1hZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmxhenlJbWFnZXMuZm9yRWFjaCgobGF6eUltYWdlOiBHcmlkVGlsZUxhenlJbWdEaXJlY3RpdmUsIGluZGV4KSA9PiBsYXp5SW1hZ2UuY2hlY2soKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMubGF6eUltYWdlcy5mb3JFYWNoKChsYXp5SW1hZ2U6IEdyaWRUaWxlTGF6eUltZ0RpcmVjdGl2ZSwgaW5kZXgpID0+IGxhenlJbWFnZS5jaGVjaygpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmxhenlJbWFnZXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgLyogV2FpdCBvbmUgdGljayB1bnRpbCBsYXlvdXQgaXMgcmVhZHkgKi9cbiAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgKCkgPT4gdGhpcy5sYXp5SW1hZ2VzLmZvckVhY2goKGxhenlJbWFnZTogR3JpZFRpbGVMYXp5SW1nRGlyZWN0aXZlLCBpbmRleCkgPT4gbGF6eUltYWdlLnJlY2hlY2soKSlcbiAgICAgICAgICAgICAgICAsIDFcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLmNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,115 @@
1
+ import { Directive, HostBinding, Input } from '@angular/core';
2
+ import { NumberUtils, StringUtils } from '@dontdrinkandroot/ngx-extensions';
3
+ import * as i0 from "@angular/core";
4
+ export class GridTileLazyImgDirective {
5
+ constructor(element, cd) {
6
+ this.element = element;
7
+ this.cd = cd;
8
+ this.hostSrc = 'assets/placeholder.gif';
9
+ this.hostStyleObjectFit = 'contain';
10
+ this.hostStyleOpacity = 0;
11
+ this.offset = 1000;
12
+ this.objectFit = 'cover';
13
+ this.displayed = false;
14
+ this.maxLoadedDimension = null;
15
+ }
16
+ recheck() {
17
+ this.displayed = false;
18
+ this.check();
19
+ }
20
+ check() {
21
+ if (this.displayed
22
+ || this.isHidden(this.element.nativeElement)
23
+ || !this.isInsideViewport(this.element.nativeElement, this.offset)) {
24
+ return;
25
+ }
26
+ this.displayed = true;
27
+ const dimension = this.getDimension();
28
+ if (null != this.maxLoadedDimension
29
+ && this.maxLoadedDimension.width >= dimension.width
30
+ && this.maxLoadedDimension.height >= dimension.height) {
31
+ return;
32
+ }
33
+ this.maxLoadedDimension = dimension;
34
+ this.hostStyleWidthPx = dimension.width;
35
+ this.hostStyleHeightPx = dimension.height;
36
+ let wantedSize;
37
+ if (this.objectFit === 'cover') {
38
+ wantedSize = NumberUtils.getNextPowerOfTwo(Math.max(dimension.width, dimension.height));
39
+ this.hostStyleObjectFit = 'cover';
40
+ }
41
+ else {
42
+ wantedSize = NumberUtils.getNextPowerOfTwo(Math.min(dimension.width, dimension.height));
43
+ this.hostStyleObjectFit = 'contain';
44
+ }
45
+ this.hostSrc = StringUtils.updateUrlParameter(this.src, 'size', String(wantedSize));
46
+ this.hostStyleOpacity = 1;
47
+ this.cd.detectChanges();
48
+ }
49
+ /**
50
+ * @override
51
+ */
52
+ ngOnChanges(changes) {
53
+ this.displayed = false;
54
+ this.maxLoadedDimension = null;
55
+ this.hostStyleOpacity = 0;
56
+ if (this.element.nativeElement.parentElement.offsetWidth > 0) {
57
+ this.check();
58
+ }
59
+ }
60
+ isInsideViewport(nativeElement, offset) {
61
+ // console.log('isInsideViewport');
62
+ const ownerDocument = nativeElement.ownerDocument;
63
+ const documentTop = window.pageYOffset || ownerDocument.body.scrollTop;
64
+ const documentLeft = window.pageXOffset || ownerDocument.body.scrollLeft;
65
+ const documentWidth = window.innerWidth || (ownerDocument.documentElement.clientWidth || document.body.clientWidth);
66
+ const documentHeight = window.innerHeight || (ownerDocument.documentElement.clientHeight || document.body.clientHeight);
67
+ const topOffset = nativeElement.getBoundingClientRect().top + documentTop - ownerDocument.documentElement.clientTop;
68
+ const leftOffset = nativeElement.getBoundingClientRect().left + documentLeft - ownerDocument.documentElement.clientLeft;
69
+ // console.log(documentWidth, documentHeight, topOffset, leftOffset);
70
+ const isBelowViewport = documentHeight + documentTop <= topOffset - offset;
71
+ const isAtRightOfViewport = documentWidth + window.pageXOffset <= leftOffset - offset;
72
+ const isAboveViewport = documentTop >= topOffset + offset + nativeElement.offsetHeight;
73
+ const isAtLeftOfViewport = documentLeft >= leftOffset + offset + nativeElement.offsetWidth;
74
+ return !isBelowViewport && !isAboveViewport && !isAtRightOfViewport && !isAtLeftOfViewport;
75
+ }
76
+ getDimension() {
77
+ return {
78
+ width: this.element.nativeElement.parentElement.offsetWidth,
79
+ height: this.element.nativeElement.parentElement.offsetHeight,
80
+ };
81
+ }
82
+ isHidden(nativeElement) {
83
+ // console.log('isHidden');
84
+ return window.getComputedStyle(nativeElement).display === 'none';
85
+ }
86
+ }
87
+ 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 });
88
+ 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 });
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: GridTileLazyImgDirective, decorators: [{
90
+ type: Directive,
91
+ args: [{ selector: '[ddrGridTileLazyImg]' }]
92
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { src: [{
93
+ type: Input,
94
+ args: ['ddrGridTileLazyImg']
95
+ }], hostSrc: [{
96
+ type: HostBinding,
97
+ args: ['src']
98
+ }], hostStyleObjectFit: [{
99
+ type: HostBinding,
100
+ args: ['style.object-fit']
101
+ }], hostStyleWidthPx: [{
102
+ type: HostBinding,
103
+ args: ['style.width.px']
104
+ }], hostStyleHeightPx: [{
105
+ type: HostBinding,
106
+ args: ['style.height.px']
107
+ }], hostStyleOpacity: [{
108
+ type: HostBinding,
109
+ args: ['style.opacity']
110
+ }], offset: [{
111
+ type: Input
112
+ }], objectFit: [{
113
+ type: Input
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10aWxlLWxhenktaW1nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmlkbGlzdC9ncmlkLXRpbGUtbGF6eS1pbWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFjLFdBQVcsRUFBRSxLQUFLLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7O0FBRzFFLE1BQU0sT0FBTyx3QkFBd0I7SUE4QmpDLFlBQW9CLE9BQW1CLEVBQVUsRUFBcUI7UUFBbEQsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBeEIvRCxZQUFPLEdBQUcsd0JBQXdCLENBQUM7UUFHbkMsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBUy9CLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUdyQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBR2QsY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUVuQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLHVCQUFrQixHQUE2QyxJQUFJLENBQUM7SUFJNUUsQ0FBQztJQUVNLE9BQU87UUFFVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLEtBQUs7UUFFUixJQUNJLElBQUksQ0FBQyxTQUFTO2VBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztlQUN6QyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQ3BFO1lBQ0UsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENB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QkFBQyxnQkFBZ0I7Z0JBSXRCLGlCQUFpQjtzQkFEdkIsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBSXZCLGdCQUFnQjtzQkFEdEIsV0FBVzt1QkFBQyxlQUFlO2dCQUlyQixNQUFNO3NCQURaLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge051bWJlclV0aWxzLCBTdHJpbmdVdGlsc30gZnJvbSAnQGRvbnRkcmlua2FuZHJvb3Qvbmd4LWV4dGVuc2lvbnMnO1xuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tkZHJHcmlkVGlsZUxhenlJbWddJ30pXG5leHBvcnQgY2xhc3MgR3JpZFRpbGVMYXp5SW1nRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzXG57XG4gICAgQElucHV0KCdkZHJHcmlkVGlsZUxhenlJbWcnKVxuICAgIHB1YmxpYyBzcmMhOiBzdHJpbmc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3NyYycpXG4gICAgcHVibGljIGhvc3RTcmMgPSAnYXNzZXRzL3BsYWNlaG9sZGVyLmdpZic7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm9iamVjdC1maXQnKVxuICAgIHB1YmxpYyBob3N0U3R5bGVPYmplY3RGaXQgPSAnY29udGFpbic7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JylcbiAgICBwdWJsaWMgaG9zdFN0eWxlV2lkdGhQeCE6IG51bWJlcjtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LnB4JylcbiAgICBwdWJsaWMgaG9zdFN0eWxlSGVpZ2h0UHghOiBudW1iZXI7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm9wYWNpdHknKVxuICAgIHB1YmxpYyBob3N0U3R5bGVPcGFjaXR5ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG9mZnNldCA9IDEwMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvYmplY3RGaXQgPSAnY292ZXInO1xuXG4gICAgcHJpdmF0ZSBkaXNwbGF5ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbWF4TG9hZGVkRGltZW5zaW9uOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpXG4gICAge1xuICAgIH1cblxuICAgIHB1YmxpYyByZWNoZWNrKClcbiAgICB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2soKVxuICAgIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRcbiAgICAgICAgICAgIHx8IHRoaXMuaXNIaWRkZW4odGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICB8fCAhdGhpcy5pc0luc2lkZVZpZXdwb3J0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB0aGlzLm9mZnNldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpc3BsYXllZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuZ2V0RGltZW5zaW9uKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbnVsbCAhPSB0aGlzLm1heExvYWRlZERpbWVuc2lvblxuICAgICAgICAgICAgJiYgdGhpcy5tYXhMb2FkZWREaW1lbnNpb24ud2lkdGggPj0gZGltZW5zaW9uLndpZHRoXG4gICAgICAgICAgICAmJiB0aGlzLm1heExvYWRlZERpbWVuc2lvbi5oZWlnaHQgPj0gZGltZW5zaW9uLmhlaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWF4TG9hZGVkRGltZW5zaW9uID0gZGltZW5zaW9uO1xuICAgICAgICB0aGlzLmhvc3RTdHlsZVdpZHRoUHggPSBkaW1lbnNpb24ud2lkdGg7XG4gICAgICAgIHRoaXMuaG9zdFN0eWxlSGVpZ2h0UHggPSBkaW1lbnNpb24uaGVpZ2h0O1xuICAgICAgICBsZXQgd2FudGVkU2l6ZTogbnVtYmVyO1xuICAgICAgICBpZiAodGhpcy5vYmplY3RGaXQgPT09ICdjb3ZlcicpIHtcbiAgICAgICAgICAgIHdhbnRlZFNpemUgPSBOdW1iZXJVdGlscy5nZXROZXh0UG93ZXJPZlR3byhNYXRoLm1heChkaW1lbnNpb24ud2lkdGgsIGRpbWVuc2lvbi5oZWlnaHQpKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdFN0eWxlT2JqZWN0Rml0ID0gJ2NvdmVyJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbnRlZFNpemUgPSBOdW1iZXJVdGlscy5nZXROZXh0UG93ZXJPZlR3byhNYXRoLm1pbihkaW1lbnNpb24ud2lkdGgsIGRpbWVuc2lvbi5oZWlnaHQpKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdFN0eWxlT2JqZWN0Rml0ID0gJ2NvbnRhaW4nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaG9zdFNyYyA9IFN0cmluZ1V0aWxzLnVwZGF0ZVVybFBhcmFtZXRlcih0aGlzLnNyYywgJ3NpemUnLCBTdHJpbmcod2FudGVkU2l6ZSkpO1xuICAgICAgICB0aGlzLmhvc3RTdHlsZU9wYWNpdHkgPSAxO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWF4TG9hZGVkRGltZW5zaW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5ob3N0U3R5bGVPcGFjaXR5ID0gMDtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW5zaWRlVmlld3BvcnQobmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQsIG9mZnNldDogbnVtYmVyKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2lzSW5zaWRlVmlld3BvcnQnKTtcbiAgICAgICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IG5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRUb3AgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgb3duZXJEb2N1bWVudC5ib2R5LnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRMZWZ0ID0gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IG93bmVyRG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0O1xuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCAob3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCk7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IHx8IChvd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpO1xuICAgICAgICBjb25zdCB0b3BPZmZzZXQgPSBuYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIGRvY3VtZW50VG9wIC0gb3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50VG9wO1xuICAgICAgICBjb25zdCBsZWZ0T2Zmc2V0ID0gbmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgZG9jdW1lbnRMZWZ0IC0gb3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50TGVmdDtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhkb2N1bWVudFdpZHRoLCBkb2N1bWVudEhlaWdodCwgdG9wT2Zmc2V0LCBsZWZ0T2Zmc2V0KTtcblxuICAgICAgICBjb25zdCBpc0JlbG93Vmlld3BvcnQgPSBkb2N1bWVudEhlaWdodCArIGRvY3VtZW50VG9wIDw9IHRvcE9mZnNldCAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgaXNBdFJpZ2h0T2ZWaWV3cG9ydCA9IGRvY3VtZW50V2lkdGggKyB3aW5kb3cucGFnZVhPZmZzZXQgPD0gbGVmdE9mZnNldCAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgaXNBYm92ZVZpZXdwb3J0ID0gZG9jdW1lbnRUb3AgPj0gdG9wT2Zmc2V0ICsgb2Zmc2V0ICsgbmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGlzQXRMZWZ0T2ZWaWV3cG9ydCA9IGRvY3VtZW50TGVmdCA+PSBsZWZ0T2Zmc2V0ICsgb2Zmc2V0ICsgbmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgICAgICByZXR1cm4gIWlzQmVsb3dWaWV3cG9ydCAmJiAhaXNBYm92ZVZpZXdwb3J0ICYmICFpc0F0UmlnaHRPZlZpZXdwb3J0ICYmICFpc0F0TGVmdE9mVmlld3BvcnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREaW1lbnNpb24oKTogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9XG4gICAge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNIaWRkZW4obmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQpXG4gICAge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnaXNIaWRkZW4nKTtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5hdGl2ZUVsZW1lbnQpLmRpc3BsYXkgPT09ICdub25lJztcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./sidenav.service";
4
+ import * as i2 from "@angular/cdk/layout";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@angular/material/sidenav";
7
+ export class SidenavContainerComponent {
8
+ constructor(sidenavService, breakpointObserver) {
9
+ this.sidenavService = sidenavService;
10
+ this.breakpointObserver = breakpointObserver;
11
+ this.stayOpenOnLargeScreen = false;
12
+ this.mode$ = this.sidenavService.getModeObservable();
13
+ this.opened$ = this.sidenavService.getOpenedObservable();
14
+ }
15
+ /**
16
+ * @override
17
+ */
18
+ ngOnChanges(changes) {
19
+ this.sidenavService.setStayOpenOnLargeScreen(changes['stayOpenOnLargeScreen'].currentValue);
20
+ }
21
+ /**
22
+ * @override
23
+ */
24
+ ngOnInit() {
25
+ this.sidenavService.setSidenav(this.sidenav);
26
+ }
27
+ }
28
+ SidenavContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavContainerComponent, deps: [{ token: i1.SidenavService }, { token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
29
+ 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" }] });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavContainerComponent, decorators: [{
31
+ type: Component,
32
+ 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" }]
33
+ }], ctorParameters: function () { return [{ type: i1.SidenavService }, { type: i2.BreakpointObserver }]; }, propDecorators: { sidenav: [{
34
+ type: ViewChild,
35
+ args: ['sidenav', { static: true }]
36
+ }], stayOpenOnLargeScreen: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NpZGVuYXYvc2lkZW5hdi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL3NpZGVuYXYvc2lkZW5hdi1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQW9DLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVTVGLE1BQU0sT0FBTyx5QkFBeUI7SUFZbEMsWUFBb0IsY0FBOEIsRUFBVSxrQkFBc0M7UUFBOUUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQU4zRiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFFOUIsVUFBSyxHQUE4QixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFM0UsWUFBTyxHQUF3QixJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFJaEYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLE9BQXNCO1FBRXJDLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUVYLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDOztzSEE5QlEseUJBQXlCOzBHQUF6Qix5QkFBeUIsb1FDVnRDLCtiQVlBOzJGREZhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDSSwyQkFBMkI7c0lBTTlCLE9BQU87c0JBRGIsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUk3QixxQkFBcUI7c0JBRDNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXREcmF3ZXJNb2RlLCBNYXRTaWRlbmF2fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7U2lkZW5hdlNlcnZpY2V9IGZyb20gJy4vc2lkZW5hdi5zZXJ2aWNlJztcbmltcG9ydCB7QnJlYWtwb2ludE9ic2VydmVyfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZGRyLW1hdC1zaWRlbmF2LWNvbnRhaW5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTaWRlbmF2Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgICBAVmlld0NoaWxkKCdzaWRlbmF2Jywge3N0YXRpYzogdHJ1ZX0pXG4gICAgcHVibGljIHNpZGVuYXYhOiBNYXRTaWRlbmF2O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RheU9wZW5PbkxhcmdlU2NyZWVuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbW9kZSQ6IE9ic2VydmFibGU8TWF0RHJhd2VyTW9kZT4gPSB0aGlzLnNpZGVuYXZTZXJ2aWNlLmdldE1vZGVPYnNlcnZhYmxlKCk7XG5cbiAgICBwdWJsaWMgb3BlbmVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuc2lkZW5hdlNlcnZpY2UuZ2V0T3BlbmVkT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2UsIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIpXG4gICAge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2U2VydmljZS5zZXRTdGF5T3Blbk9uTGFyZ2VTY3JlZW4oY2hhbmdlc1snc3RheU9wZW5PbkxhcmdlU2NyZWVuJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2U2VydmljZS5zZXRTaWRlbmF2KHRoaXMuc2lkZW5hdik7XG4gICAgfVxufVxuIiwiPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBbbmdDbGFzc109XCIobW9kZSR8YXN5bmMpXCI+XG4gICAgPG1hdC1zaWRlbmF2XG4gICAgICAgICNzaWRlbmF2XG4gICAgICAgIGZpeGVkSW5WaWV3cG9ydD1cInRydWVcIlxuICAgICAgICBbbW9kZV09XCIobW9kZSR8YXN5bmMpID8/ICdvdmVyJ1wiXG4gICAgICAgIFtvcGVuZWRdPVwiKG9wZW5lZCR8YXN5bmMpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PW1hdC1zaWRlbmF2XVwiPjwvbmctY29udGVudD5cbiAgICA8L21hdC1zaWRlbmF2PlxuICAgIDxtYXQtc2lkZW5hdi1jb250ZW50PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1tYXQtc2lkZW5hdi1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./sidenav.service";
4
+ import * as i2 from "@angular/material/icon";
5
+ import * as i3 from "@angular/material/button";
6
+ export class SidenavToggleComponent {
7
+ constructor(sidenavService) {
8
+ this.sidenavService = sidenavService;
9
+ }
10
+ toggleSidenav() {
11
+ this.sidenavService.toggle();
12
+ }
13
+ }
14
+ SidenavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavToggleComponent, deps: [{ token: i1.SidenavService }], target: i0.ɵɵFactoryTarget.Component });
15
+ SidenavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: SidenavToggleComponent, selector: "ddr-mat-sidenav-toggle", ngImport: i0, template: `
16
+ <button mat-icon-button (click)="toggleSidenav()">
17
+ <mat-icon>menu</mat-icon>
18
+ </button>`, isInline: true, dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.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"] }] });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavToggleComponent, decorators: [{
20
+ type: Component,
21
+ args: [{
22
+ selector: 'ddr-mat-sidenav-toggle',
23
+ template: `
24
+ <button mat-icon-button (click)="toggleSidenav()">
25
+ <mat-icon>menu</mat-icon>
26
+ </button>`
27
+ }]
28
+ }], ctorParameters: function () { return [{ type: i1.SidenavService }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NpZGVuYXYvc2lkZW5hdi10b2dnbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBVXhDLE1BQU0sT0FBTyxzQkFBc0I7SUFFL0IsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBRWxELENBQUM7SUFFTSxhQUFhO1FBRWhCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7bUhBVFEsc0JBQXNCO3VHQUF0QixzQkFBc0IsOERBTHJCOzs7a0JBR0k7MkZBRUwsc0JBQXNCO2tCQVBsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRTs7O2tCQUdJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2lkZW5hdlNlcnZpY2V9IGZyb20gJy4vc2lkZW5hdi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkZHItbWF0LXNpZGVuYXYtdG9nZ2xlJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU2lkZW5hdigpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPmBcbn0pXG5leHBvcnQgY2xhc3MgU2lkZW5hdlRvZ2dsZUNvbXBvbmVudFxue1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlKVxuICAgIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlU2lkZW5hdigpXG4gICAge1xuICAgICAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLnRvZ2dsZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,65 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Breakpoints } from '@angular/cdk/layout';
3
+ import { map } from 'rxjs/operators';
4
+ import { NavigationStart } from '@angular/router';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/layout";
7
+ import * as i2 from "@angular/router";
8
+ export class SidenavService {
9
+ constructor(breakpointObserver, router) {
10
+ this.breakpointObserver = breakpointObserver;
11
+ this.router = router;
12
+ this.stayOpenOnLargeScreen = false;
13
+ this.largeBreakpoints = [
14
+ Breakpoints.Medium,
15
+ Breakpoints.Large,
16
+ Breakpoints.XLarge
17
+ ];
18
+ this.screenLarge$ = this.breakpointObserver.observe(this.largeBreakpoints).pipe(map(result => result.matches));
19
+ this.mode$ = this.screenLarge$.pipe(map(large => large && this.stayOpenOnLargeScreen ? 'side' : 'over'));
20
+ this.opened$ = this.screenLarge$.pipe(map(large => large && this.stayOpenOnLargeScreen));
21
+ this.router.events.subscribe(event => {
22
+ if (event instanceof NavigationStart) {
23
+ this.closeSidebar();
24
+ }
25
+ });
26
+ }
27
+ setSidenav(sidenav) {
28
+ this.sidenav = sidenav;
29
+ }
30
+ getStayOpenOnLargeScreen() {
31
+ return this.stayOpenOnLargeScreen;
32
+ }
33
+ setStayOpenOnLargeScreen(value) {
34
+ this.stayOpenOnLargeScreen = value;
35
+ }
36
+ toggle() {
37
+ if (null == this.sidenav) {
38
+ return Promise.reject('No MatSidenav found. Use setSidenav() of SidenavService');
39
+ }
40
+ if (!(this.stayOpenOnLargeScreen && this.breakpointObserver.isMatched(this.largeBreakpoints))) {
41
+ return this.sidenav.toggle();
42
+ }
43
+ return Promise.resolve(this.sidenav.opened ? 'open' : 'close');
44
+ }
45
+ closeSidebar() {
46
+ if (!(this.stayOpenOnLargeScreen && this.breakpointObserver.isMatched(this.largeBreakpoints))) {
47
+ this.sidenav.close();
48
+ }
49
+ }
50
+ getModeObservable() {
51
+ return this.mode$;
52
+ }
53
+ getOpenedObservable() {
54
+ return this.opened$;
55
+ }
56
+ }
57
+ 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 });
58
+ SidenavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, providedIn: 'root' });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SidenavService, decorators: [{
60
+ type: Injectable,
61
+ args: [{
62
+ providedIn: 'root'
63
+ }]
64
+ }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i2.Router }]; } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NpZGVuYXYvc2lkZW5hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFxQixXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLGVBQWUsRUFBUyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBS3hELE1BQU0sT0FBTyxjQUFjO0lBa0J2QixZQUFvQixrQkFBc0MsRUFBVSxNQUFjO1FBQTlELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZDFFLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5QixxQkFBZ0IsR0FBRztZQUN2QixXQUFXLENBQUMsTUFBTTtZQUNsQixXQUFXLENBQUMsS0FBSztZQUNqQixXQUFXLENBQUMsTUFBTTtTQUNyQixDQUFDO1FBVUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDM0UsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDL0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDdEUsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FDcEQsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQyxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFtQjtRQUVqQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRU0sd0JBQXdCO1FBRTNCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RDLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxLQUFjO1FBRTFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU07UUFFVCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1NBQ3BGO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRTtZQUMzRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDaEM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLFlBQVk7UUFFZixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO1lBQzNGLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRU0saUJBQWlCO1FBRXBCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRU0sbUJBQW1CO1FBRXRCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOzsyR0EvRVEsY0FBYzsrR0FBZCxjQUFjLGNBRlgsTUFBTTsyRkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERyYXdlck1vZGUsIE1hdERyYXdlclRvZ2dsZVJlc3VsdCwgTWF0U2lkZW5hdn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHN9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05hdmlnYXRpb25TdGFydCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVuYXZTZXJ2aWNlXG57XG4gICAgcHJpdmF0ZSBzaWRlbmF2ITogTWF0U2lkZW5hdjtcblxuICAgIHByaXZhdGUgc3RheU9wZW5PbkxhcmdlU2NyZWVuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGxhcmdlQnJlYWtwb2ludHMgPSBbXG4gICAgICAgIEJyZWFrcG9pbnRzLk1lZGl1bSxcbiAgICAgICAgQnJlYWtwb2ludHMuTGFyZ2UsXG4gICAgICAgIEJyZWFrcG9pbnRzLlhMYXJnZVxuICAgIF07XG5cbiAgICBwcml2YXRlIHNjcmVlbkxhcmdlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByaXZhdGUgbW9kZSQ6IE9ic2VydmFibGU8TWF0RHJhd2VyTW9kZT47XG5cbiAgICBwcml2YXRlIG9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKVxuICAgIHtcbiAgICAgICAgdGhpcy5zY3JlZW5MYXJnZSQgPSB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMubGFyZ2VCcmVha3BvaW50cykucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0Lm1hdGNoZXMpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9kZSQgPSB0aGlzLnNjcmVlbkxhcmdlJC5waXBlKFxuICAgICAgICAgICAgbWFwKGxhcmdlID0+IGxhcmdlICYmIHRoaXMuc3RheU9wZW5PbkxhcmdlU2NyZWVuID8gJ3NpZGUnIDogJ292ZXInKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9wZW5lZCQgPSB0aGlzLnNjcmVlbkxhcmdlJC5waXBlKFxuICAgICAgICAgICAgbWFwKGxhcmdlID0+IGxhcmdlICYmIHRoaXMuc3RheU9wZW5PbkxhcmdlU2NyZWVuKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VTaWRlYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTaWRlbmF2KHNpZGVuYXY6IE1hdFNpZGVuYXYpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLnNpZGVuYXYgPSBzaWRlbmF2O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdGF5T3Blbk9uTGFyZ2VTY3JlZW4oKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RheU9wZW5PbkxhcmdlU2NyZWVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTdGF5T3Blbk9uTGFyZ2VTY3JlZW4odmFsdWU6IGJvb2xlYW4pOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLnN0YXlPcGVuT25MYXJnZVNjcmVlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoKTogUHJvbWlzZTxNYXREcmF3ZXJUb2dnbGVSZXN1bHQ+XG4gICAge1xuICAgICAgICBpZiAobnVsbCA9PSB0aGlzLnNpZGVuYXYpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnTm8gTWF0U2lkZW5hdiBmb3VuZC4gVXNlIHNldFNpZGVuYXYoKSBvZiBTaWRlbmF2U2VydmljZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy5zdGF5T3Blbk9uTGFyZ2VTY3JlZW4gJiYgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKHRoaXMubGFyZ2VCcmVha3BvaW50cykpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaWRlbmF2LnRvZ2dsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnNpZGVuYXYub3BlbmVkID8gJ29wZW4nIDogJ2Nsb3NlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlU2lkZWJhcigpOiB2b2lkXG4gICAge1xuICAgICAgICBpZiAoISh0aGlzLnN0YXlPcGVuT25MYXJnZVNjcmVlbiAmJiB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQodGhpcy5sYXJnZUJyZWFrcG9pbnRzKSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGVPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8TWF0RHJhd2VyTW9kZT5cbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGUkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcGVuZWRPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZCQ7XG4gICAgfVxufVxuIl19