add all frontend files

This commit is contained in:
2026-01-17 15:16:36 -05:00
parent ff16ae7858
commit e40287e4aa
25704 changed files with 1935289 additions and 0 deletions

View 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;

View File

@@ -0,0 +1,190 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = DatePanel;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classnames = _interopRequireDefault(require("classnames"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../../utils/dateUtil");
var _context = require("../context");
var _PanelBody = _interopRequireDefault(require("../PanelBody"));
var _PanelHeader = _interopRequireDefault(require("../PanelHeader"));
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 = (0, _context.useInfo)(props, mode),
_useInfo2 = (0, _slicedToArray2.default)(_useInfo, 2),
info = _useInfo2[0],
now = _useInfo2[1];
var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);
var monthStartDate = generateConfig.setDate(pickerValue, 1);
var baseDate = (0, _dateUtil.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: (0, _classnames.default)(cellPrefixCls, "".concat(cellPrefixCls, "-week"), (0, _defineProperty2.default)({}, "".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 < _dateUtil.WEEK_DAY_COUNT; i += 1) {
headerCells.push( /*#__PURE__*/React.createElement("th", {
key: i
}, weekDaysLocale[(i + weekFirstDay) % _dateUtil.WEEK_DAY_COUNT]));
}
// >>> Body Cells
var getCellDate = function getCellDate(date, offset) {
return generateConfig.addDate(date, offset);
};
var getCellText = function getCellText(date) {
return (0, _dateUtil.formatValue)(date, {
locale: locale,
format: locale.cellDateFormat,
generateConfig: generateConfig
});
};
var getCellClassName = function getCellClassName(date) {
var classObj = (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(prefixCls, "-cell-in-view"), (0, _dateUtil.isSameMonth)(generateConfig, date, pickerValue)), "".concat(prefixCls, "-cell-today"), (0, _dateUtil.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")
}, (0, _dateUtil.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 ? (0, _dateUtil.formatValue)(pickerValue, {
locale: locale,
format: locale.monthFormat,
generateConfig: generateConfig
}) : monthsLocale[month]);
var monthYearNodes = locale.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode];
// ========================= Render =========================
return /*#__PURE__*/React.createElement(_context.PanelContext.Provider, {
value: info
}, /*#__PURE__*/React.createElement("div", {
className: (0, _classnames.default)(panelPrefixCls, showWeek && "".concat(panelPrefixCls, "-show-week"))
}, /*#__PURE__*/React.createElement(_PanelHeader.default, {
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.default, (0, _extends2.default)({
titleFormat: locale.fieldDateFormat
}, props, {
colNum: _dateUtil.WEEK_DAY_COUNT,
rowNum: 6,
baseDate: baseDate
// Header
,
headerCells: headerCells
// Body
,
getCellDate: getCellDate,
getCellText: getCellText,
getCellClassName: getCellClassName,
prefixColumn: prefixColumn,
cellSelection: !isWeek
}))));
}

View 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;

View File

@@ -0,0 +1,58 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = DateTimePanel;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _useTimeInfo3 = _interopRequireDefault(require("../../hooks/useTimeInfo"));
var _dateUtil = require("../../utils/dateUtil");
var _DatePanel = _interopRequireDefault(require("../DatePanel"));
var _TimePanel = _interopRequireDefault(require("../TimePanel"));
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 = (0, _useTimeInfo3.default)(generateConfig, showTime),
_useTimeInfo2 = (0, _slicedToArray2.default)(_useTimeInfo, 1),
getValidTime = _useTimeInfo2[0];
// Merge the time info from `value` or `pickerValue`
var mergeTime = function mergeTime(date) {
if (value) {
return (0, _dateUtil.fillTime)(generateConfig, date, value);
}
return (0, _dateUtil.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.default, (0, _extends2.default)({}, props, {
onSelect: onDateSelect,
onHover: onDateHover
})), /*#__PURE__*/React.createElement(_TimePanel.default, props));
}

View 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;

View File

@@ -0,0 +1,113 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = DecadePanel;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../../utils/dateUtil");
var _context = require("../context");
var _PanelBody = _interopRequireDefault(require("../PanelBody"));
var _PanelHeader = _interopRequireDefault(require("../PanelHeader"));
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 = (0, _context.useInfo)(props, 'decade'),
_useInfo2 = (0, _slicedToArray2.default)(_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 = (0, _dateUtil.formatValue)(date, {
locale: locale,
format: cellYearFormat,
generateConfig: generateConfig
});
var endYearStr = (0, _dateUtil.formatValue)(generateConfig.addYear(date, 9), {
locale: locale,
format: cellYearFormat,
generateConfig: generateConfig
});
return "".concat(startYearStr, "-").concat(endYearStr);
};
var getCellClassName = function getCellClassName(date) {
return (0, _defineProperty2.default)({}, "".concat(prefixCls, "-cell-in-view"), (0, _dateUtil.isSameDecade)(generateConfig, date, startYearDate) || (0, _dateUtil.isSameDecade)(generateConfig, date, endYearDate) || (0, _dateUtil.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((0, _dateUtil.formatValue)(startYearDate, {
locale: locale,
format: locale.yearFormat,
generateConfig: generateConfig
}), "-").concat((0, _dateUtil.formatValue)(endYearDate, {
locale: locale,
format: locale.yearFormat,
generateConfig: generateConfig
}));
// ========================= Render =========================
return /*#__PURE__*/React.createElement(_context.PanelContext.Provider, {
value: info
}, /*#__PURE__*/React.createElement("div", {
className: panelPrefixCls
}, /*#__PURE__*/React.createElement(_PanelHeader.default, {
superOffset: function superOffset(distance) {
return generateConfig.addYear(pickerValue, distance * 100);
},
onChange: onPickerValueChange
// Limitation
,
getStart: getStartYear,
getEnd: getEndYear
}, yearNode), /*#__PURE__*/React.createElement(_PanelBody.default, (0, _extends2.default)({}, props, {
disabledDate: mergedDisabledDate,
colNum: 3,
rowNum: 4,
baseDate: baseDate
// Body
,
getCellDate: getCellDate,
getCellText: getCellText,
getCellClassName: getCellClassName
}))));
}

View 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;

View File

@@ -0,0 +1,106 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = MonthPanel;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../../utils/dateUtil");
var _context = require("../context");
var _PanelBody = _interopRequireDefault(require("../PanelBody"));
var _PanelHeader = _interopRequireDefault(require("../PanelHeader"));
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 = (0, _context.useInfo)(props, 'month'),
_useInfo2 = (0, _slicedToArray2.default)(_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 ? (0, _dateUtil.formatValue)(date, {
locale: locale,
format: locale.monthFormat,
generateConfig: generateConfig
}) : monthsLocale[month];
};
var getCellClassName = function getCellClassName() {
return (0, _defineProperty2.default)({}, "".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")
}, (0, _dateUtil.formatValue)(pickerValue, {
locale: locale,
format: locale.yearFormat,
generateConfig: generateConfig
}));
// ========================= Render =========================
return /*#__PURE__*/React.createElement(_context.PanelContext.Provider, {
value: info
}, /*#__PURE__*/React.createElement("div", {
className: panelPrefixCls
}, /*#__PURE__*/React.createElement(_PanelHeader.default, {
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.default, (0, _extends2.default)({}, props, {
disabledDate: mergedDisabledDate,
titleFormat: locale.fieldMonthFormat,
colNum: 3,
rowNum: 4,
baseDate: baseDate
// Body
,
getCellDate: getCellDate,
getCellText: getCellText,
getCellClassName: getCellClassName
}))));
}

17
node_modules/rc-picker/lib/PickerPanel/PanelBody.d.ts generated vendored Normal file
View 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;

152
node_modules/rc-picker/lib/PickerPanel/PanelBody.js generated vendored Normal file
View File

@@ -0,0 +1,152 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = PanelBody;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classnames = _interopRequireDefault(require("classnames"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../utils/dateUtil");
var _context = require("./context");
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 = (0, _context.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(_context.PickerHackContext),
onCellDblClick = _React$useContext.onCellDblClick;
// ============================== Value ===============================
var matchValues = function matchValues(date) {
return values.some(function (singleValue) {
return singleValue && (0, _dateUtil.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 = (0, _slicedToArray2.default)(hoverRangeValue, 2),
hoverStart = _hoverRangeValue[0],
hoverEnd = _hoverRangeValue[1];
inRange = (0, _dateUtil.isInRange)(generateConfig, hoverStart, hoverEnd, currentDate);
rangeStart = (0, _dateUtil.isSame)(generateConfig, locale, currentDate, hoverStart, type);
rangeEnd = (0, _dateUtil.isSame)(generateConfig, locale, currentDate, hoverEnd, type);
}
// Title
var title = titleFormat ? (0, _dateUtil.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: (0, _classnames.default)(cellPrefixCls, (0, _objectSpread3.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(cellPrefixCls, "-disabled"), disabled), "".concat(cellPrefixCls, "-hover"), (hoverValue || []).some(function (date) {
return (0, _dateUtil.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)));
}

View 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;

141
node_modules/rc-picker/lib/PickerPanel/PanelHeader.js generated vendored Normal file
View File

@@ -0,0 +1,141 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classnames = _interopRequireDefault(require("classnames"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../utils/dateUtil");
var _context = require("./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 = (0, _context.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(_context.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 !(0, _dateUtil.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 !(0, _dateUtil.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 !(0, _dateUtil.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 !(0, _dateUtil.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: (0, _classnames.default)(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: (0, _classnames.default)(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: (0, _classnames.default)(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: (0, _classnames.default)(superNextBtnCls, disabledSuperOffsetNext && "".concat(superNextBtnCls, "-disabled")),
disabled: disabledSuperOffsetNext,
style: hideNext ? HIDDEN_STYLE : {}
}, superNextIcon));
}
var _default = exports.default = PanelHeader;

View 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;

View File

@@ -0,0 +1,92 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = QuarterPanel;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../../utils/dateUtil");
var _context = require("../context");
var _PanelBody = _interopRequireDefault(require("../PanelBody"));
var _PanelHeader = _interopRequireDefault(require("../PanelHeader"));
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 = (0, _context.useInfo)(props, 'quarter'),
_useInfo2 = (0, _slicedToArray2.default)(_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 (0, _dateUtil.formatValue)(date, {
locale: locale,
format: locale.cellQuarterFormat,
generateConfig: generateConfig
});
};
var getCellClassName = function getCellClassName() {
return (0, _defineProperty2.default)({}, "".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")
}, (0, _dateUtil.formatValue)(pickerValue, {
locale: locale,
format: locale.yearFormat,
generateConfig: generateConfig
}));
// ========================= Render =========================
return /*#__PURE__*/React.createElement(_context.PanelContext.Provider, {
value: info
}, /*#__PURE__*/React.createElement("div", {
className: panelPrefixCls
}, /*#__PURE__*/React.createElement(_PanelHeader.default, {
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.default, (0, _extends2.default)({}, props, {
titleFormat: locale.fieldQuarterFormat,
colNum: 4,
rowNum: 1,
baseDate: baseDate
// Body
,
getCellDate: getCellDate,
getCellText: getCellText,
getCellClassName: getCellClassName
}))));
}

View 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;

View File

@@ -0,0 +1,146 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = TimeColumn;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classnames = _interopRequireDefault(require("classnames"));
var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
var React = _interopRequireWildcard(require("react"));
var _context = require("../../context");
var _useScrollTo3 = _interopRequireDefault(require("./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(';');
}
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 = (0, _context.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 = (0, _useScrollTo3.default)(ulRef, value !== null && value !== void 0 ? value : optionalValue),
_useScrollTo2 = (0, _slicedToArray2.default)(_useScrollTo, 3),
syncScroll = _useScrollTo2[0],
stopScroll = _useScrollTo2[1],
isScrolling = _useScrollTo2[2];
// Effect sync value scroll
(0, _useLayoutEffect.default)(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, (0, _toConsumableArray2.default)(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: (0, _classnames.default)(cellPrefixCls, (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".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);
}));
}

View 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;

View File

@@ -0,0 +1,286 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = TimePanelBody;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _useTimeInfo3 = _interopRequireDefault(require("../../../hooks/useTimeInfo"));
var _dateUtil = require("../../../utils/dateUtil");
var _context = require("../../context");
var _TimeColumn = _interopRequireDefault(require("./TimeColumn"));
function isAM(hour) {
return hour < 12;
}
function TimePanelBody(props) {
var showHour = props.showHour,
showMinute = props.showMinute,
showSecond = props.showSecond,
showMillisecond = props.showMillisecond,
showMeridiem = props.use12Hours,
changeOnScroll = props.changeOnScroll;
var _usePanelContext = (0, _context.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(_context.PickerHackContext),
onCellDblClick = _React$useContext.onCellDblClick;
// ========================== Info ==========================
var _useTimeInfo = (0, _useTimeInfo3.default)(generateConfig, props, value),
_useTimeInfo2 = (0, _slicedToArray2.default)(_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 = (0, _slicedToArray2.default)(_getUnitValue, 2),
hour = _getUnitValue2[0],
pickerHour = _getUnitValue2[1];
var _getUnitValue3 = getUnitValue('getMinute'),
_getUnitValue4 = (0, _slicedToArray2.default)(_getUnitValue3, 2),
minute = _getUnitValue4[0],
pickerMinute = _getUnitValue4[1];
var _getUnitValue5 = getUnitValue('getSecond'),
_getUnitValue6 = (0, _slicedToArray2.default)(_getUnitValue5, 2),
second = _getUnitValue6[0],
pickerSecond = _getUnitValue6[1];
var _getUnitValue7 = getUnitValue('getMillisecond'),
_getUnitValue8 = (0, _slicedToArray2.default)(_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 ? (0, _dateUtil.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.default, (0, _extends2.default)({
units: hourUnits,
value: hour,
optionalValue: pickerHour,
type: "hour",
onChange: onHourChange,
onHover: onHourHover
}, sharedColumnProps)), showMinute && /*#__PURE__*/React.createElement(_TimeColumn.default, (0, _extends2.default)({
units: minuteUnits,
value: minute,
optionalValue: pickerMinute,
type: "minute",
onChange: onMinuteChange,
onHover: onMinuteHover
}, sharedColumnProps)), showSecond && /*#__PURE__*/React.createElement(_TimeColumn.default, (0, _extends2.default)({
units: secondUnits,
value: second,
optionalValue: pickerSecond,
type: "second",
onChange: onSecondChange,
onHover: onSecondHover
}, sharedColumnProps)), showMillisecond && /*#__PURE__*/React.createElement(_TimeColumn.default, (0, _extends2.default)({
units: millisecondUnits,
value: millisecond,
optionalValue: pickerMillisecond,
type: "millisecond",
onChange: onMillisecondChange,
onHover: onMillisecondHover
}, sharedColumnProps)), showMeridiem && /*#__PURE__*/React.createElement(_TimeColumn.default, (0, _extends2.default)({
units: meridiemUnits,
value: meridiem,
type: "meridiem",
onChange: onMeridiemChange,
onHover: onMeridiemHover
}, sharedColumnProps)));
}

View 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];

View File

@@ -0,0 +1,80 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useScrollTo;
var _rcUtil = require("rc-util");
var _raf = _interopRequireDefault(require("rc-util/lib/raf"));
var _isVisible = _interopRequireDefault(require("rc-util/lib/Dom/isVisible"));
var React = _interopRequireWildcard(require("react"));
var SPEED_PTG = 1 / 3;
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.default.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 || !(0, _isVisible.default)(ul)) {
if (scrollRafTimesRef.current <= 5) {
scrollRafRef.current = (0, _raf.default)(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 = (0, _raf.default)(doScroll);
};
if (targetLi && firstLi) {
doScroll();
}
}
};
// ======================== Trigger =========================
var syncScroll = (0, _rcUtil.useEvent)(startScroll);
return [syncScroll, stopScroll, isScrolling];
}

View 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;

View File

@@ -0,0 +1,45 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findValidateTime = findValidateTime;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
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 = (0, _toConsumableArray2.default)(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;
}

View 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;

View File

@@ -0,0 +1,41 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = TimePanel;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classnames = _interopRequireDefault(require("classnames"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../../utils/dateUtil");
var _context = require("../context");
var _PanelHeader = _interopRequireDefault(require("../PanelHeader"));
var _TimePanelBody = _interopRequireDefault(require("./TimePanelBody"));
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 = (0, _context.useInfo)(props, 'time'),
_useInfo2 = (0, _slicedToArray2.default)(_useInfo, 1),
info = _useInfo2[0];
// ========================= Render =========================
return /*#__PURE__*/React.createElement(_context.PanelContext.Provider, {
value: info
}, /*#__PURE__*/React.createElement("div", {
className: (0, _classnames.default)(panelPrefixCls)
}, /*#__PURE__*/React.createElement(_PanelHeader.default, null, value ? (0, _dateUtil.formatValue)(value, {
locale: locale,
format: format,
generateConfig: generateConfig
}) : "\xA0"), /*#__PURE__*/React.createElement(_TimePanelBody.default, showTime)));
}

View 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;

View File

@@ -0,0 +1,55 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = WeekPanel;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classnames = _interopRequireDefault(require("classnames"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../../utils/dateUtil");
var _DatePanel = _interopRequireDefault(require("../DatePanel"));
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 = (0, _slicedToArray2.default)(hoverRangeValue, 2),
rangeStart = _hoverRangeValue[0],
rangeEnd = _hoverRangeValue[1];
var isRangeStart = (0, _dateUtil.isSameWeek)(generateConfig, localeName, rangeStart, currentDate);
var isRangeEnd = (0, _dateUtil.isSameWeek)(generateConfig, localeName, rangeEnd, currentDate);
rangeCls["".concat(rowPrefixCls, "-range-start")] = isRangeStart;
rangeCls["".concat(rowPrefixCls, "-range-end")] = isRangeEnd;
rangeCls["".concat(rowPrefixCls, "-range-hover")] = !isRangeStart && !isRangeEnd && (0, _dateUtil.isInRange)(generateConfig, rangeStart, rangeEnd, currentDate);
}
if (hoverValue) {
rangeCls["".concat(rowPrefixCls, "-hover")] = hoverValue.some(function (date) {
return (0, _dateUtil.isSameWeek)(generateConfig, localeName, currentDate, date);
});
}
return (0, _classnames.default)(rowPrefixCls, (0, _defineProperty2.default)({}, "".concat(rowPrefixCls, "-selected"), !hoverRangeValue && (0, _dateUtil.isSameWeek)(generateConfig, localeName, value, currentDate)),
// Patch for hover range
rangeCls);
};
// ============================== Render ==============================
return /*#__PURE__*/React.createElement(_DatePanel.default, (0, _extends2.default)({}, props, {
mode: "week",
panelName: "week",
rowClassName: rowClassName
}));
}

View 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;

View File

@@ -0,0 +1,116 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = YearPanel;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _dateUtil = require("../../utils/dateUtil");
var _context = require("../context");
var _PanelBody = _interopRequireDefault(require("../PanelBody"));
var _PanelHeader = _interopRequireDefault(require("../PanelHeader"));
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 = (0, _context.useInfo)(props, 'year'),
_useInfo2 = (0, _slicedToArray2.default)(_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 (0, _dateUtil.formatValue)(date, {
locale: locale,
format: locale.cellYearFormat,
generateConfig: generateConfig
});
};
var getCellClassName = function getCellClassName(date) {
return (0, _defineProperty2.default)({}, "".concat(prefixCls, "-cell-in-view"), (0, _dateUtil.isSameYear)(generateConfig, date, startYearDate) || (0, _dateUtil.isSameYear)(generateConfig, date, endYearDate) || (0, _dateUtil.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")
}, (0, _dateUtil.formatValue)(startYearDate, {
locale: locale,
format: locale.yearFormat,
generateConfig: generateConfig
}), "-", (0, _dateUtil.formatValue)(endYearDate, {
locale: locale,
format: locale.yearFormat,
generateConfig: generateConfig
}));
// ========================= Render =========================
return /*#__PURE__*/React.createElement(_context.PanelContext.Provider, {
value: info
}, /*#__PURE__*/React.createElement("div", {
className: panelPrefixCls
}, /*#__PURE__*/React.createElement(_PanelHeader.default, {
superOffset: function superOffset(distance) {
return generateConfig.addYear(pickerValue, distance * 10);
},
onChange: onPickerValueChange
// Limitation
,
getStart: getStartYear,
getEnd: getEndYear
}, yearNode), /*#__PURE__*/React.createElement(_PanelBody.default, (0, _extends2.default)({}, props, {
disabledDate: mergedDisabledDate,
titleFormat: locale.fieldYearFormat,
colNum: 3,
rowNum: 4,
baseDate: baseDate
// Body
,
getCellDate: getCellDate,
getCellText: getCellText,
getCellClassName: getCellClassName
}))));
}

24
node_modules/rc-picker/lib/PickerPanel/context.d.ts generated vendored Normal file
View 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>;

76
node_modules/rc-picker/lib/PickerPanel/context.js generated vendored Normal file
View File

@@ -0,0 +1,76 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PickerHackContext = exports.PanelContext = void 0;
exports.useInfo = useInfo;
exports.usePanelContext = usePanelContext;
var React = _interopRequireWildcard(require("react"));
/** Used for each single Panel. e.g. DatePanel */
var PanelContext = exports.PanelContext = /*#__PURE__*/React.createContext(null);
function usePanelContext() {
return React.useContext(PanelContext);
}
/**
* Get shared props for the SharedPanelProps interface.
*/
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
*/
var PickerHackContext = exports.PickerHackContext = /*#__PURE__*/React.createContext({});
if (process.env.NODE_ENV !== 'production') {
PickerHackContext.displayName = 'PickerHackContext';
}

60
node_modules/rc-picker/lib/PickerPanel/index.d.ts generated vendored Normal file
View 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;

311
node_modules/rc-picker/lib/PickerPanel/index.js generated vendored Normal file
View File

@@ -0,0 +1,311 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classnames = _interopRequireDefault(require("classnames"));
var _rcUtil = require("rc-util");
var React = _interopRequireWildcard(require("react"));
var _useLocale = _interopRequireDefault(require("../hooks/useLocale"));
var _useTimeConfig = require("../hooks/useTimeConfig");
var _useToggleDates = _interopRequireDefault(require("../hooks/useToggleDates"));
var _context = _interopRequireDefault(require("../PickerInput/context"));
var _useCellRender = _interopRequireDefault(require("../PickerInput/hooks/useCellRender"));
var _dateUtil = require("../utils/dateUtil");
var _miscUtil = require("../utils/miscUtil");
var _context2 = require("./context");
var _DatePanel = _interopRequireDefault(require("./DatePanel"));
var _DateTimePanel = _interopRequireDefault(require("./DateTimePanel"));
var _DecadePanel = _interopRequireDefault(require("./DecadePanel"));
var _MonthPanel = _interopRequireDefault(require("./MonthPanel"));
var _QuarterPanel = _interopRequireDefault(require("./QuarterPanel"));
var _TimePanel = _interopRequireDefault(require("./TimePanel"));
var _WeekPanel = _interopRequireDefault(require("./WeekPanel"));
var _YearPanel = _interopRequireDefault(require("./YearPanel"));
var DefaultComponents = {
date: _DatePanel.default,
datetime: _DateTimePanel.default,
week: _WeekPanel.default,
month: _MonthPanel.default,
quarter: _QuarterPanel.default,
year: _YearPanel.default,
decade: _DecadePanel.default,
time: _TimePanel.default
};
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(_context.default)) === 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 = (0, _useTimeConfig.getTimeProps)(props),
_getTimeProps2 = (0, _slicedToArray2.default)(_getTimeProps, 4),
timeProps = _getTimeProps2[0],
localeTimeProps = _getTimeProps2[1],
showTimeFormat = _getTimeProps2[2],
propFormat = _getTimeProps2[3];
// ========================= Locale =========================
var filledLocale = (0, _useLocale.default)(locale, localeTimeProps);
// ========================= Picker =========================
var internalPicker = picker === 'date' && showTime ? 'datetime' : picker;
// ======================== ShowTime ========================
var mergedShowTime = React.useMemo(function () {
return (0, _useTimeConfig.fillShowTimeConfig)(internalPicker, showTimeFormat, propFormat, timeProps, filledLocale);
}, [internalPicker, showTimeFormat, propFormat, timeProps, filledLocale]);
// ========================== Now ===========================
var now = generateConfig.getNow();
// ========================== Mode ==========================
var _useMergedState = (0, _rcUtil.useMergedState)(picker, {
value: mode,
postState: function postState(val) {
return val || 'date';
}
}),
_useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
mergedMode = _useMergedState2[0],
setMergedMode = _useMergedState2[1];
var internalMode = mergedMode === 'date' && mergedShowTime ? 'datetime' : mergedMode;
// ========================= Toggle =========================
var toggleDates = (0, _useToggleDates.default)(generateConfig, locale, internalPicker);
// ========================= Value ==========================
// >>> Real value
// Interactive with `onChange` event which only trigger when the `mode` is `picker`
var _useMergedState3 = (0, _rcUtil.useMergedState)(defaultValue, {
value: value
}),
_useMergedState4 = (0, _slicedToArray2.default)(_useMergedState3, 2),
innerValue = _useMergedState4[0],
setMergedValue = _useMergedState4[1];
var mergedValue = React.useMemo(function () {
// Clean up `[null]`
var values = (0, _miscUtil.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 = (0, _rcUtil.useEvent)(function (nextValue) {
setMergedValue(nextValue);
if (onChange && (nextValue === null || mergedValue.length !== nextValue.length || mergedValue.some(function (ori, index) {
return !(0, _dateUtil.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 = (0, _rcUtil.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 = (0, _rcUtil.useMergedState)(defaultPickerValue || mergedValue[0] || now, {
value: pickerValue
}),
_useMergedState6 = (0, _slicedToArray2.default)(_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((0, _toConsumableArray2.default)(decadeYearMonthQueue), ['week']),
date: [].concat((0, _toConsumableArray2.default)(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 = (0, _slicedToArray2.default)(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 = (0, _useCellRender.default)(cellRender, dateRender, monthCellRender);
// ======================= Components =======================
var PanelComponent = components[internalMode] || DefaultComponents[internalMode] || _DatePanel.default;
// ======================== Context =========================
var parentHackContext = React.useContext(_context2.PickerHackContext);
var pickerPanelContext = React.useMemo(function () {
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, parentHackContext), {}, {
hideHeader: hideHeader
});
}, [parentHackContext, hideHeader]);
// ======================== Warnings ========================
if (process.env.NODE_ENV !== 'production') {
(0, _rcUtil.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 = (0, _miscUtil.pickProps)(props, [
// Week
'showWeek',
// Icons
'prevIcon', 'nextIcon', 'superPrevIcon', 'superNextIcon',
// Disabled
'disabledDate', 'minDate', 'maxDate',
// Hover
'onHover']);
return /*#__PURE__*/React.createElement(_context2.PickerHackContext.Provider, {
value: pickerPanelContext
}, /*#__PURE__*/React.createElement("div", {
ref: rootRef,
tabIndex: tabIndex,
className: (0, _classnames.default)(panelCls, (0, _defineProperty2.default)({}, "".concat(panelCls, "-rtl"), direction === 'rtl'))
}, /*#__PURE__*/React.createElement(PanelComponent, (0, _extends2.default)({}, 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
var _default = exports.default = RefPanelPicker;