Skip to content

Commit e841401

Browse files
Merge pull request #16051 from IgniteUI/rivanova/feat-carousel-16046
feat(carousel): select slide by index
2 parents 4df9f17 + ae2ff02 commit e841401

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,17 @@
33
All notable changes for each version of this project will be documented in this file.
44

55
## 20.1.0
6+
### New Features
7+
- `IgxCarousel`
8+
- Added `select` method overload accepting index.
9+
```ts
10+
this.carousel.select(2, Direction.NEXT);
11+
```
12+
613
### General
714
- `IgxDropDown` now exposes a `role` input property, allowing users to customize the role attribute based on the use case. The default is `listbox`.
815

16+
917
## 20.0.6
1018
### General
1119
- `IgxSimpleCombo`

projects/igniteui-angular/src/lib/carousel/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ A walkthrough of how to get started can be found [here](https://www.infragistics
3434
| `next()` | void | Switches to the next slide. Emits `slideChanged` event. |
3535
| `add(slide: IgxSlide)` | void | Adds a slide to the carousel. Emits `slideAdded` event. |
3636
| `remove(slide: IgxSlide)` | void | Removes an existing slide from the carousel. Emits `slideRemoved` event. |
37-
| `get(index: Number)` | IgxSlide or void | Returns the slide with the given index or null. |
38-
| `select(slide: IgxSlide, direction: Direction)`| void | Selects the slide and the direction to transition to. Emits `slideChanged` event. |
37+
| `get(index: number)` | IgxSlide or void | Returns the slide with the given index or null. |
38+
| `select(slide: IgxSlide, direction: Direction)`| void | Switches to the passed-in slide with a given direction. Emits `slideChanged` event. |
39+
| `select(index: number, direction: Direction)`| void | Switches to slide by index with a given direction. Emits `slideChanged` event. |
3940

4041
### Keyboard navigation
4142

projects/igniteui-angular/src/lib/carousel/carousel.component.spec.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,27 @@ describe('Carousel', () => {
143143

144144
carousel.next();
145145
let currentSlide = carousel.get(carousel.current);
146-
147146
fixture.detectChanges();
148147
expect(carousel.get(1)).toBe(currentSlide);
149148

150149
currentSlide = carousel.get(0);
151150
carousel.prev();
152-
153151
fixture.detectChanges();
154152
expect(carousel.get(0)).toBe(currentSlide);
153+
154+
carousel.select(1);
155+
fixture.detectChanges();
156+
expect(carousel.get(1)).toBe(carousel.get(carousel.current));
157+
158+
// select a negative index -> active slide remains the same
159+
carousel.select(-1);
160+
fixture.detectChanges();
161+
expect(carousel.get(1)).toBe(carousel.get(carousel.current));
162+
163+
// select a non-existent index -> active slide remains the same
164+
carousel.select(carousel.slides.length);
165+
fixture.detectChanges();
166+
expect(carousel.get(1)).toBe(carousel.get(carousel.current));
155167
});
156168

157169
it('emit events', () => {

projects/igniteui-angular/src/lib/carousel/carousel.component.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -816,14 +816,29 @@ export class IgxCarouselComponent extends IgxCarouselComponentBase implements On
816816
}
817817

818818
/**
819-
* Kicks in a transition for a given slide with a given `direction`.
819+
* Switches to the passed-in slide with a given `direction`.
820820
* ```typescript
821-
* this.carousel.select(this.carousel.get(2), Direction.NEXT);
821+
* const slide = this.carousel.get(2);
822+
* this.carousel.select(slide, Direction.NEXT);
822823
* ```
823824
*
824825
* @memberOf IgxCarouselComponent
825826
*/
826-
public select(slide: IgxSlideComponent, direction: Direction = Direction.NONE) {
827+
public select(slide: IgxSlideComponent, direction?: Direction): void;
828+
/**
829+
* Switches to slide by index with a given `direction`.
830+
* ```typescript
831+
* this.carousel.select(2, Direction.NEXT);
832+
* ```
833+
*
834+
* @memberOf IgxCarouselComponent
835+
*/
836+
public select(index: number, direction?: Direction): void;
837+
public select(slideOrIndex: IgxSlideComponent | number, direction: Direction = Direction.NONE): void {
838+
const slide = typeof slideOrIndex === 'number'
839+
? this.get(slideOrIndex)
840+
: slideOrIndex;
841+
827842
if (slide && slide !== this.currentItem) {
828843
slide.direction = direction;
829844
slide.active = true;

0 commit comments

Comments
 (0)