UNPKG

7.24 kBJavaScriptView Raw
1import _defineProperty from "@babel/runtime/helpers/defineProperty";
2import _extends from "@babel/runtime/helpers/extends";
3import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4import _createClass from "@babel/runtime/helpers/createClass";
5import _inherits from "@babel/runtime/helpers/inherits";
6import _createSuper from "@babel/runtime/helpers/createSuper";
7
8var __rest = this && this.__rest || function (s, e) {
9 var t = {};
10
11 for (var p in s) {
12 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
13 }
14
15 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
17 }
18 return t;
19};
20
21import * as React from 'react';
22import classNames from 'classnames';
23import CalendarOutlined from '@ant-design/icons/CalendarOutlined';
24import ClockCircleOutlined from '@ant-design/icons/ClockCircleOutlined';
25import CloseCircleFilled from '@ant-design/icons/CloseCircleFilled';
26import RCPicker from 'rc-picker';
27import enUS from '../locale/en_US';
28import { getPlaceholder } from '../util';
29import devWarning from '../../_util/devWarning';
30import { ConfigContext } from '../../config-provider';
31import LocaleReceiver from '../../locale-provider/LocaleReceiver';
32import SizeContext from '../../config-provider/SizeContext';
33import { getTimeProps, Components } from '.';
34export default function generatePicker(generateConfig) {
35 function getPicker(picker, displayName) {
36 var Picker = /*#__PURE__*/function (_React$Component) {
37 _inherits(Picker, _React$Component);
38
39 var _super = _createSuper(Picker);
40
41 function Picker(props) {
42 var _this;
43
44 _classCallCheck(this, Picker);
45
46 _this = _super.call(this, props);
47 _this.pickerRef = /*#__PURE__*/React.createRef();
48
49 _this.focus = function () {
50 if (_this.pickerRef.current) {
51 _this.pickerRef.current.focus();
52 }
53 };
54
55 _this.blur = function () {
56 if (_this.pickerRef.current) {
57 _this.pickerRef.current.blur();
58 }
59 };
60
61 _this.getDefaultLocale = function () {
62 var locale = _this.props.locale;
63
64 var result = _extends(_extends({}, enUS), locale);
65
66 result.lang = _extends(_extends({}, result.lang), (locale || {}).lang);
67 return result;
68 };
69
70 _this.renderPicker = function (locale) {
71 var _this$context = _this.context,
72 getPrefixCls = _this$context.getPrefixCls,
73 direction = _this$context.direction,
74 getPopupContainer = _this$context.getPopupContainer;
75
76 var _a = _this.props,
77 customizePrefixCls = _a.prefixCls,
78 customizeGetPopupContainer = _a.getPopupContainer,
79 className = _a.className,
80 customizeSize = _a.size,
81 _a$bordered = _a.bordered,
82 bordered = _a$bordered === void 0 ? true : _a$bordered,
83 placeholder = _a.placeholder,
84 restProps = __rest(_a, ["prefixCls", "getPopupContainer", "className", "size", "bordered", "placeholder"]);
85
86 var _this$props = _this.props,
87 format = _this$props.format,
88 showTime = _this$props.showTime;
89 var prefixCls = getPrefixCls('picker', customizePrefixCls);
90 var additionalProps = {
91 showToday: true
92 };
93 var additionalOverrideProps = {};
94
95 if (picker) {
96 additionalOverrideProps.picker = picker;
97 }
98
99 var mergedPicker = picker || _this.props.picker;
100 additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({
101 format: format,
102 picker: mergedPicker
103 }, showTime)) : {}), mergedPicker === 'time' ? getTimeProps(_extends(_extends({
104 format: format
105 }, _this.props), {
106 picker: mergedPicker
107 })) : {});
108 return /*#__PURE__*/React.createElement(SizeContext.Consumer, null, function (size) {
109 var _classNames;
110
111 var mergedSize = customizeSize || size;
112 return /*#__PURE__*/React.createElement(RCPicker, _extends({
113 ref: _this.pickerRef,
114 placeholder: getPlaceholder(mergedPicker, locale, placeholder),
115 suffixIcon: mergedPicker === 'time' ? /*#__PURE__*/React.createElement(ClockCircleOutlined, null) : /*#__PURE__*/React.createElement(CalendarOutlined, null),
116 clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null),
117 allowClear: true,
118 transitionName: "slide-up"
119 }, additionalProps, restProps, additionalOverrideProps, {
120 locale: locale.lang,
121 className: classNames((_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-").concat(mergedSize), mergedSize), _defineProperty(_classNames, "".concat(prefixCls, "-borderless"), !bordered), _classNames), className),
122 prefixCls: prefixCls,
123 getPopupContainer: customizeGetPopupContainer || getPopupContainer,
124 generateConfig: generateConfig,
125 prevIcon: /*#__PURE__*/React.createElement("span", {
126 className: "".concat(prefixCls, "-prev-icon")
127 }),
128 nextIcon: /*#__PURE__*/React.createElement("span", {
129 className: "".concat(prefixCls, "-next-icon")
130 }),
131 superPrevIcon: /*#__PURE__*/React.createElement("span", {
132 className: "".concat(prefixCls, "-super-prev-icon")
133 }),
134 superNextIcon: /*#__PURE__*/React.createElement("span", {
135 className: "".concat(prefixCls, "-super-next-icon")
136 }),
137 components: Components,
138 direction: direction
139 }));
140 });
141 };
142
143 devWarning(picker !== 'quarter', displayName, "DatePicker.".concat(displayName, " is legacy usage. Please use DatePicker[picker='").concat(picker, "'] directly."));
144 return _this;
145 }
146
147 _createClass(Picker, [{
148 key: "render",
149 value: function render() {
150 return /*#__PURE__*/React.createElement(LocaleReceiver, {
151 componentName: "DatePicker",
152 defaultLocale: this.getDefaultLocale
153 }, this.renderPicker);
154 }
155 }]);
156
157 return Picker;
158 }(React.Component);
159
160 Picker.contextType = ConfigContext;
161
162 if (displayName) {
163 Picker.displayName = displayName;
164 }
165
166 return Picker;
167 }
168
169 var DatePicker = getPicker();
170 var WeekPicker = getPicker('week', 'WeekPicker');
171 var MonthPicker = getPicker('month', 'MonthPicker');
172 var YearPicker = getPicker('year', 'YearPicker');
173 var TimePicker = getPicker('time', 'TimePicker');
174 var QuarterPicker = getPicker('quarter', 'QuarterPicker');
175 return {
176 DatePicker: DatePicker,
177 WeekPicker: WeekPicker,
178 MonthPicker: MonthPicker,
179 YearPicker: YearPicker,
180 TimePicker: TimePicker,
181 QuarterPicker: QuarterPicker
182 };
183}
\No newline at end of file