@rainbow-oh/yee-c 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Button/button.d.ts +1 -1
- package/dist/cjs/CSV/download.d.ts +1 -1
- package/dist/cjs/Carousel/carousel.d.ts +2 -2
- package/dist/cjs/Carousel/carousel.js +9 -2
- package/dist/cjs/Carousel/interface.d.ts +5 -0
- package/dist/cjs/Dialog/demo/basic.js +1 -1
- package/dist/cjs/Dialog/dialog.js +1 -1
- package/dist/cjs/Drawer/style/index.less +4 -0
- package/dist/cjs/Field/demo/validation.js +23 -3
- package/dist/cjs/Field/field.js +1 -1
- package/dist/cjs/FloatButton/float-button.d.ts +1 -1
- package/dist/cjs/Form/Field.js +1 -4
- package/dist/cjs/Form/Form.js +1 -1
- package/dist/cjs/Form/Group.js +36 -14
- package/dist/cjs/Form/List.js +23 -3
- package/dist/cjs/Form/demo/async-validate.d.ts +3 -0
- package/dist/cjs/Form/demo/async-validate.js +108 -0
- package/dist/cjs/Form/demo/basic.js +2 -2
- package/dist/cjs/Form/demo/virtual.js +1 -1
- package/dist/cjs/Form/form-store.d.ts +4 -4
- package/dist/cjs/Form/form-store.js +55 -25
- package/dist/cjs/Form/interface.d.ts +10 -7
- package/dist/cjs/Form/style/index.less +15 -0
- package/dist/cjs/Form/utils/validate.d.ts +23 -2
- package/dist/cjs/Form/utils/validate.js +59 -10
- package/dist/cjs/Input/style/index.less +0 -17
- package/dist/cjs/InputNumber/style/index.less +0 -29
- package/dist/cjs/PickerPanel/interface.d.ts +44 -2
- package/dist/cjs/PickerPanel/panels/DatePanel/DateBody.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/DatePanel/DateHeader.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/DatePanel/DateHeader.js +1 -1
- package/dist/cjs/PickerPanel/panels/DatePanel/index.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/DateTimePanel/index.d.ts +7 -1
- package/dist/cjs/PickerPanel/panels/DateTimePanel/index.js +18 -4
- package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeBody.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeBody.js +1 -1
- package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeHeader.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeHeader.js +1 -1
- package/dist/cjs/PickerPanel/panels/DecadePanel/index.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/DecadePanel/index.js +1 -1
- package/dist/cjs/PickerPanel/panels/Header.d.ts +13 -1
- package/dist/cjs/PickerPanel/panels/MonthPanel/MonthBody.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/MonthPanel/MonthHeader.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/MonthPanel/MonthHeader.js +1 -1
- package/dist/cjs/PickerPanel/panels/MonthPanel/index.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/MonthPanel/index.js +1 -1
- package/dist/cjs/PickerPanel/panels/PanelBody.d.ts +21 -1
- package/dist/cjs/PickerPanel/panels/PanelBody.js +3 -3
- package/dist/cjs/PickerPanel/panels/QuarterPanel/QuarterBody.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/QuarterPanel/QuarterHeader.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/QuarterPanel/index.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/RangePanel/index.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/RangePanel/index.js +2 -2
- package/dist/cjs/PickerPanel/panels/RangePanel/interface.d.ts +5 -5
- package/dist/cjs/PickerPanel/panels/TimePanel/TimeBody.d.ts +17 -1
- package/dist/cjs/PickerPanel/panels/TimePanel/TimeCell.d.ts +7 -1
- package/dist/cjs/PickerPanel/panels/TimePanel/TimeCell.js +1 -1
- package/dist/cjs/PickerPanel/panels/TimePanel/TimeColumn.d.ts +14 -1
- package/dist/cjs/PickerPanel/panels/TimePanel/TimeColumn.js +1 -1
- package/dist/cjs/PickerPanel/panels/TimePanel/TimeHeader.d.ts +4 -1
- package/dist/cjs/PickerPanel/panels/TimePanel/index.d.ts +9 -1
- package/dist/cjs/PickerPanel/panels/WeekPanel/WeekBody.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/WeekPanel/WeekHeader.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/WeekPanel/index.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/YearPanel/YearBody.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/YearPanel/YearBody.js +2 -2
- package/dist/cjs/PickerPanel/panels/YearPanel/YearHeader.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/YearPanel/YearHeader.js +7 -1
- package/dist/cjs/PickerPanel/panels/YearPanel/index.d.ts +2 -1
- package/dist/cjs/PickerPanel/panels/YearPanel/index.js +1 -1
- package/dist/cjs/PickerPanel/utils/pickerUtils.d.ts +7 -7
- package/dist/cjs/PickerPanel/utils/pickerUtils.js +2 -2
- package/dist/cjs/Select/demo/basic.js +1 -1
- package/dist/cjs/Select/demo/virtual.d.ts +3 -0
- package/dist/cjs/Select/demo/virtual.js +55 -0
- package/dist/cjs/Select/hooks/useSelectKeyboard.d.ts +7 -1
- package/dist/cjs/Select/hooks/useSelectKeyboard.js +16 -6
- package/dist/cjs/Select/interface.d.ts +44 -0
- package/dist/cjs/Select/option.js +3 -2
- package/dist/cjs/Select/options.js +115 -15
- package/dist/cjs/Select/select.js +20 -4
- package/dist/cjs/Select/style/index.less +17 -13
- package/dist/cjs/Selector/style/index.less +2 -137
- package/dist/cjs/Table/style/index.less +19 -0
- package/dist/cjs/TextArea/style/index.less +0 -17
- package/dist/cjs/hooks/index.d.ts +2 -1
- package/dist/cjs/hooks/index.js +3 -1
- package/dist/cjs/hooks/useEvent.js +4 -1
- package/dist/cjs/hooks/useVirtualList.d.ts +71 -0
- package/dist/cjs/hooks/useVirtualList.js +117 -0
- package/dist/cjs/style/size.css +1 -0
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +2 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Button/button.d.ts +1 -1
- package/dist/esm/CSV/download.d.ts +1 -1
- package/dist/esm/Carousel/carousel.d.ts +2 -2
- package/dist/esm/Carousel/carousel.js +5 -1
- package/dist/esm/Carousel/interface.d.ts +5 -0
- package/dist/esm/Dialog/demo/basic.js +1 -1
- package/dist/esm/Dialog/dialog.js +1 -1
- package/dist/esm/Drawer/style/index.less +4 -0
- package/dist/esm/Field/demo/validation.js +30 -9
- package/dist/esm/Field/field.js +2 -1
- package/dist/esm/FloatButton/float-button.d.ts +1 -1
- package/dist/esm/Form/Field.js +3 -4
- package/dist/esm/Form/Form.js +1 -1
- package/dist/esm/Form/Group.js +142 -53
- package/dist/esm/Form/List.js +61 -42
- package/dist/esm/Form/demo/async-validate.d.ts +3 -0
- package/dist/esm/Form/demo/async-validate.js +95 -0
- package/dist/esm/Form/demo/basic.js +4 -2
- package/dist/esm/Form/demo/virtual.js +1 -1
- package/dist/esm/Form/form-store.d.ts +4 -4
- package/dist/esm/Form/form-store.js +187 -93
- package/dist/esm/Form/interface.d.ts +10 -7
- package/dist/esm/Form/style/index.less +15 -0
- package/dist/esm/Form/utils/validate.d.ts +23 -2
- package/dist/esm/Form/utils/validate.js +122 -17
- package/dist/esm/Input/style/index.less +0 -17
- package/dist/esm/InputNumber/style/index.less +0 -29
- package/dist/esm/PickerPanel/interface.d.ts +44 -2
- package/dist/esm/PickerPanel/panels/DatePanel/DateBody.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/DatePanel/DateHeader.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/DatePanel/DateHeader.js +1 -1
- package/dist/esm/PickerPanel/panels/DatePanel/index.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/DateTimePanel/index.d.ts +7 -1
- package/dist/esm/PickerPanel/panels/DateTimePanel/index.js +11 -7
- package/dist/esm/PickerPanel/panels/DecadePanel/DecadeBody.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/DecadePanel/DecadeBody.js +2 -1
- package/dist/esm/PickerPanel/panels/DecadePanel/DecadeHeader.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/DecadePanel/DecadeHeader.js +2 -1
- package/dist/esm/PickerPanel/panels/DecadePanel/index.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/DecadePanel/index.js +1 -1
- package/dist/esm/PickerPanel/panels/Header.d.ts +13 -1
- package/dist/esm/PickerPanel/panels/MonthPanel/MonthBody.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/MonthPanel/MonthHeader.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/MonthPanel/MonthHeader.js +2 -1
- package/dist/esm/PickerPanel/panels/MonthPanel/index.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/MonthPanel/index.js +1 -1
- package/dist/esm/PickerPanel/panels/PanelBody.d.ts +21 -1
- package/dist/esm/PickerPanel/panels/PanelBody.js +2 -4
- package/dist/esm/PickerPanel/panels/QuarterPanel/QuarterBody.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/QuarterPanel/QuarterHeader.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/QuarterPanel/index.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/RangePanel/index.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/RangePanel/index.js +2 -2
- package/dist/esm/PickerPanel/panels/RangePanel/interface.d.ts +5 -5
- package/dist/esm/PickerPanel/panels/TimePanel/TimeBody.d.ts +17 -1
- package/dist/esm/PickerPanel/panels/TimePanel/TimeCell.d.ts +7 -1
- package/dist/esm/PickerPanel/panels/TimePanel/TimeCell.js +1 -1
- package/dist/esm/PickerPanel/panels/TimePanel/TimeColumn.d.ts +14 -1
- package/dist/esm/PickerPanel/panels/TimePanel/TimeColumn.js +1 -1
- package/dist/esm/PickerPanel/panels/TimePanel/TimeHeader.d.ts +4 -1
- package/dist/esm/PickerPanel/panels/TimePanel/index.d.ts +9 -1
- package/dist/esm/PickerPanel/panels/WeekPanel/WeekBody.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/WeekPanel/WeekHeader.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/WeekPanel/index.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/YearPanel/YearBody.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/YearPanel/YearBody.js +3 -2
- package/dist/esm/PickerPanel/panels/YearPanel/YearHeader.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/YearPanel/YearHeader.js +2 -1
- package/dist/esm/PickerPanel/panels/YearPanel/index.d.ts +2 -1
- package/dist/esm/PickerPanel/panels/YearPanel/index.js +1 -1
- package/dist/esm/PickerPanel/picker-panel.js +3 -0
- package/dist/esm/PickerPanel/utils/pickerUtils.d.ts +7 -7
- package/dist/esm/PickerPanel/utils/pickerUtils.js +4 -10
- package/dist/esm/Select/demo/basic.js +1 -1
- package/dist/esm/Select/demo/virtual.d.ts +3 -0
- package/dist/esm/Select/demo/virtual.js +38 -0
- package/dist/esm/Select/hooks/useSelectKeyboard.d.ts +7 -1
- package/dist/esm/Select/hooks/useSelectKeyboard.js +25 -9
- package/dist/esm/Select/interface.d.ts +44 -0
- package/dist/esm/Select/option.js +4 -2
- package/dist/esm/Select/options.js +132 -13
- package/dist/esm/Select/select.js +19 -4
- package/dist/esm/Select/style/index.less +17 -13
- package/dist/esm/Selector/style/index.less +2 -137
- package/dist/esm/Table/style/index.less +19 -0
- package/dist/esm/TextArea/style/index.less +0 -17
- package/dist/esm/hooks/index.d.ts +2 -1
- package/dist/esm/hooks/index.js +2 -1
- package/dist/esm/hooks/useVirtualList.d.ts +71 -0
- package/dist/esm/hooks/useVirtualList.js +129 -0
- package/dist/esm/style/size.css +1 -0
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +2 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +2 -2
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +1 -1
- package/src/Carousel/carousel.tsx +14 -3
- package/src/Carousel/interface.ts +6 -0
- package/src/Cascader/cascader.tsx +3 -1
- package/src/Cascader/column.tsx +1 -1
- package/src/Dialog/demo/basic.tsx +1 -1
- package/src/Dialog/dialog.tsx +1 -1
- package/src/Drawer/style/index.less +4 -0
- package/src/Dropdown/dropdown.tsx +1 -1
- package/src/Field/demo/validation.tsx +2 -2
- package/src/Field/field.tsx +2 -1
- package/src/Field/index.en-US.md +1 -1
- package/src/Field/index.zh-CN.md +1 -1
- package/src/FloatButton/float-button.tsx +5 -3
- package/src/Form/Field.tsx +3 -4
- package/src/Form/Form.tsx +1 -1
- package/src/Form/Group.tsx +15 -12
- package/src/Form/List.tsx +3 -3
- package/src/Form/demo/async-validate.tsx +71 -0
- package/src/Form/demo/basic.tsx +2 -2
- package/src/Form/demo/virtual.tsx +1 -1
- package/src/Form/form-store.ts +37 -21
- package/src/Form/index.en-US.md +6 -5
- package/src/Form/index.zh-CN.md +6 -5
- package/src/Form/interface.ts +13 -7
- package/src/Form/style/index.less +15 -0
- package/src/Form/utils/validate.ts +65 -13
- package/src/Input/style/index.less +0 -17
- package/src/InputNumber/style/index.less +0 -29
- package/src/PickerPanel/interface.ts +43 -2
- package/src/PickerPanel/panels/DatePanel/DateBody.tsx +2 -1
- package/src/PickerPanel/panels/DatePanel/DateHeader.tsx +3 -2
- package/src/PickerPanel/panels/DatePanel/index.tsx +2 -1
- package/src/PickerPanel/panels/DateTimePanel/index.tsx +12 -5
- package/src/PickerPanel/panels/DecadePanel/DecadeBody.tsx +3 -2
- package/src/PickerPanel/panels/DecadePanel/DecadeHeader.tsx +3 -2
- package/src/PickerPanel/panels/DecadePanel/index.tsx +3 -2
- package/src/PickerPanel/panels/Header.tsx +14 -1
- package/src/PickerPanel/panels/MonthPanel/MonthBody.tsx +2 -1
- package/src/PickerPanel/panels/MonthPanel/MonthHeader.tsx +3 -2
- package/src/PickerPanel/panels/MonthPanel/index.tsx +3 -2
- package/src/PickerPanel/panels/PanelBody.tsx +27 -5
- package/src/PickerPanel/panels/QuarterPanel/QuarterBody.tsx +2 -1
- package/src/PickerPanel/panels/QuarterPanel/QuarterHeader.tsx +2 -1
- package/src/PickerPanel/panels/QuarterPanel/index.tsx +2 -1
- package/src/PickerPanel/panels/RangePanel/index.tsx +11 -9
- package/src/PickerPanel/panels/RangePanel/interface.ts +5 -5
- package/src/PickerPanel/panels/TimePanel/TimeBody.tsx +21 -5
- package/src/PickerPanel/panels/TimePanel/TimeCell.tsx +9 -2
- package/src/PickerPanel/panels/TimePanel/TimeColumn.tsx +15 -2
- package/src/PickerPanel/panels/TimePanel/TimeHeader.tsx +5 -1
- package/src/PickerPanel/panels/TimePanel/index.tsx +10 -1
- package/src/PickerPanel/panels/WeekPanel/WeekBody.tsx +2 -1
- package/src/PickerPanel/panels/WeekPanel/WeekHeader.tsx +2 -1
- package/src/PickerPanel/panels/WeekPanel/index.tsx +2 -1
- package/src/PickerPanel/panels/YearPanel/YearBody.tsx +4 -3
- package/src/PickerPanel/panels/YearPanel/YearHeader.tsx +9 -3
- package/src/PickerPanel/panels/YearPanel/index.tsx +3 -2
- package/src/PickerPanel/picker-panel.tsx +5 -3
- package/src/PickerPanel/utils/pickerUtils.ts +17 -8
- package/src/Select/demo/basic.tsx +1 -1
- package/src/Select/demo/virtual.tsx +25 -0
- package/src/Select/hooks/useSelectKeyboard.ts +30 -6
- package/src/Select/index.en-US.md +4 -0
- package/src/Select/index.zh-CN.md +4 -0
- package/src/Select/interface.ts +48 -2
- package/src/Select/option.tsx +2 -1
- package/src/Select/options.tsx +139 -8
- package/src/Select/select.tsx +23 -1
- package/src/Select/style/index.less +17 -13
- package/src/Selector/style/index.less +2 -137
- package/src/Splitter/hooks/useMove.ts +2 -2
- package/src/Table/style/index.less +19 -0
- package/src/TextArea/style/index.less +0 -17
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useEvent.ts +7 -4
- package/src/hooks/useMergedState.ts +6 -4
- package/src/hooks/useVirtualList.ts +169 -0
- package/src/style/size.css +1 -0
- package/src/version.ts +1 -1
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
import { Dayjs } from 'dayjs';
|
|
1
2
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
+
import type { PanelSharedProps } from '../../interface';
|
|
4
|
+
interface TimeBodyProps extends PanelSharedProps {
|
|
5
|
+
value?: Dayjs;
|
|
6
|
+
showTitle?: boolean;
|
|
7
|
+
showHour?: boolean;
|
|
8
|
+
showMinute?: boolean;
|
|
9
|
+
showSecond?: boolean;
|
|
10
|
+
disabledHours?: boolean;
|
|
11
|
+
disabledMinutes?: boolean;
|
|
12
|
+
disabledSeconds?: boolean;
|
|
13
|
+
is12hour?: boolean;
|
|
14
|
+
hourStep?: number;
|
|
15
|
+
minuteStep?: number;
|
|
16
|
+
secondStep?: number;
|
|
17
|
+
}
|
|
18
|
+
declare function TimeBody(props: TimeBodyProps): React.JSX.Element;
|
|
3
19
|
export default TimeBody;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
interface TimeCellProps {
|
|
3
|
+
prefixCls?: string;
|
|
4
|
+
value: number;
|
|
5
|
+
onSelect?: (value: number) => void;
|
|
6
|
+
active?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare function TimeCell(props: TimeCellProps): React.JSX.Element;
|
|
3
9
|
export default TimeCell;
|
|
@@ -40,6 +40,6 @@ function TimeCell(props) {
|
|
|
40
40
|
[`${prefixCls}-time-panel-cell-selected`]: active
|
|
41
41
|
});
|
|
42
42
|
const renderValue = value < 10 ? "0" + value : value;
|
|
43
|
-
return /* @__PURE__ */ import_react.default.createElement("li", { className: cls, onClick: () => onSelect(value) }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-time-panel-cell-inner` }, renderValue));
|
|
43
|
+
return /* @__PURE__ */ import_react.default.createElement("li", { className: cls, onClick: () => onSelect == null ? void 0 : onSelect(value) }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-time-panel-cell-inner` }, renderValue));
|
|
44
44
|
}
|
|
45
45
|
var TimeCell_default = TimeCell;
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
import { Dayjs } from 'dayjs';
|
|
1
2
|
import React from 'react';
|
|
2
|
-
|
|
3
|
+
import type { TimeUnit } from '../../interface';
|
|
4
|
+
interface TimeColumnProps {
|
|
5
|
+
prefixCls?: string;
|
|
6
|
+
type: TimeUnit;
|
|
7
|
+
value?: Dayjs;
|
|
8
|
+
cells: Dayjs[];
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
onSelect?: (date: Dayjs) => void;
|
|
11
|
+
viewDate?: Dayjs;
|
|
12
|
+
maxDate?: Dayjs;
|
|
13
|
+
minDate?: Dayjs;
|
|
14
|
+
}
|
|
15
|
+
declare function TimeColumn(props: TimeColumnProps): React.JSX.Element;
|
|
3
16
|
export default TimeColumn;
|
|
@@ -52,7 +52,7 @@ function TimeColumn(props) {
|
|
|
52
52
|
const [selectedCell, setSelectedCell] = import_react.default.useState();
|
|
53
53
|
import_react.default.useLayoutEffect(() => {
|
|
54
54
|
var _a, _b;
|
|
55
|
-
if (value !==
|
|
55
|
+
if (value !== void 0 && selectedRef.current) {
|
|
56
56
|
(_b = ref.current) == null ? void 0 : _b.scrollTo({
|
|
57
57
|
top: (_a = selectedRef.current) == null ? void 0 : _a.offsetTop,
|
|
58
58
|
behavior: "smooth"
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
2
|
+
import type { PanelSharedProps } from '../../interface';
|
|
3
|
+
interface TimePanelProps extends PanelSharedProps {
|
|
4
|
+
format?: string;
|
|
5
|
+
hourStep?: number;
|
|
6
|
+
minuteStep?: number;
|
|
7
|
+
secondStep?: number;
|
|
8
|
+
showTitle?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare function TimePanel(props: TimePanelProps): React.JSX.Element;
|
|
3
11
|
export default TimePanel;
|
|
@@ -62,7 +62,7 @@ function YearBody(props) {
|
|
|
62
62
|
maxDate,
|
|
63
63
|
minDate,
|
|
64
64
|
nowDate,
|
|
65
|
-
offsetYear,
|
|
65
|
+
offsetYear = 0,
|
|
66
66
|
hoverRange = [],
|
|
67
67
|
selectedRange = []
|
|
68
68
|
} = props;
|
|
@@ -77,7 +77,7 @@ function YearBody(props) {
|
|
|
77
77
|
});
|
|
78
78
|
const getCellTitle = (0, import_useEvent.default)((currentDate) => {
|
|
79
79
|
const _year = import_pickerUtils.default.getYear(currentDate) + offsetYear;
|
|
80
|
-
return _year < 1e3 ? "0" + _year : _year;
|
|
80
|
+
return _year < 1e3 ? "0" + _year : String(_year);
|
|
81
81
|
});
|
|
82
82
|
const getCellClassName = (0, import_useEvent.default)((currentDate) => {
|
|
83
83
|
const currentYear = import_pickerUtils.default.getYear(currentDate);
|
|
@@ -38,7 +38,13 @@ var import_useEvent = __toESM(require("../../../hooks/useEvent"));
|
|
|
38
38
|
var import_Header = __toESM(require("../Header"));
|
|
39
39
|
var import_pickerUtils = __toESM(require("../../utils/pickerUtils"));
|
|
40
40
|
function YearHeader(props) {
|
|
41
|
-
const {
|
|
41
|
+
const {
|
|
42
|
+
prefixCls,
|
|
43
|
+
viewDate,
|
|
44
|
+
onViewDateChange,
|
|
45
|
+
onPanelChange,
|
|
46
|
+
offsetYear = 0
|
|
47
|
+
} = props;
|
|
42
48
|
const viewYear = import_pickerUtils.default.getYear(viewDate);
|
|
43
49
|
const startYear = viewYear - viewYear % 10 + offsetYear;
|
|
44
50
|
const endYear = startYear + 9;
|
|
@@ -56,7 +56,7 @@ function DecadePanel(props) {
|
|
|
56
56
|
const { prefixCls, offset } = props;
|
|
57
57
|
let offsetYear = 0;
|
|
58
58
|
if (offset == null ? void 0 : offset.year) {
|
|
59
|
-
offsetYear =
|
|
59
|
+
offsetYear = offset.year;
|
|
60
60
|
}
|
|
61
61
|
return /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-year-panel` }, /* @__PURE__ */ import_react.default.createElement(import_YearHeader.default, __spreadProps(__spreadValues({}, props), { offsetYear })), /* @__PURE__ */ import_react.default.createElement(import_YearBody.default, __spreadProps(__spreadValues({}, props), { offsetYear })));
|
|
62
62
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import dayjs, { Dayjs } from 'dayjs';
|
|
1
|
+
import dayjs, { Dayjs, OpUnitType } from 'dayjs';
|
|
2
2
|
type PickerType = 'year' | 'quarter' | 'month' | 'week' | 'day' | 'second' | 'minute' | 'hour';
|
|
3
3
|
declare const d: {
|
|
4
4
|
dayjs: typeof dayjs;
|
|
5
|
-
init: (date?:
|
|
5
|
+
init: (date?: dayjs.ConfigType, option?: dayjs.OptionType) => dayjs.Dayjs;
|
|
6
6
|
getNow: () => dayjs.Dayjs;
|
|
7
7
|
getYear: (date: Dayjs) => number;
|
|
8
8
|
getQuarter: (date: Dayjs) => number;
|
|
@@ -13,7 +13,7 @@ declare const d: {
|
|
|
13
13
|
getMinute: (date: Dayjs) => number;
|
|
14
14
|
getSecond: (date: Dayjs) => number;
|
|
15
15
|
format: (date: Dayjs, format: string) => string;
|
|
16
|
-
isSame: (date1: Dayjs, date2: Dayjs, type?: PickerType) => boolean;
|
|
16
|
+
isSame: (date1: Dayjs | undefined, date2: Dayjs | undefined, type?: PickerType) => boolean;
|
|
17
17
|
setYear: (date: Dayjs, year: number) => dayjs.Dayjs;
|
|
18
18
|
setMonth: (date: Dayjs, month: number) => dayjs.Dayjs;
|
|
19
19
|
setDate: (date: Dayjs, day: number) => dayjs.Dayjs;
|
|
@@ -23,10 +23,10 @@ declare const d: {
|
|
|
23
23
|
addYear: (date: Dayjs, offset: number) => dayjs.Dayjs;
|
|
24
24
|
addMonth: (date: Dayjs, offset: number) => dayjs.Dayjs;
|
|
25
25
|
addDate: (date: Dayjs, offset: number) => dayjs.Dayjs;
|
|
26
|
-
isAfter: (date1: Dayjs, date2: Dayjs, type?: 'day' | 'hour' | 'minute' | 'second' | 'year' | 'month') => boolean;
|
|
27
|
-
isBefore: (date1: Dayjs, date2: Dayjs, type?: 'day' | 'hour' | 'minute' | 'second' | 'year' | 'month') => boolean;
|
|
28
|
-
isValid: (date: Dayjs, format?: string, strict?: boolean) => boolean;
|
|
29
|
-
isBetween: (date: Dayjs, start: Dayjs, end: Dayjs,
|
|
26
|
+
isAfter: (date1: Dayjs, date2: Dayjs | undefined, type?: 'day' | 'hour' | 'minute' | 'second' | 'year' | 'month') => boolean;
|
|
27
|
+
isBefore: (date1: Dayjs, date2: Dayjs | undefined, type?: 'day' | 'hour' | 'minute' | 'second' | 'year' | 'month') => boolean;
|
|
28
|
+
isValid: (date: Dayjs | undefined, format?: string, strict?: boolean) => boolean;
|
|
29
|
+
isBetween: (date: Dayjs, start: Dayjs, end: Dayjs, unit?: OpUnitType, nulls?: '()' | '[]' | '[)' | '(]') => boolean;
|
|
30
30
|
getCellClassName: ({ date, startHoverDate, endHoverDate, startSelectedDate, endSelectedDate, unit, prefixCls, }: {
|
|
31
31
|
date: Dayjs;
|
|
32
32
|
startHoverDate: Dayjs | null | undefined;
|
|
@@ -48,7 +48,7 @@ import_dayjs.default.extend(import_localeData.default);
|
|
|
48
48
|
import_dayjs.default.extend(import_buddhistEra.default);
|
|
49
49
|
var d = {
|
|
50
50
|
dayjs: import_dayjs.default,
|
|
51
|
-
init: (date,
|
|
51
|
+
init: (date, option) => (0, import_dayjs.default)(date, option),
|
|
52
52
|
getNow: () => {
|
|
53
53
|
return d.init(void 0);
|
|
54
54
|
},
|
|
@@ -78,7 +78,7 @@ var d = {
|
|
|
78
78
|
isAfter: (date1, date2, type) => date2 ? date1.isAfter(date2, type) : false,
|
|
79
79
|
isBefore: (date1, date2, type) => date2 ? date1.isBefore(date2, type) : false,
|
|
80
80
|
isValid: (date, format, strict) => (0, import_dayjs.default)(date, format, strict).isValid(),
|
|
81
|
-
isBetween: (date, start, end,
|
|
81
|
+
isBetween: (date, start, end, unit, nulls) => date && start && end ? date.isBetween(start, end, unit, nulls) : false,
|
|
82
82
|
getCellClassName: ({
|
|
83
83
|
date,
|
|
84
84
|
startHoverDate,
|
|
@@ -47,7 +47,7 @@ var options = [
|
|
|
47
47
|
{ label: "Peach", value: "peach" }
|
|
48
48
|
];
|
|
49
49
|
var basic_default = () => {
|
|
50
|
-
const [value, setValue] = (0, import_react.useState)("
|
|
50
|
+
const [value, setValue] = (0, import_react.useState)("mango");
|
|
51
51
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
52
52
|
import_yee_c.Select,
|
|
53
53
|
{
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/Select/demo/virtual.tsx
|
|
30
|
+
var virtual_exports = {};
|
|
31
|
+
__export(virtual_exports, {
|
|
32
|
+
default: () => virtual_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(virtual_exports);
|
|
35
|
+
var import_yee_c = require("../..");
|
|
36
|
+
var import_react = __toESM(require("react"));
|
|
37
|
+
var options = Array.from({ length: 5e3 }, (_, i) => ({
|
|
38
|
+
label: `Option ${i + 1}`,
|
|
39
|
+
value: i
|
|
40
|
+
}));
|
|
41
|
+
var virtual_default = () => {
|
|
42
|
+
const [value, setValue] = (0, import_react.useState)(100);
|
|
43
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
44
|
+
import_yee_c.Select,
|
|
45
|
+
{
|
|
46
|
+
virtual: true,
|
|
47
|
+
searchable: true,
|
|
48
|
+
value,
|
|
49
|
+
onChange: (val) => setValue(val),
|
|
50
|
+
options,
|
|
51
|
+
style: { width: 200 },
|
|
52
|
+
placeholder: "Please select"
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
};
|
|
@@ -11,8 +11,14 @@ interface UseSelectKeyboardParams {
|
|
|
11
11
|
onClose?: () => void;
|
|
12
12
|
onOpenChange?: (open: boolean) => void;
|
|
13
13
|
containerRef?: React.RefObject<HTMLElement>;
|
|
14
|
+
/**
|
|
15
|
+
* Virtual-mode scroll hook. When provided, keyboard navigation drives the
|
|
16
|
+
* virtual viewport through this callback instead of calling scrollIntoView
|
|
17
|
+
* (the focused option may not be in the DOM while virtualized).
|
|
18
|
+
*/
|
|
19
|
+
scrollToIndex?: (index: number) => void;
|
|
14
20
|
}
|
|
15
|
-
export default function useSelectKeyboard({ options, open, selectedKeys, onSelect, onClose, onOpenChange, containerRef, }: UseSelectKeyboardParams): {
|
|
21
|
+
export default function useSelectKeyboard({ options, open, selectedKeys, onSelect, onClose, onOpenChange, containerRef, scrollToIndex, }: UseSelectKeyboardParams): {
|
|
16
22
|
focusedKey: string | number;
|
|
17
23
|
onKeyDown: (event: React.KeyboardEvent) => void;
|
|
18
24
|
};
|
|
@@ -41,7 +41,8 @@ function useSelectKeyboard({
|
|
|
41
41
|
onSelect,
|
|
42
42
|
onClose,
|
|
43
43
|
onOpenChange,
|
|
44
|
-
containerRef
|
|
44
|
+
containerRef,
|
|
45
|
+
scrollToIndex
|
|
45
46
|
}) {
|
|
46
47
|
const [focusedKey, setFocusedKey] = (0, import_react.useState)("");
|
|
47
48
|
const latestFocusedKey = (0, import_useLatest.default)(focusedKey);
|
|
@@ -69,6 +70,10 @@ function useSelectKeyboard({
|
|
|
69
70
|
}
|
|
70
71
|
};
|
|
71
72
|
const scrollOptionIntoView = (index) => {
|
|
73
|
+
if (scrollToIndex) {
|
|
74
|
+
scrollToIndex(index);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
72
77
|
const container = containerRef == null ? void 0 : containerRef.current;
|
|
73
78
|
if (!container)
|
|
74
79
|
return;
|
|
@@ -150,18 +155,23 @@ function useSelectKeyboard({
|
|
|
150
155
|
};
|
|
151
156
|
(0, import_react.useEffect)(() => {
|
|
152
157
|
if (open) {
|
|
158
|
+
let focusedValue = "";
|
|
153
159
|
if ((selectedKeys == null ? void 0 : selectedKeys.length) > 0) {
|
|
154
160
|
const firstSelected = options == null ? void 0 : options.find(
|
|
155
161
|
(opt) => opt.value === selectedKeys[0]
|
|
156
162
|
);
|
|
157
163
|
if (firstSelected && !firstSelected.disabled) {
|
|
158
|
-
|
|
159
|
-
|
|
164
|
+
focusedValue = firstSelected.value;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (!focusedValue) {
|
|
168
|
+
const firstEnabled = options == null ? void 0 : options.find((opt) => !opt.disabled);
|
|
169
|
+
if (firstEnabled) {
|
|
170
|
+
focusedValue = firstEnabled.value;
|
|
160
171
|
}
|
|
161
172
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
setFocusedKey(firstEnabled.value);
|
|
173
|
+
if (focusedValue) {
|
|
174
|
+
setFocusedKey(focusedValue);
|
|
165
175
|
}
|
|
166
176
|
} else {
|
|
167
177
|
setFocusedKey("");
|
|
@@ -94,6 +94,26 @@ export interface SelectProps extends DataAttributeProps {
|
|
|
94
94
|
* Callback when searching
|
|
95
95
|
*/
|
|
96
96
|
onFilter?: (value: string, options: Array<Option>) => Array<Option>;
|
|
97
|
+
/**
|
|
98
|
+
* Enable virtual scrolling for the dropdown.
|
|
99
|
+
*
|
|
100
|
+
* When enabled, only the options inside the visible window are rendered
|
|
101
|
+
* (the DOM node count stays constant regardless of how many options there
|
|
102
|
+
* are). Recommended for large option sets (hundreds or thousands).
|
|
103
|
+
* @default false
|
|
104
|
+
*/
|
|
105
|
+
virtual?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Height of each option in pixels. Required to be a fixed value when
|
|
108
|
+
* `virtual` is enabled (the list assumes every option has exactly this height).
|
|
109
|
+
* @default 32
|
|
110
|
+
*/
|
|
111
|
+
itemHeight?: number;
|
|
112
|
+
/**
|
|
113
|
+
* Max height of the dropdown popup in pixels.
|
|
114
|
+
* @default 200
|
|
115
|
+
*/
|
|
116
|
+
listHeight?: number;
|
|
97
117
|
}
|
|
98
118
|
/**
|
|
99
119
|
* Props for the internal Option component (renders a single dropdown option).
|
|
@@ -119,6 +139,11 @@ export interface OptionProps {
|
|
|
119
139
|
* Test id forwarded to the option element
|
|
120
140
|
*/
|
|
121
141
|
dataTestId?: string;
|
|
142
|
+
/**
|
|
143
|
+
* Inline style forwarded to the option element.
|
|
144
|
+
* Used by virtual scrolling to position each option absolutely.
|
|
145
|
+
*/
|
|
146
|
+
style?: React.CSSProperties;
|
|
122
147
|
}
|
|
123
148
|
/**
|
|
124
149
|
* Context value shared between Options and each Option.
|
|
@@ -167,6 +192,25 @@ export interface OptionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
167
192
|
* Whether multiple selection mode is active
|
|
168
193
|
*/
|
|
169
194
|
multiple: boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Whether virtual scrolling is enabled
|
|
197
|
+
*/
|
|
198
|
+
virtual?: boolean;
|
|
199
|
+
/**
|
|
200
|
+
* Fixed option height in pixels (only meaningful when `virtual` is enabled)
|
|
201
|
+
*/
|
|
202
|
+
itemHeight?: number;
|
|
203
|
+
/**
|
|
204
|
+
* Max popup height in pixels (only meaningful when `virtual` is enabled)
|
|
205
|
+
*/
|
|
206
|
+
listHeight?: number;
|
|
207
|
+
/**
|
|
208
|
+
* Ref that receives the virtual list API (currently `scrollToIndex`),
|
|
209
|
+
* so the parent can wire keyboard navigation to the virtual viewport.
|
|
210
|
+
*/
|
|
211
|
+
virtualApiRef?: React.MutableRefObject<{
|
|
212
|
+
scrollToIndex: (index: number) => void;
|
|
213
|
+
} | null>;
|
|
170
214
|
/**
|
|
171
215
|
* Callback when an option is selected
|
|
172
216
|
*/
|
|
@@ -37,7 +37,7 @@ var import_lucide_react = require("lucide-react");
|
|
|
37
37
|
var import_react = __toESM(require("react"));
|
|
38
38
|
var import_options = require("./options");
|
|
39
39
|
var Option = (props) => {
|
|
40
|
-
const { label, value, disabled, title, dataTestId } = props;
|
|
40
|
+
const { label, value, disabled, title, dataTestId, style } = props;
|
|
41
41
|
const { prefixCls, selectedKeys, focusedKey, multiple, onSelect } = (0, import_react.useContext)(import_options.OptionsCtx);
|
|
42
42
|
const handleClick = (e) => {
|
|
43
43
|
if (!disabled) {
|
|
@@ -64,7 +64,8 @@ var Option = (props) => {
|
|
|
64
64
|
role: "option",
|
|
65
65
|
tabIndex: disabled ? void 0 : 0,
|
|
66
66
|
title: htmlTitle,
|
|
67
|
-
"data-testid": dataTestId
|
|
67
|
+
"data-testid": dataTestId,
|
|
68
|
+
style
|
|
68
69
|
},
|
|
69
70
|
/* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-option-content` }, label),
|
|
70
71
|
multiple && selected && /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-option-state` }, /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Check, { size: 16 }))
|
|
@@ -64,6 +64,7 @@ __export(options_exports, {
|
|
|
64
64
|
module.exports = __toCommonJS(options_exports);
|
|
65
65
|
var import_clsx = __toESM(require("clsx"));
|
|
66
66
|
var import_react = __toESM(require("react"));
|
|
67
|
+
var import_useVirtualList = __toESM(require("../hooks/useVirtualList"));
|
|
67
68
|
var import_locale = require("../locale");
|
|
68
69
|
var import_option = __toESM(require("./option"));
|
|
69
70
|
var OptionsCtx = (0, import_react.createContext)(
|
|
@@ -82,6 +83,10 @@ var Options = (0, import_react.forwardRef)(
|
|
|
82
83
|
focusedKey,
|
|
83
84
|
dataTestId,
|
|
84
85
|
multiple,
|
|
86
|
+
virtual,
|
|
87
|
+
itemHeight = 32,
|
|
88
|
+
listHeight = 200,
|
|
89
|
+
virtualApiRef,
|
|
85
90
|
onSelect
|
|
86
91
|
} = _a, rest = __objRest(_a, [
|
|
87
92
|
"prefixCls",
|
|
@@ -92,30 +97,125 @@ var Options = (0, import_react.forwardRef)(
|
|
|
92
97
|
"focusedKey",
|
|
93
98
|
"dataTestId",
|
|
94
99
|
"multiple",
|
|
100
|
+
"virtual",
|
|
101
|
+
"itemHeight",
|
|
102
|
+
"listHeight",
|
|
103
|
+
"virtualApiRef",
|
|
95
104
|
"onSelect"
|
|
96
105
|
]);
|
|
97
|
-
const
|
|
106
|
+
const rootRef = (0, import_react.useRef)(null);
|
|
107
|
+
(0, import_react.useImperativeHandle)(ref, () => rootRef.current, []);
|
|
108
|
+
const {
|
|
109
|
+
start,
|
|
110
|
+
end,
|
|
111
|
+
offsetY,
|
|
112
|
+
totalHeight,
|
|
113
|
+
viewportRef,
|
|
114
|
+
onScroll,
|
|
115
|
+
scrollToIndex
|
|
116
|
+
} = (0, import_useVirtualList.default)({
|
|
117
|
+
itemCount: options.length,
|
|
118
|
+
itemHeight
|
|
119
|
+
});
|
|
120
|
+
(0, import_react.useEffect)(() => {
|
|
121
|
+
if (!virtual || !virtualApiRef)
|
|
122
|
+
return;
|
|
123
|
+
virtualApiRef.current = { scrollToIndex };
|
|
124
|
+
return () => {
|
|
125
|
+
if (virtualApiRef.current) {
|
|
126
|
+
virtualApiRef.current = null;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}, [virtual, virtualApiRef, scrollToIndex]);
|
|
130
|
+
(0, import_react.useEffect)(() => {
|
|
131
|
+
if (virtual) {
|
|
132
|
+
scrollToIndex(0);
|
|
133
|
+
}
|
|
134
|
+
}, [options, virtual, scrollToIndex]);
|
|
135
|
+
(0, import_react.useEffect)(() => {
|
|
136
|
+
if (options.length === 0)
|
|
137
|
+
return;
|
|
138
|
+
if (focusedKey === "")
|
|
139
|
+
return;
|
|
140
|
+
const focusedIndex = options.findIndex((o) => o.value === focusedKey);
|
|
141
|
+
if (focusedIndex < 0)
|
|
142
|
+
return;
|
|
143
|
+
if (virtual) {
|
|
144
|
+
scrollToIndex(focusedIndex);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const container = rootRef.current;
|
|
148
|
+
if (!container)
|
|
149
|
+
return;
|
|
150
|
+
const optionElements = container.querySelectorAll('[role="option"]');
|
|
151
|
+
const targetElement = optionElements[focusedIndex];
|
|
152
|
+
if (targetElement) {
|
|
153
|
+
targetElement.scrollIntoView({ block: "nearest" });
|
|
154
|
+
}
|
|
155
|
+
}, [focusedKey, virtual, options, scrollToIndex, rootRef]);
|
|
156
|
+
const isEmpty = options.length === 0;
|
|
157
|
+
const ctxValue = {
|
|
158
|
+
prefixCls,
|
|
159
|
+
selectedKeys,
|
|
160
|
+
focusedKey,
|
|
161
|
+
multiple,
|
|
162
|
+
onSelect
|
|
163
|
+
};
|
|
164
|
+
if (virtual && !isEmpty) {
|
|
165
|
+
const visibleOptions = options.slice(start, end);
|
|
166
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
167
|
+
"div",
|
|
168
|
+
__spreadProps(__spreadValues({}, rest), {
|
|
169
|
+
className: (0, import_clsx.default)(
|
|
170
|
+
`${prefixCls}-popup`,
|
|
171
|
+
`${prefixCls}-popup-virtual`,
|
|
172
|
+
popupClassName
|
|
173
|
+
),
|
|
174
|
+
style: popupStyle,
|
|
175
|
+
ref: rootRef,
|
|
176
|
+
tabIndex: -1
|
|
177
|
+
}),
|
|
178
|
+
/* @__PURE__ */ import_react.default.createElement(OptionsCtx.Provider, { value: ctxValue }, /* @__PURE__ */ import_react.default.createElement(
|
|
179
|
+
"div",
|
|
180
|
+
{
|
|
181
|
+
className: `${prefixCls}-popup-viewport`,
|
|
182
|
+
ref: viewportRef,
|
|
183
|
+
onScroll,
|
|
184
|
+
style: { maxHeight: listHeight, overflowY: "auto" }
|
|
185
|
+
},
|
|
186
|
+
/* @__PURE__ */ import_react.default.createElement("div", { style: { height: totalHeight, position: "relative" } }, visibleOptions.map((option, i) => /* @__PURE__ */ import_react.default.createElement(
|
|
187
|
+
import_option.default,
|
|
188
|
+
__spreadProps(__spreadValues({}, option), {
|
|
189
|
+
key: option.value,
|
|
190
|
+
dataTestId: `${dataTestId}-${start + i}`,
|
|
191
|
+
style: {
|
|
192
|
+
position: "absolute",
|
|
193
|
+
top: 0,
|
|
194
|
+
left: 0,
|
|
195
|
+
right: 0,
|
|
196
|
+
height: itemHeight,
|
|
197
|
+
transform: `translateY(${offsetY + i * itemHeight}px)`
|
|
198
|
+
}
|
|
199
|
+
})
|
|
200
|
+
)))
|
|
201
|
+
))
|
|
202
|
+
);
|
|
203
|
+
}
|
|
98
204
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
99
205
|
"div",
|
|
100
206
|
__spreadProps(__spreadValues({}, rest), {
|
|
101
207
|
className: (0, import_clsx.default)(`${prefixCls}-popup`, popupClassName),
|
|
102
208
|
style: popupStyle,
|
|
103
|
-
ref:
|
|
209
|
+
ref: rootRef,
|
|
104
210
|
tabIndex: -1
|
|
105
211
|
}),
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
__spreadProps(__spreadValues({}, option), {
|
|
114
|
-
key: option.value,
|
|
115
|
-
dataTestId: `${dataTestId}-${index}`
|
|
116
|
-
})
|
|
117
|
-
))
|
|
118
|
-
)
|
|
212
|
+
isEmpty ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-empty` }, select.noData) : /* @__PURE__ */ import_react.default.createElement(OptionsCtx.Provider, { value: ctxValue }, options.map((option, index) => /* @__PURE__ */ import_react.default.createElement(
|
|
213
|
+
import_option.default,
|
|
214
|
+
__spreadProps(__spreadValues({}, option), {
|
|
215
|
+
key: option.value,
|
|
216
|
+
dataTestId: `${dataTestId}-${index}`
|
|
217
|
+
})
|
|
218
|
+
)))
|
|
119
219
|
);
|
|
120
220
|
}
|
|
121
221
|
);
|