Skip to content

Commit f07b718

Browse files
committed
Merge remote-tracking branch 'remotes/origin/master' into AMarinov/stringEnumsChange_master
2 parents ab7fd55 + 243a0d5 commit f07b718

37 files changed

+613
-350
lines changed

ROADMAP.md

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,38 @@
22

33
# Current Milestone
44

5+
## Milestone 13 (Due by October, 2020)
6+
7+
1. Move PositionSettings to OverlaySettings [#7807](https://github.com/IgniteUI/igniteui-angular/issues/7807)
8+
2. Native add row [#5946](https://github.com/IgniteUI/igniteui-angular/issues/5946)
9+
3. Accept ISO 8601 Date-only string as input for IgxDateTimeEditorDirective [#6994](https://github.com/IgniteUI/igniteui-angular/issues/6994)
10+
4. Enhance hGrid multi-cell selection behavior [#5714](https://github.com/IgniteUI/igniteui-angular/issues/5714)
11+
5. Calendar ARIA [#6272](https://github.com/IgniteUI/igniteui-angular/issues/6272)
12+
6. Grid Accessibility Issues [#6341](https://github.com/IgniteUI/igniteui-angular/issues/6341)
13+
7. Implement cellEditExit and rowEditExit event [#7931](https://github.com/IgniteUI/igniteui-angular/issues/7931)
14+
8. Calendar keyboard navigation accessibility [#6275](https://github.com/IgniteUI/igniteui-angular/issues/6275)
15+
9. Column Moving using API [#6334](https://github.com/IgniteUI/igniteui-angular/issues/6334)
16+
10. Expose an event that indicates that the Grid is fully loaded [#7924](https://github.com/IgniteUI/igniteui-angular/issues/7924)
17+
11. View week numbers in datepicker and calendar [#6172](https://github.com/IgniteUI/igniteui-angular/issues/6172)
18+
12. Expose the functionality of private getRowData via a public method [#7930](https://github.com/IgniteUI/igniteui-angular/issues/7930)
19+
13. Expose templates for all ESF UI parts [#7221](https://github.com/IgniteUI/igniteui-angular/issues/7221)
20+
14. [igx-tab] [igx-nav-drawer] Add animations option [#7157](https://github.com/IgniteUI/igniteui-angular/issues/7157)
21+
15. Choose label -text for igxTimePicker [#6905](https://github.com/IgniteUI/igniteui-angular/issues/6905)
22+
16. Implement factory functions for creating OverlaySettings [#7941](https://github.com/IgniteUI/igniteui-angular/issues/7941)
23+
17. igx-grid: Set grouped column width in percentage [#4155](https://github.com/IgniteUI/igniteui-angular/issues/4155)
24+
18. IgxGrid: Excel Style Filter "Apply" on "Enter" [#5812](https://github.com/IgniteUI/igniteui-angular/issues/5812)
25+
19. Grid export visualization [#7738](https://github.com/IgniteUI/igniteui-angular/issues/7738)
26+
20. Allow setting of the name of the worksheet in exported workbook in IgxExcelExporter [#7396](https://github.com/IgniteUI/igniteui-angular/issues/7396)
27+
21. Enhance behavior of the Select All checkbox in Excel Style Filtering [#6617](https://github.com/IgniteUI/igniteui-angular/issues/6617)
28+
22. Igx-grid: Select all rows in a group [#7344](https://github.com/IgniteUI/igniteui-angular/issues/7344)
29+
30+
## Going down the road
31+
32+
1. Tile Manager
33+
2. Visual Cell merging
34+
3. RTL Support across Ignite UI for Angular components
35+
# Previous Milestones
36+
537
## Milestone 12 (Due by August 17th, 2020)
638

739
1. **[DONE]** igx-grid improve IGridEditEventArgs [#4965](https://github.com/IgniteUI/igniteui-angular/issues/4965)
@@ -16,27 +48,19 @@
1648
10. **[DONE]** igx-grid - pre-select rows [#6653](https://github.com/IgniteUI/igniteui-angular/issues/6653)
1749
11. **[DONE]** Average and Sum are shown on the Ship country level [#7334](https://github.com/IgniteUI/igniteui-angular/issues/7334)
1850
12. **[DONE]** Dock Manager Better Default Themes [#7578](https://github.com/IgniteUI/igniteui-angular/issues/7578)
19-
13. Expose templates for all ESF UI parts [#7221](https://github.com/IgniteUI/igniteui-angular/issues/7221)
51+
13. **[DONE]** Expose templates for all ESF UI parts [#7221](https://github.com/IgniteUI/igniteui-angular/issues/7221)
2052
14. **[DONE]** Calendar events when user changes month/year [#7039](https://github.com/IgniteUI/igniteui-angular/issues/7039)
21-
15. igxGrid default column display templates per-type [#7224](https://github.com/IgniteUI/igniteui-angular/issues/7224)
22-
16. Provide "Unfreeze All" option under Freeze button on Data Grid & Tree Grid
53+
15. **[DONE]** igxGrid default column display templates per-type [#7224](https://github.com/IgniteUI/igniteui-angular/issues/7224)
54+
16. **[DONE]** Provide "Unfreeze All" option under Freeze button on Data Grid & Tree Grid
2355
To Be Updated [#6549](https://github.com/IgniteUI/igniteui-angular/issues/6549)
24-
17. Exposing onActiveNodeChange output in the Grid [#7601](https://github.com/IgniteUI/igniteui-angular/issues/7601)
56+
17. **[DONE]** Exposing onActiveNodeChange output in the Grid [#7601](https://github.com/IgniteUI/igniteui-angular/issues/7601)
2557
18. **[DONE]** Refactor commit method of IgxHierarchicalTransactionService to accept same parameters as base type [#5205](https://github.com/IgniteUI/igniteui-angular/issues/5205)
2658
19. **[DONE]** Tooltip for grid cell text content [#6215](https://github.com/IgniteUI/igniteui-angular/issues/6215)
2759
20. **[DONE]** Add tooltip to column summary [#6505](https://github.com/IgniteUI/igniteui-angular/issues/6505)
2860
21. **[DONE]** IgxToast `show` should take a message param [#7156](https://github.com/IgniteUI/igniteui-angular/issues/7156)
2961
22. **[DONE]** IgxGridState working with IgxHierarchicalGrid [#7025](https://github.com/IgniteUI/igniteui-angular/issues/7025)
3062
23. **[DONE]** Sorting Indicator on all Grid components [#7493](https://github.com/IgniteUI/igniteui-angular/issues/7493)
3163

32-
33-
## Going down the road
34-
35-
1. Tile Manager
36-
2. Visual Cell merging
37-
3. RTL Support across Ignite UI for Angular components
38-
# Previous Milestones
39-
4064
## Milestone 11 (Released June 2nd, 2020)
4165

4266
1. **[DONE]** Dock Manger - Public Preview [#5980](https://github.com/IgniteUI/igniteui-angular/issues/5980)

projects/igniteui-angular/src/lib/chips/chip.component.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
<div #chipArea class="igx-chip__item"
2-
[attr.tabIndex]="tabIndex"
3-
(keydown)="onChipKeyDown($event)"
42
[igxDrag]="{chip: this}"
53
[style.visibility]='hideBaseElement ? "hidden" : "visible"'
64
[ghostClass]="ghostClass"

projects/igniteui-angular/src/lib/chips/chip.component.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
EventEmitter,
55
ElementRef,
66
HostBinding,
7+
HostListener,
78
Input,
89
Output,
910
ViewChild,
@@ -97,6 +98,7 @@ export class IgxChipComponent extends DisplayDensityBase {
9798
* <igx-chip [id]="'igx-chip-1'" [tabIndex]="1"></igx-chip>
9899
* ```
99100
*/
101+
@HostBinding('attr.tabIndex')
100102
@Input()
101103
public set tabIndex(value: number) {
102104
this._tabIndex = value;
@@ -372,13 +374,6 @@ export class IgxChipComponent extends DisplayDensityBase {
372374
@Output()
373375
public onDragEnter = new EventEmitter<IChipEnterDragAreaEventArgs>();
374376

375-
/**
376-
* @hidden
377-
* @internal
378-
*/
379-
@HostBinding('attr.tabIndex')
380-
public hostTabIndex = null;
381-
382377
/**
383378
* @hidden
384379
* @internal
@@ -562,6 +557,15 @@ export class IgxChipComponent extends DisplayDensityBase {
562557
}
563558
}
564559

560+
/**
561+
* @hidden
562+
* @internal
563+
*/
564+
@HostListener('keydown', ['$event'])
565+
public keyEvent(event: KeyboardEvent) {
566+
this.onChipKeyDown(event);
567+
}
568+
565569
/**
566570
* @hidden
567571
* @internal

projects/igniteui-angular/src/lib/chips/chip.spec.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -230,31 +230,26 @@ describe('IgxChip', () => {
230230

231231
it('should apply correct tabIndex to the chip area only when tabIndex is set as property of the chip and chip is disabled', () => {
232232
const firstTabChip = fix.debugElement.queryAll(By.directive(IgxChipComponent))[4];
233-
expect(firstTabChip.nativeElement.getAttribute('tabindex')).toBeFalsy();
234-
expect(firstTabChip.componentInstance.chipArea.nativeElement.getAttribute('tabindex')).toEqual('1');
233+
expect(firstTabChip.nativeElement.getAttribute('tabindex')).toEqual('1');
235234

236235
// Chip is disabled, but attribute tabindex has bigger priority.
237236
const secondTabChip = fix.debugElement.queryAll(By.directive(IgxChipComponent))[5];
238-
expect(secondTabChip.nativeElement.getAttribute('tabindex')).toBeFalsy();
239-
expect(secondTabChip.componentInstance.chipArea.nativeElement.getAttribute('tabindex')).toEqual('2');
237+
expect(secondTabChip.nativeElement.getAttribute('tabindex')).toEqual('2');
240238
});
241239

242240
it('should apply correct tab indexes when tabIndex and removeTabIndex are set as inputs', () => {
243241
const thirdTabChip = fix.debugElement.queryAll(By.directive(IgxChipComponent))[6];
244242
const deleteBtn = ControlsFunction.getChipRemoveButton(thirdTabChip.componentInstance.chipArea.nativeElement);
245-
expect(thirdTabChip.nativeElement.getAttribute('tabindex')).toBeFalsy();
246-
expect(thirdTabChip.componentInstance.chipArea.nativeElement.getAttribute('tabindex')).toEqual('3');
243+
expect(thirdTabChip.nativeElement.getAttribute('tabindex')).toEqual('3');
247244
expect(deleteBtn.getAttribute('tabindex')).toEqual('3');
248245

249246
// tabIndex attribute has higher priority than tabIndex.
250247
const fourthTabChip = fix.debugElement.queryAll(By.directive(IgxChipComponent))[7];
251-
expect(fourthTabChip.nativeElement.getAttribute('tabindex')).toBeFalsy();
252-
expect(fourthTabChip.componentInstance.chipArea.nativeElement.getAttribute('tabindex')).toEqual('1');
248+
expect(fourthTabChip.nativeElement.getAttribute('tabindex')).toEqual('1');
253249

254250
// tabIndex attribute has higher priority than tabIndex input and chip being disabled.
255251
const fifthTabChip = fix.debugElement.queryAll(By.directive(IgxChipComponent))[8];
256-
expect(fifthTabChip.nativeElement.getAttribute('tabindex')).toBeFalsy();
257-
expect(fifthTabChip.componentInstance.chipArea.nativeElement.getAttribute('tabindex')).toEqual('1');
252+
expect(fifthTabChip.nativeElement.getAttribute('tabindex')).toEqual('1');
258253
});
259254
});
260255

projects/igniteui-angular/src/lib/chips/chips-area.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,18 +242,18 @@ export class IgxChipsAreaComponent implements DoCheck, AfterViewInit, OnDestroy
242242
orderChanged = this.positionChipAtIndex(dragChipIndex, dragChipIndex - 1, false, event.originalEvent);
243243
if (orderChanged) {
244244
setTimeout(() => {
245-
this.chipsList.toArray()[dragChipIndex - 1].chipArea.nativeElement.focus();
245+
this.chipsList.toArray()[dragChipIndex - 1].elementRef.nativeElement.focus();
246246
});
247247
}
248248
} else if (event.originalEvent.key === 'ArrowRight' || event.originalEvent.key === 'Right') {
249249
orderChanged = this.positionChipAtIndex(dragChipIndex, dragChipIndex + 1, true, event.originalEvent);
250250
}
251251
} else {
252252
if ((event.originalEvent.key === 'ArrowLeft' || event.originalEvent.key === 'Left') && dragChipIndex > 0) {
253-
chipsArray[dragChipIndex - 1].chipArea.nativeElement.focus();
253+
chipsArray[dragChipIndex - 1].elementRef.nativeElement.focus();
254254
} else if ((event.originalEvent.key === 'ArrowRight' || event.originalEvent.key === 'Right') &&
255255
dragChipIndex < chipsArray.length - 1) {
256-
chipsArray[dragChipIndex + 1].chipArea.nativeElement.focus();
256+
chipsArray[dragChipIndex + 1].elementRef.nativeElement.focus();
257257
}
258258
}
259259
}

projects/igniteui-angular/src/lib/chips/chips-area.spec.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,11 @@ describe('IgxChipsArea ', () => {
206206
const firstChipComp = fix.componentInstance.chips.toArray()[0];
207207
const secondChipComp = fix.componentInstance.chips.toArray()[1];
208208

209-
firstChipComp.chipArea.nativeElement.focus();
210-
expect(document.activeElement).toBe(firstChipComp.chipArea.nativeElement);
209+
firstChipComp.elementRef.nativeElement.focus();
210+
expect(document.activeElement).toBe(firstChipComp.elementRef.nativeElement);
211211

212-
secondChipComp.chipArea.nativeElement.focus();
213-
expect(document.activeElement).toBe(secondChipComp.chipArea.nativeElement);
212+
secondChipComp.elementRef.nativeElement.focus();
213+
expect(document.activeElement).toBe(secondChipComp.elementRef.nativeElement);
214214
});
215215

216216
it('should focus on previous and next chips after arrows are pressed', () => {
@@ -220,22 +220,22 @@ describe('IgxChipsArea ', () => {
220220
const firstChipComp = fix.componentInstance.chips.toArray()[0];
221221
const secondChipComp = fix.componentInstance.chips.toArray()[1];
222222

223-
firstChipComp.chipArea.nativeElement.focus();
223+
firstChipComp.elementRef.nativeElement.focus();
224224
fix.detectChanges();
225225

226-
expect(document.activeElement).toBe(firstChipComp.chipArea.nativeElement);
226+
expect(document.activeElement).toBe(firstChipComp.elementRef.nativeElement);
227227

228228
const rightKey = new KeyboardEvent('keydown', { 'key': 'ArrowRight' });
229229
firstChipComp.onChipKeyDown(rightKey);
230230
fix.detectChanges();
231231

232-
expect(document.activeElement).toBe(secondChipComp.chipArea.nativeElement);
232+
expect(document.activeElement).toBe(secondChipComp.elementRef.nativeElement);
233233

234234
const leftKey = new KeyboardEvent('keydown', { 'key': 'ArrowLeft' });
235235
secondChipComp.onChipKeyDown(leftKey);
236236
fix.detectChanges();
237237

238-
expect(document.activeElement).toBe(firstChipComp.chipArea.nativeElement);
238+
expect(document.activeElement).toBe(firstChipComp.elementRef.nativeElement);
239239
});
240240

241241
it('should fire onSelection event', () => {
@@ -432,8 +432,8 @@ describe('IgxChipsArea ', () => {
432432

433433
it('should reorder chips when shift + leftarrow and shift + rightarrow is pressed', () => {
434434
const chipComponents = fix.debugElement.queryAll(By.directive(IgxChipComponent));
435-
const firstChipAreaElem = chipComponents[0].componentInstance.chipArea.nativeElement;
436-
const secondChipAreaElem = chipComponents[1].componentInstance.chipArea.nativeElement;
435+
const firstChipAreaElem = chipComponents[0].componentInstance.elementRef.nativeElement;
436+
const secondChipAreaElem = chipComponents[1].componentInstance.elementRef.nativeElement;
437437
const firstChipLeft = firstChipAreaElem.getBoundingClientRect().left;
438438
const secondChipLeft = secondChipAreaElem.getBoundingClientRect().left;
439439

@@ -459,7 +459,7 @@ describe('IgxChipsArea ', () => {
459459
chipArea = fix.componentInstance.chipsArea;
460460
const chipComponents = fix.debugElement.queryAll(By.directive(IgxChipComponent));
461461
const targetChip = chipComponents[2].componentInstance;
462-
const targetChipElem = targetChip.chipArea.nativeElement;
462+
const targetChipElem = targetChip.elementRef.nativeElement;
463463

464464
targetChipElem.focus();
465465
fix.detectChanges();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
[style.maxHeight.px]="itemsMaxHeight" [igxDropDownItemNavigation]="dropdown" (focus)="dropdown.onFocus()"
5252
[tabindex]="dropdown.collapsed ? -1 : 0" role="listbox" [attr.id]="dropdown.id">
5353
<igx-combo-item role="option" [itemHeight]='itemHeight' *igxFor="let item of data
54-
| comboFiltering:searchValue:displayKey:filterable:filteringOptions
54+
| comboFiltering:filterValue:displayKey:filterable:filteringOptions
5555
| comboGrouping:groupKey:valueKey;
5656
index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight"
5757
[value]="item" [isHeader]="item.isHeader" [index]="rowIndex">

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { async, TestBed, tick, fakeAsync } from '@angular/core/testing';
33
import { By } from '@angular/platform-browser';
44
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
55
import { FormGroup, FormControl, Validators, FormBuilder, ReactiveFormsModule, FormsModule, NgControl } from '@angular/forms';
6-
import { IgxComboComponent, IgxComboModule, IComboSelectionChangeEventArgs, IgxComboState } from './combo.component';
6+
import { IgxComboComponent, IgxComboModule, IComboSelectionChangeEventArgs, IgxComboState, IComboSearchInputEventArgs } from './combo.component';
77
import { IgxComboItemComponent } from './combo-item.component';
88
import { IgxComboDropDownComponent } from './combo-dropdown.component';
99
import { IgxComboAddItemComponent } from './combo-add-item.component';
@@ -586,7 +586,7 @@ describe('igxCombo', () => {
586586

587587
combo.handleInputChange('Item1');
588588
expect(combo.onSearchInput.emit).toHaveBeenCalledTimes(1);
589-
expect(matchSpy).toHaveBeenCalledTimes(0);
589+
expect(matchSpy).toHaveBeenCalledTimes(1);
590590
});
591591
});
592592
describe('Initialization and rendering tests: ', () => {
@@ -2432,6 +2432,17 @@ describe('igxCombo', () => {
24322432
fixture.detectChanges();
24332433
expect([...combo.filteredData]).toEqual(combo.data.filter(e => e['field'].includes('M')));
24342434
});
2435+
it('Should NOT filter the data when onSearchInput is canceled', () => {
2436+
const cancelSub = combo.onSearchInput.subscribe((event: IComboSearchInputEventArgs) => event.cancel = true);
2437+
combo.toggle();
2438+
fixture.detectChanges();
2439+
const searchInput = fixture.debugElement.query(By.css('input[name=\'searchInput\']'));
2440+
UIInteractions.triggerInputEvent(searchInput, 'Test');
2441+
fixture.detectChanges();
2442+
expect(combo.filteredData.length).toEqual(combo.data.length);
2443+
expect(combo.searchValue).toEqual('Test');
2444+
cancelSub.unsubscribe();
2445+
});
24352446
});
24362447
describe('Form control tests: ', () => {
24372448
describe('Reactive form tests: ', () => {

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,15 @@ export class IgxComboComponent extends DisplayDensityBase implements IgxComboBas
165165
public filteringOptions: IComboFilteringOptions = {
166166
caseSensitive: false
167167
};
168+
/** @hidden @internal */
169+
public filterValue = '';
168170
protected stringFilters = IgxStringFilteringOperand;
169171
protected booleanFilters = IgxBooleanFilteringOperand;
170172
protected _groupKey = '';
171173
protected _displayKey: string;
172174
protected _prevInputValue = '';
173175
private _dataType = '';
176+
private _searchValue = '';
174177
private ngControl: NgControl = null;
175178
private destroy$ = new Subject<any>();
176179
private _data = [];
@@ -894,7 +897,14 @@ export class IgxComboComponent extends DisplayDensityBase implements IgxComboBas
894897
/**
895898
* @hidden @internal
896899
*/
897-
public searchValue = '';
900+
public get searchValue(): string {
901+
return this._searchValue;
902+
}
903+
904+
public set searchValue(val: string) {
905+
this.filterValue = val;
906+
this._searchValue = val;
907+
}
898908

899909
/**
900910
* @hidden @internal
@@ -1036,8 +1046,7 @@ export class IgxComboComponent extends DisplayDensityBase implements IgxComboBas
10361046
};
10371047
this.onSearchInput.emit(args);
10381048
if (args.cancel) {
1039-
this.searchValue = null;
1040-
return;
1049+
this.filterValue = null;
10411050
}
10421051
}
10431052
this.checkMatch();

projects/igniteui-angular/src/lib/core/styles/components/calendar/_calendar-theme.scss

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -628,8 +628,7 @@
628628
display: flex;
629629
justify-content: center;
630630
align-items: center;
631-
flex-grow: 1;
632-
flex-basis: 14.28%;
631+
min-width: 14.28%;
633632
color: --var($theme, 'content-text-color');
634633
cursor: pointer;
635634
outline: none;
@@ -660,8 +659,8 @@
660659
justify-content: center;
661660
align-items: center;
662661
width: $cal-value-w;
662+
min-width: $cal-value-w;
663663
height: $cal-value-h;
664-
min-width: 2ch;
665664
border-radius: --var($theme, 'date-border-radius');
666665
z-index: 0;
667666
// transition: background .15s ease-out;
@@ -686,7 +685,7 @@
686685
}
687686

688687
border-radius: 0;
689-
flex-basis: 14.28%;
688+
min-width: 14.28%;
690689
// 100 divided by the number of weekdays
691690

692691
@if $bootstrap-theme {

0 commit comments

Comments
 (0)