first commit
This commit is contained in:
10
frontend/node_modules/rc-picker/es/PickerPanel/DatePanel/index.d.ts
generated
vendored
Normal file
10
frontend/node_modules/rc-picker/es/PickerPanel/DatePanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import * as React from 'react';
|
||||
import type { PanelMode, SharedPanelProps } from '../../interface';
|
||||
export interface DatePanelProps<DateType extends object> extends SharedPanelProps<DateType> {
|
||||
panelName?: PanelMode;
|
||||
rowClassName?: (date: DateType) => string;
|
||||
/** Used for `WeekPanel` */
|
||||
mode?: PanelMode;
|
||||
cellSelection?: boolean;
|
||||
}
|
||||
export default function DatePanel<DateType extends object = any>(props: DatePanelProps<DateType>): React.JSX.Element;
|
||||
182
frontend/node_modules/rc-picker/es/PickerPanel/DatePanel/index.js
generated
vendored
Normal file
182
frontend/node_modules/rc-picker/es/PickerPanel/DatePanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,182 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import * as React from 'react';
|
||||
import { formatValue, getWeekStartDate, isSameDate, isSameMonth, WEEK_DAY_COUNT } from "../../utils/dateUtil";
|
||||
import { PanelContext, useInfo } from "../context";
|
||||
import PanelBody from "../PanelBody";
|
||||
import PanelHeader from "../PanelHeader";
|
||||
export default function DatePanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
_props$panelName = props.panelName,
|
||||
panelName = _props$panelName === void 0 ? 'date' : _props$panelName,
|
||||
locale = props.locale,
|
||||
generateConfig = props.generateConfig,
|
||||
pickerValue = props.pickerValue,
|
||||
onPickerValueChange = props.onPickerValueChange,
|
||||
onModeChange = props.onModeChange,
|
||||
_props$mode = props.mode,
|
||||
mode = _props$mode === void 0 ? 'date' : _props$mode,
|
||||
disabledDate = props.disabledDate,
|
||||
onSelect = props.onSelect,
|
||||
onHover = props.onHover,
|
||||
showWeek = props.showWeek;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-").concat(panelName, "-panel");
|
||||
var cellPrefixCls = "".concat(prefixCls, "-cell");
|
||||
var isWeek = mode === 'week';
|
||||
|
||||
// ========================== Base ==========================
|
||||
var _useInfo = useInfo(props, mode),
|
||||
_useInfo2 = _slicedToArray(_useInfo, 2),
|
||||
info = _useInfo2[0],
|
||||
now = _useInfo2[1];
|
||||
var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);
|
||||
var monthStartDate = generateConfig.setDate(pickerValue, 1);
|
||||
var baseDate = getWeekStartDate(locale.locale, generateConfig, monthStartDate);
|
||||
var month = generateConfig.getMonth(pickerValue);
|
||||
|
||||
// =========================== PrefixColumn ===========================
|
||||
var showPrefixColumn = showWeek === undefined ? isWeek : showWeek;
|
||||
var prefixColumn = showPrefixColumn ? function (date) {
|
||||
// >>> Additional check for disabled
|
||||
var disabled = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date, {
|
||||
type: 'week'
|
||||
});
|
||||
return /*#__PURE__*/React.createElement("td", {
|
||||
key: "week",
|
||||
className: classNames(cellPrefixCls, "".concat(cellPrefixCls, "-week"), _defineProperty({}, "".concat(cellPrefixCls, "-disabled"), disabled))
|
||||
// Operation: Same as code in PanelBody
|
||||
,
|
||||
onClick: function onClick() {
|
||||
if (!disabled) {
|
||||
onSelect(date);
|
||||
}
|
||||
},
|
||||
onMouseEnter: function onMouseEnter() {
|
||||
if (!disabled) {
|
||||
onHover === null || onHover === void 0 || onHover(date);
|
||||
}
|
||||
},
|
||||
onMouseLeave: function onMouseLeave() {
|
||||
if (!disabled) {
|
||||
onHover === null || onHover === void 0 || onHover(null);
|
||||
}
|
||||
}
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(cellPrefixCls, "-inner")
|
||||
}, generateConfig.locale.getWeek(locale.locale, date)));
|
||||
} : null;
|
||||
|
||||
// ========================= Cells ==========================
|
||||
// >>> Header Cells
|
||||
var headerCells = [];
|
||||
var weekDaysLocale = locale.shortWeekDays || (generateConfig.locale.getShortWeekDays ? generateConfig.locale.getShortWeekDays(locale.locale) : []);
|
||||
if (prefixColumn) {
|
||||
headerCells.push( /*#__PURE__*/React.createElement("th", {
|
||||
key: "empty"
|
||||
}, /*#__PURE__*/React.createElement("span", {
|
||||
style: {
|
||||
width: 0,
|
||||
height: 0,
|
||||
position: 'absolute',
|
||||
overflow: 'hidden',
|
||||
opacity: 0
|
||||
}
|
||||
}, locale.week)));
|
||||
}
|
||||
for (var i = 0; i < WEEK_DAY_COUNT; i += 1) {
|
||||
headerCells.push( /*#__PURE__*/React.createElement("th", {
|
||||
key: i
|
||||
}, weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT]));
|
||||
}
|
||||
|
||||
// >>> Body Cells
|
||||
var getCellDate = function getCellDate(date, offset) {
|
||||
return generateConfig.addDate(date, offset);
|
||||
};
|
||||
var getCellText = function getCellText(date) {
|
||||
return formatValue(date, {
|
||||
locale: locale,
|
||||
format: locale.cellDateFormat,
|
||||
generateConfig: generateConfig
|
||||
});
|
||||
};
|
||||
var getCellClassName = function getCellClassName(date) {
|
||||
var classObj = _defineProperty(_defineProperty({}, "".concat(prefixCls, "-cell-in-view"), isSameMonth(generateConfig, date, pickerValue)), "".concat(prefixCls, "-cell-today"), isSameDate(generateConfig, date, now));
|
||||
return classObj;
|
||||
};
|
||||
|
||||
// ========================= Header =========================
|
||||
var monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);
|
||||
var yearNode = /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
"aria-label": locale.yearSelect,
|
||||
key: "year",
|
||||
onClick: function onClick() {
|
||||
onModeChange('year', pickerValue);
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: "".concat(prefixCls, "-year-btn")
|
||||
}, formatValue(pickerValue, {
|
||||
locale: locale,
|
||||
format: locale.yearFormat,
|
||||
generateConfig: generateConfig
|
||||
}));
|
||||
var monthNode = /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
"aria-label": locale.monthSelect,
|
||||
key: "month",
|
||||
onClick: function onClick() {
|
||||
onModeChange('month', pickerValue);
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: "".concat(prefixCls, "-month-btn")
|
||||
}, locale.monthFormat ? formatValue(pickerValue, {
|
||||
locale: locale,
|
||||
format: locale.monthFormat,
|
||||
generateConfig: generateConfig
|
||||
}) : monthsLocale[month]);
|
||||
var monthYearNodes = locale.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode];
|
||||
|
||||
// ========================= Render =========================
|
||||
return /*#__PURE__*/React.createElement(PanelContext.Provider, {
|
||||
value: info
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: classNames(panelPrefixCls, showWeek && "".concat(panelPrefixCls, "-show-week"))
|
||||
}, /*#__PURE__*/React.createElement(PanelHeader, {
|
||||
offset: function offset(distance) {
|
||||
return generateConfig.addMonth(pickerValue, distance);
|
||||
},
|
||||
superOffset: function superOffset(distance) {
|
||||
return generateConfig.addYear(pickerValue, distance);
|
||||
},
|
||||
onChange: onPickerValueChange
|
||||
// Limitation
|
||||
,
|
||||
getStart: function getStart(date) {
|
||||
return generateConfig.setDate(date, 1);
|
||||
},
|
||||
getEnd: function getEnd(date) {
|
||||
var clone = generateConfig.setDate(date, 1);
|
||||
clone = generateConfig.addMonth(clone, 1);
|
||||
return generateConfig.addDate(clone, -1);
|
||||
}
|
||||
}, monthYearNodes), /*#__PURE__*/React.createElement(PanelBody, _extends({
|
||||
titleFormat: locale.fieldDateFormat
|
||||
}, props, {
|
||||
colNum: WEEK_DAY_COUNT,
|
||||
rowNum: 6,
|
||||
baseDate: baseDate
|
||||
// Header
|
||||
,
|
||||
headerCells: headerCells
|
||||
// Body
|
||||
,
|
||||
getCellDate: getCellDate,
|
||||
getCellText: getCellText,
|
||||
getCellClassName: getCellClassName,
|
||||
prefixColumn: prefixColumn,
|
||||
cellSelection: !isWeek
|
||||
}))));
|
||||
}
|
||||
3
frontend/node_modules/rc-picker/es/PickerPanel/DateTimePanel/index.d.ts
generated
vendored
Normal file
3
frontend/node_modules/rc-picker/es/PickerPanel/DateTimePanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps } from '../../interface';
|
||||
export default function DateTimePanel<DateType extends object = any>(props: SharedPanelProps<DateType>): React.JSX.Element;
|
||||
50
frontend/node_modules/rc-picker/es/PickerPanel/DateTimePanel/index.js
generated
vendored
Normal file
50
frontend/node_modules/rc-picker/es/PickerPanel/DateTimePanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import * as React from 'react';
|
||||
import useTimeInfo from "../../hooks/useTimeInfo";
|
||||
import { fillTime } from "../../utils/dateUtil";
|
||||
import DatePanel from "../DatePanel";
|
||||
import TimePanel from "../TimePanel";
|
||||
export default function DateTimePanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
generateConfig = props.generateConfig,
|
||||
showTime = props.showTime,
|
||||
onSelect = props.onSelect,
|
||||
value = props.value,
|
||||
pickerValue = props.pickerValue,
|
||||
onHover = props.onHover;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-datetime-panel");
|
||||
|
||||
// =============================== Time ===============================
|
||||
var _useTimeInfo = useTimeInfo(generateConfig, showTime),
|
||||
_useTimeInfo2 = _slicedToArray(_useTimeInfo, 1),
|
||||
getValidTime = _useTimeInfo2[0];
|
||||
|
||||
// Merge the time info from `value` or `pickerValue`
|
||||
var mergeTime = function mergeTime(date) {
|
||||
if (value) {
|
||||
return fillTime(generateConfig, date, value);
|
||||
}
|
||||
return fillTime(generateConfig, date, pickerValue);
|
||||
};
|
||||
|
||||
// ============================== Hover ===============================
|
||||
var onDateHover = function onDateHover(date) {
|
||||
onHover === null || onHover === void 0 || onHover(date ? mergeTime(date) : date);
|
||||
};
|
||||
|
||||
// ============================== Select ==============================
|
||||
var onDateSelect = function onDateSelect(date) {
|
||||
// Merge with current time
|
||||
var cloneDate = mergeTime(date);
|
||||
onSelect(getValidTime(cloneDate, cloneDate));
|
||||
};
|
||||
|
||||
// ============================== Render ==============================
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
className: panelPrefixCls
|
||||
}, /*#__PURE__*/React.createElement(DatePanel, _extends({}, props, {
|
||||
onSelect: onDateSelect,
|
||||
onHover: onDateHover
|
||||
})), /*#__PURE__*/React.createElement(TimePanel, props));
|
||||
}
|
||||
3
frontend/node_modules/rc-picker/es/PickerPanel/DecadePanel/index.d.ts
generated
vendored
Normal file
3
frontend/node_modules/rc-picker/es/PickerPanel/DecadePanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps } from '../../interface';
|
||||
export default function DecadePanel<DateType extends object = any>(props: SharedPanelProps<DateType>): React.JSX.Element;
|
||||
105
frontend/node_modules/rc-picker/es/PickerPanel/DecadePanel/index.js
generated
vendored
Normal file
105
frontend/node_modules/rc-picker/es/PickerPanel/DecadePanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import * as React from 'react';
|
||||
import { formatValue, isInRange, isSameDecade } from "../../utils/dateUtil";
|
||||
import { PanelContext, useInfo } from "../context";
|
||||
import PanelBody from "../PanelBody";
|
||||
import PanelHeader from "../PanelHeader";
|
||||
export default function DecadePanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
locale = props.locale,
|
||||
generateConfig = props.generateConfig,
|
||||
pickerValue = props.pickerValue,
|
||||
disabledDate = props.disabledDate,
|
||||
onPickerValueChange = props.onPickerValueChange;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-decade-panel");
|
||||
|
||||
// ========================== Base ==========================
|
||||
var _useInfo = useInfo(props, 'decade'),
|
||||
_useInfo2 = _slicedToArray(_useInfo, 1),
|
||||
info = _useInfo2[0];
|
||||
var getStartYear = function getStartYear(date) {
|
||||
var startYear = Math.floor(generateConfig.getYear(date) / 100) * 100;
|
||||
return generateConfig.setYear(date, startYear);
|
||||
};
|
||||
var getEndYear = function getEndYear(date) {
|
||||
var startYear = getStartYear(date);
|
||||
return generateConfig.addYear(startYear, 99);
|
||||
};
|
||||
var startYearDate = getStartYear(pickerValue);
|
||||
var endYearDate = getEndYear(pickerValue);
|
||||
var baseDate = generateConfig.addYear(startYearDate, -10);
|
||||
|
||||
// ========================= Cells ==========================
|
||||
var getCellDate = function getCellDate(date, offset) {
|
||||
return generateConfig.addYear(date, offset * 10);
|
||||
};
|
||||
var getCellText = function getCellText(date) {
|
||||
var cellYearFormat = locale.cellYearFormat;
|
||||
var startYearStr = formatValue(date, {
|
||||
locale: locale,
|
||||
format: cellYearFormat,
|
||||
generateConfig: generateConfig
|
||||
});
|
||||
var endYearStr = formatValue(generateConfig.addYear(date, 9), {
|
||||
locale: locale,
|
||||
format: cellYearFormat,
|
||||
generateConfig: generateConfig
|
||||
});
|
||||
return "".concat(startYearStr, "-").concat(endYearStr);
|
||||
};
|
||||
var getCellClassName = function getCellClassName(date) {
|
||||
return _defineProperty({}, "".concat(prefixCls, "-cell-in-view"), isSameDecade(generateConfig, date, startYearDate) || isSameDecade(generateConfig, date, endYearDate) || isInRange(generateConfig, startYearDate, endYearDate, date));
|
||||
};
|
||||
|
||||
// ======================== Disabled ========================
|
||||
var mergedDisabledDate = disabledDate ? function (currentDate, disabledInfo) {
|
||||
// Start
|
||||
var baseStartDate = generateConfig.setDate(currentDate, 1);
|
||||
var baseStartMonth = generateConfig.setMonth(baseStartDate, 0);
|
||||
var baseStartYear = generateConfig.setYear(baseStartMonth, Math.floor(generateConfig.getYear(baseStartMonth) / 10) * 10);
|
||||
|
||||
// End
|
||||
var baseEndYear = generateConfig.addYear(baseStartYear, 10);
|
||||
var baseEndDate = generateConfig.addDate(baseEndYear, -1);
|
||||
return disabledDate(baseStartYear, disabledInfo) && disabledDate(baseEndDate, disabledInfo);
|
||||
} : null;
|
||||
|
||||
// ========================= Header =========================
|
||||
var yearNode = "".concat(formatValue(startYearDate, {
|
||||
locale: locale,
|
||||
format: locale.yearFormat,
|
||||
generateConfig: generateConfig
|
||||
}), "-").concat(formatValue(endYearDate, {
|
||||
locale: locale,
|
||||
format: locale.yearFormat,
|
||||
generateConfig: generateConfig
|
||||
}));
|
||||
|
||||
// ========================= Render =========================
|
||||
return /*#__PURE__*/React.createElement(PanelContext.Provider, {
|
||||
value: info
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: panelPrefixCls
|
||||
}, /*#__PURE__*/React.createElement(PanelHeader, {
|
||||
superOffset: function superOffset(distance) {
|
||||
return generateConfig.addYear(pickerValue, distance * 100);
|
||||
},
|
||||
onChange: onPickerValueChange
|
||||
// Limitation
|
||||
,
|
||||
getStart: getStartYear,
|
||||
getEnd: getEndYear
|
||||
}, yearNode), /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {
|
||||
disabledDate: mergedDisabledDate,
|
||||
colNum: 3,
|
||||
rowNum: 4,
|
||||
baseDate: baseDate
|
||||
// Body
|
||||
,
|
||||
getCellDate: getCellDate,
|
||||
getCellText: getCellText,
|
||||
getCellClassName: getCellClassName
|
||||
}))));
|
||||
}
|
||||
3
frontend/node_modules/rc-picker/es/PickerPanel/MonthPanel/index.d.ts
generated
vendored
Normal file
3
frontend/node_modules/rc-picker/es/PickerPanel/MonthPanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps } from '../../interface';
|
||||
export default function MonthPanel<DateType extends object = any>(props: SharedPanelProps<DateType>): React.JSX.Element;
|
||||
98
frontend/node_modules/rc-picker/es/PickerPanel/MonthPanel/index.js
generated
vendored
Normal file
98
frontend/node_modules/rc-picker/es/PickerPanel/MonthPanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import * as React from 'react';
|
||||
import { formatValue } from "../../utils/dateUtil";
|
||||
import { PanelContext, useInfo } from "../context";
|
||||
import PanelBody from "../PanelBody";
|
||||
import PanelHeader from "../PanelHeader";
|
||||
export default function MonthPanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
locale = props.locale,
|
||||
generateConfig = props.generateConfig,
|
||||
pickerValue = props.pickerValue,
|
||||
disabledDate = props.disabledDate,
|
||||
onPickerValueChange = props.onPickerValueChange,
|
||||
onModeChange = props.onModeChange;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-month-panel");
|
||||
|
||||
// ========================== Base ==========================
|
||||
var _useInfo = useInfo(props, 'month'),
|
||||
_useInfo2 = _slicedToArray(_useInfo, 1),
|
||||
info = _useInfo2[0];
|
||||
var baseDate = generateConfig.setMonth(pickerValue, 0);
|
||||
|
||||
// ========================= Month ==========================
|
||||
var monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);
|
||||
|
||||
// ========================= Cells ==========================
|
||||
var getCellDate = function getCellDate(date, offset) {
|
||||
return generateConfig.addMonth(date, offset);
|
||||
};
|
||||
var getCellText = function getCellText(date) {
|
||||
var month = generateConfig.getMonth(date);
|
||||
return locale.monthFormat ? formatValue(date, {
|
||||
locale: locale,
|
||||
format: locale.monthFormat,
|
||||
generateConfig: generateConfig
|
||||
}) : monthsLocale[month];
|
||||
};
|
||||
var getCellClassName = function getCellClassName() {
|
||||
return _defineProperty({}, "".concat(prefixCls, "-cell-in-view"), true);
|
||||
};
|
||||
|
||||
// ======================== Disabled ========================
|
||||
var mergedDisabledDate = disabledDate ? function (currentDate, disabledInfo) {
|
||||
var startDate = generateConfig.setDate(currentDate, 1);
|
||||
var nextMonthStartDate = generateConfig.setMonth(startDate, generateConfig.getMonth(startDate) + 1);
|
||||
var endDate = generateConfig.addDate(nextMonthStartDate, -1);
|
||||
return disabledDate(startDate, disabledInfo) && disabledDate(endDate, disabledInfo);
|
||||
} : null;
|
||||
|
||||
// ========================= Header =========================
|
||||
var yearNode = /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
key: "year",
|
||||
"aria-label": locale.yearSelect,
|
||||
onClick: function onClick() {
|
||||
onModeChange('year');
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: "".concat(prefixCls, "-year-btn")
|
||||
}, formatValue(pickerValue, {
|
||||
locale: locale,
|
||||
format: locale.yearFormat,
|
||||
generateConfig: generateConfig
|
||||
}));
|
||||
|
||||
// ========================= Render =========================
|
||||
return /*#__PURE__*/React.createElement(PanelContext.Provider, {
|
||||
value: info
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: panelPrefixCls
|
||||
}, /*#__PURE__*/React.createElement(PanelHeader, {
|
||||
superOffset: function superOffset(distance) {
|
||||
return generateConfig.addYear(pickerValue, distance);
|
||||
},
|
||||
onChange: onPickerValueChange
|
||||
// Limitation
|
||||
,
|
||||
getStart: function getStart(date) {
|
||||
return generateConfig.setMonth(date, 0);
|
||||
},
|
||||
getEnd: function getEnd(date) {
|
||||
return generateConfig.setMonth(date, 11);
|
||||
}
|
||||
}, yearNode), /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {
|
||||
disabledDate: mergedDisabledDate,
|
||||
titleFormat: locale.fieldMonthFormat,
|
||||
colNum: 3,
|
||||
rowNum: 4,
|
||||
baseDate: baseDate
|
||||
// Body
|
||||
,
|
||||
getCellDate: getCellDate,
|
||||
getCellText: getCellText,
|
||||
getCellClassName: getCellClassName
|
||||
}))));
|
||||
}
|
||||
17
frontend/node_modules/rc-picker/es/PickerPanel/PanelBody.d.ts
generated
vendored
Normal file
17
frontend/node_modules/rc-picker/es/PickerPanel/PanelBody.d.ts
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import * as React from 'react';
|
||||
import type { DisabledDate } from '../interface';
|
||||
export interface PanelBodyProps<DateType = any> {
|
||||
rowNum: number;
|
||||
colNum: number;
|
||||
baseDate: DateType;
|
||||
titleFormat?: string;
|
||||
getCellDate: (date: DateType, offset: number) => DateType;
|
||||
getCellText: (date: DateType) => React.ReactNode;
|
||||
getCellClassName: (date: DateType) => Record<string, any>;
|
||||
disabledDate?: DisabledDate<DateType>;
|
||||
headerCells?: React.ReactNode[];
|
||||
prefixColumn?: (date: DateType) => React.ReactNode;
|
||||
rowClassName?: (date: DateType) => string;
|
||||
cellSelection?: boolean;
|
||||
}
|
||||
export default function PanelBody<DateType extends object = any>(props: PanelBodyProps<DateType>): React.JSX.Element;
|
||||
144
frontend/node_modules/rc-picker/es/PickerPanel/PanelBody.js
generated
vendored
Normal file
144
frontend/node_modules/rc-picker/es/PickerPanel/PanelBody.js
generated
vendored
Normal file
@@ -0,0 +1,144 @@
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import * as React from 'react';
|
||||
import { formatValue, isInRange, isSame } from "../utils/dateUtil";
|
||||
import { PickerHackContext, usePanelContext } from "./context";
|
||||
export default function PanelBody(props) {
|
||||
var rowNum = props.rowNum,
|
||||
colNum = props.colNum,
|
||||
baseDate = props.baseDate,
|
||||
getCellDate = props.getCellDate,
|
||||
prefixColumn = props.prefixColumn,
|
||||
rowClassName = props.rowClassName,
|
||||
titleFormat = props.titleFormat,
|
||||
getCellText = props.getCellText,
|
||||
getCellClassName = props.getCellClassName,
|
||||
headerCells = props.headerCells,
|
||||
_props$cellSelection = props.cellSelection,
|
||||
cellSelection = _props$cellSelection === void 0 ? true : _props$cellSelection,
|
||||
disabledDate = props.disabledDate;
|
||||
var _usePanelContext = usePanelContext(),
|
||||
prefixCls = _usePanelContext.prefixCls,
|
||||
type = _usePanelContext.panelType,
|
||||
now = _usePanelContext.now,
|
||||
contextDisabledDate = _usePanelContext.disabledDate,
|
||||
cellRender = _usePanelContext.cellRender,
|
||||
onHover = _usePanelContext.onHover,
|
||||
hoverValue = _usePanelContext.hoverValue,
|
||||
hoverRangeValue = _usePanelContext.hoverRangeValue,
|
||||
generateConfig = _usePanelContext.generateConfig,
|
||||
values = _usePanelContext.values,
|
||||
locale = _usePanelContext.locale,
|
||||
onSelect = _usePanelContext.onSelect;
|
||||
var mergedDisabledDate = disabledDate || contextDisabledDate;
|
||||
var cellPrefixCls = "".concat(prefixCls, "-cell");
|
||||
|
||||
// ============================= Context ==============================
|
||||
var _React$useContext = React.useContext(PickerHackContext),
|
||||
onCellDblClick = _React$useContext.onCellDblClick;
|
||||
|
||||
// ============================== Value ===============================
|
||||
var matchValues = function matchValues(date) {
|
||||
return values.some(function (singleValue) {
|
||||
return singleValue && isSame(generateConfig, locale, date, singleValue, type);
|
||||
});
|
||||
};
|
||||
|
||||
// =============================== Body ===============================
|
||||
var rows = [];
|
||||
for (var row = 0; row < rowNum; row += 1) {
|
||||
var rowNode = [];
|
||||
var rowStartDate = void 0;
|
||||
var _loop = function _loop() {
|
||||
var offset = row * colNum + col;
|
||||
var currentDate = getCellDate(baseDate, offset);
|
||||
var disabled = mergedDisabledDate === null || mergedDisabledDate === void 0 ? void 0 : mergedDisabledDate(currentDate, {
|
||||
type: type
|
||||
});
|
||||
|
||||
// Row Start Cell
|
||||
if (col === 0) {
|
||||
rowStartDate = currentDate;
|
||||
if (prefixColumn) {
|
||||
rowNode.push(prefixColumn(rowStartDate));
|
||||
}
|
||||
}
|
||||
|
||||
// Range
|
||||
var inRange = false;
|
||||
var rangeStart = false;
|
||||
var rangeEnd = false;
|
||||
if (cellSelection && hoverRangeValue) {
|
||||
var _hoverRangeValue = _slicedToArray(hoverRangeValue, 2),
|
||||
hoverStart = _hoverRangeValue[0],
|
||||
hoverEnd = _hoverRangeValue[1];
|
||||
inRange = isInRange(generateConfig, hoverStart, hoverEnd, currentDate);
|
||||
rangeStart = isSame(generateConfig, locale, currentDate, hoverStart, type);
|
||||
rangeEnd = isSame(generateConfig, locale, currentDate, hoverEnd, type);
|
||||
}
|
||||
|
||||
// Title
|
||||
var title = titleFormat ? formatValue(currentDate, {
|
||||
locale: locale,
|
||||
format: titleFormat,
|
||||
generateConfig: generateConfig
|
||||
}) : undefined;
|
||||
|
||||
// Render
|
||||
var inner = /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(cellPrefixCls, "-inner")
|
||||
}, getCellText(currentDate));
|
||||
rowNode.push( /*#__PURE__*/React.createElement("td", {
|
||||
key: col,
|
||||
title: title,
|
||||
className: classNames(cellPrefixCls, _objectSpread(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(cellPrefixCls, "-disabled"), disabled), "".concat(cellPrefixCls, "-hover"), (hoverValue || []).some(function (date) {
|
||||
return isSame(generateConfig, locale, currentDate, date, type);
|
||||
})), "".concat(cellPrefixCls, "-in-range"), inRange && !rangeStart && !rangeEnd), "".concat(cellPrefixCls, "-range-start"), rangeStart), "".concat(cellPrefixCls, "-range-end"), rangeEnd), "".concat(prefixCls, "-cell-selected"), !hoverRangeValue &&
|
||||
// WeekPicker use row instead
|
||||
type !== 'week' && matchValues(currentDate)), getCellClassName(currentDate))),
|
||||
onClick: function onClick() {
|
||||
if (!disabled) {
|
||||
onSelect(currentDate);
|
||||
}
|
||||
},
|
||||
onDoubleClick: function onDoubleClick() {
|
||||
if (!disabled && onCellDblClick) {
|
||||
onCellDblClick();
|
||||
}
|
||||
},
|
||||
onMouseEnter: function onMouseEnter() {
|
||||
if (!disabled) {
|
||||
onHover === null || onHover === void 0 || onHover(currentDate);
|
||||
}
|
||||
},
|
||||
onMouseLeave: function onMouseLeave() {
|
||||
if (!disabled) {
|
||||
onHover === null || onHover === void 0 || onHover(null);
|
||||
}
|
||||
}
|
||||
}, cellRender ? cellRender(currentDate, {
|
||||
prefixCls: prefixCls,
|
||||
originNode: inner,
|
||||
today: now,
|
||||
type: type,
|
||||
locale: locale
|
||||
}) : inner));
|
||||
};
|
||||
for (var col = 0; col < colNum; col += 1) {
|
||||
_loop();
|
||||
}
|
||||
rows.push( /*#__PURE__*/React.createElement("tr", {
|
||||
key: row,
|
||||
className: rowClassName === null || rowClassName === void 0 ? void 0 : rowClassName(rowStartDate)
|
||||
}, rowNode));
|
||||
}
|
||||
|
||||
// ============================== Render ==============================
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(prefixCls, "-body")
|
||||
}, /*#__PURE__*/React.createElement("table", {
|
||||
className: "".concat(prefixCls, "-content")
|
||||
}, headerCells && /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, headerCells)), /*#__PURE__*/React.createElement("tbody", null, rows)));
|
||||
}
|
||||
11
frontend/node_modules/rc-picker/es/PickerPanel/PanelHeader.d.ts
generated
vendored
Normal file
11
frontend/node_modules/rc-picker/es/PickerPanel/PanelHeader.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
import * as React from 'react';
|
||||
export interface HeaderProps<DateType extends object> {
|
||||
offset?: (distance: number, date: DateType) => DateType;
|
||||
superOffset?: (distance: number, date: DateType) => DateType;
|
||||
onChange?: (date: DateType) => void;
|
||||
getStart?: (date: DateType) => DateType;
|
||||
getEnd?: (date: DateType) => DateType;
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
declare function PanelHeader<DateType extends object>(props: HeaderProps<DateType>): React.JSX.Element;
|
||||
export default PanelHeader;
|
||||
133
frontend/node_modules/rc-picker/es/PickerPanel/PanelHeader.js
generated
vendored
Normal file
133
frontend/node_modules/rc-picker/es/PickerPanel/PanelHeader.js
generated
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
import classNames from 'classnames';
|
||||
import * as React from 'react';
|
||||
import { isSameOrAfter } from "../utils/dateUtil";
|
||||
import { PickerHackContext, usePanelContext } from "./context";
|
||||
var HIDDEN_STYLE = {
|
||||
visibility: 'hidden'
|
||||
};
|
||||
function PanelHeader(props) {
|
||||
var offset = props.offset,
|
||||
superOffset = props.superOffset,
|
||||
onChange = props.onChange,
|
||||
getStart = props.getStart,
|
||||
getEnd = props.getEnd,
|
||||
children = props.children;
|
||||
var _usePanelContext = usePanelContext(),
|
||||
prefixCls = _usePanelContext.prefixCls,
|
||||
_usePanelContext$prev = _usePanelContext.prevIcon,
|
||||
prevIcon = _usePanelContext$prev === void 0 ? "\u2039" : _usePanelContext$prev,
|
||||
_usePanelContext$next = _usePanelContext.nextIcon,
|
||||
nextIcon = _usePanelContext$next === void 0 ? "\u203A" : _usePanelContext$next,
|
||||
_usePanelContext$supe = _usePanelContext.superPrevIcon,
|
||||
superPrevIcon = _usePanelContext$supe === void 0 ? "\xAB" : _usePanelContext$supe,
|
||||
_usePanelContext$supe2 = _usePanelContext.superNextIcon,
|
||||
superNextIcon = _usePanelContext$supe2 === void 0 ? "\xBB" : _usePanelContext$supe2,
|
||||
minDate = _usePanelContext.minDate,
|
||||
maxDate = _usePanelContext.maxDate,
|
||||
generateConfig = _usePanelContext.generateConfig,
|
||||
locale = _usePanelContext.locale,
|
||||
pickerValue = _usePanelContext.pickerValue,
|
||||
type = _usePanelContext.panelType;
|
||||
var headerPrefixCls = "".concat(prefixCls, "-header");
|
||||
var _React$useContext = React.useContext(PickerHackContext),
|
||||
hidePrev = _React$useContext.hidePrev,
|
||||
hideNext = _React$useContext.hideNext,
|
||||
hideHeader = _React$useContext.hideHeader;
|
||||
|
||||
// ======================= Limitation =======================
|
||||
var disabledOffsetPrev = React.useMemo(function () {
|
||||
if (!minDate || !offset || !getEnd) {
|
||||
return false;
|
||||
}
|
||||
var prevPanelLimitDate = getEnd(offset(-1, pickerValue));
|
||||
return !isSameOrAfter(generateConfig, locale, prevPanelLimitDate, minDate, type);
|
||||
}, [minDate, offset, pickerValue, getEnd, generateConfig, locale, type]);
|
||||
var disabledSuperOffsetPrev = React.useMemo(function () {
|
||||
if (!minDate || !superOffset || !getEnd) {
|
||||
return false;
|
||||
}
|
||||
var prevPanelLimitDate = getEnd(superOffset(-1, pickerValue));
|
||||
return !isSameOrAfter(generateConfig, locale, prevPanelLimitDate, minDate, type);
|
||||
}, [minDate, superOffset, pickerValue, getEnd, generateConfig, locale, type]);
|
||||
var disabledOffsetNext = React.useMemo(function () {
|
||||
if (!maxDate || !offset || !getStart) {
|
||||
return false;
|
||||
}
|
||||
var nextPanelLimitDate = getStart(offset(1, pickerValue));
|
||||
return !isSameOrAfter(generateConfig, locale, maxDate, nextPanelLimitDate, type);
|
||||
}, [maxDate, offset, pickerValue, getStart, generateConfig, locale, type]);
|
||||
var disabledSuperOffsetNext = React.useMemo(function () {
|
||||
if (!maxDate || !superOffset || !getStart) {
|
||||
return false;
|
||||
}
|
||||
var nextPanelLimitDate = getStart(superOffset(1, pickerValue));
|
||||
return !isSameOrAfter(generateConfig, locale, maxDate, nextPanelLimitDate, type);
|
||||
}, [maxDate, superOffset, pickerValue, getStart, generateConfig, locale, type]);
|
||||
|
||||
// ========================= Offset =========================
|
||||
var onOffset = function onOffset(distance) {
|
||||
if (offset) {
|
||||
onChange(offset(distance, pickerValue));
|
||||
}
|
||||
};
|
||||
var onSuperOffset = function onSuperOffset(distance) {
|
||||
if (superOffset) {
|
||||
onChange(superOffset(distance, pickerValue));
|
||||
}
|
||||
};
|
||||
|
||||
// ========================= Render =========================
|
||||
if (hideHeader) {
|
||||
return null;
|
||||
}
|
||||
var prevBtnCls = "".concat(headerPrefixCls, "-prev-btn");
|
||||
var nextBtnCls = "".concat(headerPrefixCls, "-next-btn");
|
||||
var superPrevBtnCls = "".concat(headerPrefixCls, "-super-prev-btn");
|
||||
var superNextBtnCls = "".concat(headerPrefixCls, "-super-next-btn");
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
className: headerPrefixCls
|
||||
}, superOffset && /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
"aria-label": locale.previousYear,
|
||||
onClick: function onClick() {
|
||||
return onSuperOffset(-1);
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: classNames(superPrevBtnCls, disabledSuperOffsetPrev && "".concat(superPrevBtnCls, "-disabled")),
|
||||
disabled: disabledSuperOffsetPrev,
|
||||
style: hidePrev ? HIDDEN_STYLE : {}
|
||||
}, superPrevIcon), offset && /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
"aria-label": locale.previousMonth,
|
||||
onClick: function onClick() {
|
||||
return onOffset(-1);
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: classNames(prevBtnCls, disabledOffsetPrev && "".concat(prevBtnCls, "-disabled")),
|
||||
disabled: disabledOffsetPrev,
|
||||
style: hidePrev ? HIDDEN_STYLE : {}
|
||||
}, prevIcon), /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(headerPrefixCls, "-view")
|
||||
}, children), offset && /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
"aria-label": locale.nextMonth,
|
||||
onClick: function onClick() {
|
||||
return onOffset(1);
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: classNames(nextBtnCls, disabledOffsetNext && "".concat(nextBtnCls, "-disabled")),
|
||||
disabled: disabledOffsetNext,
|
||||
style: hideNext ? HIDDEN_STYLE : {}
|
||||
}, nextIcon), superOffset && /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
"aria-label": locale.nextYear,
|
||||
onClick: function onClick() {
|
||||
return onSuperOffset(1);
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: classNames(superNextBtnCls, disabledSuperOffsetNext && "".concat(superNextBtnCls, "-disabled")),
|
||||
disabled: disabledSuperOffsetNext,
|
||||
style: hideNext ? HIDDEN_STYLE : {}
|
||||
}, superNextIcon));
|
||||
}
|
||||
export default PanelHeader;
|
||||
3
frontend/node_modules/rc-picker/es/PickerPanel/QuarterPanel/index.d.ts
generated
vendored
Normal file
3
frontend/node_modules/rc-picker/es/PickerPanel/QuarterPanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps } from '../../interface';
|
||||
export default function QuarterPanel<DateType extends object = any>(props: SharedPanelProps<DateType>): React.JSX.Element;
|
||||
84
frontend/node_modules/rc-picker/es/PickerPanel/QuarterPanel/index.js
generated
vendored
Normal file
84
frontend/node_modules/rc-picker/es/PickerPanel/QuarterPanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import * as React from 'react';
|
||||
import { formatValue } from "../../utils/dateUtil";
|
||||
import { PanelContext, useInfo } from "../context";
|
||||
import PanelBody from "../PanelBody";
|
||||
import PanelHeader from "../PanelHeader";
|
||||
export default function QuarterPanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
locale = props.locale,
|
||||
generateConfig = props.generateConfig,
|
||||
pickerValue = props.pickerValue,
|
||||
onPickerValueChange = props.onPickerValueChange,
|
||||
onModeChange = props.onModeChange;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-quarter-panel");
|
||||
|
||||
// ========================== Base ==========================
|
||||
var _useInfo = useInfo(props, 'quarter'),
|
||||
_useInfo2 = _slicedToArray(_useInfo, 1),
|
||||
info = _useInfo2[0];
|
||||
var baseDate = generateConfig.setMonth(pickerValue, 0);
|
||||
|
||||
// ========================= Cells ==========================
|
||||
var getCellDate = function getCellDate(date, offset) {
|
||||
return generateConfig.addMonth(date, offset * 3);
|
||||
};
|
||||
var getCellText = function getCellText(date) {
|
||||
return formatValue(date, {
|
||||
locale: locale,
|
||||
format: locale.cellQuarterFormat,
|
||||
generateConfig: generateConfig
|
||||
});
|
||||
};
|
||||
var getCellClassName = function getCellClassName() {
|
||||
return _defineProperty({}, "".concat(prefixCls, "-cell-in-view"), true);
|
||||
};
|
||||
|
||||
// ========================= Header =========================
|
||||
var yearNode = /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
key: "year",
|
||||
"aria-label": locale.yearSelect,
|
||||
onClick: function onClick() {
|
||||
onModeChange('year');
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: "".concat(prefixCls, "-year-btn")
|
||||
}, formatValue(pickerValue, {
|
||||
locale: locale,
|
||||
format: locale.yearFormat,
|
||||
generateConfig: generateConfig
|
||||
}));
|
||||
|
||||
// ========================= Render =========================
|
||||
return /*#__PURE__*/React.createElement(PanelContext.Provider, {
|
||||
value: info
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: panelPrefixCls
|
||||
}, /*#__PURE__*/React.createElement(PanelHeader, {
|
||||
superOffset: function superOffset(distance) {
|
||||
return generateConfig.addYear(pickerValue, distance);
|
||||
},
|
||||
onChange: onPickerValueChange
|
||||
// Limitation
|
||||
,
|
||||
getStart: function getStart(date) {
|
||||
return generateConfig.setMonth(date, 0);
|
||||
},
|
||||
getEnd: function getEnd(date) {
|
||||
return generateConfig.setMonth(date, 11);
|
||||
}
|
||||
}, yearNode), /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {
|
||||
titleFormat: locale.fieldQuarterFormat,
|
||||
colNum: 4,
|
||||
rowNum: 1,
|
||||
baseDate: baseDate
|
||||
// Body
|
||||
,
|
||||
getCellDate: getCellDate,
|
||||
getCellText: getCellText,
|
||||
getCellClassName: getCellClassName
|
||||
}))));
|
||||
}
|
||||
17
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/TimeColumn.d.ts
generated
vendored
Normal file
17
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/TimeColumn.d.ts
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import * as React from 'react';
|
||||
export type Unit<ValueType = number | string> = {
|
||||
label: React.ReactText;
|
||||
value: ValueType;
|
||||
disabled?: boolean;
|
||||
};
|
||||
export interface TimeUnitColumnProps {
|
||||
units: Unit[];
|
||||
value: number | string;
|
||||
optionalValue?: number | string;
|
||||
type: 'hour' | 'minute' | 'second' | 'millisecond' | 'meridiem';
|
||||
onChange: (value: number | string) => void;
|
||||
onHover: (value: number | string) => void;
|
||||
onDblClick?: VoidFunction;
|
||||
changeOnScroll?: boolean;
|
||||
}
|
||||
export default function TimeColumn<DateType extends object>(props: TimeUnitColumnProps): React.JSX.Element;
|
||||
138
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/TimeColumn.js
generated
vendored
Normal file
138
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/TimeColumn.js
generated
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
|
||||
import * as React from 'react';
|
||||
import { usePanelContext } from "../../context";
|
||||
import useScrollTo from "./useScrollTo";
|
||||
var SCROLL_DELAY = 300;
|
||||
// Not use JSON.stringify to avoid dead loop
|
||||
function flattenUnits(units) {
|
||||
return units.map(function (_ref) {
|
||||
var value = _ref.value,
|
||||
label = _ref.label,
|
||||
disabled = _ref.disabled;
|
||||
return [value, label, disabled].join(',');
|
||||
}).join(';');
|
||||
}
|
||||
export default function TimeColumn(props) {
|
||||
var units = props.units,
|
||||
value = props.value,
|
||||
optionalValue = props.optionalValue,
|
||||
type = props.type,
|
||||
onChange = props.onChange,
|
||||
onHover = props.onHover,
|
||||
onDblClick = props.onDblClick,
|
||||
changeOnScroll = props.changeOnScroll;
|
||||
var _usePanelContext = usePanelContext(),
|
||||
prefixCls = _usePanelContext.prefixCls,
|
||||
cellRender = _usePanelContext.cellRender,
|
||||
now = _usePanelContext.now,
|
||||
locale = _usePanelContext.locale;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-time-panel");
|
||||
var cellPrefixCls = "".concat(prefixCls, "-time-panel-cell");
|
||||
|
||||
// ========================== Refs ==========================
|
||||
var ulRef = React.useRef(null);
|
||||
|
||||
// ========================= Scroll =========================
|
||||
var checkDelayRef = React.useRef();
|
||||
var clearDelayCheck = function clearDelayCheck() {
|
||||
clearTimeout(checkDelayRef.current);
|
||||
};
|
||||
|
||||
// ========================== Sync ==========================
|
||||
var _useScrollTo = useScrollTo(ulRef, value !== null && value !== void 0 ? value : optionalValue),
|
||||
_useScrollTo2 = _slicedToArray(_useScrollTo, 3),
|
||||
syncScroll = _useScrollTo2[0],
|
||||
stopScroll = _useScrollTo2[1],
|
||||
isScrolling = _useScrollTo2[2];
|
||||
|
||||
// Effect sync value scroll
|
||||
useLayoutEffect(function () {
|
||||
syncScroll();
|
||||
clearDelayCheck();
|
||||
return function () {
|
||||
stopScroll();
|
||||
clearDelayCheck();
|
||||
};
|
||||
}, [value, optionalValue, flattenUnits(units)]);
|
||||
|
||||
// ========================= Change =========================
|
||||
// Scroll event if sync onScroll
|
||||
var onInternalScroll = function onInternalScroll(event) {
|
||||
clearDelayCheck();
|
||||
var target = event.target;
|
||||
if (!isScrolling() && changeOnScroll) {
|
||||
checkDelayRef.current = setTimeout(function () {
|
||||
var ul = ulRef.current;
|
||||
var firstLiTop = ul.querySelector("li").offsetTop;
|
||||
var liList = Array.from(ul.querySelectorAll("li"));
|
||||
var liTopList = liList.map(function (li) {
|
||||
return li.offsetTop - firstLiTop;
|
||||
});
|
||||
var liDistList = liTopList.map(function (top, index) {
|
||||
if (units[index].disabled) {
|
||||
return Number.MAX_SAFE_INTEGER;
|
||||
}
|
||||
return Math.abs(top - target.scrollTop);
|
||||
});
|
||||
|
||||
// Find min distance index
|
||||
var minDist = Math.min.apply(Math, _toConsumableArray(liDistList));
|
||||
var minDistIndex = liDistList.findIndex(function (dist) {
|
||||
return dist === minDist;
|
||||
});
|
||||
var targetUnit = units[minDistIndex];
|
||||
if (targetUnit && !targetUnit.disabled) {
|
||||
onChange(targetUnit.value);
|
||||
}
|
||||
}, SCROLL_DELAY);
|
||||
}
|
||||
};
|
||||
|
||||
// ========================= Render =========================
|
||||
var columnPrefixCls = "".concat(panelPrefixCls, "-column");
|
||||
return /*#__PURE__*/React.createElement("ul", {
|
||||
className: columnPrefixCls,
|
||||
ref: ulRef,
|
||||
"data-type": type,
|
||||
onScroll: onInternalScroll
|
||||
}, units.map(function (_ref2) {
|
||||
var label = _ref2.label,
|
||||
unitValue = _ref2.value,
|
||||
disabled = _ref2.disabled;
|
||||
var inner = /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(cellPrefixCls, "-inner")
|
||||
}, label);
|
||||
return /*#__PURE__*/React.createElement("li", {
|
||||
key: unitValue,
|
||||
className: classNames(cellPrefixCls, _defineProperty(_defineProperty({}, "".concat(cellPrefixCls, "-selected"), value === unitValue), "".concat(cellPrefixCls, "-disabled"), disabled)),
|
||||
onClick: function onClick() {
|
||||
if (!disabled) {
|
||||
onChange(unitValue);
|
||||
}
|
||||
},
|
||||
onDoubleClick: function onDoubleClick() {
|
||||
if (!disabled && onDblClick) {
|
||||
onDblClick();
|
||||
}
|
||||
},
|
||||
onMouseEnter: function onMouseEnter() {
|
||||
onHover(unitValue);
|
||||
},
|
||||
onMouseLeave: function onMouseLeave() {
|
||||
onHover(null);
|
||||
},
|
||||
"data-value": unitValue
|
||||
}, cellRender ? cellRender(unitValue, {
|
||||
prefixCls: prefixCls,
|
||||
originNode: inner,
|
||||
today: now,
|
||||
type: 'time',
|
||||
subType: type,
|
||||
locale: locale
|
||||
}) : inner);
|
||||
}));
|
||||
}
|
||||
4
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/index.d.ts
generated
vendored
Normal file
4
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps, SharedTimeProps } from '../../../interface';
|
||||
export type TimePanelBodyProps<DateType extends object = any> = SharedPanelProps<DateType>;
|
||||
export default function TimePanelBody<DateType extends object = any>(props: SharedTimeProps<DateType>): React.JSX.Element;
|
||||
278
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/index.js
generated
vendored
Normal file
278
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/index.js
generated
vendored
Normal file
@@ -0,0 +1,278 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import * as React from 'react';
|
||||
import useTimeInfo from "../../../hooks/useTimeInfo";
|
||||
import { formatValue } from "../../../utils/dateUtil";
|
||||
import { PickerHackContext, usePanelContext } from "../../context";
|
||||
import TimeColumn from "./TimeColumn";
|
||||
function isAM(hour) {
|
||||
return hour < 12;
|
||||
}
|
||||
export default function TimePanelBody(props) {
|
||||
var showHour = props.showHour,
|
||||
showMinute = props.showMinute,
|
||||
showSecond = props.showSecond,
|
||||
showMillisecond = props.showMillisecond,
|
||||
showMeridiem = props.use12Hours,
|
||||
changeOnScroll = props.changeOnScroll;
|
||||
var _usePanelContext = usePanelContext(),
|
||||
prefixCls = _usePanelContext.prefixCls,
|
||||
values = _usePanelContext.values,
|
||||
generateConfig = _usePanelContext.generateConfig,
|
||||
locale = _usePanelContext.locale,
|
||||
onSelect = _usePanelContext.onSelect,
|
||||
_usePanelContext$onHo = _usePanelContext.onHover,
|
||||
onHover = _usePanelContext$onHo === void 0 ? function () {} : _usePanelContext$onHo,
|
||||
pickerValue = _usePanelContext.pickerValue;
|
||||
var value = (values === null || values === void 0 ? void 0 : values[0]) || null;
|
||||
var _React$useContext = React.useContext(PickerHackContext),
|
||||
onCellDblClick = _React$useContext.onCellDblClick;
|
||||
|
||||
// ========================== Info ==========================
|
||||
var _useTimeInfo = useTimeInfo(generateConfig, props, value),
|
||||
_useTimeInfo2 = _slicedToArray(_useTimeInfo, 5),
|
||||
getValidTime = _useTimeInfo2[0],
|
||||
rowHourUnits = _useTimeInfo2[1],
|
||||
getMinuteUnits = _useTimeInfo2[2],
|
||||
getSecondUnits = _useTimeInfo2[3],
|
||||
getMillisecondUnits = _useTimeInfo2[4];
|
||||
|
||||
// ========================= Value ==========================
|
||||
// PickerValue will tell which one to align on the top
|
||||
var getUnitValue = function getUnitValue(func) {
|
||||
var valueUnitVal = value && generateConfig[func](value);
|
||||
var pickerUnitValue = pickerValue && generateConfig[func](pickerValue);
|
||||
return [valueUnitVal, pickerUnitValue];
|
||||
};
|
||||
var _getUnitValue = getUnitValue('getHour'),
|
||||
_getUnitValue2 = _slicedToArray(_getUnitValue, 2),
|
||||
hour = _getUnitValue2[0],
|
||||
pickerHour = _getUnitValue2[1];
|
||||
var _getUnitValue3 = getUnitValue('getMinute'),
|
||||
_getUnitValue4 = _slicedToArray(_getUnitValue3, 2),
|
||||
minute = _getUnitValue4[0],
|
||||
pickerMinute = _getUnitValue4[1];
|
||||
var _getUnitValue5 = getUnitValue('getSecond'),
|
||||
_getUnitValue6 = _slicedToArray(_getUnitValue5, 2),
|
||||
second = _getUnitValue6[0],
|
||||
pickerSecond = _getUnitValue6[1];
|
||||
var _getUnitValue7 = getUnitValue('getMillisecond'),
|
||||
_getUnitValue8 = _slicedToArray(_getUnitValue7, 2),
|
||||
millisecond = _getUnitValue8[0],
|
||||
pickerMillisecond = _getUnitValue8[1];
|
||||
var meridiem = hour === null ? null : isAM(hour) ? 'am' : 'pm';
|
||||
|
||||
// ========================= Column =========================
|
||||
// Hours
|
||||
var hourUnits = React.useMemo(function () {
|
||||
if (!showMeridiem) {
|
||||
return rowHourUnits;
|
||||
}
|
||||
return isAM(hour) ? rowHourUnits.filter(function (h) {
|
||||
return isAM(h.value);
|
||||
}) : rowHourUnits.filter(function (h) {
|
||||
return !isAM(h.value);
|
||||
});
|
||||
}, [hour, rowHourUnits, showMeridiem]);
|
||||
|
||||
// >>> Pick Fallback
|
||||
var getEnabled = function getEnabled(units, val) {
|
||||
var _enabledUnits$;
|
||||
var enabledUnits = units.filter(function (unit) {
|
||||
return !unit.disabled;
|
||||
});
|
||||
return val !== null && val !== void 0 ? val : // Fallback to enabled value
|
||||
enabledUnits === null || enabledUnits === void 0 || (_enabledUnits$ = enabledUnits[0]) === null || _enabledUnits$ === void 0 ? void 0 : _enabledUnits$.value;
|
||||
};
|
||||
|
||||
// >>> Minutes
|
||||
var validHour = getEnabled(rowHourUnits, hour);
|
||||
var minuteUnits = React.useMemo(function () {
|
||||
return getMinuteUnits(validHour);
|
||||
}, [getMinuteUnits, validHour]);
|
||||
|
||||
// >>> Seconds
|
||||
var validMinute = getEnabled(minuteUnits, minute);
|
||||
var secondUnits = React.useMemo(function () {
|
||||
return getSecondUnits(validHour, validMinute);
|
||||
}, [getSecondUnits, validHour, validMinute]);
|
||||
|
||||
// >>> Milliseconds
|
||||
var validSecond = getEnabled(secondUnits, second);
|
||||
var millisecondUnits = React.useMemo(function () {
|
||||
return getMillisecondUnits(validHour, validMinute, validSecond);
|
||||
}, [getMillisecondUnits, validHour, validMinute, validSecond]);
|
||||
var validMillisecond = getEnabled(millisecondUnits, millisecond);
|
||||
|
||||
// Meridiem
|
||||
var meridiemUnits = React.useMemo(function () {
|
||||
if (!showMeridiem) {
|
||||
return [];
|
||||
}
|
||||
var base = generateConfig.getNow();
|
||||
var amDate = generateConfig.setHour(base, 6);
|
||||
var pmDate = generateConfig.setHour(base, 18);
|
||||
var formatMeridiem = function formatMeridiem(date, defaultLabel) {
|
||||
var cellMeridiemFormat = locale.cellMeridiemFormat;
|
||||
return cellMeridiemFormat ? formatValue(date, {
|
||||
generateConfig: generateConfig,
|
||||
locale: locale,
|
||||
format: cellMeridiemFormat
|
||||
}) : defaultLabel;
|
||||
};
|
||||
return [{
|
||||
label: formatMeridiem(amDate, 'AM'),
|
||||
value: 'am',
|
||||
disabled: rowHourUnits.every(function (h) {
|
||||
return h.disabled || !isAM(h.value);
|
||||
})
|
||||
}, {
|
||||
label: formatMeridiem(pmDate, 'PM'),
|
||||
value: 'pm',
|
||||
disabled: rowHourUnits.every(function (h) {
|
||||
return h.disabled || isAM(h.value);
|
||||
})
|
||||
}];
|
||||
}, [rowHourUnits, showMeridiem, generateConfig, locale]);
|
||||
|
||||
// ========================= Change =========================
|
||||
/**
|
||||
* Check if time is validate or will match to validate one
|
||||
*/
|
||||
var triggerChange = function triggerChange(nextDate) {
|
||||
var validateDate = getValidTime(nextDate);
|
||||
onSelect(validateDate);
|
||||
};
|
||||
|
||||
// ========================= Column =========================
|
||||
// Create a template date for the trigger change event
|
||||
var triggerDateTmpl = React.useMemo(function () {
|
||||
var tmpl = value || pickerValue || generateConfig.getNow();
|
||||
var isNotNull = function isNotNull(num) {
|
||||
return num !== null && num !== undefined;
|
||||
};
|
||||
if (isNotNull(hour)) {
|
||||
tmpl = generateConfig.setHour(tmpl, hour);
|
||||
tmpl = generateConfig.setMinute(tmpl, minute);
|
||||
tmpl = generateConfig.setSecond(tmpl, second);
|
||||
tmpl = generateConfig.setMillisecond(tmpl, millisecond);
|
||||
} else if (isNotNull(pickerHour)) {
|
||||
tmpl = generateConfig.setHour(tmpl, pickerHour);
|
||||
tmpl = generateConfig.setMinute(tmpl, pickerMinute);
|
||||
tmpl = generateConfig.setSecond(tmpl, pickerSecond);
|
||||
tmpl = generateConfig.setMillisecond(tmpl, pickerMillisecond);
|
||||
} else if (isNotNull(validHour)) {
|
||||
tmpl = generateConfig.setHour(tmpl, validHour);
|
||||
tmpl = generateConfig.setMinute(tmpl, validMinute);
|
||||
tmpl = generateConfig.setSecond(tmpl, validSecond);
|
||||
tmpl = generateConfig.setMillisecond(tmpl, validMillisecond);
|
||||
}
|
||||
return tmpl;
|
||||
}, [value, pickerValue, hour, minute, second, millisecond, validHour, validMinute, validSecond, validMillisecond, pickerHour, pickerMinute, pickerSecond, pickerMillisecond, generateConfig]);
|
||||
|
||||
// ===================== Columns Change =====================
|
||||
var fillColumnValue = function fillColumnValue(val, func) {
|
||||
if (val === null) {
|
||||
return null;
|
||||
}
|
||||
return generateConfig[func](triggerDateTmpl, val);
|
||||
};
|
||||
var getNextHourTime = function getNextHourTime(val) {
|
||||
return fillColumnValue(val, 'setHour');
|
||||
};
|
||||
var getNextMinuteTime = function getNextMinuteTime(val) {
|
||||
return fillColumnValue(val, 'setMinute');
|
||||
};
|
||||
var getNextSecondTime = function getNextSecondTime(val) {
|
||||
return fillColumnValue(val, 'setSecond');
|
||||
};
|
||||
var getNextMillisecondTime = function getNextMillisecondTime(val) {
|
||||
return fillColumnValue(val, 'setMillisecond');
|
||||
};
|
||||
var getMeridiemTime = function getMeridiemTime(val) {
|
||||
if (val === null) {
|
||||
return null;
|
||||
}
|
||||
if (val === 'am' && !isAM(hour)) {
|
||||
return generateConfig.setHour(triggerDateTmpl, hour - 12);
|
||||
} else if (val === 'pm' && isAM(hour)) {
|
||||
return generateConfig.setHour(triggerDateTmpl, hour + 12);
|
||||
}
|
||||
return triggerDateTmpl;
|
||||
};
|
||||
var onHourChange = function onHourChange(val) {
|
||||
triggerChange(getNextHourTime(val));
|
||||
};
|
||||
var onMinuteChange = function onMinuteChange(val) {
|
||||
triggerChange(getNextMinuteTime(val));
|
||||
};
|
||||
var onSecondChange = function onSecondChange(val) {
|
||||
triggerChange(getNextSecondTime(val));
|
||||
};
|
||||
var onMillisecondChange = function onMillisecondChange(val) {
|
||||
triggerChange(getNextMillisecondTime(val));
|
||||
};
|
||||
var onMeridiemChange = function onMeridiemChange(val) {
|
||||
triggerChange(getMeridiemTime(val));
|
||||
};
|
||||
|
||||
// ====================== Column Hover ======================
|
||||
var onHourHover = function onHourHover(val) {
|
||||
onHover(getNextHourTime(val));
|
||||
};
|
||||
var onMinuteHover = function onMinuteHover(val) {
|
||||
onHover(getNextMinuteTime(val));
|
||||
};
|
||||
var onSecondHover = function onSecondHover(val) {
|
||||
onHover(getNextSecondTime(val));
|
||||
};
|
||||
var onMillisecondHover = function onMillisecondHover(val) {
|
||||
onHover(getNextMillisecondTime(val));
|
||||
};
|
||||
var onMeridiemHover = function onMeridiemHover(val) {
|
||||
onHover(getMeridiemTime(val));
|
||||
};
|
||||
|
||||
// ========================= Render =========================
|
||||
var sharedColumnProps = {
|
||||
onDblClick: onCellDblClick,
|
||||
changeOnScroll: changeOnScroll
|
||||
};
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
className: "".concat(prefixCls, "-content")
|
||||
}, showHour && /*#__PURE__*/React.createElement(TimeColumn, _extends({
|
||||
units: hourUnits,
|
||||
value: hour,
|
||||
optionalValue: pickerHour,
|
||||
type: "hour",
|
||||
onChange: onHourChange,
|
||||
onHover: onHourHover
|
||||
}, sharedColumnProps)), showMinute && /*#__PURE__*/React.createElement(TimeColumn, _extends({
|
||||
units: minuteUnits,
|
||||
value: minute,
|
||||
optionalValue: pickerMinute,
|
||||
type: "minute",
|
||||
onChange: onMinuteChange,
|
||||
onHover: onMinuteHover
|
||||
}, sharedColumnProps)), showSecond && /*#__PURE__*/React.createElement(TimeColumn, _extends({
|
||||
units: secondUnits,
|
||||
value: second,
|
||||
optionalValue: pickerSecond,
|
||||
type: "second",
|
||||
onChange: onSecondChange,
|
||||
onHover: onSecondHover
|
||||
}, sharedColumnProps)), showMillisecond && /*#__PURE__*/React.createElement(TimeColumn, _extends({
|
||||
units: millisecondUnits,
|
||||
value: millisecond,
|
||||
optionalValue: pickerMillisecond,
|
||||
type: "millisecond",
|
||||
onChange: onMillisecondChange,
|
||||
onHover: onMillisecondHover
|
||||
}, sharedColumnProps)), showMeridiem && /*#__PURE__*/React.createElement(TimeColumn, _extends({
|
||||
units: meridiemUnits,
|
||||
value: meridiem,
|
||||
type: "meridiem",
|
||||
onChange: onMeridiemChange,
|
||||
onHover: onMeridiemHover
|
||||
}, sharedColumnProps)));
|
||||
}
|
||||
2
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/useScrollTo.d.ts
generated
vendored
Normal file
2
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/useScrollTo.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import * as React from 'react';
|
||||
export default function useScrollTo(ulRef: React.RefObject<HTMLUListElement>, value: number | string): [syncScroll: VoidFunction, clearScroll: VoidFunction, isScrolling: () => boolean];
|
||||
72
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/useScrollTo.js
generated
vendored
Normal file
72
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/useScrollTo.js
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
import { useEvent } from 'rc-util';
|
||||
import raf from "rc-util/es/raf";
|
||||
import isVisible from "rc-util/es/Dom/isVisible";
|
||||
import * as React from 'react';
|
||||
var SPEED_PTG = 1 / 3;
|
||||
export default function useScrollTo(ulRef, value) {
|
||||
// ========================= Scroll =========================
|
||||
var scrollingRef = React.useRef(false);
|
||||
var scrollRafRef = React.useRef(null);
|
||||
var scrollDistRef = React.useRef(null);
|
||||
var isScrolling = function isScrolling() {
|
||||
return scrollingRef.current;
|
||||
};
|
||||
var stopScroll = function stopScroll() {
|
||||
raf.cancel(scrollRafRef.current);
|
||||
scrollingRef.current = false;
|
||||
};
|
||||
var scrollRafTimesRef = React.useRef();
|
||||
var startScroll = function startScroll() {
|
||||
var ul = ulRef.current;
|
||||
scrollDistRef.current = null;
|
||||
scrollRafTimesRef.current = 0;
|
||||
if (ul) {
|
||||
var targetLi = ul.querySelector("[data-value=\"".concat(value, "\"]"));
|
||||
var firstLi = ul.querySelector("li");
|
||||
var doScroll = function doScroll() {
|
||||
stopScroll();
|
||||
scrollingRef.current = true;
|
||||
scrollRafTimesRef.current += 1;
|
||||
var currentTop = ul.scrollTop;
|
||||
var firstLiTop = firstLi.offsetTop;
|
||||
var targetLiTop = targetLi.offsetTop;
|
||||
var targetTop = targetLiTop - firstLiTop;
|
||||
|
||||
// Wait for element exist. 5 frames is enough
|
||||
if (targetLiTop === 0 && targetLi !== firstLi || !isVisible(ul)) {
|
||||
if (scrollRafTimesRef.current <= 5) {
|
||||
scrollRafRef.current = raf(doScroll);
|
||||
}
|
||||
return;
|
||||
}
|
||||
var nextTop = currentTop + (targetTop - currentTop) * SPEED_PTG;
|
||||
var dist = Math.abs(targetTop - nextTop);
|
||||
|
||||
// Break if dist get larger, which means user is scrolling
|
||||
if (scrollDistRef.current !== null && scrollDistRef.current < dist) {
|
||||
stopScroll();
|
||||
return;
|
||||
}
|
||||
scrollDistRef.current = dist;
|
||||
|
||||
// Stop when dist is less than 1
|
||||
if (dist <= 1) {
|
||||
ul.scrollTop = targetTop;
|
||||
stopScroll();
|
||||
return;
|
||||
}
|
||||
|
||||
// IE not support `scrollTo`
|
||||
ul.scrollTop = nextTop;
|
||||
scrollRafRef.current = raf(doScroll);
|
||||
};
|
||||
if (targetLi && firstLi) {
|
||||
doScroll();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// ======================== Trigger =========================
|
||||
var syncScroll = useEvent(startScroll);
|
||||
return [syncScroll, stopScroll, isScrolling];
|
||||
}
|
||||
3
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/util.d.ts
generated
vendored
Normal file
3
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/util.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import type { GenerateConfig } from '../../../generate';
|
||||
import type { Unit } from './TimeColumn';
|
||||
export declare function findValidateTime<DateType>(date: DateType, getHourUnits: () => Unit<number>[], getMinuteUnits: (hour: number) => Unit<number>[], getSecondUnits: (hour: number, minute: number) => Unit<number>[], getMillisecondUnits: (hour: number, minute: number, second: number) => Unit<number>[], generateConfig: GenerateConfig<DateType>): DateType;
|
||||
38
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/util.js
generated
vendored
Normal file
38
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/TimePanelBody/util.js
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
||||
export function findValidateTime(date, getHourUnits, getMinuteUnits, getSecondUnits, getMillisecondUnits, generateConfig) {
|
||||
var nextDate = date;
|
||||
function alignValidate(getUnitValue, setUnitValue, units) {
|
||||
var nextValue = generateConfig[getUnitValue](nextDate);
|
||||
var nextUnit = units.find(function (unit) {
|
||||
return unit.value === nextValue;
|
||||
});
|
||||
if (!nextUnit || nextUnit.disabled) {
|
||||
// Find most closest unit
|
||||
var validateUnits = units.filter(function (unit) {
|
||||
return !unit.disabled;
|
||||
});
|
||||
var reverseEnabledUnits = _toConsumableArray(validateUnits).reverse();
|
||||
var validateUnit = reverseEnabledUnits.find(function (unit) {
|
||||
return unit.value <= nextValue;
|
||||
}) || validateUnits[0];
|
||||
if (validateUnit) {
|
||||
nextValue = validateUnit.value;
|
||||
nextDate = generateConfig[setUnitValue](nextDate, nextValue);
|
||||
}
|
||||
}
|
||||
return nextValue;
|
||||
}
|
||||
|
||||
// Find validate hour
|
||||
var nextHour = alignValidate('getHour', 'setHour', getHourUnits());
|
||||
|
||||
// Find validate minute
|
||||
var nextMinute = alignValidate('getMinute', 'setMinute', getMinuteUnits(nextHour));
|
||||
|
||||
// Find validate second
|
||||
var nextSecond = alignValidate('getSecond', 'setSecond', getSecondUnits(nextHour, nextMinute));
|
||||
|
||||
// Find validate millisecond
|
||||
alignValidate('getMillisecond', 'setMillisecond', getMillisecondUnits(nextHour, nextMinute, nextSecond));
|
||||
return nextDate;
|
||||
}
|
||||
4
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/index.d.ts
generated
vendored
Normal file
4
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps } from '../../interface';
|
||||
export type TimePanelProps<DateType extends object> = SharedPanelProps<DateType>;
|
||||
export default function TimePanel<DateType extends object = any>(props: TimePanelProps<DateType>): React.JSX.Element;
|
||||
33
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/index.js
generated
vendored
Normal file
33
frontend/node_modules/rc-picker/es/PickerPanel/TimePanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import * as React from 'react';
|
||||
import { formatValue } from "../../utils/dateUtil";
|
||||
import { PanelContext, useInfo } from "../context";
|
||||
import PanelHeader from "../PanelHeader";
|
||||
import TimePanelBody from "./TimePanelBody";
|
||||
export default function TimePanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
value = props.value,
|
||||
locale = props.locale,
|
||||
generateConfig = props.generateConfig,
|
||||
showTime = props.showTime;
|
||||
var _ref = showTime || {},
|
||||
format = _ref.format;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-time-panel");
|
||||
|
||||
// ========================== Base ==========================
|
||||
var _useInfo = useInfo(props, 'time'),
|
||||
_useInfo2 = _slicedToArray(_useInfo, 1),
|
||||
info = _useInfo2[0];
|
||||
|
||||
// ========================= Render =========================
|
||||
return /*#__PURE__*/React.createElement(PanelContext.Provider, {
|
||||
value: info
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: classNames(panelPrefixCls)
|
||||
}, /*#__PURE__*/React.createElement(PanelHeader, null, value ? formatValue(value, {
|
||||
locale: locale,
|
||||
format: format,
|
||||
generateConfig: generateConfig
|
||||
}) : "\xA0"), /*#__PURE__*/React.createElement(TimePanelBody, showTime)));
|
||||
}
|
||||
3
frontend/node_modules/rc-picker/es/PickerPanel/WeekPanel/index.d.ts
generated
vendored
Normal file
3
frontend/node_modules/rc-picker/es/PickerPanel/WeekPanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps } from '../../interface';
|
||||
export default function WeekPanel<DateType extends object = any>(props: SharedPanelProps<DateType>): React.JSX.Element;
|
||||
47
frontend/node_modules/rc-picker/es/PickerPanel/WeekPanel/index.js
generated
vendored
Normal file
47
frontend/node_modules/rc-picker/es/PickerPanel/WeekPanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import * as React from 'react';
|
||||
import { isInRange, isSameWeek } from "../../utils/dateUtil";
|
||||
import DatePanel from "../DatePanel";
|
||||
export default function WeekPanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
generateConfig = props.generateConfig,
|
||||
locale = props.locale,
|
||||
value = props.value,
|
||||
hoverValue = props.hoverValue,
|
||||
hoverRangeValue = props.hoverRangeValue;
|
||||
|
||||
// =============================== Row ================================
|
||||
var localeName = locale.locale;
|
||||
var rowPrefixCls = "".concat(prefixCls, "-week-panel-row");
|
||||
var rowClassName = function rowClassName(currentDate) {
|
||||
var rangeCls = {};
|
||||
if (hoverRangeValue) {
|
||||
var _hoverRangeValue = _slicedToArray(hoverRangeValue, 2),
|
||||
rangeStart = _hoverRangeValue[0],
|
||||
rangeEnd = _hoverRangeValue[1];
|
||||
var isRangeStart = isSameWeek(generateConfig, localeName, rangeStart, currentDate);
|
||||
var isRangeEnd = isSameWeek(generateConfig, localeName, rangeEnd, currentDate);
|
||||
rangeCls["".concat(rowPrefixCls, "-range-start")] = isRangeStart;
|
||||
rangeCls["".concat(rowPrefixCls, "-range-end")] = isRangeEnd;
|
||||
rangeCls["".concat(rowPrefixCls, "-range-hover")] = !isRangeStart && !isRangeEnd && isInRange(generateConfig, rangeStart, rangeEnd, currentDate);
|
||||
}
|
||||
if (hoverValue) {
|
||||
rangeCls["".concat(rowPrefixCls, "-hover")] = hoverValue.some(function (date) {
|
||||
return isSameWeek(generateConfig, localeName, currentDate, date);
|
||||
});
|
||||
}
|
||||
return classNames(rowPrefixCls, _defineProperty({}, "".concat(rowPrefixCls, "-selected"), !hoverRangeValue && isSameWeek(generateConfig, localeName, value, currentDate)),
|
||||
// Patch for hover range
|
||||
rangeCls);
|
||||
};
|
||||
|
||||
// ============================== Render ==============================
|
||||
return /*#__PURE__*/React.createElement(DatePanel, _extends({}, props, {
|
||||
mode: "week",
|
||||
panelName: "week",
|
||||
rowClassName: rowClassName
|
||||
}));
|
||||
}
|
||||
3
frontend/node_modules/rc-picker/es/PickerPanel/YearPanel/index.d.ts
generated
vendored
Normal file
3
frontend/node_modules/rc-picker/es/PickerPanel/YearPanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import type { SharedPanelProps } from '../../interface';
|
||||
export default function YearPanel<DateType extends object = any>(props: SharedPanelProps<DateType>): React.JSX.Element;
|
||||
108
frontend/node_modules/rc-picker/es/PickerPanel/YearPanel/index.js
generated
vendored
Normal file
108
frontend/node_modules/rc-picker/es/PickerPanel/YearPanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,108 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import * as React from 'react';
|
||||
import { formatValue, isInRange, isSameYear } from "../../utils/dateUtil";
|
||||
import { PanelContext, useInfo } from "../context";
|
||||
import PanelBody from "../PanelBody";
|
||||
import PanelHeader from "../PanelHeader";
|
||||
export default function YearPanel(props) {
|
||||
var prefixCls = props.prefixCls,
|
||||
locale = props.locale,
|
||||
generateConfig = props.generateConfig,
|
||||
pickerValue = props.pickerValue,
|
||||
disabledDate = props.disabledDate,
|
||||
onPickerValueChange = props.onPickerValueChange,
|
||||
onModeChange = props.onModeChange;
|
||||
var panelPrefixCls = "".concat(prefixCls, "-year-panel");
|
||||
|
||||
// ========================== Base ==========================
|
||||
var _useInfo = useInfo(props, 'year'),
|
||||
_useInfo2 = _slicedToArray(_useInfo, 1),
|
||||
info = _useInfo2[0];
|
||||
var getStartYear = function getStartYear(date) {
|
||||
var startYear = Math.floor(generateConfig.getYear(date) / 10) * 10;
|
||||
return generateConfig.setYear(date, startYear);
|
||||
};
|
||||
var getEndYear = function getEndYear(date) {
|
||||
var startYear = getStartYear(date);
|
||||
return generateConfig.addYear(startYear, 9);
|
||||
};
|
||||
var startYearDate = getStartYear(pickerValue);
|
||||
var endYearDate = getEndYear(pickerValue);
|
||||
var baseDate = generateConfig.addYear(startYearDate, -1);
|
||||
|
||||
// ========================= Cells ==========================
|
||||
var getCellDate = function getCellDate(date, offset) {
|
||||
return generateConfig.addYear(date, offset);
|
||||
};
|
||||
var getCellText = function getCellText(date) {
|
||||
return formatValue(date, {
|
||||
locale: locale,
|
||||
format: locale.cellYearFormat,
|
||||
generateConfig: generateConfig
|
||||
});
|
||||
};
|
||||
var getCellClassName = function getCellClassName(date) {
|
||||
return _defineProperty({}, "".concat(prefixCls, "-cell-in-view"), isSameYear(generateConfig, date, startYearDate) || isSameYear(generateConfig, date, endYearDate) || isInRange(generateConfig, startYearDate, endYearDate, date));
|
||||
};
|
||||
|
||||
// ======================== Disabled ========================
|
||||
var mergedDisabledDate = disabledDate ? function (currentDate, disabledInfo) {
|
||||
// Start
|
||||
var startMonth = generateConfig.setMonth(currentDate, 0);
|
||||
var startDate = generateConfig.setDate(startMonth, 1);
|
||||
|
||||
// End
|
||||
var endMonth = generateConfig.addYear(startDate, 1);
|
||||
var endDate = generateConfig.addDate(endMonth, -1);
|
||||
return disabledDate(startDate, disabledInfo) && disabledDate(endDate, disabledInfo);
|
||||
} : null;
|
||||
|
||||
// ========================= Header =========================
|
||||
var yearNode = /*#__PURE__*/React.createElement("button", {
|
||||
type: "button",
|
||||
key: "decade",
|
||||
"aria-label": locale.decadeSelect,
|
||||
onClick: function onClick() {
|
||||
onModeChange('decade');
|
||||
},
|
||||
tabIndex: -1,
|
||||
className: "".concat(prefixCls, "-decade-btn")
|
||||
}, formatValue(startYearDate, {
|
||||
locale: locale,
|
||||
format: locale.yearFormat,
|
||||
generateConfig: generateConfig
|
||||
}), "-", formatValue(endYearDate, {
|
||||
locale: locale,
|
||||
format: locale.yearFormat,
|
||||
generateConfig: generateConfig
|
||||
}));
|
||||
|
||||
// ========================= Render =========================
|
||||
return /*#__PURE__*/React.createElement(PanelContext.Provider, {
|
||||
value: info
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: panelPrefixCls
|
||||
}, /*#__PURE__*/React.createElement(PanelHeader, {
|
||||
superOffset: function superOffset(distance) {
|
||||
return generateConfig.addYear(pickerValue, distance * 10);
|
||||
},
|
||||
onChange: onPickerValueChange
|
||||
// Limitation
|
||||
,
|
||||
getStart: getStartYear,
|
||||
getEnd: getEndYear
|
||||
}, yearNode), /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {
|
||||
disabledDate: mergedDisabledDate,
|
||||
titleFormat: locale.fieldYearFormat,
|
||||
colNum: 3,
|
||||
rowNum: 4,
|
||||
baseDate: baseDate
|
||||
// Body
|
||||
,
|
||||
getCellDate: getCellDate,
|
||||
getCellText: getCellText,
|
||||
getCellClassName: getCellClassName
|
||||
}))));
|
||||
}
|
||||
24
frontend/node_modules/rc-picker/es/PickerPanel/context.d.ts
generated
vendored
Normal file
24
frontend/node_modules/rc-picker/es/PickerPanel/context.d.ts
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
import * as React from 'react';
|
||||
import type { PanelMode, SharedPanelProps } from '../interface';
|
||||
export interface PanelContextProps<DateType extends object = any> extends Pick<SharedPanelProps<DateType>, 'prefixCls' | 'cellRender' | 'generateConfig' | 'locale' | 'onSelect' | 'hoverValue' | 'hoverRangeValue' | 'onHover' | 'values' | 'pickerValue' | 'disabledDate' | 'minDate' | 'maxDate' | 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'> {
|
||||
/** Tell current panel type */
|
||||
panelType: PanelMode;
|
||||
now: DateType;
|
||||
}
|
||||
/** Used for each single Panel. e.g. DatePanel */
|
||||
export declare const PanelContext: React.Context<PanelContextProps<any>>;
|
||||
export declare function usePanelContext<DateType extends object = any>(): PanelContextProps<DateType>;
|
||||
/**
|
||||
* Get shared props for the SharedPanelProps interface.
|
||||
*/
|
||||
export declare function useInfo<DateType extends object = any>(props: SharedPanelProps<DateType>, panelType: PanelMode): [sharedProps: PanelContextProps<DateType>, now: DateType];
|
||||
export interface PickerHackContextProps {
|
||||
hidePrev?: boolean;
|
||||
hideNext?: boolean;
|
||||
hideHeader?: boolean;
|
||||
onCellDblClick?: () => void;
|
||||
}
|
||||
/**
|
||||
* Internal usage for RangePicker to not to show the operation arrow
|
||||
*/
|
||||
export declare const PickerHackContext: React.Context<PickerHackContextProps>;
|
||||
67
frontend/node_modules/rc-picker/es/PickerPanel/context.js
generated
vendored
Normal file
67
frontend/node_modules/rc-picker/es/PickerPanel/context.js
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
import * as React from 'react';
|
||||
/** Used for each single Panel. e.g. DatePanel */
|
||||
export var PanelContext = /*#__PURE__*/React.createContext(null);
|
||||
export function usePanelContext() {
|
||||
return React.useContext(PanelContext);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get shared props for the SharedPanelProps interface.
|
||||
*/
|
||||
export function useInfo(props, panelType) {
|
||||
var prefixCls = props.prefixCls,
|
||||
generateConfig = props.generateConfig,
|
||||
locale = props.locale,
|
||||
disabledDate = props.disabledDate,
|
||||
minDate = props.minDate,
|
||||
maxDate = props.maxDate,
|
||||
cellRender = props.cellRender,
|
||||
hoverValue = props.hoverValue,
|
||||
hoverRangeValue = props.hoverRangeValue,
|
||||
onHover = props.onHover,
|
||||
values = props.values,
|
||||
pickerValue = props.pickerValue,
|
||||
onSelect = props.onSelect,
|
||||
prevIcon = props.prevIcon,
|
||||
nextIcon = props.nextIcon,
|
||||
superPrevIcon = props.superPrevIcon,
|
||||
superNextIcon = props.superNextIcon;
|
||||
|
||||
// ========================= MISC =========================
|
||||
var now = generateConfig.getNow();
|
||||
|
||||
// ========================= Info =========================
|
||||
var info = {
|
||||
now: now,
|
||||
values: values,
|
||||
pickerValue: pickerValue,
|
||||
prefixCls: prefixCls,
|
||||
disabledDate: disabledDate,
|
||||
minDate: minDate,
|
||||
maxDate: maxDate,
|
||||
cellRender: cellRender,
|
||||
hoverValue: hoverValue,
|
||||
hoverRangeValue: hoverRangeValue,
|
||||
onHover: onHover,
|
||||
locale: locale,
|
||||
generateConfig: generateConfig,
|
||||
onSelect: onSelect,
|
||||
panelType: panelType,
|
||||
// Icons
|
||||
prevIcon: prevIcon,
|
||||
nextIcon: nextIcon,
|
||||
superPrevIcon: superPrevIcon,
|
||||
superNextIcon: superNextIcon
|
||||
};
|
||||
return [info, now];
|
||||
}
|
||||
|
||||
// ============================== Internal ==============================
|
||||
|
||||
/**
|
||||
* Internal usage for RangePicker to not to show the operation arrow
|
||||
*/
|
||||
export var PickerHackContext = /*#__PURE__*/React.createContext({});
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
PickerHackContext.displayName = 'PickerHackContext';
|
||||
}
|
||||
60
frontend/node_modules/rc-picker/es/PickerPanel/index.d.ts
generated
vendored
Normal file
60
frontend/node_modules/rc-picker/es/PickerPanel/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
import * as React from 'react';
|
||||
import type { CellRender, Components, Locale, OnPanelChange, PanelMode, PickerMode, SharedPanelProps, SharedTimeProps } from '../interface';
|
||||
export interface PickerPanelRef {
|
||||
nativeElement: HTMLDivElement;
|
||||
}
|
||||
export interface BasePickerPanelProps<DateType extends object = any> extends Pick<SharedPanelProps<DateType>, 'locale' | 'generateConfig' | 'disabledDate' | 'minDate' | 'maxDate' | 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'>, SharedTimeProps<DateType>, Pick<React.HTMLAttributes<HTMLDivElement>, 'tabIndex'> {
|
||||
prefixCls?: string;
|
||||
direction?: 'ltr' | 'rtl';
|
||||
onSelect?: (date: DateType) => void;
|
||||
defaultPickerValue?: DateType | null;
|
||||
pickerValue?: DateType | null;
|
||||
onPickerValueChange?: (date: DateType) => void;
|
||||
mode?: PanelMode;
|
||||
/**
|
||||
* Compatible with origin API.
|
||||
* Not mean the PickerPanel `onChange` event.
|
||||
*/
|
||||
onPanelChange?: OnPanelChange<DateType>;
|
||||
picker?: PickerMode;
|
||||
showTime?: true | SharedTimeProps<DateType>;
|
||||
/**
|
||||
* Only worked in `date` mode. Show the current week
|
||||
*/
|
||||
showWeek?: boolean;
|
||||
cellRender?: CellRender<DateType>;
|
||||
/** @deprecated use cellRender instead of dateRender */
|
||||
dateRender?: (currentDate: DateType, today: DateType) => React.ReactNode;
|
||||
/** @deprecated use cellRender instead of monthCellRender */
|
||||
monthCellRender?: (currentDate: DateType, locale: Locale) => React.ReactNode;
|
||||
/** @private Used for Picker passing */
|
||||
hoverValue?: DateType[];
|
||||
/** @private Used for Picker passing */
|
||||
hoverRangeValue?: [start: DateType, end: DateType];
|
||||
/** @private Used for Picker passing */
|
||||
onHover?: (date: DateType) => void;
|
||||
components?: Components;
|
||||
/** @private This is internal usage. Do not use in your production env */
|
||||
hideHeader?: boolean;
|
||||
}
|
||||
export interface SinglePickerPanelProps<DateType extends object = any> extends BasePickerPanelProps<DateType> {
|
||||
multiple?: false;
|
||||
defaultValue?: DateType | null;
|
||||
value?: DateType | null;
|
||||
onChange?: (date: DateType) => void;
|
||||
}
|
||||
export type PickerPanelProps<DateType extends object = any> = BasePickerPanelProps<DateType> & {
|
||||
/** multiple selection. Not support time or datetime picker */
|
||||
multiple?: boolean;
|
||||
defaultValue?: DateType | DateType[] | null;
|
||||
value?: DateType | DateType[] | null;
|
||||
onChange?: (date: DateType | DateType[]) => void;
|
||||
};
|
||||
declare const _default: <DateType extends object = any>(props: BasePickerPanelProps<DateType> & {
|
||||
/** multiple selection. Not support time or datetime picker */
|
||||
multiple?: boolean;
|
||||
defaultValue?: DateType | DateType[];
|
||||
value?: DateType | DateType[];
|
||||
onChange?: (date: DateType | DateType[]) => void;
|
||||
} & React.RefAttributes<PickerPanelRef>) => React.ReactElement;
|
||||
export default _default;
|
||||
303
frontend/node_modules/rc-picker/es/PickerPanel/index.js
generated
vendored
Normal file
303
frontend/node_modules/rc-picker/es/PickerPanel/index.js
generated
vendored
Normal file
@@ -0,0 +1,303 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||||
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
||||
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import { useEvent, useMergedState, warning } from 'rc-util';
|
||||
import * as React from 'react';
|
||||
import useLocale from "../hooks/useLocale";
|
||||
import { fillShowTimeConfig, getTimeProps } from "../hooks/useTimeConfig";
|
||||
import useToggleDates from "../hooks/useToggleDates";
|
||||
import PickerContext from "../PickerInput/context";
|
||||
import useCellRender from "../PickerInput/hooks/useCellRender";
|
||||
import { isSame } from "../utils/dateUtil";
|
||||
import { pickProps, toArray } from "../utils/miscUtil";
|
||||
import { PickerHackContext } from "./context";
|
||||
import DatePanel from "./DatePanel";
|
||||
import DateTimePanel from "./DateTimePanel";
|
||||
import DecadePanel from "./DecadePanel";
|
||||
import MonthPanel from "./MonthPanel";
|
||||
import QuarterPanel from "./QuarterPanel";
|
||||
import TimePanel from "./TimePanel";
|
||||
import WeekPanel from "./WeekPanel";
|
||||
import YearPanel from "./YearPanel";
|
||||
var DefaultComponents = {
|
||||
date: DatePanel,
|
||||
datetime: DateTimePanel,
|
||||
week: WeekPanel,
|
||||
month: MonthPanel,
|
||||
quarter: QuarterPanel,
|
||||
year: YearPanel,
|
||||
decade: DecadePanel,
|
||||
time: TimePanel
|
||||
};
|
||||
function PickerPanel(props, ref) {
|
||||
var _React$useContext;
|
||||
var locale = props.locale,
|
||||
generateConfig = props.generateConfig,
|
||||
direction = props.direction,
|
||||
prefixCls = props.prefixCls,
|
||||
_props$tabIndex = props.tabIndex,
|
||||
tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,
|
||||
multiple = props.multiple,
|
||||
defaultValue = props.defaultValue,
|
||||
value = props.value,
|
||||
onChange = props.onChange,
|
||||
onSelect = props.onSelect,
|
||||
defaultPickerValue = props.defaultPickerValue,
|
||||
pickerValue = props.pickerValue,
|
||||
onPickerValueChange = props.onPickerValueChange,
|
||||
mode = props.mode,
|
||||
onPanelChange = props.onPanelChange,
|
||||
_props$picker = props.picker,
|
||||
picker = _props$picker === void 0 ? 'date' : _props$picker,
|
||||
showTime = props.showTime,
|
||||
hoverValue = props.hoverValue,
|
||||
hoverRangeValue = props.hoverRangeValue,
|
||||
cellRender = props.cellRender,
|
||||
dateRender = props.dateRender,
|
||||
monthCellRender = props.monthCellRender,
|
||||
_props$components = props.components,
|
||||
components = _props$components === void 0 ? {} : _props$components,
|
||||
hideHeader = props.hideHeader;
|
||||
var mergedPrefixCls = ((_React$useContext = React.useContext(PickerContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.prefixCls) || prefixCls || 'rc-picker';
|
||||
|
||||
// ========================== Refs ==========================
|
||||
var rootRef = React.useRef();
|
||||
React.useImperativeHandle(ref, function () {
|
||||
return {
|
||||
nativeElement: rootRef.current
|
||||
};
|
||||
});
|
||||
|
||||
// ========================== Time ==========================
|
||||
// Auto `format` need to check `showTime.showXXX` first.
|
||||
// And then merge the `locale` into `mergedShowTime`.
|
||||
var _getTimeProps = getTimeProps(props),
|
||||
_getTimeProps2 = _slicedToArray(_getTimeProps, 4),
|
||||
timeProps = _getTimeProps2[0],
|
||||
localeTimeProps = _getTimeProps2[1],
|
||||
showTimeFormat = _getTimeProps2[2],
|
||||
propFormat = _getTimeProps2[3];
|
||||
|
||||
// ========================= Locale =========================
|
||||
var filledLocale = useLocale(locale, localeTimeProps);
|
||||
|
||||
// ========================= Picker =========================
|
||||
var internalPicker = picker === 'date' && showTime ? 'datetime' : picker;
|
||||
|
||||
// ======================== ShowTime ========================
|
||||
var mergedShowTime = React.useMemo(function () {
|
||||
return fillShowTimeConfig(internalPicker, showTimeFormat, propFormat, timeProps, filledLocale);
|
||||
}, [internalPicker, showTimeFormat, propFormat, timeProps, filledLocale]);
|
||||
|
||||
// ========================== Now ===========================
|
||||
var now = generateConfig.getNow();
|
||||
|
||||
// ========================== Mode ==========================
|
||||
var _useMergedState = useMergedState(picker, {
|
||||
value: mode,
|
||||
postState: function postState(val) {
|
||||
return val || 'date';
|
||||
}
|
||||
}),
|
||||
_useMergedState2 = _slicedToArray(_useMergedState, 2),
|
||||
mergedMode = _useMergedState2[0],
|
||||
setMergedMode = _useMergedState2[1];
|
||||
var internalMode = mergedMode === 'date' && mergedShowTime ? 'datetime' : mergedMode;
|
||||
|
||||
// ========================= Toggle =========================
|
||||
var toggleDates = useToggleDates(generateConfig, locale, internalPicker);
|
||||
|
||||
// ========================= Value ==========================
|
||||
// >>> Real value
|
||||
// Interactive with `onChange` event which only trigger when the `mode` is `picker`
|
||||
var _useMergedState3 = useMergedState(defaultValue, {
|
||||
value: value
|
||||
}),
|
||||
_useMergedState4 = _slicedToArray(_useMergedState3, 2),
|
||||
innerValue = _useMergedState4[0],
|
||||
setMergedValue = _useMergedState4[1];
|
||||
var mergedValue = React.useMemo(function () {
|
||||
// Clean up `[null]`
|
||||
var values = toArray(innerValue).filter(function (val) {
|
||||
return val;
|
||||
});
|
||||
return multiple ? values : values.slice(0, 1);
|
||||
}, [innerValue, multiple]);
|
||||
|
||||
// Sync value and only trigger onChange event when changed
|
||||
var triggerChange = useEvent(function (nextValue) {
|
||||
setMergedValue(nextValue);
|
||||
if (onChange && (nextValue === null || mergedValue.length !== nextValue.length || mergedValue.some(function (ori, index) {
|
||||
return !isSame(generateConfig, locale, ori, nextValue[index], internalPicker);
|
||||
}))) {
|
||||
onChange === null || onChange === void 0 || onChange(multiple ? nextValue : nextValue[0]);
|
||||
}
|
||||
});
|
||||
|
||||
// >>> CalendarValue
|
||||
// CalendarValue is a temp value for user operation
|
||||
// which will only trigger `onCalendarChange` but not `onChange`
|
||||
var onInternalSelect = useEvent(function (newDate) {
|
||||
onSelect === null || onSelect === void 0 || onSelect(newDate);
|
||||
if (mergedMode === picker) {
|
||||
var nextValues = multiple ? toggleDates(mergedValue, newDate) : [newDate];
|
||||
triggerChange(nextValues);
|
||||
}
|
||||
});
|
||||
|
||||
// >>> PickerValue
|
||||
// PickerValue is used to control the current displaying panel
|
||||
var _useMergedState5 = useMergedState(defaultPickerValue || mergedValue[0] || now, {
|
||||
value: pickerValue
|
||||
}),
|
||||
_useMergedState6 = _slicedToArray(_useMergedState5, 2),
|
||||
mergedPickerValue = _useMergedState6[0],
|
||||
setInternalPickerValue = _useMergedState6[1];
|
||||
React.useEffect(function () {
|
||||
if (mergedValue[0] && !pickerValue) {
|
||||
setInternalPickerValue(mergedValue[0]);
|
||||
}
|
||||
}, [mergedValue[0]]);
|
||||
|
||||
// Both trigger when manually pickerValue or mode change
|
||||
var triggerPanelChange = function triggerPanelChange(viewDate, nextMode) {
|
||||
onPanelChange === null || onPanelChange === void 0 || onPanelChange(viewDate || pickerValue, nextMode || mergedMode);
|
||||
};
|
||||
var setPickerValue = function setPickerValue(nextPickerValue) {
|
||||
var triggerPanelEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
||||
setInternalPickerValue(nextPickerValue);
|
||||
onPickerValueChange === null || onPickerValueChange === void 0 || onPickerValueChange(nextPickerValue);
|
||||
if (triggerPanelEvent) {
|
||||
triggerPanelChange(nextPickerValue);
|
||||
}
|
||||
};
|
||||
var triggerModeChange = function triggerModeChange(nextMode, viewDate) {
|
||||
setMergedMode(nextMode);
|
||||
if (viewDate) {
|
||||
setPickerValue(viewDate);
|
||||
}
|
||||
triggerPanelChange(viewDate, nextMode);
|
||||
};
|
||||
var onPanelValueSelect = function onPanelValueSelect(nextValue) {
|
||||
onInternalSelect(nextValue);
|
||||
setPickerValue(nextValue);
|
||||
|
||||
// Update mode if needed
|
||||
if (mergedMode !== picker) {
|
||||
var decadeYearQueue = ['decade', 'year'];
|
||||
var decadeYearMonthQueue = [].concat(decadeYearQueue, ['month']);
|
||||
var pickerQueue = {
|
||||
quarter: [].concat(decadeYearQueue, ['quarter']),
|
||||
week: [].concat(_toConsumableArray(decadeYearMonthQueue), ['week']),
|
||||
date: [].concat(_toConsumableArray(decadeYearMonthQueue), ['date'])
|
||||
};
|
||||
var queue = pickerQueue[picker] || decadeYearMonthQueue;
|
||||
var index = queue.indexOf(mergedMode);
|
||||
var nextMode = queue[index + 1];
|
||||
if (nextMode) {
|
||||
triggerModeChange(nextMode, nextValue);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// ======================= Hover Date =======================
|
||||
var hoverRangeDate = React.useMemo(function () {
|
||||
var start;
|
||||
var end;
|
||||
if (Array.isArray(hoverRangeValue)) {
|
||||
var _hoverRangeValue = _slicedToArray(hoverRangeValue, 2);
|
||||
start = _hoverRangeValue[0];
|
||||
end = _hoverRangeValue[1];
|
||||
} else {
|
||||
start = hoverRangeValue;
|
||||
}
|
||||
|
||||
// Return for not exist
|
||||
if (!start && !end) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Fill if has empty
|
||||
start = start || end;
|
||||
end = end || start;
|
||||
return generateConfig.isAfter(start, end) ? [end, start] : [start, end];
|
||||
}, [hoverRangeValue, generateConfig]);
|
||||
|
||||
// ======================= Components =======================
|
||||
// >>> cellRender
|
||||
var onInternalCellRender = useCellRender(cellRender, dateRender, monthCellRender);
|
||||
|
||||
// ======================= Components =======================
|
||||
var PanelComponent = components[internalMode] || DefaultComponents[internalMode] || DatePanel;
|
||||
|
||||
// ======================== Context =========================
|
||||
var parentHackContext = React.useContext(PickerHackContext);
|
||||
var pickerPanelContext = React.useMemo(function () {
|
||||
return _objectSpread(_objectSpread({}, parentHackContext), {}, {
|
||||
hideHeader: hideHeader
|
||||
});
|
||||
}, [parentHackContext, hideHeader]);
|
||||
|
||||
// ======================== Warnings ========================
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
warning(!mergedValue || mergedValue.every(function (val) {
|
||||
return generateConfig.isValidate(val);
|
||||
}), 'Invalidate date pass to `value` or `defaultValue`.');
|
||||
}
|
||||
|
||||
// ========================= Render =========================
|
||||
var panelCls = "".concat(mergedPrefixCls, "-panel");
|
||||
var panelProps = pickProps(props, [
|
||||
// Week
|
||||
'showWeek',
|
||||
// Icons
|
||||
'prevIcon', 'nextIcon', 'superPrevIcon', 'superNextIcon',
|
||||
// Disabled
|
||||
'disabledDate', 'minDate', 'maxDate',
|
||||
// Hover
|
||||
'onHover']);
|
||||
return /*#__PURE__*/React.createElement(PickerHackContext.Provider, {
|
||||
value: pickerPanelContext
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
ref: rootRef,
|
||||
tabIndex: tabIndex,
|
||||
className: classNames(panelCls, _defineProperty({}, "".concat(panelCls, "-rtl"), direction === 'rtl'))
|
||||
}, /*#__PURE__*/React.createElement(PanelComponent, _extends({}, panelProps, {
|
||||
// Time
|
||||
showTime: mergedShowTime
|
||||
// MISC
|
||||
,
|
||||
prefixCls: mergedPrefixCls,
|
||||
locale: filledLocale,
|
||||
generateConfig: generateConfig
|
||||
// Mode
|
||||
,
|
||||
onModeChange: triggerModeChange
|
||||
// Value
|
||||
,
|
||||
pickerValue: mergedPickerValue,
|
||||
onPickerValueChange: function onPickerValueChange(nextPickerValue) {
|
||||
setPickerValue(nextPickerValue, true);
|
||||
},
|
||||
value: mergedValue[0],
|
||||
onSelect: onPanelValueSelect,
|
||||
values: mergedValue
|
||||
// Render
|
||||
,
|
||||
cellRender: onInternalCellRender
|
||||
// Hover
|
||||
,
|
||||
hoverRangeValue: hoverRangeDate,
|
||||
hoverValue: hoverValue
|
||||
}))));
|
||||
}
|
||||
var RefPanelPicker = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(PickerPanel));
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
RefPanelPicker.displayName = 'PanelPicker';
|
||||
}
|
||||
|
||||
// Make support generic
|
||||
export default RefPanelPicker;
|
||||
Reference in New Issue
Block a user