nw-style-guide 20.4.1 → 20.4.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.
Files changed (97) hide show
  1. package/autofocus/index.d.ts +1 -2
  2. package/carousel/index.d.ts +1 -2
  3. package/charts/index.d.ts +1 -13
  4. package/email-input/index.d.ts +1 -2
  5. package/feature-alerts/README.md +5 -5
  6. package/feature-alerts/index.d.ts +8 -9
  7. package/fesm2022/nw-style-guide-animations.mjs +2 -2
  8. package/fesm2022/nw-style-guide-animations.mjs.map +1 -1
  9. package/fesm2022/nw-style-guide-autofocus.mjs +5 -5
  10. package/fesm2022/nw-style-guide-autofocus.mjs.map +1 -1
  11. package/fesm2022/nw-style-guide-carousel.mjs +103 -54
  12. package/fesm2022/nw-style-guide-carousel.mjs.map +1 -1
  13. package/fesm2022/nw-style-guide-charts.mjs +161 -174
  14. package/fesm2022/nw-style-guide-charts.mjs.map +1 -1
  15. package/fesm2022/nw-style-guide-email-input.mjs +56 -29
  16. package/fesm2022/nw-style-guide-email-input.mjs.map +1 -1
  17. package/fesm2022/nw-style-guide-feature-alerts.mjs +23 -31
  18. package/fesm2022/nw-style-guide-feature-alerts.mjs.map +1 -1
  19. package/fesm2022/nw-style-guide-loader.mjs +24 -33
  20. package/fesm2022/nw-style-guide-loader.mjs.map +1 -1
  21. package/fesm2022/nw-style-guide-picker.mjs +335 -153
  22. package/fesm2022/nw-style-guide-picker.mjs.map +1 -1
  23. package/fesm2022/nw-style-guide-resize-observer.mjs +12 -8
  24. package/fesm2022/nw-style-guide-resize-observer.mjs.map +1 -1
  25. package/fesm2022/nw-style-guide-tabs.mjs +66 -33
  26. package/fesm2022/nw-style-guide-tabs.mjs.map +1 -1
  27. package/fesm2022/nw-style-guide-toasts.mjs +51 -59
  28. package/fesm2022/nw-style-guide-toasts.mjs.map +1 -1
  29. package/fesm2022/nw-style-guide-tooltips.mjs +65 -60
  30. package/fesm2022/nw-style-guide-tooltips.mjs.map +1 -1
  31. package/fesm2022/nw-style-guide-word-cloud.mjs +34 -38
  32. package/fesm2022/nw-style-guide-word-cloud.mjs.map +1 -1
  33. package/linting-config/html-files.js +13 -16
  34. package/linting-config/ts-files.js +33 -47
  35. package/loader/index.d.ts +1 -4
  36. package/package.json +1 -1
  37. package/picker/README.md +41 -35
  38. package/picker/index.d.ts +0 -1
  39. package/resize-observer/index.d.ts +2 -2
  40. package/sass/src/_badges.scss +48 -49
  41. package/sass/src/_button-groups.scss +62 -62
  42. package/sass/src/_buttons.scss +94 -32
  43. package/sass/src/_close.scss +9 -9
  44. package/sass/src/_code.scss +42 -43
  45. package/sass/src/_dropdowns.scss +13 -12
  46. package/sass/src/_feature-alerts.scss +17 -4
  47. package/sass/src/_fonts.scss +11 -8
  48. package/sass/src/_forms.scss +73 -58
  49. package/sass/src/_grid.scss +22 -30
  50. package/sass/src/_labels.scss +14 -14
  51. package/sass/src/_list-group.scss +4 -4
  52. package/sass/src/_modals.scss +9 -5
  53. package/sass/src/_navs.scss +15 -10
  54. package/sass/src/_normalize.scss +66 -66
  55. package/sass/src/_pagination.scss +76 -64
  56. package/sass/src/_pills.scss +11 -12
  57. package/sass/src/_popovers.scss +32 -20
  58. package/sass/src/_print.scss +3 -3
  59. package/sass/src/_relative-weight.scss +5 -5
  60. package/sass/src/_responsive-utilities.scss +62 -65
  61. package/sass/src/_scaffolding.scss +4 -7
  62. package/sass/src/_spacing.scss +10 -13
  63. package/sass/src/_tables.scss +200 -203
  64. package/sass/src/_toasts.scss +39 -3
  65. package/sass/src/_tooltip.scss +95 -95
  66. package/sass/src/_type.scss +12 -11
  67. package/sass/src/_utilities.scss +3 -3
  68. package/sass/src/_variables.scss +443 -416
  69. package/sass/src/components/carousel.component.scss +33 -5
  70. package/sass/src/components/email-input.component.scss +6 -6
  71. package/sass/src/components/loader.component.scss +25 -7
  72. package/sass/src/components/picker.component.scss +45 -14
  73. package/sass/src/components/word-cloud.component.scss +2 -2
  74. package/sass/src/components/word.component.scss +3 -2
  75. package/sass/src/mixins/_border-radius.scss +8 -8
  76. package/sass/src/mixins/_buttons.scss +12 -4
  77. package/sass/src/mixins/_clearfix.scss +8 -8
  78. package/sass/src/mixins/_dropdowns.scss +2 -2
  79. package/sass/src/mixins/_forms.scss +60 -39
  80. package/sass/src/mixins/_grid-framework.scss +53 -56
  81. package/sass/src/mixins/_grid.scss +71 -71
  82. package/sass/src/mixins/_mixins.scss +15 -15
  83. package/sass/src/mixins/_nav-divider.scss +6 -6
  84. package/sass/src/mixins/_nav-size.scss +1 -1
  85. package/sass/src/mixins/_pagination.scss +19 -19
  86. package/sass/src/mixins/_responsive-visibility.scss +16 -10
  87. package/sass/src/mixins/_scrollbars.scss +9 -5
  88. package/sass/src/mixins/_tab-focus.scss +10 -6
  89. package/sass/src/mixins/_text-emphasis.scss +7 -7
  90. package/sass/styles.scss +35 -35
  91. package/styles.css +1 -1
  92. package/tabs/README.md +4 -4
  93. package/tabs/index.d.ts +1 -12
  94. package/toasts/README.md +4 -4
  95. package/toasts/index.d.ts +1 -2
  96. package/tooltips/index.d.ts +1 -3
  97. package/word-cloud/index.d.ts +1 -2
@@ -1,9 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, ElementRef } from '@angular/core';
2
+ import { OnInit } from '@angular/core';
3
3
 
4
4
  declare class AutoFocusDirective implements OnInit {
5
5
  private _elRef;
6
- constructor(_elRef: ElementRef<HTMLElement>);
7
6
  ngOnInit(): void;
8
7
  static ɵfac: i0.ɵɵFactoryDeclaration<AutoFocusDirective, never>;
9
8
  static ɵdir: i0.ɵɵDirectiveDeclaration<AutoFocusDirective, "[nwAutofocus]", ["nw-autofocus"], {}, {}, never, never, true, never>;
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy, EventEmitter, ElementRef, QueryList, Renderer2, ChangeDetectorRef, SimpleChanges } from '@angular/core';
2
+ import { OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy, EventEmitter, ElementRef, QueryList, SimpleChanges } from '@angular/core';
3
3
 
4
4
  declare class CarouselSlideDirective {
5
5
  snapAlign: 'none' | 'start' | 'end' | 'center';
@@ -23,7 +23,6 @@ declare class CarouselComponent implements OnInit, AfterViewInit, AfterContentIn
23
23
  pages: number[];
24
24
  private _windowResizeSub;
25
25
  private _slidesSub;
26
- constructor(_renderer: Renderer2, _cdRef: ChangeDetectorRef);
27
26
  ngOnInit(): void;
28
27
  ngOnChanges(changes: SimpleChanges): void;
29
28
  ngAfterViewInit(): void;
package/charts/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { SimpleChange, OnInit, AfterViewInit, OnDestroy, ElementRef, EventEmitter, OnChanges, SimpleChanges, Renderer2 } from '@angular/core';
2
+ import { SimpleChange, OnInit, AfterViewInit, OnDestroy, ElementRef, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
3
3
  import { Selection } from 'd3-selection';
4
4
  import { Observable } from 'rxjs';
5
5
  import { CurveFactory, Line, Area } from 'd3-shape';
@@ -42,7 +42,6 @@ declare class ChartComponent implements OnInit, AfterViewInit, OnDestroy {
42
42
  parentElement: HTMLElement;
43
43
  private _destroyed$;
44
44
  private _chartDimensionsChange$;
45
- constructor(_elRef: ElementRef<SVGSVGElement>, chartUtils: ChartUtils);
46
45
  ngOnInit(): void;
47
46
  ngAfterViewInit(): void;
48
47
  get width(): number;
@@ -82,7 +81,6 @@ declare class PathDirective implements OnInit, OnChanges, OnDestroy {
82
81
  path: Selection<SVGPathElement, [number, number][], SVGElement, any>;
83
82
  yScale: ScaleLinear<number, number>;
84
83
  private _chartResizeSub;
85
- constructor(_elRef: ElementRef, _chart: ChartComponent, _chartUtils: ChartUtils);
86
84
  ngOnInit(): void;
87
85
  ngOnChanges(changes: SimpleChanges): void;
88
86
  setDomains(): void;
@@ -115,7 +113,6 @@ declare abstract class AxisBase implements OnInit, OnChanges, OnDestroy {
115
113
  axisSelection: Selection<SVGGElement, [number, number][], SVGElement, any>;
116
114
  axisLabelSelection: Selection<SVGTextElement, any, HTMLElement, any>;
117
115
  private _chartResizeSub;
118
- constructor(_elRef: ElementRef, chart: ChartComponent, _chartUtils: ChartUtils);
119
116
  ngOnInit(): void;
120
117
  ngOnChanges(c: SimpleChanges): void;
121
118
  createAxis(): any;
@@ -137,7 +134,6 @@ declare class XAxisDirective extends AxisBase {
137
134
  domain: [number, number];
138
135
  scale: NwXAxisScale;
139
136
  scaleUpdated: EventEmitter<NwXAxisScale>;
140
- constructor(elRef: ElementRef, chart: ChartComponent, chartUtils: ChartUtils);
141
137
  createAxis(): void;
142
138
  setTicks(): void;
143
139
  setDomain(): void;
@@ -153,7 +149,6 @@ declare class YAxisDirective extends AxisBase {
153
149
  domain: [number, number];
154
150
  scaleUpdated: EventEmitter<ScaleLinear<number, number>>;
155
151
  scale: ScaleLinear<number, number>;
156
- constructor(elRef: ElementRef, chart: ChartComponent, chartUtils: ChartUtils);
157
152
  createAxis(): void;
158
153
  setTicks(): void;
159
154
  setDomain(): void;
@@ -177,7 +172,6 @@ declare class CircleDirective implements OnInit, OnChanges, OnDestroy {
177
172
  circle: Selection<SVGCircleElement, [number, number], SVGElement, any>;
178
173
  yScale: ScaleLinear<number, number>;
179
174
  private _chartResizeSub;
180
- constructor(_elRef: ElementRef, _chart: ChartComponent, _chartUtils: ChartUtils);
181
175
  ngOnInit(): void;
182
176
  ngOnChanges(changes: SimpleChanges): void;
183
177
  setDomains(): void;
@@ -200,7 +194,6 @@ declare class BrushDirective implements OnInit, OnDestroy, OnChanges {
200
194
  brushEnd: EventEmitter<[[number, number], [number, number]]>;
201
195
  brushSelection: Selection<SVGGElement, any, HTMLElement, any>;
202
196
  brush: BrushBehavior<any>;
203
- constructor(_elRef: ElementRef, _chart: ChartComponent);
204
197
  ngOnInit(): void;
205
198
  ngOnChanges(changes: SimpleChanges): void;
206
199
  initialize(): void;
@@ -235,7 +228,6 @@ declare class BarDirective implements OnInit, OnChanges, OnDestroy {
235
228
  rect: Selection<SVGRectElement, [number, number], SVGElement, any>;
236
229
  yScale: ScaleLinear<number, number>;
237
230
  private _chartResizeSub;
238
- constructor(_elRef: ElementRef, _chart: ChartComponent, _chartUtils: ChartUtils);
239
231
  ngOnInit(): void;
240
232
  ngOnChanges(changes: SimpleChanges): void;
241
233
  setDomains(): void;
@@ -267,7 +259,6 @@ declare class AreaDirective implements OnInit, OnChanges, OnDestroy {
267
259
  area: Area<AreaDatum>;
268
260
  yScale: ScaleLinear<number, number>;
269
261
  private _chartResizeSub;
270
- constructor(_elRef: ElementRef, _chart: ChartComponent, _chartUtils: ChartUtils);
271
262
  ngOnInit(): void;
272
263
  ngOnChanges(changes: SimpleChanges): void;
273
264
  setDomains(): void;
@@ -295,7 +286,6 @@ declare class ChartTooltipDirective implements OnChanges, AfterViewInit {
295
286
  offsetX: number;
296
287
  private _width;
297
288
  private _height;
298
- constructor(_elRef: ElementRef, _renderer: Renderer2);
299
289
  ngAfterViewInit(): void;
300
290
  ngOnChanges(changes: SimpleChanges): void;
301
291
  private _setTooltipSize;
@@ -316,7 +306,6 @@ declare class ForeignObjectDirective implements OnInit, OnChanges, OnDestroy {
316
306
  foreignObject: Selection<SVGForeignObjectElement, [number, number], SVGElement, any>;
317
307
  yScale: ScaleLinear<number, number>;
318
308
  private _chartResizeSub;
319
- constructor(_elRef: ElementRef, _chart: ChartComponent, _chartUtils: ChartUtils);
320
309
  ngOnInit(): void;
321
310
  ngOnChanges(changes: SimpleChanges): void;
322
311
  setDomains(): void;
@@ -344,7 +333,6 @@ declare class TextDirective implements OnInit, OnChanges, OnDestroy {
344
333
  text: Selection<SVGTextElement, [number, number], SVGElement, any>;
345
334
  yScale: ScaleLinear<number, number>;
346
335
  private _chartResizeSub;
347
- constructor(_elRef: ElementRef<SVGTextElement>, _chart: ChartComponent, _chartUtils: ChartUtils);
348
336
  ngOnInit(): void;
349
337
  ngOnChanges(changes: SimpleChanges): void;
350
338
  setDomains(): void;
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, OnDestroy, EventEmitter, ElementRef, ChangeDetectorRef } from '@angular/core';
2
+ import { OnInit, OnDestroy, EventEmitter, ElementRef } from '@angular/core';
3
3
  import { FormControl } from '@angular/forms';
4
4
 
5
5
  interface IValidationChange {
@@ -30,7 +30,6 @@ declare class EmailInputComponent implements OnInit, OnDestroy {
30
30
  private _validationFormControl;
31
31
  private _submitKeys;
32
32
  private _valueChangesSub;
33
- constructor(_cdRef: ChangeDetectorRef);
34
33
  ngOnInit(): void;
35
34
  private _subscribeToValueChanges;
36
35
  removeEmail(email: string): void;
@@ -1,4 +1,4 @@
1
- *app.module.ts*
1
+ _app.module.ts_
2
2
 
3
3
  ```javascript
4
4
  import { FeatureAlertsModule } from 'nw-style-guide/feature-alerts';
@@ -18,7 +18,7 @@ import { FeatureAlertsModule } from 'nw-style-guide/feature-alerts';
18
18
  export class AppModule { }
19
19
  ```
20
20
 
21
- *my-feature.component.ts*
21
+ _my-feature.component.ts_
22
22
 
23
23
  ```javascript
24
24
  import { IFeatureAlertParams } from "nw-style-guide/feature-alerts";
@@ -44,15 +44,15 @@ export class MyFeature {
44
44
  title: 'Introducing % Change',
45
45
  message: 'Some short custom message.',
46
46
  containerClass: 'reporting-percentage-change-cta', // all feature alerts share .feature-alert class but you can add more
47
- triggers: '', // (space separated) mouseenter focus click dblclick keypress
47
+ triggers: '', // (space separated) mouseenter focus click dblclick keypress
48
48
  placement: 'bottom',
49
49
  container: '' // '' or 'body' or any other DOM container
50
50
  };
51
51
  }
52
-
52
+
53
53
  onCTAClick() {
54
54
  // the parent component can react to 'Try it Now' button clicked in the feature alert
55
- // e.g. navigate to feature, highlight some UI components,
55
+ // e.g. navigate to feature, highlight some UI components,
56
56
  }
57
57
 
58
58
  }
@@ -1,19 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ChangeDetectorRef, OnInit, OnDestroy, Provider } from '@angular/core';
2
+ import { OnInit, OnDestroy, Provider } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
 
5
- declare class WindowRef {
6
- get nativeWindow(): Window & typeof globalThis;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<WindowRef, never>;
8
- static ɵprov: i0.ɵɵInjectableDeclaration<WindowRef>;
9
- }
10
-
11
5
  declare class FeatureAlertsService {
12
6
  private _w;
13
7
  LOCAL_STORAGE_KEY: string;
14
8
  private _dismissSubject;
15
9
  dismiss$: Observable<string>;
16
- constructor(_w: WindowRef);
10
+ constructor();
17
11
  dismiss(id: string): void;
18
12
  enable(id: string): void;
19
13
  wasAlertDismissed(id: string): boolean;
@@ -39,7 +33,6 @@ declare class HotspotComponent {
39
33
  private _cdRef;
40
34
  position: string;
41
35
  id: any;
42
- constructor(_featureAlertsService: FeatureAlertsService, _cdRef: ChangeDetectorRef);
43
36
  get isOpen(): boolean;
44
37
  dismiss(): void;
45
38
  static ɵfac: i0.ɵɵFactoryDeclaration<HotspotComponent, never>;
@@ -79,6 +72,12 @@ declare class FeatureAlertsDirective implements OnInit, OnDestroy {
79
72
  static ɵdir: i0.ɵɵDirectiveDeclaration<FeatureAlertsDirective, "[nwFeatureAlert]", never, { "nwFeatureAlert": { "alias": "nwFeatureAlert"; "required": false; }; }, {}, never, never, true, never>;
80
73
  }
81
74
 
75
+ declare class WindowRef {
76
+ get nativeWindow(): Window & typeof globalThis;
77
+ static ɵfac: i0.ɵɵFactoryDeclaration<WindowRef, never>;
78
+ static ɵprov: i0.ɵɵInjectableDeclaration<WindowRef>;
79
+ }
80
+
82
81
  declare function provideFeatureAlerts(): Provider[];
83
82
 
84
83
  export { FeatureAlertsDirective, FeatureAlertsService, HotspotComponent, WindowRef, provideFeatureAlerts };
@@ -1,5 +1,5 @@
1
- const NW_EASING = "cubic-bezier(0.49, 0.07, 0.2, 0.99)";
2
- const NW_DURATION = "300ms";
1
+ const NW_EASING = 'cubic-bezier(0.49, 0.07, 0.2, 0.99)';
2
+ const NW_DURATION = '300ms';
3
3
 
4
4
  /**
5
5
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"nw-style-guide-animations.mjs","sources":["../../../projects/nw-style-guide/animations/defaults.ts","../../../projects/nw-style-guide/animations/nw-style-guide-animations.ts"],"sourcesContent":["export const NW_EASING: string = \"cubic-bezier(0.49, 0.07, 0.2, 0.99)\";\nexport const NW_DURATION: string = \"300ms\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,SAAS,GAAW;AAC1B,MAAM,WAAW,GAAW;;ACDnC;;AAEG;;;;"}
1
+ {"version":3,"file":"nw-style-guide-animations.mjs","sources":["../../../projects/nw-style-guide/animations/defaults.ts","../../../projects/nw-style-guide/animations/nw-style-guide-animations.ts"],"sourcesContent":["export const NW_EASING: string = 'cubic-bezier(0.49, 0.07, 0.2, 0.99)';\nexport const NW_DURATION: string = '300ms';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,SAAS,GAAW;AAC1B,MAAM,WAAW,GAAW;;ACDnC;;AAEG;;;;"}
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive } from '@angular/core';
2
+ import { inject, ElementRef, Directive } from '@angular/core';
3
3
 
4
4
  class AutoFocusDirective {
5
- constructor(_elRef) {
6
- this._elRef = _elRef;
5
+ constructor() {
6
+ this._elRef = inject(ElementRef);
7
7
  }
8
8
  ngOnInit() {
9
9
  this._elRef.nativeElement.focus();
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AutoFocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AutoFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
12
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: AutoFocusDirective, isStandalone: true, selector: "[nwAutofocus]", exportAs: ["nw-autofocus"], ngImport: i0 }); }
13
13
  }
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AutoFocusDirective, decorators: [{
@@ -17,7 +17,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
17
17
  selector: '[nwAutofocus]',
18
18
  exportAs: 'nw-autofocus'
19
19
  }]
20
- }], ctorParameters: () => [{ type: i0.ElementRef }] });
20
+ }] });
21
21
 
22
22
  /**
23
23
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"nw-style-guide-autofocus.mjs","sources":["../../../projects/nw-style-guide/autofocus/autofocus.directive.ts","../../../projects/nw-style-guide/autofocus/nw-style-guide-autofocus.ts"],"sourcesContent":["import { Directive, OnInit, ElementRef } from \"@angular/core\";\n\n@Directive({\n selector: '[nwAutofocus]',\n exportAs: 'nw-autofocus'\n})\nexport class AutoFocusDirective implements OnInit {\n\n constructor(private _elRef: ElementRef<HTMLElement>) {}\n\n ngOnInit() {\n this._elRef.nativeElement.focus();\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAMa,kBAAkB,CAAA;AAE3B,IAAA,WAAA,CAAoB,MAA+B,EAAA;QAA/B,IAAA,CAAA,MAAM,GAAN,MAAM;IAA4B;IAEtD,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;IACrC;+GANS,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACLD;;AAEG;;;;"}
1
+ {"version":3,"file":"nw-style-guide-autofocus.mjs","sources":["../../../projects/nw-style-guide/autofocus/autofocus.directive.ts","../../../projects/nw-style-guide/autofocus/nw-style-guide-autofocus.ts"],"sourcesContent":["import { Directive, OnInit, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[nwAutofocus]',\n exportAs: 'nw-autofocus'\n})\nexport class AutoFocusDirective implements OnInit {\n private _elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n ngOnInit() {\n this._elRef.nativeElement.focus();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAMa,kBAAkB,CAAA;AAJ/B,IAAA,WAAA,GAAA;AAKY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAA0B,UAAU,CAAC;AAK/D,IAAA;IAHG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;IACrC;+GALS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACLD;;AAEG;;;;"}
@@ -1,6 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostBinding, Input, Directive, EventEmitter, ContentChildren, ViewChild, Output, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { trigger, transition, style, AUTO_STYLE, animate } from '@angular/animations';
2
+ import { HostBinding, Input, Directive, inject, Renderer2, ChangeDetectorRef, EventEmitter, ContentChildren, ViewChild, Output, ChangeDetectionStrategy, Component } from '@angular/core';
4
3
  import { debounceTime } from 'rxjs/operators';
5
4
  import { fromEvent } from 'rxjs';
6
5
  import { NgIf, NgStyle, NgClass, NgFor } from '@angular/common';
@@ -26,15 +25,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
26
25
  }] } });
27
26
 
28
27
  class CarouselComponent {
29
- constructor(_renderer, _cdRef) {
30
- this._renderer = _renderer;
31
- this._cdRef = _cdRef;
28
+ constructor() {
29
+ this._renderer = inject(Renderer2);
30
+ this._cdRef = inject(ChangeDetectorRef);
32
31
  this.showPageIndicator = true;
33
32
  this.showPagination = true;
34
33
  this.showMask = true;
35
34
  this.maskColor = '#ffffff';
36
35
  this.currPage = 0;
37
- this.noResultsText = "No results";
36
+ this.noResultsText = 'No results';
38
37
  this.currPageChange = new EventEmitter();
39
38
  this.pages = [];
40
39
  }
@@ -112,53 +111,80 @@ class CarouselComponent {
112
111
  this._windowResizeSub.unsubscribe();
113
112
  this._slidesSub.unsubscribe();
114
113
  }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
116
115
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: CarouselComponent, isStandalone: true, selector: "nw-carousel", inputs: { showPageIndicator: "showPageIndicator", showPagination: "showPagination", showMask: "showMask", maskColor: "maskColor", containerClass: "containerClass", currPage: "currPage", noResultsText: "noResultsText" }, outputs: { currPageChange: "currPageChange" }, queries: [{ propertyName: "slides", predicate: CarouselSlideDirective }], viewQueries: [{ propertyName: "carousel", first: true, predicate: ["carousel"], descendants: true, static: true }], exportAs: ["nw-carousel"], usesOnChanges: true, ngImport: i0, template: `
117
116
  <div class="carousel-container">
118
- <div class="pagination-container" *ngIf="showPagination && !isFirstPage">
119
- <button class="btn btn-carousel btn-carousel-prev" (click)="prev()"></button>
117
+ <div
118
+ class="pagination-container"
119
+ *ngIf="showPagination && !isFirstPage">
120
+ <button
121
+ class="btn btn-carousel btn-carousel-prev"
122
+ (click)="prev()"></button>
120
123
  </div>
121
124
 
122
125
  <ng-content select=".pagination-left"></ng-content>
123
126
 
124
127
  <div class="carousel-content">
125
- <div class="pagination-masks" *ngIf="showMask && pages.length > 1">
126
- <div class="pagination-mask pagination-mask-start" *ngIf="!isFirstPage" @collapse
127
- [ngStyle]="maskStyles"></div>
128
+ <div
129
+ class="pagination-masks"
130
+ *ngIf="showMask && pages.length > 1">
131
+ <div
132
+ class="collapse-expand-grid-container collapse-expand-container-start"
133
+ *ngIf="!isFirstPage"
134
+ animate.leave="collapse-animation">
135
+ <div
136
+ class="pagination-mask pagination-mask-start"
137
+ [ngStyle]="maskStyles"></div>
138
+ </div>
128
139
 
129
- <div class="pagination-mask pagination-mask-end" *ngIf="!isLastPage" @collapse
130
- [ngStyle]="maskStyles"></div>
140
+ <div
141
+ class="collapse-expand-grid-container collapse-expand-container-end"
142
+ *ngIf="!isLastPage"
143
+ animate.leave="collapse-animation">
144
+ <div
145
+ class="pagination-mask pagination-mask-end"
146
+ [ngStyle]="maskStyles"></div>
147
+ </div>
131
148
  </div>
132
149
 
133
- <div class="carousel" #carousel [ngClass]="containerClass">
150
+ <div
151
+ class="carousel"
152
+ #carousel
153
+ [ngClass]="containerClass">
134
154
  <ng-content></ng-content>
135
155
 
136
- <p *ngIf="slides.length === 0" class="nw-text text-center">{{noResultsText}}</p>
156
+ <p
157
+ *ngIf="slides.length === 0"
158
+ class="nw-text text-center">
159
+ {{ noResultsText }}
160
+ </p>
137
161
  </div>
138
162
  </div>
139
163
 
140
- <div class="pagination-container" *ngIf="showPagination && !isLastPage">
141
- <button class="btn btn-carousel btn-carousel-next" (click)="next()"></button>
164
+ <div
165
+ class="pagination-container"
166
+ *ngIf="showPagination && !isLastPage">
167
+ <button
168
+ class="btn btn-carousel btn-carousel-next"
169
+ (click)="next()"></button>
142
170
  </div>
143
171
 
144
172
  <ng-content select=".pagination-right"></ng-content>
145
173
  </div>
146
174
 
147
- <div class="page-indicators" *ngIf="showPageIndicator && pages.length > 1">
148
- <a href="javascript:;" class="page-indicator" *ngFor="let page of pages"
175
+ <div
176
+ class="page-indicators"
177
+ *ngIf="showPageIndicator && pages.length > 1">
178
+ <a
179
+ href="javascript:;"
180
+ class="page-indicator"
181
+ *ngFor="let page of pages"
149
182
  [class.active]="page === currPage"
150
183
  (click)="goToPage(page)"></a>
151
184
  </div>
152
185
 
153
186
  <ng-content select=".pagination-indicators"></ng-content>
154
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
155
- trigger('collapse', [
156
- transition(':leave', [
157
- style({ width: AUTO_STYLE }),
158
- animate(`300ms linear`, style({ width: 0 }))
159
- ])
160
- ])
161
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
187
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
162
188
  }
163
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: CarouselComponent, decorators: [{
164
190
  type: Component,
@@ -166,37 +192,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
166
192
  selector: 'nw-carousel',
167
193
  template: `
168
194
  <div class="carousel-container">
169
- <div class="pagination-container" *ngIf="showPagination && !isFirstPage">
170
- <button class="btn btn-carousel btn-carousel-prev" (click)="prev()"></button>
195
+ <div
196
+ class="pagination-container"
197
+ *ngIf="showPagination && !isFirstPage">
198
+ <button
199
+ class="btn btn-carousel btn-carousel-prev"
200
+ (click)="prev()"></button>
171
201
  </div>
172
202
 
173
203
  <ng-content select=".pagination-left"></ng-content>
174
204
 
175
205
  <div class="carousel-content">
176
- <div class="pagination-masks" *ngIf="showMask && pages.length > 1">
177
- <div class="pagination-mask pagination-mask-start" *ngIf="!isFirstPage" @collapse
178
- [ngStyle]="maskStyles"></div>
206
+ <div
207
+ class="pagination-masks"
208
+ *ngIf="showMask && pages.length > 1">
209
+ <div
210
+ class="collapse-expand-grid-container collapse-expand-container-start"
211
+ *ngIf="!isFirstPage"
212
+ animate.leave="collapse-animation">
213
+ <div
214
+ class="pagination-mask pagination-mask-start"
215
+ [ngStyle]="maskStyles"></div>
216
+ </div>
179
217
 
180
- <div class="pagination-mask pagination-mask-end" *ngIf="!isLastPage" @collapse
181
- [ngStyle]="maskStyles"></div>
218
+ <div
219
+ class="collapse-expand-grid-container collapse-expand-container-end"
220
+ *ngIf="!isLastPage"
221
+ animate.leave="collapse-animation">
222
+ <div
223
+ class="pagination-mask pagination-mask-end"
224
+ [ngStyle]="maskStyles"></div>
225
+ </div>
182
226
  </div>
183
227
 
184
- <div class="carousel" #carousel [ngClass]="containerClass">
228
+ <div
229
+ class="carousel"
230
+ #carousel
231
+ [ngClass]="containerClass">
185
232
  <ng-content></ng-content>
186
233
 
187
- <p *ngIf="slides.length === 0" class="nw-text text-center">{{noResultsText}}</p>
234
+ <p
235
+ *ngIf="slides.length === 0"
236
+ class="nw-text text-center">
237
+ {{ noResultsText }}
238
+ </p>
188
239
  </div>
189
240
  </div>
190
241
 
191
- <div class="pagination-container" *ngIf="showPagination && !isLastPage">
192
- <button class="btn btn-carousel btn-carousel-next" (click)="next()"></button>
242
+ <div
243
+ class="pagination-container"
244
+ *ngIf="showPagination && !isLastPage">
245
+ <button
246
+ class="btn btn-carousel btn-carousel-next"
247
+ (click)="next()"></button>
193
248
  </div>
194
249
 
195
250
  <ng-content select=".pagination-right"></ng-content>
196
251
  </div>
197
252
 
198
- <div class="page-indicators" *ngIf="showPageIndicator && pages.length > 1">
199
- <a href="javascript:;" class="page-indicator" *ngFor="let page of pages"
253
+ <div
254
+ class="page-indicators"
255
+ *ngIf="showPageIndicator && pages.length > 1">
256
+ <a
257
+ href="javascript:;"
258
+ class="page-indicator"
259
+ *ngFor="let page of pages"
200
260
  [class.active]="page === currPage"
201
261
  (click)="goToPage(page)"></a>
202
262
  </div>
@@ -205,17 +265,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
205
265
  `,
206
266
  changeDetection: ChangeDetectionStrategy.OnPush,
207
267
  exportAs: 'nw-carousel',
208
- animations: [
209
- trigger('collapse', [
210
- transition(':leave', [
211
- style({ width: AUTO_STYLE }),
212
- animate(`300ms linear`, style({ width: 0 }))
213
- ])
214
- ])
215
- ],
216
268
  imports: [NgIf, NgStyle, NgClass, NgFor]
217
269
  }]
218
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { showPageIndicator: [{
270
+ }], propDecorators: { showPageIndicator: [{
219
271
  type: Input
220
272
  }], showPagination: [{
221
273
  type: Input
@@ -243,10 +295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
243
295
  * Export cooperating directives
244
296
  * https://v17.angular.io/guide/standalone-components#standalone-components-for-library-authors
245
297
  */
246
- const CAROUSEL_DIRECTIVES = [
247
- CarouselComponent,
248
- CarouselSlideDirective
249
- ];
298
+ const CAROUSEL_DIRECTIVES = [CarouselComponent, CarouselSlideDirective];
250
299
 
251
300
  /**
252
301
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"nw-style-guide-carousel.mjs","sources":["../../../projects/nw-style-guide/carousel/carousel-slide.directive.ts","../../../projects/nw-style-guide/carousel/carousel.component.ts","../../../projects/nw-style-guide/carousel/public-api.ts","../../../projects/nw-style-guide/carousel/nw-style-guide-carousel.ts"],"sourcesContent":["import { Directive, Input, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[nwCarouselSlide]',\n exportAs: 'nw-carousel-slide'\n})\nexport class CarouselSlideDirective {\n\n @HostBinding('style.scroll-snap-align')\n @Input() snapAlign: 'none' | 'start' | 'end' | 'center' = 'start';\n\n}\n","import { Component, ChangeDetectionStrategy, Input, ElementRef, ViewChild, Renderer2, ChangeDetectorRef, AfterViewInit, OnDestroy, OnInit, Output, EventEmitter, OnChanges, SimpleChanges, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\nimport { trigger, transition, style, animate, AUTO_STYLE } from '@angular/animations';\nimport { debounceTime } from \"rxjs/operators\";\nimport { CarouselSlideDirective } from \"./carousel-slide.directive\";\nimport { Subscription, fromEvent } from 'rxjs';\nimport { NgIf, NgStyle, NgClass, NgFor } from '@angular/common';\n\n@Component({\n selector: 'nw-carousel',\n template: `\n <div class=\"carousel-container\">\n <div class=\"pagination-container\" *ngIf=\"showPagination && !isFirstPage\">\n <button class=\"btn btn-carousel btn-carousel-prev\" (click)=\"prev()\"></button>\n </div>\n\n <ng-content select=\".pagination-left\"></ng-content>\n\n <div class=\"carousel-content\">\n <div class=\"pagination-masks\" *ngIf=\"showMask && pages.length > 1\">\n <div class=\"pagination-mask pagination-mask-start\" *ngIf=\"!isFirstPage\" @collapse\n [ngStyle]=\"maskStyles\"></div>\n\n <div class=\"pagination-mask pagination-mask-end\" *ngIf=\"!isLastPage\" @collapse\n [ngStyle]=\"maskStyles\"></div>\n </div>\n\n <div class=\"carousel\" #carousel [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n\n <p *ngIf=\"slides.length === 0\" class=\"nw-text text-center\">{{noResultsText}}</p>\n </div>\n </div>\n\n <div class=\"pagination-container\" *ngIf=\"showPagination && !isLastPage\">\n <button class=\"btn btn-carousel btn-carousel-next\" (click)=\"next()\"></button>\n </div>\n\n <ng-content select=\".pagination-right\"></ng-content>\n </div>\n\n <div class=\"page-indicators\" *ngIf=\"showPageIndicator && pages.length > 1\">\n <a href=\"javascript:;\" class=\"page-indicator\" *ngFor=\"let page of pages\"\n [class.active]=\"page === currPage\"\n (click)=\"goToPage(page)\"></a>\n </div>\n\n <ng-content select=\".pagination-indicators\"></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'nw-carousel',\n animations: [\n trigger('collapse', [\n transition(':leave', [\n style({ width: AUTO_STYLE }),\n animate(`300ms linear`, style({ width: 0 }))\n ])\n ])\n ],\n imports: [NgIf, NgStyle, NgClass, NgFor]\n})\nexport class CarouselComponent implements OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy {\n\n @Input() showPageIndicator: boolean = true;\n @Input() showPagination: boolean = true;\n @Input() showMask: boolean = true;\n @Input() maskColor: string = '#ffffff';\n @Input() containerClass: string;\n @Input() currPage: number = 0;\n @Input() noResultsText: string = \"No results\";\n\n @Output() currPageChange: EventEmitter<number> = new EventEmitter();\n\n @ViewChild('carousel', { static: true }) carousel: ElementRef;\n\n @ContentChildren(CarouselSlideDirective) slides: QueryList<CarouselSlideDirective>;\n\n public pages: number[] = [];\n\n private _windowResizeSub: Subscription;\n private _slidesSub: Subscription;\n\n constructor(\n private _renderer: Renderer2,\n private _cdRef: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.subscribeToWindowResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.currPage && changes.currPage.previousValue !== changes.currPage.currentValue) {\n this._setScrollPosition(this.currPage);\n }\n }\n\n ngAfterViewInit() {\n this.updatePages();\n\n if (this.currPage !== 0) {\n this._setScrollPosition(this.currPage);\n }\n }\n\n ngAfterContentInit() {\n this._slidesSub = this.slides.changes.subscribe(res => {\n this.updatePages();\n });\n }\n\n next() {\n this.goToPage(Math.min(this.pages.length - 1, this.currPage + 1));\n }\n\n prev() {\n this.goToPage(Math.max(0, this.currPage - 1));\n }\n\n goToPage(page: number) {\n this.currPage = page;\n this.currPageChange.emit(this.currPage);\n\n this._setScrollPosition(page);\n }\n\n private _setScrollPosition(page: number): void {\n const carouselWidth: number = this.carouselNativeElement.clientWidth;\n const newScrollPosition: number = page * carouselWidth;\n\n this._renderer.setProperty(this.carouselNativeElement, 'scrollLeft', newScrollPosition);\n }\n\n getPages() {\n const estimatedPages: number = +(this.carouselNativeElement.scrollWidth / this.carouselNativeElement.clientWidth).toFixed(1);\n const numOfPages: number = Math.ceil(estimatedPages);\n\n return [...Array(numOfPages).fill(1)].map((_, i) => i);\n }\n\n updatePages(): void {\n this.pages = this.getPages();\n this._cdRef.detectChanges();\n }\n\n get carouselNativeElement(): HTMLDivElement {\n return (this.carousel.nativeElement as HTMLDivElement);\n }\n\n get isFirstPage(): boolean {\n return this.currPage === 0;\n }\n\n get isLastPage(): boolean {\n return this.currPage === this.pages[this.pages.length - 1];\n }\n\n get maskStyles() {\n return {\n '-webkit-mask-image': `linear-gradient(to left, rgba(0,0,0,0), ${this.maskColor})`,\n 'background-color': `${this.maskColor}`\n };\n }\n\n get maskGradient() {\n return `linear-gradient(to left, rgba(0,0,0,0), ${this.maskColor})`;\n }\n\n subscribeToWindowResize() {\n this._windowResizeSub = fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(_ => {\n this.goToPage(0);\n this.updatePages();\n });\n }\n\n ngOnDestroy() {\n this._windowResizeSub.unsubscribe();\n this._slidesSub.unsubscribe();\n }\n\n}\n","export { CarouselComponent } from './carousel.component';\nexport { CarouselSlideDirective } from './carousel-slide.directive';\n\nimport { CarouselComponent } from './carousel.component';\nimport { CarouselSlideDirective } from './carousel-slide.directive';\n\n/**\n * Export cooperating directives\n * https://v17.angular.io/guide/standalone-components#standalone-components-for-library-authors\n */\nexport const CAROUSEL_DIRECTIVES = [\n CarouselComponent,\n CarouselSlideDirective\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nw-style-guide-carousel.mjs","sources":["../../../projects/nw-style-guide/carousel/carousel-slide.directive.ts","../../../projects/nw-style-guide/carousel/carousel.component.ts","../../../projects/nw-style-guide/carousel/public-api.ts","../../../projects/nw-style-guide/carousel/nw-style-guide-carousel.ts"],"sourcesContent":["import { Directive, Input, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[nwCarouselSlide]',\n exportAs: 'nw-carousel-slide'\n})\nexport class CarouselSlideDirective {\n @HostBinding('style.scroll-snap-align')\n @Input()\n snapAlign: 'none' | 'start' | 'end' | 'center' = 'start';\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n Input,\n ElementRef,\n ViewChild,\n Renderer2,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ContentChildren,\n QueryList,\n AfterContentInit,\n inject\n} from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { CarouselSlideDirective } from './carousel-slide.directive';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { NgIf, NgStyle, NgClass, NgFor } from '@angular/common';\n\n@Component({\n selector: 'nw-carousel',\n template: `\n <div class=\"carousel-container\">\n <div\n class=\"pagination-container\"\n *ngIf=\"showPagination && !isFirstPage\">\n <button\n class=\"btn btn-carousel btn-carousel-prev\"\n (click)=\"prev()\"></button>\n </div>\n\n <ng-content select=\".pagination-left\"></ng-content>\n\n <div class=\"carousel-content\">\n <div\n class=\"pagination-masks\"\n *ngIf=\"showMask && pages.length > 1\">\n <div\n class=\"collapse-expand-grid-container collapse-expand-container-start\"\n *ngIf=\"!isFirstPage\"\n animate.leave=\"collapse-animation\">\n <div\n class=\"pagination-mask pagination-mask-start\"\n [ngStyle]=\"maskStyles\"></div>\n </div>\n\n <div\n class=\"collapse-expand-grid-container collapse-expand-container-end\"\n *ngIf=\"!isLastPage\"\n animate.leave=\"collapse-animation\">\n <div\n class=\"pagination-mask pagination-mask-end\"\n [ngStyle]=\"maskStyles\"></div>\n </div>\n </div>\n\n <div\n class=\"carousel\"\n #carousel\n [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n\n <p\n *ngIf=\"slides.length === 0\"\n class=\"nw-text text-center\">\n {{ noResultsText }}\n </p>\n </div>\n </div>\n\n <div\n class=\"pagination-container\"\n *ngIf=\"showPagination && !isLastPage\">\n <button\n class=\"btn btn-carousel btn-carousel-next\"\n (click)=\"next()\"></button>\n </div>\n\n <ng-content select=\".pagination-right\"></ng-content>\n </div>\n\n <div\n class=\"page-indicators\"\n *ngIf=\"showPageIndicator && pages.length > 1\">\n <a\n href=\"javascript:;\"\n class=\"page-indicator\"\n *ngFor=\"let page of pages\"\n [class.active]=\"page === currPage\"\n (click)=\"goToPage(page)\"></a>\n </div>\n\n <ng-content select=\".pagination-indicators\"></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'nw-carousel',\n imports: [NgIf, NgStyle, NgClass, NgFor]\n})\nexport class CarouselComponent implements OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy {\n private _renderer = inject(Renderer2);\n private _cdRef = inject(ChangeDetectorRef);\n\n @Input() showPageIndicator: boolean = true;\n @Input() showPagination: boolean = true;\n @Input() showMask: boolean = true;\n @Input() maskColor: string = '#ffffff';\n @Input() containerClass: string;\n @Input() currPage: number = 0;\n @Input() noResultsText: string = 'No results';\n\n @Output() currPageChange: EventEmitter<number> = new EventEmitter();\n\n @ViewChild('carousel', { static: true }) carousel: ElementRef;\n\n @ContentChildren(CarouselSlideDirective) slides: QueryList<CarouselSlideDirective>;\n\n public pages: number[] = [];\n\n private _windowResizeSub: Subscription;\n private _slidesSub: Subscription;\n\n ngOnInit() {\n this.subscribeToWindowResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.currPage && changes.currPage.previousValue !== changes.currPage.currentValue) {\n this._setScrollPosition(this.currPage);\n }\n }\n\n ngAfterViewInit() {\n this.updatePages();\n\n if (this.currPage !== 0) {\n this._setScrollPosition(this.currPage);\n }\n }\n\n ngAfterContentInit() {\n this._slidesSub = this.slides.changes.subscribe(res => {\n this.updatePages();\n });\n }\n\n next() {\n this.goToPage(Math.min(this.pages.length - 1, this.currPage + 1));\n }\n\n prev() {\n this.goToPage(Math.max(0, this.currPage - 1));\n }\n\n goToPage(page: number) {\n this.currPage = page;\n this.currPageChange.emit(this.currPage);\n\n this._setScrollPosition(page);\n }\n\n private _setScrollPosition(page: number): void {\n const carouselWidth: number = this.carouselNativeElement.clientWidth;\n const newScrollPosition: number = page * carouselWidth;\n\n this._renderer.setProperty(this.carouselNativeElement, 'scrollLeft', newScrollPosition);\n }\n\n getPages() {\n const estimatedPages: number = +(\n this.carouselNativeElement.scrollWidth / this.carouselNativeElement.clientWidth\n ).toFixed(1);\n const numOfPages: number = Math.ceil(estimatedPages);\n\n return [...Array(numOfPages).fill(1)].map((_, i) => i);\n }\n\n updatePages(): void {\n this.pages = this.getPages();\n this._cdRef.detectChanges();\n }\n\n get carouselNativeElement(): HTMLDivElement {\n return this.carousel.nativeElement as HTMLDivElement;\n }\n\n get isFirstPage(): boolean {\n return this.currPage === 0;\n }\n\n get isLastPage(): boolean {\n return this.currPage === this.pages[this.pages.length - 1];\n }\n\n get maskStyles() {\n return {\n '-webkit-mask-image': `linear-gradient(to left, rgba(0,0,0,0), ${this.maskColor})`,\n 'background-color': `${this.maskColor}`\n };\n }\n\n get maskGradient() {\n return `linear-gradient(to left, rgba(0,0,0,0), ${this.maskColor})`;\n }\n\n subscribeToWindowResize() {\n this._windowResizeSub = fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(_ => {\n this.goToPage(0);\n this.updatePages();\n });\n }\n\n ngOnDestroy() {\n this._windowResizeSub.unsubscribe();\n this._slidesSub.unsubscribe();\n }\n}\n","export { CarouselComponent } from './carousel.component';\nexport { CarouselSlideDirective } from './carousel-slide.directive';\n\nimport { CarouselComponent } from './carousel.component';\nimport { CarouselSlideDirective } from './carousel-slide.directive';\n\n/**\n * Export cooperating directives\n * https://v17.angular.io/guide/standalone-components#standalone-components-for-library-authors\n */\nexport const CAROUSEL_DIRECTIVES = [CarouselComponent, CarouselSlideDirective] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}