first commit
This commit is contained in:
19
frontend/node_modules/rc-picker/es/PickerInput/Popup/Footer.d.ts
generated
vendored
Normal file
19
frontend/node_modules/rc-picker/es/PickerInput/Popup/Footer.d.ts
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as React from 'react';
|
||||
import type { GenerateConfig } from '../../generate';
|
||||
import type { DisabledDate, InternalMode, PanelMode, SharedPickerProps } from '../../interface';
|
||||
import type { PopupShowTimeConfig } from '.';
|
||||
export interface FooterProps<DateType extends object = any> {
|
||||
mode: PanelMode;
|
||||
internalMode: InternalMode;
|
||||
renderExtraFooter?: SharedPickerProps['renderExtraFooter'];
|
||||
showNow: boolean;
|
||||
generateConfig: GenerateConfig<DateType>;
|
||||
disabledDate: DisabledDate<DateType>;
|
||||
showTime?: PopupShowTimeConfig<DateType>;
|
||||
/** From Footer component used only. Check if can OK button click */
|
||||
invalid?: boolean;
|
||||
onSubmit: (date?: DateType) => void;
|
||||
needConfirm: boolean;
|
||||
onNow: (now: DateType) => void;
|
||||
}
|
||||
export default function Footer(props: FooterProps): React.JSX.Element;
|
||||
73
frontend/node_modules/rc-picker/es/PickerInput/Popup/Footer.js
generated
vendored
Normal file
73
frontend/node_modules/rc-picker/es/PickerInput/Popup/Footer.js
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import * as React from 'react';
|
||||
import useTimeInfo from "../../hooks/useTimeInfo";
|
||||
import PickerContext from "../context";
|
||||
export default function Footer(props) {
|
||||
var mode = props.mode,
|
||||
internalMode = props.internalMode,
|
||||
renderExtraFooter = props.renderExtraFooter,
|
||||
showNow = props.showNow,
|
||||
showTime = props.showTime,
|
||||
onSubmit = props.onSubmit,
|
||||
onNow = props.onNow,
|
||||
invalid = props.invalid,
|
||||
needConfirm = props.needConfirm,
|
||||
generateConfig = props.generateConfig,
|
||||
disabledDate = props.disabledDate;
|
||||
var _React$useContext = React.useContext(PickerContext),
|
||||
prefixCls = _React$useContext.prefixCls,
|
||||
locale = _React$useContext.locale,
|
||||
_React$useContext$but = _React$useContext.button,
|
||||
Button = _React$useContext$but === void 0 ? 'button' : _React$useContext$but;
|
||||
|
||||
// >>> Now
|
||||
var now = generateConfig.getNow();
|
||||
var _useTimeInfo = useTimeInfo(generateConfig, showTime, now),
|
||||
_useTimeInfo2 = _slicedToArray(_useTimeInfo, 1),
|
||||
getValidTime = _useTimeInfo2[0];
|
||||
|
||||
// ======================== Extra =========================
|
||||
var extraNode = renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter(mode);
|
||||
|
||||
// ======================== Ranges ========================
|
||||
var nowDisabled = disabledDate(now, {
|
||||
type: mode
|
||||
});
|
||||
var onInternalNow = function onInternalNow() {
|
||||
if (!nowDisabled) {
|
||||
var validateNow = getValidTime(now);
|
||||
onNow(validateNow);
|
||||
}
|
||||
};
|
||||
var nowPrefixCls = "".concat(prefixCls, "-now");
|
||||
var nowBtnPrefixCls = "".concat(nowPrefixCls, "-btn");
|
||||
var presetNode = showNow && /*#__PURE__*/React.createElement("li", {
|
||||
className: nowPrefixCls
|
||||
}, /*#__PURE__*/React.createElement("a", {
|
||||
className: classNames(nowBtnPrefixCls, nowDisabled && "".concat(nowBtnPrefixCls, "-disabled")),
|
||||
"aria-disabled": nowDisabled,
|
||||
onClick: onInternalNow
|
||||
}, internalMode === 'date' ? locale.today : locale.now));
|
||||
|
||||
// >>> OK
|
||||
var okNode = needConfirm && /*#__PURE__*/React.createElement("li", {
|
||||
className: "".concat(prefixCls, "-ok")
|
||||
}, /*#__PURE__*/React.createElement(Button, {
|
||||
disabled: invalid,
|
||||
onClick: onSubmit
|
||||
}, locale.ok));
|
||||
var rangeNode = (presetNode || okNode) && /*#__PURE__*/React.createElement("ul", {
|
||||
className: "".concat(prefixCls, "-ranges")
|
||||
}, presetNode, okNode);
|
||||
|
||||
// ======================== Render ========================
|
||||
if (!extraNode && !rangeNode) {
|
||||
return null;
|
||||
}
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(prefixCls, "-footer")
|
||||
}, extraNode && /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(prefixCls, "-footer-extra")
|
||||
}, extraNode), rangeNode);
|
||||
}
|
||||
10
frontend/node_modules/rc-picker/es/PickerInput/Popup/PopupPanel.d.ts
generated
vendored
Normal file
10
frontend/node_modules/rc-picker/es/PickerInput/Popup/PopupPanel.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import * as React from 'react';
|
||||
import { type PickerPanelProps } from '../../PickerPanel';
|
||||
import { type FooterProps } from './Footer';
|
||||
export type MustProp<DateType extends object> = Required<Pick<PickerPanelProps<DateType>, 'mode' | 'onPanelChange'>>;
|
||||
export type PopupPanelProps<DateType extends object = any> = MustProp<DateType> & Omit<PickerPanelProps<DateType>, 'onPickerValueChange' | 'showTime'> & FooterProps<DateType> & {
|
||||
multiplePanel?: boolean;
|
||||
range?: boolean;
|
||||
onPickerValueChange: (date: DateType) => void;
|
||||
};
|
||||
export default function PopupPanel<DateType extends object = any>(props: PopupPanelProps<DateType>): React.JSX.Element;
|
||||
79
frontend/node_modules/rc-picker/es/PickerInput/Popup/PopupPanel.js
generated
vendored
Normal file
79
frontend/node_modules/rc-picker/es/PickerInput/Popup/PopupPanel.js
generated
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
||||
import * as React from 'react';
|
||||
import PickerPanel from "../../PickerPanel";
|
||||
import { PickerHackContext } from "../../PickerPanel/context";
|
||||
import PickerContext from "../context";
|
||||
import { offsetPanelDate } from "../hooks/useRangePickerValue";
|
||||
export default function PopupPanel(props) {
|
||||
var picker = props.picker,
|
||||
multiplePanel = props.multiplePanel,
|
||||
pickerValue = props.pickerValue,
|
||||
onPickerValueChange = props.onPickerValueChange,
|
||||
needConfirm = props.needConfirm,
|
||||
onSubmit = props.onSubmit,
|
||||
range = props.range,
|
||||
hoverValue = props.hoverValue;
|
||||
var _React$useContext = React.useContext(PickerContext),
|
||||
prefixCls = _React$useContext.prefixCls,
|
||||
generateConfig = _React$useContext.generateConfig;
|
||||
|
||||
// ======================== Offset ========================
|
||||
var internalOffsetDate = React.useCallback(function (date, offset) {
|
||||
return offsetPanelDate(generateConfig, picker, date, offset);
|
||||
}, [generateConfig, picker]);
|
||||
var nextPickerValue = React.useMemo(function () {
|
||||
return internalOffsetDate(pickerValue, 1);
|
||||
}, [pickerValue, internalOffsetDate]);
|
||||
|
||||
// Outside
|
||||
var onSecondPickerValueChange = function onSecondPickerValueChange(nextDate) {
|
||||
onPickerValueChange(internalOffsetDate(nextDate, -1));
|
||||
};
|
||||
|
||||
// ======================= Context ========================
|
||||
var sharedContext = {
|
||||
onCellDblClick: function onCellDblClick() {
|
||||
if (needConfirm) {
|
||||
onSubmit();
|
||||
}
|
||||
}
|
||||
};
|
||||
var hideHeader = picker === 'time';
|
||||
|
||||
// ======================== Props =========================
|
||||
var pickerProps = _objectSpread(_objectSpread({}, props), {}, {
|
||||
hoverValue: null,
|
||||
hoverRangeValue: null,
|
||||
hideHeader: hideHeader
|
||||
});
|
||||
if (range) {
|
||||
pickerProps.hoverRangeValue = hoverValue;
|
||||
} else {
|
||||
pickerProps.hoverValue = hoverValue;
|
||||
}
|
||||
|
||||
// ======================== Render ========================
|
||||
// Multiple
|
||||
if (multiplePanel) {
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(prefixCls, "-panels")
|
||||
}, /*#__PURE__*/React.createElement(PickerHackContext.Provider, {
|
||||
value: _objectSpread(_objectSpread({}, sharedContext), {}, {
|
||||
hideNext: true
|
||||
})
|
||||
}, /*#__PURE__*/React.createElement(PickerPanel, pickerProps)), /*#__PURE__*/React.createElement(PickerHackContext.Provider, {
|
||||
value: _objectSpread(_objectSpread({}, sharedContext), {}, {
|
||||
hidePrev: true
|
||||
})
|
||||
}, /*#__PURE__*/React.createElement(PickerPanel, _extends({}, pickerProps, {
|
||||
pickerValue: nextPickerValue,
|
||||
onPickerValueChange: onSecondPickerValueChange
|
||||
}))));
|
||||
}
|
||||
|
||||
// Single
|
||||
return /*#__PURE__*/React.createElement(PickerHackContext.Provider, {
|
||||
value: _objectSpread({}, sharedContext)
|
||||
}, /*#__PURE__*/React.createElement(PickerPanel, pickerProps));
|
||||
}
|
||||
9
frontend/node_modules/rc-picker/es/PickerInput/Popup/PresetPanel.d.ts
generated
vendored
Normal file
9
frontend/node_modules/rc-picker/es/PickerInput/Popup/PresetPanel.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import * as React from 'react';
|
||||
import type { ValueDate } from '../../interface';
|
||||
export interface PresetPanelProps<ValueType = any> {
|
||||
prefixCls: string;
|
||||
presets: ValueDate<ValueType>[];
|
||||
onClick: (value: ValueType) => void;
|
||||
onHover: (value: ValueType) => void;
|
||||
}
|
||||
export default function PresetPanel<DateType extends object = any>(props: PresetPanelProps<DateType>): React.JSX.Element;
|
||||
31
frontend/node_modules/rc-picker/es/PickerInput/Popup/PresetPanel.js
generated
vendored
Normal file
31
frontend/node_modules/rc-picker/es/PickerInput/Popup/PresetPanel.js
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
import * as React from 'react';
|
||||
function executeValue(value) {
|
||||
return typeof value === 'function' ? value() : value;
|
||||
}
|
||||
export default function PresetPanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
presets = props.presets,
|
||||
_onClick = props.onClick,
|
||||
onHover = props.onHover;
|
||||
if (!presets.length) {
|
||||
return null;
|
||||
}
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(prefixCls, "-presets")
|
||||
}, /*#__PURE__*/React.createElement("ul", null, presets.map(function (_ref, index) {
|
||||
var label = _ref.label,
|
||||
value = _ref.value;
|
||||
return /*#__PURE__*/React.createElement("li", {
|
||||
key: index,
|
||||
onClick: function onClick() {
|
||||
_onClick(executeValue(value));
|
||||
},
|
||||
onMouseEnter: function onMouseEnter() {
|
||||
onHover(executeValue(value));
|
||||
},
|
||||
onMouseLeave: function onMouseLeave() {
|
||||
onHover(null);
|
||||
}
|
||||
}, label);
|
||||
})));
|
||||
}
|
||||
20
frontend/node_modules/rc-picker/es/PickerInput/Popup/index.d.ts
generated
vendored
Normal file
20
frontend/node_modules/rc-picker/es/PickerInput/Popup/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
import * as React from 'react';
|
||||
import type { RangeTimeProps, SharedPickerProps, SharedTimeProps, ValueDate } from '../../interface';
|
||||
import { type FooterProps } from './Footer';
|
||||
import { type PopupPanelProps } from './PopupPanel';
|
||||
export type PopupShowTimeConfig<DateType extends object = any> = Omit<RangeTimeProps<DateType>, 'defaultValue' | 'defaultOpenValue' | 'disabledTime'> & Pick<SharedTimeProps<DateType>, 'disabledTime'>;
|
||||
export interface PopupProps<DateType extends object = any, PresetValue = DateType> extends Pick<React.InputHTMLAttributes<HTMLDivElement>, 'onFocus' | 'onBlur'>, FooterProps<DateType>, PopupPanelProps<DateType> {
|
||||
panelRender?: SharedPickerProps['panelRender'];
|
||||
presets: ValueDate<DateType>[];
|
||||
onPresetHover: (presetValue: PresetValue) => void;
|
||||
onPresetSubmit: (presetValue: PresetValue) => void;
|
||||
activeInfo?: [activeInputLeft: number, activeInputRight: number, selectorWidth: number];
|
||||
direction?: 'ltr' | 'rtl';
|
||||
/** TimePicker or showTime only */
|
||||
defaultOpenValue: DateType;
|
||||
needConfirm: boolean;
|
||||
isInvalid: (date: DateType | DateType[]) => boolean;
|
||||
onOk: VoidFunction;
|
||||
onPanelMouseDown?: React.MouseEventHandler<HTMLDivElement>;
|
||||
}
|
||||
export default function Popup<DateType extends object = any>(props: PopupProps<DateType>): React.JSX.Element;
|
||||
190
frontend/node_modules/rc-picker/es/PickerInput/Popup/index.js
generated
vendored
Normal file
190
frontend/node_modules/rc-picker/es/PickerInput/Popup/index.js
generated
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import ResizeObserver from 'rc-resize-observer';
|
||||
import * as React from 'react';
|
||||
import { toArray } from "../../utils/miscUtil";
|
||||
import PickerContext from "../context";
|
||||
import Footer from "./Footer";
|
||||
import PopupPanel from "./PopupPanel";
|
||||
import PresetPanel from "./PresetPanel";
|
||||
export default function Popup(props) {
|
||||
var panelRender = props.panelRender,
|
||||
internalMode = props.internalMode,
|
||||
picker = props.picker,
|
||||
showNow = props.showNow,
|
||||
range = props.range,
|
||||
multiple = props.multiple,
|
||||
_props$activeInfo = props.activeInfo,
|
||||
activeInfo = _props$activeInfo === void 0 ? [0, 0, 0] : _props$activeInfo,
|
||||
presets = props.presets,
|
||||
onPresetHover = props.onPresetHover,
|
||||
onPresetSubmit = props.onPresetSubmit,
|
||||
onFocus = props.onFocus,
|
||||
onBlur = props.onBlur,
|
||||
onPanelMouseDown = props.onPanelMouseDown,
|
||||
direction = props.direction,
|
||||
value = props.value,
|
||||
onSelect = props.onSelect,
|
||||
isInvalid = props.isInvalid,
|
||||
defaultOpenValue = props.defaultOpenValue,
|
||||
onOk = props.onOk,
|
||||
onSubmit = props.onSubmit;
|
||||
var _React$useContext = React.useContext(PickerContext),
|
||||
prefixCls = _React$useContext.prefixCls;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-panel");
|
||||
var rtl = direction === 'rtl';
|
||||
|
||||
// ========================= Refs =========================
|
||||
var arrowRef = React.useRef(null);
|
||||
var wrapperRef = React.useRef(null);
|
||||
|
||||
// ======================== Offset ========================
|
||||
var _React$useState = React.useState(0),
|
||||
_React$useState2 = _slicedToArray(_React$useState, 2),
|
||||
containerWidth = _React$useState2[0],
|
||||
setContainerWidth = _React$useState2[1];
|
||||
var _React$useState3 = React.useState(0),
|
||||
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
||||
containerOffset = _React$useState4[0],
|
||||
setContainerOffset = _React$useState4[1];
|
||||
var _React$useState5 = React.useState(0),
|
||||
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
||||
arrowOffset = _React$useState6[0],
|
||||
setArrowOffset = _React$useState6[1];
|
||||
var onResize = function onResize(info) {
|
||||
if (info.width) {
|
||||
setContainerWidth(info.width);
|
||||
}
|
||||
};
|
||||
var _activeInfo = _slicedToArray(activeInfo, 3),
|
||||
activeInputLeft = _activeInfo[0],
|
||||
activeInputRight = _activeInfo[1],
|
||||
selectorWidth = _activeInfo[2];
|
||||
var _React$useState7 = React.useState(0),
|
||||
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
||||
retryTimes = _React$useState8[0],
|
||||
setRetryTimes = _React$useState8[1];
|
||||
React.useEffect(function () {
|
||||
setRetryTimes(10);
|
||||
}, [activeInputLeft]);
|
||||
React.useEffect(function () {
|
||||
// `activeOffset` is always align with the active input element
|
||||
// So we need only check container contains the `activeOffset`
|
||||
if (range && wrapperRef.current) {
|
||||
var _arrowRef$current;
|
||||
// Offset in case container has border radius
|
||||
var arrowWidth = ((_arrowRef$current = arrowRef.current) === null || _arrowRef$current === void 0 ? void 0 : _arrowRef$current.offsetWidth) || 0;
|
||||
|
||||
// Arrow Offset
|
||||
var wrapperRect = wrapperRef.current.getBoundingClientRect();
|
||||
if (!wrapperRect.height || wrapperRect.right < 0) {
|
||||
setRetryTimes(function (times) {
|
||||
return Math.max(0, times - 1);
|
||||
});
|
||||
return;
|
||||
}
|
||||
var nextArrowOffset = (rtl ? activeInputRight - arrowWidth : activeInputLeft) - wrapperRect.left;
|
||||
setArrowOffset(nextArrowOffset);
|
||||
|
||||
// Container Offset
|
||||
if (containerWidth && containerWidth < selectorWidth) {
|
||||
var offset = rtl ? wrapperRect.right - (activeInputRight - arrowWidth + containerWidth) : activeInputLeft + arrowWidth - wrapperRect.left - containerWidth;
|
||||
var safeOffset = Math.max(0, offset);
|
||||
setContainerOffset(safeOffset);
|
||||
} else {
|
||||
setContainerOffset(0);
|
||||
}
|
||||
}
|
||||
}, [retryTimes, rtl, containerWidth, activeInputLeft, activeInputRight, selectorWidth, range]);
|
||||
|
||||
// ======================== Custom ========================
|
||||
function filterEmpty(list) {
|
||||
return list.filter(function (item) {
|
||||
return item;
|
||||
});
|
||||
}
|
||||
var valueList = React.useMemo(function () {
|
||||
return filterEmpty(toArray(value));
|
||||
}, [value]);
|
||||
var isTimePickerEmptyValue = picker === 'time' && !valueList.length;
|
||||
var footerSubmitValue = React.useMemo(function () {
|
||||
if (isTimePickerEmptyValue) {
|
||||
return filterEmpty([defaultOpenValue]);
|
||||
}
|
||||
return valueList;
|
||||
}, [isTimePickerEmptyValue, valueList, defaultOpenValue]);
|
||||
var popupPanelValue = isTimePickerEmptyValue ? defaultOpenValue : valueList;
|
||||
var disableSubmit = React.useMemo(function () {
|
||||
// Empty is invalid
|
||||
if (!footerSubmitValue.length) {
|
||||
return true;
|
||||
}
|
||||
return footerSubmitValue.some(function (val) {
|
||||
return isInvalid(val);
|
||||
});
|
||||
}, [footerSubmitValue, isInvalid]);
|
||||
var onFooterSubmit = function onFooterSubmit() {
|
||||
// For TimePicker, we will additional trigger the value update
|
||||
if (isTimePickerEmptyValue) {
|
||||
onSelect(defaultOpenValue);
|
||||
}
|
||||
onOk();
|
||||
onSubmit();
|
||||
};
|
||||
var mergedNodes = /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(prefixCls, "-panel-layout")
|
||||
}, /*#__PURE__*/React.createElement(PresetPanel, {
|
||||
prefixCls: prefixCls,
|
||||
presets: presets,
|
||||
onClick: onPresetSubmit,
|
||||
onHover: onPresetHover
|
||||
}), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(PopupPanel, _extends({}, props, {
|
||||
value: popupPanelValue
|
||||
})), /*#__PURE__*/React.createElement(Footer, _extends({}, props, {
|
||||
showNow: multiple ? false : showNow,
|
||||
invalid: disableSubmit,
|
||||
onSubmit: onFooterSubmit
|
||||
}))));
|
||||
if (panelRender) {
|
||||
mergedNodes = panelRender(mergedNodes);
|
||||
}
|
||||
|
||||
// ======================== Render ========================
|
||||
var containerPrefixCls = "".concat(panelPrefixCls, "-container");
|
||||
var marginLeft = 'marginLeft';
|
||||
var marginRight = 'marginRight';
|
||||
|
||||
// Container
|
||||
var renderNode = /*#__PURE__*/React.createElement("div", {
|
||||
onMouseDown: onPanelMouseDown,
|
||||
tabIndex: -1,
|
||||
className: classNames(containerPrefixCls, // Used for Today Button style, safe to remove if no need
|
||||
"".concat(prefixCls, "-").concat(internalMode, "-panel-container")),
|
||||
style: _defineProperty(_defineProperty({}, rtl ? marginRight : marginLeft, containerOffset), rtl ? marginLeft : marginRight, 'auto')
|
||||
// Still wish not to lose focus on mouse down
|
||||
// onMouseDown={(e) => {
|
||||
// // e.preventDefault();
|
||||
// }}
|
||||
,
|
||||
onFocus: onFocus,
|
||||
onBlur: onBlur
|
||||
}, mergedNodes);
|
||||
if (range) {
|
||||
renderNode = /*#__PURE__*/React.createElement("div", {
|
||||
onMouseDown: onPanelMouseDown,
|
||||
ref: wrapperRef,
|
||||
className: classNames("".concat(prefixCls, "-range-wrapper"), "".concat(prefixCls, "-").concat(picker, "-range-wrapper"))
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
ref: arrowRef,
|
||||
className: "".concat(prefixCls, "-range-arrow"),
|
||||
style: {
|
||||
left: arrowOffset
|
||||
}
|
||||
}), /*#__PURE__*/React.createElement(ResizeObserver, {
|
||||
onResize: onResize
|
||||
}, renderNode));
|
||||
}
|
||||
return renderNode;
|
||||
}
|
||||
Reference in New Issue
Block a user