From 62d9169c86e9fc4833ab59603076dd7e46439ee0 Mon Sep 17 00:00:00 2001 From: uros Date: Tue, 17 Sep 2024 00:06:58 +0200 Subject: [PATCH] #6347 fix: Datepicker -> Allow user to set year via input when view="year" closes #6347 --- .../src/datepicker/DatePicker.spec.js | 20 +++++++++++++++++++ .../primevue/src/datepicker/DatePicker.vue | 5 +++++ 2 files changed, 25 insertions(+) diff --git a/packages/primevue/src/datepicker/DatePicker.spec.js b/packages/primevue/src/datepicker/DatePicker.spec.js index 3254d07c5..7d6b987a2 100644 --- a/packages/primevue/src/datepicker/DatePicker.spec.js +++ b/packages/primevue/src/datepicker/DatePicker.spec.js @@ -98,4 +98,24 @@ describe('DatePicker.vue', () => { expect(wrapper.find('.p-datepicker-other-month span').exists()).toBe(true); }); + + it('should correctly set the year when view="year" and value is set via the input', async () => { + const dateOne = new Date(); + const dateTwo = new Date(); + + dateTwo.setFullYear(1988, 5, 15); + + await wrapper.setProps({ view: 'year', dateFormat: 'yy', modelValue: dateOne }); + + const input = wrapper.find('.p-datepicker-input'); + + await input.trigger('focus'); + + expect(wrapper.find('.p-datepicker-decade').exists()).toBe(true); + expect(wrapper.find('.p-datepicker-decade').text()).toBe('2020 - 2029'); + + await wrapper.setProps({ modelValue: dateTwo }); + + expect(wrapper.find('.p-datepicker-decade').text()).toBe('1980 - 1989'); + }); }); diff --git a/packages/primevue/src/datepicker/DatePicker.vue b/packages/primevue/src/datepicker/DatePicker.vue index 9c04e5ae4..3c4ca3a5e 100755 --- a/packages/primevue/src/datepicker/DatePicker.vue +++ b/packages/primevue/src/datepicker/DatePicker.vue @@ -1911,6 +1911,11 @@ export default { day = 1; } + if (this.currentView === 'year') { + day = 1; + month = 1; + } + for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) {