@ifsworld/granite-components 16.1.2 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/carousel/index.d.ts +45 -2
- package/date-picker/index.d.ts +123 -4
- package/fesm2022/ifsworld-granite-components-carousel.mjs +11 -11
- package/fesm2022/ifsworld-granite-components-carousel.mjs.map +1 -1
- package/fesm2022/ifsworld-granite-components-date-picker.mjs +40 -53
- package/fesm2022/ifsworld-granite-components-date-picker.mjs.map +1 -1
- package/fesm2022/ifsworld-granite-components-file-upload.mjs +10 -10
- package/fesm2022/ifsworld-granite-components-file-upload.mjs.map +1 -1
- package/fesm2022/ifsworld-granite-components-table.mjs +29 -29
- package/fesm2022/ifsworld-granite-components-table.mjs.map +1 -1
- package/fesm2022/ifsworld-granite-components-tooltip.mjs +23 -24
- package/fesm2022/ifsworld-granite-components-tooltip.mjs.map +1 -1
- package/fesm2022/ifsworld-granite-components.mjs +480 -564
- package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
- package/file-upload/index.d.ts +99 -2
- package/index.d.ts +1981 -86
- package/package.json +8 -8
- package/table/index.d.ts +112 -4
- package/tooltip/index.d.ts +50 -3
- package/carousel/lib/carousel.component.d.ts +0 -34
- package/carousel/lib/carousel.module.d.ts +0 -10
- package/date-picker/lib/date-picker-base.d.ts +0 -34
- package/date-picker/lib/date-picker-trigger-for.directive.d.ts +0 -70
- package/date-picker/lib/date-picker.component.d.ts +0 -10
- package/date-picker/lib/date-picker.module.d.ts +0 -15
- package/date-picker/lib/date-range-picker.component.d.ts +0 -12
- package/file-upload/lib/directives/file-drag-and-drop.directive.d.ts +0 -18
- package/file-upload/lib/file-upload.component.d.ts +0 -51
- package/file-upload/lib/file-upload.constants.d.ts +0 -37
- package/file-upload/lib/file-upload.module.d.ts +0 -11
- package/file-upload/lib/file-upload.utils.d.ts +0 -1
- package/lib/arrange-grid/arrange-grid-item.component.d.ts +0 -30
- package/lib/arrange-grid/arrange-grid.component.d.ts +0 -58
- package/lib/arrange-grid/arrange-grid.module.d.ts +0 -9
- package/lib/avatar/avatar-default-status/avatar-default-status.component.d.ts +0 -15
- package/lib/avatar/avatar.component.d.ts +0 -23
- package/lib/avatar/avatar.component.public-types.d.ts +0 -7
- package/lib/avatar/avatar.module.d.ts +0 -11
- package/lib/avatar/custom-avatar-status.directive.d.ts +0 -9
- package/lib/avatar/empty-avatar/empty-avatar.component.d.ts +0 -7
- package/lib/badge/badge.component.d.ts +0 -19
- package/lib/badge/badge.module.d.ts +0 -8
- package/lib/badge/testing/badge.harness.d.ts +0 -21
- package/lib/button/button.component.d.ts +0 -38
- package/lib/button/button.module.d.ts +0 -7
- package/lib/card-list/card/card-avatar.component.d.ts +0 -5
- package/lib/card-list/card/card-content/card-actions.component.d.ts +0 -5
- package/lib/card-list/card/card-content/card-body.component.d.ts +0 -5
- package/lib/card-list/card/card-content/card-content.component.d.ts +0 -5
- package/lib/card-list/card/card-content/card-footer.component.d.ts +0 -5
- package/lib/card-list/card/card-content/card-header-subtitle.component.d.ts +0 -5
- package/lib/card-list/card/card-content/card-header-title.component.d.ts +0 -5
- package/lib/card-list/card/card-content/card-header.component.d.ts +0 -5
- package/lib/card-list/card/card.component.d.ts +0 -5
- package/lib/card-list/card-list.component.d.ts +0 -9
- package/lib/card-list/card-list.module.d.ts +0 -18
- package/lib/checkbox/checkbox-group.component.d.ts +0 -6
- package/lib/checkbox/checkbox.component.d.ts +0 -29
- package/lib/checkbox/checkbox.module.d.ts +0 -8
- package/lib/chips/chip-input.d.ts +0 -89
- package/lib/chips/chip-list.component.d.ts +0 -185
- package/lib/chips/chip.component.d.ts +0 -104
- package/lib/chips/chips.module.d.ts +0 -12
- package/lib/collapsible-group/collapsible-group-body.directive.d.ts +0 -7
- package/lib/collapsible-group/collapsible-group-header.directive.d.ts +0 -7
- package/lib/collapsible-group/collapsible-group.component.d.ts +0 -16
- package/lib/collapsible-group/collapsible-group.module.d.ts +0 -11
- package/lib/contacts/contact-item/contact-item.component.d.ts +0 -11
- package/lib/contacts/contact-item-default-status/contact-item-default-status.component.d.ts +0 -15
- package/lib/contacts/contact-item-title/contact-item-title.component.d.ts +0 -7
- package/lib/contacts/contacts-profile/contacts-profile.component.d.ts +0 -8
- package/lib/contacts/contacts-trigger/contacts-trigger-data.d.ts +0 -23
- package/lib/contacts/contacts-trigger/contacts-trigger-for.directive.d.ts +0 -69
- package/lib/contacts/contacts-types/contacts.component.private-types.d.ts +0 -8
- package/lib/contacts/contacts-types/contacts.component.public-types.d.ts +0 -30
- package/lib/contacts/contacts.component.d.ts +0 -29
- package/lib/contacts/contacts.module.d.ts +0 -17
- package/lib/contacts/custom-profile.directive.d.ts +0 -8
- package/lib/contacts/custom-status.directive.d.ts +0 -9
- package/lib/core/animation.d.ts +0 -23
- package/lib/core/client-environment.d.ts +0 -26
- package/lib/core/common-behaviors/disabled.d.ts +0 -10
- package/lib/core/core.module.d.ts +0 -12
- package/lib/core/devices/client-input-desktop.directive.d.ts +0 -9
- package/lib/core/devices/client-input-touch.directive.d.ts +0 -9
- package/lib/core/devices/client-output-desktop.directive.d.ts +0 -9
- package/lib/core/devices/client-output-touch.directive.d.ts +0 -9
- package/lib/core/hide-on-overflow.directive.d.ts +0 -21
- package/lib/core/overlay-base.d.ts +0 -16
- package/lib/core/overlay-position-config.d.ts +0 -12
- package/lib/core/overlay-trigger-for-base.directive.d.ts +0 -32
- package/lib/core/overlay.service.d.ts +0 -21
- package/lib/core/pipes/pure-pipes.module.d.ts +0 -7
- package/lib/core/pipes/title.pipe.d.ts +0 -7
- package/lib/core/radio-checkbox-base.d.ts +0 -8
- package/lib/core/services/names-utils-service.d.ts +0 -17
- package/lib/core/theme.library.d.ts +0 -38
- package/lib/core/types.d.ts +0 -2
- package/lib/grid/grid.component.d.ts +0 -75
- package/lib/grid/grid.module.d.ts +0 -8
- package/lib/icon/icon.component.d.ts +0 -13
- package/lib/icon/icon.module.d.ts +0 -7
- package/lib/input-field/input-field.component.d.ts +0 -48
- package/lib/input-field/input-field.module.d.ts +0 -10
- package/lib/label/label.component.d.ts +0 -10
- package/lib/label/label.module.d.ts +0 -8
- package/lib/menu/divider.directive.d.ts +0 -6
- package/lib/menu/menu-base.d.ts +0 -219
- package/lib/menu/menu-custom-template.directive.d.ts +0 -14
- package/lib/menu/menu-desktop-animations.d.ts +0 -12
- package/lib/menu/menu-errors.d.ts +0 -24
- package/lib/menu/menu-item.component.d.ts +0 -36
- package/lib/menu/menu-panel.d.ts +0 -23
- package/lib/menu/menu-positions.d.ts +0 -9
- package/lib/menu/menu-touch-animations.d.ts +0 -17
- package/lib/menu/menu-touch-close.component.d.ts +0 -5
- package/lib/menu/menu-touch-title.component.d.ts +0 -14
- package/lib/menu/menu-trigger-for.directive.d.ts +0 -200
- package/lib/menu/menu.component.d.ts +0 -6
- package/lib/menu/menu.module.d.ts +0 -18
- package/lib/menu/testing/menu.harness.d.ts +0 -68
- package/lib/menu/title.directive.d.ts +0 -5
- package/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.d.ts +0 -8
- package/lib/progress-bar/progress-bar-legend-base.d.ts +0 -8
- package/lib/progress-bar/progress-bar-legend-trigger-for.directive.d.ts +0 -18
- package/lib/progress-bar/progress-bar.component.d.ts +0 -28
- package/lib/progress-bar/progress-bar.model.d.ts +0 -11
- package/lib/progress-bar/progress-bar.module.d.ts +0 -14
- package/lib/radio-button/radio-button.component.d.ts +0 -34
- package/lib/radio-button/radio-button.module.d.ts +0 -8
- package/lib/radio-button/radio-group.component.d.ts +0 -6
- package/lib/toggle-switch/toggle-switch.component.d.ts +0 -29
- package/lib/toggle-switch/toggle-switch.module.d.ts +0 -7
- package/table/lib/cell/cell-align/cell-align-classes.directive.d.ts +0 -9
- package/table/lib/cell/cell.d.ts +0 -8
- package/table/lib/cell/table-data-cell.component.d.ts +0 -12
- package/table/lib/cell/table-header-cell.component.d.ts +0 -6
- package/table/lib/column/table-column.directive.d.ts +0 -23
- package/table/lib/column-size/column-size.directive.d.ts +0 -11
- package/table/lib/table-constants.library.d.ts +0 -6
- package/table/lib/table.component.d.ts +0 -26
- package/table/lib/table.model.d.ts +0 -6
- package/table/lib/table.module.d.ts +0 -16
- package/tooltip/lib/Services/granite-tooltip.service.d.ts +0 -10
- package/tooltip/lib/tooltip-constants.library.d.ts +0 -4
- package/tooltip/lib/tooltip-trigger-for.directive.d.ts +0 -39
- package/tooltip/lib/tooltip.component.d.ts +0 -7
- package/tooltip/lib/tooltip.module.d.ts +0 -9
package/README.md
CHANGED
|
@@ -44,8 +44,6 @@ Finally, add them in `src/styles.scss`:
|
|
|
44
44
|
|
|
45
45
|
[StackBlitz Example](https://stackblitz.com/edit/angular-ivy-zcgdkv?file=src/app/app.component.html)
|
|
46
46
|
|
|
47
|
-
**Note: currrently there's an issue with the _Ivy compiler_. To get the project to work, the Ivy Compiler must be set to disabled in `tsconfig.json`!**
|
|
48
|
-
|
|
49
47
|
### Support
|
|
50
48
|
|
|
51
49
|
_Note: we only support our latest release. Beyond that we make no guarantees of continued support. Make sure to stay up to date._
|
package/carousel/index.d.ts
CHANGED
|
@@ -1,2 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnChanges, AfterViewInit, OnDestroy, TemplateRef, SimpleChanges } from '@angular/core';
|
|
3
|
+
import * as i3 from 'primeng/carousel';
|
|
4
|
+
import { CarouselResponsiveOptions, Carousel } from 'primeng/carousel';
|
|
5
|
+
import * as i2 from '@angular/common';
|
|
6
|
+
import * as i4 from '@ifsworld/granite-components';
|
|
7
|
+
|
|
8
|
+
declare class GraniteCarouselComponent<T> implements OnChanges, AfterViewInit, OnDestroy {
|
|
9
|
+
items: T[];
|
|
10
|
+
responsiveOptions: CarouselResponsiveOptions[];
|
|
11
|
+
numVisible: number;
|
|
12
|
+
numScroll: number;
|
|
13
|
+
circular: boolean;
|
|
14
|
+
prevButtonAriaLabel: string;
|
|
15
|
+
nextButtonAriaLabel: string;
|
|
16
|
+
shrinkToContent: boolean;
|
|
17
|
+
itemTemplateRef: TemplateRef<any>;
|
|
18
|
+
carousel: Carousel;
|
|
19
|
+
visibleItems: T[];
|
|
20
|
+
isOneItemVisible: boolean;
|
|
21
|
+
private cdr;
|
|
22
|
+
private resizeObserver;
|
|
23
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
24
|
+
ngAfterViewInit(): void;
|
|
25
|
+
onResize(): void;
|
|
26
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
27
|
+
navForward(event: MouseEvent): void;
|
|
28
|
+
navBackward(event: MouseEvent): void;
|
|
29
|
+
ngOnDestroy(): void;
|
|
30
|
+
private triggerUpdate;
|
|
31
|
+
private handleResize;
|
|
32
|
+
private getDisplayItems;
|
|
33
|
+
private updateVisibleItems;
|
|
34
|
+
private updateNumVisibleBasedOnWidth;
|
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GraniteCarouselComponent<any>, never>;
|
|
36
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GraniteCarouselComponent<any>, "granite-carousel", never, { "items": { "alias": "items"; "required": false; }; "responsiveOptions": { "alias": "responsiveOptions"; "required": false; }; "numVisible": { "alias": "numVisible"; "required": false; }; "numScroll": { "alias": "numScroll"; "required": false; }; "circular": { "alias": "circular"; "required": false; }; "prevButtonAriaLabel": { "alias": "prevButtonAriaLabel"; "required": false; }; "nextButtonAriaLabel": { "alias": "nextButtonAriaLabel"; "required": false; }; "shrinkToContent": { "alias": "shrinkToContent"; "required": false; }; }, {}, ["itemTemplateRef"], never, false, never>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare class GraniteCarouselModule {
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GraniteCarouselModule, never>;
|
|
41
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<GraniteCarouselModule, [typeof GraniteCarouselComponent], [typeof i2.CommonModule, typeof i3.CarouselModule, typeof i4.GraniteButtonModule, typeof i4.GraniteIconModule], [typeof GraniteCarouselComponent]>;
|
|
42
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<GraniteCarouselModule>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { GraniteCarouselComponent, GraniteCarouselModule };
|
package/date-picker/index.d.ts
CHANGED
|
@@ -1,4 +1,123 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnInit, EventEmitter, TemplateRef, ElementRef, OnChanges, SimpleChanges, AfterContentInit, OnDestroy } from '@angular/core';
|
|
3
|
+
import { Direction } from '@angular/cdk/bidi';
|
|
4
|
+
import * as i8 from '@ifsworld/granite-components';
|
|
5
|
+
import { ClientInputInterface, ClientOutputInterface } from '@ifsworld/granite-components';
|
|
6
|
+
import { PrimeNG } from 'primeng/config';
|
|
7
|
+
import * as i9 from '@angular/cdk/a11y';
|
|
8
|
+
import { FocusOrigin } from '@angular/cdk/a11y';
|
|
9
|
+
import * as i4 from '@angular/common';
|
|
10
|
+
import * as i5 from '@angular/cdk/overlay';
|
|
11
|
+
import * as i6 from 'primeng/datepicker';
|
|
12
|
+
import * as i7 from '@angular/forms';
|
|
13
|
+
|
|
14
|
+
type PositionX = 'before' | 'after';
|
|
15
|
+
type PositionY = 'above' | 'below';
|
|
16
|
+
/** Base class with common functionality for date/date-range pickers. */
|
|
17
|
+
declare class _DatePickerBase implements OnInit {
|
|
18
|
+
minDate: Date | null;
|
|
19
|
+
maxDate: Date | null;
|
|
20
|
+
firstDayOfWeek: number;
|
|
21
|
+
readonly pickerClosed: EventEmitter<any>;
|
|
22
|
+
templateRef: TemplateRef<any>;
|
|
23
|
+
_elementRef: ElementRef<any>;
|
|
24
|
+
primeNG: PrimeNG;
|
|
25
|
+
xPosition: PositionX;
|
|
26
|
+
yPosition: PositionY;
|
|
27
|
+
direction: Direction;
|
|
28
|
+
/**
|
|
29
|
+
* Used for locating the panel in tests and setting the aria-control attribute
|
|
30
|
+
* for the picker trigger.
|
|
31
|
+
*/
|
|
32
|
+
readonly panelId: string;
|
|
33
|
+
/** Client input device information */
|
|
34
|
+
clientInput: ClientInputInterface;
|
|
35
|
+
/** Client output device information */
|
|
36
|
+
clientOutput: ClientOutputInterface;
|
|
37
|
+
ngOnInit(): void;
|
|
38
|
+
_handleKeydown(event: KeyboardEvent): void;
|
|
39
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<_DatePickerBase, never>;
|
|
40
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<_DatePickerBase, never, never, { "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; }, { "pickerClosed": "pickerClosed"; }, never, never, false, never>;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
declare class GraniteDatePickerComponent extends _DatePickerBase {
|
|
44
|
+
selectedDate: Date | undefined;
|
|
45
|
+
readonly selectionChanged: EventEmitter<Date>;
|
|
46
|
+
dateSelectionChanged(newDate: Date): void;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDatePickerComponent, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GraniteDatePickerComponent, "granite-date-picker", never, { "selectedDate": { "alias": "selectedDate"; "required": false; }; }, { "selectionChanged": "selectionChanged"; }, never, never, false, never>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
declare class GraniteDateRangePickerComponent extends _DatePickerBase implements OnChanges {
|
|
52
|
+
selectedDateRange: Date[];
|
|
53
|
+
readonly selectionChanged: EventEmitter<Date[]>;
|
|
54
|
+
_selectedDateRangeInternal: Date[];
|
|
55
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
56
|
+
dateRangeSelectionChanged(date: Date): void;
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDateRangePickerComponent, never>;
|
|
58
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GraniteDateRangePickerComponent, "granite-date-range-picker", never, { "selectedDateRange": { "alias": "selectedDateRange"; "required": false; }; }, { "selectionChanged": "selectionChanged"; }, never, never, false, never>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
declare class GraniteDatePickerTriggerForDirective implements AfterContentInit, OnDestroy {
|
|
62
|
+
/** References the picker instance that the trigger is associated with. */
|
|
63
|
+
picker: GraniteDatePickerComponent | GraniteDateRangePickerComponent;
|
|
64
|
+
_clientInput: ClientInputInterface;
|
|
65
|
+
_clientOutput: ClientOutputInterface;
|
|
66
|
+
/** Whether the associated picker is open */
|
|
67
|
+
_isPickerOpen: boolean;
|
|
68
|
+
private _overlay;
|
|
69
|
+
private _element;
|
|
70
|
+
private _viewContainerRef;
|
|
71
|
+
private _outsideClickDispatcher;
|
|
72
|
+
private _dir;
|
|
73
|
+
private _focusMonitor;
|
|
74
|
+
private _pickerCloseSubscription;
|
|
75
|
+
private _portal;
|
|
76
|
+
private _overlayRef;
|
|
77
|
+
ngAfterContentInit(): void;
|
|
78
|
+
ngOnDestroy(): void;
|
|
79
|
+
isOpen(): boolean;
|
|
80
|
+
openPicker(): void;
|
|
81
|
+
/** Toggles the picker between the open and closed states. */
|
|
82
|
+
togglePicker(): void;
|
|
83
|
+
/** Close the associated picker */
|
|
84
|
+
closePicker(): void;
|
|
85
|
+
/** Handles key presses on the trigger. */
|
|
86
|
+
_handleKeydown(event: KeyboardEvent): void;
|
|
87
|
+
/** Handles click events on the trigger. */
|
|
88
|
+
_handleClick(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Restores focus to the element that was focused before the picker was open.
|
|
91
|
+
*/
|
|
92
|
+
_restoreFocus(origin?: FocusOrigin, options?: FocusOptions): void;
|
|
93
|
+
/**
|
|
94
|
+
* Returns strategy for positioning the overlay for desktop devices:
|
|
95
|
+
*/
|
|
96
|
+
private _desktopPositionStrategy;
|
|
97
|
+
/**
|
|
98
|
+
* Sets the appropriate positions on a position strategy
|
|
99
|
+
* so the overlay connects with the trigger correctly.
|
|
100
|
+
* @param positionStrategy Strategy whose position to update.
|
|
101
|
+
*/
|
|
102
|
+
private _setPosition;
|
|
103
|
+
/**
|
|
104
|
+
* Returns strategy for positioning the overlay depending on what type of
|
|
105
|
+
* device the picker is being shown on
|
|
106
|
+
*/
|
|
107
|
+
private _positionStrategy;
|
|
108
|
+
/**
|
|
109
|
+
* Returns strategy for positioning the overlay for touch devices:
|
|
110
|
+
* Place centered in the screen.
|
|
111
|
+
*/
|
|
112
|
+
private _touchPositionStrategy;
|
|
113
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDatePickerTriggerForDirective, never>;
|
|
114
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<GraniteDatePickerTriggerForDirective, "[graniteDatePickerTriggerFor]", never, { "picker": { "alias": "graniteDatePickerTriggerFor"; "required": false; }; }, {}, never, never, false, never>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare class GraniteDatePickerModule {
|
|
118
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDatePickerModule, never>;
|
|
119
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<GraniteDatePickerModule, [typeof GraniteDatePickerComponent, typeof GraniteDateRangePickerComponent, typeof GraniteDatePickerTriggerForDirective], [typeof i4.CommonModule, typeof i5.OverlayModule, typeof i6.DatePickerModule, typeof i7.FormsModule, typeof i8.GraniteIconModule, typeof i8.GraniteButtonModule, typeof i9.A11yModule], [typeof GraniteDatePickerComponent, typeof GraniteDateRangePickerComponent, typeof GraniteDatePickerTriggerForDirective]>;
|
|
120
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<GraniteDatePickerModule>;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export { GraniteDatePickerComponent, GraniteDatePickerModule, GraniteDatePickerTriggerForDirective, GraniteDateRangePickerComponent };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { HostListener, ViewChild, ContentChild, Input, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, ChangeDetectorRef, HostListener, ViewChild, ContentChild, Input, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i2 from 'primeng/carousel';
|
|
@@ -9,8 +9,7 @@ import * as i4 from '@ifsworld/granite-components';
|
|
|
9
9
|
import { GraniteButtonModule, GraniteIconModule } from '@ifsworld/granite-components';
|
|
10
10
|
|
|
11
11
|
class GraniteCarouselComponent {
|
|
12
|
-
constructor(
|
|
13
|
-
this.cdr = cdr;
|
|
12
|
+
constructor() {
|
|
14
13
|
this.items = [];
|
|
15
14
|
this.responsiveOptions = [
|
|
16
15
|
{
|
|
@@ -37,6 +36,7 @@ class GraniteCarouselComponent {
|
|
|
37
36
|
this.shrinkToContent = false;
|
|
38
37
|
this.visibleItems = [];
|
|
39
38
|
this.isOneItemVisible = false;
|
|
39
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
40
40
|
}
|
|
41
41
|
ngOnChanges(changes) {
|
|
42
42
|
if (changes['items'] && changes['items'].currentValue) {
|
|
@@ -124,13 +124,13 @@ class GraniteCarouselComponent {
|
|
|
124
124
|
}
|
|
125
125
|
this.updateVisibleItems();
|
|
126
126
|
}
|
|
127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GraniteCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: GraniteCarouselComponent, isStandalone: false, selector: "granite-carousel", inputs: { items: "items", responsiveOptions: "responsiveOptions", numVisible: "numVisible", numScroll: "numScroll", circular: "circular", prevButtonAriaLabel: "prevButtonAriaLabel", nextButtonAriaLabel: "nextButtonAriaLabel", shrinkToContent: "shrinkToContent" }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "itemTemplateRef", first: true, predicate: ["itemTemplate"], descendants: true }], viewQueries: [{ propertyName: "carousel", first: true, predicate: ["carousel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"carousel-wrapper\">\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isBackwardNavDisabled()\"\n [attr.aria-label]=\"prevButtonAriaLabel\"\n (click)=\"navBackward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-left\"></granite-icon>\n </button>\n\n <p-carousel\n #carousel\n [value]=\"visibleItems\"\n [numVisible]=\"numVisible\"\n [numScroll]=\"numScroll\"\n [circular]=\"circular\"\n [responsiveOptions]=\"responsiveOptions\"\n [showNavigators]=\"false\"\n [showIndicators]=\"false\"\n [class.auto-width]=\"shrinkToContent\"\n [class.is-one-item]=\"isOneItemVisible\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"item-template-wrapper\" *ngIf=\"!item.placeholder\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplateRef; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-template>\n </p-carousel>\n\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isForwardNavDisabled()\"\n [attr.aria-label]=\"nextButtonAriaLabel\"\n (click)=\"navForward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-right\"></granite-icon>\n </button>\n</div>\n", styles: [":host{width:100%;overflow:hidden}.carousel-wrapper{display:flex;justify-content:center;align-items:center;gap:var(--granite-spacing-8);padding:var(--granite-spacing-8);width:100%;max-width:100%;overflow:hidden;box-sizing:border-box}p-carousel{flex:1;min-width:0}p-carousel .item-template-wrapper{margin:var(--granite-spacing-4)}.arrow-btn{width:calc(var(--granite-size-base-rem) * 2);height:calc(var(--granite-size-base-rem) * 2)}.arrow-btn granite-icon{font-size:var(--granite-font-size-body);position:relative;top:0}::ng-deep .auto-width .p-carousel-item{flex:0 0 auto!important}::ng-deep .is-one-item .p-carousel-item{flex:1 0 100%!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.Carousel, selector: "p-carousel", inputs: ["page", "numVisible", "numScroll", "responsiveOptions", "orientation", "verticalViewPortHeight", "contentClass", "indicatorsContentClass", "indicatorsContentStyle", "indicatorStyleClass", "indicatorStyle", "value", "circular", "showIndicators", "showNavigators", "autoplayInterval", "styleClass", "prevButtonProps", "nextButtonProps"], outputs: ["onPage"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.GraniteButtonComponent, selector: "button[graniteButton], button[granitePrimaryButton], button[graniteFlatButton], button[graniteToolbarButton] ", inputs: ["disabled", "toggled"], exportAs: ["graniteButton"] }, { kind: "component", type: i4.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
129
129
|
}
|
|
130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GraniteCarouselComponent, decorators: [{
|
|
131
131
|
type: Component,
|
|
132
132
|
args: [{ selector: 'granite-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"carousel-wrapper\">\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isBackwardNavDisabled()\"\n [attr.aria-label]=\"prevButtonAriaLabel\"\n (click)=\"navBackward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-left\"></granite-icon>\n </button>\n\n <p-carousel\n #carousel\n [value]=\"visibleItems\"\n [numVisible]=\"numVisible\"\n [numScroll]=\"numScroll\"\n [circular]=\"circular\"\n [responsiveOptions]=\"responsiveOptions\"\n [showNavigators]=\"false\"\n [showIndicators]=\"false\"\n [class.auto-width]=\"shrinkToContent\"\n [class.is-one-item]=\"isOneItemVisible\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"item-template-wrapper\" *ngIf=\"!item.placeholder\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplateRef; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-template>\n </p-carousel>\n\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isForwardNavDisabled()\"\n [attr.aria-label]=\"nextButtonAriaLabel\"\n (click)=\"navForward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-right\"></granite-icon>\n </button>\n</div>\n", styles: [":host{width:100%;overflow:hidden}.carousel-wrapper{display:flex;justify-content:center;align-items:center;gap:var(--granite-spacing-8);padding:var(--granite-spacing-8);width:100%;max-width:100%;overflow:hidden;box-sizing:border-box}p-carousel{flex:1;min-width:0}p-carousel .item-template-wrapper{margin:var(--granite-spacing-4)}.arrow-btn{width:calc(var(--granite-size-base-rem) * 2);height:calc(var(--granite-size-base-rem) * 2)}.arrow-btn granite-icon{font-size:var(--granite-font-size-body);position:relative;top:0}::ng-deep .auto-width .p-carousel-item{flex:0 0 auto!important}::ng-deep .is-one-item .p-carousel-item{flex:1 0 100%!important}\n"] }]
|
|
133
|
-
}],
|
|
133
|
+
}], propDecorators: { items: [{
|
|
134
134
|
type: Input
|
|
135
135
|
}], responsiveOptions: [{
|
|
136
136
|
type: Input
|
|
@@ -158,17 +158,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
158
158
|
}] } });
|
|
159
159
|
|
|
160
160
|
class GraniteCarouselModule {
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
162
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
161
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GraniteCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
162
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: GraniteCarouselModule, declarations: [GraniteCarouselComponent], imports: [CommonModule,
|
|
163
163
|
CarouselModule,
|
|
164
164
|
GraniteButtonModule,
|
|
165
165
|
GraniteIconModule], exports: [GraniteCarouselComponent] }); }
|
|
166
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
166
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GraniteCarouselModule, imports: [CommonModule,
|
|
167
167
|
CarouselModule,
|
|
168
168
|
GraniteButtonModule,
|
|
169
169
|
GraniteIconModule] }); }
|
|
170
170
|
}
|
|
171
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GraniteCarouselModule, decorators: [{
|
|
172
172
|
type: NgModule,
|
|
173
173
|
args: [{
|
|
174
174
|
declarations: [GraniteCarouselComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifsworld-granite-components-carousel.mjs","sources":["../../../../libs/granite-components/carousel/src/lib/carousel.component.ts","../../../../libs/granite-components/carousel/src/lib/carousel.component.html","../../../../libs/granite-components/carousel/src/lib/carousel.module.ts","../../../../libs/granite-components/carousel/src/ifsworld-granite-components-carousel.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { Carousel, CarouselResponsiveOptions } from 'primeng/carousel';\n\n@Component({\n selector: 'granite-carousel',\n templateUrl: './carousel.component.html',\n styleUrl: './carousel.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class GraniteCarouselComponent<T>\n implements OnChanges, AfterViewInit, OnDestroy\n{\n @Input()\n items: T[] = [];\n\n @Input()\n responsiveOptions: CarouselResponsiveOptions[] = [\n {\n breakpoint: '1024px',\n numVisible: 3,\n numScroll: 1,\n },\n {\n breakpoint: '768px',\n numVisible: 2,\n numScroll: 1,\n },\n {\n breakpoint: '560px',\n numVisible: 1,\n numScroll: 1,\n },\n ];\n\n @Input()\n numVisible: number = 1;\n\n @Input()\n numScroll: number = 1;\n\n @Input()\n circular: boolean = false;\n\n @Input()\n prevButtonAriaLabel: string = 'Previous page';\n\n @Input()\n nextButtonAriaLabel: string = 'Next page';\n\n @Input()\n shrinkToContent: boolean = false;\n\n @ContentChild('itemTemplate', { static: false })\n itemTemplateRef: TemplateRef<any>;\n\n @ViewChild('carousel')\n carousel: Carousel;\n\n visibleItems: T[] = [];\n isOneItemVisible: boolean = false;\n\n private resizeObserver: ResizeObserver;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && changes['items'].currentValue) {\n this.items = changes['items'].currentValue;\n this.triggerUpdate();\n }\n }\n\n ngAfterViewInit(): void {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver((entries) => {\n this.handleResize(entries);\n });\n\n this.resizeObserver.observe(this.carousel?.el?.nativeElement);\n }\n }\n\n @HostListener('window:resize')\n onResize(): void {\n this.triggerUpdate();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const mouseEvent = new MouseEvent('click', { cancelable: true });\n if (event.key === 'ArrowRight') {\n this.navForward(mouseEvent);\n } else if (event.key === 'ArrowLeft') {\n this.navBackward(mouseEvent);\n }\n }\n\n navForward(event: MouseEvent): void {\n this.carousel?.navForward(event);\n }\n\n navBackward(event: MouseEvent): void {\n this.carousel?.navBackward(event);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private triggerUpdate(): void {\n if (this.carousel?.el?.nativeElement) {\n const containerWidth = this.carousel.el.nativeElement.offsetWidth;\n this.updateNumVisibleBasedOnWidth(containerWidth);\n } else {\n this.updateVisibleItems();\n }\n }\n\n private handleResize(entries: ResizeObserverEntry[]): void {\n entries.forEach((entry) => {\n if (entry.contentRect) {\n const containerWidth = entry.contentRect.width;\n this.updateNumVisibleBasedOnWidth(containerWidth);\n }\n });\n }\n\n private getDisplayItems(items: T[], numVisible: number): T[] {\n const placeholders = Array(Math.max(0, numVisible - items.length)).fill({\n placeholder: true,\n });\n\n return [...items, ...placeholders];\n }\n\n private updateVisibleItems(): void {\n if (!this.items || !this.carousel) return;\n\n const numVisible = this.carousel.numVisible || this.numVisible;\n this.visibleItems = this.getDisplayItems(this.items, numVisible);\n this.cdr.markForCheck();\n }\n\n private updateNumVisibleBasedOnWidth(containerWidth: number): void {\n if (!this.carousel) return;\n\n let matched: boolean = false;\n const sortedResponsiveOptions = [...this.responsiveOptions].sort(\n (a, b) => parseInt(a.breakpoint) - parseInt(b.breakpoint)\n );\n\n if (containerWidth) {\n for (const option of sortedResponsiveOptions) {\n const breakpoint = parseInt(option.breakpoint);\n\n if (containerWidth <= breakpoint) {\n this.carousel.numVisible = option.numVisible;\n this.isOneItemVisible = option.numVisible === 1;\n matched = true;\n break;\n }\n }\n }\n\n if (!matched) {\n this.carousel.numVisible = this.numVisible;\n }\n\n this.updateVisibleItems();\n }\n}\n","<div class=\"carousel-wrapper\">\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isBackwardNavDisabled()\"\n [attr.aria-label]=\"prevButtonAriaLabel\"\n (click)=\"navBackward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-left\"></granite-icon>\n </button>\n\n <p-carousel\n #carousel\n [value]=\"visibleItems\"\n [numVisible]=\"numVisible\"\n [numScroll]=\"numScroll\"\n [circular]=\"circular\"\n [responsiveOptions]=\"responsiveOptions\"\n [showNavigators]=\"false\"\n [showIndicators]=\"false\"\n [class.auto-width]=\"shrinkToContent\"\n [class.is-one-item]=\"isOneItemVisible\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"item-template-wrapper\" *ngIf=\"!item.placeholder\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplateRef; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-template>\n </p-carousel>\n\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isForwardNavDisabled()\"\n [attr.aria-label]=\"nextButtonAriaLabel\"\n (click)=\"navForward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-right\"></granite-icon>\n </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GraniteCarouselComponent } from './carousel.component';\nimport { CarouselModule } from 'primeng/carousel';\nimport {\n GraniteIconModule,\n GraniteButtonModule,\n} from '@ifsworld/granite-components';\n\n@NgModule({\n declarations: [GraniteCarouselComponent],\n exports: [GraniteCarouselComponent],\n imports: [\n CommonModule,\n CarouselModule,\n GraniteButtonModule,\n GraniteIconModule,\n ],\n})\nexport class GraniteCarouselModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ifsworld-granite-components-carousel.mjs","sources":["../../../../libs/granite-components/carousel/src/lib/carousel.component.ts","../../../../libs/granite-components/carousel/src/lib/carousel.component.html","../../../../libs/granite-components/carousel/src/lib/carousel.module.ts","../../../../libs/granite-components/carousel/src/ifsworld-granite-components-carousel.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { Carousel, CarouselResponsiveOptions } from 'primeng/carousel';\n\n@Component({\n selector: 'granite-carousel',\n templateUrl: './carousel.component.html',\n styleUrl: './carousel.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class GraniteCarouselComponent<T>\n implements OnChanges, AfterViewInit, OnDestroy\n{\n @Input()\n items: T[] = [];\n\n @Input()\n responsiveOptions: CarouselResponsiveOptions[] = [\n {\n breakpoint: '1024px',\n numVisible: 3,\n numScroll: 1,\n },\n {\n breakpoint: '768px',\n numVisible: 2,\n numScroll: 1,\n },\n {\n breakpoint: '560px',\n numVisible: 1,\n numScroll: 1,\n },\n ];\n\n @Input()\n numVisible: number = 1;\n\n @Input()\n numScroll: number = 1;\n\n @Input()\n circular: boolean = false;\n\n @Input()\n prevButtonAriaLabel: string = 'Previous page';\n\n @Input()\n nextButtonAriaLabel: string = 'Next page';\n\n @Input()\n shrinkToContent: boolean = false;\n\n @ContentChild('itemTemplate', { static: false })\n itemTemplateRef: TemplateRef<any>;\n\n @ViewChild('carousel')\n carousel: Carousel;\n\n visibleItems: T[] = [];\n isOneItemVisible: boolean = false;\n\n private cdr = inject(ChangeDetectorRef);\n private resizeObserver: ResizeObserver;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && changes['items'].currentValue) {\n this.items = changes['items'].currentValue;\n this.triggerUpdate();\n }\n }\n\n ngAfterViewInit(): void {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver((entries) => {\n this.handleResize(entries);\n });\n\n this.resizeObserver.observe(this.carousel?.el?.nativeElement);\n }\n }\n\n @HostListener('window:resize')\n onResize(): void {\n this.triggerUpdate();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const mouseEvent = new MouseEvent('click', { cancelable: true });\n if (event.key === 'ArrowRight') {\n this.navForward(mouseEvent);\n } else if (event.key === 'ArrowLeft') {\n this.navBackward(mouseEvent);\n }\n }\n\n navForward(event: MouseEvent): void {\n this.carousel?.navForward(event);\n }\n\n navBackward(event: MouseEvent): void {\n this.carousel?.navBackward(event);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private triggerUpdate(): void {\n if (this.carousel?.el?.nativeElement) {\n const containerWidth = this.carousel.el.nativeElement.offsetWidth;\n this.updateNumVisibleBasedOnWidth(containerWidth);\n } else {\n this.updateVisibleItems();\n }\n }\n\n private handleResize(entries: ResizeObserverEntry[]): void {\n entries.forEach((entry) => {\n if (entry.contentRect) {\n const containerWidth = entry.contentRect.width;\n this.updateNumVisibleBasedOnWidth(containerWidth);\n }\n });\n }\n\n private getDisplayItems(items: T[], numVisible: number): T[] {\n const placeholders = Array(Math.max(0, numVisible - items.length)).fill({\n placeholder: true,\n });\n\n return [...items, ...placeholders];\n }\n\n private updateVisibleItems(): void {\n if (!this.items || !this.carousel) return;\n\n const numVisible = this.carousel.numVisible || this.numVisible;\n this.visibleItems = this.getDisplayItems(this.items, numVisible);\n this.cdr.markForCheck();\n }\n\n private updateNumVisibleBasedOnWidth(containerWidth: number): void {\n if (!this.carousel) return;\n\n let matched: boolean = false;\n const sortedResponsiveOptions = [...this.responsiveOptions].sort(\n (a, b) => parseInt(a.breakpoint) - parseInt(b.breakpoint)\n );\n\n if (containerWidth) {\n for (const option of sortedResponsiveOptions) {\n const breakpoint = parseInt(option.breakpoint);\n\n if (containerWidth <= breakpoint) {\n this.carousel.numVisible = option.numVisible;\n this.isOneItemVisible = option.numVisible === 1;\n matched = true;\n break;\n }\n }\n }\n\n if (!matched) {\n this.carousel.numVisible = this.numVisible;\n }\n\n this.updateVisibleItems();\n }\n}\n","<div class=\"carousel-wrapper\">\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isBackwardNavDisabled()\"\n [attr.aria-label]=\"prevButtonAriaLabel\"\n (click)=\"navBackward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-left\"></granite-icon>\n </button>\n\n <p-carousel\n #carousel\n [value]=\"visibleItems\"\n [numVisible]=\"numVisible\"\n [numScroll]=\"numScroll\"\n [circular]=\"circular\"\n [responsiveOptions]=\"responsiveOptions\"\n [showNavigators]=\"false\"\n [showIndicators]=\"false\"\n [class.auto-width]=\"shrinkToContent\"\n [class.is-one-item]=\"isOneItemVisible\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"item-template-wrapper\" *ngIf=\"!item.placeholder\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplateRef; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-template>\n </p-carousel>\n\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isForwardNavDisabled()\"\n [attr.aria-label]=\"nextButtonAriaLabel\"\n (click)=\"navForward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-right\"></granite-icon>\n </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GraniteCarouselComponent } from './carousel.component';\nimport { CarouselModule } from 'primeng/carousel';\nimport {\n GraniteIconModule,\n GraniteButtonModule,\n} from '@ifsworld/granite-components';\n\n@NgModule({\n declarations: [GraniteCarouselComponent],\n exports: [GraniteCarouselComponent],\n imports: [\n CommonModule,\n CarouselModule,\n GraniteButtonModule,\n GraniteIconModule,\n ],\n})\nexport class GraniteCarouselModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|