Skip to content

Commit c77309c

Browse files
feat: onDateSelect callback functionality (#44)
1 parent a5e51a6 commit c77309c

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,20 @@ datePicker(selector, options, {
203203
}
204204
});
205205
```
206+
207+
### onDateSelect
208+
209+
A callback that accepts a Date object when a date is selected via the date picker.
210+
211+
Using it in your code:
212+
```javascript
213+
datePicker(selector, options, {
214+
onDateSelect: function(selectedDate) {
215+
// do something with selected date
216+
}
217+
});
218+
```
219+
206220
## Running locally
207221

208222
Clone this repository to your local machine and install dependencies.

src/__tests__/datepicker.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,5 +1059,30 @@ describe('Date picker', () => {
10591059

10601060
expect(highlighted === document.activeElement).toBeTruthy();
10611061
});
1062+
1063+
it('should call the onDateSelect callback with the selected date', () => {
1064+
let expectedDate;
1065+
1066+
datePicker(
1067+
document.querySelector('.date-picker'),
1068+
{},
1069+
{
1070+
onDateSelect: (date) => {
1071+
expectedDate = date;
1072+
},
1073+
},
1074+
);
1075+
1076+
const revealButton = document.querySelector('.date-picker__reveal');
1077+
1078+
$(revealButton).trigger('click');
1079+
1080+
const todayButton = document.querySelector(`[data-test-id="${today.toLocaleDateString()}"]`);
1081+
$(todayButton).trigger('click');
1082+
1083+
expect(expectedDate.getDate()).toEqual(today.getDate());
1084+
expect(expectedDate.getMonth()).toEqual(today.getMonth());
1085+
expect(expectedDate.getFullYear()).toEqual(today.getFullYear());
1086+
});
10621087
});
10631088
});

src/js/datepicker.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,10 @@ function datePicker(datePickerElement, options = {}, callbacks = {}) {
166166
elements.inputs.day.value = formatDateInput(date.getDate());
167167
elements.inputs.month.value = formatDateInput(date.getMonth() + 1);
168168
elements.inputs.year.value = date.getFullYear();
169+
170+
if (callbacks.onDateSelect) {
171+
callbacks.onDateSelect(date);
172+
}
169173
}
170174

171175
function setIsPreviousEnabled() {

0 commit comments

Comments
 (0)