Skip to content

Commit b2ed17c

Browse files
authored
Merge branch 'master' into SKrastev/drag-drop-refactor
2 parents f1f38a1 + dedcc1a commit b2ed17c

File tree

57 files changed

+1183
-502
lines changed

Some content is hidden

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

57 files changed

+1183
-502
lines changed

CHANGELOG.md

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

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

5+
## 8.1.2
6+
7+
### New Features
8+
- `IgxDatePicker`
9+
- `valueChange` event is added.
10+
511
## 8.1.0
612

713
### New Features
@@ -15,7 +21,7 @@ All notable changes for each version of this project will be documented in this
1521
- **Behavioral Change** - paging now includes the group rows in the page size. You may find more information about the change in the [GroupBy Specification](https://github.com/IgniteUI/igniteui-angular/wiki/Group-By-Specification)
1622
- `IgxColumnGroup`
1723
- Re-templating the column group header is now possible using the `headerTemplate` input property or the `igxHeader` directive.
18-
- `igx-grid-footer`
24+
- `igx-grid-footer`
1925
- You can use this to insert a custom footer in the grids.
2026
```html
2127
<igx-grid>
@@ -41,21 +47,21 @@ All notable changes for each version of this project will be documented in this
4147

4248
## 8.0.2
4349
- `igx-list-theme` now have some new parameters for styling.
44-
- $item-background-hover - Change The list item hover background
50+
- $item-background-hover - Change The list item hover background
4551
- $item-text-color-hover - Change The list item hover text color.
46-
52+
4753
- $item-subtitle-color - Change The list item subtitle color.
4854
- $item-subtitle-color-hover - Change The list item hover subtitle color.
4955
- $item-subtitle-color-active - Change The active list item subtitle color.
50-
56+
5157
- $item-action-color - Change The list item actions color.
5258
- $item-action-color-hover - Change The list item hover actions color.
5359
- $item-action-color-active - Change The active list item actions color.
54-
60+
5561
- $item-thumbnail-color - Change The list item thumbnail color.
5662
- $item-thumbnail-color-hover - Change The list item hover thumbnail color.
5763
- $item-thumbnail-color-active - Change The active list item thumbnail color.
58-
64+
5965
- **Behavioral Change** default min column width is changed according the grid display density property:
6066
- for `DisplayDensity.comfortable` defaultMinWidth is `80px`;
6167
- for `DisplayDensity.cosy` defaultMinWidth is `64px`;

ROADMAP.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
2. IgxGrid row and cell selection modes [#4989](https://github.com/IgniteUI/igniteui-angular/issues/4989)
99
3. Fluent Theme [#5335](https://github.com/IgniteUI/igniteui-angular/issues/5335)
1010
4. Drag and Drop enhancements [#5319](https://github.com/IgniteUI/igniteui-angular/issues/5319)
11+
5. Multi-View Calendar + Range DatePicker [#4282](https://github.com/IgniteUI/igniteui-angular/issues/4282)
12+
6. Custom grid row selector templates [#4998](https://github.com/IgniteUI/igniteui-angular/issues/4998)
13+
7. Per-column Filtering Strategies [#5323](https://github.com/IgniteUI/igniteui-angular/issues/5323)
1114

1215
## Going down the road
1316

projects/igniteui-angular/src/lib/core/styles/components/grid/_excel-filtering-component.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@
6868
@extend %grid-excel-actions__action !optional;
6969
}
7070

71+
@include e(actions-pin, $m: disabled) {
72+
@extend %grid-excel-actions__action !optional;
73+
@extend %grid-excel-actions__action--disabled !optional;
74+
}
75+
7176
@include e(actions-unpin) {
7277
@extend %grid-excel-actions__action !optional;
7378
}

projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
/// @param {Color} $header-border-color [null] - The color used for header borders.
1919
///
2020
/// @param {Color} $sorted-header-icon-color [null] - The sort icon color when sorted.
21+
/// @param {color} $sortable-header-icon-hover-color [null] - The icon color on hover in grid header when the column is sortable.
2122
///
2223
/// @param {Color} $content-background [null] - The table body background color.
2324
/// @param {Color} $content-text-color [null] - The table body text color.
@@ -192,6 +193,7 @@
192193
$row-ghost-background: null,
193194
$row-drag-color: null,
194195
$drop-area-border-radius: null,
196+
$sortable-header-icon-hover-color: null
195197
) {
196198
$name: 'igx-grid';
197199
$grid-schema: map-get($schema, $name);
@@ -474,7 +476,8 @@
474476
drag-shadow: $drag-shadow,
475477
row-ghost-background: $row-ghost-background,
476478
row-drag-color: $row-drag-color,
477-
drop-area-border-radius: $drop-area-border-radius
479+
drop-area-border-radius: $drop-area-border-radius,
480+
sortable-header-icon-hover-color: $sortable-header-icon-hover-color
478481
));
479482
}
480483

projects/igniteui-angular/src/lib/core/styles/components/list/_list-theme.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@
373373
}
374374

375375
%igx-list__item-lines {
376-
color: --var($theme, 'item-text-color');
376+
color: currentColor;
377377
display: flex;
378378
flex-direction: column;
379379
flex: 1 0 0%;

projects/igniteui-angular/src/lib/core/styles/themes/schemas/light/_grid.scss

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
/// @prop {Map} header-background [igx-color: ('grays', 100), hexrgba: #fff] - The table header background color.
1313
/// @prop {Map} header-text-color [igx-color: ('grays', 600)] - The table header text color.
1414
///
15-
/// @prop {Map} $sorted-header-icon-color [igx-color: ('secondary', 500)] - The sorted table header icon color.
15+
/// @prop {Map} sorted-header-icon-color [igx-color: ('secondary', 500)] - The sorted table header icon color.
16+
/// @prop {Map} sortable-header-icon-hover-color [igx-color: ('secondary', 500)] - The icon color on hover in grid header when the column is sortable.
1617
///
1718
/// @prop {Number} header-border-width [1px] - The border width used for header borders.
1819
/// @prop {String} header-border-style [solid] - The border style used for header borders.
@@ -85,22 +86,10 @@ $_light-grid: extend(
8586
igx-color: ('grays', 600)
8687
),
8788

88-
sortable-header-hover-color: (
89-
igx-color: ('grays', 900)
90-
),
91-
92-
sortable-header-hover-icon-color: (
93-
igx-color: ('grays', 500)
94-
),
95-
9689
sortable-header-icon-hover-color: (
9790
igx-color: ('secondary', 500)
9891
),
9992

100-
sorted-header-color: (
101-
igx-color: ('grays', 900)
102-
),
103-
10493
sorted-header-icon-color: (
10594
igx-color: ('secondary', 500)
10695
),

projects/igniteui-angular/src/lib/core/touch.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ export class HammerGesturesManager {
2020
inputClass: Hammer.TouchInput,
2121
recognizers: [
2222
[ Hammer.Pan, { threshold: 0 } ],
23-
[ Hammer.Pinch, { enable: true } ],
24-
[ Hammer.Rotate, { enable: true } ],
2523
[ Hammer.Swipe, {
2624
direction: Hammer.DIRECTION_HORIZONTAL
27-
}]
25+
}],
26+
[Hammer.Tap],
27+
[Hammer.Tap, { event: 'doubletap', taps: 2 }, ['tap']]
2828
]
2929
};
3030

@@ -44,14 +44,14 @@ export class HammerGesturesManager {
4444
public addEventListener(element: HTMLElement,
4545
eventName: string,
4646
eventHandler: (eventObj) => void,
47-
options: object = null): () => void {
47+
options: HammerOptions = null): () => void {
4848

4949
// Creating the manager bind events, must be done outside of angular
5050
return this._zone.runOutsideAngular(() => {
5151
let mc: HammerManager = this.getManagerForElement(element);
5252
if (mc === null) {
5353
// new Hammer is a shortcut for Manager with defaults
54-
mc = new Hammer(element, this.hammerOptions);
54+
mc = new Hammer(element, Object.assign(this.hammerOptions, options));
5555
this.addManagerForElement(element, mc);
5656
}
5757
const handler = (eventObj) => { this._zone.run(() => { eventHandler(eventObj); }); };

projects/igniteui-angular/src/lib/core/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ export const enum KEYS {
170170
*/
171171
export function getNodeSizeViaRange(range: Range, node: any): number {
172172
let overflow = null;
173-
if (isIE() || isEdge()) {
173+
if (!isFirefox()) {
174174
overflow = node.style.overflow;
175175
// we need that hack - otherwise content won't be measured correctly in IE/Edge
176176
node.style.overflow = 'visible';
@@ -179,7 +179,7 @@ export function getNodeSizeViaRange(range: Range, node: any): number {
179179
range.selectNodeContents(node);
180180
const width = range.getBoundingClientRect().width;
181181

182-
if (isIE() || isEdge()) {
182+
if (!isFirefox()) {
183183
// we need that hack - otherwise content won't be measured correctly in IE/Edge
184184
node.style.overflow = overflow;
185185
}

projects/igniteui-angular/src/lib/date-picker/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ In order to re-template a date picker in `dropdown` mode, you should pass the dr
8181
```html
8282
<igx-date-picker>
8383
<ng-template igxDatePickerTemplate let-openDialog="openDialog" let-value="value" let-displayData="displayData">
84-
<igx-input-group (click)="openDialog(dropDownTarget)" #dropDownTarget>
84+
<igx-input-group (click)="openDialog(dropDownTarget)" #dropDownTarget>
8585
<label igxLabel>Date</label>
8686
<input igxInput [value]="displayData"/>
8787
</igx-input-group>
@@ -133,10 +133,12 @@ The DatePicker action buttons could be retemplated.
133133
| Name | Return Type | Description |
134134
|:--:|:---|:---|
135135
| `onSelection` | `Date` | Fired when selection is made in the calendar. The event contains the selected value(s) based on the type of selection the component is set to |
136-
| `onOpen` | `datePicker` | Emitted when a datePicker calendar is being opened. |
137-
| `onClose` | `datePicker` | Emitted when a datePicker calendar is being closed. |
136+
| `onOpened` | `datePicker` | Emitted when a datePicker calendar is opened. |
137+
| `onClosed` | `datePicker` | Emitted when a datePicker calendar is closed. |
138+
| `onClosing` | `CancelableBrowserEventArgs` | Emitted when a datePicker calendar is being closed. |
138139
| `onDisabledDate` | `IDatePickerDisabledDateEventArgs` | Emitted when a disabled date is entered in `dropdown` mode. |
139140
| `onValidationFailed` | `IDatePickerValidationFailedEventArgs` | Emitted when an invalid date is entered in `dropdown` mode. |
141+
| `valueChange` | `Date` | Fired when date picker value is changed |
140142

141143
### Methods
142144
| Name | Arguments | Return Type | Description |

projects/igniteui-angular/src/lib/date-picker/date-picker.component.spec.ts

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,15 @@ describe('IgxDatePicker', () => {
7474
const dom = fixture.debugElement;
7575
const target = dom.query(By.css('.igx-date-picker__input-date'));
7676

77-
spyOn(datePicker.onOpen, 'emit');
78-
spyOn(datePicker.onClose, 'emit');
77+
spyOn(datePicker.onOpened, 'emit');
78+
spyOn(datePicker.onClosed, 'emit');
7979

8080
UIInteractions.clickElement(target);
8181
fixture.detectChanges();
8282
await wait();
8383

84-
expect(datePicker.onOpen.emit).toHaveBeenCalled();
85-
expect(datePicker.onOpen.emit).toHaveBeenCalledWith(datePicker);
84+
expect(datePicker.onOpened.emit).toHaveBeenCalled();
85+
expect(datePicker.onOpened.emit).toHaveBeenCalledWith(datePicker);
8686

8787
const overlayDiv = document.getElementsByClassName('igx-overlay__wrapper--modal')[0];
8888
expect(overlayDiv).toBeDefined();
@@ -92,17 +92,20 @@ describe('IgxDatePicker', () => {
9292
fixture.detectChanges();
9393
await wait();
9494

95-
expect(datePicker.onClose.emit).toHaveBeenCalled();
96-
expect(datePicker.onClose.emit).toHaveBeenCalledWith(datePicker);
95+
expect(datePicker.onClosed.emit).toHaveBeenCalled();
96+
expect(datePicker.onClosed.emit).toHaveBeenCalledWith(datePicker);
9797
});
9898

99-
it('Datepicker onSelection event and selectDate method propagation', () => {
99+
it('Datepicker onSelection and valueChange events and selectDate method propagation', () => {
100100
spyOn(datePicker.onSelection, 'emit');
101+
spyOn(datePicker.valueChange, 'emit');
101102
const newDate: Date = new Date(2016, 4, 6);
102-
datePicker.selectDate(newDate);
103+
datePicker.selectDate(newDate);
103104
fixture.detectChanges();
104105

105106
expect(datePicker.onSelection.emit).toHaveBeenCalled();
107+
expect(datePicker.valueChange.emit).toHaveBeenCalled();
108+
expect(datePicker.valueChange.emit).toHaveBeenCalledWith(newDate);
106109
expect(datePicker.value).toBe(newDate);
107110
});
108111

@@ -611,15 +614,15 @@ describe('IgxDatePicker', () => {
611614
const iconDate = dom.query(By.css('.igx-icon'));
612615
expect(iconDate).not.toBeNull();
613616

614-
spyOn(datePicker.onOpen, 'emit');
615-
spyOn(datePicker.onClose, 'emit');
617+
spyOn(datePicker.onOpened, 'emit');
618+
spyOn(datePicker.onClosed, 'emit');
616619

617620
UIInteractions.clickElement(iconDate);
618621
fixture.detectChanges();
619622
await wait();
620623

621-
expect(datePicker.onOpen.emit).toHaveBeenCalled();
622-
expect(datePicker.onOpen.emit).toHaveBeenCalledWith(datePicker);
624+
expect(datePicker.onOpened.emit).toHaveBeenCalled();
625+
expect(datePicker.onOpened.emit).toHaveBeenCalledWith(datePicker);
623626

624627
const dropDown = document.getElementsByClassName('igx-date-picker--dropdown');
625628
expect(dropDown.length).toBe(1);
@@ -630,8 +633,8 @@ describe('IgxDatePicker', () => {
630633
fixture.detectChanges();
631634
await wait();
632635

633-
expect(datePicker.onClose.emit).toHaveBeenCalled();
634-
expect(datePicker.onClose.emit).toHaveBeenCalledWith(datePicker);
636+
expect(datePicker.onClosed.emit).toHaveBeenCalled();
637+
expect(datePicker.onClosed.emit).toHaveBeenCalledWith(datePicker);
635638
});
636639

637640
it('Handling keyboard navigation with `space`(open) and `esc`(close) buttons - dropdown mode', fakeAsync(() => {
@@ -677,13 +680,16 @@ describe('IgxDatePicker', () => {
677680
expect(overlays.length).toEqual(0);
678681
}));
679682

680-
it('Datepicker onSelection event and selectDate method propagation - dropdown mode', () => {
683+
it('Datepicker onSelection and valueChange events and selectDate method propagation - dropdown mode', () => {
681684
spyOn(datePicker.onSelection, 'emit');
685+
spyOn(datePicker.valueChange, 'emit');
682686
const newDate: Date = new Date(2016, 4, 6);
683687
datePicker.selectDate(newDate);
684688
fixture.detectChanges();
685689

686690
expect(datePicker.onSelection.emit).toHaveBeenCalled();
691+
expect(datePicker.valueChange.emit).toHaveBeenCalled();
692+
expect(datePicker.valueChange.emit).toHaveBeenCalledWith(newDate);
687693
expect(datePicker.value).toBe(newDate);
688694

689695
const input = fixture.debugElement.query(By.directive(IgxInputDirective));
@@ -923,12 +929,15 @@ describe('IgxDatePicker', () => {
923929
}));
924930

925931
it('should reset value on clear button click - dropdown mode', () => {
926-
const input = fixture.debugElement.query(By.directive(IgxInputDirective));
932+
spyOn(datePicker.valueChange, 'emit');
933+
const input = fixture.debugElement.query(By.directive(IgxInputDirective));
927934
const dom = fixture.debugElement;
928935
const clear = dom.queryAll(By.css('.igx-icon'))[1];
929936
UIInteractions.clickElement(clear);
930937
fixture.detectChanges();
931938

939+
expect(datePicker.valueChange.emit).toHaveBeenCalled();
940+
expect(datePicker.valueChange.emit).toHaveBeenCalledWith(null);
932941
expect(datePicker.value).toEqual(null);
933942
expect(input.nativeElement.innerText).toEqual('');
934943

0 commit comments

Comments
 (0)