From c7cb0b36ed5ec6464899be8e4e05126faac0873e Mon Sep 17 00:00:00 2001 From: Corey Kosloski Date: Sat, 18 Mar 2017 11:28:28 -0500 Subject: [PATCH] Handle empty date values in combodate --- docs/demos/combodate/test.js | 29 +++++++++++++++++++++++++++++ src/js/directives/combodate.js | 3 ++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/docs/demos/combodate/test.js b/docs/demos/combodate/test.js index 653494c4..acf20a26 100644 --- a/docs/demos/combodate/test.js +++ b/docs/demos/combodate/test.js @@ -33,4 +33,33 @@ describe('combodate', function() { expect(element(s+'a[editable-combodate]').text()).toMatch('Apr 29, 1984 12:00:00 AM'); expect(element(s+'form').count()).toBe(0); }); + + it('should show editor and submit empty value when empty value is selected in one of the drop downs', function() { + var s = '[ng-controller="CombodateCtrl"] '; + + expect(element(s+'a[editable-combodate]').css('display')).not().toBe('none'); + expect(element(s+'a[editable-combodate]').text()).toMatch('May 15, 1984 12:00:00 AM'); + element(s+'a[editable-combodate]').click(); + + expect(element(s+'a[editable-combodate]').css('display')).toBe('none'); + expect(element(s+'form[editable-form="$form"]').count()).toBe(1); + expect(element(s+'form select:visible').count()).toBe(5); + expect(element(s+'form select.day').val()).toBe('15'); + expect(element(s+'form select.month').val()).toBe('4'); + expect(element(s+'form select.year').val()).toBe('1984'); + expect(element(s+'form select.hour').val()).toBe('0'); + expect(element(s+'form select.minute').val()).toBe('0'); + expect(element(s+'form .editable-buttons button[type="submit"]:visible').count()).toBe(1); + expect(element(s+'form .editable-buttons button[type="button"]:visible').count()).toBe(1); + + //set 29 april + element(s+'form select.day option[value=]').click(); + + //submit + element(s+'form button[type="submit"]').click(); + + expect(element(s+'a[editable-combodate]').css('display')).not().toBe('none'); + expect(element(s+'a[editable-combodate]').text()).toMatch('empty'); + expect(element(s+'form').count()).toBe(0); + }); }); \ No newline at end of file diff --git a/src/js/directives/combodate.js b/src/js/directives/combodate.js index 4a91800f..dacb3920 100644 --- a/src/js/directives/combodate.js +++ b/src/js/directives/combodate.js @@ -27,7 +27,8 @@ angular.module('xeditable').directive('editableCombodate', ['editableDirectiveFa var combodate = editableCombodate.getInstance(this.inputEl, options); combodate.$widget.find('select').bind('change', function(e) { //.replace is so this works in Safari - self.scope.$data = (new Date(combodate.getValue().replace(/-/g, "/"))).toISOString(); + self.scope.$data = combodate.getValue() ? + (new Date(combodate.getValue().replace(/-/g, "/"))).toISOString() : null; }); } });