Skip to content

Commit ddb85a1

Browse files
authored
Merge branch 'master' into mkirova/fix-splitter-export
2 parents 5573c9a + 100d6f7 commit ddb85a1

File tree

117 files changed

+2702
-1217
lines changed

Some content is hidden

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

117 files changed

+2702
-1217
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ Closes #
99

1010
### Checklist:
1111
- [ ] All relevant tags have been applied to this PR
12-
- [ ] This PR includes unit tests covering all the new code
13-
- [ ] This PR includes API docs for newly added methods/properties
12+
- [ ] This PR includes unit tests covering all the new code ([test guidelines](https://github.com/IgniteUI/igniteui-angular/wiki/Test-implementation-guidelines-for-Ignite-UI-for-Angular))
13+
- [ ] This PR includes API docs for newly added methods/properties ([api docs guidelines](https://github.com/IgniteUI/igniteui-angular/wiki/Documentation-Guidelines))
1414
- [ ] This PR includes `feature/README.MD` updates for the feature docs
1515
- [ ] This PR includes general feature table updates in the root `README.MD`
1616
- [ ] This PR includes `CHANGELOG.MD` updates for newly added functionality
1717
- [ ] This PR contains breaking changes
18-
- [ ] This PR includes `ng update` migrations for the breaking changes
18+
- [ ] This PR includes `ng update` migrations for the breaking changes ([migrations guidelines](https://github.com/IgniteUI/igniteui-angular/wiki/Update-Migrations))
1919
- [ ] This PR includes behavioral changes and the feature specification has been updated with them
2020

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,18 @@ All notable changes for each version of this project will be documented in this
6464
- `deselectColumns` API method is added for the `IgxGrid`. It allows to deselect columns by passing array of IgxColumnComponent or column fields.
6565
- `deselectAllColumns` API method is added for the `IgxGrid`. It allows to deselect all columns.
6666
- `getSelectedColumnsData` API method is added for the `IgxGrid`. It allows to get the selected columns data.
67+
Added keyBoard navigation support in the IgxGrid headers. Now is possible to navigate with the arrows keys through grid headers. Also we provide a number of key combinations that trigger a different column functionality like filtering, sorting, grouping and etc. You can read more information in the [Grid Specification](https://github.com/IgniteUI/igniteui-angular/wiki/igxGrid-Specification#kb-navigation).
68+
- **Behavioral Change**
69+
- *you can not use* `tab` key to navigate between the cell in the Igx Grid. The navigation is performed only with arrow keys.
70+
- when you are in edit mode with `tab` key you can navigate to the next editable cell.
71+
- `page up` and `page down` keys will perform action only if the focused element is the tbody of the grid.
72+
- The grid introduces the following basic `tab stops`:
73+
- Toolbar / Group by Area if existing;
74+
- The first cell in the header row;
75+
- The first cell in the first body row;
76+
- The first cell in column summary if exists;
77+
- Pager UI;
78+
- `onGridKeydown` event is deprecated. Now you can directly bind to keydown on the IgxGrid component in order to perform custom keyboard navigation.
6779

6880
- `IgxCombo`:
6981
- Added `autoFocusSearch` input that allows to manipulate the combo's opening behavior. When the property is `true` (by default), the combo's search input is focused on open. When set to `false`, the focus goes to the combo items container, which can be used to prevent the software keyboard from activating on mobile devices when opening the combo.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<div class="igx-checkbox__ripple"></div>
3535
</div>
3636

37-
<span #placeholderLabel role="label"
37+
<span #placeholderLabel
3838
[class]="labelClass"
3939
[id]="labelId"
4040
(click)="_onLabelClick($event)">

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,19 +1216,21 @@ describe('igxCombo', () => {
12161216
fixture.detectChanges();
12171217
let items = fixture.debugElement.queryAll(By.css(`.${CSS_CLASS_DROPDOWNLISTITEM}`));
12181218
let lastItem = items[items.length - 1].componentInstance;
1219+
let lastItemIndex = lastItem.index;
12191220
expect(lastItem).toBeDefined();
12201221
lastItem.clicked(mockClick);
12211222
await wait(30);
12221223
fixture.detectChanges();
1223-
expect(dropdown.focusedItem).toEqual(lastItem);
1224+
expect(dropdown.focusedItem.index).toEqual(lastItemIndex);
12241225
dropdown.navigateItem(-1);
12251226
await wait(30);
12261227
fixture.detectChanges();
12271228
expect(virtualMockDOWN).toHaveBeenCalledTimes(0);
1229+
lastItemIndex = lastItem.index;
12281230
lastItem.clicked(mockClick);
12291231
await wait(30);
12301232
fixture.detectChanges();
1231-
expect(dropdown.focusedItem).toEqual(lastItem);
1233+
expect(dropdown.focusedItem.index).toEqual(lastItemIndex);
12321234
dropdown.navigateNext();
12331235
await wait(30);
12341236
fixture.detectChanges();

projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-component.scss

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,10 @@
212212
@extend %igx-grid__tr-container !optional;
213213
}
214214

215+
@include e(tr-container, $m: active) {
216+
@extend %igx-grid__tr-container--active !optional;
217+
}
218+
215219
@include e(th) {
216220
@extend %grid-cell-display !optional;
217221
@extend %grid-cell-header !optional;
@@ -253,6 +257,10 @@
253257
@extend %igx-grid__th--selected !optional;
254258
}
255259

260+
@include e(th, $m: active) {
261+
@extend %igx-grid__th--active !optional;
262+
}
263+
256264
@include e(th, $m: number) {
257265
@extend %grid-cell-number !optional;
258266
}
@@ -798,7 +806,7 @@
798806
@include e(hierarchical-expander) {
799807
@extend %igx-grid__hierarchical-expander--compact !optional;
800808
}
801-
809+
802810
@include e(hierarchical-expander, $m: empty) {
803811
@extend %igx-grid__hierarchical-expander--compact !optional;
804812
@extend %igx-grid__hierarchical-expander--empty !optional;
@@ -874,3 +882,9 @@
874882
@extend %igx-group-label__count-badge !optional;
875883
}
876884
}
885+
886+
@include b(igx-grid-summary) {
887+
@include m(active) {
888+
@extend %igx-grid-summary--active !optional;
889+
}
890+
}

projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,7 @@
732732
background: --var($theme, 'header-background');
733733
color: --var($theme, 'header-text-color');
734734
overflow: hidden;
735+
outline-style: none;
735736

736737
%grid-row {
737738
position: relative;
@@ -918,6 +919,7 @@
918919
color: --var($theme, 'content-text-color');
919920
overflow: hidden;
920921
z-index: 1;
922+
outline-style: none;
921923
}
922924

923925
%grid-tbody-container {
@@ -1322,8 +1324,6 @@
13221324
// border-bottom: 0;
13231325

13241326
%igx-grid__tree-grouping-indicator {
1325-
color: --var($theme, 'cell-selected-text-color');
1326-
13271327
&:hover {
13281328
color: --var($theme, 'cell-selected-text-color');
13291329
}
@@ -1543,6 +1543,19 @@
15431543
background: --var($theme, 'header-selected-background');
15441544
}
15451545

1546+
%igx-grid__th--active {
1547+
@extend %grid-cell--active;
1548+
1549+
%igx-grid__th--selected,
1550+
%igx-grid__th--selectable {
1551+
@extend %grid-cell--active
1552+
}
1553+
}
1554+
1555+
%igx-grid-summary--active {
1556+
@extend %grid-cell--active
1557+
}
1558+
15461559
%igx-grid__th--sortable {
15471560
.sort-icon {
15481561
cursor: pointer;
@@ -1842,6 +1855,7 @@
18421855

18431856
%igx-grid__group-row--active {
18441857
background: --var($theme, 'group-row-selected-background');
1858+
@extend %grid-cell--active;
18451859

18461860
%igx-grid__grouping-indicator {
18471861
color: --var($theme, 'expand-icon-color');
@@ -2092,7 +2106,6 @@
20922106
user-select: none;
20932107
justify-content: center;
20942108
align-items: center;
2095-
background: inherit;
20962109
z-index: 1;
20972110
cursor: pointer;
20982111
padding-#{$left}: map-get($grid-grouping-indicator-padding, 'comfortable');
@@ -2484,6 +2497,10 @@
24842497
border-bottom: 1px solid --var($theme, 'row-border-color');
24852498
}
24862499

2500+
%igx-grid__tr-container--active {
2501+
@extend %grid-cell--active;
2502+
}
2503+
24872504
%igx-grid__hierarchical-expander {
24882505
user-select: none;
24892506
background: inherit;

projects/igniteui-angular/src/lib/core/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ export const NAVIGATION_KEYS = new Set([
335335
export const ROW_EXPAND_KEYS = new Set('right down arrowright arrowdown'.split(' '));
336336
export const ROW_COLLAPSE_KEYS = new Set('left up arrowleft arrowup'.split(' '));
337337
export const SUPPORTED_KEYS = new Set([...Array.from(NAVIGATION_KEYS), 'enter', 'f2', 'escape', 'esc', 'pagedown', 'pageup']);
338+
export const HEADER_KEYS = new Set([...Array.from(NAVIGATION_KEYS), 'escape', 'esc' , 'l']);
338339

339340
/**
340341
* @hidden

projects/igniteui-angular/src/lib/date-picker/date-picker.component.ts

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -543,58 +543,12 @@ export class IgxDatePickerComponent implements IDatePicker, ControlValueAccessor
543543
@Input()
544544
public outlet: IgxOverlayOutletDirective | ElementRef;
545545

546-
/**
547-
* @deprecated Use 'onOpened' instead.
548-
* An event that is emitted when the `IgxDatePickerComponent` calendar is opened.
549-
* @example
550-
* ```typescript
551-
* public open(event){
552-
* alert("The date-picker calendar has been opened!");
553-
* }
554-
* ```
555-
* ```html
556-
* <igx-date-picker (onOpen)="open($event)" cancelButtonLabel="cancel" todayButtonLabel="today"></igx-date-picker>
557-
* ```
558-
*/
559-
@DeprecateProperty(`'onOpen' @Output property is deprecated. Use 'onOpened' instead.`)
560-
@Output()
561-
public get onOpen(): EventEmitter<IgxDatePickerComponent> {
562-
return this._onOpen;
563-
}
564-
565-
public set onOpen(val: EventEmitter<IgxDatePickerComponent>) {
566-
this._onOpen = val;
567-
}
568-
569546
/**
570547
* Emitted when the `IgxDatePickerComponent` calendar is opened.
571548
*/
572549
@Output()
573550
public onOpened = new EventEmitter<IgxDatePickerComponent>();
574551

575-
/**
576-
* @deprecated Use 'onClosed' instead.
577-
* "An event that is emitted when the `IgxDatePickerComponent` is closed.
578-
* @example
579-
* ```typescript
580-
* public close(event){
581-
* alert("The date-picker has been closed!");
582-
* }
583-
* ```
584-
* ```html
585-
* <igx-date-picker (onClose)="close($event)" cancelButtonLabel="cancel" todayButtonLabel="today"></igx-date-picker>
586-
* ```
587-
*/
588-
@DeprecateProperty(`'onClose' @Output property is deprecated. Use 'onClosed' instead.`)
589-
@Output()
590-
public get onClose(): EventEmitter<IgxDatePickerComponent> {
591-
return this._onClose;
592-
}
593-
594-
public set onClose(val: EventEmitter<IgxDatePickerComponent>) {
595-
this._onClose = val;
596-
}
597-
598552
/**
599553
* Emitted after the `IgxDatePickerComponent` is closed.
600554
*/
@@ -1238,9 +1192,6 @@ export class IgxDatePickerComponent implements IDatePicker, ControlValueAccessor
12381192
private _onOpened(): void {
12391193
this.onOpened.emit(this);
12401194

1241-
// TODO: remove this line after deprecating 'onOpen'
1242-
this._onOpen.emit(this);
1243-
12441195
if (this.calendar) {
12451196
this._focusCalendarDate();
12461197
}
@@ -1250,9 +1201,6 @@ export class IgxDatePickerComponent implements IDatePicker, ControlValueAccessor
12501201
this.collapsed = true;
12511202
this._componentID = null;
12521203
this.onClosed.emit(this);
1253-
1254-
// TODO: remove this line after deprecating 'onClose'
1255-
this.onClose.emit(this);
12561204
}
12571205

12581206
private _initializeCalendarContainer(componentInstance: IgxCalendarContainerComponent) {

projects/igniteui-angular/src/lib/directives/date-time-editor/date-time-editor.common.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
export interface IgxDateTimeEditorEventArgs {
2-
oldValue: Date;
3-
newValue: Date;
4-
userInput: string;
2+
readonly oldValue?: Date;
3+
newValue?: Date;
4+
readonly userInput: string;
55
}
66

77
/**
8-
* An @Enum that allows you to specify a particular date, time or AmPm part.
8+
* Specify a particular date, time or AmPm part.
99
*/
1010
export enum DatePart {
1111
Date = 'date',
@@ -18,6 +18,7 @@ export enum DatePart {
1818
Literal = 'literal'
1919
}
2020

21+
/** @hidden @internal */
2122
export interface DatePartInfo {
2223
type: DatePart;
2324
start: number;

0 commit comments

Comments
 (0)