Skip to content

Commit 2c4ed5d

Browse files
committed
Merge master into skrastev/localization
2 parents 133b48f + cd2b8ca commit 2c4ed5d

File tree

501 files changed

+16094
-624
lines changed

Some content is hidden

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

501 files changed

+16094
-624
lines changed

CHANGELOG.md

Lines changed: 93 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,59 +4,111 @@ All notable changes for each version of this project will be documented in this
44

55

66
## 20.1.0
7+
78
### New Features
89
- `Internationalization`
910
- Old api is being marked as deprecated but it should remain working the same without any breaking change.
1011
- New localization and locale implementation based on Intl. for all components with new public API and package named 'igniteui-i18n-resources' containing now the resources.
1112
- With the new implementation locales no longer need to be registered, only language resources for components.
1213

13-
- `IgxDateRangePicker`
14-
- Added cancel button to the dialog, allowing the user to cancel the selection.
15-
16-
- `IgxCarousel`
17-
- Added `select` method overload accepting index.
18-
```ts
19-
this.carousel.select(2, Direction.NEXT);
20-
```
2114
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
15+
- 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.
16+
17+
It can be enabled on the individual columns:
18+
19+
```html
20+
<igx-column field="field" [merge]="true"></igx-column>
21+
```
22+
The merging can be configured on the grid level to apply either:
23+
- `onSort` - only when the column is sorted.
24+
- `always` - always, regardless of data operations.
25+
26+
```html
27+
<igx-grid [cellMergeMode]="'always'">
28+
</igx-grid>
29+
```
30+
31+
The default `cellMergeMode` is `onSort`.
32+
33+
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.
34+
35+
It's possible also to set a `mergeComparer` on the individual columns, in case some custom handling is needed for a particular data field.
36+
2237
- 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:
2338

24-
```html
25-
<igx-column [field]="'Col1'" [pinned]='true' [pinningPosition]='pinningPosition'>
26-
</igx-column>
27-
```
39+
```html
40+
<igx-column [field]="'Col1'" [pinned]='true' [pinningPosition]='pinningPosition'>
41+
</igx-column>
42+
```
2843

29-
```ts
30-
public pinningPosition = ColumnPinningPosition.End;
31-
```
44+
```ts
45+
public pinningPosition = ColumnPinningPosition.End;
46+
```
3247

33-
Or with the API, via optional parameter:
48+
Or with the API, via optional parameter:
3449

35-
```ts
50+
```ts
3651
grid.pinColumn('Col1', 0, ColumnPinningPosition.End);
3752
grid.pinColumn('Col2', 0, ColumnPinningPosition.Start);
38-
```
53+
```
3954

40-
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`.
55+
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`.
56+
57+
- `IgxCarousel`
58+
- Added `select` method overload accepting index.
59+
```ts
60+
this.carousel.select(2, Direction.NEXT);
61+
```
4162

4263
- `IgxDateRangePicker`
43-
- Added new properties:
64+
- Now has a complete set of properties to customize the calendar:
65+
- `headerOrientation`
66+
- `orientation`
67+
- `hideHeader`
68+
- `activeDate`
69+
- `disabledDates`
70+
- `specialDates`
71+
72+
- As well as the following templates, available to customize the contents of the calendar header in `dialog` mode:
73+
- `igxCalendarHeader`
74+
- `igxCalendarHeaderTitle`
75+
- `igxCalendarSubheader`
76+
77+
- Added new properties:
4478
- `usePredefinedRanges` - Whether to render built-in predefined ranges
4579
- `customRanges` - Allows the user to provide custom ranges rendered as chips
4680
- `resourceStrings` - Allows the user to provide set of resource strings
4781

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

51103
- `IgxOverlay`
52104
- 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.
53105

54106
- `IgxTooltip`
55107
- The tooltip now remains open while interacting with it.
108+
56109
- `IgxTooltipTarget`
57110
- 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).
58111

59-
60112
### General
61113
- `IgxDropDown` now exposes a `role` input property, allowing users to customize the role attribute based on the use case. The default is `listbox`.
62114

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

121+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`, `IgxPivotGrid`
122+
- **Sorting improvements**
123+
- 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.
124+
- Refactored sorting algorithms from recursive to iterative.
125+
- **Groupby improvements**
126+
- Refactored grouping algorithm from recursive to iterative.
127+
- Optimized grouping operations.
128+
69129
## 20.0.6
70130
### General
71131
- `IgxSimpleCombo`
@@ -157,24 +217,24 @@ All notable changes for each version of this project will be documented in this
157217
- Added the `canCommit`, `commit` and `discard` public methods that allows the user to save/discard the current state of the expression tree.
158218
- Added option to template the search value input:
159219
```
160-
<ng-template igxQueryBuilderSearchValue
220+
<ng-template igxQueryBuilderSearchValue
161221
let-searchValue
162-
let-selectedField = "selectedField"
222+
let-selectedField = "selectedField"
163223
let-selectedCondition = "selectedCondition"
164224
let-defaultSearchValueTemplate = "defaultSearchValueTemplate">
165225
@if (selectedField?.field === 'Id' && selectedCondition === 'equals'){
166226
<input type="text" required [(ngModel)]="searchValue.value"/>
167-
} @else {
227+
} @else {
168228
<ng-container #defaultTemplate *ngTemplateOutlet="defaultSearchValueTemplate"></ ng-container>
169229
}
170-
</ng-template>
230+
</ng-template>
171231
```
172-
- **Behavioral Changes**
232+
- **Behavioral Changes**
173233
- Expression enters edit mode on single click, `Enter` or `Space`.
174234
- Selecting conditions inside the `IgxQueryBuilderComponent` is no longer supported. Grouping/ungrouping expressions is now achieved via the newly exposed Drag & Drop functionality.
175235
- Deleting multiple expressions through the context menu is no longer supported.
176236
- `IgxQueryBuilderHeaderComponent`
177-
- **Behavioral Change**
237+
- **Behavioral Change**
178238
- Legend is no longer shown.
179239
- If the `title` input property is not set, by default it would be empty string.
180240
- **Deprecation**
@@ -256,9 +316,9 @@ All notable changes for each version of this project will be documented in this
256316

257317
### Themes
258318
- **Breaking Change** `Palettes`
259-
- 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.
319+
- 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.
260320

261-
Example:
321+
Example:
262322
```css
263323
/* 18.1.x and before: */
264324
background: hsl(var(--ig-primary-600));
@@ -269,7 +329,7 @@ All notable changes for each version of this project will be documented in this
269329

270330
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.
271331

272-
Example:
332+
Example:
273333
```scss
274334
/* 18.1.x and before: */
275335
$my-palette: palette($primary: #09f, ...);
@@ -309,7 +369,7 @@ For Firefox users, we provide limited scrollbar styling options through the foll
309369
- `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`.
310370

311371
- **Behavioral Changes** - the `keyboardSupport` input property now defaults to `false`.
312-
- **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`.
372+
- **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`.
313373

314374
- `IgxCombo`:
315375
- **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.json

Lines changed: 1 addition & 0 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",

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export var registerConfig = [
9595
],
9696
numericProps: ["rowEnd", "colEnd", "rowStart", "colStart"],
9797
boolProps: [
98+
"merge",
9899
"sortable",
99100
"selectable",
100101
"groupable",
@@ -158,6 +159,7 @@ export var registerConfig = [
158159
"expanded",
159160
"searchable",
160161
"hidden",
162+
"merge",
161163
"sortable",
162164
"groupable",
163165
"editable",
@@ -213,6 +215,7 @@ export var registerConfig = [
213215
"collapsible",
214216
"expanded",
215217
"searchable",
218+
"merge",
216219
"sortable",
217220
"groupable",
218221
"editable",

projects/igniteui-angular-elements/src/public_api.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { IgxPivotDateDimension } from 'projects/igniteui-angular/src/lib/grids/p
1313
import { PivotDimensionType } from 'projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.interface';
1414
import { IgxDateSummaryOperand, IgxNumberSummaryOperand, IgxSummaryOperand, IgxTimeSummaryOperand } from 'projects/igniteui-angular/src/lib/grids/summaries/grid-summary';
1515
import { HorizontalAlignment, VerticalAlignment } from 'projects/igniteui-angular/src/lib/services/overlay/utilities';
16-
16+
import { ByLevelTreeGridMergeStrategy } from 'projects/igniteui-angular/src/lib/data-operations/merge-strategy';
1717

1818
/** Export Public API, TODO: reorganize, Generate all w/ renames? */
1919
export {
@@ -36,6 +36,7 @@ export {
3636

3737
NoopSortingStrategy as IgcNoopSortingStrategy,
3838
NoopFilteringStrategy as IgcNoopFilteringStrategy,
39+
ByLevelTreeGridMergeStrategy as IgcByLevelTreeGridMergeStrategy,
3940

4041
// Pivot API
4142
IgxPivotDateDimension as IgcPivotDateDimension,
14.7 KB
Binary file not shown.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<main class="wrapper">
2+
<div class="routes">
3+
@for (route of routes; track $index) {
4+
<button igxButton="contained" routerLink="/{{ route.path }}">
5+
{{ route.title }}
6+
</button>
7+
}
8+
</div>
9+
<router-outlet />
10+
</main>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
:host {
2+
width: 100%;
3+
height: 100%;
4+
display: flex;
5+
}
6+
7+
.wrapper {
8+
width: 100%;
9+
height: 100%;
10+
display: flex;
11+
flex-direction: column;
12+
}
13+
14+
.routes {
15+
padding: 1rem;
16+
display: flex;
17+
gap: 1rem;
18+
}

0 commit comments

Comments
 (0)