Skip to content

Commit 19e759f

Browse files
LipataMPopovwnvkoPlamenaMitevaViktorSlavov
authored
feat(igx-date-range-picker): add igxDateRangePicker component #5732 (#7018)
Co-authored-by: MPopov <[email protected]> Co-authored-by: wnvko <[email protected]> Co-authored-by: plamenamiteva <[email protected]> Co-authored-by: ViktorSlavov <[email protected]> Co-authored-by: IvayloG <[email protected]> Co-authored-by: NikolayAlipiev <[email protected]>
2 parents 7d36311 + cce0115 commit 19e759f

30 files changed

+2668
-45
lines changed

CHANGELOG.md

Lines changed: 60 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,66 @@ All notable changes for each version of this project will be documented in this
1919

2020
### New Features
2121

22+
- `IgxDateTimeEditor` directive added.
23+
- Allows the user to set and edit `date` and `time` in a chosen input element.
24+
- Can edit `date` or `time` portion, using an editable masked input.
25+
- Additionally, can specify a desired `display` and `input` `format`, as well as `min` and `max` values.
26+
27+
- A basic configuration scenario setting a Date object as a `value`:
28+
```html
29+
<igx-input-group>
30+
<input type="text" igxInput igxDateTimeEditor [value]="date"/>
31+
</igx-input-group>
32+
```
33+
- Two-way data-binding via an ngModel:
34+
```html
35+
<igx-input-group>
36+
<input type="text" igxInput igxDateTimeEditor [(ngModel)]="date"/>
37+
</igx-input-group>
38+
```
39+
- `IgxDateRangePicker` component added.
40+
- Allows the selection of a range of dates from a calendar UI or input fields. Supports `dialog` and `dropdown` modes.
41+
- Added `IgxDateStartComponent` and `IgxDateEndComponent`.
42+
- The default template consists of a single *readonly* field:
43+
```html
44+
<igx-date-range-picker [(ngModel)]="range"></igx-date-range-picker>
45+
```
46+
- Projection of input fields using `igxDateTimeEditor`
47+
```html
48+
<igx-date-range-picker>
49+
<igx-date-range-start>
50+
<input igxInput igxDateTimeEditor [(ngModel)]="range.start">
51+
</igx-date-range-start>
52+
<igx-date-range-end>
53+
<input igxInput igxDateTimeEditor [(ngModel)]="range.end">
54+
</igx-date-range-end>
55+
</igx-date-range-picker>
56+
```
57+
- Added `IgxPickerToggleComponent` which allows templating of the default icon in the input through `igxPrefix` and `igxSuffix`.
58+
- default template:
59+
```html
60+
<igx-date-range-picker>
61+
<igx-picker-toggle igxSuffix>
62+
<igx-icon>calendar_view_day</igx-icon>
63+
</igx-picker-toggle>
64+
</igx-date-range-picker>
65+
```
66+
- with projections:
67+
```html
68+
<igx-date-range-picker>
69+
<igx-date-range-start>
70+
...
71+
<igx-picker-toggle igxPrefix>
72+
<igx-icon>calendar_view_day</igx-icon>
73+
</igx-picker-toggle>
74+
...
75+
</igx-date-range-start>
76+
<igx-date-range-end>
77+
...
78+
</igx-date-range-end>
79+
</igx-date-range-picker>
80+
```
81+
2282
- `IgxActionStrip` component added.
2383
- Provides a template area for one or more actions. In its simplest form the Action Strip
2484
is an overlay of any container and shows additional content over that container.
@@ -97,24 +157,6 @@ All notable changes for each version of this project will be documented in this
97157
- New `igxDragIgnore` directive that allows children of the `igxDrag` element to be interactable and receive mouse events. Dragging cannot be performed from those elements that are ignored.
98158
- New `dragDirection` input that can specify only one direction of dragging or both.
99159

100-
- `IgxDateTimeEditor` directive added.
101-
- Allows the user to set and edit `date` and `time` in a chosen input element.
102-
- Can edit `date` or `time` portion, using an editable masked input.
103-
- Additionally, can specify a desired `display` and `input` `format`, as well as `min` and `max` values.
104-
105-
- A basic configuration scenario setting a Date object as a `value`:
106-
```html
107-
<igx-input-group>
108-
<input type="text" igxInput igxDateTimeEditor [value]="date"/>
109-
</igx-input-group>
110-
```
111-
- Two-way data-binding via an ngModel:
112-
```html
113-
<igx-input-group>
114-
<input type="text" igxInput igxDateTimeEditor [(ngModel)]="date"/>
115-
</igx-input-group>
116-
```
117-
118160
### RTL Support
119161
- `igxSlider` have full right-to-left (RTL) support.
120162

README.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,18 @@ You can find source files under the [`src`](https://github.com/IgniteUI/igniteui
2323
|:--|:--|:--|:--|:--|:--|:--|:--|
2424
|avatar|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/avatar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/avatar.html)|autocomplete|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/autocomplete/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/autocomplete.html)|
2525
|badge|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/badge/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/badge.html)|button|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/button/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/button.html)|
26-
|banner|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/banner/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/banner.html)|divider|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/button/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/button.html)|
27-
|bottom navigation|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/tabbar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tabbar.html)|dragdrop|InProgress|[Readme](https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular/src/lib/directives/divider/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/divider.html)|
28-
|button group|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/buttonGroup/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/buttongroup.html)|filter|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/filter/README-FILTER.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/list.html)|
29-
|calendar|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/calendar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/calendar.html)|forOf|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/for-of/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/for_of.html)|
30-
|card|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/card/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/card.html)|hint|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular/src/lib/input-group/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
31-
|carousel|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/carousel/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/carousel.html)|input|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/input/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
32-
|checkbox|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/checkbox/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/checkbox.html)|label|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/label/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
33-
|chips|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/chips/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/chip.html)|layout|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/layout/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/layout.html)|
34-
|circular progress|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/progressbar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/circular_progress.html)|mask|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/mask/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/mask.html)|
35-
|combo|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/combo/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/combo.html)|prefix|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/input-group/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
36-
|date picker|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/date-picker/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/date_picker.html)|radio-group|Available||[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/radio_button.html)|
26+
|banner|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/banner/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/banner.html)|date time editor|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/tree/master/src/app/date-time-editor/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/date_time_editor.html)|
27+
|bottom navigation|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/tabbar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tabbar.html)|divider|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/button/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/button.html)|
28+
|button group|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/buttonGroup/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/buttongroup.html)|dragdrop|InProgress|[Readme](https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular/src/lib/directives/divider/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/divider.html)|
29+
|calendar|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/calendar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/calendar.html)|filter|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/filter/README-FILTER.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/list.html)|
30+
|card|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/card/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/card.html)|forOf|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/for-of/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/for_of.html)|
31+
|carousel|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/carousel/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/carousel.html)|hint|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular/src/lib/input-group/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
32+
|checkbox|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/checkbox/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/checkbox.html)|input|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/input/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
33+
|chips|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/chips/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/chip.html)|label|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/label/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
34+
|circular progress|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/progressbar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/circular_progress.html)|layout|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/layout/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/layout.html)|
35+
|combo|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/combo/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/combo.html)|mask|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/mask/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/mask.html)|
36+
|date picker|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/date-picker/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/date_picker.html)|prefix|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/input-group/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
37+
|date range picker|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/date-range-picker/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/date_range_picker.html)|radio-group|Available||[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/radio_button.html)|
3738
|dialog|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/dialog/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/dialog.html)|ripple|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/directives/ripple/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/ripple.html)|
3839
|drop down|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/drop-down/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/drop_down.html)|suffix|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular/src/lib/input-group/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input_group.html)|
3940
|expansion panel|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/src/lib/expansion-panel/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/expansion_panel.html)|text-highlight|Available|[Readme](https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular/src/lib/directives/text-highlight/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/texthighlight.html)|
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export interface IDateRangePickerResourceStrings {
2+
igx_date_range_picker_date_separator?: string;
3+
}
4+
5+
export const DateRangePickerResourceStringsEN: IDateRangePickerResourceStrings = {
6+
igx_date_range_picker_date_separator: 'to'
7+
};

projects/igniteui-angular/src/lib/core/i18n/resources.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { DateRangePickerResourceStringsEN } from './date-range-picker-resources';
12
import { IGridResourceStrings, GridResourceStringsEN } from './grid-resources';
23
import { ITimePickerResourceStrings, TimePickerResourceStringsEN } from './time-picker-resources';
34
import { PaginatorResourceStringsEN } from './paginator-resources';
@@ -11,8 +12,9 @@ export interface IResourceStrings extends IGridResourceStrings, ITimePickerResou
1112
*/
1213
export const CurrentResourceStrings = {
1314
GridResStrings: cloneValue(GridResourceStringsEN),
14-
TimePickerResStrings: cloneValue(TimePickerResourceStringsEN),
1515
PaginatorResStrings: cloneValue(PaginatorResourceStringsEN),
16+
TimePickerResStrings: cloneValue(TimePickerResourceStringsEN),
17+
DateRangePickerResStrings: cloneValue(DateRangePickerResourceStringsEN),
1618
CarouselResStrings: cloneValue(CarouselResourceStringsEN),
1719
};
1820

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//// Range Picker
2+
/// @group components
3+
/// @author <a href="https://github.com/desig9stein" target="_blank">Marin Popov</a>
4+
/// @requires {mixin} bem-block
5+
/// @requires {mixin} bem-elem
6+
/// @requires {mixin} bem-mod
7+
////
8+
@include b(igx-date-range-picker) {
9+
$this: bem--selector-to-string(&);
10+
@include register-component(str-slice($this, 2, -1));
11+
12+
@extend %igx-date-range-picker !optional;
13+
14+
@include e(label) {
15+
@extend %igx-date-range-picker__label !optional;
16+
}
17+
18+
@include e(start) {
19+
@extend %igx-date-range-picker__start !optional;
20+
}
21+
22+
@include e(end) {
23+
@extend %igx-date-range-picker__end !optional;
24+
}
25+
26+
@include m(cosy){
27+
@extend %igx-date-range-picker !optional;
28+
@extend %igx-date-range-picker--cosy !optional;
29+
}
30+
31+
32+
@include m(compact){
33+
@extend %igx-date-range-picker !optional;
34+
@extend %igx-date-range-picker--compact !optional;
35+
}
36+
}
37+
38+
@include b(igx-date-range-picker-buttons) {
39+
@extend %igx-date-range-picker-buttons !optional;
40+
}
41+

0 commit comments

Comments
 (0)