Skip to content

Commit 173532f

Browse files
committed
chore(*): merging pinning with cell merging
1 parent 638df68 commit 173532f

File tree

102 files changed

+3378
-609
lines changed

Some content is hidden

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

102 files changed

+3378
-609
lines changed

.github/workflows/nodejs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616

1717
strategy:
1818
matrix:
19-
node-version: [20.x, 22.x]
19+
node-version: [20.x, 22.17.1]
2020

2121
steps:
2222
- name: Checkout

CHANGELOG.md

Lines changed: 71 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,90 @@
22

33
All notable changes for each version of this project will be documented in this file.
44

5+
56
## 20.1.0
67

78
### New Features
89

910
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
1011
- Introduced a new cell merging feature that allows you to configure and merge cells in a column based on same data or other custom condition, into a single cell.
11-
12-
It can be enabled on the individual columns:
1312

14-
```html
15-
<igx-column field="field" [merge]="true"></igx-column>
16-
```
17-
The merging can be configured on the grid level to apply either:
18-
- `onSort` - only when the column is sorted.
19-
- `always` - always, regardless of data operations.
13+
It can be enabled on the individual columns:
2014

21-
```html
15+
```html
16+
<igx-column field="field" [merge]="true"></igx-column>
17+
```
18+
The merging can be configured on the grid level to apply either:
19+
- `onSort` - only when the column is sorted.
20+
- `always` - always, regardless of data operations.
21+
22+
```html
2223
<igx-grid [cellMergeMode]="'always'">
2324
</igx-grid>
24-
```
25+
```
2526

26-
The default `cellMergeMode` is `onSort`.
27+
The default `cellMergeMode` is `onSort`.
2728

28-
The functionality can be modified by setting a custom `mergeStrategy` on the grid, in case some other merge conditions or logic is needed for a custom scenario.
29+
The functionality can be modified by setting a custom `mergeStrategy` on the grid, in case some other merge conditions or logic is needed for a custom scenario.
30+
31+
It's possible also to set a `mergeComparer` on the individual columns, in case some custom handling is needed for a particular data field.
32+
33+
- Added ability to pin individual columns to a specific side (start or end of the grid), so that you can now have pinning from both sides. This can be done either declaratively by setting the `pinningPosition` property on the column:
34+
35+
```html
36+
<igx-column [field]="'Col1'" [pinned]='true' [pinningPosition]='pinningPosition'>
37+
</igx-column>
38+
```
39+
40+
```ts
41+
public pinningPosition = ColumnPinningPosition.End;
42+
```
43+
44+
Or with the API, via optional parameter:
45+
46+
```ts
47+
grid.pinColumn('Col1', 0, ColumnPinningPosition.End);
48+
grid.pinColumn('Col2', 0, ColumnPinningPosition.Start);
49+
```
50+
51+
If property `pinningPosition` is not set on a column, the column will default to the position specified on the grid's `pinning` options for `columns`.
52+
53+
- `IgxDateRangePicker`
54+
- Added cancel button to the dialog, allowing the user to cancel the selection.
2955

30-
It's possible also to set a `mergeComparer` on the individual columns, in case some custom handling is needed for a particular data field.
3156

3257
- `IgxCarousel`
3358
- Added `select` method overload accepting index.
3459
```ts
3560
this.carousel.select(2, Direction.NEXT);
3661
```
3762

63+
- `IgxDateRangePicker`
64+
- Added new properties:
65+
- `usePredefinedRanges` - Whether to render built-in predefined ranges
66+
- `customRanges` - Allows the user to provide custom ranges rendered as chips
67+
- `resourceStrings` - Allows the user to provide set of resource strings
68+
69+
- `IgxPredefinedRangesAreaComponent`
70+
- Added new component for rendering the predefined or custom ranges inside the calendar of the `IgxDateRangePicker`
71+
72+
- `IgxOverlay`
73+
- Position Settings now accept a new optional `offset` input property of type `number`. Used to set the offset of the element from the target in pixels.
74+
75+
- `IgxTooltip`
76+
- The tooltip now remains open while interacting with it.
77+
- `IgxTooltipTarget`
78+
- Introduced several new properties to enhance customization of tooltip content and behavior. Those include `positionSettings`, `hasArrow`, `sticky`, `closeButtonTemplate`. For detailed usage and examples, please refer to the Tooltip [README](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/tooltip/README.md).
79+
80+
3881
### General
3982
- `IgxDropDown` now exposes a `role` input property, allowing users to customize the role attribute based on the use case. The default is `listbox`.
4083

84+
- `IgxTooltipTarget`
85+
- **Behavioral Changes**
86+
- The `showDelay` input property now defaults to `200`.
87+
- The `hideDelay` input property now defaults to `300`.
88+
- The `showTooltip` and `hideTooltip` methods do not take `showDelay`/`hideDelay` into account.
4189

4290
## 20.0.6
4391
### General
@@ -130,24 +178,24 @@ All notable changes for each version of this project will be documented in this
130178
- Added the `canCommit`, `commit` and `discard` public methods that allows the user to save/discard the current state of the expression tree.
131179
- Added option to template the search value input:
132180
```
133-
<ng-template igxQueryBuilderSearchValue
181+
<ng-template igxQueryBuilderSearchValue
134182
let-searchValue
135-
let-selectedField = "selectedField"
183+
let-selectedField = "selectedField"
136184
let-selectedCondition = "selectedCondition"
137185
let-defaultSearchValueTemplate = "defaultSearchValueTemplate">
138186
@if (selectedField?.field === 'Id' && selectedCondition === 'equals'){
139187
<input type="text" required [(ngModel)]="searchValue.value"/>
140-
} @else {
188+
} @else {
141189
<ng-container #defaultTemplate *ngTemplateOutlet="defaultSearchValueTemplate"></ ng-container>
142190
}
143-
</ng-template>
191+
</ng-template>
144192
```
145-
- **Behavioral Changes**
193+
- **Behavioral Changes**
146194
- Expression enters edit mode on single click, `Enter` or `Space`.
147195
- Selecting conditions inside the `IgxQueryBuilderComponent` is no longer supported. Grouping/ungrouping expressions is now achieved via the newly exposed Drag & Drop functionality.
148196
- Deleting multiple expressions through the context menu is no longer supported.
149197
- `IgxQueryBuilderHeaderComponent`
150-
- **Behavioral Change**
198+
- **Behavioral Change**
151199
- Legend is no longer shown.
152200
- If the `title` input property is not set, by default it would be empty string.
153201
- **Deprecation**
@@ -229,9 +277,9 @@ All notable changes for each version of this project will be documented in this
229277

230278
### Themes
231279
- **Breaking Change** `Palettes`
232-
- All palette colors have been migrated to the [CSS relative colors syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_colors/Relative_colors). This means that color consumed as CSS variables no longer need to be wrapped in an `hsl` function.
280+
- All palette colors have been migrated to the [CSS relative colors syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_colors/Relative_colors). This means that color consumed as CSS variables no longer need to be wrapped in an `hsl` function.
233281

234-
Example:
282+
Example:
235283
```css
236284
/* 18.1.x and before: */
237285
background: hsl(var(--ig-primary-600));
@@ -242,7 +290,7 @@ All notable changes for each version of this project will be documented in this
242290

243291
This change also opens up the door for declaring the base (500) variants of each color in CSS from any color, including other CSS variables, whereas before the Sass `palette` function was needed to generate color shades from a base color.
244292

245-
Example:
293+
Example:
246294
```scss
247295
/* 18.1.x and before: */
248296
$my-palette: palette($primary: #09f, ...);
@@ -282,7 +330,7 @@ For Firefox users, we provide limited scrollbar styling options through the foll
282330
- `animationType` input property is now of type `CarouselAnimationType`. `HorizontalAnimationType` can also be used, however, to accommodate the new vertical mode, which supports vertical slide animations, it is recommended to use `CarouselAnimationType`.
283331

284332
- **Behavioral Changes** - the `keyboardSupport` input property now defaults to `false`.
285-
- **Deprecation** - the `keyboardSupport` input property has been deprecated and will be removed in a future version. Keyboard navigation with `ArrowLeft`, `ArrowRight`, `Home`, and `End` keys will be supported when focusing the indicators' container via ` Tab`/`Shift+Tab`.
333+
- **Deprecation** - the `keyboardSupport` input property has been deprecated and will be removed in a future version. Keyboard navigation with `ArrowLeft`, `ArrowRight`, `Home`, and `End` keys will be supported when focusing the indicators' container via ` Tab`/`Shift+Tab`.
286334

287335
- `IgxCombo`:
288336
- **Breaking Change** The deprecated `filterable` property is replaced with `disableFiltering`.

projects/igniteui-angular-elements/src/analyzer/elements.config.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ export var registerConfig = [
277277
{ name: "defaultHeaderGroupMinWidth" },
278278
{ name: "columns" },
279279
{ name: "pinnedColumns" },
280+
{ name: "pinnedStartColumns" },
281+
{ name: "pinnedEndColumns" },
280282
{ name: "pinnedRows" },
281283
{ name: "unpinnedColumns" },
282284
{ name: "visibleColumns" },
@@ -330,7 +332,8 @@ export var registerConfig = [
330332
"findPrev",
331333
"refreshSearch",
332334
"clearSearch",
333-
"getPinnedWidth",
335+
"getPinnedStartWidth",
336+
"getPinnedEndWidth",
334337
"selectRows",
335338
"deselectRows",
336339
"selectAllRows",
@@ -571,6 +574,8 @@ export var registerConfig = [
571574
{ name: "defaultHeaderGroupMinWidth" },
572575
{ name: "columns" },
573576
{ name: "pinnedColumns" },
577+
{ name: "pinnedStartColumns" },
578+
{ name: "pinnedEndColumns" },
574579
{ name: "pinnedRows" },
575580
{ name: "unpinnedColumns" },
576581
{ name: "visibleColumns" },
@@ -616,7 +621,8 @@ export var registerConfig = [
616621
"findPrev",
617622
"refreshSearch",
618623
"clearSearch",
619-
"getPinnedWidth",
624+
"getPinnedStartWidth",
625+
"getPinnedEndWidth",
620626
"selectRows",
621627
"deselectRows",
622628
"selectAllRows",
@@ -751,6 +757,8 @@ export var registerConfig = [
751757
{ name: "defaultRowHeight" },
752758
{ name: "defaultHeaderGroupMinWidth" },
753759
{ name: "columns" },
760+
{ name: "pinnedStartColumns" },
761+
{ name: "pinnedEndColumns" },
754762
{ name: "visibleColumns" },
755763
{ name: "dataView" },
756764
],
@@ -783,6 +791,7 @@ export var registerConfig = [
783791
"clearFilter",
784792
"clearSort",
785793
"reflow",
794+
"getPinnedEndWidth",
786795
"selectRows",
787796
"deselectRows",
788797
"selectAllRows",
@@ -875,6 +884,8 @@ export var registerConfig = [
875884
{ name: "defaultRowHeight" },
876885
{ name: "defaultHeaderGroupMinWidth" },
877886
{ name: "columns" },
887+
{ name: "pinnedStartColumns" },
888+
{ name: "pinnedEndColumns" },
878889
{ name: "pinnedRows" },
879890
],
880891
methods: [
@@ -911,7 +922,8 @@ export var registerConfig = [
911922
"findPrev",
912923
"refreshSearch",
913924
"clearSearch",
914-
"getPinnedWidth",
925+
"getPinnedStartWidth",
926+
"getPinnedEndWidth",
915927
"selectRows",
916928
"deselectRows",
917929
"selectAllRows",
@@ -1025,6 +1037,8 @@ export var registerConfig = [
10251037
{ name: "defaultHeaderGroupMinWidth" },
10261038
{ name: "columns" },
10271039
{ name: "pinnedColumns" },
1040+
{ name: "pinnedStartColumns" },
1041+
{ name: "pinnedEndColumns" },
10281042
{ name: "pinnedRows" },
10291043
{ name: "unpinnedColumns" },
10301044
{ name: "visibleColumns" },
@@ -1072,7 +1086,8 @@ export var registerConfig = [
10721086
"findPrev",
10731087
"refreshSearch",
10741088
"clearSearch",
1075-
"getPinnedWidth",
1089+
"getPinnedStartWidth",
1090+
"getPinnedEndWidth",
10761091
"selectRows",
10771092
"deselectRows",
10781093
"selectAllRows",

projects/igniteui-angular-i18n/src/i18n/BG/date-range-picker-resources.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ import { IDateRangePickerResourceStrings } from 'igniteui-angular';
66
*/
77
export const DateRangePickerResourceStringsBG = {
88
igx_date_range_picker_date_separator: 'до',
9-
igx_date_range_picker_done_button: 'Завърши'
9+
igx_date_range_picker_done_button: 'Завърши',
10+
igx_date_range_picker_cancel_button: 'Отмени',
11+
igx_date_range_picker_last7Days: 'Последните 7 дни',
12+
igx_date_range_picker_currentMonth: 'Текущ месец',
13+
igx_date_range_picker_last30Days: 'Последните 30 дни',
14+
igx_date_range_picker_yearToDate: 'От началото на годината'
1015
} satisfies MakeRequired<IDateRangePickerResourceStrings>;

projects/igniteui-angular-i18n/src/i18n/CS/date-range-picker-resources.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ import { IDateRangePickerResourceStrings } from 'igniteui-angular';
66
*/
77
export const DateRangePickerResourceStringsCS = {
88
igx_date_range_picker_date_separator: 'na',
9-
igx_date_range_picker_done_button: 'Hotovo'
9+
igx_date_range_picker_done_button: 'Hotovo',
10+
igx_date_range_picker_cancel_button: 'Zrušit',
11+
igx_date_range_picker_last7Days: 'Posledních 7 dní',
12+
igx_date_range_picker_currentMonth: 'Tento měsíc',
13+
igx_date_range_picker_last30Days: 'Posledních 30 dní',
14+
igx_date_range_picker_yearToDate: 'Od začátku roku',
1015
} satisfies MakeRequired<IDateRangePickerResourceStrings>;

projects/igniteui-angular-i18n/src/i18n/DA/date-range-picker-resources.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ import { IDateRangePickerResourceStrings } from 'igniteui-angular';
66
*/
77
export const DateRangePickerResourceStringsDA = {
88
igx_date_range_picker_date_separator: 'till',
9-
igx_date_range_picker_done_button: 'Færdigt'
9+
igx_date_range_picker_done_button: 'Færdigt',
10+
igx_date_range_picker_cancel_button: 'Annuller',
11+
igx_date_range_picker_last7Days: 'Sidste 7 dage',
12+
igx_date_range_picker_currentMonth: 'Denne måned',
13+
igx_date_range_picker_last30Days: 'Sidste 30 dage',
14+
igx_date_range_picker_yearToDate: 'Året til dato',
1015
} satisfies MakeRequired<IDateRangePickerResourceStrings>;

projects/igniteui-angular-i18n/src/i18n/DE/date-range-picker-resources.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ import { IDateRangePickerResourceStrings } from 'igniteui-angular';
66
*/
77
export const DateRangePickerResourceStringsDE = {
88
igx_date_range_picker_date_separator: 'bis',
9-
igx_date_range_picker_done_button: 'Fertig'
9+
igx_date_range_picker_done_button: 'Fertig',
10+
igx_date_range_picker_cancel_button: 'Abbrechen',
11+
igx_date_range_picker_last7Days: 'Letzte 7 Tage',
12+
igx_date_range_picker_currentMonth: 'Aktueller Monat',
13+
igx_date_range_picker_last30Days: 'Letzte 30 Tage',
14+
igx_date_range_picker_yearToDate: 'Jahr bis heute',
1015
} satisfies MakeRequired<IDateRangePickerResourceStrings>;

projects/igniteui-angular-i18n/src/i18n/ES/date-range-picker-resources.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ import { IDateRangePickerResourceStrings } from 'igniteui-angular';
66
*/
77
export const DateRangePickerResourceStringsES = {
88
igx_date_range_picker_date_separator: 'a',
9-
igx_date_range_picker_done_button: 'Listo'
9+
igx_date_range_picker_done_button: 'Listo',
10+
igx_date_range_picker_cancel_button: 'Cancelar',
11+
igx_date_range_picker_last7Days: 'Últimos 7 días',
12+
igx_date_range_picker_currentMonth: 'Mes actual',
13+
igx_date_range_picker_last30Days: 'Últimos 30 días',
14+
igx_date_range_picker_yearToDate: 'Año hasta la fecha',
1015
} satisfies MakeRequired<IDateRangePickerResourceStrings>;

projects/igniteui-angular-i18n/src/i18n/FR/date-range-picker-resources.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ import { IDateRangePickerResourceStrings } from 'igniteui-angular';
66
*/
77
export const DateRangePickerResourceStringsFR = {
88
igx_date_range_picker_date_separator: 'à',
9-
igx_date_range_picker_done_button: 'Terminée'
9+
igx_date_range_picker_done_button: 'Terminée',
10+
igx_date_range_picker_cancel_button: 'Annuler',
11+
igx_date_range_picker_last7Days: '7 derniers jours',
12+
igx_date_range_picker_currentMonth: 'Mois en cours',
13+
igx_date_range_picker_last30Days: '30 derniers jours',
14+
igx_date_range_picker_yearToDate: 'Année à ce jour',
1015
} satisfies MakeRequired<IDateRangePickerResourceStrings>;

projects/igniteui-angular-i18n/src/i18n/HU/date-range-picker-resources.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ import { IDateRangePickerResourceStrings } from 'igniteui-angular';
66
*/
77
export const DateRangePickerResourceStringsHU = {
88
igx_date_range_picker_date_separator: '-',
9-
igx_date_range_picker_done_button: 'Kész'
9+
igx_date_range_picker_done_button: 'Kész',
10+
igx_date_range_picker_cancel_button: 'Mégse',
11+
igx_date_range_picker_last7Days: 'Az elmúlt 7 nap',
12+
igx_date_range_picker_currentMonth: 'Aktuális hónap',
13+
igx_date_range_picker_last30Days: 'Az elmúlt 30 nap',
14+
igx_date_range_picker_yearToDate: 'Év elejétől napjainkig',
1015
} satisfies MakeRequired<IDateRangePickerResourceStrings>;

0 commit comments

Comments
 (0)