Skip to content

Commit 66c0d70

Browse files
authored
Merge branch 'master' into nmitich/fix-missing-dropposition-export
2 parents 374f977 + a70a8c3 commit 66c0d70

20 files changed

+532
-179
lines changed

.github/workflows/nodejs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,6 @@ jobs:
5454
npm run test:i18n:dist
5555
- name: Publish to coveralls.io
5656
if: github.repository == 'IgniteUI/igniteui-angular' && matrix.node-version == '16.x'
57-
uses: coverallsapp/github-action@v1.1.2
57+
uses: coverallsapp/github-action@v1.2.1
5858
with:
5959
github-token: ${{ github.token }}

CHANGELOG.md

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

55
## 15.1.0
6-
76
### General
87
- `IgxPivotGrid`
98
- The `IgxPivotDateDimension` properties `inBaseDimension` and `inOption` have been deprecated and renamed to `baseDimension` and `options` respectively.
109
- `IgxGrid`
1110
- **Breaking Change** The `onGroupingDone` output has been renamed to `groupingDone` to not violate the no on-prefixed outputs convention. Automatic migrations are available and will be applied on `ng update`.
1211
- `DisplayDensity`
13-
- **Breaking Change** The `onDensityChanged` output has been renamed to `densityChanged` to not violate the no on-prefixed outputs convention. All components expolsing this event are affected. Automatic migrations are available and will be applied on `ng update`.
12+
- **Breaking Change** The `onDensityChanged` output has been renamed to `densityChanged` to not violate the no on-prefixed outputs convention. All components exposing this event are affected. Automatic migrations are available and will be applied on `ng update`.
13+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
14+
- **Breaking Change** - `rowSelectionChanging` event arguments are changed. Now the `oldSelection`, `newSelection`, `added` and `removed` collections no longer consist of the row keys of the selected elements when the grid has set a primaryKey, but now in any case the row data is emitted.
15+
When the grid is working with remote data and a primary key has been set- for the selected rows that are not currently part of the grid view, will be emitted a partial row data object.
16+
- **Behavioral Change** - When selected row is deleted from the grid component `rowSelectionChanging` event will no longer be emitted.
1417
- `IgxCarousel`
1518
- **Breaking Change** The `onSlideChanged`, `onSlideAdded`, `onSlideRemoved`, `onCarouselPaused` and `onCarouselPlaying` outputs have been renamed to `slideChanged`, `slideAdded`, `slideRemoved`, `carouselPaused` and `carouselPlaying` to not violate the no on-prefixed outputs convention. Automatic migrations are available and will be applied on `ng update`.
1619
- `IgxRadio`, `IgxRadioGroup`
@@ -24,7 +27,7 @@ All notable changes for each version of this project will be documented in this
2427
- `igxPivotGrid`
2528
- Adding `aggregatorName` for pivot value configuration as an alternative to setting `aggregator` function. If both are set `aggregatorName` takes precedent. If none are set an error is thrown.
2629
- `IgxSimpleCombo`
27-
- **Behavioral Change**
30+
- **Behavioral Change**
2831
- When the user clicks on the combo's input, the dropdown opens up.
2932
- Keyboard navigation `ArrowUp` - when the combo is opened `ArrowUp` will close the dropdown if the search input is focused. If the active item is the first one in the list, the focus will be moved back to the search input while also selecting all of the text in the input. Otherwise `ArrowUp` will move to the previous list item.
3033

@@ -109,7 +112,7 @@ All notable changes for each version of this project will be documented in this
109112

110113
### New Features
111114
- The filtering logic inside the grid's Advanced Filtering is now extracted as a separate `IgxQueryBuilder` component. The Query Builder allows you to build complex queries by specifying AND/OR operators, conditions and values using the UI. It outputs an object describing the structure of the query. Use the `locale` property to modify the locale settings. The default value is resolved to the global Angular application locale. The `resourceStrings` allows changing the displayed strings.
112-
115+
113116
- Code example below:
114117

115118
```html
@@ -145,7 +148,7 @@ All notable changes for each version of this project will be documented in this
145148
<ng-template igxPivotValueChip let-value>
146149
{{ value.member }}
147150
</ng-template>
148-
```
151+
```
149152
- Add support for usage with igxGridState to persist state of the pivotConfiguration with an additional `pivotConfiguration` option:
150153

151154
```html
@@ -161,7 +164,7 @@ All notable changes for each version of this project will be documented in this
161164
```
162165

163166
One known issue of the igxGridState directive is that it cannot store functions as the state is stored as string.
164-
As a result any custom functions set to `memberFunction`, `aggregator`, `formatter`, `styles` etc. will not be stored. Restoring any of these can be achieved with code on application level.
167+
As a result any custom functions set to `memberFunction`, `aggregator`, `formatter`, `styles` etc. will not be stored. Restoring any of these can be achieved with code on application level.
165168
Hence we have also exposed 2 new events:
166169
- `dimensionInit` - emits when a dimension from the configuration is being initialized.
167170
- `valueInit` - emits when a value from the configuration is being initialized.
@@ -221,7 +224,7 @@ All notable changes for each version of this project will be documented in this
221224
<column width='auto' ...>
222225
```
223226
- Added support for restoring filtering expressions with custom filtering operands for the `IgxGridStateDirective`.
224-
227+
225228

226229
- Added the `IgcFormControl` directive that, when imported with its `IgcFormsModule`, is designed to seamlessly attach to form components from the Ignite UI for WebComponents package and allows using them in Angular templates and reactive forms with support for `ngModel` and `formControlName` directives. Currently the only Web Component with support through the directive is `igc-rating`.
227230

@@ -236,7 +239,7 @@ All notable changes for each version of this project will be documented in this
236239

237240
## 14.0.0
238241

239-
- Added additional theme properties for the `IgxCalendar` so that it's easier to style the `:hover` and `:focus` states inside the selected date or range of dates.
242+
- Added additional theme properties for the `IgxCalendar` so that it's easier to style the `:hover` and `:focus` states inside the selected date or range of dates.
240243
- `IgxDatePicker` and `IgxDateRangePicker` now expose a `weekStart` input property like the `IgxCalendar`
241244
- `IgxCombo` and `IgxSimpleComboComponent`
242245
- The combobox `role`, `aria-haspopup`, `aria-expanded`, `aria-controls` and `aria-labelledby` attributes have been moved from combo wrapper to the combo input. Additionally the `IgxSimpleComboComponent` input is marked with `aria-readonly="false"` and `aria-autocomplete="list"` attributes. The `aria-labelled` attribute is applied to the combo dropdown as well and can be set by the `ariaLabelledBy` property, the combo label or placeholder. The serach input within the combo dropdown is now marked as `role="searchbox"`, `aria-label="search"` and `aria-autocomplete="list"`. The dropdown item container has `aria-activedescendant` attribute to identify the currently active element of the item list. The `IgxCombo` container is also marked as `aria-multiselectable="true"`. The dropdown header items role has been changed to `group`.

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,24 @@ export class IgxBadgeComponent {
133133
@HostBinding('class.igx-badge')
134134
public cssClass = 'igx-badge';
135135

136+
/**
137+
* Sets a square shape to the badge, if `shape` is set to `square`.
138+
* By default the shape of the badge is rounded.
139+
*
140+
* @example
141+
* ```html
142+
* <igx-badge shape="square"></igx-badge>
143+
* ```
144+
*/
145+
@Input()
146+
public shape: 'rounded' | 'square' = 'rounded';
147+
148+
/** @hidden @internal */
149+
@HostBinding('class.igx-badge--square')
150+
public get _squareShape(): boolean {
151+
return this.shape === 'square';
152+
}
153+
136154
/**
137155
* Sets/gets the aria-label attribute value.
138156
*

projects/igniteui-angular/src/lib/core/styles/components/badge/_badge-component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@
3939
@extend %igx-badge--error !optional;
4040
}
4141

42+
@include m(square) {
43+
@extend %igx-badge--square !optional;
44+
}
45+
4246
@include m(hidden) {
4347
@extend %igx-badge--hidden !optional;
4448
}

projects/igniteui-angular/src/lib/core/styles/components/badge/_badge-theme.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@
127127
}
128128
}
129129

130+
%igx-badge--square {
131+
border-radius: 0;
132+
}
133+
130134
%igx-badge-value {
131135
white-space: nowrap;
132136
padding: $badge-value-padding;

projects/igniteui-angular/src/lib/date-common/util/date-time.util.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ describe(`DateTimeUtil Unit tests`, () => {
199199
expect(result).toEqual('MM/dd/yyyy');
200200

201201
result = DateTimeUtil.getDefaultInputFormat('bg-BG');
202-
expect(result).toEqual('dd.MM.yyyy г.');
202+
expect(result.normalize('NFKC')).toEqual('dd.MM.yyyy г.');
203203

204204
expect(() => {
205205
result = DateTimeUtil.getDefaultInputFormat(null);

projects/igniteui-angular/src/lib/grids/api.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ export class GridBaseAPIService<T extends GridType> implements GridServiceType {
355355
this.deleteRowFromData(rowId, index);
356356

357357
if (grid.selectionService.isRowSelected(rowId)) {
358-
grid.selectionService.deselectRow(rowId);
358+
grid.selectionService.deselectRowsWithNoEvent([rowId]);
359359
} else {
360360
grid.selectionService.clearHeaderCBState();
361361
}

projects/igniteui-angular/src/lib/grids/grid-base.directive.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4758,8 +4758,8 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
47584758
this.crudService.endEdit(true);
47594759
this.gridAPI.addRowToData(data);
47604760

4761-
this.rowAddedNotifier.next({ data: data, owner: this });
47624761
this.pipeTrigger++;
4762+
this.rowAddedNotifier.next({ data: data, owner: this });
47634763
this.notifyChanges();
47644764
}
47654765

@@ -5065,6 +5065,7 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
50655065
this.crudService.endEdit(true);
50665066
this.selectionService.clearHeaderCBState();
50675067
this.summaryService.clearSummaryCache();
5068+
this.summaryPipeTrigger++;
50685069
this.cdr.detectChanges();
50695070
}
50705071

projects/igniteui-angular/src/lib/grids/grid/grid-row-editing.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,40 @@ describe('IgxGrid - Row Editing #grid', () => {
851851
expect(GridFunctions.getRowEditingBannerText(fix)).toBe('You have 2 changes in this row and 1 hidden columns');
852852
}));
853853

854+
it(`Should show no row changes when changing the cell value to the original one`, () => {
855+
targetCell = grid.gridAPI.get_cell_by_index(0, 'Downloads');
856+
fix.detectChanges();
857+
858+
const originalValue = targetCell.value;
859+
860+
UIInteractions.simulateDoubleClickAndSelectEvent(targetCell);
861+
fix.detectChanges();
862+
863+
// change first editable cell value
864+
targetCell.editValue = '500';
865+
fix.detectChanges();
866+
867+
// go to next cell
868+
UIInteractions.triggerEventHandlerKeyDown('tab', gridContent);
869+
fix.detectChanges();
870+
871+
expect(GridFunctions.getRowEditingBannerText(fix)).toBe('You have 1 changes in this row and 0 hidden columns');
872+
873+
// return to first editable cell
874+
UIInteractions.triggerEventHandlerKeyDown('tab', gridContent, false, true);
875+
fix.detectChanges();
876+
877+
// change cell value to the original one
878+
targetCell.editValue = originalValue;
879+
fix.detectChanges();
880+
881+
// go to next cell
882+
UIInteractions.triggerEventHandlerKeyDown('tab', gridContent);
883+
fix.detectChanges();
884+
885+
expect(GridFunctions.getRowEditingBannerText(fix)).toBe('You have 0 changes in this row and 0 hidden columns');
886+
});
887+
854888
it(`Should focus last edited cell after click on editable buttons`, (async () => {
855889
targetCell = grid.gridAPI.get_cell_by_index(0, 'Downloads');
856890
UIInteractions.simulateDoubleClickAndSelectEvent(targetCell);

0 commit comments

Comments
 (0)