UNPKG

7.19 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
8
9var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
10
11var _createClass2 = require('babel-runtime/helpers/createClass');
12
13var _createClass3 = _interopRequireDefault(_createClass2);
14
15var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
16
17var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
18
19var _inherits2 = require('babel-runtime/helpers/inherits');
20
21var _inherits3 = _interopRequireDefault(_inherits2);
22
23var _react = require('react');
24
25var React = _interopRequireWildcard(_react);
26
27var _DatePicker = require('./DatePicker.base');
28
29var _DatePicker2 = _interopRequireDefault(_DatePicker);
30
31var _WeekPanel = require('./date/WeekPanel');
32
33var _WeekPanel2 = _interopRequireDefault(_WeekPanel);
34
35var _SingleMonth = require('./date/SingleMonth');
36
37var _SingleMonth2 = _interopRequireDefault(_SingleMonth);
38
39var _DOMScroller = require('zscroller/lib/DOMScroller');
40
41var _DOMScroller2 = _interopRequireDefault(_DOMScroller);
42
43function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
44
45function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
46
47var DatePicker = function (_Component) {
48 (0, _inherits3['default'])(DatePicker, _Component);
49
50 function DatePicker() {
51 (0, _classCallCheck3['default'])(this, DatePicker);
52
53 var _this = (0, _possibleConstructorReturn3['default'])(this, (DatePicker.__proto__ || Object.getPrototypeOf(DatePicker)).apply(this, arguments));
54
55 _this.genMonthComponent = function (data) {
56 if (!data) return;
57 return React.createElement(_SingleMonth2['default'], { key: data.title, locale: _this.props.locale || {}, monthData: data, rowSize: _this.props.rowSize, onCellClick: _this.onCellClick, getDateExtra: _this.props.getDateExtra, ref: function ref(dom) {
58 data.componentRef = dom || undefined;
59 data.updateLayout = function () {
60 _this.computeHeight(data, dom);
61 };
62 data.updateLayout();
63 } });
64 };
65 _this.computeHeight = function (data, singleMonth) {
66 if (singleMonth && singleMonth.wrapperDivDOM) {
67 // preact, ref时dom有可能无height, offsetTop数据。
68 if (!data.height && !singleMonth.wrapperDivDOM.clientHeight) {
69 setTimeout(function () {
70 return _this.computeHeight(data, singleMonth);
71 }, 500);
72 return;
73 }
74 data.height = singleMonth.wrapperDivDOM.clientHeight || data.height || 0;
75 data.y = singleMonth.wrapperDivDOM.offsetTop || data.y || 0;
76 }
77 };
78 _this.setLayout = function (dom) {
79 if (!_this.scroller) {
80 var _this$props = _this.props,
81 infinite = _this$props.infinite,
82 initalMonths = _this$props.initalMonths,
83 onLayout = _this$props.onLayout;
84
85 onLayout && onLayout(dom.clientHeight);
86 var scrollHandler = _this.createOnScroll();
87 if (infinite) {
88 _this.scroller = new _DOMScroller2['default'](dom.children[0], {
89 scrollingX: false,
90 onScroll: function onScroll() {
91 return scrollHandler({
92 client: dom.clientHeight,
93 full: dom.children[0].clientHeight,
94 top: _this.scroller.getValues().top
95 });
96 }
97 }).scroller;
98 _this.scroller.activatePullToRefresh(40, function () {}, function () {}, function () {
99 _this.canLoadPrev() && _this.genMonthData(_this.state.months[0].firstDate, -1);
100 _this.visibleMonth = _this.visibleMonth.slice(0, initalMonths);
101 _this.state.months.forEach(function (m) {
102 m.updateLayout && m.updateLayout();
103 });
104 _this.scroller.finishPullToRefresh();
105 });
106 } else {
107 _this.scroller = true;
108 dom.onscroll = function (evt) {
109 scrollHandler({
110 client: dom.clientHeight,
111 full: evt.target.clientHeight,
112 top: evt.target.scrollTop
113 });
114 };
115 }
116 }
117 };
118 return _this;
119 }
120
121 (0, _createClass3['default'])(DatePicker, [{
122 key: 'render',
123 value: function render() {
124 var _this2 = this;
125
126 var _props = this.props,
127 infinite = _props.infinite,
128 _props$prefixCls = _props.prefixCls,
129 prefixCls = _props$prefixCls === undefined ? '' : _props$prefixCls,
130 _props$locale = _props.locale,
131 locale = _props$locale === undefined ? {} : _props$locale;
132
133 return React.createElement(
134 'div',
135 { className: prefixCls + ' date-picker' },
136 React.createElement(_WeekPanel2['default'], null),
137 React.createElement(
138 'div',
139 { className: 'wrapper', style: {
140 overflowX: 'hidden',
141 overflowY: infinite ? 'hidden' : 'scroll'
142 }, ref: this.setLayout },
143 React.createElement(
144 'div',
145 null,
146 this.canLoadPrev() && React.createElement(
147 'div',
148 { className: 'load-tip' },
149 locale.loadPrevMonth
150 ),
151 React.createElement(
152 'div',
153 { className: 'months' },
154 this.state.months.map(function (m) {
155 var hidden = m.height && _this2.visibleMonth.indexOf(m) < 0;
156 if (hidden) {
157 return React.createElement('div', { key: m.title + '_shallow', style: { height: m.height } });
158 }
159 return m.component;
160 })
161 )
162 )
163 )
164 );
165 }
166 }]);
167 return DatePicker;
168}(_DatePicker2['default']);
169
170exports['default'] = DatePicker;
171module.exports = exports['default'];
\No newline at end of file