@geezee/react-ui
Version:
Modern and minimalist React UI library.
103 lines (99 loc) • 4.67 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import * as React from 'react';
import { useMemo } from 'react';
import { Calendar, Clock, Minus } from '@zeit-ui/react-icons';
import { RangePicker as RCRangePicker } from '@geezee/rc-picker';
import { getLocale, getRangePlaceholder } from '../util';
import { Components, getTimeProps } from '.';
import InputClearIcon from '../../input/input-icon-clear';
import InputIcon from '../../input/input-icon';
import { getSizes } from '../../input/styles';
import withStyle from './with-style';
export default function generateRangePicker(generateConfig) {
var Picker = function Picker(props) {
var forwardedRef = props.forwardedRef,
customizePrefixCls = props.prefixCls,
customGetPopupContainer = props.getPopupContainer,
_props$className = props.className,
className = _props$className === void 0 ? '' : _props$className,
_props$locale = props.locale,
locale = _props$locale === void 0 ? 'en-US' : _props$locale,
_props$size = props.size,
customizeSize = _props$size === void 0 ? 'medium' : _props$size,
_props$variant = props.variant,
customizeVariant = _props$variant === void 0 ? 'line' : _props$variant,
_props$color = props.color,
customizeColor = _props$color === void 0 ? 'default' : _props$color,
_props$bordered = props.bordered,
bordered = _props$bordered === void 0 ? true : _props$bordered,
placeholder = props.placeholder,
restProps = _objectWithoutProperties(props, ["forwardedRef", "prefixCls", "getPopupContainer", "className", "locale", "size", "variant", "color", "bordered", "placeholder"]);
var _ref = props,
format = _ref.format,
showTime = _ref.showTime,
picker = _ref.picker;
var prefixCls = "".concat(customizePrefixCls || 'cfx', "-picker");
var _useMemo = useMemo(function () {
return getSizes(customizeSize);
}, [customizeSize]),
inputHeightRatio = _useMemo.heightRatio;
var additionalOverrideProps = {};
additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({
format: format,
picker: picker
}, showTime)) : {}), picker === 'time' ? getTimeProps(_extends(_extends({
format: format
}, props), {}, {
picker: picker
})) : {});
return /*#__PURE__*/React.createElement(RCRangePicker, _extends({
ref: forwardedRef,
separator: /*#__PURE__*/React.createElement("span", {
"aria-label": "to",
className: "".concat(prefixCls, "-separator")
}, /*#__PURE__*/React.createElement(Minus, null)),
placeholder: getRangePlaceholder(picker, locale, placeholder),
suffixIcon: picker === 'time' ? /*#__PURE__*/React.createElement(InputIcon, {
icon: /*#__PURE__*/React.createElement(Clock, null),
ratio: inputHeightRatio,
clickable: false
}) : /*#__PURE__*/React.createElement(InputIcon, {
icon: /*#__PURE__*/React.createElement(Calendar, null),
ratio: inputHeightRatio,
clickable: false
}),
clearIcon: /*#__PURE__*/React.createElement(InputIcon, {
icon: /*#__PURE__*/React.createElement(InputClearIcon, {
visible: true,
heightRatio: inputHeightRatio
}),
ratio: inputHeightRatio,
clickable: false
}),
allowClear: true,
transitionName: "slide-up"
}, restProps, additionalOverrideProps, {
className: "".concat(prefixCls, "-size-").concat(customizeSize, " ").concat(prefixCls, "-variant-").concat(customizeVariant, " ").concat(prefixCls, "-color-").concat(customizeColor, " ").concat(!bordered ? "".concat(prefixCls, "-borderless") : '', " ").concat(className),
locale: getLocale(locale),
prefixCls: prefixCls,
getPopupContainer: customGetPopupContainer,
generateConfig: generateConfig,
prevIcon: /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-prev-icon")
}),
nextIcon: /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-next-icon")
}),
superPrevIcon: /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-super-prev-icon")
}),
superNextIcon: /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-super-next-icon")
}),
components: Components,
direction: "ltr"
}));
};
return withStyle(React.memo(Picker));
}