Skip to content

Commit fe63064

Browse files
Ivan KitanovIvan Kitanov
authored andcommitted
Adding the option to use custom date ranges as well as predefined, exposing the visibleMonths property and renaming singleInput property to useTwoInputs
1 parent 7343e67 commit fe63064

File tree

4 files changed

+272
-128
lines changed

4 files changed

+272
-128
lines changed

src/components/date-range-picker/date-range-picker.base.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
margin: 0 20px;
1717
}
1818

19-
[part='predefined-ranges'] {
19+
[part='ranges'] {
2020
display: flex;
2121
flex-direction: row;
2222
gap: 5px;

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

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ describe('Date range picker', () => {
4141

4242
beforeEach(async () => {
4343
picker = await fixture<IgcDateRangePickerComponent>(
44-
html`<igc-date-range-picker></igc-date-range-picker>`
44+
html`<igc-date-range-picker use-two-inputs></igc-date-range-picker>`
4545
);
4646
dateTimeInputs = Array.from(
4747
picker.renderRoot.querySelectorAll(IgcDateTimeInputComponent.tagName)
@@ -110,6 +110,7 @@ describe('Date range picker', () => {
110110
picker = await fixture<IgcDateRangePickerComponent>(
111111
html`<igc-date-range-picker
112112
.value="${expectedValue}"
113+
use-two-inputs
113114
></igc-date-range-picker>`
114115
);
115116

@@ -148,10 +149,10 @@ describe('Date range picker', () => {
148149

149150
it('should be initialized as single input', async () => {
150151
picker = await fixture<IgcDateRangePickerComponent>(
151-
html`<igc-date-range-picker single-input></igc-date-range-picker>`
152+
html`<igc-date-range-picker></igc-date-range-picker>`
152153
);
153154

154-
expect(picker.singleInput).to.equal(true);
155+
expect(picker.useTwoInputs).to.equal(false);
155156
await picker.show();
156157

157158
const input = picker.renderRoot.querySelectorAll(
@@ -175,7 +176,7 @@ describe('Date range picker', () => {
175176
);
176177
await elementUpdated(picker);
177178

178-
checkSelectedRange(picker, expectedValue);
179+
checkSelectedRange(picker, expectedValue, false);
179180
});
180181

181182
it('should keep the calendar selection and input values on changing the mode', async () => {
@@ -186,30 +187,29 @@ describe('Date range picker', () => {
186187
></igc-date-range-picker>`
187188
);
188189

189-
checkSelectedRange(picker, expectedValue);
190+
checkSelectedRange(picker, expectedValue, false);
190191

191192
picker.mode = 'dialog';
192193
await elementUpdated(picker);
193194

194-
checkSelectedRange(picker, expectedValue);
195+
checkSelectedRange(picker, expectedValue, false);
195196
});
196197

197-
it('should keep the calendar selection and input values on switching to singleInput and back', async () => {
198+
it('should keep the calendar selection and input values on switching to two inputs and back', async () => {
198199
const expectedValue = { start: today.native, end: tomorrow.native };
199200
picker = await fixture<IgcDateRangePickerComponent>(
200201
html`<igc-date-range-picker
201202
.value="${expectedValue}"
202203
></igc-date-range-picker>`
203204
);
204-
checkSelectedRange(picker, expectedValue);
205+
checkSelectedRange(picker, expectedValue, false);
205206

206-
picker.singleInput = true;
207207
await elementUpdated(picker);
208-
checkSelectedRange(picker, expectedValue, true);
208+
checkSelectedRange(picker, expectedValue, false);
209209

210-
picker.singleInput = false;
210+
picker.useTwoInputs = true;
211211
await elementUpdated(picker);
212-
checkSelectedRange(picker, expectedValue);
212+
checkSelectedRange(picker, expectedValue, true);
213213
});
214214

215215
it('should not close calendar on clicking outside of it when keepOpenOnOutsideClick is true', async () => {
@@ -305,7 +305,7 @@ describe('Date range picker', () => {
305305
expect(calendar.values).to.deep.equal([]);
306306
expect(eventSpy).not.to.be.called;
307307

308-
picker.singleInput = true;
308+
picker.useTwoInputs = false;
309309
await elementUpdated(picker);
310310
await picker.show();
311311

@@ -420,7 +420,7 @@ describe('Date range picker', () => {
420420
}
421421
}
422422

423-
picker.singleInput = true;
423+
picker.useTwoInputs = false;
424424
await elementUpdated(picker);
425425

426426
const propsSingle = {
@@ -823,7 +823,7 @@ describe('Date range picker', () => {
823823
describe('Slots', () => {
824824
it('should render slotted elements - two inputs', async () => {
825825
picker = await fixture<IgcDateRangePickerComponent>(
826-
html`<igc-date-range-picker>
826+
html`<igc-date-range-picker use-two-inputs>
827827
<span slot="prefix-start">$</span>
828828
<span slot="prefix-end">$-end</span>
829829
<span slot="suffix-start">~</span>
@@ -956,7 +956,7 @@ describe('Date range picker', () => {
956956

957957
it('should render slotted elements - single input', async () => {
958958
picker = await fixture<IgcDateRangePickerComponent>(
959-
html`<igc-date-range-picker single-input mode="dialog">
959+
html`<igc-date-range-picker mode="dialog">
960960
<span slot="prefix">$</span>
961961
<span slot="suffix">~</span>
962962
<p slot="helper-text">For example, select a range</p>
@@ -1057,7 +1057,10 @@ describe('Date range picker', () => {
10571057
// #region Forms
10581058
describe('Form integration', () => {
10591059
const spec = createFormAssociatedTestBed<IgcDateRangePickerComponent>(
1060-
html`<igc-date-range-picker name="rangePicker"></igc-date-range-picker>`
1060+
html`<igc-date-range-picker
1061+
name="rangePicker"
1062+
use-two-inputs
1063+
></igc-date-range-picker>`
10611064
);
10621065

10631066
let startKey = '';
@@ -1314,7 +1317,10 @@ describe('Date range picker', () => {
13141317
describe('Initial validation', () => {
13151318
it('should not enter in invalid state when clicking the calendar toggle part - two inputs', async () => {
13161319
picker = await fixture<IgcDateRangePickerComponent>(
1317-
html`<igc-date-range-picker required></igc-date-range-picker>`
1320+
html`<igc-date-range-picker
1321+
required
1322+
use-two-inputs
1323+
></igc-date-range-picker>`
13181324
);
13191325

13201326
expect(picker.invalid).to.be.false;
@@ -1329,10 +1335,7 @@ describe('Date range picker', () => {
13291335

13301336
it('should not enter in invalid state when clicking the calendar toggle part - single input', async () => {
13311337
picker = await fixture<IgcDateRangePickerComponent>(
1332-
html`<igc-date-range-picker
1333-
single-input
1334-
required
1335-
></igc-date-range-picker>`
1338+
html`<igc-date-range-picker required></igc-date-range-picker>`
13361339
);
13371340
const input = picker.renderRoot.querySelector(
13381341
IgcInputComponent.tagName
@@ -1361,6 +1364,7 @@ describe('Date range picker', () => {
13611364
<igc-date-range-picker
13621365
name="rangePicker"
13631366
.defaultValue=${value}
1367+
use-two-inputs
13641368
></igc-date-range-picker>
13651369
`);
13661370

@@ -1458,7 +1462,7 @@ const selectDates = async (
14581462
const checkSelectedRange = (
14591463
picker: IgcDateRangePickerComponent,
14601464
expectedValue: DateRangeValue | null,
1461-
singleInput = false
1465+
useTwoInputs = true
14621466
) => {
14631467
const calendar = picker.renderRoot.querySelector(
14641468
IgcCalendarComponent.tagName
@@ -1467,7 +1471,7 @@ const checkSelectedRange = (
14671471
checkDatesEqual(picker.value?.start!, expectedValue?.start!);
14681472
checkDatesEqual(picker.value?.end!, expectedValue?.end!);
14691473

1470-
if (singleInput) {
1474+
if (!useTwoInputs) {
14711475
const input = picker.renderRoot.querySelector(IgcInputComponent.tagName)!;
14721476
const start = expectedValue?.start
14731477
? DateTimeUtil.formatDate(

0 commit comments

Comments
 (0)