@chaoswise/ui 3.0.15 → 3.0.16
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/lib/Ace/diff.js +1 -0
- package/lib/Antd5/_util/scrollTo.js +3 -3
- package/lib/Antd5/anchor/Anchor.js +3 -3
- package/lib/Antd5/table/hooks/useFilter/FilterDropdown.js +6 -6
- package/lib/Antd5/table/hooks/useFilter/index.js +3 -3
- package/lib/Antd5/table/hooks/useLazyKVMap.js +3 -3
- package/lib/Antd5/table/hooks/useSelection.js +3 -3
- package/lib/Antd5/theme/useToken.js +4 -3
- package/lib/Badge/index.js +1 -1
- package/lib/CWCascader/rc-cascader/utils/warningPropsUtil.js +3 -3
- package/lib/CWColorPicker/SketchPicker/components/common/ColorWrap.js +1 -1
- package/lib/CWColorPicker/SketchPicker/components/common/Hue.js +1 -1
- package/lib/CWColorPicker/SketchPicker/components/common/Raised.js +1 -1
- package/lib/CWColorPicker/SketchPicker/components/common/Saturation.js +1 -1
- package/lib/CWColorPicker/SketchPicker/components/sketch/index.js +1 -1
- package/lib/CWColorPicker/SketchPicker/helpers/color.js +1 -1
- package/lib/CWRangePicker/Refresh/index.style.js +10 -5
- package/lib/CWRangePicker/index.js +2 -2
- package/lib/CWRangePicker/index.style.js +0 -6
- package/lib/CWTree/index.js +3 -3
- package/lib/CWTree/utils/index.js +4 -3
- package/lib/Collapse/index.js +1 -1
- package/lib/ConfigProvider/ConfigProvider.js +7 -4
- package/lib/DateRangePicker/index.js +2 -0
- package/lib/Documentation/Tocify.js +1 -1
- package/lib/Drawer/index.js +1 -1
- package/lib/EchartsArea/index.js +2 -2
- package/lib/EchartsBar/index.js +2 -2
- package/lib/EchartsBarRow/index.js +0 -2
- package/lib/EchartsBase/index.js +14 -14
- package/lib/EchartsLine/index.js +2 -2
- package/lib/EchartsPie/index.js +2 -3
- package/lib/EchartsRing/index.js +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/FilterDropDown/DragList.js +2 -1
- package/lib/Flow/BasicLayout/Chain.js +3 -3
- package/lib/Flow/BasicLayout/util.js +3 -3
- package/lib/Form/FormItem.js +3 -1
- package/lib/Form/hook/useForm3.js +3 -3
- package/lib/Form/index.js +1 -1
- package/lib/Formily/FieldList/index.js +43 -0
- package/lib/Formily/Form/index.js +2 -0
- package/lib/Formily/FormButtonGroup/index.js +2 -0
- package/lib/Formily/FormItem/index.js +90 -0
- package/lib/Formily/FormItem/items/Checkbox.js +13 -0
- package/lib/Formily/FormItem/items/DatePicker.js +121 -0
- package/lib/Formily/FormItem/items/Input.js +13 -0
- package/lib/Formily/FormItem/items/NumberPicker.js +9 -0
- package/lib/Formily/FormItem/items/Password.js +70 -0
- package/lib/Formily/FormItem/items/Radio.js +13 -0
- package/lib/Formily/FormItem/items/Range.js +82 -0
- package/lib/Formily/FormItem/items/Rating.js +8 -0
- package/lib/Formily/FormItem/items/Select.js +8 -0
- package/lib/Formily/FormItem/items/Switch.js +9 -0
- package/lib/Formily/FormItem/items/Tansfer.js +9 -0
- package/lib/Formily/FormItem/items/TimePicker.js +44 -0
- package/lib/Formily/FormItem/items/Upload.js +260 -0
- package/lib/Formily/FormItem/items/formItemWrapper.js +17 -0
- package/lib/Formily/FormItem/items/shared.js +140 -0
- package/lib/Formily/FormPath/index.js +2 -0
- package/lib/Formily/MegaLayout/index.js +24 -0
- package/lib/Formily/Reset/index.js +2 -0
- package/lib/Formily/Submit/index.js +2 -0
- package/lib/Formily/context.js +3 -0
- package/lib/Formily/formily/index.js +22 -0
- package/lib/Formily/index.js +5 -0
- package/lib/Formily/subscribeFields/index.js +46 -0
- package/lib/Header/UserSetting/utils.js +5 -4
- package/lib/Joyride/List.js +3 -3
- package/lib/Joyride/index.js +3 -3
- package/lib/Modal/Modal.js +1 -1
- package/lib/Modal/index.js +1 -1
- package/lib/Pagination/index.js +1 -1
- package/lib/QuickTransfer/index.js +5 -5
- package/lib/QuickTransfer/utils.js +32 -23
- package/lib/RangePicker/components/ExtraQuickSelect.js +51 -0
- package/lib/RangePicker/components/ExtraTimeFooter.js +71 -0
- package/lib/RangePicker/index.js +469 -2
- package/lib/RangePicker/index.style.js +110 -0
- package/lib/RangePicker/utils/index.js +171 -0
- package/lib/ScrollLoad/index.js +7 -2
- package/lib/SiderMenu/index.js +14 -14
- package/lib/SingleSpa/system/systemjs-css.js +3 -3
- package/lib/ThemeProvider/main.js +1 -0
- package/lib/TimeRangeSlider/Refresh/index.js +163 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/Limit.js +126 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/Limit.svg +50 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/LimitAreaSvg.js +110 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomPlaceholder.js +99 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomTimeDateProcess.js +36 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/index.js +56 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopDateProcess.js +32 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopPlaceholder.js +54 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/index.js +47 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useHover.js +31 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useMouse.js +410 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/index.js +72 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/utils/index.js +255 -0
- package/lib/TimeRangeSlider/TimeSpan/index.js +93 -0
- package/lib/TimeRangeSlider/assets/Calendar.js +15 -0
- package/lib/TimeRangeSlider/assets/Calendar2.js +15 -0
- package/lib/TimeRangeSlider/assets/Recover.js +18 -0
- package/lib/TimeRangeSlider/assets/Refresh1.js +14 -0
- package/lib/TimeRangeSlider/assets/Refresh2.js +14 -0
- package/lib/TimeRangeSlider/assets/Refresh3.js +14 -0
- package/lib/TimeRangeSlider/assets/live.js +19 -0
- package/lib/TimeRangeSlider/assets/more.js +23 -0
- package/lib/TimeRangeSlider/index.js +562 -0
- package/lib/TimeRangeSlider/locale/en_US.js +31 -0
- package/lib/TimeRangeSlider/locale/index.js +11 -0
- package/lib/TimeRangeSlider/locale/zh_CN.js +31 -0
- package/lib/TimeRangeSlider/locale/zh_TW.js +31 -0
- package/lib/TimeRangeSlider/styles/index.style.js +64 -0
- package/lib/TimeRangeSlider/styles/refresh.style.js +38 -0
- package/lib/TimeRangeSlider/styles/timeRangeSliderBottom.style.js +125 -0
- package/lib/TimeRangeSlider/styles/timeRangeSliderTop.style.js +81 -0
- package/lib/TimeRangeSlider/styles/timeSpan.style.js +22 -0
- package/lib/TimeRangeSlider/utils/index.js +737 -0
- package/lib/UniversalLayout/index.js +4 -4
- package/lib/antd-style/factories/createThemeProvider/AntdProvider.js +5 -1
- package/lib/antd-style/functions/extractStaticStyle.js +1 -1
- package/lib/antd-style/hooks/useAntdToken.js +1 -1
- package/lib/antd-style/hooks/useResponsive.js +1 -1
- package/lib/antd-style/utils/css.js +3 -2
- package/lib/locales/en_US.json +1 -1
- package/lib/locales/zh_CN.json +1 -1
- package/lib/locales/zh_TW.json +1 -1
- package/lib/useLocale/index.js +20 -0
- package/package.json +5 -1
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
8
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
10
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
11
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
13
|
+
import React, { useState, useEffect, useRef } from "react";
|
|
14
|
+
import { getCorrectValue } from "../../utils";
|
|
15
|
+
import { getPositionInfoByDateInfo, getDateInfoByPositionInfo, getPositionInfoByTimeDateInfo, getTimeDateInfoByPositionInfo, isSameOrAfter, getOffsetLeft, getBottomSliderHoverInfo } from "../utils";
|
|
16
|
+
import useHover from "./useHover";
|
|
17
|
+
import moment from "moment";
|
|
18
|
+
var useMouse = function useMouse(_ref) {
|
|
19
|
+
var timeBoundary = _ref.timeBoundary,
|
|
20
|
+
isHandleClickRef = _ref.isHandleClickRef,
|
|
21
|
+
onChange = _ref.onChange,
|
|
22
|
+
timeSliderWidth = _ref.timeSliderWidth,
|
|
23
|
+
visible = _ref.visible,
|
|
24
|
+
inputRef = _ref.inputRef,
|
|
25
|
+
recordDate = _ref.recordDate,
|
|
26
|
+
TimeRangeSliderBottomWrapperRef = _ref.TimeRangeSliderBottomWrapperRef;
|
|
27
|
+
var min = timeBoundary.min,
|
|
28
|
+
max = timeBoundary.max,
|
|
29
|
+
days = timeBoundary.days;
|
|
30
|
+
var _useState = useState({
|
|
31
|
+
topDragStatus: false,
|
|
32
|
+
bottomDragStatus: false
|
|
33
|
+
}),
|
|
34
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
+
sliderDragStatusInfo = _useState2[0],
|
|
36
|
+
setSliderDragStatusInfo = _useState2[1];
|
|
37
|
+
var _useState3 = useState({
|
|
38
|
+
left: 0,
|
|
39
|
+
date: []
|
|
40
|
+
}),
|
|
41
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
42
|
+
topSliderInfo = _useState4[0],
|
|
43
|
+
setTopSliderInfo = _useState4[1];
|
|
44
|
+
var _useState5 = useState({
|
|
45
|
+
width: 0,
|
|
46
|
+
left: 0,
|
|
47
|
+
date: [],
|
|
48
|
+
canDrag: true
|
|
49
|
+
}),
|
|
50
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
51
|
+
bottomSliderInfo = _useState6[0],
|
|
52
|
+
setBottomSliderInfo = _useState6[1];
|
|
53
|
+
var _useState7 = useState({
|
|
54
|
+
width: 0,
|
|
55
|
+
left: 0,
|
|
56
|
+
date: []
|
|
57
|
+
}),
|
|
58
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
59
|
+
bottomSliderHoverInfo = _useState8[0],
|
|
60
|
+
setBottomSliderHoverInfo = _useState8[1];
|
|
61
|
+
var _useState9 = useState([]),
|
|
62
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
63
|
+
recordTimeDateWrapper = _useState10[0],
|
|
64
|
+
setRecordTimeDateWrapper = _useState10[1]; // 记录时间日期用于时间滑块外层容器渲染
|
|
65
|
+
var currentMomentRef = useRef(moment()); // 保存当前时间,用于计算时间滑块位置(下部分滑块),每次打开弹窗时更新
|
|
66
|
+
var recordEndTimeDateWrapper = useRef([]); // 保存最后一次时间日期用于时间滑块外层容器渲染(拖拽结束后)(下部分滑块)
|
|
67
|
+
var dragableRef = useRef({
|
|
68
|
+
status: false,
|
|
69
|
+
// 记录拖拽状态
|
|
70
|
+
position: undefined,
|
|
71
|
+
// 记录拖拽位置
|
|
72
|
+
resizePosition: undefined,
|
|
73
|
+
// 记录左右拖拽信息
|
|
74
|
+
initialWidth: 0,
|
|
75
|
+
// 记录初始宽度
|
|
76
|
+
initialMouseX: 0,
|
|
77
|
+
// 记录鼠标按下时的位置
|
|
78
|
+
initialLeft: 0,
|
|
79
|
+
cutOutInfo: {
|
|
80
|
+
canCutOut: false,
|
|
81
|
+
initialPosition: 0
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
var bottomSliderInfoRef = useRef({
|
|
85
|
+
width: 0,
|
|
86
|
+
left: 0,
|
|
87
|
+
date: [],
|
|
88
|
+
canDrag: true
|
|
89
|
+
});
|
|
90
|
+
var isHoverBottomWrapper = useHover(TimeRangeSliderBottomWrapperRef);
|
|
91
|
+
var millisecondsOfTheDay = moment.duration(1, "days").valueOf(); // 一天的毫秒数 86400000
|
|
92
|
+
var minWidth = min / millisecondsOfTheDay * timeSliderWidth;
|
|
93
|
+
var maxWidth = max / millisecondsOfTheDay * timeSliderWidth;
|
|
94
|
+
useEffect(function () {
|
|
95
|
+
document.addEventListener("mousemove", move);
|
|
96
|
+
document.addEventListener("mouseup", endMove);
|
|
97
|
+
return function () {
|
|
98
|
+
document.removeEventListener("mousemove", move);
|
|
99
|
+
document.removeEventListener("mouseup", endMove);
|
|
100
|
+
};
|
|
101
|
+
}, []);
|
|
102
|
+
useEffect(function () {
|
|
103
|
+
if (!visible) {
|
|
104
|
+
inputRef.current.blur();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (Array.isArray(recordDate) && recordDate.length) {
|
|
108
|
+
currentMomentRef.current = moment();
|
|
109
|
+
var endDate = recordDate[1].clone();
|
|
110
|
+
var startDate = recordDate[1].clone().subtract(1, "days");
|
|
111
|
+
var startLeft = getPositionInfoByDateInfo(startDate, timeSliderWidth, currentMomentRef.current, days);
|
|
112
|
+
var newRecordEndTimeDateWrapper = [startDate, endDate];
|
|
113
|
+
recordEndTimeDateWrapper.current = newRecordEndTimeDateWrapper;
|
|
114
|
+
setTopSliderInfo(function (pre) {
|
|
115
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
116
|
+
left: startLeft,
|
|
117
|
+
date: newRecordEndTimeDateWrapper
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
setBottomSliderInfo(function (pre) {
|
|
121
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
122
|
+
date: recordDate
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
setRecordTimeDateWrapper(newRecordEndTimeDateWrapper);
|
|
126
|
+
}
|
|
127
|
+
}, [visible]);
|
|
128
|
+
useEffect(function () {
|
|
129
|
+
bottomSliderInfoRef.current = bottomSliderInfo;
|
|
130
|
+
}, [bottomSliderInfo]);
|
|
131
|
+
// 下半部分滑块信息
|
|
132
|
+
useEffect(function () {
|
|
133
|
+
var positionInfo = getPositionInfoByTimeDateInfo(recordDate, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
|
|
134
|
+
var date = getTimeDateInfoByPositionInfo(positionInfo.left, positionInfo.width, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
|
|
135
|
+
setBottomSliderInfo(function (pre) {
|
|
136
|
+
return _objectSpread(_objectSpread(_objectSpread({}, pre), positionInfo), {}, {
|
|
137
|
+
date: [date.startDate, date.endDate]
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
}, [recordDate, recordTimeDateWrapper]);
|
|
141
|
+
var resStartLeftDate = currentMomentRef.current.clone().subtract(1, "days");
|
|
142
|
+
var resStartLeftDatePosition = getPositionInfoByDateInfo(resStartLeftDate, timeSliderWidth, currentMomentRef.current, days);
|
|
143
|
+
/**
|
|
144
|
+
* 顶部滑块拖拽中
|
|
145
|
+
* @param {*} e
|
|
146
|
+
*/
|
|
147
|
+
var topSliderMove = function topSliderMove(e) {
|
|
148
|
+
var _dragableRef$current = dragableRef.current,
|
|
149
|
+
initialMouseX = _dragableRef$current.initialMouseX,
|
|
150
|
+
initialLeft = _dragableRef$current.initialLeft;
|
|
151
|
+
// 计算当前偏移量
|
|
152
|
+
var offset = e.clientX - initialMouseX;
|
|
153
|
+
var left = Number(initialLeft + offset);
|
|
154
|
+
if (left < 0) {
|
|
155
|
+
left = 0;
|
|
156
|
+
} else if (left > resStartLeftDatePosition) {
|
|
157
|
+
left = resStartLeftDatePosition;
|
|
158
|
+
}
|
|
159
|
+
var _getDateInfoByPositio = getDateInfoByPositionInfo(left, timeSliderWidth, currentMomentRef.current, days),
|
|
160
|
+
startDate = _getDateInfoByPositio.startDate,
|
|
161
|
+
endDate = _getDateInfoByPositio.endDate;
|
|
162
|
+
var newRecordEndTimeDateWrapper = [startDate, endDate];
|
|
163
|
+
recordEndTimeDateWrapper.current = newRecordEndTimeDateWrapper;
|
|
164
|
+
setTopSliderInfo({
|
|
165
|
+
left: left,
|
|
166
|
+
date: newRecordEndTimeDateWrapper
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* 底部滑块拖拽中
|
|
171
|
+
* @param {*} e
|
|
172
|
+
*/
|
|
173
|
+
var bottomSliderMove = function bottomSliderMove(e) {
|
|
174
|
+
var _dragableRef$current2 = dragableRef.current,
|
|
175
|
+
initialMouseX = _dragableRef$current2.initialMouseX,
|
|
176
|
+
resizePosition = _dragableRef$current2.resizePosition,
|
|
177
|
+
initialWidth = _dragableRef$current2.initialWidth,
|
|
178
|
+
initialLeft = _dragableRef$current2.initialLeft;
|
|
179
|
+
// 计算当前偏移量
|
|
180
|
+
var offset = e.clientX - initialMouseX;
|
|
181
|
+
var width = initialWidth;
|
|
182
|
+
var left = initialLeft;
|
|
183
|
+
var canDrag = true;
|
|
184
|
+
if (!resizePosition) {
|
|
185
|
+
left = Number(initialLeft + offset);
|
|
186
|
+
} else if (resizePosition === "left") {
|
|
187
|
+
width = Number(initialWidth - offset);
|
|
188
|
+
left = Number(initialLeft + offset);
|
|
189
|
+
if (width < minWidth) {
|
|
190
|
+
width = minWidth;
|
|
191
|
+
left = Number(bottomSliderInfoRef.current.left + bottomSliderInfoRef.current.width - minWidth);
|
|
192
|
+
canDrag = false;
|
|
193
|
+
} else if (width > maxWidth) {
|
|
194
|
+
width = maxWidth;
|
|
195
|
+
left = Number(bottomSliderInfoRef.current.left + bottomSliderInfoRef.current.width - maxWidth);
|
|
196
|
+
canDrag = false;
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
width = Number(initialWidth + offset);
|
|
200
|
+
if (width < minWidth) {
|
|
201
|
+
width = minWidth;
|
|
202
|
+
canDrag = false;
|
|
203
|
+
} else if (width > maxWidth) {
|
|
204
|
+
width = maxWidth;
|
|
205
|
+
canDrag = false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
var date = getTimeDateInfoByPositionInfo(left, width, timeSliderWidth, currentMomentRef.current, recordEndTimeDateWrapper.current, days);
|
|
209
|
+
var startDate = currentMomentRef.current.clone().subtract(days, "days");
|
|
210
|
+
var isSameOrAfterStart = isSameOrAfter(date.startDate, startDate);
|
|
211
|
+
var isSameOrAfterEnd = isSameOrAfter(currentMomentRef.current, date.endDate);
|
|
212
|
+
if (!isSameOrAfterStart || !isSameOrAfterEnd) return;
|
|
213
|
+
var newTimeDate = [date.startDate, date.endDate];
|
|
214
|
+
setBottomSliderInfo(function (pre) {
|
|
215
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
216
|
+
width: width,
|
|
217
|
+
left: left,
|
|
218
|
+
date: newTimeDate,
|
|
219
|
+
canDrag: canDrag
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* 底部滑块截取拖拽中:创建新滑块并移动
|
|
225
|
+
* @param {*} e
|
|
226
|
+
*/
|
|
227
|
+
var bottomSliderCutOutMove = function bottomSliderCutOutMove(e) {
|
|
228
|
+
var initialPosition = dragableRef.current.cutOutInfo.initialPosition;
|
|
229
|
+
setSliderDragStatusInfo({
|
|
230
|
+
topDragStatus: false,
|
|
231
|
+
bottomDragStatus: true
|
|
232
|
+
});
|
|
233
|
+
var movePosition = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef);
|
|
234
|
+
var offset = movePosition - initialPosition;
|
|
235
|
+
if (Math.abs(offset) > 0) {
|
|
236
|
+
if (Math.abs(offset) >= minWidth && Math.abs(offset) <= maxWidth) {
|
|
237
|
+
var resInitialPosition = initialPosition; // 初始定位left
|
|
238
|
+
var resWidth = Math.abs(offset); // width
|
|
239
|
+
if (offset < 0) {
|
|
240
|
+
resInitialPosition = movePosition;
|
|
241
|
+
}
|
|
242
|
+
var date = getTimeDateInfoByPositionInfo(resInitialPosition, resWidth, timeSliderWidth, currentMomentRef.current, recordEndTimeDateWrapper.current, days);
|
|
243
|
+
var startDate = currentMomentRef.current.clone().subtract(days, "days");
|
|
244
|
+
var isSameOrAfterStart = isSameOrAfter(date.startDate, startDate);
|
|
245
|
+
var isSameOrAfterEnd = isSameOrAfter(currentMomentRef.current, date.endDate);
|
|
246
|
+
if (!isSameOrAfterStart || !isSameOrAfterEnd) return;
|
|
247
|
+
var newTimeDate = [date.startDate, date.endDate];
|
|
248
|
+
setBottomSliderInfo(function (pre) {
|
|
249
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
250
|
+
width: resWidth,
|
|
251
|
+
left: resInitialPosition,
|
|
252
|
+
date: newTimeDate,
|
|
253
|
+
canDrag: true
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* 拖拽中
|
|
261
|
+
* @param {*} e : 事件对象
|
|
262
|
+
* @returns
|
|
263
|
+
*/
|
|
264
|
+
var move = function move(e) {
|
|
265
|
+
var left = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef); // 计算鼠标位置距离目标元素左侧的距离
|
|
266
|
+
var _getBottomSliderHover = getBottomSliderHoverInfo(left, bottomSliderInfoRef, timeSliderWidth, currentMomentRef, recordEndTimeDateWrapper.current, days),
|
|
267
|
+
hoverTimeDate = _getBottomSliderHover.date,
|
|
268
|
+
hoverLeft = _getBottomSliderHover.left,
|
|
269
|
+
hoverWidth = _getBottomSliderHover.width;
|
|
270
|
+
setBottomSliderHoverInfo({
|
|
271
|
+
left: hoverLeft,
|
|
272
|
+
width: hoverWidth,
|
|
273
|
+
date: hoverTimeDate
|
|
274
|
+
});
|
|
275
|
+
var canCutOut = dragableRef.current.cutOutInfo.canCutOut;
|
|
276
|
+
isHandleClickRef.current = e.buttons !== 1; // e.buttons === 1 为鼠标左键按下
|
|
277
|
+
if (canCutOut && !isHandleClickRef.current) {
|
|
278
|
+
// 截取
|
|
279
|
+
bottomSliderCutOutMove(e);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
var _dragableRef$current3 = dragableRef.current,
|
|
283
|
+
status = _dragableRef$current3.status,
|
|
284
|
+
position = _dragableRef$current3.position;
|
|
285
|
+
if (!status) return;
|
|
286
|
+
if (position === "top") {
|
|
287
|
+
topSliderMove(e);
|
|
288
|
+
}
|
|
289
|
+
if (position === "bottom") {
|
|
290
|
+
bottomSliderMove(e);
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* 拖拽结束
|
|
295
|
+
* @param {*} e : 事件对象
|
|
296
|
+
*/
|
|
297
|
+
var endMove = function endMove(e) {
|
|
298
|
+
var position = dragableRef.current.position;
|
|
299
|
+
if (position === "top") {
|
|
300
|
+
setRecordTimeDateWrapper(recordEndTimeDateWrapper.current);
|
|
301
|
+
}
|
|
302
|
+
if (position === "bottom") {
|
|
303
|
+
var returnValue = getCorrectValue({
|
|
304
|
+
value: bottomSliderInfoRef.current.date
|
|
305
|
+
});
|
|
306
|
+
onChange(returnValue);
|
|
307
|
+
}
|
|
308
|
+
setSliderDragStatusInfo({
|
|
309
|
+
topDragStatus: false,
|
|
310
|
+
bottomDragStatus: false
|
|
311
|
+
});
|
|
312
|
+
dragableRef.current = _objectSpread(_objectSpread({}, dragableRef.current), {}, {
|
|
313
|
+
status: false,
|
|
314
|
+
position: undefined,
|
|
315
|
+
initialWidth: 0,
|
|
316
|
+
resizePosition: undefined,
|
|
317
|
+
initialMouseX: 0,
|
|
318
|
+
initialLeft: 0,
|
|
319
|
+
cutOutInfo: {
|
|
320
|
+
canCutOut: false,
|
|
321
|
+
initialPosition: 0
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
setBottomSliderInfo(function (pre) {
|
|
325
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
326
|
+
canDrag: true
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* 拖拽开始、滑块按下机制触发: 记录拖拽信息
|
|
332
|
+
* @param {*} e : 事件对象
|
|
333
|
+
* @param {*} position : top 上部分滑块 bottom 下部分滑块
|
|
334
|
+
* @param {*} resizePosition : position = "bottom" 情况下 left 向左拖拽 right 向右拖拽
|
|
335
|
+
*/
|
|
336
|
+
var beginMouseDown = function beginMouseDown(e, position, resizePosition) {
|
|
337
|
+
e.stopPropagation();
|
|
338
|
+
e.preventDefault();
|
|
339
|
+
var X = e.clientX;
|
|
340
|
+
var initialLeft = bottomSliderInfo.left;
|
|
341
|
+
if (position === "top") {
|
|
342
|
+
initialLeft = topSliderInfo.left;
|
|
343
|
+
}
|
|
344
|
+
setSliderDragStatusInfo({
|
|
345
|
+
topDragStatus: position === "top",
|
|
346
|
+
bottomDragStatus: position === "bottom"
|
|
347
|
+
});
|
|
348
|
+
dragableRef.current = _objectSpread(_objectSpread({}, dragableRef.current), {}, {
|
|
349
|
+
status: true,
|
|
350
|
+
position: position,
|
|
351
|
+
resizePosition: resizePosition,
|
|
352
|
+
// 左右拖拽
|
|
353
|
+
initialWidth: bottomSliderInfo.width,
|
|
354
|
+
// 左右拖拽
|
|
355
|
+
initialMouseX: X,
|
|
356
|
+
initialLeft: initialLeft
|
|
357
|
+
});
|
|
358
|
+
};
|
|
359
|
+
/**
|
|
360
|
+
* 点击下部分滑块
|
|
361
|
+
* @param {*} e : 事件对象
|
|
362
|
+
* @returns
|
|
363
|
+
*/
|
|
364
|
+
var clickBottomWrapper = function clickBottomWrapper(e) {
|
|
365
|
+
e.stopPropagation();
|
|
366
|
+
if (!isHandleClickRef.current) {
|
|
367
|
+
isHandleClickRef.current = true;
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
var left = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef); // 计算鼠标位置距离目标元素左侧的距离
|
|
371
|
+
var _getBottomSliderHover2 = getBottomSliderHoverInfo(left, bottomSliderInfoRef, timeSliderWidth, currentMomentRef, recordTimeDateWrapper, days),
|
|
372
|
+
newTimeDate = _getBottomSliderHover2.date,
|
|
373
|
+
hoverLeft = _getBottomSliderHover2.left;
|
|
374
|
+
setBottomSliderInfo(function (pre) {
|
|
375
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
376
|
+
left: hoverLeft,
|
|
377
|
+
date: newTimeDate
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
var returnValue = getCorrectValue({
|
|
381
|
+
value: newTimeDate
|
|
382
|
+
});
|
|
383
|
+
onChange(returnValue);
|
|
384
|
+
};
|
|
385
|
+
var beginDrawMouseDown = function beginDrawMouseDown(e) {
|
|
386
|
+
e.stopPropagation();
|
|
387
|
+
e.preventDefault();
|
|
388
|
+
var initialPosition = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef);
|
|
389
|
+
dragableRef.current = _objectSpread(_objectSpread({}, dragableRef.current), {}, {
|
|
390
|
+
position: "bottom",
|
|
391
|
+
cutOutInfo: {
|
|
392
|
+
canCutOut: true,
|
|
393
|
+
initialPosition: initialPosition
|
|
394
|
+
}
|
|
395
|
+
});
|
|
396
|
+
};
|
|
397
|
+
return {
|
|
398
|
+
topSliderInfo: topSliderInfo,
|
|
399
|
+
bottomSliderInfo: bottomSliderInfo,
|
|
400
|
+
recordTimeDateWrapper: recordTimeDateWrapper,
|
|
401
|
+
currentMomentRef: currentMomentRef,
|
|
402
|
+
beginMouseDown: beginMouseDown,
|
|
403
|
+
clickBottomWrapper: clickBottomWrapper,
|
|
404
|
+
bottomSliderHoverInfo: bottomSliderHoverInfo,
|
|
405
|
+
isHoverBottomWrapper: isHoverBottomWrapper,
|
|
406
|
+
beginDrawMouseDown: beginDrawMouseDown,
|
|
407
|
+
sliderDragStatusInfo: sliderDragStatusInfo
|
|
408
|
+
};
|
|
409
|
+
};
|
|
410
|
+
export default useMouse;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { useRef, Fragment } from "react";
|
|
2
|
+
import TopSlider from "./components/TopSlider";
|
|
3
|
+
import BottomSlider from "./components/BottomSlider";
|
|
4
|
+
import useMouse from "./hooks/useMouse";
|
|
5
|
+
var TimeRangeSliderCmp = function TimeRangeSliderCmp(props) {
|
|
6
|
+
var visible = props.visible,
|
|
7
|
+
recordDate = props.value,
|
|
8
|
+
_props$timeBoundary = props.timeBoundary,
|
|
9
|
+
timeBoundary = _props$timeBoundary === void 0 ? {
|
|
10
|
+
min: 10 * 60 * 1000,
|
|
11
|
+
// 5分钟的毫秒数
|
|
12
|
+
max: 24 * 60 * 60 * 1000,
|
|
13
|
+
// 一天的毫秒数
|
|
14
|
+
days: 30 // 30天
|
|
15
|
+
} : _props$timeBoundary,
|
|
16
|
+
_props$onChange = props.onChange,
|
|
17
|
+
onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
|
|
18
|
+
inputRef = props.inputRef,
|
|
19
|
+
isHandleClickRef = props.isHandleClickRef,
|
|
20
|
+
_props$timeSliderOpti = props.timeSliderOption,
|
|
21
|
+
timeSliderOption = _props$timeSliderOpti === void 0 ? {} : _props$timeSliderOpti;
|
|
22
|
+
var _timeSliderOption$tim = timeSliderOption.timeSliderWidth,
|
|
23
|
+
timeSliderWidth = _timeSliderOption$tim === void 0 ? 1152 : _timeSliderOption$tim;
|
|
24
|
+
var TimeRangeSliderWrapperRef = useRef(null); // 时间滑块外层容器dom(上部分滑块)
|
|
25
|
+
var TimeRangeAreaLimitSlider = useRef(null); // 时间滑块dom(上部分滑块)
|
|
26
|
+
var TimeRangeAreaLimitBottomSlider = useRef(null); // 时间滑块dom(下部分滑块)
|
|
27
|
+
var TimeRangeSliderBottomWrapperRef = useRef(null); // 时间滑块外层容器dom(下部分滑块)
|
|
28
|
+
var _useMouse = useMouse({
|
|
29
|
+
timeBoundary: timeBoundary,
|
|
30
|
+
isHandleClickRef: isHandleClickRef,
|
|
31
|
+
onChange: onChange,
|
|
32
|
+
timeSliderWidth: timeSliderWidth,
|
|
33
|
+
visible: visible,
|
|
34
|
+
inputRef: inputRef,
|
|
35
|
+
recordDate: recordDate,
|
|
36
|
+
TimeRangeSliderBottomWrapperRef: TimeRangeSliderBottomWrapperRef
|
|
37
|
+
}),
|
|
38
|
+
topSliderInfo = _useMouse.topSliderInfo,
|
|
39
|
+
bottomSliderInfo = _useMouse.bottomSliderInfo,
|
|
40
|
+
recordTimeDateWrapper = _useMouse.recordTimeDateWrapper,
|
|
41
|
+
currentMomentRef = _useMouse.currentMomentRef,
|
|
42
|
+
beginMouseDown = _useMouse.beginMouseDown,
|
|
43
|
+
clickBottomWrapper = _useMouse.clickBottomWrapper,
|
|
44
|
+
bottomSliderHoverInfo = _useMouse.bottomSliderHoverInfo,
|
|
45
|
+
isHoverBottomWrapper = _useMouse.isHoverBottomWrapper,
|
|
46
|
+
beginDrawMouseDown = _useMouse.beginDrawMouseDown,
|
|
47
|
+
sliderDragStatusInfo = _useMouse.sliderDragStatusInfo;
|
|
48
|
+
return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(TopSlider, {
|
|
49
|
+
TimeRangeSliderWrapperRef: TimeRangeSliderWrapperRef,
|
|
50
|
+
TimeRangeAreaLimitSlider: TimeRangeAreaLimitSlider,
|
|
51
|
+
currentMomentRef: currentMomentRef,
|
|
52
|
+
timeSliderWidth: timeSliderWidth,
|
|
53
|
+
timeBoundary: timeBoundary,
|
|
54
|
+
beginMouseDown: beginMouseDown,
|
|
55
|
+
topSliderInfo: topSliderInfo
|
|
56
|
+
}), /*#__PURE__*/React.createElement(BottomSlider, {
|
|
57
|
+
TimeRangeAreaLimitBottomSlider: TimeRangeAreaLimitBottomSlider,
|
|
58
|
+
timeSliderWidth: timeSliderWidth,
|
|
59
|
+
clickBottomWrapper: clickBottomWrapper,
|
|
60
|
+
beginMouseDown: beginMouseDown,
|
|
61
|
+
bottomSliderInfo: bottomSliderInfo,
|
|
62
|
+
recordTimeDateWrapper: recordTimeDateWrapper,
|
|
63
|
+
TimeRangeSliderBottomWrapperRef: TimeRangeSliderBottomWrapperRef,
|
|
64
|
+
bottomSliderHoverInfo: bottomSliderHoverInfo,
|
|
65
|
+
isHoverBottomWrapper: isHoverBottomWrapper,
|
|
66
|
+
beginDrawMouseDown: beginDrawMouseDown,
|
|
67
|
+
visible: visible // 组件卸载的慢,手动控制tooltip隐藏,不然关闭的时候会有些许延迟 . todo: 开启的时候会有两次不同位置,未解决
|
|
68
|
+
,
|
|
69
|
+
sliderDragStatusInfo: sliderDragStatusInfo
|
|
70
|
+
}));
|
|
71
|
+
};
|
|
72
|
+
export default TimeRangeSliderCmp;
|