diff --git a/package-lock.json b/package-lock.json
index b82bc9e1..ab5beeef 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7169,6 +7169,11 @@
"integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=",
"dev": true
},
+ "js-calendar": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/js-calendar/-/js-calendar-1.2.3.tgz",
+ "integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw=="
+ },
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
diff --git a/package.json b/package.json
index 2372da4f..d8940ae5 100644
--- a/package.json
+++ b/package.json
@@ -43,6 +43,7 @@
"async-validator": "^1.8.2",
"deepmerge": "^1.5.2",
"element-resize-detector": "^1.1.13",
+ "js-calendar": "^1.2.3",
"lodash.throttle": "^4.1.1",
"popper.js": "^0.6.4",
"tinycolor2": "^1.4.1"
diff --git a/src/components/date-picker/base/date-table.vue b/src/components/date-picker/base/date-table.vue
index 4658d700..31196b84 100644
--- a/src/components/date-picker/base/date-table.vue
+++ b/src/components/date-picker/base/date-table.vue
@@ -82,7 +82,7 @@
start: isRange && time === minDay,
end: isRange && time === maxDay
};
- }).cells.slice(8);
+ }).cells;
}
},
methods: {
diff --git a/src/components/date-picker/base/mixin.js b/src/components/date-picker/base/mixin.js
index 0d0b7d37..ba64cc54 100644
--- a/src/components/date-picker/base/mixin.js
+++ b/src/components/date-picker/base/mixin.js
@@ -1,4 +1,6 @@
+import {clearHours} from '../util';
+
export default {
props: {
tableDate: {
@@ -36,7 +38,7 @@ export default {
methods: {
handleClick (cell) {
if (cell.disabled) return;
- const newDate = cell.date;
+ const newDate = new Date(clearHours(cell.date));
this.$emit('on-pick', newDate);
this.$emit('on-pick-click');
diff --git a/src/components/date-picker/panel/Date/date-range.vue b/src/components/date-picker/panel/Date/date-range.vue
index 0e6300c2..8cfd3d41 100644
--- a/src/components/date-picker/panel/Date/date-range.vue
+++ b/src/components/date-picker/panel/Date/date-range.vue
@@ -219,7 +219,6 @@
};
},
prevYear (panel) {
- console.log(this)
const increment = this.currentView === 'year' ? -10 : -1;
this.changePanelDate(panel, 'FullYear', increment);
},
diff --git a/src/components/date-picker/panel/Time/time-range.vue b/src/components/date-picker/panel/Time/time-range.vue
index aea53d2c..f4a65aa8 100644
--- a/src/components/date-picker/panel/Time/time-range.vue
+++ b/src/components/date-picker/panel/Time/time-range.vue
@@ -132,7 +132,7 @@
// set dateStart
Object.keys(start).forEach(type => {
- dateStart[`set${capitalize(type)}`](start[type])
+ dateStart[`set${capitalize(type)}`](start[type]);
});
// set dateEnd
diff --git a/src/components/date-picker/util.js b/src/components/date-picker/util.js
index 68ba23bd..80aca94f 100644
--- a/src/components/date-picker/util.js
+++ b/src/components/date-picker/util.js
@@ -222,7 +222,6 @@ export const TYPE_VALUE_RESOLVER_MAP = {
},
multiple: {
formatter: (value, format) => {
- console.log(value, format);
return value.filter(Boolean).map(date => formatDate(date, format)).join(',');
},
parser: (text, format) => text.split(',').map(string => parseDate(string.trim(), format))
diff --git a/test/unit/specs/date-picker.spec.js b/test/unit/specs/date-picker.spec.js
index 411b408d..0a440897 100644
--- a/test/unit/specs/date-picker.spec.js
+++ b/test/unit/specs/date-picker.spec.js
@@ -11,7 +11,7 @@ describe('DatePicker.vue', () => {
`);
const picker = vm.$children[0];
- picker.showPicker();
+ picker.$el.querySelector('input.ivu-input').focus();
vm.$nextTick(() => {
const calendarBody = vm.$el.querySelector('.ivu-picker-panel-body .ivu-date-picker-cells:first-of-type');
const calendarCells = [...calendarBody.querySelectorAll('.ivu-date-picker-cells-cell')].filter(el => {
@@ -20,7 +20,7 @@ describe('DatePicker.vue', () => {
return !prevMonth && !nextMonth;
});
const today = new Date();
- const daysInCurrentMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0).getDate();
+ const daysInCurrentMonth = new Date(today.getFullYear(), today.getMonth(), 0).getDate();
expect(daysInCurrentMonth).to.equal(calendarCells.length);
done();
});
@@ -32,7 +32,7 @@ describe('DatePicker.vue', () => {
`);
const picker = vm.$children[0];
expect(picker.$children.length).to.equal(2);
- expect(Array.isArray(picker.currentValue)).to.equal(true);
+ expect(Array.isArray(picker.internalValue)).to.equal(true);
done();
});
@@ -61,10 +61,17 @@ describe('DatePicker.vue', () => {
dayFive.setHours(0, 0, 0, 0);
// check pickers internal value
- const [startInternalValue, endInternalValue] = picker.currentValue; // Date Objects
+ const [startInternalValue, endInternalValue] = picker.internalValue; // Date Objects
expect(Math.abs(dayOne - startInternalValue)).to.equal(0);
expect(Math.abs(dayFive - endInternalValue)).to.equal(0);
+ /*
+ const [startInternalValue, endInternalValue] = picker.internalValue; // Date Objects
+ expect(dateToString(dayOne)).to.equal(dateToString(startInternalValue));
+ expect(dateToString(dayFive)).to.equal(dateToString(endInternalValue));
+
+ */
+
// check pickers display value
const [startDisplayValue, endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects
expect(Math.abs(dayOne - startDisplayValue)).to.equal(0);
@@ -77,6 +84,7 @@ describe('DatePicker.vue', () => {
});
it('should change type progamatically', done => {
+ // https://jsfiddle.net/hq7cLz83/
vm = createVue({
template: '',
data() {
@@ -94,9 +102,9 @@ describe('DatePicker.vue', () => {
const monthPanel = panel.querySelector('.ivu-date-picker-cells-month');
const yearPanel = panel.querySelector('.ivu-date-picker-cells-year');
- expect(dayPanel.style.display).to.equal('none');
+ expect(dayPanel).to.equal(null);
expect(monthPanel.style.display).to.equal('');
- expect(yearPanel.style.display).to.equal('none');
+ expect(yearPanel).to.equal(null);
expect(picker.type).to.equal('month');
expect(picker.selectionMode).to.equal('month');
@@ -104,6 +112,11 @@ describe('DatePicker.vue', () => {
vm.dateType = 'year';
promissedTick(picker)
.then(() => {
+ const yearPanel = panel.querySelector('.ivu-date-picker-cells-year');
+ const monthPanel = panel.querySelector('.ivu-date-picker-cells-month');
+ expect(yearPanel.style.display).to.equal('');
+ expect(monthPanel).to.equal(null);
+
expect(picker.type).to.equal('year');
expect(picker.selectionMode).to.equal('year');
@@ -112,10 +125,10 @@ describe('DatePicker.vue', () => {
})
.then(() => {
expect(picker.type).to.equal('date');
- expect(picker.selectionMode).to.equal('day');
+ expect(picker.selectionMode).to.equal('date');
done();
- });
+ }).catch(err => console.log(err));
});
});
@@ -170,7 +183,7 @@ describe('DatePicker.vue', () => {
clickableCells[firstDayInMonthIndex + 4].firstElementChild.click();
vm.$nextTick(() => {
// cache first values
- const [startInternalValue, endInternalValue] = picker.currentValue; // Date Objects
+ const [startInternalValue, endInternalValue] = picker.internalValue; // Date Objects
const [startDisplayValue, endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects
// clear picker
@@ -183,7 +196,7 @@ describe('DatePicker.vue', () => {
vm.$nextTick(() => {
expect(picker.visible).to.equal(true);
- expect(JSON.stringify(picker.currentValue)).to.equal('[null,null]');
+ expect(JSON.stringify(picker.internalValue)).to.equal('[null,null]');
expect(displayField.value).to.equal('');
clickableCells[firstDayInMonthIndex].firstElementChild.click();
@@ -191,8 +204,8 @@ describe('DatePicker.vue', () => {
clickableCells[firstDayInMonthIndex + 4].firstElementChild.click();
vm.$nextTick(() => {
// recheck internal values
- expect(Math.abs(picker.currentValue[0] - startInternalValue)).to.equal(0);
- expect(Math.abs(picker.currentValue[1] - endInternalValue)).to.equal(0);
+ expect(Math.abs(picker.internalValue[0] - startInternalValue)).to.equal(0);
+ expect(Math.abs(picker.internalValue[1] - endInternalValue)).to.equal(0);
// recheck display value
const [_startDisplayValue, _endDisplayValue] = displayField.value.split(' - ').map(stringToDate); // Date Objects
expect(Math.abs(_startDisplayValue - startDisplayValue)).to.equal(0);