diff --git a/package-lock.json b/package-lock.json index a57dbd6..fed5126 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13214,9 +13214,9 @@ "dev": true }, "tui-time-picker": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/tui-time-picker/-/tui-time-picker-2.1.3.tgz", - "integrity": "sha512-EjOOaS+NqTSuBbsR+gEsNytyd6Mtw+JvwaIsFc6iytJi+Ncm7yQMhZE7T8CjLrFEhPFluuma10WgU8WIxJrsbQ==" + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/tui-time-picker/-/tui-time-picker-2.1.5.tgz", + "integrity": "sha512-A0JzWpVIaTun8m4BEGa/COVKRk3m+FyBdC6s8xJ0mPToloBqkQ1SRC2Gd/GDZHhxKAdlDoLCfgCselK0oN5Ykw==" }, "type-check": { "version": "0.3.2", diff --git a/package.json b/package.json index 0c6ac93..4cd5a5d 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,6 @@ "webpack-dev-server": "^3.8.0" }, "dependencies": { - "tui-time-picker": "^2.1.3" + "tui-time-picker": "^2.1.5" } } diff --git a/src/js/datepicker/index.js b/src/js/datepicker/index.js index 974d096..6ebf41c 100644 --- a/src/js/datepicker/index.js +++ b/src/js/datepicker/index.js @@ -1133,11 +1133,12 @@ var DatePicker = defineClass( /** * Select the date. * @param {Date|number} date - Date instance or timestamp to set + * @param {boolean} [silent] - Prevents firing 'change' event if it is true. * @example * datepicker.setDate(new Date()); // Set today */ // eslint-disable-next-line complexity - setDate: function(date) { + setDate: function(date, silent) { var isValidInput, newDate, shouldUpdate; if (date === null) { @@ -1155,7 +1156,7 @@ var DatePicker = defineClass( this._date = newDate; this._calendar.draw({ date: newDate }); if (this._timePicker) { - this._timePicker.setTime(newDate.getHours(), newDate.getMinutes()); + this._timePicker.setTime(newDate.getHours(), newDate.getMinutes(), true); } this._syncToInput(); @@ -1174,7 +1175,9 @@ var DatePicker = defineClass( * // unbind the 'change' event * datepicker.off('change'); */ - this.fire('change'); + if (!silent) { + this.fire('change'); + } } }, diff --git a/test/datepicker/datepicker.spec.js b/test/datepicker/datepicker.spec.js index 6ab2229..3895008 100755 --- a/test/datepicker/datepicker.spec.js +++ b/test/datepicker/datepicker.spec.js @@ -1,3 +1,5 @@ +/* eslint-disable max-nested-callbacks */ + /** * @fileoverview DatePicker spec */ @@ -131,14 +133,34 @@ describe('Date Picker', function() { expect(datepicker.getCalendar()).toEqual(expect.any(Calendar)); }); - it('setDate', function() { - datepicker.setDate(new Date(2017, 2, 12)); + describe('setDate', function() { + it('default', function() { + datepicker.setDate(new Date(2017, 2, 12)); + + expect(datepicker.getDate()).toEqual(new Date(2017, 2, 12)); + + datepicker.setDate(); + + expect(datepicker.getDate()).toEqual(new Date(2017, 2, 12)); + }); - expect(datepicker.getDate()).toEqual(new Date(2017, 2, 12)); + it('should firing change event only once', function() { + var spy = jest.fn(); + datepicker.on('change', spy); - datepicker.setDate(); + datepicker.setDate(new Date(2017, 10, 27, 23, 59)); - expect(datepicker.getDate()).toEqual(new Date(2017, 2, 12)); + expect(spy).toHaveBeenCalledTimes(1); + }); + + it('should not fire change event when silent is true', function() { + var spy = jest.fn(); + datepicker.on('change', spy); + + datepicker.setDate(new Date(2017, 10, 27, 23, 59), true); + + expect(spy).toHaveBeenCalledTimes(0); + }); }); it('setType', function() {