diff --git a/README.md b/README.md
index 3db2951..54b32e2 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ export default {
| Prop | Type | Default | Description |
|---------------------|---------------|-------------|-----------------------------------------------------|
-| type | String | 'date' | select datepicker or datetimepicker(date/datetime) |
+| type | String | 'date' | select date type (date/datetime/year/month) |
| range | Boolean | false | if true, the type is daterange or datetimerange |
| format | String | YYYY-MM-DD | The parsing tokens are similar to the moment.js |
| lang | String/Object | zh | Translation (en/zh/es/pt-br/fr/ru/de/it/cs)(custom) |
diff --git a/README.zh-CN.md b/README.zh-CN.md
index fac8b38..42da206 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -68,7 +68,7 @@ export default {
| Prop | Type | Default | Description
|---------------------|---------------|-------------|-----------------------------------------------------
-| type | String | 'date' | 选择日期或日期时间(可选:date,datetime)
+| type | String | 'date' | 选择日期或日期时间(可选:date,datetime,year,month)
| range | Boolean | false | 如果是true, 显示日历范围选择
| format | String | YYYY-MM-DD | 格式化显示日期 api类似moment.js
| lang | String/Object | zh | 选择语言或自定义 (en/zh/es/pt-br/fr/ru/de/it/cs)(custom)
diff --git a/demo/index.js b/demo/index.js
index ef85c46..edb4c6b 100644
--- a/demo/index.js
+++ b/demo/index.js
@@ -15,7 +15,9 @@ new Vue({ // eslint-disable-line
value6: '',
value7: '',
value8: '',
- value9: ''
+ value9: '',
+ value10: new Date(),
+ value11: new Date()
}
},
methods: {
@@ -44,7 +46,9 @@ new Vue({ // eslint-disable-line
render (h) {
const example1 = {
'base': '',
- 'range': ''
+ 'range': '',
+ 'month': '',
+ 'year': ''
}
const example2 = {
'datetime': `
diff --git a/src/calendar.vue b/src/calendar.vue
index eddbe72..d87924c 100644
--- a/src/calendar.vue
+++ b/src/calendar.vue
@@ -18,13 +18,16 @@
class="mx-icon-next-month"
@click="handleIconMonth(1)">›
{{months[calendarMonth]}}
{{calendarYear}}
+ {{yearHeader}}
{v}
diff --git a/src/panel/year.js b/src/panel/year.js
index fffde6f..2e65dd6 100644
--- a/src/panel/year.js
+++ b/src/panel/year.js
@@ -2,10 +2,20 @@ export default {
name: 'panelYear',
props: {
value: null,
- firstYear: Number
+ firstYear: Number,
+ disabledYear: Function
},
methods: {
+ isDisabled (year) {
+ if (typeof this.disabledYear === 'function' && this.disabledYear(year)) {
+ return true
+ }
+ return false
+ },
selectYear (year) {
+ if (this.isDisabled(year)) {
+ return
+ }
this.$emit('select', year)
}
},
@@ -18,7 +28,8 @@ export default {
return {year}
diff --git a/test/index.spec.js b/test/index.spec.js
index 63eba3c..ce0d61c 100644
--- a/test/index.spec.js
+++ b/test/index.spec.js
@@ -409,6 +409,36 @@ describe('calendar-panel', () => {
done()
}, 0)
})
+
+ it('prop: type year', () => {
+ wrapper = mount(CalendarPanel, {
+ propsData: {
+ type: 'year',
+ value: new Date(2018, 1, 1)
+ }
+ })
+ const td = wrapper.find('.mx-panel-year .cell:nth-child(1)')
+ td.trigger('click')
+ const expectDate = new Date(2010, 1, 1)
+ expect(wrapper.emitted()).toEqual({
+ 'select-date': [[expectDate]]
+ })
+ })
+
+ it('prop: type month', () => {
+ wrapper = mount(CalendarPanel, {
+ propsData: {
+ type: 'month',
+ value: new Date(2018, 1, 1)
+ }
+ })
+ const td = wrapper.find('.mx-panel-month .cell:nth-child(1)')
+ td.trigger('click')
+ const expectDate = new Date(2018, 0, 1)
+ expect(wrapper.emitted()).toEqual({
+ 'select-date': [[expectDate]]
+ })
+ })
})
describe('date-panel', () => {