@dontdrinkandroot/ngx-material-extensions 0.21.0 → 0.21.2

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.
@@ -13,6 +13,14 @@ html {
13
13
  ),
14
14
  density: ddr-vars.$density
15
15
  ));
16
+
17
+ --mat-sys-success: #{mat.get-theme-color(mat.define-theme((color: (primary: ddr-vars.$success))), primary, 40)};
18
+ --mat-sys-warning: #{mat.get-theme-color(mat.define-theme((color: (primary: ddr-vars.$warning))), primary, 40)};
19
+
20
+ @media (prefers-color-scheme: dark) {
21
+ --mat-sys-success: #{mat.get-theme-color(mat.define-theme((color: (primary: ddr-vars.$success, theme-type: dark))), primary, 80)};
22
+ --mat-sys-warning: #{mat.get-theme-color(mat.define-theme((color: (primary: ddr-vars.$warning, theme-type: dark))), primary, 80)};
23
+ }
16
24
  }
17
25
 
18
26
  .mdc-button {
@@ -34,6 +42,24 @@ html {
34
42
  ));
35
43
  }
36
44
 
45
+ &.mat-success {
46
+ @include mat.button-overrides((
47
+ filled-container-color: var(--mat-sys-success),
48
+ outlined-label-text-color: var(--mat-sys-success),
49
+ protected-label-text-color: var(--mat-sys-success),
50
+ text-label-text-color: var(--mat-sys-success)
51
+ ));
52
+ }
53
+
54
+ &.mat-warning {
55
+ @include mat.button-overrides((
56
+ filled-container-color: var(--mat-sys-warning),
57
+ outlined-label-text-color: var(--mat-sys-warning),
58
+ protected-label-text-color: var(--mat-sys-warning),
59
+ text-label-text-color: var(--mat-sys-warning)
60
+ ));
61
+ }
62
+
37
63
  &.mat-error {
38
64
  @include mat.button-overrides((
39
65
  filled-container-color: var(--mat-sys-error),
@@ -16,7 +16,7 @@
16
16
  }
17
17
 
18
18
  .d-grid {
19
- grid-gap: 1rem;
19
+ gap: 1rem;
20
20
 
21
21
  &.equal-columns {
22
22
  grid-auto-columns: minmax(0, 1fr);
@@ -2,6 +2,8 @@
2
2
 
3
3
  $primary: mat.$azure-palette !default;
4
4
  $tertiary: mat.$magenta-palette !default;
5
+ $success: mat.$green-palette !default;
6
+ $warning: mat.$yellow-palette !default;
5
7
  $density: 0 !default;
6
8
 
7
9
  $spacer: 1rem !default;
@@ -30,6 +32,12 @@ $margins: (
30
32
  'mb': 'margin-bottom'
31
33
  ) !default;
32
34
 
35
+ $gaps: (
36
+ 'gap': 'gap',
37
+ 'column-gap': 'column-gap',
38
+ 'row-gap': 'row-gap'
39
+ ) !default;
40
+
33
41
  $displays: (
34
42
  none: none,
35
43
  inline: inline,
@@ -10,6 +10,14 @@
10
10
  color: var(--mat-sys-tertiary);
11
11
  }
12
12
 
13
+ .text-success {
14
+ color: var(--mat-sys-success);
15
+ }
16
+
17
+ .text-warning {
18
+ color: var(--mat-sys-warning);
19
+ }
20
+
13
21
  .text-error {
14
22
  color: var(--mat-sys-error);
15
23
  }
@@ -52,3 +52,11 @@
52
52
  margin-left: auto !important;
53
53
  margin-right: auto !important;
54
54
  }
55
+
56
+ @each $prefix, $property in ddr-vars.$gaps {
57
+ @each $suffix, $size in ddr-vars.$spacers {
58
+ .#{$prefix}-#{$suffix} {
59
+ #{$property}: #{$size} !important;
60
+ }
61
+ }
62
+ }
@@ -1,16 +1,18 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable, makeEnvironmentProviders, provideEnvironmentInitializer, ElementRef, Directive, input, ViewChild, Input, ChangeDetectionStrategy, Component, signal, effect } from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, makeEnvironmentProviders, provideEnvironmentInitializer, ElementRef, Directive, input, ViewChild, Input, ChangeDetectionStrategy, Component, signal, forwardRef, effect } from '@angular/core';
3
3
  import { MatIconRegistry, MatIcon } from '@angular/material/icon';
4
4
  import { DOCUMENT, NgClass } from '@angular/common';
5
5
  import { fromEvent, distinctUntilChanged, interval, BehaviorSubject, combineLatest } from 'rxjs';
6
6
  import { map, debounce } from 'rxjs/operators';
7
7
  import * as i1 from '@angular/forms';
8
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
8
+ import { FormControl, ReactiveFormsModule, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
9
9
  import { MatCard } from '@angular/material/card';
10
10
  import { MatFormField, MatSuffix, MatPrefix } from '@angular/material/form-field';
11
11
  import { MatInput } from '@angular/material/input';
12
12
  import { MatIconButton } from '@angular/material/button';
13
13
  import { outputFromObservable, toObservable, toSignal } from '@angular/core/rxjs-interop';
14
+ import * as i1$1 from '@angular/material/slider';
15
+ import { MatSliderModule } from '@angular/material/slider';
14
16
  import { MatSidenav, MatSidenavContainer, MatSidenavContent } from '@angular/material/sidenav';
15
17
  import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
16
18
  import { Router, NavigationStart } from '@angular/router';
@@ -121,7 +123,7 @@ class DdrMatFilterComponent {
121
123
  this.formControl.setValue(null);
122
124
  }
123
125
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DdrMatFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
124
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: DdrMatFilterComponent, isStandalone: true, selector: "ddr-mat-filter", inputs: { bouncePeriod: { classPropertyName: "bouncePeriod", publicName: "bouncePeriod", isSignal: false, isRequired: false, transformFunction: null }, ddrMatPrefixIcon: { classPropertyName: "ddrMatPrefixIcon", publicName: "ddrMatPrefixIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<mat-card appearance=\"outlined\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input matInput type=\"text\" [formControl]=\"formControl\" #input/>\n @if (ddrMatPrefixIcon()) {\n <mat-icon matPrefix>{{ ddrMatPrefixIcon() }}</mat-icon>\n }\n <button mat-icon-button matSuffix (click)=\"clear()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: DdrMatFilterComponent, isStandalone: true, selector: "ddr-mat-filter", inputs: { bouncePeriod: { classPropertyName: "bouncePeriod", publicName: "bouncePeriod", isSignal: false, isRequired: false, transformFunction: null }, ddrMatPrefixIcon: { classPropertyName: "ddrMatPrefixIcon", publicName: "ddrMatPrefixIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<mat-card appearance=\"outlined\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input matInput type=\"text\" [formControl]=\"formControl\" #input/>\n @if (ddrMatPrefixIcon()) {\n <mat-icon matPrefix>{{ ddrMatPrefixIcon() }}</mat-icon>\n }\n <button matIconButton matSuffix (click)=\"clear()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
125
127
  }
126
128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DdrMatFilterComponent, decorators: [{
127
129
  type: Component,
@@ -134,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
134
136
  MatSuffix,
135
137
  ReactiveFormsModule,
136
138
  MatPrefix
137
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card appearance=\"outlined\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input matInput type=\"text\" [formControl]=\"formControl\" #input/>\n @if (ddrMatPrefixIcon()) {\n <mat-icon matPrefix>{{ ddrMatPrefixIcon() }}</mat-icon>\n }\n <button mat-icon-button matSuffix (click)=\"clear()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</mat-card>\n" }]
139
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card appearance=\"outlined\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input matInput type=\"text\" [formControl]=\"formControl\" #input/>\n @if (ddrMatPrefixIcon()) {\n <mat-icon matPrefix>{{ ddrMatPrefixIcon() }}</mat-icon>\n }\n <button matIconButton matSuffix (click)=\"clear()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</mat-card>\n" }]
138
140
  }], propDecorators: { filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], bouncePeriod: [{
139
141
  type: Input
140
142
  }], ddrMatPrefixIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddrMatPrefixIcon", required: false }] }], inputElement: [{
@@ -142,6 +144,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
142
144
  args: ['input', { static: true }]
143
145
  }] } });
144
146
 
147
+ class LabeledSlider {
148
+ /* Inputs */
149
+ $label = input.required({ ...(ngDevMode ? { debugName: "$label" } : {}), alias: 'label' });
150
+ $min = input(0, { ...(ngDevMode ? { debugName: "$min" } : {}), alias: 'min' });
151
+ $max = input(100, { ...(ngDevMode ? { debugName: "$max" } : {}), alias: 'max' });
152
+ $step = input(1, { ...(ngDevMode ? { debugName: "$step" } : {}), alias: 'step' });
153
+ $disabled = input(false, { ...(ngDevMode ? { debugName: "$disabled" } : {}), alias: 'disabled' });
154
+ $horizontal = input(false, { ...(ngDevMode ? { debugName: "$horizontal" } : {}), alias: 'horizontal' });
155
+ $compact = input(false, { ...(ngDevMode ? { debugName: "$compact" } : {}), alias: 'compact' });
156
+ $value = signal(null, ...(ngDevMode ? [{ debugName: "$value" }] : []));
157
+ onChange = () => {
158
+ };
159
+ onTouched = () => {
160
+ };
161
+ /** @override */
162
+ writeValue(value) {
163
+ this.$value.set(value);
164
+ }
165
+ /** @override */
166
+ registerOnChange(fn) {
167
+ this.onChange = fn;
168
+ }
169
+ /** @override */
170
+ registerOnTouched(fn) {
171
+ this.onTouched = fn;
172
+ }
173
+ /** @override */
174
+ setDisabledState(isDisabled) {
175
+ // We use the disabled input signal, but we might need to handle this if it's used via Reactive Forms
176
+ }
177
+ onModelChange() {
178
+ this.onChange(this.$value());
179
+ }
180
+ onBlur() {
181
+ this.onTouched();
182
+ }
183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LabeledSlider, deps: [], target: i0.ɵɵFactoryTarget.Component });
184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: LabeledSlider, isStandalone: true, selector: "labeled-slider", inputs: { $label: { classPropertyName: "$label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, $min: { classPropertyName: "$min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, $max: { classPropertyName: "$max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, $step: { classPropertyName: "$step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, $disabled: { classPropertyName: "$disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, $horizontal: { classPropertyName: "$horizontal", publicName: "horizontal", isSignal: true, isRequired: false, transformFunction: null }, $compact: { classPropertyName: "$compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.horizontal": "$horizontal()", "class.compact": "$compact()", "title": "$label()" } }, providers: [
185
+ {
186
+ provide: NG_VALUE_ACCESSOR,
187
+ useExisting: forwardRef(() => LabeledSlider),
188
+ multi: true
189
+ }
190
+ ], ngImport: i0, template: "<label class=\"mat-label-small label\">{{ $label() }}</label>\n<mat-slider [min]=\"$min()\" [max]=\"$max()\" [step]=\"$step()\" [disabled]=\"$disabled()\" discrete class=\"flex-grow\">\n <input matSliderThumb [(ngModel)]=\"$value\" [disabled]=\"$disabled()\" (ngModelChange)=\"onModelChange()\" (blur)=\"onBlur()\">\n</mat-slider>\n", styles: [":host{display:flex;flex-direction:column;width:100%}:host .label{display:block}:host.horizontal{flex-direction:row;align-items:center}:host.horizontal .label{display:inline-block;width:5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:.5rem}:host.horizontal .mat-mdc-slider{flex-grow:1}:host.compact .mat-mdc-slider{height:36px}:host.compact .mdc-slider__input{height:22px}:host.compact ::ng-deep .mdc-slider__thumb{height:36px;width:36px}\n"], dependencies: [{ kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i1$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i1$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
191
+ }
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LabeledSlider, decorators: [{
193
+ type: Component,
194
+ args: [{ selector: 'labeled-slider', standalone: true, imports: [
195
+ MatSliderModule,
196
+ FormsModule
197
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
198
+ {
199
+ provide: NG_VALUE_ACCESSOR,
200
+ useExisting: forwardRef(() => LabeledSlider),
201
+ multi: true
202
+ }
203
+ ], host: {
204
+ "[class.horizontal]": "$horizontal()",
205
+ "[class.compact]": "$compact()",
206
+ "[title]": "$label()"
207
+ }, template: "<label class=\"mat-label-small label\">{{ $label() }}</label>\n<mat-slider [min]=\"$min()\" [max]=\"$max()\" [step]=\"$step()\" [disabled]=\"$disabled()\" discrete class=\"flex-grow\">\n <input matSliderThumb [(ngModel)]=\"$value\" [disabled]=\"$disabled()\" (ngModelChange)=\"onModelChange()\" (blur)=\"onBlur()\">\n</mat-slider>\n", styles: [":host{display:flex;flex-direction:column;width:100%}:host .label{display:block}:host.horizontal{flex-direction:row;align-items:center}:host.horizontal .label{display:inline-block;width:5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:.5rem}:host.horizontal .mat-mdc-slider{flex-grow:1}:host.compact .mat-mdc-slider{height:36px}:host.compact .mdc-slider__input{height:22px}:host.compact ::ng-deep .mdc-slider__thumb{height:36px;width:36px}\n"] }]
208
+ }], propDecorators: { $label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], $min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], $max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], $step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], $disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], $horizontal: [{ type: i0.Input, args: [{ isSignal: true, alias: "horizontal", required: false }] }], $compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }] } });
209
+
145
210
  class DdrMatSidenavService {
146
211
  breakpointObserver = inject(BreakpointObserver);
147
212
  router = inject(Router);
@@ -256,7 +321,7 @@ class DdrMatSidenavToggleComponent {
256
321
  }
257
322
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DdrMatSidenavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
258
323
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: DdrMatSidenavToggleComponent, isStandalone: true, selector: "ddr-mat-sidenav-toggle", host: { properties: { "style.display": "visible() ? \"block\" : \"none\"" } }, ngImport: i0, template: `
259
- <button mat-icon-button (click)="toggleSidenav()">
324
+ <button matIconButton (click)="toggleSidenav()">
260
325
  <mat-icon>menu</mat-icon>
261
326
  </button>`, isInline: true, dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
262
327
  }
@@ -265,7 +330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
265
330
  args: [{
266
331
  selector: 'ddr-mat-sidenav-toggle',
267
332
  template: `
268
- <button mat-icon-button (click)="toggleSidenav()">
333
+ <button matIconButton (click)="toggleSidenav()">
269
334
  <mat-icon>menu</mat-icon>
270
335
  </button>`,
271
336
  imports: [
@@ -327,5 +392,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
327
392
  * Generated bundle index. Do not edit.
328
393
  */
329
394
 
330
- export { DDR_MAT_THEME, DdrMatFabFixedDirective, DdrMatFilterComponent, DdrMatSidenavContainerComponent, DdrMatSidenavService, DdrMatSidenavToggleComponent, DdrMatToolbarFixedTopDirective, provideDdrMaterialExtensions };
395
+ export { DDR_MAT_THEME, DdrMatFabFixedDirective, DdrMatFilterComponent, DdrMatSidenavContainerComponent, DdrMatSidenavService, DdrMatSidenavToggleComponent, DdrMatToolbarFixedTopDirective, LabeledSlider, provideDdrMaterialExtensions };
331
396
  //# sourceMappingURL=dontdrinkandroot-ngx-material-extensions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dontdrinkandroot-ngx-material-extensions.mjs","sources":["../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/theme/theme-config.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/theme/theme-scroll.service.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/provider.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/button/fab-fixed.directive.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/filter/filter.component.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/filter/filter.component.html","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav.service.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav-container.component.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav-container.component.html","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav-toggle.component.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/toolbar/toolbar-fixed-top.directive.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/public-api.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/dontdrinkandroot-ngx-material-extensions.ts"],"sourcesContent":["import {InjectionToken} from \"@angular/core\";\n\nexport const DDR_MAT_THEME = new InjectionToken<DdrMatThemeConfig>('DDR_MAT_THEME');\n\nexport interface DdrMatThemeConfig\n{\n themeColorLight: string,\n themeColorDark: string,\n themeColorLightScrolled: string,\n themeColorDarkScrolled: string,\n}\n","import {inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {distinctUntilChanged, fromEvent} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport {DDR_MAT_THEME, DdrMatThemeConfig} from \"./theme-config\";\n\n@Injectable()\nexport class DdrMatThemeScrollService\n{\n private readonly document = inject<Document>(DOCUMENT);\n private readonly themeConfig = inject<DdrMatThemeConfig>(DDR_MAT_THEME);\n\n public init()\n {\n const lightMetaElement = this.findOrCreateThemeColorMetaElement('(prefers-color-scheme: light)', this.themeConfig.themeColorLight);\n const darkMetaElement = this.findOrCreateThemeColorMetaElement('(prefers-color-scheme: dark)', this.themeConfig.themeColorDark);\n\n fromEvent(this.document, 'scroll')\n .pipe(\n map(() => this.document.documentElement.scrollTop > 0),\n distinctUntilChanged()\n ).subscribe((scrolled) => {\n this.document.body.classList.toggle('ddr-mat-scrolled', scrolled);\n lightMetaElement.content = scrolled ? this.themeConfig.themeColorLightScrolled : this.themeConfig.themeColorLight;\n darkMetaElement.content = scrolled ? this.themeConfig.themeColorDarkScrolled : this.themeConfig.themeColorDark;\n });\n }\n\n private findOrCreateThemeColorMetaElement(media: string, content: string)\n {\n let metaElement = this.document.head.querySelector<HTMLMetaElement>(`meta[name=\"theme-color\"][media=\"${media}\"]`);\n if (null == metaElement) {\n metaElement = this.createThemeColorMetaElement(media, content);\n }\n return metaElement;\n }\n\n private createThemeColorMetaElement(media: string, content: string)\n {\n const metaElement = this.document.createElement('meta');\n metaElement.name = 'theme-color';\n metaElement.media = media;\n metaElement.content = content;\n this.document.head.appendChild(metaElement);\n\n return metaElement;\n }\n}\n","import {EnvironmentProviders, inject, makeEnvironmentProviders, provideEnvironmentInitializer} from '@angular/core';\nimport {MatIconRegistry} from '@angular/material/icon';\nimport {DDR_MAT_THEME} from './theme/theme-config';\nimport {DdrMatThemeScrollService} from './theme/theme-scroll.service';\n\nexport function provideDdrMaterialExtensions(): EnvironmentProviders\n{\n return makeEnvironmentProviders([\n DdrMatThemeScrollService,\n {\n provide: DDR_MAT_THEME,\n multi: false,\n useValue: {\n themeColorLight: '#faf9fd',\n themeColorDark: '#121316',\n themeColorLightScrolled: '#efedf0',\n themeColorDarkScrolled: '#1f2022',\n }\n },\n provideEnvironmentInitializer(() => {\n inject(DdrMatThemeScrollService).init();\n inject(MatIconRegistry).setDefaultFontSetClass('material-symbols-rounded');\n })\n ]);\n}\n","import {Directive, ElementRef, inject, OnInit} from \"@angular/core\";\n\n@Directive({\n selector: '[ddrMatFabFixed]',\n})\nexport class DdrMatFabFixedDirective implements OnInit\n{\n private element = inject(ElementRef);\n\n private isInitialized = false;\n\n /**\n * @override\n */\n public ngOnInit()\n {\n if (this.isInitialized) {\n return;\n }\n\n // Check if container already exists\n const existingContainer = this.element.nativeElement.parentElement?.querySelector('.ddr-mat-fab-fixed-container');\n if (existingContainer && existingContainer.contains(this.element.nativeElement)) {\n this.isInitialized = true;\n return;\n }\n\n const container = document.createElement('div');\n container.classList.add('ddr-mat-fab-fixed-container');\n this.element.nativeElement.parentElement.insertBefore(container, this.element.nativeElement);\n container.appendChild(this.element.nativeElement);\n\n this.isInitialized = true;\n }\n}\n","import {AfterContentInit, ChangeDetectionStrategy, Component, ElementRef, input, Input, ViewChild} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {interval} from 'rxjs';\nimport {debounce} from 'rxjs/operators';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatCard} from \"@angular/material/card\";\nimport {MatFormField, MatPrefix, MatSuffix} from \"@angular/material/form-field\";\nimport {MatInput} from \"@angular/material/input\";\nimport {MatIconButton} from \"@angular/material/button\";\nimport {outputFromObservable} from \"@angular/core/rxjs-interop\";\n\n@Component({\n selector: 'ddr-mat-filter',\n templateUrl: './filter.component.html',\n styleUrl: './filter.component.scss',\n imports: [\n MatIconButton,\n MatCard,\n MatFormField,\n MatIcon,\n MatInput,\n MatSuffix,\n ReactiveFormsModule,\n MatPrefix\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DdrMatFilterComponent implements AfterContentInit\n{\n protected formControl = new FormControl<string | null>(null);\n\n public filterChanged = outputFromObservable(\n this.formControl.valueChanges\n .pipe(debounce(() => interval(this.bouncePeriod)))\n );\n\n @Input()\n public bouncePeriod = 500;\n\n public ddrMatPrefixIcon = input<string | null>(null);\n\n @ViewChild('input', {static: true})\n protected inputElement!: ElementRef;\n\n /**\n * @override\n */\n public ngAfterContentInit()\n {\n this.inputElement.nativeElement.focus();\n }\n\n public clear()\n {\n this.formControl.setValue(null);\n }\n}\n","<mat-card appearance=\"outlined\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input matInput type=\"text\" [formControl]=\"formControl\" #input/>\n @if (ddrMatPrefixIcon()) {\n <mat-icon matPrefix>{{ ddrMatPrefixIcon() }}</mat-icon>\n }\n <button mat-icon-button matSuffix (click)=\"clear()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</mat-card>\n","import {inject, Injectable, signal} from '@angular/core';\nimport {MatDrawerToggleResult, MatSidenav} from '@angular/material/sidenav';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {BehaviorSubject, combineLatest} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {NavigationStart, Router} from '@angular/router';\nimport {toObservable, toSignal} from \"@angular/core/rxjs-interop\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DdrMatSidenavService\n{\n private breakpointObserver = inject(BreakpointObserver);\n\n private router = inject(Router);\n\n private sidenav!: MatSidenav;\n\n private largeBreakpoints = [\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge\n ];\n\n public stayOpenOnLargeScreen = signal(true);\n\n private stayOpenOnLargeScreen$ = toObservable(this.stayOpenOnLargeScreen);\n\n private sidenavContentScrolled$ = new BehaviorSubject<boolean>(false);\n\n public readonly mode;\n\n public readonly opened;\n\n public readonly toggleVisible;\n\n constructor()\n {\n const screenLarge$ = this.breakpointObserver.observe(this.largeBreakpoints).pipe(\n map(result => result.matches)\n );\n\n const mode$ = combineLatest([\n screenLarge$,\n this.stayOpenOnLargeScreen$\n ]).pipe(\n map(([large, stayOpenOnLargeScreen]) => large && stayOpenOnLargeScreen ? 'side' : 'over'),\n );\n\n const opened$ = combineLatest([\n screenLarge$,\n this.stayOpenOnLargeScreen$\n ]).pipe(\n map(([large, stayOpenOnLargeScreen]) => large && stayOpenOnLargeScreen),\n );\n\n const toggleVisible$ = combineLatest([\n screenLarge$,\n this.stayOpenOnLargeScreen$\n ]).pipe(\n map(([large, stayOpenOnLargeScreen]) => !large || !stayOpenOnLargeScreen),\n );\n\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.closeSidebar();\n }\n });\n\n this.mode = toSignal(mode$, {initialValue: 'over'});\n this.opened = toSignal(opened$, {initialValue: false});\n this.toggleVisible = toSignal(toggleVisible$, {initialValue: true});\n }\n\n public setSidenav(sidenav: MatSidenav): void\n {\n this.sidenav = sidenav;\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 watchContentScrolled()\n {\n return this.sidenavContentScrolled$.asObservable();\n }\n}\n","import {ChangeDetectionStrategy, Component, effect, inject, input, OnInit, ViewChild} from '@angular/core';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from '@angular/material/sidenav';\nimport {DdrMatSidenavService} from './sidenav.service';\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'ddr-mat-sidenav-container',\n templateUrl: './sidenav-container.component.html',\n styleUrl: './sidenav-container.component.scss',\n imports: [\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n NgClass\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DdrMatSidenavContainerComponent implements OnInit\n{\n private sidenavService = inject(DdrMatSidenavService);\n\n @ViewChild('sidenav', {static: true})\n public sidenav!: MatSidenav;\n\n public stayOpenOnLargeScreen = input<boolean>(true);\n\n protected mode;\n\n protected opened;\n\n constructor()\n {\n this.mode = this.sidenavService.mode;\n this.opened = this.sidenavService.opened;\n\n effect(() => {\n this.sidenavService.stayOpenOnLargeScreen.set(this.stayOpenOnLargeScreen());\n });\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()\">\n <mat-sidenav\n #sidenav\n [mode]=\"mode()\"\n [opened]=\"opened()\"\n [fixedInViewport]=\"true\"\n >\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content #sidenavContent>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {DdrMatSidenavService} from './sidenav.service';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatIconButton} from \"@angular/material/button\";\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 imports: [\n MatIcon,\n MatIconButton\n ],\n host: {\n '[style.display]': 'visible() ? \"block\" : \"none\"'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DdrMatSidenavToggleComponent\n{\n private sidenavService = inject(DdrMatSidenavService);\n\n public visible;\n\n constructor()\n {\n this.visible = this.sidenavService.toggleVisible;\n }\n\n public toggleSidenav()\n {\n this.sidenavService.toggle();\n }\n}\n","import {Directive, ElementRef, inject, Input, OnInit} from '@angular/core';\n\n@Directive({\n selector: '[ddrMatToolbarFixedTop]'\n})\nexport class DdrMatToolbarFixedTopDirective implements OnInit\n{\n private el = inject(ElementRef);\n\n @Input()\n public ddrMatToolbarFixedTop: string[] | '' = '';\n\n private isInitialized = false;\n\n /**\n * @override\n */\n public ngOnInit()\n {\n if (this.isInitialized) {\n return;\n }\n\n // Check if container already exists\n const existingContainer = this.el.nativeElement.parentElement?.querySelector('.ddr-mat-toolbar-fixed-top-container');\n if (existingContainer && existingContainer.contains(this.el.nativeElement)) {\n this.isInitialized = true;\n return;\n }\n\n const container = document.createElement('div');\n container.classList.add('ddr-mat-toolbar-fixed-top-container');\n this.el.nativeElement.parentElement.insertBefore(container, this.el.nativeElement);\n container.appendChild(this.el.nativeElement);\n\n if ('' !== this.ddrMatToolbarFixedTop) {\n this.ddrMatToolbarFixedTop.forEach((className: string) => {\n container.classList.add(className);\n });\n }\n\n this.isInitialized = true;\n }\n}\n","/*\n * Public API Surface of ngx-material-extensions\n */\n\nexport * from './lib/provider';\n\nexport * from './lib/button/fab-fixed.directive'\n\nexport * from './lib/filter/filter.component';\n\nexport * from './lib/sidenav/sidenav-container.component';\nexport * from './lib/sidenav/sidenav-toggle.component';\nexport * from './lib/sidenav/sidenav.service';\n\nexport * from './lib/theme/theme-config'\n\nexport * from './lib/toolbar/toolbar-fixed-top.directive'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dontdrinkandroot-ngx-material-extensions.mjs","sources":["../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/theme/theme-config.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/theme/theme-scroll.service.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/provider.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/button/fab-fixed.directive.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/filter/filter.component.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/filter/filter.component.html","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/labeled-slider/labeled-slider.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/labeled-slider/labeled-slider.html","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav.service.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav-container.component.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav-container.component.html","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/sidenav/sidenav-toggle.component.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/lib/toolbar/toolbar-fixed-top.directive.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/public-api.ts","../../../../projects/dontdrinkandroot/ngx-material-extensions/src/dontdrinkandroot-ngx-material-extensions.ts"],"sourcesContent":["import {InjectionToken} from \"@angular/core\";\n\nexport const DDR_MAT_THEME = new InjectionToken<DdrMatThemeConfig>('DDR_MAT_THEME');\n\nexport interface DdrMatThemeConfig\n{\n themeColorLight: string,\n themeColorDark: string,\n themeColorLightScrolled: string,\n themeColorDarkScrolled: string,\n}\n","import {inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {distinctUntilChanged, fromEvent} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport {DDR_MAT_THEME, DdrMatThemeConfig} from \"./theme-config\";\n\n@Injectable()\nexport class DdrMatThemeScrollService\n{\n private readonly document = inject<Document>(DOCUMENT);\n private readonly themeConfig = inject<DdrMatThemeConfig>(DDR_MAT_THEME);\n\n public init()\n {\n const lightMetaElement = this.findOrCreateThemeColorMetaElement('(prefers-color-scheme: light)', this.themeConfig.themeColorLight);\n const darkMetaElement = this.findOrCreateThemeColorMetaElement('(prefers-color-scheme: dark)', this.themeConfig.themeColorDark);\n\n fromEvent(this.document, 'scroll')\n .pipe(\n map(() => this.document.documentElement.scrollTop > 0),\n distinctUntilChanged()\n ).subscribe((scrolled) => {\n this.document.body.classList.toggle('ddr-mat-scrolled', scrolled);\n lightMetaElement.content = scrolled ? this.themeConfig.themeColorLightScrolled : this.themeConfig.themeColorLight;\n darkMetaElement.content = scrolled ? this.themeConfig.themeColorDarkScrolled : this.themeConfig.themeColorDark;\n });\n }\n\n private findOrCreateThemeColorMetaElement(media: string, content: string)\n {\n let metaElement = this.document.head.querySelector<HTMLMetaElement>(`meta[name=\"theme-color\"][media=\"${media}\"]`);\n if (null == metaElement) {\n metaElement = this.createThemeColorMetaElement(media, content);\n }\n return metaElement;\n }\n\n private createThemeColorMetaElement(media: string, content: string)\n {\n const metaElement = this.document.createElement('meta');\n metaElement.name = 'theme-color';\n metaElement.media = media;\n metaElement.content = content;\n this.document.head.appendChild(metaElement);\n\n return metaElement;\n }\n}\n","import {EnvironmentProviders, inject, makeEnvironmentProviders, provideEnvironmentInitializer} from '@angular/core';\nimport {MatIconRegistry} from '@angular/material/icon';\nimport {DDR_MAT_THEME} from './theme/theme-config';\nimport {DdrMatThemeScrollService} from './theme/theme-scroll.service';\n\nexport function provideDdrMaterialExtensions(): EnvironmentProviders\n{\n return makeEnvironmentProviders([\n DdrMatThemeScrollService,\n {\n provide: DDR_MAT_THEME,\n multi: false,\n useValue: {\n themeColorLight: '#faf9fd',\n themeColorDark: '#121316',\n themeColorLightScrolled: '#efedf0',\n themeColorDarkScrolled: '#1f2022',\n }\n },\n provideEnvironmentInitializer(() => {\n inject(DdrMatThemeScrollService).init();\n inject(MatIconRegistry).setDefaultFontSetClass('material-symbols-rounded');\n })\n ]);\n}\n","import {Directive, ElementRef, inject, OnInit} from \"@angular/core\";\n\n@Directive({\n selector: '[ddrMatFabFixed]',\n})\nexport class DdrMatFabFixedDirective implements OnInit\n{\n private element = inject(ElementRef);\n\n private isInitialized = false;\n\n /**\n * @override\n */\n public ngOnInit()\n {\n if (this.isInitialized) {\n return;\n }\n\n // Check if container already exists\n const existingContainer = this.element.nativeElement.parentElement?.querySelector('.ddr-mat-fab-fixed-container');\n if (existingContainer && existingContainer.contains(this.element.nativeElement)) {\n this.isInitialized = true;\n return;\n }\n\n const container = document.createElement('div');\n container.classList.add('ddr-mat-fab-fixed-container');\n this.element.nativeElement.parentElement.insertBefore(container, this.element.nativeElement);\n container.appendChild(this.element.nativeElement);\n\n this.isInitialized = true;\n }\n}\n","import {AfterContentInit, ChangeDetectionStrategy, Component, ElementRef, input, Input, ViewChild} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {interval} from 'rxjs';\nimport {debounce} from 'rxjs/operators';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatCard} from \"@angular/material/card\";\nimport {MatFormField, MatPrefix, MatSuffix} from \"@angular/material/form-field\";\nimport {MatInput} from \"@angular/material/input\";\nimport {MatIconButton} from \"@angular/material/button\";\nimport {outputFromObservable} from \"@angular/core/rxjs-interop\";\n\n@Component({\n selector: 'ddr-mat-filter',\n templateUrl: './filter.component.html',\n styleUrl: './filter.component.scss',\n imports: [\n MatIconButton,\n MatCard,\n MatFormField,\n MatIcon,\n MatInput,\n MatSuffix,\n ReactiveFormsModule,\n MatPrefix\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DdrMatFilterComponent implements AfterContentInit\n{\n protected formControl = new FormControl<string | null>(null);\n\n public filterChanged = outputFromObservable(\n this.formControl.valueChanges\n .pipe(debounce(() => interval(this.bouncePeriod)))\n );\n\n @Input()\n public bouncePeriod = 500;\n\n public ddrMatPrefixIcon = input<string | null>(null);\n\n @ViewChild('input', {static: true})\n protected inputElement!: ElementRef;\n\n /**\n * @override\n */\n public ngAfterContentInit()\n {\n this.inputElement.nativeElement.focus();\n }\n\n public clear()\n {\n this.formControl.setValue(null);\n }\n}\n","<mat-card appearance=\"outlined\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input matInput type=\"text\" [formControl]=\"formControl\" #input/>\n @if (ddrMatPrefixIcon()) {\n <mat-icon matPrefix>{{ ddrMatPrefixIcon() }}</mat-icon>\n }\n <button matIconButton matSuffix (click)=\"clear()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</mat-card>\n","import {ChangeDetectionStrategy, Component, forwardRef, input, signal} from \"@angular/core\";\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {MatSliderModule} from \"@angular/material/slider\";\n\n@Component({\n selector: 'labeled-slider',\n standalone: true,\n imports: [\n MatSliderModule,\n FormsModule\n ],\n templateUrl: './labeled-slider.html',\n styleUrl: './labeled-slider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LabeledSlider),\n multi: true\n }\n ],\n host: {\n \"[class.horizontal]\": \"$horizontal()\",\n \"[class.compact]\": \"$compact()\",\n \"[title]\": \"$label()\"\n }\n})\nexport class LabeledSlider implements ControlValueAccessor\n{\n /* Inputs */\n public $label = input.required<string>({alias: 'label'});\n public $min = input<number>(0, {alias: 'min'});\n public $max = input<number>(100, {alias: 'max'});\n public $step = input<number>(1, {alias: 'step'});\n public $disabled = input<boolean>(false, {alias: 'disabled'});\n public $horizontal = input<boolean>(false, {alias: 'horizontal'});\n public $compact = input<boolean>(false, {alias: 'compact'});\n\n protected readonly $value = signal<number | null>(null);\n\n private onChange: (value: number | null) => void = () => {\n };\n\n private onTouched: () => void = () => {\n };\n\n /** @override */\n public writeValue(value: number | null): void\n {\n this.$value.set(value);\n }\n\n /** @override */\n public registerOnChange(fn: (value: number | null) => void): void\n {\n this.onChange = fn;\n }\n\n /** @override */\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n /** @override */\n public setDisabledState(isDisabled: boolean): void\n {\n // We use the disabled input signal, but we might need to handle this if it's used via Reactive Forms\n }\n\n protected onModelChange(): void\n {\n this.onChange(this.$value());\n }\n\n protected onBlur(): void\n {\n this.onTouched();\n }\n}\n","<label class=\"mat-label-small label\">{{ $label() }}</label>\n<mat-slider [min]=\"$min()\" [max]=\"$max()\" [step]=\"$step()\" [disabled]=\"$disabled()\" discrete class=\"flex-grow\">\n <input matSliderThumb [(ngModel)]=\"$value\" [disabled]=\"$disabled()\" (ngModelChange)=\"onModelChange()\" (blur)=\"onBlur()\">\n</mat-slider>\n","import {inject, Injectable, signal} from '@angular/core';\nimport {MatDrawerToggleResult, MatSidenav} from '@angular/material/sidenav';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {BehaviorSubject, combineLatest} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {NavigationStart, Router} from '@angular/router';\nimport {toObservable, toSignal} from \"@angular/core/rxjs-interop\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DdrMatSidenavService\n{\n private breakpointObserver = inject(BreakpointObserver);\n\n private router = inject(Router);\n\n private sidenav!: MatSidenav;\n\n private largeBreakpoints = [\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge\n ];\n\n public stayOpenOnLargeScreen = signal(true);\n\n private stayOpenOnLargeScreen$ = toObservable(this.stayOpenOnLargeScreen);\n\n private sidenavContentScrolled$ = new BehaviorSubject<boolean>(false);\n\n public readonly mode;\n\n public readonly opened;\n\n public readonly toggleVisible;\n\n constructor()\n {\n const screenLarge$ = this.breakpointObserver.observe(this.largeBreakpoints).pipe(\n map(result => result.matches)\n );\n\n const mode$ = combineLatest([\n screenLarge$,\n this.stayOpenOnLargeScreen$\n ]).pipe(\n map(([large, stayOpenOnLargeScreen]) => large && stayOpenOnLargeScreen ? 'side' : 'over'),\n );\n\n const opened$ = combineLatest([\n screenLarge$,\n this.stayOpenOnLargeScreen$\n ]).pipe(\n map(([large, stayOpenOnLargeScreen]) => large && stayOpenOnLargeScreen),\n );\n\n const toggleVisible$ = combineLatest([\n screenLarge$,\n this.stayOpenOnLargeScreen$\n ]).pipe(\n map(([large, stayOpenOnLargeScreen]) => !large || !stayOpenOnLargeScreen),\n );\n\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.closeSidebar();\n }\n });\n\n this.mode = toSignal(mode$, {initialValue: 'over'});\n this.opened = toSignal(opened$, {initialValue: false});\n this.toggleVisible = toSignal(toggleVisible$, {initialValue: true});\n }\n\n public setSidenav(sidenav: MatSidenav): void\n {\n this.sidenav = sidenav;\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 watchContentScrolled()\n {\n return this.sidenavContentScrolled$.asObservable();\n }\n}\n","import {ChangeDetectionStrategy, Component, effect, inject, input, OnInit, ViewChild} from '@angular/core';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from '@angular/material/sidenav';\nimport {DdrMatSidenavService} from './sidenav.service';\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'ddr-mat-sidenav-container',\n templateUrl: './sidenav-container.component.html',\n styleUrl: './sidenav-container.component.scss',\n imports: [\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n NgClass\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DdrMatSidenavContainerComponent implements OnInit\n{\n private sidenavService = inject(DdrMatSidenavService);\n\n @ViewChild('sidenav', {static: true})\n public sidenav!: MatSidenav;\n\n public stayOpenOnLargeScreen = input<boolean>(true);\n\n protected mode;\n\n protected opened;\n\n constructor()\n {\n this.mode = this.sidenavService.mode;\n this.opened = this.sidenavService.opened;\n\n effect(() => {\n this.sidenavService.stayOpenOnLargeScreen.set(this.stayOpenOnLargeScreen());\n });\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()\">\n <mat-sidenav\n #sidenav\n [mode]=\"mode()\"\n [opened]=\"opened()\"\n [fixedInViewport]=\"true\"\n >\n <ng-content select=\"[slot=mat-sidenav]\"></ng-content>\n </mat-sidenav>\n <mat-sidenav-content #sidenavContent>\n <ng-content select=\"[slot=mat-sidenav-content]\"></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {DdrMatSidenavService} from './sidenav.service';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatIconButton} from \"@angular/material/button\";\n\n@Component({\n selector: 'ddr-mat-sidenav-toggle',\n template: `\n <button matIconButton (click)=\"toggleSidenav()\">\n <mat-icon>menu</mat-icon>\n </button>`,\n imports: [\n MatIcon,\n MatIconButton\n ],\n host: {\n '[style.display]': 'visible() ? \"block\" : \"none\"'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DdrMatSidenavToggleComponent\n{\n private sidenavService = inject(DdrMatSidenavService);\n\n public visible;\n\n constructor()\n {\n this.visible = this.sidenavService.toggleVisible;\n }\n\n public toggleSidenav()\n {\n this.sidenavService.toggle();\n }\n}\n","import {Directive, ElementRef, inject, Input, OnInit} from '@angular/core';\n\n@Directive({\n selector: '[ddrMatToolbarFixedTop]'\n})\nexport class DdrMatToolbarFixedTopDirective implements OnInit\n{\n private el = inject(ElementRef);\n\n @Input()\n public ddrMatToolbarFixedTop: string[] | '' = '';\n\n private isInitialized = false;\n\n /**\n * @override\n */\n public ngOnInit()\n {\n if (this.isInitialized) {\n return;\n }\n\n // Check if container already exists\n const existingContainer = this.el.nativeElement.parentElement?.querySelector('.ddr-mat-toolbar-fixed-top-container');\n if (existingContainer && existingContainer.contains(this.el.nativeElement)) {\n this.isInitialized = true;\n return;\n }\n\n const container = document.createElement('div');\n container.classList.add('ddr-mat-toolbar-fixed-top-container');\n this.el.nativeElement.parentElement.insertBefore(container, this.el.nativeElement);\n container.appendChild(this.el.nativeElement);\n\n if ('' !== this.ddrMatToolbarFixedTop) {\n this.ddrMatToolbarFixedTop.forEach((className: string) => {\n container.classList.add(className);\n });\n }\n\n this.isInitialized = true;\n }\n}\n","/*\n * Public API Surface of ngx-material-extensions\n */\n\nexport * from './lib/provider';\n\nexport * from './lib/button/fab-fixed.directive'\n\nexport * from './lib/filter/filter.component';\n\nexport * from './lib/labeled-slider/labeled-slider';\n\nexport * from './lib/sidenav/sidenav-container.component';\nexport * from './lib/sidenav/sidenav-toggle.component';\nexport * from './lib/sidenav/sidenav.service';\n\nexport * from './lib/theme/theme-config'\n\nexport * from './lib/toolbar/toolbar-fixed-top.directive'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dontdrinkandroot/ngx-material-extensions",
3
- "version": "0.21.0",
3
+ "version": "0.21.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dontdrinkandroot/ngx-libs.ts.git",
@@ -1,6 +1,6 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { EnvironmentProviders, OnInit, AfterContentInit, ElementRef, InjectionToken } from '@angular/core';
3
- import { FormControl } from '@angular/forms';
3
+ import { FormControl, ControlValueAccessor } from '@angular/forms';
4
4
  import { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';
5
5
  import * as rxjs from 'rxjs';
6
6
 
@@ -13,47 +13,72 @@ declare class DdrMatFabFixedDirective implements OnInit {
13
13
  * @override
14
14
  */
15
15
  ngOnInit(): void;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<DdrMatFabFixedDirective, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<DdrMatFabFixedDirective, "[ddrMatFabFixed]", never, {}, {}, never, never, true, never>;
16
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DdrMatFabFixedDirective, never>;
17
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DdrMatFabFixedDirective, "[ddrMatFabFixed]", never, {}, {}, never, never, true, never>;
18
18
  }
19
19
 
20
20
  declare class DdrMatFilterComponent implements AfterContentInit {
21
21
  protected formControl: FormControl<string | null>;
22
- filterChanged: i0.OutputRef<string | null>;
22
+ filterChanged: _angular_core.OutputRef<string | null>;
23
23
  bouncePeriod: number;
24
- ddrMatPrefixIcon: i0.InputSignal<string | null>;
24
+ ddrMatPrefixIcon: _angular_core.InputSignal<string | null>;
25
25
  protected inputElement: ElementRef;
26
26
  /**
27
27
  * @override
28
28
  */
29
29
  ngAfterContentInit(): void;
30
30
  clear(): void;
31
- static ɵfac: i0.ɵɵFactoryDeclaration<DdrMatFilterComponent, never>;
32
- static ɵcmp: i0.ɵɵComponentDeclaration<DdrMatFilterComponent, "ddr-mat-filter", never, { "bouncePeriod": { "alias": "bouncePeriod"; "required": false; }; "ddrMatPrefixIcon": { "alias": "ddrMatPrefixIcon"; "required": false; "isSignal": true; }; }, { "filterChanged": "filterChanged"; }, never, never, true, never>;
31
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DdrMatFilterComponent, never>;
32
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DdrMatFilterComponent, "ddr-mat-filter", never, { "bouncePeriod": { "alias": "bouncePeriod"; "required": false; }; "ddrMatPrefixIcon": { "alias": "ddrMatPrefixIcon"; "required": false; "isSignal": true; }; }, { "filterChanged": "filterChanged"; }, never, never, true, never>;
33
+ }
34
+
35
+ declare class LabeledSlider implements ControlValueAccessor {
36
+ $label: _angular_core.InputSignal<string>;
37
+ $min: _angular_core.InputSignal<number>;
38
+ $max: _angular_core.InputSignal<number>;
39
+ $step: _angular_core.InputSignal<number>;
40
+ $disabled: _angular_core.InputSignal<boolean>;
41
+ $horizontal: _angular_core.InputSignal<boolean>;
42
+ $compact: _angular_core.InputSignal<boolean>;
43
+ protected readonly $value: _angular_core.WritableSignal<number | null>;
44
+ private onChange;
45
+ private onTouched;
46
+ /** @override */
47
+ writeValue(value: number | null): void;
48
+ /** @override */
49
+ registerOnChange(fn: (value: number | null) => void): void;
50
+ /** @override */
51
+ registerOnTouched(fn: () => void): void;
52
+ /** @override */
53
+ setDisabledState(isDisabled: boolean): void;
54
+ protected onModelChange(): void;
55
+ protected onBlur(): void;
56
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LabeledSlider, never>;
57
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LabeledSlider, "labeled-slider", never, { "$label": { "alias": "label"; "required": true; "isSignal": true; }; "$min": { "alias": "min"; "required": false; "isSignal": true; }; "$max": { "alias": "max"; "required": false; "isSignal": true; }; "$step": { "alias": "step"; "required": false; "isSignal": true; }; "$disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "$horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; "$compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
33
58
  }
34
59
 
35
60
  declare class DdrMatSidenavContainerComponent implements OnInit {
36
61
  private sidenavService;
37
62
  sidenav: MatSidenav;
38
- stayOpenOnLargeScreen: i0.InputSignal<boolean>;
39
- protected mode: i0.Signal<"side" | "over">;
40
- protected opened: i0.Signal<boolean>;
63
+ stayOpenOnLargeScreen: _angular_core.InputSignal<boolean>;
64
+ protected mode: _angular_core.Signal<"side" | "over">;
65
+ protected opened: _angular_core.Signal<boolean>;
41
66
  constructor();
42
67
  /**
43
68
  * @override
44
69
  */
45
70
  ngOnInit(): void;
46
- static ɵfac: i0.ɵɵFactoryDeclaration<DdrMatSidenavContainerComponent, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<DdrMatSidenavContainerComponent, "ddr-mat-sidenav-container", never, { "stayOpenOnLargeScreen": { "alias": "stayOpenOnLargeScreen"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=mat-sidenav]", "[slot=mat-sidenav-content]"], true, never>;
71
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DdrMatSidenavContainerComponent, never>;
72
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DdrMatSidenavContainerComponent, "ddr-mat-sidenav-container", never, { "stayOpenOnLargeScreen": { "alias": "stayOpenOnLargeScreen"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=mat-sidenav]", "[slot=mat-sidenav-content]"], true, never>;
48
73
  }
49
74
 
50
75
  declare class DdrMatSidenavToggleComponent {
51
76
  private sidenavService;
52
- visible: i0.Signal<boolean>;
77
+ visible: _angular_core.Signal<boolean>;
53
78
  constructor();
54
79
  toggleSidenav(): void;
55
- static ɵfac: i0.ɵɵFactoryDeclaration<DdrMatSidenavToggleComponent, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<DdrMatSidenavToggleComponent, "ddr-mat-sidenav-toggle", never, {}, {}, never, never, true, never>;
80
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DdrMatSidenavToggleComponent, never>;
81
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DdrMatSidenavToggleComponent, "ddr-mat-sidenav-toggle", never, {}, {}, never, never, true, never>;
57
82
  }
58
83
 
59
84
  declare class DdrMatSidenavService {
@@ -61,19 +86,19 @@ declare class DdrMatSidenavService {
61
86
  private router;
62
87
  private sidenav;
63
88
  private largeBreakpoints;
64
- stayOpenOnLargeScreen: i0.WritableSignal<boolean>;
89
+ stayOpenOnLargeScreen: _angular_core.WritableSignal<boolean>;
65
90
  private stayOpenOnLargeScreen$;
66
91
  private sidenavContentScrolled$;
67
- readonly mode: i0.Signal<"side" | "over">;
68
- readonly opened: i0.Signal<boolean>;
69
- readonly toggleVisible: i0.Signal<boolean>;
92
+ readonly mode: _angular_core.Signal<"side" | "over">;
93
+ readonly opened: _angular_core.Signal<boolean>;
94
+ readonly toggleVisible: _angular_core.Signal<boolean>;
70
95
  constructor();
71
96
  setSidenav(sidenav: MatSidenav): void;
72
97
  toggle(): Promise<MatDrawerToggleResult>;
73
98
  closeSidebar(): void;
74
99
  watchContentScrolled(): rxjs.Observable<boolean>;
75
- static ɵfac: i0.ɵɵFactoryDeclaration<DdrMatSidenavService, never>;
76
- static ɵprov: i0.ɵɵInjectableDeclaration<DdrMatSidenavService>;
100
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DdrMatSidenavService, never>;
101
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DdrMatSidenavService>;
77
102
  }
78
103
 
79
104
  declare const DDR_MAT_THEME: InjectionToken<DdrMatThemeConfig>;
@@ -92,9 +117,9 @@ declare class DdrMatToolbarFixedTopDirective implements OnInit {
92
117
  * @override
93
118
  */
94
119
  ngOnInit(): void;
95
- static ɵfac: i0.ɵɵFactoryDeclaration<DdrMatToolbarFixedTopDirective, never>;
96
- static ɵdir: i0.ɵɵDirectiveDeclaration<DdrMatToolbarFixedTopDirective, "[ddrMatToolbarFixedTop]", never, { "ddrMatToolbarFixedTop": { "alias": "ddrMatToolbarFixedTop"; "required": false; }; }, {}, never, never, true, never>;
120
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DdrMatToolbarFixedTopDirective, never>;
121
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DdrMatToolbarFixedTopDirective, "[ddrMatToolbarFixedTop]", never, { "ddrMatToolbarFixedTop": { "alias": "ddrMatToolbarFixedTop"; "required": false; }; }, {}, never, never, true, never>;
97
122
  }
98
123
 
99
- export { DDR_MAT_THEME, DdrMatFabFixedDirective, DdrMatFilterComponent, DdrMatSidenavContainerComponent, DdrMatSidenavService, DdrMatSidenavToggleComponent, DdrMatToolbarFixedTopDirective, provideDdrMaterialExtensions };
124
+ export { DDR_MAT_THEME, DdrMatFabFixedDirective, DdrMatFilterComponent, DdrMatSidenavContainerComponent, DdrMatSidenavService, DdrMatSidenavToggleComponent, DdrMatToolbarFixedTopDirective, LabeledSlider, provideDdrMaterialExtensions };
100
125
  export type { DdrMatThemeConfig };