generateSinglePicker.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var _react = _interopRequireWildcard(require("react"));
  10. var React = _react;
  11. var _CalendarOutlined = _interopRequireDefault(require("@ant-design/icons/CalendarOutlined"));
  12. var _ClockCircleOutlined = _interopRequireDefault(require("@ant-design/icons/ClockCircleOutlined"));
  13. var _classnames = _interopRequireDefault(require("classnames"));
  14. var _rcPicker = _interopRequireDefault(require("rc-picker"));
  15. var _ContextIsolator = _interopRequireDefault(require("../../_util/ContextIsolator"));
  16. var _useZIndex = require("../../_util/hooks/useZIndex");
  17. var _statusUtils = require("../../_util/statusUtils");
  18. var _warning = require("../../_util/warning");
  19. var _configProvider = require("../../config-provider");
  20. var _DisabledContext = _interopRequireDefault(require("../../config-provider/DisabledContext"));
  21. var _useCSSVarCls = _interopRequireDefault(require("../../config-provider/hooks/useCSSVarCls"));
  22. var _useSize = _interopRequireDefault(require("../../config-provider/hooks/useSize"));
  23. var _context = require("../../form/context");
  24. var _useVariants = _interopRequireDefault(require("../../form/hooks/useVariants"));
  25. var _locale = require("../../locale");
  26. var _Compact = require("../../space/Compact");
  27. var _en_US = _interopRequireDefault(require("../locale/en_US"));
  28. var _style = _interopRequireDefault(require("../style"));
  29. var _util = require("../util");
  30. var _constant = require("./constant");
  31. var _useComponents = _interopRequireDefault(require("./useComponents"));
  32. var _useMergedPickerSemantic = _interopRequireDefault(require("../hooks/useMergedPickerSemantic"));
  33. var __rest = void 0 && (void 0).__rest || function (s, e) {
  34. var t = {};
  35. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  36. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  37. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  38. }
  39. return t;
  40. };
  41. const generatePicker = generateConfig => {
  42. const getPicker = (picker, displayName) => {
  43. const consumerName = displayName === _constant.TIMEPICKER ? 'timePicker' : 'datePicker';
  44. const Picker = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
  45. var _a;
  46. const {
  47. prefixCls: customizePrefixCls,
  48. getPopupContainer: customizeGetPopupContainer,
  49. components,
  50. style,
  51. className,
  52. rootClassName,
  53. size: customizeSize,
  54. bordered,
  55. placement,
  56. placeholder,
  57. popupStyle,
  58. popupClassName,
  59. dropdownClassName,
  60. disabled: customDisabled,
  61. status: customStatus,
  62. variant: customVariant,
  63. onCalendarChange,
  64. styles,
  65. classNames
  66. } = props,
  67. restProps = __rest(props, ["prefixCls", "getPopupContainer", "components", "style", "className", "rootClassName", "size", "bordered", "placement", "placeholder", "popupStyle", "popupClassName", "dropdownClassName", "disabled", "status", "variant", "onCalendarChange", "styles", "classNames"]);
  68. const {
  69. getPrefixCls,
  70. direction,
  71. getPopupContainer,
  72. // Consume different styles according to different names
  73. [consumerName]: consumerStyle
  74. } = (0, _react.useContext)(_configProvider.ConfigContext);
  75. const prefixCls = getPrefixCls('picker', customizePrefixCls);
  76. const {
  77. compactSize,
  78. compactItemClassnames
  79. } = (0, _Compact.useCompactItemContext)(prefixCls, direction);
  80. const innerRef = React.useRef(null);
  81. const [variant, enableVariantCls] = (0, _useVariants.default)('datePicker', customVariant, bordered);
  82. const rootCls = (0, _useCSSVarCls.default)(prefixCls);
  83. const [wrapCSSVar, hashId, cssVarCls] = (0, _style.default)(prefixCls, rootCls);
  84. (0, _react.useImperativeHandle)(ref, () => innerRef.current);
  85. const additionalProps = {
  86. showToday: true
  87. };
  88. const mergedPicker = picker || props.picker;
  89. const rootPrefixCls = getPrefixCls();
  90. // ==================== Legacy =====================
  91. const {
  92. onSelect,
  93. multiple
  94. } = restProps;
  95. const hasLegacyOnSelect = onSelect && picker === 'time' && !multiple;
  96. const onInternalCalendarChange = (date, dateStr, info) => {
  97. onCalendarChange === null || onCalendarChange === void 0 ? void 0 : onCalendarChange(date, dateStr, info);
  98. if (hasLegacyOnSelect) {
  99. onSelect(date);
  100. }
  101. };
  102. // =================== Warning =====================
  103. if (process.env.NODE_ENV !== 'production') {
  104. const warning = (0, _warning.devUseWarning)(displayName || 'DatePicker');
  105. process.env.NODE_ENV !== "production" ? warning(picker !== 'quarter', 'deprecated', `DatePicker.${displayName} is legacy usage. Please use DatePicker[picker='${picker}'] directly.`) : void 0;
  106. // ==================== Deprecated =====================
  107. const deprecatedProps = {
  108. dropdownClassName: 'classNames.popup.root',
  109. popupClassName: 'classNames.popup.root',
  110. popupStyle: 'styles.popup.root',
  111. bordered: 'variant',
  112. onSelect: 'onCalendarChange'
  113. };
  114. Object.entries(deprecatedProps).forEach(([oldProp, newProp]) => {
  115. warning.deprecated(!(oldProp in props), oldProp, newProp);
  116. });
  117. }
  118. const [mergedClassNames, mergedStyles] = (0, _useMergedPickerSemantic.default)(consumerName, classNames, styles, popupClassName || dropdownClassName, popupStyle);
  119. // ===================== Icon =====================
  120. const [mergedAllowClear, removeIcon] = (0, _util.useIcons)(props, prefixCls);
  121. // ================== components ==================
  122. const mergedComponents = (0, _useComponents.default)(components);
  123. // ===================== Size =====================
  124. const mergedSize = (0, _useSize.default)(ctx => {
  125. var _a;
  126. return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;
  127. });
  128. // ===================== Disabled =====================
  129. const disabled = React.useContext(_DisabledContext.default);
  130. const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
  131. // ===================== FormItemInput =====================
  132. const formItemContext = (0, _react.useContext)(_context.FormItemInputContext);
  133. const {
  134. hasFeedback,
  135. status: contextStatus,
  136. feedbackIcon
  137. } = formItemContext;
  138. const suffixNode = /*#__PURE__*/React.createElement(React.Fragment, null, mergedPicker === 'time' ? /*#__PURE__*/React.createElement(_ClockCircleOutlined.default, null) : /*#__PURE__*/React.createElement(_CalendarOutlined.default, null), hasFeedback && feedbackIcon);
  139. const [contextLocale] = (0, _locale.useLocale)('DatePicker', _en_US.default);
  140. const locale = Object.assign(Object.assign({}, contextLocale), props.locale);
  141. // ============================ zIndex ============================
  142. const [zIndex] = (0, _useZIndex.useZIndex)('DatePicker', (_a = mergedStyles.popup.root) === null || _a === void 0 ? void 0 : _a.zIndex);
  143. return wrapCSSVar(/*#__PURE__*/React.createElement(_ContextIsolator.default, {
  144. space: true
  145. }, /*#__PURE__*/React.createElement(_rcPicker.default, Object.assign({
  146. ref: innerRef,
  147. placeholder: (0, _util.getPlaceholder)(locale, mergedPicker, placeholder),
  148. suffixIcon: suffixNode,
  149. placement: placement,
  150. prevIcon: /*#__PURE__*/React.createElement("span", {
  151. className: `${prefixCls}-prev-icon`
  152. }),
  153. nextIcon: /*#__PURE__*/React.createElement("span", {
  154. className: `${prefixCls}-next-icon`
  155. }),
  156. superPrevIcon: /*#__PURE__*/React.createElement("span", {
  157. className: `${prefixCls}-super-prev-icon`
  158. }),
  159. superNextIcon: /*#__PURE__*/React.createElement("span", {
  160. className: `${prefixCls}-super-next-icon`
  161. }),
  162. transitionName: `${rootPrefixCls}-slide-up`,
  163. picker: picker,
  164. onCalendarChange: onInternalCalendarChange
  165. }, additionalProps, restProps, {
  166. locale: locale.lang,
  167. className: (0, _classnames.default)({
  168. [`${prefixCls}-${mergedSize}`]: mergedSize,
  169. [`${prefixCls}-${variant}`]: enableVariantCls
  170. }, (0, _statusUtils.getStatusClassNames)(prefixCls, (0, _statusUtils.getMergedStatus)(contextStatus, customStatus), hasFeedback), hashId, compactItemClassnames, consumerStyle === null || consumerStyle === void 0 ? void 0 : consumerStyle.className, className, cssVarCls, rootCls, rootClassName, mergedClassNames.root),
  171. style: Object.assign(Object.assign(Object.assign({}, consumerStyle === null || consumerStyle === void 0 ? void 0 : consumerStyle.style), style), mergedStyles.root),
  172. prefixCls: prefixCls,
  173. getPopupContainer: customizeGetPopupContainer || getPopupContainer,
  174. generateConfig: generateConfig,
  175. components: mergedComponents,
  176. direction: direction,
  177. disabled: mergedDisabled,
  178. classNames: {
  179. popup: (0, _classnames.default)(hashId, cssVarCls, rootCls, rootClassName, mergedClassNames.popup.root)
  180. },
  181. styles: {
  182. popup: Object.assign(Object.assign({}, mergedStyles.popup.root), {
  183. zIndex
  184. })
  185. },
  186. allowClear: mergedAllowClear,
  187. removeIcon: removeIcon
  188. }))));
  189. });
  190. if (process.env.NODE_ENV !== 'production' && displayName) {
  191. Picker.displayName = displayName;
  192. }
  193. return Picker;
  194. };
  195. const DatePicker = getPicker();
  196. const WeekPicker = getPicker(_constant.WEEK, _constant.WEEKPICKER);
  197. const MonthPicker = getPicker(_constant.MONTH, _constant.MONTHPICKER);
  198. const YearPicker = getPicker(_constant.YEAR, _constant.YEARPICKER);
  199. const QuarterPicker = getPicker(_constant.QUARTER, _constant.QUARTERPICKER);
  200. const TimePicker = getPicker(_constant.TIME, _constant.TIMEPICKER);
  201. return {
  202. DatePicker,
  203. WeekPicker,
  204. MonthPicker,
  205. YearPicker,
  206. TimePicker,
  207. QuarterPicker
  208. };
  209. };
  210. var _default = exports.default = generatePicker;