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.
- package/autofocus/index.d.ts +1 -2
- package/carousel/index.d.ts +1 -2
- package/charts/index.d.ts +1 -13
- package/email-input/index.d.ts +1 -2
- package/feature-alerts/README.md +5 -5
- package/feature-alerts/index.d.ts +8 -9
- package/fesm2022/nw-style-guide-animations.mjs +2 -2
- package/fesm2022/nw-style-guide-animations.mjs.map +1 -1
- package/fesm2022/nw-style-guide-autofocus.mjs +5 -5
- package/fesm2022/nw-style-guide-autofocus.mjs.map +1 -1
- package/fesm2022/nw-style-guide-carousel.mjs +103 -54
- package/fesm2022/nw-style-guide-carousel.mjs.map +1 -1
- package/fesm2022/nw-style-guide-charts.mjs +161 -174
- package/fesm2022/nw-style-guide-charts.mjs.map +1 -1
- package/fesm2022/nw-style-guide-email-input.mjs +56 -29
- package/fesm2022/nw-style-guide-email-input.mjs.map +1 -1
- package/fesm2022/nw-style-guide-feature-alerts.mjs +23 -31
- package/fesm2022/nw-style-guide-feature-alerts.mjs.map +1 -1
- package/fesm2022/nw-style-guide-loader.mjs +24 -33
- package/fesm2022/nw-style-guide-loader.mjs.map +1 -1
- package/fesm2022/nw-style-guide-picker.mjs +335 -153
- package/fesm2022/nw-style-guide-picker.mjs.map +1 -1
- package/fesm2022/nw-style-guide-resize-observer.mjs +12 -8
- package/fesm2022/nw-style-guide-resize-observer.mjs.map +1 -1
- package/fesm2022/nw-style-guide-tabs.mjs +66 -33
- package/fesm2022/nw-style-guide-tabs.mjs.map +1 -1
- package/fesm2022/nw-style-guide-toasts.mjs +51 -59
- package/fesm2022/nw-style-guide-toasts.mjs.map +1 -1
- package/fesm2022/nw-style-guide-tooltips.mjs +65 -60
- package/fesm2022/nw-style-guide-tooltips.mjs.map +1 -1
- package/fesm2022/nw-style-guide-word-cloud.mjs +34 -38
- package/fesm2022/nw-style-guide-word-cloud.mjs.map +1 -1
- package/linting-config/html-files.js +13 -16
- package/linting-config/ts-files.js +33 -47
- package/loader/index.d.ts +1 -4
- package/package.json +1 -1
- package/picker/README.md +41 -35
- package/picker/index.d.ts +0 -1
- package/resize-observer/index.d.ts +2 -2
- package/sass/src/_badges.scss +48 -49
- package/sass/src/_button-groups.scss +62 -62
- package/sass/src/_buttons.scss +94 -32
- package/sass/src/_close.scss +9 -9
- package/sass/src/_code.scss +42 -43
- package/sass/src/_dropdowns.scss +13 -12
- package/sass/src/_feature-alerts.scss +17 -4
- package/sass/src/_fonts.scss +11 -8
- package/sass/src/_forms.scss +73 -58
- package/sass/src/_grid.scss +22 -30
- package/sass/src/_labels.scss +14 -14
- package/sass/src/_list-group.scss +4 -4
- package/sass/src/_modals.scss +9 -5
- package/sass/src/_navs.scss +15 -10
- package/sass/src/_normalize.scss +66 -66
- package/sass/src/_pagination.scss +76 -64
- package/sass/src/_pills.scss +11 -12
- package/sass/src/_popovers.scss +32 -20
- package/sass/src/_print.scss +3 -3
- package/sass/src/_relative-weight.scss +5 -5
- package/sass/src/_responsive-utilities.scss +62 -65
- package/sass/src/_scaffolding.scss +4 -7
- package/sass/src/_spacing.scss +10 -13
- package/sass/src/_tables.scss +200 -203
- package/sass/src/_toasts.scss +39 -3
- package/sass/src/_tooltip.scss +95 -95
- package/sass/src/_type.scss +12 -11
- package/sass/src/_utilities.scss +3 -3
- package/sass/src/_variables.scss +443 -416
- package/sass/src/components/carousel.component.scss +33 -5
- package/sass/src/components/email-input.component.scss +6 -6
- package/sass/src/components/loader.component.scss +25 -7
- package/sass/src/components/picker.component.scss +45 -14
- package/sass/src/components/word-cloud.component.scss +2 -2
- package/sass/src/components/word.component.scss +3 -2
- package/sass/src/mixins/_border-radius.scss +8 -8
- package/sass/src/mixins/_buttons.scss +12 -4
- package/sass/src/mixins/_clearfix.scss +8 -8
- package/sass/src/mixins/_dropdowns.scss +2 -2
- package/sass/src/mixins/_forms.scss +60 -39
- package/sass/src/mixins/_grid-framework.scss +53 -56
- package/sass/src/mixins/_grid.scss +71 -71
- package/sass/src/mixins/_mixins.scss +15 -15
- package/sass/src/mixins/_nav-divider.scss +6 -6
- package/sass/src/mixins/_nav-size.scss +1 -1
- package/sass/src/mixins/_pagination.scss +19 -19
- package/sass/src/mixins/_responsive-visibility.scss +16 -10
- package/sass/src/mixins/_scrollbars.scss +9 -5
- package/sass/src/mixins/_tab-focus.scss +10 -6
- package/sass/src/mixins/_text-emphasis.scss +7 -7
- package/sass/styles.scss +35 -35
- package/styles.css +1 -1
- package/tabs/README.md +4 -4
- package/tabs/index.d.ts +1 -12
- package/toasts/README.md +4 -4
- package/toasts/index.d.ts +1 -2
- package/tooltips/index.d.ts +1 -3
- package/word-cloud/index.d.ts +1 -2
package/autofocus/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { OnInit
|
|
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>;
|
package/carousel/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy, EventEmitter, ElementRef, QueryList,
|
|
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
|
|
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;
|
package/email-input/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { OnInit, OnDestroy, EventEmitter, ElementRef
|
|
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;
|
package/feature-alerts/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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 {
|
|
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(
|
|
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 +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 =
|
|
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(
|
|
6
|
-
this._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: [
|
|
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
|
-
}]
|
|
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
|
|
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(
|
|
30
|
-
this._renderer =
|
|
31
|
-
this._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 =
|
|
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: [
|
|
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
|
|
119
|
-
|
|
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
|
|
126
|
-
|
|
127
|
-
|
|
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
|
|
130
|
-
|
|
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
|
|
150
|
+
<div
|
|
151
|
+
class="carousel"
|
|
152
|
+
#carousel
|
|
153
|
+
[ngClass]="containerClass">
|
|
134
154
|
<ng-content></ng-content>
|
|
135
155
|
|
|
136
|
-
<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
|
|
141
|
-
|
|
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
|
|
148
|
-
|
|
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"] }],
|
|
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
|
|
170
|
-
|
|
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
|
|
177
|
-
|
|
178
|
-
|
|
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
|
|
181
|
-
|
|
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
|
|
228
|
+
<div
|
|
229
|
+
class="carousel"
|
|
230
|
+
#carousel
|
|
231
|
+
[ngClass]="containerClass">
|
|
185
232
|
<ng-content></ng-content>
|
|
186
233
|
|
|
187
|
-
<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
|
|
192
|
-
|
|
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
|
|
199
|
-
|
|
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
|
-
}],
|
|
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":";;;;;;MAMa,sBAAsB,CAAA;AAJnC,IAAA,WAAA,GAAA;QAOI,IAAA,CAAA,SAAS,GAAwC,OAAO;AAC3D,IAAA;+GAJY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE;AACb,iBAAA;;sBAEI,WAAW;uBAAC,yBAAyB;;sBACrC;;;MCgGQ,iBAAiB,CAAA;AA/E9B,IAAA,WAAA,GAAA;AAgFY,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEjC,IAAA,CAAA,iBAAiB,GAAY,IAAI;QACjC,IAAA,CAAA,cAAc,GAAY,IAAI;QAC9B,IAAA,CAAA,QAAQ,GAAY,IAAI;QACxB,IAAA,CAAA,SAAS,GAAW,SAAS;QAE7B,IAAA,CAAA,QAAQ,GAAW,CAAC;QACpB,IAAA,CAAA,aAAa,GAAW,YAAY;AAEnC,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,YAAY,EAAE;QAM5D,IAAA,CAAA,KAAK,GAAa,EAAE;AAqG9B,IAAA;IAhGG,QAAQ,GAAA;QACJ,IAAI,CAAC,uBAAuB,EAAE;IAClC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE;AACtF,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C;IACJ;IAEA,eAAe,GAAA;QACX,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C;IACJ;IAEA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAG;YAClD,IAAI,CAAC,WAAW,EAAE;AACtB,QAAA,CAAC,CAAC;IACN;IAEA,IAAI,GAAA;QACA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrE;IAEA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACjD;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACjC;AAEQ,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACnC,QAAA,MAAM,aAAa,GAAW,IAAI,CAAC,qBAAqB,CAAC,WAAW;AACpE,QAAA,MAAM,iBAAiB,GAAW,IAAI,GAAG,aAAa;AAEtD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,EAAE,iBAAiB,CAAC;IAC3F;IAEA,QAAQ,GAAA;QACJ,MAAM,cAAc,GAAW,CAAC,CAC5B,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EACjF,OAAO,CAAC,CAAC,CAAC;QACZ,MAAM,UAAU,GAAW,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAEpD,OAAO,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1D;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC/B;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAA+B;IACxD;AAEA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC;IAC9B;AAEA,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D;AAEA,IAAA,IAAI,UAAU,GAAA;QACV,OAAO;AACH,YAAA,oBAAoB,EAAE,CAAA,wCAAA,EAA2C,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG;AAClF,YAAA,kBAAkB,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA;SACxC;IACL;AAEA,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,CAAA,wCAAA,EAA2C,IAAI,CAAC,SAAS,GAAG;IACvE;IAEA,uBAAuB,GAAA;QACnB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ;AAC7C,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;aACtB,SAAS,CAAC,CAAC,IAAG;AACX,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,WAAW,EAAE;AACtB,QAAA,CAAC,CAAC;IACV;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACjC;+GAtHS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAgBT,sBAAsB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7F7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,oFAAE,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAE9B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA/E7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwET,IAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;AAC1C,iBAAA;;sBAKI;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAEtC,eAAe;uBAAC,sBAAsB;;;AClH3C;;;AAGG;MACU,mBAAmB,GAAG,CAAC,iBAAiB,EAAE,sBAAsB;;ACV7E;;AAEG;;;;"}
|