Skip to content

Commit b96b517

Browse files
authored
Merge branch 'master' into skrastev/fix-16082-master
2 parents 726f5f6 + 49f15c2 commit b96b517

File tree

620 files changed

+17729
-1398
lines changed

Some content is hidden

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

620 files changed

+17729
-1398
lines changed

CHANGELOG.md

Lines changed: 98 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,107 @@ All notable changes for each version of this project will be documented in this
44

55

66
## 20.1.0
7+
78
### New Features
9+
10+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
11+
- 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.
12+
13+
It can be enabled on the individual columns:
14+
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
23+
<igx-grid [cellMergeMode]="'always'">
24+
</igx-grid>
25+
```
26+
27+
The default `cellMergeMode` is `onSort`.
28+
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+
853
- `IgxCarousel`
954
- Added `select` method overload accepting index.
1055
```ts
1156
this.carousel.select(2, Direction.NEXT);
1257
```
1358

1459
- `IgxDateRangePicker`
15-
- Added new properties:
60+
- Now has a complete set of properties to customize the calendar:
61+
- `headerOrientation`
62+
- `orientation`
63+
- `hideHeader`
64+
- `activeDate`
65+
- `disabledDates`
66+
- `specialDates`
67+
68+
- As well as the following templates, available to customize the contents of the calendar header in `dialog` mode:
69+
- `igxCalendarHeader`
70+
- `igxCalendarHeaderTitle`
71+
- `igxCalendarSubheader`
72+
73+
- Added new properties:
1674
- `usePredefinedRanges` - Whether to render built-in predefined ranges
1775
- `customRanges` - Allows the user to provide custom ranges rendered as chips
1876
- `resourceStrings` - Allows the user to provide set of resource strings
1977

20-
- `IgxPredefinedRangesAreaComponent`
21-
- Added new component for rendering the predefined or custom ranges inside the calendar of the `IgxDateRangePicker`
78+
- **Behavioral Changes**
79+
- Added cancel button to the dialog, allowing the user to cancel the selection.
80+
- The calendar is displayed with header in `dialog` mode by default.
81+
- The picker remains open when typing (in two-inputs and `dropdown` mode).
82+
- The calendar selection is updated with the typed value.
83+
- The calendar view is updated as per the typed value.
84+
- The picker displays a clear icon by default in single input mode.
85+
86+
- `IgxPredefinedRangesAreaComponent`
87+
- Added new component for rendering the predefined or custom ranges inside the calendar of the `IgxDateRangePicker`
88+
89+
- `IgxDatePicker`
90+
- Similar to the `IgxDateRangePicker`, also completes the ability to customize the calendar by introducing the following
91+
properties in addition to the existing ones:
92+
- `hideHeader`
93+
- `orientation`
94+
- `activeDate`
95+
- **Behavioral Changes**
96+
- The calendar selection is updated with the typed value.
97+
- The calendar view is updated as per the typed date value.
2298

2399
- `IgxOverlay`
24100
- 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.
25101

26102
- `IgxTooltip`
27103
- The tooltip now remains open while interacting with it.
104+
28105
- `IgxTooltipTarget`
29106
- 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).
30107

31-
32108
### General
33109
- `IgxDropDown` now exposes a `role` input property, allowing users to customize the role attribute based on the use case. The default is `listbox`.
34110

@@ -38,6 +114,14 @@ All notable changes for each version of this project will be documented in this
38114
- The `hideDelay` input property now defaults to `300`.
39115
- The `showTooltip` and `hideTooltip` methods do not take `showDelay`/`hideDelay` into account.
40116

117+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`, `IgxPivotGrid`
118+
- **Sorting improvements**
119+
- Improved sorting algorithm efficiency using Schwartzian transformation. This is a technique, also known as decorate-sort-undecorate, which avoids recomputing the sort keys by temporarily associating them with the original data records.
120+
- Refactored sorting algorithms from recursive to iterative.
121+
- **Groupby improvements**
122+
- Refactored grouping algorithm from recursive to iterative.
123+
- Optimized grouping operations.
124+
41125
## 20.0.6
42126
### General
43127
- `IgxSimpleCombo`
@@ -129,24 +213,24 @@ All notable changes for each version of this project will be documented in this
129213
- Added the `canCommit`, `commit` and `discard` public methods that allows the user to save/discard the current state of the expression tree.
130214
- Added option to template the search value input:
131215
```
132-
<ng-template igxQueryBuilderSearchValue
216+
<ng-template igxQueryBuilderSearchValue
133217
let-searchValue
134-
let-selectedField = "selectedField"
218+
let-selectedField = "selectedField"
135219
let-selectedCondition = "selectedCondition"
136220
let-defaultSearchValueTemplate = "defaultSearchValueTemplate">
137221
@if (selectedField?.field === 'Id' && selectedCondition === 'equals'){
138222
<input type="text" required [(ngModel)]="searchValue.value"/>
139-
} @else {
223+
} @else {
140224
<ng-container #defaultTemplate *ngTemplateOutlet="defaultSearchValueTemplate"></ ng-container>
141225
}
142-
</ng-template>
226+
</ng-template>
143227
```
144-
- **Behavioral Changes**
228+
- **Behavioral Changes**
145229
- Expression enters edit mode on single click, `Enter` or `Space`.
146230
- Selecting conditions inside the `IgxQueryBuilderComponent` is no longer supported. Grouping/ungrouping expressions is now achieved via the newly exposed Drag & Drop functionality.
147231
- Deleting multiple expressions through the context menu is no longer supported.
148232
- `IgxQueryBuilderHeaderComponent`
149-
- **Behavioral Change**
233+
- **Behavioral Change**
150234
- Legend is no longer shown.
151235
- If the `title` input property is not set, by default it would be empty string.
152236
- **Deprecation**
@@ -228,9 +312,9 @@ All notable changes for each version of this project will be documented in this
228312

229313
### Themes
230314
- **Breaking Change** `Palettes`
231-
- 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.
315+
- 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.
232316

233-
Example:
317+
Example:
234318
```css
235319
/* 18.1.x and before: */
236320
background: hsl(var(--ig-primary-600));
@@ -241,7 +325,7 @@ All notable changes for each version of this project will be documented in this
241325

242326
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.
243327

244-
Example:
328+
Example:
245329
```scss
246330
/* 18.1.x and before: */
247331
$my-palette: palette($primary: #09f, ...);
@@ -281,7 +365,7 @@ For Firefox users, we provide limited scrollbar styling options through the foll
281365
- `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`.
282366

283367
- **Behavioral Changes** - the `keyboardSupport` input property now defaults to `false`.
284-
- **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`.
368+
- **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`.
285369

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

angular.json

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,97 @@
478478
}
479479
}
480480
}
481+
},
482+
"igniteui-angular-performance": {
483+
"projectType": "application",
484+
"schematics": {
485+
"@schematics/angular:component": {
486+
"style": "scss"
487+
}
488+
},
489+
"root": "projects/igniteui-angular-performance",
490+
"sourceRoot": "projects/igniteui-angular-performance/src",
491+
"prefix": "app",
492+
"architect": {
493+
"build": {
494+
"builder": "@angular/build:application",
495+
"options": {
496+
"browser": "projects/igniteui-angular-performance/src/main.ts",
497+
"polyfills": [
498+
"zone.js"
499+
],
500+
"tsConfig": "projects/igniteui-angular-performance/tsconfig.app.json",
501+
"inlineStyleLanguage": "scss",
502+
"assets": [
503+
"projects/igniteui-angular-performance/src/assets"
504+
],
505+
"styles": [
506+
"projects/igniteui-angular-performance/src/styles.scss"
507+
],
508+
"stylePreprocessorOptions": {
509+
"includePaths": ["node_modules"]
510+
}
511+
},
512+
"configurations": {
513+
"production": {
514+
"budgets": [
515+
{
516+
"type": "initial",
517+
"maximumWarning": "500kB",
518+
"maximumError": "1MB"
519+
},
520+
{
521+
"type": "anyComponentStyle",
522+
"maximumWarning": "4kB",
523+
"maximumError": "8kB"
524+
}
525+
],
526+
"outputHashing": "all"
527+
},
528+
"development": {
529+
"optimization": false,
530+
"extractLicenses": false,
531+
"sourceMap": true
532+
}
533+
},
534+
"defaultConfiguration": "production"
535+
},
536+
"serve": {
537+
"builder": "@angular/build:dev-server",
538+
"configurations": {
539+
"production": {
540+
"buildTarget": "igniteui-angular-performance:build:production"
541+
},
542+
"development": {
543+
"buildTarget": "igniteui-angular-performance:build:development"
544+
}
545+
},
546+
"defaultConfiguration": "development"
547+
},
548+
"extract-i18n": {
549+
"builder": "@angular/build:extract-i18n"
550+
},
551+
"test": {
552+
"builder": "@angular/build:karma",
553+
"options": {
554+
"polyfills": [
555+
"zone.js",
556+
"zone.js/testing"
557+
],
558+
"tsConfig": "projects/igniteui-angular-performance/tsconfig.spec.json",
559+
"inlineStyleLanguage": "scss",
560+
"assets": [
561+
{
562+
"glob": "**/*",
563+
"input": "projects/igniteui-angular-performance/public"
564+
}
565+
],
566+
"styles": [
567+
"projects/igniteui-angular-performance/src/styles.scss"
568+
]
569+
}
570+
}
571+
}
481572
}
482573
},
483574
"cli": {

package-lock.json

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"ng": "ng",
66
"start": "ng serve --open --hmr",
77
"start:elements": "ng serve --project igniteui-angular-elements",
8+
"start:performance": "ng serve --project igniteui-angular-performance",
89
"build": "ng build --configuration production",
910
"test": "ng test igniteui-angular",
1011
"lint": "ng lint",
@@ -74,7 +75,7 @@
7475
"@types/source-map": "0.5.2",
7576
"express": "^5.1.0",
7677
"fflate": "^0.8.1",
77-
"igniteui-theming": "^19.2.3",
78+
"igniteui-theming": "^19.3.1",
7879
"igniteui-trial-watermark": "^3.1.0",
7980
"lodash-es": "^4.17.21",
8081
"rxjs": "^7.8.2",
@@ -119,8 +120,8 @@
119120
"hammerjs": "^2.0.8",
120121
"ig-typedoc-theme": "^6.0.0",
121122
"igniteui-dockmanager": "^1.16.1",
122-
"igniteui-sassdoc-theme": "^2.0.1",
123-
"igniteui-webcomponents": "6.1.1",
123+
"igniteui-sassdoc-theme": "^2.0.2",
124+
"igniteui-webcomponents": "6.2.1",
124125
"jasmine": "^5.6.0",
125126
"jasmine-core": "^5.6.0",
126127
"karma": "^6.4.4",

0 commit comments

Comments
 (0)