Skip to content

Commit c8903e6

Browse files
committed
Merge branch '8.2.x' of https://github.com/IgniteUI/igniteui-angular into mkirova/fix-5552-master
2 parents 8ce7b94 + 5bb569e commit c8903e6

File tree

77 files changed

+1182
-368
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1182
-368
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ Next example shows how you can use the Fluent theme.
2424
}
2525
```
2626

27+
### Theme Changes
28+
`igx-badge-theme` - Removed the `$disable-shadow` property to mitigate confusion when specifying `$shadow` explicitly.
29+
2730
For more information about the theming please read our [documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/themes/index.html)
2831

2932
### New Features
@@ -64,6 +67,8 @@ For more information about the theming please read our [documentation](https://w
6467
- introduced a new `readonly` property that doesn't allow user interaction to change the state, but keeps the default active style. Intended for integration in complex controls that handle the interaction and control the checkbox instead through binding.
6568
- `IgxOverlay`
6669
- introduced a new `ContainerPositionStrategy`. The new strategy positions the element inside the containing outlet based on the directions passed in trough PositionSettings.
70+
- `IgxChip`
71+
- add `onSelectionDone` event that is triggered after all animations and transitions related to selection have ended.
6772

6873
### General
6974
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"$schema": "../../common/schema/theme-props.schema.json",
3+
"changes": [{
4+
"name": "$disable-shadow",
5+
"remove": true,
6+
"owner": "igx-badge-theme"
7+
}]
8+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,6 @@ export class IgxButtonGroupComponent extends DisplayDensityBase implements After
280280

281281
/**
282282
* Selects a button by its index.
283-
* @memberOf {@link IgxButtonGroupComponent}
284283
*```typescript
285284
*@ViewChild("MyChild")
286285
*private buttonG: IgxButtonGroupComponent;
@@ -289,6 +288,7 @@ export class IgxButtonGroupComponent extends DisplayDensityBase implements After
289288
* this.cdr.detectChanges();
290289
*}
291290
*```
291+
* @memberOf {@link IgxButtonGroupComponent}
292292
*/
293293
public selectButton(index: number) {
294294
if (index >= this.buttons.length || index < 0) {
@@ -327,7 +327,6 @@ export class IgxButtonGroupComponent extends DisplayDensityBase implements After
327327

328328
/**
329329
* Deselects a button by its index.
330-
* @memberOf {@link IgxButtonGroupComponent}
331330
* ```typescript
332331
*@ViewChild("MyChild")
333332
*private buttonG: IgxButtonGroupComponent;
@@ -336,6 +335,7 @@ export class IgxButtonGroupComponent extends DisplayDensityBase implements After
336335
* this.cdr.detectChanges();
337336
*}
338337
* ```
338+
* @memberOf {@link IgxButtonGroupComponent}
339339
*/
340340
public deselectButton(index: number) {
341341
if (index >= this.buttons.length || index < 0) {

projects/igniteui-angular/src/lib/calendar/calendar-base.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { WEEKDAYS, Calendar, isDateInRanges, IFormattingOptions, IFormattingView
33
import { ControlValueAccessor } from '@angular/forms';
44
import { DateRangeDescriptor } from '../core/dates';
55
import { Subject } from 'rxjs';
6+
import { isDate } from '../core/utils';
67

78
/**
89
* Sets the selction type - single, multi or range.
@@ -243,7 +244,7 @@ export class IgxCalendarBase implements ControlValueAccessor {
243244
/**
244245
*@hidden
245246
*/
246-
private rangeStarted = false;
247+
public rangeStarted = false;
247248

248249
/**
249250
*@hidden
@@ -580,12 +581,14 @@ export class IgxCalendarBase implements ControlValueAccessor {
580581
*/
581582
public selectDate(value: Date | Date[]) {
582583
if (value === null || value === undefined || (Array.isArray(value) && value.length === 0)) {
583-
return new Date();
584+
return;
584585
}
585586

586587
switch (this.selection) {
587588
case CalendarSelection.SINGLE:
588-
this.selectSingle(value as Date);
589+
if (isDate(value)) {
590+
this.selectSingle(value as Date);
591+
}
589592
break;
590593
case CalendarSelection.MULTI:
591594
this.selectMultiple(value);
@@ -600,7 +603,7 @@ export class IgxCalendarBase implements ControlValueAccessor {
600603
* Deselects date(s) (based on the selection type).
601604
*/
602605
public deselectDate(value?: Date | Date[]) {
603-
if (this.selectedDates === null || this.selectedDates === []) {
606+
if (this.selectedDates === null || this.selectedDates.length === 0) {
604607
return;
605608
}
606609

projects/igniteui-angular/src/lib/calendar/calendar.component.html

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
</ng-template>
55

66
<ng-template let-result #defaultMonth let-obj>
7-
<span tabindex="0" #monthsBtn (keydown)="activeViewYearKB($event)" (click)="activeViewYear()"
7+
<span tabindex="0" #monthsBtn (keydown)="activeViewYearKB(getViewDate(obj.index), $event)" (click)="activeViewYear(getViewDate(obj.index), $event)"
88
class="igx-calendar-picker__date">
99
{{ formattedMonth(getViewDate(obj.index)) }}
1010
</span>
11-
<span tabindex="0" #yearsBtn (keydown)="activeViewDecadeKB($event)" (click)="activeViewDecade()"
11+
<span tabindex="0" #yearsBtn (keydown)="activeViewDecadeKB($event, getViewDate(obj.index))" (click)="activeViewDecade(getViewDate(obj.index))"
1212
class="igx-calendar-picker__date">
1313
{{ formattedYear(getViewDate(obj.index)) }}
1414
</span>
@@ -26,21 +26,15 @@ <h2 class="igx-calendar__header-date">
2626
(swipeleft)="nextMonth()">
2727
<div class="igx-calendar-picker">
2828
<div tabindex="0" class="igx-calendar-picker__prev" #prevMonthBtn
29-
igxCalendarScrollMonth [startScroll]="startPrevMonthScroll" [stopScroll]="stopMonthScroll" [ngStyle]="{
30-
'min-width.%': 100/(monthsViewNumber*7),
31-
'left': 0
32-
}">
29+
igxCalendarScrollMonth [startScroll]="startPrevMonthScroll" [stopScroll]="stopMonthScroll" [ngStyle]="{'min-width.%': 100/(monthsViewNumber*7)}">
3330
<igx-icon fontSet="material">keyboard_arrow_left</igx-icon>
3431
</div>
35-
<div *ngFor="let view of dayViews; index as i;" [style.width.%]="100/monthsViewNumber">
32+
<div *ngFor="let view of dayViews; index as i;" [style.width.%]="100/monthsViewNumber" [attr.data-month]="getMonth(i)">
3633
<ng-container *ngTemplateOutlet="subheaderTemplate ? subheaderTemplate : defaultMonth; context: getContext(i)">
3734
</ng-container>
3835
</div>
3936
<div tabindex="0" class="igx-calendar-picker__next" #nextMonthBtn
40-
igxCalendarScrollMonth [startScroll]="startNextMonthScroll" [stopScroll]="stopMonthScroll" [ngStyle]="{
41-
'min-width.%': 100/(monthsViewNumber*7),
42-
'right': 0
43-
}">
37+
igxCalendarScrollMonth [startScroll]="startNextMonthScroll" [stopScroll]="stopMonthScroll" [ngStyle]="{'min-width.%': 100/(monthsViewNumber*7)}">
4438
<igx-icon fontSet="material">keyboard_arrow_right</igx-icon>
4539
</div>
4640
</div>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1908,6 +1908,8 @@ describe('IgxCalendar', () => {
19081908

19091909
date = calendar.daysView.dates.find(d => getDate(d).getTime() === new Date(2017, 7, 5).getTime());
19101910
date.nativeElement.focus();
1911+
fixture.detectChanges();
1912+
await wait(400);
19111913

19121914
UIInteractions.simulateKeyDownEvent(document.activeElement, 'ArrowRight');
19131915
fixture.detectChanges();

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

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
113113
}
114114

115115
set monthsViewNumber(val: number) {
116-
if (this._monthsViewNumber === val || val === 0) {
116+
if (this._monthsViewNumber === val || val <= 0) {
117117
return;
118118
} else if (this._monthsViewNumber < val) {
119119
for (let i = this._monthsViewNumber; i < val; i++) {
@@ -348,7 +348,7 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
348348
*/
349349
private defaultDayView = {
350350
value: this.value,
351-
viewDate: this.viewDate,
351+
viewDate: this.viewDate
352352
};
353353

354354
/**
@@ -462,11 +462,11 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
462462
/**
463463
* @hidden
464464
*/
465-
public activeViewDecade() {
465+
public activeViewDecade(args: Date) {
466466
super.activeViewDecade();
467-
468467
requestAnimationFrame(() => {
469468
if (this.dacadeView) {
469+
this.dacadeView.date = args;
470470
this.dacadeView.el.nativeElement.focus();
471471
}
472472
});
@@ -475,11 +475,12 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
475475
/**
476476
* @hidden
477477
*/
478-
public activeViewDecadeKB(event) {
479-
super.activeViewDecadeKB(event);
478+
public activeViewDecadeKB(event, args: Date) {
479+
super.activeViewDecadeKB(event, args);
480480

481481
requestAnimationFrame(() => {
482482
if (this.dacadeView) {
483+
this.dacadeView.date = args;
483484
this.dacadeView.el.nativeElement.focus();
484485
}
485486
});
@@ -520,6 +521,7 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
520521
public viewChanged(event) {
521522
this.viewDate = this.calendarModel.timedelta(event, 'month', 0);
522523
}
524+
523525
/**
524526
* @hidden
525527
*/
@@ -528,27 +530,34 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
528530
this.activeView = CalendarView.DEFAULT;
529531

530532
requestAnimationFrame(() => {
531-
this.monthsBtn.nativeElement.focus();
533+
if (this.monthsBtn) { this.monthsBtn.nativeElement.focus(); }
532534
});
533535
}
534536

535537
/**
536538
* @hidden
537539
*/
538-
public activeViewYear(): void {
540+
public activeViewYear(args: Date, event): void {
539541
this.activeView = CalendarView.YEAR;
540542
requestAnimationFrame(() => {
541-
this.monthsView.dates.find((date) => date.isCurrentMonth).nativeElement.focus();
543+
this.monthsView.date = args;
544+
this.focusMonth(event.target);
542545
});
543546
}
544547

548+
private focusMonth(target: HTMLElement) {
549+
const month = this.monthsView.dates.find((date) =>
550+
date.index === parseInt(target.parentElement.attributes['data-month'].value, 10));
551+
if (month) { month.nativeElement.focus(); }
552+
}
553+
545554
/**
546555
* @hidden
547556
*/
548-
public activeViewYearKB(event): void {
557+
public activeViewYearKB(args: Date, event): void {
549558
if (event.key === KEYS.SPACE || event.key === KEYS.SPACE_IE || event.key === KEYS.ENTER) {
550559
event.preventDefault();
551-
this.activeViewYear();
560+
this.activeViewYear(args, event);
552561
}
553562
}
554563

@@ -561,7 +570,10 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
561570
public deselectDate(value?: Date | Date[]) {
562571
super.deselectDate(value);
563572

564-
this.daysView.selectedDates = this.selectedDates;
573+
this.monthViews.forEach((view) => {
574+
view.selectedDates = this.selectedDates;
575+
view.rangeStarted = false;
576+
});
565577
this._onChangeCallback(this.selectedDates);
566578
}
567579

@@ -573,6 +585,14 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
573585
return date;
574586
}
575587

588+
/**
589+
* @hidden
590+
*/
591+
public getMonth(i: number): number {
592+
const date = this.calendarModel.timedelta(this.viewDate, 'month', i);
593+
return date.getMonth();
594+
}
595+
576596
/**
577597
* @hidden
578598
*/
@@ -588,6 +608,10 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
588608
public onKeydownPageUp(event: KeyboardEvent) {
589609
event.preventDefault();
590610

611+
if (this.activeView !== CalendarView.DEFAULT) {
612+
return;
613+
}
614+
591615
const activeDate = this.daysView.dates.find((date) => date.nativeElement === document.activeElement);
592616
if (activeDate) {
593617
this.daysView.nextDate = new Date(activeDate.date.date);
@@ -622,7 +646,9 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
622646
public onKeydownPageDown(event: KeyboardEvent) {
623647
event.preventDefault();
624648

625-
this.nextMonth(true);
649+
if (this.activeView !== CalendarView.DEFAULT) {
650+
return;
651+
}
626652

627653
const activeDate = this.daysView.dates.find((date) => date.nativeElement === document.activeElement);
628654
if (activeDate) {
@@ -647,6 +673,8 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
647673
if (dayItem) { dayItem.nativeElement.focus(); }
648674
};
649675
}
676+
677+
this.nextMonth(true);
650678
}
651679

652680
/**
@@ -760,8 +788,8 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
760788
private generateContext(value: Date, i?: number) {
761789
const formatObject = {
762790
index: i,
763-
monthView: () => this.activeViewYear(),
764-
yearView: () => this.activeViewDecade(),
791+
monthView: () => this.activeViewYear(value, event),
792+
yearView: () => this.activeViewDecade(value),
765793
...this.calendarModel.formatToParts(value, this.locale, this.formatOptions,
766794
['era', 'year', 'month', 'day', 'weekday'])
767795
};

projects/igniteui-angular/src/lib/calendar/days-view/day-item.component.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,6 @@ export class IgxDayItemComponent {
135135
return isDateInRanges(this.date.date, this.specialDates);
136136
}
137137

138-
@HostBinding('attr.tabindex')
139-
public tabindex = 0;
140-
141138
@HostBinding('class.igx-calendar__date')
142139
public get defaultCSS(): boolean {
143140
return this.date.isCurrentMonth && !(this.isWeekend && this.selected);
@@ -153,6 +150,11 @@ export class IgxDayItemComponent {
153150
return this.selection !== CalendarSelection.RANGE;
154151
}
155152

153+
@HostBinding('attr.tabindex')
154+
public get tabindex(): number {
155+
return this.isDisabled || this.isHidden ? -1 : 0;
156+
}
157+
156158
private _selected = false;
157159

158160
constructor(private elementRef: ElementRef) { }

0 commit comments

Comments
 (0)