UNPKG

5.38 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.DEFAULT_TIME_FORMAT = exports.PANEL = undefined;
5exports.isFunction = isFunction;
6exports.resetValueTime = resetValueTime;
7exports.formatDateValue = formatDateValue;
8exports.checkDateValue = checkDateValue;
9exports.getDateTimeFormat = getDateTimeFormat;
10exports.extend = extend;
11exports.onDateKeydown = onDateKeydown;
12exports.onTimeKeydown = onTimeKeydown;
13
14var _moment = require('moment');
15
16var _moment2 = _interopRequireDefault(_moment);
17
18var _util = require('../../util');
19
20function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22var PANEL = exports.PANEL = {
23 TIME: 'time-panel',
24 DATE: 'date-panel'
25};
26
27var DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'HH:mm:ss';
28
29function isFunction(obj) {
30 return !!(obj && obj.constructor && obj.call && obj.apply);
31}
32
33/**
34 * 将 source 的 time 替换为 target 的 time
35 * @param {Object} source 输入值
36 * @param {Object} target 目标值
37 */
38function resetValueTime(source, target) {
39 if (!_moment2.default.isMoment(source) || !_moment2.default.isMoment(target)) {
40 return source;
41 }
42 return source.clone().hour(target.hour()).minute(target.minute()).second(target.second());
43}
44
45function formatDateValue(value, format) {
46 var val = typeof value === 'string' ? (0, _moment2.default)(value, format, false) : value;
47 if (val && _moment2.default.isMoment(val) && val.isValid()) {
48 return val;
49 }
50
51 return null;
52}
53
54function checkDateValue(props, propName, componentName) {
55 // 支持传入 moment 对象或字符串,字符串不检测是否为日期字符串
56 if (props[propName] && !_moment2.default.isMoment(props[propName]) && typeof props[propName] !== 'string') {
57 return new Error('Invalid prop ' + propName + ' supplied to ' + componentName + '. Required a moment object or format date string!');
58 }
59}
60
61function getDateTimeFormat(format, showTime, type) {
62 if (!format && type) {
63 format = {
64 date: 'YYYY-MM-DD',
65 month: 'YYYY-MM',
66 year: 'YYYY',
67 time: ''
68 }[type];
69 }
70 var timeFormat = showTime ? showTime.format || DEFAULT_TIME_FORMAT : '';
71 var dateTimeFormat = timeFormat ? format + ' ' + timeFormat : format;
72 return {
73 format: format,
74 timeFormat: timeFormat,
75 dateTimeFormat: dateTimeFormat
76 };
77}
78
79function extend(source, target) {
80 for (var key in source) {
81 if (source.hasOwnProperty(key)) {
82 target[key] = source[key];
83 }
84 }
85 return target;
86}
87
88/**
89 * 监听键盘事件,操作日期字符串
90 * @param {KeyboardEvent} e 事件对象
91 * @param {Object} param1
92 * @param {String} type 类型 year month day
93 */
94function onDateKeydown(e, _ref, type) {
95 var format = _ref.format,
96 dateInputStr = _ref.dateInputStr,
97 value = _ref.value;
98
99 if ([_util.KEYCODE.UP, _util.KEYCODE.DOWN, _util.KEYCODE.PAGE_UP, _util.KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1) {
100 return;
101 }
102
103 if (e.altKey && [_util.KEYCODE.PAGE_UP, _util.KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1 || e.controlKey || e.shiftKey) {
104 return;
105 }
106
107 var date = (0, _moment2.default)(dateInputStr, format, true);
108
109 if (date.isValid()) {
110 var stepUnit = e.altKey ? 'year' : 'month';
111 switch (e.keyCode) {
112 case _util.KEYCODE.UP:
113 date.subtract(1, type);
114 break;
115 case _util.KEYCODE.DOWN:
116 date.add(1, type);
117 break;
118 case _util.KEYCODE.PAGE_UP:
119 date.subtract(1, stepUnit);
120 break;
121 case _util.KEYCODE.PAGE_DOWN:
122 date.add(1, stepUnit);
123 break;
124 }
125 } else if (value) {
126 date = value.clone();
127 } else {
128 date = (0, _moment2.default)();
129 }
130
131 e.preventDefault();
132 return date.format(format);
133}
134
135/**
136 * 监听键盘事件,操作时间
137 * @param {KeyboardEvent} e
138 * @param {Object} param1
139 * @param {String} type second hour minute
140 */
141function onTimeKeydown(e, _ref2, type) {
142 var format = _ref2.format,
143 timeInputStr = _ref2.timeInputStr,
144 steps = _ref2.steps,
145 value = _ref2.value;
146
147 if ([_util.KEYCODE.UP, _util.KEYCODE.DOWN, _util.KEYCODE.PAGE_UP, _util.KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1) return;
148 if (e.altKey && [_util.KEYCODE.PAGE_UP, _util.KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1 || e.controlKey || e.shiftKey) return;
149
150 var time = (0, _moment2.default)(timeInputStr, format, true);
151
152 if (time.isValid()) {
153 var stepUnit = e.altKey ? 'hour' : 'minute';
154 switch (e.keyCode) {
155 case _util.KEYCODE.UP:
156 time.subtract(steps[type], type);
157 break;
158 case _util.KEYCODE.DOWN:
159 time.add(steps[type], type);
160 break;
161 case _util.KEYCODE.PAGE_UP:
162 time.subtract(steps[stepUnit], stepUnit);
163 break;
164 case _util.KEYCODE.PAGE_DOWN:
165 time.add(steps[stepUnit], stepUnit);
166 break;
167 }
168 } else if (value) {
169 time = value.clone();
170 } else {
171 time = (0, _moment2.default)().hours(0).minutes(0).seconds(0);
172 }
173
174 e.preventDefault();
175 return time.format(format);
176}
\No newline at end of file