Commit 5426dcf989a12b5b99458cf6f0c498d3d0e778d4

Authored by Sergio Crisostomo
1 parent d9ff845f

fix specs, fix merge conflicts and cleanup

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