'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _vueTypes = require('../../../_util/vue-types'); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _BaseMixin = require('../../../_util/BaseMixin'); var _BaseMixin2 = _interopRequireDefault(_BaseMixin); var _index = require('../util/index'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var ROW = 4; var COL = 3; function chooseMonth(month) { var next = this.sValue.clone(); next.month(month); this.setAndSelectValue(next); } function noop() {} var MonthTable = { mixins: [_BaseMixin2['default']], props: { cellRender: _vueTypes2['default'].func, prefixCls: _vueTypes2['default'].string, value: _vueTypes2['default'].object, locale: _vueTypes2['default'].any, contentRender: _vueTypes2['default'].any, disabledDate: _vueTypes2['default'].func }, data: function data() { return { sValue: this.value }; }, watch: { value: function value(val) { this.setState({ sValue: val }); } }, methods: { setAndSelectValue: function setAndSelectValue(value) { this.setState({ sValue: value }); this.__emit('select', value); }, months: function months() { var value = this.sValue; var current = value.clone(); var months = []; var index = 0; for (var rowIndex = 0; rowIndex < ROW; rowIndex++) { months[rowIndex] = []; for (var colIndex = 0; colIndex < COL; colIndex++) { current.month(index); var content = (0, _index.getMonthName)(current); months[rowIndex][colIndex] = { value: index, content: content, title: content }; index++; } } return months; } }, render: function render() { var _this = this; var h = arguments[0]; var props = this.$props; var value = this.sValue; var today = (0, _index.getTodayTime)(value); var months = this.months(); var currentMonth = value.month(); var prefixCls = props.prefixCls, locale = props.locale, contentRender = props.contentRender, cellRender = props.cellRender, disabledDate = props.disabledDate; var monthsEls = months.map(function (month, index) { var tds = month.map(function (monthData) { var _classNameMap; var disabled = false; if (disabledDate) { var testValue = value.clone(); testValue.month(monthData.value); disabled = disabledDate(testValue); } var classNameMap = (_classNameMap = {}, (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-cell', 1), (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-cell-disabled', disabled), (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-selected-cell', monthData.value === currentMonth), (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-current-cell', today.year() === value.year() && monthData.value === today.month()), _classNameMap); var cellEl = void 0; if (cellRender) { var currentValue = value.clone(); currentValue.month(monthData.value); cellEl = cellRender(currentValue, locale); } else { var content = void 0; if (contentRender) { var _currentValue = value.clone(); _currentValue.month(monthData.value); content = contentRender(_currentValue, locale); } else { content = monthData.content; } cellEl = h( 'a', { 'class': prefixCls + '-month' }, [content] ); } return h( 'td', { attrs: { role: 'gridcell', title: monthData.title }, key: monthData.value, on: { 'click': disabled ? noop : chooseMonth.bind(_this, monthData.value) }, 'class': classNameMap }, [cellEl] ); }); return h( 'tr', { key: index, attrs: { role: 'row' } }, [tds] ); }); return h( 'table', { 'class': prefixCls + '-table', attrs: { cellSpacing: '0', role: 'grid' } }, [h( 'tbody', { 'class': prefixCls + '-tbody' }, [monthsEls] )] ); } }; exports['default'] = MonthTable;