@nutui/nutui-react 1.1.5-beta.3 → 1.2.0-beta.1
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/esm/Address.js +2 -2
- package/dist/esm/AnimatingNumbers.js +1 -2
- package/dist/esm/Avatar.js +2 -2
- package/dist/esm/AvatarGroup.js +1 -1
- package/dist/esm/Calendar.js +1 -1
- package/dist/esm/CalendarItem.js +1 -1
- package/dist/esm/Cell.js +44 -28
- package/dist/esm/CellGroup.js +11 -3
- package/dist/esm/CircleProgress.js +1 -1
- package/dist/esm/CollapseItem.js +6 -3
- package/dist/esm/CountDown.js +2 -2
- package/dist/esm/Dialog.js +15 -7
- package/dist/esm/Divider.js +6 -4
- package/dist/esm/Elevator.js +1 -1
- package/dist/esm/Empty.js +6 -0
- package/dist/esm/Indicator/style/index.js +2 -0
- package/dist/esm/Indicator.js +63 -0
- package/dist/esm/NoticeBar.js +2 -2
- package/dist/esm/Pagination.js +11 -11
- package/dist/esm/Rate.js +4 -1
- package/dist/esm/TextArea.js +9 -21
- package/dist/esm/TimeSelect/style/index.js +3 -0
- package/dist/esm/TimeSelect.js +277 -0
- package/dist/esm/VirtualList/style/index.js +2 -0
- package/dist/esm/VirtualList.js +344 -0
- package/dist/esm/{date-b4847376.js → date-710f8c7c.js} +0 -0
- package/dist/esm/nutui-react.es.js +4 -1
- package/dist/locales/base.js +1 -1
- package/dist/locales/en-US.js +1 -1
- package/dist/locales/id-ID.d.ts +3 -0
- package/dist/locales/id-ID.js +96 -0
- package/dist/locales/zh-CN.js +1 -1
- package/dist/locales/zh-TW.js +1 -1
- package/dist/nutui.react.es.js +1743 -1239
- package/dist/nutui.react.umd.js +19 -19
- package/dist/packages/cell/cell.scss +29 -15
- package/dist/packages/cellgroup/cellgroup.scss +14 -0
- package/dist/packages/divider/divider.scss +17 -8
- package/dist/packages/indicator/indicator.scss +63 -0
- package/dist/packages/timedetail/timedetail.scss +26 -0
- package/dist/packages/timepannel/timepannel.scss +7 -0
- package/dist/packages/timeselect/timeselect.scss +34 -0
- package/dist/packages/virtuallist/virtuallist.scss +51 -0
- package/dist/style.css +1 -1
- package/dist/style.es.js +1 -1
- package/dist/styles/themes/default.scss +6 -1
- package/dist/styles/variables.scss +68 -16
- package/dist/types/actionsheet/demo.d.ts +3 -0
- package/dist/types/address/demo.d.ts +3 -0
- package/dist/types/animatingnumbers/demo.d.ts +3 -0
- package/dist/types/avatar/demo.d.ts +4 -0
- package/dist/types/backtop/demo.d.ts +3 -0
- package/dist/types/badge/demo.d.ts +3 -0
- package/dist/types/barrage/demo.d.ts +4 -0
- package/dist/types/button/demo.d.ts +3 -0
- package/dist/types/calendar/demo.d.ts +3 -0
- package/dist/types/card/demo.d.ts +3 -0
- package/dist/types/cell/cell.d.ts +10 -6
- package/dist/types/cell/demo.d.ts +3 -0
- package/dist/types/cellgroup/cellgroup.d.ts +5 -2
- package/dist/types/checkbox/demo.d.ts +3 -0
- package/dist/types/circleprogress/demo.d.ts +4 -0
- package/dist/types/collapse/__test__/collapse.spec.d.ts +1 -0
- package/dist/types/collapse/demo.d.ts +3 -0
- package/dist/types/collapseitem/collapseitem.d.ts +2 -2
- package/dist/types/configprovider/demo.d.ts +3 -0
- package/dist/types/countdown/demo.d.ts +3 -0
- package/dist/types/datepicker/demo.d.ts +3 -0
- package/dist/types/dialog/Content.d.ts +2 -1
- package/dist/types/dialog/DialogWrap.d.ts +1 -0
- package/dist/types/dialog/config.d.ts +7 -6
- package/dist/types/dialog/demo.d.ts +3 -0
- package/dist/types/divider/demo.d.ts +3 -0
- package/dist/types/divider/divider.d.ts +4 -1
- package/dist/types/drag/demo.d.ts +3 -0
- package/dist/types/elevator/demo.d.ts +3 -0
- package/dist/types/empty/__test__/empty.spec.d.ts +1 -0
- package/dist/types/empty/demo.d.ts +4 -0
- package/dist/types/fixednav/demo.d.ts +3 -0
- package/dist/types/icon/demo.d.ts +3 -0
- package/dist/types/indicator/__test__/indicator.spec.d.ts +1 -0
- package/dist/types/indicator/demo.d.ts +4 -0
- package/dist/types/indicator/index.d.ts +2 -0
- package/dist/types/indicator/indicator.d.ts +10 -0
- package/dist/types/infiniteloading/demo.d.ts +4 -0
- package/dist/types/input/demo.d.ts +3 -0
- package/dist/types/inputnumber/demo.d.ts +3 -0
- package/dist/types/layout/demo.d.ts +4 -0
- package/dist/types/navbar/demo.d.ts +3 -0
- package/dist/types/noticebar/demo.d.ts +3 -0
- package/dist/types/notify/demo.d.ts +3 -0
- package/dist/types/nutui.react.d.ts +5 -2
- package/dist/types/overlay/demo.d.ts +4 -0
- package/dist/types/pagination/__tests__/pagination.spec.d.ts +1 -0
- package/dist/types/pagination/demo.d.ts +3 -0
- package/dist/types/pagination/pagination.d.ts +2 -2
- package/dist/types/picker/demo.d.ts +3 -0
- package/dist/types/popover/Trigger.d.ts +1 -1
- package/dist/types/popover/demo.d.ts +3 -0
- package/dist/types/popup/demo.d.ts +4 -0
- package/dist/types/price/demo.d.ts +3 -0
- package/dist/types/radio/demo.d.ts +3 -0
- package/dist/types/range/demo.d.ts +3 -0
- package/dist/types/rate/__test__/rate.spec.d.ts +1 -0
- package/dist/types/rate/demo.d.ts +3 -0
- package/dist/types/rate/rate.d.ts +1 -0
- package/dist/types/shortpassword/demo.d.ts +3 -0
- package/dist/types/signature/demo.d.ts +3 -0
- package/dist/types/skeleton/demo.d.ts +4 -0
- package/dist/types/steps/demo.d.ts +4 -0
- package/dist/types/swiper/demo.d.ts +4 -0
- package/dist/types/switch/__test__/switch.spec.d.ts +1 -0
- package/dist/types/switch/demo.d.ts +3 -0
- package/dist/types/tabbar/demo.d.ts +3 -0
- package/dist/types/tabs/demo.d.ts +3 -0
- package/dist/types/tag/__test__/tag.spec.d.ts +1 -0
- package/dist/types/tag/demo.d.ts +3 -0
- package/dist/types/textarea/demo.d.ts +3 -0
- package/dist/types/textarea/textarea.d.ts +4 -4
- package/dist/types/timedetail/demo.d.ts +3 -0
- package/dist/types/timedetail/index.d.ts +3 -0
- package/dist/types/timedetail/timedetail.d.ts +13 -0
- package/dist/types/timepannel/demo.d.ts +3 -0
- package/dist/types/timepannel/index.d.ts +2 -0
- package/dist/types/timepannel/timepannel.d.ts +8 -0
- package/dist/types/timeselect/demo.d.ts +3 -0
- package/dist/types/timeselect/index.d.ts +2 -0
- package/dist/types/timeselect/timeselect.d.ts +21 -0
- package/dist/types/toast/demo.d.ts +3 -0
- package/dist/types/uploader/demo.d.ts +3 -0
- package/dist/types/virtuallist/__test__/virtuallist.spec.d.ts +1 -0
- package/dist/types/virtuallist/demo.d.ts +3 -0
- package/dist/types/virtuallist/index.d.ts +2 -0
- package/dist/types/virtuallist/type.d.ts +32 -0
- package/dist/types/virtuallist/utils.d.ts +16 -0
- package/dist/types/virtuallist/virtuallist.d.ts +3 -0
- package/package.json +4 -3
package/dist/esm/TextArea.js
CHANGED
|
@@ -15,7 +15,7 @@ var defaultProps = {
|
|
|
15
15
|
limitshow: false,
|
|
16
16
|
maxlength: '',
|
|
17
17
|
rows: '',
|
|
18
|
-
placeholder: '
|
|
18
|
+
placeholder: '',
|
|
19
19
|
readonly: false,
|
|
20
20
|
disabled: false,
|
|
21
21
|
autosize: false
|
|
@@ -37,9 +37,9 @@ var TextArea = function TextArea(props) {
|
|
|
37
37
|
disabled = _defaultProps$props.disabled,
|
|
38
38
|
autosize = _defaultProps$props.autosize,
|
|
39
39
|
style = _defaultProps$props.style,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
onChange = _defaultProps$props.onChange,
|
|
41
|
+
onBlur = _defaultProps$props.onBlur,
|
|
42
|
+
onFocus = _defaultProps$props.onFocus;
|
|
43
43
|
|
|
44
44
|
var textareaBem = cn('textarea');
|
|
45
45
|
|
|
@@ -68,33 +68,21 @@ var TextArea = function TextArea(props) {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
SetInputValue(text.value);
|
|
71
|
-
|
|
72
|
-
if (change) {
|
|
73
|
-
change(text.value, event);
|
|
74
|
-
}
|
|
71
|
+
onChange && onChange(text.value, event);
|
|
75
72
|
};
|
|
76
73
|
|
|
77
74
|
var textFocus = function textFocus(event) {
|
|
78
75
|
if (disabled) return;
|
|
79
76
|
if (readonly) return;
|
|
80
|
-
|
|
81
|
-
if (focus) {
|
|
82
|
-
focus(event);
|
|
83
|
-
}
|
|
77
|
+
onFocus && onFocus(event);
|
|
84
78
|
};
|
|
85
79
|
|
|
86
80
|
var textBlur = function textBlur(event) {
|
|
87
81
|
if (disabled) return;
|
|
88
82
|
if (readonly) return;
|
|
89
83
|
var text = event.target;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
change(text.value, event);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (blur) {
|
|
96
|
-
blur(event);
|
|
97
|
-
}
|
|
84
|
+
onChange && onChange(text.value, event);
|
|
85
|
+
onBlur && onBlur(event);
|
|
98
86
|
};
|
|
99
87
|
|
|
100
88
|
return React__default.createElement("div", {
|
|
@@ -119,7 +107,7 @@ var TextArea = function TextArea(props) {
|
|
|
119
107
|
},
|
|
120
108
|
rows: rows,
|
|
121
109
|
maxLength: maxlength < 0 ? 0 : maxlength,
|
|
122
|
-
placeholder: locale.placeholder
|
|
110
|
+
placeholder: placeholder || locale.placeholder
|
|
123
111
|
}), limitshow ? React__default.createElement("div", {
|
|
124
112
|
className: textareaBem('limit')
|
|
125
113
|
}, inputValue.length, "/", maxlength < 0 ? 0 : maxlength) : null);
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
+
|
|
5
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
6
|
+
|
|
7
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
|
+
|
|
9
|
+
import React__default, { useState, useEffect } from 'react';
|
|
10
|
+
import Popup from './Popup.js';
|
|
11
|
+
import { c as cn } from './bem-893ad28d.js';
|
|
12
|
+
import { useConfig } from './ConfigProvider.js';
|
|
13
|
+
import '@bem-react/classname';
|
|
14
|
+
var defaultProps$2 = {
|
|
15
|
+
className: '',
|
|
16
|
+
date: '',
|
|
17
|
+
curKey: 0
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
var TimePannel = function TimePannel(props) {
|
|
21
|
+
useConfig();
|
|
22
|
+
|
|
23
|
+
var _defaultProps$2$props = _objectSpread(_objectSpread({}, defaultProps$2), props),
|
|
24
|
+
children = _defaultProps$2$props.children,
|
|
25
|
+
className = _defaultProps$2$props.className,
|
|
26
|
+
date = _defaultProps$2$props.date,
|
|
27
|
+
curKey = _defaultProps$2$props.curKey,
|
|
28
|
+
change = _defaultProps$2$props.change;
|
|
29
|
+
|
|
30
|
+
var b = cn('timepannel');
|
|
31
|
+
return React__default.createElement("div", {
|
|
32
|
+
className: "".concat(b(), " ").concat(className || ''),
|
|
33
|
+
onClick: function onClick() {
|
|
34
|
+
return change(curKey);
|
|
35
|
+
}
|
|
36
|
+
}, date);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
TimePannel.defaultProps = defaultProps$2;
|
|
40
|
+
TimePannel.displayName = 'NutTimePannel';
|
|
41
|
+
var defaultProps$1 = {
|
|
42
|
+
className: '',
|
|
43
|
+
currentKey: 0,
|
|
44
|
+
currentTime: [],
|
|
45
|
+
times: [],
|
|
46
|
+
select: function select() {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var TimeDetail = function TimeDetail(props) {
|
|
52
|
+
useConfig();
|
|
53
|
+
|
|
54
|
+
var _defaultProps$1$props = _objectSpread(_objectSpread({}, defaultProps$1), props),
|
|
55
|
+
children = _defaultProps$1$props.children,
|
|
56
|
+
times = _defaultProps$1$props.times,
|
|
57
|
+
className = _defaultProps$1$props.className,
|
|
58
|
+
currentKey = _defaultProps$1$props.currentKey,
|
|
59
|
+
currentTime = _defaultProps$1$props.currentTime,
|
|
60
|
+
select = _defaultProps$1$props.select;
|
|
61
|
+
|
|
62
|
+
var b = cn('timedetail');
|
|
63
|
+
|
|
64
|
+
var _useState = useState([]),
|
|
65
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
66
|
+
renderData = _useState2[0],
|
|
67
|
+
setRenderData = _useState2[1];
|
|
68
|
+
|
|
69
|
+
useEffect(function () {
|
|
70
|
+
var currentData = times.find(function (timesItem) {
|
|
71
|
+
return String(timesItem.key) === String(currentKey);
|
|
72
|
+
});
|
|
73
|
+
var renderData = currentData ? currentData.list : []; // 根据选中的日期回显当前日期可配送的时间
|
|
74
|
+
|
|
75
|
+
setRenderData(renderData);
|
|
76
|
+
}, [times, currentKey]); // 选中时间的回调
|
|
77
|
+
|
|
78
|
+
var handleTime = function handleTime(time) {
|
|
79
|
+
select(time);
|
|
80
|
+
}; // 选中的配送时间增加 active 类名
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
var getDetailClass = function getDetailClass(item) {
|
|
84
|
+
var initClass = 'nut-timedetail__item';
|
|
85
|
+
var curTimeData = currentTime.find(function (item) {
|
|
86
|
+
return String(item.key) === String(currentKey);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
if (curTimeData && curTimeData.list && curTimeData.list.includes(item)) {
|
|
90
|
+
initClass += ' nut-timedetail__item-active';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return initClass;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
return React__default.createElement("div", {
|
|
97
|
+
className: "".concat(b(), " ").concat(className || '')
|
|
98
|
+
}, renderData.map(function (item, index) {
|
|
99
|
+
return React__default.createElement("span", {
|
|
100
|
+
className: getDetailClass(item),
|
|
101
|
+
key: item,
|
|
102
|
+
onClick: function onClick() {
|
|
103
|
+
return handleTime(item);
|
|
104
|
+
}
|
|
105
|
+
}, item);
|
|
106
|
+
}));
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
TimeDetail.defaultProps = defaultProps$1;
|
|
110
|
+
TimeDetail.displayName = 'NutTimeDetail';
|
|
111
|
+
var defaultProps = {
|
|
112
|
+
className: '',
|
|
113
|
+
visible: false,
|
|
114
|
+
height: '20%',
|
|
115
|
+
multiple: false,
|
|
116
|
+
currentKey: 0,
|
|
117
|
+
currentTime: [],
|
|
118
|
+
title: '取件时间',
|
|
119
|
+
dates: [],
|
|
120
|
+
times: []
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
var TimeSelect = function TimeSelect(props) {
|
|
124
|
+
useConfig();
|
|
125
|
+
|
|
126
|
+
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
|
|
127
|
+
children = _defaultProps$props.children,
|
|
128
|
+
visible = _defaultProps$props.visible,
|
|
129
|
+
className = _defaultProps$props.className,
|
|
130
|
+
height = _defaultProps$props.height,
|
|
131
|
+
title = _defaultProps$props.title,
|
|
132
|
+
currentKey = _defaultProps$props.currentKey,
|
|
133
|
+
currentTime = _defaultProps$props.currentTime,
|
|
134
|
+
dates = _defaultProps$props.dates,
|
|
135
|
+
times = _defaultProps$props.times,
|
|
136
|
+
multiple = _defaultProps$props.multiple,
|
|
137
|
+
select = _defaultProps$props.select,
|
|
138
|
+
pannelChange = _defaultProps$props.pannelChange,
|
|
139
|
+
timeChange = _defaultProps$props.timeChange;
|
|
140
|
+
|
|
141
|
+
var _useState3 = useState(currentKey),
|
|
142
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
143
|
+
activeKey = _useState4[0],
|
|
144
|
+
setActiveKey = _useState4[1];
|
|
145
|
+
|
|
146
|
+
var _useState5 = useState(currentTime.length ? currentTime : [{
|
|
147
|
+
key: currentKey,
|
|
148
|
+
list: []
|
|
149
|
+
}]),
|
|
150
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
151
|
+
activeTime = _useState6[0],
|
|
152
|
+
setActiveTime = _useState6[1];
|
|
153
|
+
|
|
154
|
+
var _useState7 = useState(visible),
|
|
155
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
156
|
+
popVisible = _useState8[0],
|
|
157
|
+
setPopVisible = _useState8[1];
|
|
158
|
+
|
|
159
|
+
var popStyle = {
|
|
160
|
+
width: '100%',
|
|
161
|
+
height: height
|
|
162
|
+
};
|
|
163
|
+
var b = cn('timeselect'); // popup 的关闭回调, 执行 select 函数更改外部 visible
|
|
164
|
+
|
|
165
|
+
var closeFun = function closeFun() {
|
|
166
|
+
select && select(activeTime);
|
|
167
|
+
}; // 选择配送时间回调
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
var handleSelectTime = function handleSelectTime(time) {
|
|
171
|
+
var curTimeData = {};
|
|
172
|
+
var curIndex = -1;
|
|
173
|
+
|
|
174
|
+
for (var i = 0; i < activeTime.length; i++) {
|
|
175
|
+
if (String(activeTime[i].key) === String(activeKey)) {
|
|
176
|
+
curTimeData = activeTime[i];
|
|
177
|
+
curIndex = i;
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
var curTimeIndex = curTimeData.list.findIndex(function (item) {
|
|
183
|
+
return String(item) === String(time);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
if (curTimeIndex === -1) {
|
|
187
|
+
curTimeData.list.push(time);
|
|
188
|
+
} else {
|
|
189
|
+
curTimeData.list.splice(curTimeIndex, 1);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
var resultTimeData = _toConsumableArray(activeTime);
|
|
193
|
+
|
|
194
|
+
resultTimeData.splice(curIndex, 1, curTimeData);
|
|
195
|
+
setActiveTime(resultTimeData);
|
|
196
|
+
timeChange && timeChange(time, resultTimeData);
|
|
197
|
+
}; // 选择日期的回调
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
var handleChange = function handleChange(pannelKey) {
|
|
201
|
+
var resultTimeData = _toConsumableArray(activeTime);
|
|
202
|
+
|
|
203
|
+
if (String(pannelKey) !== String(activeKey)) {
|
|
204
|
+
setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(pannelKey);
|
|
205
|
+
|
|
206
|
+
if (multiple) {
|
|
207
|
+
var curTimeDataIndex = activeTime.findIndex(function (item) {
|
|
208
|
+
return String(item.key) === String(pannelKey);
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
if (curTimeDataIndex === -1) {
|
|
212
|
+
resultTimeData.push({
|
|
213
|
+
key: pannelKey,
|
|
214
|
+
list: []
|
|
215
|
+
});
|
|
216
|
+
setActiveTime(resultTimeData);
|
|
217
|
+
}
|
|
218
|
+
} else {
|
|
219
|
+
setActiveTime([{
|
|
220
|
+
key: pannelKey,
|
|
221
|
+
list: []
|
|
222
|
+
}]);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
pannelChange && pannelChange(pannelKey, resultTimeData);
|
|
227
|
+
}; // 选中的日期增加 active 类名
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
var getTimePannelClass = function getTimePannelClass(dataItem) {
|
|
231
|
+
if (String(dataItem['pannel-key']) === String(activeKey)) {
|
|
232
|
+
return 'nut-timepannel-active';
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return '';
|
|
236
|
+
}; // 根据外部传入 visible 进行组件的显隐展示
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
useEffect(function () {
|
|
240
|
+
setPopVisible(visible);
|
|
241
|
+
}, [visible]);
|
|
242
|
+
return React__default.createElement(React__default.Fragment, null, React__default.createElement(Popup, {
|
|
243
|
+
closeable: true,
|
|
244
|
+
round: true,
|
|
245
|
+
visible: popVisible,
|
|
246
|
+
position: "bottom",
|
|
247
|
+
style: popStyle,
|
|
248
|
+
onClose: function onClose() {
|
|
249
|
+
closeFun();
|
|
250
|
+
}
|
|
251
|
+
}, React__default.createElement("div", {
|
|
252
|
+
className: "".concat(b(), " ").concat(className || '')
|
|
253
|
+
}, React__default.createElement("div", {
|
|
254
|
+
className: "nut-timeselect__title"
|
|
255
|
+
}, title), React__default.createElement("div", {
|
|
256
|
+
className: "nut-timeselect__content"
|
|
257
|
+
}, React__default.createElement("div", {
|
|
258
|
+
className: "nut-timeselect__content-left"
|
|
259
|
+
}, dates.map(function (dataItem, index) {
|
|
260
|
+
return React__default.createElement(TimePannel, {
|
|
261
|
+
date: dataItem.date,
|
|
262
|
+
className: getTimePannelClass(dataItem),
|
|
263
|
+
key: String(dataItem['pannel-key'] || index),
|
|
264
|
+
curKey: String(dataItem['pannel-key'] || index),
|
|
265
|
+
change: handleChange
|
|
266
|
+
});
|
|
267
|
+
})), React__default.createElement(TimeDetail, {
|
|
268
|
+
times: times,
|
|
269
|
+
currentKey: String(activeKey),
|
|
270
|
+
currentTime: activeTime,
|
|
271
|
+
select: handleSelectTime
|
|
272
|
+
})))));
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
TimeSelect.defaultProps = defaultProps;
|
|
276
|
+
TimeSelect.displayName = 'NutTimeSelect';
|
|
277
|
+
export { TimeSelect as default };
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["sourceData", "ItemRender", "itemEqualSize", "itemSize", "horizontal", "overscan", "key", "handleScroll", "className", "containerSize"];
|
|
5
|
+
|
|
6
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
7
|
+
|
|
8
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
|
+
|
|
10
|
+
import React__default, { useRef, useState, useEffect, useCallback } from 'react';
|
|
11
|
+
import { useConfig } from './ConfigProvider.js'; // 缓存列表初始化信息
|
|
12
|
+
|
|
13
|
+
var initPositinoCache = function initPositinoCache(reaItemSize) {
|
|
14
|
+
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
15
|
+
var index = 0;
|
|
16
|
+
var positions = Array(length);
|
|
17
|
+
|
|
18
|
+
while (index < length) {
|
|
19
|
+
positions[index] = {
|
|
20
|
+
index: index,
|
|
21
|
+
height: reaItemSize,
|
|
22
|
+
width: reaItemSize,
|
|
23
|
+
top: index * reaItemSize,
|
|
24
|
+
bottom: (index + 1) * reaItemSize,
|
|
25
|
+
left: index * reaItemSize,
|
|
26
|
+
right: (index + 1) * reaItemSize
|
|
27
|
+
};
|
|
28
|
+
index++;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return positions;
|
|
32
|
+
}; // 获取列表总高度
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
var getListTotalSize = function getListTotalSize(positions, horizontal) {
|
|
36
|
+
var index = positions.length - 1;
|
|
37
|
+
var size = 0;
|
|
38
|
+
|
|
39
|
+
if (index < 0) {
|
|
40
|
+
size = 0;
|
|
41
|
+
} else {
|
|
42
|
+
size = horizontal ? positions[index].right : positions[index].bottom;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return size;
|
|
46
|
+
}; // 通过二分法找到 scrollOffset 对应的值
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
var binarySearch = function binarySearch(positionsList) {
|
|
50
|
+
var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
51
|
+
var horizontal = arguments.length > 2 ? arguments[2] : undefined;
|
|
52
|
+
var start = 0;
|
|
53
|
+
var end = positionsList.length - 1;
|
|
54
|
+
var tempIndex = null;
|
|
55
|
+
var key = horizontal ? 'right' : 'bottom';
|
|
56
|
+
|
|
57
|
+
while (start <= end) {
|
|
58
|
+
var midIndex = Math.floor((start + end) / 2);
|
|
59
|
+
var midValue = positionsList[midIndex][key]; // 相等则直接返回(因为是bottom, 因此startIndex应该是下一个节点)
|
|
60
|
+
|
|
61
|
+
if (midValue === value) {
|
|
62
|
+
return midIndex + 1;
|
|
63
|
+
} // 中间值 < 传入值,则说明 value对应的节点 大于 start, start往后移动一位
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
if (midValue < value) {
|
|
67
|
+
start = midIndex + 1;
|
|
68
|
+
} // 中间值 > 传入值,则说明 value 在 中间值之前,end 节点移动到 mid - 1
|
|
69
|
+
else if (midValue > value) {
|
|
70
|
+
// tempIndex存放最靠近值为value的所有
|
|
71
|
+
if (tempIndex === null || tempIndex > midIndex) {
|
|
72
|
+
tempIndex = midIndex;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
end = midIndex - 1;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
tempIndex = tempIndex || 0;
|
|
80
|
+
return tempIndex;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var getEndIndex = function getEndIndex(_ref) {
|
|
84
|
+
var sourceData = _ref.sourceData,
|
|
85
|
+
startIndex = _ref.startIndex,
|
|
86
|
+
visibleCount = _ref.visibleCount,
|
|
87
|
+
_ref$itemEqualSize = _ref.itemEqualSize,
|
|
88
|
+
itemEqualSize = _ref$itemEqualSize === void 0 ? true : _ref$itemEqualSize,
|
|
89
|
+
positions = _ref.positions,
|
|
90
|
+
offSetSize = _ref.offSetSize,
|
|
91
|
+
overscan = _ref.overscan,
|
|
92
|
+
_ref$sizeKey = _ref.sizeKey,
|
|
93
|
+
sizeKey = _ref$sizeKey === void 0 ? 'width' : _ref$sizeKey;
|
|
94
|
+
var dataLength = sourceData.length;
|
|
95
|
+
var tempIndex = null;
|
|
96
|
+
|
|
97
|
+
if (itemEqualSize) {
|
|
98
|
+
var endIndex = startIndex + visibleCount;
|
|
99
|
+
tempIndex = dataLength > 0 ? Math.min(dataLength, endIndex) : endIndex;
|
|
100
|
+
} else {
|
|
101
|
+
var sizeNum = 0;
|
|
102
|
+
|
|
103
|
+
for (var i = startIndex; i < dataLength; i++) {
|
|
104
|
+
sizeNum += positions[i][sizeKey] || 0;
|
|
105
|
+
|
|
106
|
+
if (sizeNum > offSetSize) {
|
|
107
|
+
var _endIndex = i + overscan;
|
|
108
|
+
|
|
109
|
+
tempIndex = dataLength > 0 ? Math.min(dataLength, _endIndex) : _endIndex;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (sizeNum < offSetSize) {
|
|
115
|
+
tempIndex = dataLength;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
tempIndex = tempIndex || 0;
|
|
120
|
+
return tempIndex;
|
|
121
|
+
}; // 更新Item大小
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
var updateItemSize = function updateItemSize(positions, items, sizeKey) {
|
|
125
|
+
var newPos = positions.concat();
|
|
126
|
+
Array.from(items).forEach(function (item) {
|
|
127
|
+
var index = Number(item.getAttribute('data-index'));
|
|
128
|
+
var styleVal = item.getAttribute('style');
|
|
129
|
+
if (styleVal && styleVal.includes('none')) return;
|
|
130
|
+
var nowSize = item.getBoundingClientRect()[sizeKey];
|
|
131
|
+
var oldSize = positions[index][sizeKey]; // 存在差值, 更新该节点以后所有的节点
|
|
132
|
+
|
|
133
|
+
var dValue = oldSize - nowSize;
|
|
134
|
+
|
|
135
|
+
if (dValue) {
|
|
136
|
+
if (sizeKey === 'width') {
|
|
137
|
+
newPos[index].right -= dValue;
|
|
138
|
+
newPos[index][sizeKey] = nowSize;
|
|
139
|
+
|
|
140
|
+
for (var k = index + 1; k < positions.length; k++) {
|
|
141
|
+
newPos[k].left = positions[k - 1].right;
|
|
142
|
+
newPos[k].right -= dValue;
|
|
143
|
+
}
|
|
144
|
+
} else if (sizeKey === 'height') {
|
|
145
|
+
newPos[index].bottom -= dValue;
|
|
146
|
+
newPos[index][sizeKey] = nowSize;
|
|
147
|
+
|
|
148
|
+
for (var _k = index + 1; _k < positions.length; _k++) {
|
|
149
|
+
newPos[_k].top = positions[_k - 1].bottom;
|
|
150
|
+
newPos[_k].bottom -= dValue;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
var defaultProps = {};
|
|
158
|
+
|
|
159
|
+
var VirtualList = function VirtualList(props) {
|
|
160
|
+
var _props$sourceData = props.sourceData,
|
|
161
|
+
sourceData = _props$sourceData === void 0 ? [] : _props$sourceData,
|
|
162
|
+
ItemRender = props.ItemRender,
|
|
163
|
+
_props$itemEqualSize = props.itemEqualSize,
|
|
164
|
+
itemEqualSize = _props$itemEqualSize === void 0 ? true : _props$itemEqualSize,
|
|
165
|
+
_props$itemSize = props.itemSize,
|
|
166
|
+
itemSize = _props$itemSize === void 0 ? 200 : _props$itemSize,
|
|
167
|
+
_props$horizontal = props.horizontal,
|
|
168
|
+
horizontal = _props$horizontal === void 0 ? false : _props$horizontal,
|
|
169
|
+
_props$overscan = props.overscan,
|
|
170
|
+
overscan = _props$overscan === void 0 ? 2 : _props$overscan,
|
|
171
|
+
key = props.key,
|
|
172
|
+
handleScroll = props.handleScroll,
|
|
173
|
+
className = props.className,
|
|
174
|
+
containerSize = props.containerSize,
|
|
175
|
+
rest = _objectWithoutProperties(props, _excluded);
|
|
176
|
+
|
|
177
|
+
var sizeKey = horizontal ? 'width' : 'height';
|
|
178
|
+
var scrollKey = horizontal ? 'scrollLeft' : 'scrollTop';
|
|
179
|
+
var offsetKey = horizontal ? 'left' : 'top';
|
|
180
|
+
useConfig(); // 虚拟列表容器ref
|
|
181
|
+
|
|
182
|
+
var scrollRef = useRef(null); // 虚拟列表显示区域ref
|
|
183
|
+
|
|
184
|
+
var itemsRef = useRef(null);
|
|
185
|
+
var firstItemRef = useRef(null); // 列表位置信息
|
|
186
|
+
|
|
187
|
+
var _useState = useState([{
|
|
188
|
+
index: 0,
|
|
189
|
+
left: 0,
|
|
190
|
+
top: 0,
|
|
191
|
+
bottom: 0,
|
|
192
|
+
width: 0,
|
|
193
|
+
height: 0,
|
|
194
|
+
right: 0
|
|
195
|
+
}]),
|
|
196
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
197
|
+
positions = _useState2[0],
|
|
198
|
+
setPositions = _useState2[1]; // 列表总大小
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
var _useState3 = useState(99999999),
|
|
202
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
203
|
+
listTotalSize = _useState4[0],
|
|
204
|
+
setListTotalSize = _useState4[1]; // 可视区域条数
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
var _useState5 = useState(0),
|
|
208
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
209
|
+
visibleCount = _useState6[0],
|
|
210
|
+
setVisibleCount = _useState6[1];
|
|
211
|
+
|
|
212
|
+
var _useState7 = useState(containerSize || 0),
|
|
213
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
214
|
+
offSetSize = _useState8[0],
|
|
215
|
+
setOffSetSize = _useState8[1];
|
|
216
|
+
|
|
217
|
+
var _useState9 = useState({
|
|
218
|
+
startOffset: 0,
|
|
219
|
+
startIndex: 0,
|
|
220
|
+
overStart: 0,
|
|
221
|
+
endIndex: 10 // 可视区域结束索引
|
|
222
|
+
|
|
223
|
+
}),
|
|
224
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
225
|
+
options = _useState10[0],
|
|
226
|
+
setOptions = _useState10[1]; // 列表位置信息
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
useEffect(function () {
|
|
230
|
+
var pos = initPositinoCache(itemSize, sourceData.length);
|
|
231
|
+
setPositions(pos);
|
|
232
|
+
var totalSize = getListTotalSize(pos, horizontal);
|
|
233
|
+
setListTotalSize(totalSize);
|
|
234
|
+
}, [sourceData, itemSize, horizontal]);
|
|
235
|
+
var getElement = useCallback(function () {
|
|
236
|
+
var _scrollRef$current;
|
|
237
|
+
|
|
238
|
+
return ((_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.parentElement) || document.body;
|
|
239
|
+
}, []);
|
|
240
|
+
useEffect(function () {
|
|
241
|
+
if (containerSize) return;
|
|
242
|
+
var size = horizontal ? getElement().offsetWidth : getElement().offsetHeight;
|
|
243
|
+
setOffSetSize(size);
|
|
244
|
+
}, [getElement, horizontal, containerSize]);
|
|
245
|
+
useEffect(function () {
|
|
246
|
+
// 初始-计算visibleCount
|
|
247
|
+
if (offSetSize === 0) return;
|
|
248
|
+
var count = Math.ceil(offSetSize / itemSize) + overscan;
|
|
249
|
+
setVisibleCount(count);
|
|
250
|
+
setOptions(function (options) {
|
|
251
|
+
return _objectSpread(_objectSpread({}, options), {}, {
|
|
252
|
+
endIndex: count
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
}, [getElement, horizontal, itemSize, overscan, offSetSize]);
|
|
256
|
+
var updateTotalSize = useCallback(function () {
|
|
257
|
+
if (!itemsRef.current) return;
|
|
258
|
+
var items = itemsRef.current.children;
|
|
259
|
+
if (!items.length) return; // 更新缓存
|
|
260
|
+
|
|
261
|
+
updateItemSize(positions, items, sizeKey);
|
|
262
|
+
var totalSize = getListTotalSize(positions, horizontal);
|
|
263
|
+
setListTotalSize(totalSize);
|
|
264
|
+
}, [positions, sizeKey, horizontal]);
|
|
265
|
+
var onScroll = useCallback(function () {
|
|
266
|
+
requestAnimationFrame(function (e) {
|
|
267
|
+
var scrollSize = getElement()[scrollKey];
|
|
268
|
+
var startIndex = binarySearch(positions, scrollSize, horizontal);
|
|
269
|
+
var overStart = startIndex - overscan > -1 ? startIndex - overscan : 0; // const offSetSize = horizontal ? getElement().offsetWidth : getElement().offsetHeight
|
|
270
|
+
|
|
271
|
+
if (!itemEqualSize) {
|
|
272
|
+
updateTotalSize();
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
var endIndex = getEndIndex({
|
|
276
|
+
sourceData: sourceData,
|
|
277
|
+
startIndex: startIndex,
|
|
278
|
+
visibleCount: visibleCount,
|
|
279
|
+
itemEqualSize: itemEqualSize,
|
|
280
|
+
positions: positions,
|
|
281
|
+
offSetSize: offSetSize,
|
|
282
|
+
sizeKey: sizeKey,
|
|
283
|
+
overscan: overscan
|
|
284
|
+
});
|
|
285
|
+
var startOffset = positions[startIndex][offsetKey];
|
|
286
|
+
setOptions({
|
|
287
|
+
startOffset: startOffset,
|
|
288
|
+
startIndex: startIndex,
|
|
289
|
+
overStart: overStart,
|
|
290
|
+
endIndex: endIndex
|
|
291
|
+
}); // 无限下滑
|
|
292
|
+
|
|
293
|
+
if (endIndex > sourceData.length - 1) {
|
|
294
|
+
handleScroll && handleScroll();
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
}, [positions, getElement, sourceData, visibleCount, itemEqualSize, updateTotalSize, offsetKey, sizeKey, scrollKey, horizontal, overscan, handleScroll, offSetSize]);
|
|
298
|
+
useEffect(function () {
|
|
299
|
+
var element = getElement();
|
|
300
|
+
element.addEventListener('scroll', onScroll, false);
|
|
301
|
+
return function () {
|
|
302
|
+
element.removeEventListener('scroll', onScroll, false);
|
|
303
|
+
};
|
|
304
|
+
}, [getElement, onScroll]);
|
|
305
|
+
return React__default.createElement("div", _objectSpread(_objectSpread({
|
|
306
|
+
className: className ? "".concat(className, " nut-virtualList-box") : 'nut-virtualList-box'
|
|
307
|
+
}, rest), {}, {
|
|
308
|
+
style: _defineProperty({}, sizeKey, containerSize ? "".concat(offSetSize, "px") : '')
|
|
309
|
+
}), React__default.createElement("div", {
|
|
310
|
+
ref: scrollRef,
|
|
311
|
+
className: horizontal ? 'nut-horizontal-box' : 'nut-vertical-box',
|
|
312
|
+
style: _defineProperty({
|
|
313
|
+
position: 'relative'
|
|
314
|
+
}, sizeKey, "".concat(listTotalSize, "px"))
|
|
315
|
+
}, React__default.createElement("ul", {
|
|
316
|
+
className: horizontal ? 'nut-virtuallist-items nut-horizontal-items' : 'nut-virtuallist-items nut-vertical-items',
|
|
317
|
+
ref: itemsRef,
|
|
318
|
+
style: {
|
|
319
|
+
transform: horizontal ? "translate3d(".concat(options.startOffset, "px,0,0)") : "translate3d(0,".concat(options.startOffset, "px,0)")
|
|
320
|
+
}
|
|
321
|
+
}, sourceData.slice(options.overStart, options.endIndex).map(function (data, index) {
|
|
322
|
+
var startIndex = options.startIndex,
|
|
323
|
+
overStart = options.overStart;
|
|
324
|
+
var dataIndex = overStart + index;
|
|
325
|
+
var styleVal = dataIndex < startIndex ? 'none' : 'block';
|
|
326
|
+
var keyVal = key && data[key] ? data[key] : dataIndex;
|
|
327
|
+
return React__default.createElement("li", {
|
|
328
|
+
ref: dataIndex === 0 ? firstItemRef : null,
|
|
329
|
+
"data-index": "".concat(dataIndex),
|
|
330
|
+
className: dataIndex % 2 === 0 ? 'nut-virtuallist-item even' : 'nut-virtuallist-item odd',
|
|
331
|
+
key: "".concat(keyVal),
|
|
332
|
+
style: {
|
|
333
|
+
display: styleVal
|
|
334
|
+
}
|
|
335
|
+
}, ItemRender ? React__default.createElement(ItemRender, {
|
|
336
|
+
data: data,
|
|
337
|
+
index: "".concat(dataIndex)
|
|
338
|
+
}) : data);
|
|
339
|
+
}))));
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
VirtualList.defaultProps = defaultProps;
|
|
343
|
+
VirtualList.displayName = 'NutVirtualList';
|
|
344
|
+
export { VirtualList as default };
|
|
File without changes
|