diff --git a/examples/routers/date.vue b/examples/routers/date.vue
index e9576ffe..8eeac53c 100644
--- a/examples/routers/date.vue
+++ b/examples/routers/date.vue
@@ -249,14 +249,17 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/date-picker/picker/date-picker.js b/src/components/date-picker/picker/date-picker.js
index cd616276..4ac81317 100644
--- a/src/components/date-picker/picker/date-picker.js
+++ b/src/components/date-picker/picker/date-picker.js
@@ -5,6 +5,7 @@ import RangeDatePickerPanel from '../panel/Date/date-range.vue';
import { oneOf } from '../../../utils/assist';
export default {
+ name: 'CalendarPicker',
mixins: [Picker],
props: {
type: {
diff --git a/src/components/date-picker/picker/time-picker.js b/src/components/date-picker/picker/time-picker.js
index f876b5cc..57313890 100644
--- a/src/components/date-picker/picker/time-picker.js
+++ b/src/components/date-picker/picker/time-picker.js
@@ -3,7 +3,7 @@ import TimePickerPanel from '../panel/Time/time.vue';
import RangeTimePickerPanel from '../panel/Time/time-range.vue';
import Options from '../time-mixins';
-import { oneOf } from '../../../utils/assist';
+import { findComponentsDownward, oneOf } from '../../../utils/assist';
export default {
mixins: [Picker, Options],
@@ -30,4 +30,14 @@ export default {
};
}
},
+ watch: {
+ visible(visible){
+ if (visible) {
+ this.$nextTick(() => {
+ const spinners = findComponentsDownward(this, 'TimeSpinner');
+ spinners.forEach(instance => instance.updateScroll());
+ });
+ }
+ }
+ }
};
diff --git a/src/styles/components/date-picker.less b/src/styles/components/date-picker.less
index ac4d57b6..6de60963 100644
--- a/src/styles/components/date-picker.less
+++ b/src/styles/components/date-picker.less
@@ -44,17 +44,23 @@
margin: 2px;
color: @btn-disable-color;
}
+ &-cell:hover{
+ em{
+ background: @date-picker-cell-hover-bg;
+ }
+ }
+ &-focused{
+ em{
+ box-shadow: 0 0 0 1px @primary-color inset;
+ }
+ }
+
&-cell{
span&{
width: 28px;
height: 28px;
cursor: pointer;
}
- &:hover{
- em{
- background: @date-picker-cell-hover-bg;
- }
- }
&-prev-month,&-next-month{
em{
color: @btn-disable-color;
@@ -154,6 +160,11 @@
margin: 0;
}
}
+
+ .@{date-picker-prefix-cls}-cells-cell-focused{
+ background-color: tint(@primary-color, 80%);
+ }
+
}
&-header{
@@ -169,6 +180,11 @@
}
}
}
+ &-btn-pulse{
+ background-color: tint(@primary-color, 80%) !important;
+ border-radius: @border-radius-small;
+ transition: background-color @transition-time @ease-in-out;
+ }
&-prev-btn{
float: left;
&-arrow-double{
@@ -216,6 +232,10 @@
max-height: none;
width: auto;
}
+
+ &-focused input{
+ .active();
+ }
}
.@{picker-prefix-cls} {
@@ -289,9 +309,9 @@
color: @link-active-color;
}
}
- & > span&-time-disabled{
- color: @btn-disable-color;
- cursor: @cursor-disabled;
+
+ &-time{
+ float: left;
}
}
}
diff --git a/src/styles/components/time-picker.less b/src/styles/components/time-picker.less
index 6d47494a..9f76f18a 100644
--- a/src/styles/components/time-picker.less
+++ b/src/styles/components/time-picker.less
@@ -70,6 +70,9 @@
color: @primary-color;
background: @background-color-select-hover;
}
+ &-focused{
+ background-color: tint(@primary-color, 80%);
+ }
}
}
@@ -165,4 +168,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/test/unit/specs/date-picker.spec.js b/test/unit/specs/date-picker.spec.js
index e2583aef..3c74e585 100644
--- a/test/unit/specs/date-picker.spec.js
+++ b/test/unit/specs/date-picker.spec.js
@@ -116,7 +116,7 @@ describe('DatePicker.vue', () => {
`);
const picker = vm.$children[0];
- picker.handleIconClick();
+ picker.handleFocus({type: 'focus'});
vm.$nextTick(() => {
const displayField = vm.$el.querySelector('.ivu-input');
const clickableCells = vm.$el.querySelectorAll('.ivu-date-picker-cells-cell');
@@ -169,7 +169,7 @@ describe('DatePicker.vue', () => {
});
const picker = vm.$children[0];
- picker.handleIconClick();
+ picker.handleFocus({type: 'focus'});
vm.$nextTick(() => {
const panel = vm.$el.querySelector('.ivu-picker-panel-content');
const dayPanel = panel.querySelector('[class="ivu-date-picker-cells"]');
@@ -243,7 +243,7 @@ describe('DatePicker.vue', () => {
`);
const picker = vm.$children[0];
- picker.handleIconClick();
+ picker.handleFocus({type: 'focus'});
vm.$nextTick(() => {
const displayField = vm.$el.querySelector('.ivu-input');
const clickableCells = vm.$el.querySelectorAll('.ivu-date-picker-cells-cell');
@@ -266,9 +266,11 @@ describe('DatePicker.vue', () => {
// it should be closed by now
expect(picker.visible).to.equal(false);
// open picker again
- picker.handleIconClick();
+ picker.handleFocus({type: 'focus'});
+ picker.visible = true;
- vm.$nextTick(() => {
+
+ vm.$nextTick(() => {
expect(picker.visible).to.equal(true);
expect(JSON.stringify(picker.internalValue)).to.equal('[null,null]');
expect(displayField.value).to.equal('');
@@ -355,7 +357,7 @@ describe('DatePicker.vue', () => {
`);
const picker = vm.$children[0];
- picker.handleIconClick();
+ picker.handleFocus({type: 'focus'});
vm.$nextTick(() => {
const now = new Date();
const labels = vm.$el.querySelectorAll('.ivu-picker-panel-body .ivu-date-picker-header-label');
diff --git a/test/unit/specs/time-spinner.spec.js b/test/unit/specs/time-spinner.spec.js
index 984255cf..512645dc 100644
--- a/test/unit/specs/time-spinner.spec.js
+++ b/test/unit/specs/time-spinner.spec.js
@@ -11,7 +11,7 @@ describe('TimePicker.vue', () => {
`);
const picker = vm.$children[0];
- picker.handleIconClick(); // open the picker panels
+ picker.handleFocus({type: 'focus'}); // open the picker panels
vm.$nextTick(() => {
const spiners = picker.$el.querySelectorAll('.ivu-time-picker-cells-list');
@@ -28,7 +28,7 @@ describe('TimePicker.vue', () => {
`);
const picker = vm.$children[0];
- picker.handleIconClick(); // open the picker panels
+ picker.handleFocus({type: 'focus'}); // open the picker panels
vm.$nextTick(() => {
const spiners = picker.$el.querySelectorAll('.ivu-time-picker-cells-list');
@@ -44,7 +44,7 @@ describe('TimePicker.vue', () => {
`);
const picker = vm.$children[0];
- picker.handleIconClick(); // open the picker panels
+ picker.handleFocus({type: 'focus'}); // open the picker panels
vm.$nextTick(() => {
const spiners = picker.$el.querySelectorAll('.ivu-time-picker-cells-list');