Commit 5426dcf989a12b5b99458cf6f0c498d3d0e778d4

Authored by Sergio Crisostomo
1 parent d9ff845f

fix specs, fix merge conflicts and cleanup

@@ -7169,6 +7169,11 @@ @@ -7169,6 +7169,11 @@
7169 "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", 7169 "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=",
7170 "dev": true 7170 "dev": true
7171 }, 7171 },
  7172 + "js-calendar": {
  7173 + "version": "1.2.3",
  7174 + "resolved": "https://registry.npmjs.org/js-calendar/-/js-calendar-1.2.3.tgz",
  7175 + "integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw=="
  7176 + },
7172 "js-tokens": { 7177 "js-tokens": {
7173 "version": "3.0.2", 7178 "version": "3.0.2",
7174 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 7179 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@@ -43,6 +43,7 @@ @@ -43,6 +43,7 @@
43 "async-validator": "^1.8.2", 43 "async-validator": "^1.8.2",
44 "deepmerge": "^1.5.2", 44 "deepmerge": "^1.5.2",
45 "element-resize-detector": "^1.1.13", 45 "element-resize-detector": "^1.1.13",
  46 + "js-calendar": "^1.2.3",
46 "lodash.throttle": "^4.1.1", 47 "lodash.throttle": "^4.1.1",
47 "popper.js": "^0.6.4", 48 "popper.js": "^0.6.4",
48 "tinycolor2": "^1.4.1" 49 "tinycolor2": "^1.4.1"
src/components/date-picker/base/date-table.vue
@@ -82,7 +82,7 @@ @@ -82,7 +82,7 @@
82 start: isRange && time === minDay, 82 start: isRange && time === minDay,
83 end: isRange && time === maxDay 83 end: isRange && time === maxDay
84 }; 84 };
85 - }).cells.slice(8); 85 + }).cells;
86 } 86 }
87 }, 87 },
88 methods: { 88 methods: {
src/components/date-picker/base/mixin.js
1 1
  2 +import {clearHours} from '../util';
  3 +
2 export default { 4 export default {
3 props: { 5 props: {
4 tableDate: { 6 tableDate: {
@@ -36,7 +38,7 @@ export default { @@ -36,7 +38,7 @@ export default {
36 methods: { 38 methods: {
37 handleClick (cell) { 39 handleClick (cell) {
38 if (cell.disabled) return; 40 if (cell.disabled) return;
39 - const newDate = cell.date; 41 + const newDate = new Date(clearHours(cell.date));
40 42
41 this.$emit('on-pick', newDate); 43 this.$emit('on-pick', newDate);
42 this.$emit('on-pick-click'); 44 this.$emit('on-pick-click');
src/components/date-picker/panel/Date/date-range.vue
@@ -219,7 +219,6 @@ @@ -219,7 +219,6 @@
219 }; 219 };
220 }, 220 },
221 prevYear (panel) { 221 prevYear (panel) {
222 - console.log(this)  
223 const increment = this.currentView === 'year' ? -10 : -1; 222 const increment = this.currentView === 'year' ? -10 : -1;
224 this.changePanelDate(panel, 'FullYear', increment); 223 this.changePanelDate(panel, 'FullYear', increment);
225 }, 224 },
src/components/date-picker/panel/Time/time-range.vue
@@ -132,7 +132,7 @@ @@ -132,7 +132,7 @@
132 132
133 // set dateStart 133 // set dateStart
134 Object.keys(start).forEach(type => { 134 Object.keys(start).forEach(type => {
135 - dateStart[`set${capitalize(type)}`](start[type]) 135 + dateStart[`set${capitalize(type)}`](start[type]);
136 }); 136 });
137 137
138 // set dateEnd 138 // set dateEnd
src/components/date-picker/util.js
@@ -222,7 +222,6 @@ export const TYPE_VALUE_RESOLVER_MAP = { @@ -222,7 +222,6 @@ export const TYPE_VALUE_RESOLVER_MAP = {
222 }, 222 },
223 multiple: { 223 multiple: {
224 formatter: (value, format) => { 224 formatter: (value, format) => {
225 - console.log(value, format);  
226 return value.filter(Boolean).map(date => formatDate(date, format)).join(','); 225 return value.filter(Boolean).map(date => formatDate(date, format)).join(',');
227 }, 226 },
228 parser: (text, format) => text.split(',').map(string => parseDate(string.trim(), format)) 227 parser: (text, format) => text.split(',').map(string => parseDate(string.trim(), format))
test/unit/specs/date-picker.spec.js
@@ -11,7 +11,7 @@ describe('DatePicker.vue', () => { @@ -11,7 +11,7 @@ describe('DatePicker.vue', () => {
11 <Date-Picker></Date-Picker> 11 <Date-Picker></Date-Picker>
12 `); 12 `);
13 const picker = vm.$children[0]; 13 const picker = vm.$children[0];
14 - picker.showPicker(); 14 + picker.$el.querySelector('input.ivu-input').focus();
15 vm.$nextTick(() => { 15 vm.$nextTick(() => {
16 const calendarBody = vm.$el.querySelector('.ivu-picker-panel-body .ivu-date-picker-cells:first-of-type'); 16 const calendarBody = vm.$el.querySelector('.ivu-picker-panel-body .ivu-date-picker-cells:first-of-type');
17 const calendarCells = [...calendarBody.querySelectorAll('.ivu-date-picker-cells-cell')].filter(el => { 17 const calendarCells = [...calendarBody.querySelectorAll('.ivu-date-picker-cells-cell')].filter(el => {
@@ -20,7 +20,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -20,7 +20,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
20 return !prevMonth && !nextMonth; 20 return !prevMonth && !nextMonth;
21 }); 21 });
22 const today = new Date(); 22 const today = new Date();
23 - const daysInCurrentMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0).getDate(); 23 + const daysInCurrentMonth = new Date(today.getFullYear(), today.getMonth(), 0).getDate();
24 expect(daysInCurrentMonth).to.equal(calendarCells.length); 24 expect(daysInCurrentMonth).to.equal(calendarCells.length);
25 done(); 25 done();
26 }); 26 });
@@ -32,7 +32,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -32,7 +32,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
32 `); 32 `);
33 const picker = vm.$children[0]; 33 const picker = vm.$children[0];
34 expect(picker.$children.length).to.equal(2); 34 expect(picker.$children.length).to.equal(2);
35 - expect(Array.isArray(picker.currentValue)).to.equal(true); 35 + expect(Array.isArray(picker.internalValue)).to.equal(true);
36 done(); 36 done();
37 }); 37 });
38 38
@@ -61,10 +61,17 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -61,10 +61,17 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
61 dayFive.setHours(0, 0, 0, 0); 61 dayFive.setHours(0, 0, 0, 0);
62 62
63 // check pickers internal value 63 // check pickers internal value
64 - const [startInternalValue, endInternalValue] = picker.currentValue; // Date Objects 64 + const [startInternalValue, endInternalValue] = picker.internalValue; // Date Objects
65 expect(Math.abs(dayOne - startInternalValue)).to.equal(0); 65 expect(Math.abs(dayOne - startInternalValue)).to.equal(0);
66 expect(Math.abs(dayFive - endInternalValue)).to.equal(0); 66 expect(Math.abs(dayFive - endInternalValue)).to.equal(0);
67 67
  68 + /*
  69 + const [startInternalValue, endInternalValue] = picker.internalValue; // Date Objects
  70 + expect(dateToString(dayOne)).to.equal(dateToString(startInternalValue));
  71 + expect(dateToString(dayFive)).to.equal(dateToString(endInternalValue));
  72 +
  73 + */
  74 +
68 // check pickers display value 75 // check pickers display value
69 const [startDisplayValue, endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects 76 const [startDisplayValue, endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects
70 expect(Math.abs(dayOne - startDisplayValue)).to.equal(0); 77 expect(Math.abs(dayOne - startDisplayValue)).to.equal(0);
@@ -77,6 +84,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -77,6 +84,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
77 }); 84 });
78 85
79 it('should change type progamatically', done => { 86 it('should change type progamatically', done => {
  87 + // https://jsfiddle.net/hq7cLz83/
80 vm = createVue({ 88 vm = createVue({
81 template: '<Date-picker :type="dateType"></Date-picker>', 89 template: '<Date-picker :type="dateType"></Date-picker>',
82 data() { 90 data() {
@@ -94,9 +102,9 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -94,9 +102,9 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
94 const monthPanel = panel.querySelector('.ivu-date-picker-cells-month'); 102 const monthPanel = panel.querySelector('.ivu-date-picker-cells-month');
95 const yearPanel = panel.querySelector('.ivu-date-picker-cells-year'); 103 const yearPanel = panel.querySelector('.ivu-date-picker-cells-year');
96 104
97 - expect(dayPanel.style.display).to.equal('none'); 105 + expect(dayPanel).to.equal(null);
98 expect(monthPanel.style.display).to.equal(''); 106 expect(monthPanel.style.display).to.equal('');
99 - expect(yearPanel.style.display).to.equal('none'); 107 + expect(yearPanel).to.equal(null);
100 108
101 expect(picker.type).to.equal('month'); 109 expect(picker.type).to.equal('month');
102 expect(picker.selectionMode).to.equal('month'); 110 expect(picker.selectionMode).to.equal('month');
@@ -104,6 +112,11 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -104,6 +112,11 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
104 vm.dateType = 'year'; 112 vm.dateType = 'year';
105 promissedTick(picker) 113 promissedTick(picker)
106 .then(() => { 114 .then(() => {
  115 + const yearPanel = panel.querySelector('.ivu-date-picker-cells-year');
  116 + const monthPanel = panel.querySelector('.ivu-date-picker-cells-month');
  117 + expect(yearPanel.style.display).to.equal('');
  118 + expect(monthPanel).to.equal(null);
  119 +
107 expect(picker.type).to.equal('year'); 120 expect(picker.type).to.equal('year');
108 expect(picker.selectionMode).to.equal('year'); 121 expect(picker.selectionMode).to.equal('year');
109 122
@@ -112,10 +125,10 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -112,10 +125,10 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
112 }) 125 })
113 .then(() => { 126 .then(() => {
114 expect(picker.type).to.equal('date'); 127 expect(picker.type).to.equal('date');
115 - expect(picker.selectionMode).to.equal('day'); 128 + expect(picker.selectionMode).to.equal('date');
116 129
117 done(); 130 done();
118 - }); 131 + }).catch(err => console.log(err));
119 }); 132 });
120 }); 133 });
121 134
@@ -170,7 +183,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -170,7 +183,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
170 clickableCells[firstDayInMonthIndex + 4].firstElementChild.click(); 183 clickableCells[firstDayInMonthIndex + 4].firstElementChild.click();
171 vm.$nextTick(() => { 184 vm.$nextTick(() => {
172 // cache first values 185 // cache first values
173 - const [startInternalValue, endInternalValue] = picker.currentValue; // Date Objects 186 + const [startInternalValue, endInternalValue] = picker.internalValue; // Date Objects
174 const [startDisplayValue, endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects 187 const [startDisplayValue, endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects
175 188
176 // clear picker 189 // clear picker
@@ -183,7 +196,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -183,7 +196,7 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
183 196
184 vm.$nextTick(() => { 197 vm.$nextTick(() => {
185 expect(picker.visible).to.equal(true); 198 expect(picker.visible).to.equal(true);
186 - expect(JSON.stringify(picker.currentValue)).to.equal('[null,null]'); 199 + expect(JSON.stringify(picker.internalValue)).to.equal('[null,null]');
187 expect(displayField.value).to.equal(''); 200 expect(displayField.value).to.equal('');
188 201
189 clickableCells[firstDayInMonthIndex].firstElementChild.click(); 202 clickableCells[firstDayInMonthIndex].firstElementChild.click();
@@ -191,8 +204,8 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; { @@ -191,8 +204,8 @@ describe(&#39;DatePicker.vue&#39;, () =&gt; {
191 clickableCells[firstDayInMonthIndex + 4].firstElementChild.click(); 204 clickableCells[firstDayInMonthIndex + 4].firstElementChild.click();
192 vm.$nextTick(() => { 205 vm.$nextTick(() => {
193 // recheck internal values 206 // recheck internal values
194 - expect(Math.abs(picker.currentValue[0] - startInternalValue)).to.equal(0);  
195 - expect(Math.abs(picker.currentValue[1] - endInternalValue)).to.equal(0); 207 + expect(Math.abs(picker.internalValue[0] - startInternalValue)).to.equal(0);
  208 + expect(Math.abs(picker.internalValue[1] - endInternalValue)).to.equal(0);
196 // recheck display value 209 // recheck display value
197 const [_startDisplayValue, _endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects 210 const [_startDisplayValue, _endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects
198 expect(Math.abs(_startDisplayValue - startDisplayValue)).to.equal(0); 211 expect(Math.abs(_startDisplayValue - startDisplayValue)).to.equal(0);