Skip to content

Commit 6b2fad0

Browse files
author
iganchev
committed
feat(pickers): Add localization resources,,
Expose public resourceStrings for date and range pickers. Add/Use localization strings for date, range and time pickers
1 parent d340013 commit 6b2fad0

File tree

9 files changed

+81
-9
lines changed

9 files changed

+81
-9
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export interface IDatePickerResourceStrings {
2+
igx_date_picker_change_date?: string;
3+
igx_date_picker_choose_date?: string;
4+
}
5+
6+
export const DatePickerResourceStringsEN: IDatePickerResourceStrings = {
7+
igx_date_picker_change_date: 'Change Date',
8+
igx_date_picker_choose_date: 'Choose Date'
9+
};
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
export interface IDateRangePickerResourceStrings {
22
igx_date_range_picker_date_separator?: string;
3+
igx_date_range_picker_done_button?: string;
34
}
45

56
export const DateRangePickerResourceStringsEN: IDateRangePickerResourceStrings = {
6-
igx_date_range_picker_date_separator: 'to'
7+
igx_date_range_picker_date_separator: 'to',
8+
igx_date_range_picker_done_button: 'Done'
79
};

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { DatePickerResourceStringsEN, IDatePickerResourceStrings } from './date-picker-resources';
12
import { DateRangePickerResourceStringsEN, IDateRangePickerResourceStrings } from './date-range-picker-resources';
23
import { IGridResourceStrings, GridResourceStringsEN } from './grid-resources';
34
import { ITimePickerResourceStrings, TimePickerResourceStringsEN } from './time-picker-resources';
@@ -11,8 +12,8 @@ import { IInputResourceStrings, InputResourceStringsEN } from './input-resources
1112
import { ITreeResourceStrings, TreeResourceStringsEN } from './tree-resources';
1213

1314
export interface IResourceStrings extends IGridResourceStrings, ITimePickerResourceStrings, ICalendarResourceStrings,
14-
ICarouselResourceStrings, IChipResourceStrings, IInputResourceStrings, IDateRangePickerResourceStrings, IListResourceStrings,
15-
IPaginatorResourceStrings, ITreeResourceStrings { }
15+
ICarouselResourceStrings, IChipResourceStrings, IInputResourceStrings, IDatePickerResourceStrings, IDateRangePickerResourceStrings,
16+
IListResourceStrings, IPaginatorResourceStrings, ITreeResourceStrings { }
1617

1718
/**
1819
* @hidden
@@ -23,6 +24,7 @@ export const CurrentResourceStrings = {
2324
TimePickerResStrings: cloneValue(TimePickerResourceStringsEN),
2425
CalendarResStrings: cloneValue(CalendarResourceStringsEN),
2526
ChipResStrings: cloneValue(ChipResourceStringsEN),
27+
DatePickerResourceStrings: cloneValue(DatePickerResourceStringsEN),
2628
DateRangePickerResStrings: cloneValue(DateRangePickerResourceStringsEN),
2729
CarouselResStrings: cloneValue(CarouselResourceStringsEN),
2830
ListResStrings: cloneValue(ListResourceStringsEN),
@@ -56,6 +58,7 @@ export const getCurrentResourceStrings = (): IResourceStrings => ({
5658
...CurrentResourceStrings.CalendarResStrings,
5759
...CurrentResourceStrings.CarouselResStrings,
5860
...CurrentResourceStrings.ChipResStrings,
61+
...CurrentResourceStrings.DatePickerResourceStrings,
5962
...CurrentResourceStrings.DateRangePickerResStrings,
6063
...CurrentResourceStrings.GridResStrings,
6164
...CurrentResourceStrings.InputResStrings,
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
export interface ITimePickerResourceStrings {
22
igx_time_picker_ok?: string;
33
igx_time_picker_cancel?: string;
4+
igx_time_picker_change_time?: string;
5+
igx_time_picker_choose_time?: string;
46
}
57

68
export const TimePickerResourceStringsEN: ITimePickerResourceStrings = {
79
igx_time_picker_ok: 'OK',
8-
igx_time_picker_cancel: 'Cancel'
10+
igx_time_picker_cancel: 'Cancel',
11+
igx_time_picker_change_time: 'Change Time',
12+
igx_time_picker_choose_time: 'Choose Time'
913
};

projects/igniteui-angular/src/lib/date-picker/date-picker.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<igx-input-group [displayDensity]="this.displayDensity" [type]="this.type" [suppressInputAutofocus]="true">
22
<igx-prefix *ngIf="!this.toggleComponents.length" (click)="this.toggle()">
3-
<igx-icon [title]="this.value ? 'Change Date' : 'Choose Date'">today</igx-icon>
3+
<igx-icon [title]="this.value ? resourceStrings.igx_date_picker_change_date : resourceStrings.igx_date_picker_choose_date">today</igx-icon>
44
</igx-prefix>
55

66
<input class="igx-date-picker__input-date" [displayValuePipe]="this.formatter ? displayValue : null" igxInput

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import {
2525
OverlayCancelableEventArgs,
2626
OverlayEventArgs
2727
} from '../services/public_api';
28+
import { CurrentResourceStrings } from '../core/i18n/resources';
29+
import { IDatePickerResourceStrings } from '../core/i18n/date-picker-resources';
2830
import { DateRangeDescriptor, DateRangeType } from '../core/dates/dateRange';
2931
import { isEqual, IBaseCancelableBrowserEventArgs, IBaseEventArgs, PlatformUtil } from '../core/utils';
3032
import { IgxCalendarContainerComponent } from '../date-common/calendar-container/calendar-container.component';
@@ -354,6 +356,22 @@ export class IgxDatePickerComponent extends PickerBaseDirective implements Contr
354356
return this._maxValue;
355357
}
356358

359+
/**
360+
* An accessor that sets the resource strings.
361+
* By default it uses EN resources.
362+
*/
363+
@Input()
364+
public set resourceStrings(value: IDatePickerResourceStrings) {
365+
this._resourceStrings = Object.assign({}, this._resourceStrings, value);
366+
}
367+
368+
/**
369+
* An accessor that returns the resource strings.
370+
*/
371+
public get resourceStrings(): IDatePickerResourceStrings {
372+
return this._resourceStrings;
373+
}
374+
357375
/** @hidden @internal */
358376
@Input()
359377
public readOnly = false;
@@ -435,6 +453,7 @@ export class IgxDatePickerComponent extends PickerBaseDirective implements Contr
435453
/** @hidden @internal */
436454
public displayValue: PipeTransform = { transform: (date: Date) => this.formatter(date) };
437455

456+
private _resourceStrings = CurrentResourceStrings.DatePickerResourceStrings;
438457
private _dateValue: Date;
439458
private _overlayId: string;
440459
private _value: Date | string;

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

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { CalendarSelection, IgxCalendarComponent, WEEKDAYS } from '../calendar/p
1616
import { DateRangeType } from '../core/dates';
1717
import { DisplayDensityToken, IDisplayDensityOptions } from '../core/density';
1818
import { CurrentResourceStrings } from '../core/i18n/resources';
19+
import { IDateRangePickerResourceStrings } from '../core/i18n/date-range-picker-resources';
1920
import { DateTimeUtil } from '../date-common/util/date-time.util';
2021
import { IBaseCancelableBrowserEventArgs, isDate, parseDate, PlatformUtil } from '../core/utils';
2122
import { IgxCalendarContainerComponent } from '../date-common/calendar-container/calendar-container.component';
@@ -152,6 +153,7 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
152153
*
153154
* @remarks
154155
* Default value is `Done`.
156+
* An @Input property that renders Done button with custom text. By default `doneButtonText` is set to Done.
155157
* The button will only show up in `dialog` mode.
156158
*
157159
* @example
@@ -160,8 +162,16 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
160162
* ```
161163
*/
162164
@Input()
163-
public doneButtonText = 'Done';
165+
public set doneButtonText(value: string) {
166+
this._doneButtonText = value;
167+
}
164168

169+
public get doneButtonText(): string {
170+
if (this._doneButtonText === null) {
171+
return this.resourceStrings.igx_date_range_picker_done_button;
172+
}
173+
return this._doneButtonText;
174+
}
165175
/**
166176
* Custom overlay settings that should be used to display the calendar.
167177
*
@@ -234,6 +244,22 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
234244
return this._maxValue;
235245
}
236246

247+
/**
248+
* An accessor that sets the resource strings.
249+
* By default it uses EN resources.
250+
*/
251+
@Input()
252+
public set resourceStrings(value: IDateRangePickerResourceStrings) {
253+
this._resourceStrings = Object.assign({}, this._resourceStrings, value);
254+
}
255+
256+
/**
257+
* An accessor that returns the resource strings.
258+
*/
259+
public get resourceStrings(): IDateRangePickerResourceStrings {
260+
return this._resourceStrings;
261+
}
262+
237263
/**
238264
* Sets the `placeholder` for single-input `IgxDateRangePickerComponent`.
239265
*
@@ -303,7 +329,12 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
303329
public dateSeparatorTemplate: TemplateRef<any>;
304330

305331
/** @hidden @internal */
306-
public dateSeparator = CurrentResourceStrings.DateRangePickerResStrings.igx_date_range_picker_date_separator;
332+
public get dateSeparator(): string {
333+
if (this._dateSeparator === null) {
334+
return this.resourceStrings.igx_date_range_picker_date_separator;
335+
}
336+
return this._dateSeparator;
337+
}
307338

308339
/** @hidden @internal */
309340
public get appliedFormat(): string {
@@ -386,6 +417,9 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
386417
return false;
387418
}
388419

420+
private _resourceStrings = CurrentResourceStrings.DateRangePickerResStrings;
421+
private _doneButtonText = null;
422+
private _dateSeparator = null;
389423
private _value: DateRange | null;
390424
private _overlayId: string;
391425
private _ngControl: NgControl;

projects/igniteui-angular/src/lib/time-picker/time-picker.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[attr.aria-expanded]="!this.toggleDirective.collapsed" [attr.aria-labelledby]="this.label?.id" />
99

1010
<igx-prefix *ngIf="!this.toggleComponents.length" (click)="this.toggle()">
11-
<igx-icon>access_time</igx-icon>
11+
<igx-icon [title]="this.value ? resourceStrings.igx_time_picker_change_time : resourceStrings.igx_time_picker_choose_time">access_time</igx-icon>
1212
</igx-prefix>
1313

1414
<ng-container ngProjectAs="[igxLabel]">
@@ -87,4 +87,4 @@ <h2 class="igx-time-picker__header-hour">
8787
*ngTemplateOutlet="timePickerActionsDirective ? timePickerActionsDirective.template : defaultTimePickerActions">
8888
</ng-container>
8989
</div>
90-
</div>
90+
</div>

projects/igniteui-angular/src/public_api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ export { IGridResourceStrings } from './lib/core/i18n/grid-resources';
118118
export { IPaginatorResourceStrings } from './lib/core/i18n/paginator-resources';
119119
export { ICalendarResourceStrings } from './lib/core/i18n/calendar-resources';
120120
export { ITimePickerResourceStrings } from './lib/core/i18n/time-picker-resources';
121+
export { IDatePickerResourceStrings } from './lib/core/i18n/date-picker-resources';
121122
export { IDateRangePickerResourceStrings } from './lib/core/i18n/date-range-picker-resources';
122123
export { IListResourceStrings } from './lib/core/i18n/list-resources';
123124
export { PickerInteractionMode } from './lib/date-common/types';

0 commit comments

Comments
 (0)