dareway-rui
Version:
234 lines (199 loc) • 8.86 kB
JavaScript
'use strict';
var _interopRequireWildcard = require('@babel/runtime/helpers/interopRequireWildcard');
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault');
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty'));
var _classCallCheck2 = _interopRequireDefault(require('@babel/runtime/helpers/classCallCheck'));
var _createClass2 = _interopRequireDefault(require('@babel/runtime/helpers/createClass'));
var _possibleConstructorReturn2 = _interopRequireDefault(require('@babel/runtime/helpers/possibleConstructorReturn'));
var _getPrototypeOf2 = _interopRequireDefault(require('@babel/runtime/helpers/getPrototypeOf'));
var _inherits2 = _interopRequireDefault(require('@babel/runtime/helpers/inherits'));
var _react = _interopRequireWildcard(require('react'));
var _propTypes = _interopRequireDefault(require('prop-types'));
var _classnames = _interopRequireDefault(require('classnames'));
var _index = require('../util/index');
var ROW = 4;
var COL = 3;
function chooseMonth(month) {
var next = this.state.value.clone();
next.month(month);
this.setAndSelectValue(next);
}
function noop() {}
var MonthTable =
/*#__PURE__*/
(function(_Component) {
(0, _inherits2.default)(MonthTable, _Component);
function MonthTable(props) {
var _this;
(0, _classCallCheck2.default)(this, MonthTable);
_this = (0, _possibleConstructorReturn2.default)(
this,
(0, _getPrototypeOf2.default)(MonthTable).call(this, props)
);
_this.state = {
value: props.value
};
return _this;
}
(0, _createClass2.default)(MonthTable, [
{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if ('value' in nextProps) {
this.setState({
value: nextProps.value
});
}
}
},
{
key: 'setAndSelectValue',
value: function setAndSelectValue(value) {
this.setState({
value: value
});
this.props.onSelect(value);
}
},
{
key: 'months',
value: function months() {
var value = this.state.value;
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;
}
},
{
key: 'render',
value: function render() {
var _this2 = this;
var props = this.props;
var value = this.state.value;
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;
var monthsEls = months.map(function(month, index) {
var tds = month.map(function(monthData) {
var _classNameMap;
var disabled = false;
if (props.disabledDate) {
var testValue = value.clone();
testValue.month(monthData.value);
disabled = props.disabledDate(testValue);
}
var classNameMap = ((_classNameMap = {}),
(0, _defineProperty2.default)(_classNameMap, ''.concat(prefixCls, '-cell'), 1),
(0, _defineProperty2.default)(
_classNameMap,
''.concat(prefixCls, '-cell-disabled'),
disabled
),
(0, _defineProperty2.default)(
_classNameMap,
''.concat(prefixCls, '-selected-cell'),
monthData.value === currentMonth
),
(0, _defineProperty2.default)(
_classNameMap,
''.concat(prefixCls, '-current-cell'),
today.year() === value.year() && monthData.value === today.month()
),
_classNameMap);
var cellEl;
if (cellRender) {
var currentValue = value.clone();
currentValue.month(monthData.value);
cellEl = cellRender(currentValue, locale);
} else {
var content;
if (contentRender) {
var _currentValue = value.clone();
_currentValue.month(monthData.value);
content = contentRender(_currentValue, locale);
} else {
content = monthData.content;
}
cellEl = _react.default.createElement(
'a',
{
className: ''.concat(prefixCls, '-month')
},
content
);
}
return _react.default.createElement(
'td',
{
role: 'gridcell',
key: monthData.value,
onClick: disabled ? null : chooseMonth.bind(_this2, monthData.value),
title: monthData.title,
className: (0, _classnames.default)(classNameMap)
},
cellEl
);
});
return _react.default.createElement(
'tr',
{
key: index,
role: 'row'
},
tds
);
});
return _react.default.createElement(
'table',
{
className: ''.concat(prefixCls, '-table'),
cellSpacing: '0',
role: 'grid'
},
_react.default.createElement(
'tbody',
{
className: ''.concat(prefixCls, '-tbody')
},
monthsEls
)
);
}
}
]);
return MonthTable;
})(_react.Component);
MonthTable.defaultProps = {
onSelect: noop
};
MonthTable.propTypes = {
onSelect: _propTypes.default.func,
cellRender: _propTypes.default.func,
prefixCls: _propTypes.default.string,
value: _propTypes.default.object
};
var _default = MonthTable;
exports.default = _default;
//@ sourceMappingURL=MonthTable.js.map