Skip to content

Commit eebb470

Browse files
committed
refactor(drp): polish resource strings
1 parent eba8f06 commit eebb470

File tree

4 files changed

+103
-62
lines changed

4 files changed

+103
-62
lines changed

src/components/common/i18n/date-range-picker.resources.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
import {
2+
IgcCalendarResourceStringEN,
3+
type IgcCalendarResourceStrings,
4+
} from './calendar.resources';
5+
16
/* blazorSuppress */
2-
export interface IgcDateRangePickerResourceStrings {
7+
export interface IgcDateRangePickerResourceStrings
8+
extends IgcCalendarResourceStrings {
39
separator: string;
410
done: string;
511
cancel: string;
@@ -18,4 +24,5 @@ export const IgcDateRangePickerResourceStringsEN: IgcDateRangePickerResourceStri
1824
last30Days: 'Last 30 days',
1925
currentMonth: 'Current month',
2026
yearToDate: 'Year to date',
27+
...IgcCalendarResourceStringEN,
2128
};

src/components/date-range-picker/date-range-picker.common.spec.ts

Lines changed: 49 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -287,34 +287,60 @@ describe('Date range picker - common tests for single and two inputs mode', () =
287287
expect(picker.inputFormat).to.equal('dd-MM-yyyy');
288288
expect(picker.displayFormat).to.equal(picker.inputFormat);
289289
});
290-
});
291290

292-
it('should expose the default strings for localization', async () => {
293-
picker.useTwoInputs = true;
294-
picker.resourceStrings.done = 'Done - localized';
295-
picker.resourceStrings.cancel = 'Cancel - localized';
296-
picker.resourceStrings.separator = 'Separator - localized';
297-
picker.mode = 'dialog';
298-
picker.open = true;
299-
await elementUpdated(picker);
291+
it('should expose the default strings for localization', async () => {
292+
picker.useTwoInputs = true;
293+
picker.resourceStrings.done = 'Done - localized';
294+
picker.resourceStrings.cancel = 'Cancel - localized';
295+
picker.resourceStrings.separator = 'Separator - localized';
296+
picker.mode = 'dialog';
297+
picker.open = true;
298+
await elementUpdated(picker);
300299

301-
const doneBtn = picker.shadowRoot!.querySelector(
302-
'igc-button[slot="footer"]:last-of-type'
303-
) as HTMLButtonElement;
304-
expect(doneBtn.innerText).to.equal('Done - localized');
300+
const doneBtn = picker.shadowRoot!.querySelector(
301+
'igc-button[slot="footer"]:last-of-type'
302+
) as HTMLButtonElement;
303+
expect(doneBtn.innerText).to.equal('Done - localized');
305304

306-
const cancelBtn = picker.shadowRoot!.querySelector(
307-
'igc-button[slot="footer"]'
308-
) as HTMLButtonElement;
309-
expect(cancelBtn.innerText).to.equal('Cancel - localized');
305+
const cancelBtn = picker.shadowRoot!.querySelector(
306+
'igc-button[slot="footer"]'
307+
) as HTMLButtonElement;
308+
expect(cancelBtn.innerText).to.equal('Cancel - localized');
310309

311-
picker.open = false;
312-
await elementUpdated(picker);
313-
const separator = picker.shadowRoot!.querySelector(
314-
'[part="separator"]'
315-
) as any;
316-
expect(separator?.innerText).to.equal('Separator - localized');
310+
picker.open = false;
311+
await elementUpdated(picker);
312+
const separator = picker.shadowRoot!.querySelector(
313+
'[part="separator"]'
314+
) as any;
315+
expect(separator?.innerText).to.equal('Separator - localized');
316+
});
317+
318+
it('should set the resource strings of the predefined-ranges-area component', async () => {
319+
picker.resourceStrings.currentMonth = 'Current month - localized';
320+
picker.resourceStrings.nextMonth = 'Next month - localized';
321+
picker.resourceStrings.last30Days = 'Last 30 days - localized';
322+
picker.resourceStrings.yearToDate = 'Year to date - localized';
323+
picker.usePredefinedRanges = true;
324+
await elementUpdated(picker);
325+
326+
const predefinedArea = picker.renderRoot.querySelector(
327+
IgcPredefinedRangesAreaComponent.tagName
328+
);
329+
expect(predefinedArea?.resourceStrings.currentMonth).to.equal(
330+
'Current month - localized'
331+
);
332+
expect(predefinedArea?.resourceStrings.nextMonth).to.equal(
333+
'Next month - localized'
334+
);
335+
expect(predefinedArea?.resourceStrings.last30Days).to.equal(
336+
'Last 30 days - localized'
337+
);
338+
expect(predefinedArea?.resourceStrings.yearToDate).to.equal(
339+
'Year to date - localized'
340+
);
341+
});
317342
});
343+
318344
describe('Methods', () => {
319345
it('should open/close the picker on invoking show/hide/toggle and not emit events', async () => {
320346
const eventSpy = spy(picker, 'emitEvent');

src/components/date-range-picker/date-range-picker.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ import {
3131
import { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';
3232
import { watch } from '../common/decorators/watch.js';
3333
import { registerComponent } from '../common/definitions/register.js';
34-
import {
35-
IgcCalendarResourceStringEN,
36-
type IgcCalendarResourceStrings,
37-
} from '../common/i18n/calendar.resources.js';
3834
import {
3935
type IgcDateRangePickerResourceStrings,
4036
IgcDateRangePickerResourceStringsEN,
@@ -341,11 +337,8 @@ export default class IgcDateRangePickerComponent extends FormAssociatedRequiredM
341337

342338
/** The resource strings of the date range picker. */
343339
@property({ attribute: false })
344-
public resourceStrings: IgcCalendarResourceStrings &
345-
IgcDateRangePickerResourceStrings = {
346-
...IgcCalendarResourceStringEN,
347-
...IgcDateRangePickerResourceStringsEN,
348-
};
340+
public resourceStrings: IgcDateRangePickerResourceStrings =
341+
IgcDateRangePickerResourceStringsEN;
349342

350343
// #region Input-related properties
351344

@@ -1093,7 +1086,7 @@ export default class IgcDateRangePickerComponent extends FormAssociatedRequiredM
10931086
<igc-predefined-ranges-area
10941087
.usePredefinedRanges=${this.usePredefinedRanges}
10951088
.customRanges=${this.customRanges}
1096-
@range-select=${this._selectPredefinedRange}
1089+
.resourceStrings=${this.resourceStrings}
10971090
>
10981091
</igc-predefined-ranges-area>
10991092
${this._renderActions()}
@@ -1115,7 +1108,7 @@ export default class IgcDateRangePickerComponent extends FormAssociatedRequiredM
11151108
<igc-predefined-ranges-area
11161109
.usePredefinedRanges=${this.usePredefinedRanges}
11171110
.customRanges=${this.customRanges}
1118-
@range-select=${this._selectPredefinedRange}
1111+
.resourceStrings=${this.resourceStrings}
11191112
>
11201113
</igc-predefined-ranges-area>
11211114
<igc-button

src/components/date-range-picker/predefined-ranges-area.ts

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,74 @@ import { property } from 'lit/decorators.js';
33
import { CalendarDay } from '../calendar/model.js';
44
import IgcChipComponent from '../chip/chip.js';
55
import { registerComponent } from '../common/definitions/register.js';
6-
import { IgcDateRangePickerResourceStringsEN } from '../common/i18n/date-range-picker.resources.js';
6+
import {
7+
type IgcDateRangePickerResourceStrings,
8+
IgcDateRangePickerResourceStringsEN,
9+
} from '../common/i18n/date-range-picker.resources.js';
710
import type { CustomDateRange } from './date-range-picker.js';
811

12+
/**
13+
* The predefined ranges area component is used within the `igc-date-range picker` element and it
14+
* displays a set of chips with predefined date ranges. The component allows users to quickly select
15+
* a predefined date range value. Users can also provide custom ranges to be displayed as chips.
16+
*
17+
* @element igc-predefined-ranges-area
18+
*/
919
export default class IgcPredefinedRangesAreaComponent extends LitElement {
1020
public static readonly tagName = 'igc-predefined-ranges-area';
1121

22+
/* blazorSuppress */
23+
public static register() {
24+
registerComponent(IgcPredefinedRangesAreaComponent, IgcChipComponent);
25+
}
26+
27+
/**
28+
* Whether the control will show chips with predefined ranges.
29+
* @attr
30+
*/
31+
@property({
32+
reflect: true,
33+
type: Boolean,
34+
attribute: 'use-predefined-ranges',
35+
})
36+
public usePredefinedRanges = false;
37+
38+
/**
39+
* Renders chips with custom ranges based on the elements of the array.
40+
*/
41+
@property({ type: Array })
42+
public customRanges: CustomDateRange[] = [];
43+
44+
/** The resource strings of the date range area component. */
45+
@property({ attribute: false })
46+
public resourceStrings: IgcDateRangePickerResourceStrings =
47+
IgcDateRangePickerResourceStringsEN;
48+
1249
private _predefinedRanges: CustomDateRange[] = [
1350
{
14-
label: IgcDateRangePickerResourceStringsEN.last7Days,
51+
label: this.resourceStrings.last7Days,
1552
dateRange: {
1653
start: CalendarDay.today.add('day', -7).native,
1754
end: CalendarDay.today.native,
1855
},
1956
},
2057
{
21-
label: IgcDateRangePickerResourceStringsEN.currentMonth,
58+
label: this.resourceStrings.currentMonth,
2259
dateRange: {
2360
start: CalendarDay.today.set({ date: 1 }).native,
2461
end: CalendarDay.today.set({ date: 1 }).add('month', 1).add('day', -1)
2562
.native,
2663
},
2764
},
2865
{
29-
label: IgcDateRangePickerResourceStringsEN.last30Days,
66+
label: this.resourceStrings.last30Days,
3067
dateRange: {
3168
start: CalendarDay.today.add('day', -29).native,
3269
end: CalendarDay.today.native,
3370
},
3471
},
3572
{
36-
label: IgcDateRangePickerResourceStringsEN.yearToDate,
73+
label: this.resourceStrings.yearToDate,
3774
dateRange: {
3875
start: CalendarDay.today.set({
3976
year: CalendarDay.today.year,
@@ -45,28 +82,6 @@ export default class IgcPredefinedRangesAreaComponent extends LitElement {
4582
},
4683
];
4784

48-
/* blazorSuppress */
49-
public static register() {
50-
registerComponent(IgcPredefinedRangesAreaComponent, IgcChipComponent);
51-
}
52-
53-
/**
54-
* Whether the control will show chips with predefined ranges.
55-
* @attr
56-
*/
57-
@property({
58-
reflect: true,
59-
type: Boolean,
60-
attribute: 'use-predefined-ranges',
61-
})
62-
public usePredefinedRanges = false;
63-
64-
/**
65-
* Renders chips with custom ranges based on the elements of the array.
66-
*/
67-
@property({ type: Array })
68-
public customRanges: CustomDateRange[] = [];
69-
7085
private get _allRanges(): CustomDateRange[] {
7186
return this.usePredefinedRanges
7287
? [...this._predefinedRanges, ...this.customRanges]

0 commit comments

Comments
 (0)