@chaoswise/ui 2.5.2 → 2.5.4
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/ace.js +6 -7
- package/lib/Ace/diff.js +6 -7
- package/lib/Ace/split.js +6 -7
- package/lib/Antd4Form/FormItemChildren.js +5 -6
- package/lib/CWSelect/antd-select.js +6 -7
- package/lib/CWTable/util.js +1 -1
- package/lib/CWTree/index.js +65 -64
- package/lib/CWUpload/upload/Upload.js +5 -6
- package/lib/CWUpload/upload/UploadList.js +5 -6
- package/lib/Checkbox/Checkbox.js +6 -7
- package/lib/Checkbox/Group.js +6 -7
- package/lib/ErrorBoundary/index.js +6 -7
- package/lib/Menu/menu/MenuItem.js +5 -6
- package/lib/Menu/menu/SubMenu.js +5 -6
- package/lib/Menu/menu/index.js +6 -8
- package/lib/Modal/Modal.js +6 -7
- package/lib/ModuleFederation/ErrorBoundary/index.js +5 -6
- package/lib/Radio/Group.js +6 -7
- package/lib/Radio/Radio.js +6 -7
- package/lib/SiderMenu/Item.js +5 -6
- package/lib/SingleSpa/hooks/useErrorHandle.js +65 -0
- package/lib/SingleSpa/hooks/useModel.js +31 -0
- package/lib/SingleSpa/import-html/utils.js +14 -11
- package/lib/SingleSpa/index.js +35 -13
- package/lib/SingleSpa/singleSpa/single-spa.dev.js +11 -6
- package/lib/SingleSpa/system/amd.js +1 -0
- package/lib/SingleSpa/system/system.js +23 -16
- package/lib/SingleSpa/utils.js +15 -2
- package/lib/Table/index.js +29 -2
- package/lib/Table/util.js +15 -0
- package/lib/TimeRangeSlider/Refresh/index.js +161 -0
- package/lib/TimeRangeSlider/Refresh/index.less +26 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/LimitAreaSvg.js +110 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomPlaceholder.js +70 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomTimeDateProcess.js +36 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/index.js +38 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/index.less +113 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopDateProcess.js +36 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopPlaceholder.js +36 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/index.js +31 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/index.less +79 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useHover.js +31 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useMouse.js +325 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/index.js +73 -0
- package/lib/TimeRangeSlider/TimeRangeSliderCmp/utils/index.js +227 -0
- package/lib/TimeRangeSlider/TimeSpan/index.js +81 -0
- package/lib/TimeRangeSlider/TimeSpan/index.less +12 -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 +480 -0
- package/lib/TimeRangeSlider/index.less +122 -0
- package/lib/TimeRangeSlider/locale/en_US.js +29 -0
- package/lib/TimeRangeSlider/locale/index.js +11 -0
- package/lib/TimeRangeSlider/locale/zh_CN.js +29 -0
- package/lib/TimeRangeSlider/locale/zh_TW.js +29 -0
- package/lib/TimeRangeSlider/utils/index.js +712 -0
- package/lib/TooltipText/ResizeObserverManager.js +56 -0
- package/lib/TooltipText/index.js +50 -60
- package/package.json +3 -3
- package/lib/Col/Collapse.less +0 -129
- package/lib/Select/TreeSelect.less +0 -10
- package/lib/Tree/TreeSelect.less +0 -10
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
.time-range-slider-bottom-wrapper {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
height: 48px;
|
|
5
|
+
border: @border-width-base @border-style-base @border-color-base;
|
|
6
|
+
position: relative;
|
|
7
|
+
|
|
8
|
+
.time-range-single-slider-bottom {
|
|
9
|
+
position: relative;
|
|
10
|
+
height: 100%;
|
|
11
|
+
|
|
12
|
+
.time-range-single-slider-bottom-HH-MM {
|
|
13
|
+
position: absolute;
|
|
14
|
+
width: 40px;
|
|
15
|
+
text-align: center;
|
|
16
|
+
background-color: @component-background;
|
|
17
|
+
height: 20px;
|
|
18
|
+
line-height: 20px;
|
|
19
|
+
top: 13px;
|
|
20
|
+
right: -20px;
|
|
21
|
+
z-index: 2;
|
|
22
|
+
color: @text-color-secondary;
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.time-range-single-slider-bottom-cut-line {
|
|
27
|
+
position: absolute;
|
|
28
|
+
border-left: @border-width-base @border-style-base @border-color-base;
|
|
29
|
+
right: -0.5px;
|
|
30
|
+
height: 12px;
|
|
31
|
+
|
|
32
|
+
&.time-range-single-slider-bottom-cut-line-bottom {
|
|
33
|
+
bottom: 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.time-range-single-slider-bottom-MM-DD {
|
|
38
|
+
position: absolute;
|
|
39
|
+
width: 40px;
|
|
40
|
+
text-align: center;
|
|
41
|
+
background-color: @component-background;
|
|
42
|
+
height: 20px;
|
|
43
|
+
line-height: 20px;
|
|
44
|
+
bottom: -24px;
|
|
45
|
+
right: -20px;
|
|
46
|
+
z-index: 2;
|
|
47
|
+
color: @text-color-secondary;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
.time-range-slider-bottom-clone-wrapper {
|
|
54
|
+
position: absolute;
|
|
55
|
+
height: 48px;
|
|
56
|
+
left: -1px;
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
z-index: 3;
|
|
59
|
+
cursor: crosshair;
|
|
60
|
+
|
|
61
|
+
.time-range-area-limit-slider-bottom-wrapper {
|
|
62
|
+
position: absolute;
|
|
63
|
+
cursor: move;
|
|
64
|
+
border: @border-width-base dashed @primary-color;
|
|
65
|
+
z-index: 2;
|
|
66
|
+
|
|
67
|
+
&.time-range-area-limit-slider-bottom-wrapper-not-drag {
|
|
68
|
+
border-color: @error-color;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.time-range-area-limit-slider-bottom-resize {
|
|
72
|
+
position: absolute;
|
|
73
|
+
left: -7px;
|
|
74
|
+
width: 6px;
|
|
75
|
+
height: 24px;
|
|
76
|
+
top: 11px;
|
|
77
|
+
cursor: ew-resize;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.time-range-area-limit-slider-bottom-resize-right {
|
|
81
|
+
right: -7px;
|
|
82
|
+
left: auto;
|
|
83
|
+
transform: rotateY(180deg);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.time-range-area-limit-slider-bottom-hover-wrapper {
|
|
88
|
+
position: absolute;
|
|
89
|
+
z-index: 1;
|
|
90
|
+
background-color: @primary-color;
|
|
91
|
+
opacity: 0.1;
|
|
92
|
+
|
|
93
|
+
&::before {
|
|
94
|
+
content: '';
|
|
95
|
+
position: absolute;
|
|
96
|
+
z-index: 1;
|
|
97
|
+
top: 0;
|
|
98
|
+
left: calc((100% - 1px) /2);
|
|
99
|
+
width: 1px;
|
|
100
|
+
height: 100%;
|
|
101
|
+
background-color: #555;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.time-range-area-limit-slider-tooltip-wrapper {
|
|
108
|
+
max-width: 500px;
|
|
109
|
+
|
|
110
|
+
.@{ant-prefix}-tooltip-inner {
|
|
111
|
+
white-space: nowrap !important;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { getAllDates, getConvertedDateData } from "../../utils";
|
|
3
|
+
import classnames from "classnames";
|
|
4
|
+
var TopDateProcess = function TopDateProcess(props) {
|
|
5
|
+
var currentMomentRef = props.currentMomentRef,
|
|
6
|
+
timeBoundary = props.timeBoundary,
|
|
7
|
+
timeSliderWidth = props.timeSliderWidth;
|
|
8
|
+
var days = timeBoundary.days;
|
|
9
|
+
var singleWidth = timeSliderWidth / days;
|
|
10
|
+
var allDates = getAllDates(currentMomentRef.current, days);
|
|
11
|
+
var convertedDateData = getConvertedDateData(allDates, singleWidth, days);
|
|
12
|
+
return convertedDateData.map(function (item, index) {
|
|
13
|
+
var isStartYYYY = item.isStartYYYY,
|
|
14
|
+
YYYY = item.YYYY,
|
|
15
|
+
MM_DD = item.MM_DD,
|
|
16
|
+
position = item.position;
|
|
17
|
+
var width = position.width;
|
|
18
|
+
var oddIndex = index % 2 === 1; // 奇数索引
|
|
19
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
20
|
+
className: classnames("time-range-single-slider", {
|
|
21
|
+
"time-range-single-odd-slider": oddIndex
|
|
22
|
+
}),
|
|
23
|
+
style: {
|
|
24
|
+
width: width
|
|
25
|
+
},
|
|
26
|
+
key: index
|
|
27
|
+
}, isStartYYYY && /*#__PURE__*/React.createElement("div", {
|
|
28
|
+
className: "time-range-single-slider-YYYY"
|
|
29
|
+
}, YYYY), oddIndex && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
30
|
+
className: "time-range-single-slider-cut-line-MM-DD"
|
|
31
|
+
}, "|"), /*#__PURE__*/React.createElement("div", {
|
|
32
|
+
className: "time-range-single-slider-MM-DD"
|
|
33
|
+
}, MM_DD)));
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
export default TopDateProcess;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import "@chaoswise/ui/lib/Tooltip/index.less";
|
|
2
|
+
import _Tooltip from "@chaoswise/ui/lib/Tooltip";
|
|
3
|
+
import _Icon from "@chaoswise/ui/lib/Icon";
|
|
4
|
+
import React, { useMemo } from "react";
|
|
5
|
+
var TopPlaceholder = function TopPlaceholder(props) {
|
|
6
|
+
var TimeRangeAreaLimitSlider = props.TimeRangeAreaLimitSlider,
|
|
7
|
+
topSliderInfo = props.topSliderInfo,
|
|
8
|
+
timeBoundary = props.timeBoundary,
|
|
9
|
+
timeSliderWidth = props.timeSliderWidth,
|
|
10
|
+
beginMouseDown = props.beginMouseDown;
|
|
11
|
+
var days = timeBoundary.days;
|
|
12
|
+
var singleWidth = timeSliderWidth / days;
|
|
13
|
+
var isHasTooltipDate = useMemo(function () {
|
|
14
|
+
return Array.isArray(topSliderInfo.date) && topSliderInfo.date.length === 2;
|
|
15
|
+
}, [topSliderInfo]);
|
|
16
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
17
|
+
style: {
|
|
18
|
+
width: singleWidth,
|
|
19
|
+
left: topSliderInfo.left
|
|
20
|
+
},
|
|
21
|
+
className: "time-range-area-limit-slider",
|
|
22
|
+
onMouseDown: function onMouseDown(e) {
|
|
23
|
+
return beginMouseDown(e, "top");
|
|
24
|
+
},
|
|
25
|
+
ref: TimeRangeAreaLimitSlider
|
|
26
|
+
}, /*#__PURE__*/React.createElement(_Tooltip, {
|
|
27
|
+
overlayClassName: "time-range-area-limit-slider-tooltip-wrapper",
|
|
28
|
+
title: isHasTooltipDate && /*#__PURE__*/React.createElement(React.Fragment, null, topSliderInfo.date[0].format("MM/DD HH:mm:ss"), " -", " ", topSliderInfo.date[1].format("MM/DD HH:mm:ss"))
|
|
29
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
30
|
+
className: "time-range-slider-top-placeholder-out"
|
|
31
|
+
}, /*#__PURE__*/React.createElement(_Icon, {
|
|
32
|
+
className: "time-range-slider-top-placeholder-inner",
|
|
33
|
+
type: "down"
|
|
34
|
+
}))));
|
|
35
|
+
};
|
|
36
|
+
export default TopPlaceholder;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import TopPlaceholder from "./TopPlaceholder";
|
|
3
|
+
import TopDateProcess from "./TopDateProcess";
|
|
4
|
+
import "./index.less";
|
|
5
|
+
var TopSlider = function TopSlider(props) {
|
|
6
|
+
var currentMomentRef = props.currentMomentRef,
|
|
7
|
+
TimeRangeSliderWrapperRef = props.TimeRangeSliderWrapperRef,
|
|
8
|
+
timeSliderWidth = props.timeSliderWidth,
|
|
9
|
+
TimeRangeAreaLimitSlider = props.TimeRangeAreaLimitSlider,
|
|
10
|
+
beginMouseDown = props.beginMouseDown,
|
|
11
|
+
topSliderInfo = props.topSliderInfo,
|
|
12
|
+
timeBoundary = props.timeBoundary;
|
|
13
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
14
|
+
className: "time-range-slider-top-wrapper",
|
|
15
|
+
ref: TimeRangeSliderWrapperRef,
|
|
16
|
+
style: {
|
|
17
|
+
width: timeSliderWidth
|
|
18
|
+
}
|
|
19
|
+
}, /*#__PURE__*/React.createElement(TopDateProcess, {
|
|
20
|
+
timeBoundary: timeBoundary,
|
|
21
|
+
currentMomentRef: currentMomentRef,
|
|
22
|
+
timeSliderWidth: timeSliderWidth
|
|
23
|
+
}), /*#__PURE__*/React.createElement(TopPlaceholder, {
|
|
24
|
+
TimeRangeAreaLimitSlider: TimeRangeAreaLimitSlider,
|
|
25
|
+
topSliderInfo: topSliderInfo,
|
|
26
|
+
timeBoundary: timeBoundary,
|
|
27
|
+
timeSliderWidth: timeSliderWidth,
|
|
28
|
+
beginMouseDown: beginMouseDown
|
|
29
|
+
}));
|
|
30
|
+
};
|
|
31
|
+
export default TopSlider;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
.time-range-slider-top-wrapper {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
height: 28px;
|
|
5
|
+
background-color: @disabled-bg;
|
|
6
|
+
position: relative;
|
|
7
|
+
margin-bottom: 66px;
|
|
8
|
+
|
|
9
|
+
.time-range-single-slider {
|
|
10
|
+
position: relative;
|
|
11
|
+
height: 100%;
|
|
12
|
+
color: @text-color-secondary;
|
|
13
|
+
|
|
14
|
+
&.time-range-single-odd-slider {
|
|
15
|
+
background-color: fade(@white, 60%);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.time-range-single-slider-YYYY,
|
|
19
|
+
.time-range-single-slider-MM-DD {
|
|
20
|
+
position: absolute;
|
|
21
|
+
height: 20px;
|
|
22
|
+
line-height: 20px;
|
|
23
|
+
width: 40px;
|
|
24
|
+
text-align: center;
|
|
25
|
+
left: -20px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.time-range-single-slider-YYYY {
|
|
29
|
+
top: -24px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.time-range-single-slider-MM-DD {
|
|
33
|
+
top: 32px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.time-range-single-slider-cut-line-MM-DD {
|
|
37
|
+
position: absolute;
|
|
38
|
+
width: 4px;
|
|
39
|
+
left: -2px;
|
|
40
|
+
height: 6px;
|
|
41
|
+
line-height: 6px;
|
|
42
|
+
top: 28px;
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
text-align: center;
|
|
45
|
+
color: @disabled-color;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.time-range-area-limit-slider {
|
|
50
|
+
position: absolute;
|
|
51
|
+
z-index: 2;
|
|
52
|
+
cursor: move;
|
|
53
|
+
height: 28px;
|
|
54
|
+
|
|
55
|
+
.time-range-slider-top-placeholder-out {
|
|
56
|
+
width: 100%;
|
|
57
|
+
height: 100%;
|
|
58
|
+
position: relative;
|
|
59
|
+
border: @border-width-base @border-style-base @primary-color;
|
|
60
|
+
border-radius: 2px;
|
|
61
|
+
background-color: @component-background;
|
|
62
|
+
|
|
63
|
+
.time-range-slider-top-placeholder-inner {
|
|
64
|
+
position: absolute;
|
|
65
|
+
color: @primary-color !important;
|
|
66
|
+
left: calc((100% - 12px) / 2);
|
|
67
|
+
bottom: -9px;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.time-range-area-limit-slider-tooltip-wrapper {
|
|
74
|
+
max-width: 500px;
|
|
75
|
+
|
|
76
|
+
.@{ant-prefix}-tooltip-inner {
|
|
77
|
+
white-space: nowrap !important;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
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."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
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; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { useState, useEffect } from "react";
|
|
8
|
+
var useHover = function useHover(targetElementRef) {
|
|
9
|
+
var _useState = useState(false),
|
|
10
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
11
|
+
isHover = _useState2[0],
|
|
12
|
+
setIsHover = _useState2[1];
|
|
13
|
+
var onMouseEnter = function onMouseEnter() {
|
|
14
|
+
setIsHover(true);
|
|
15
|
+
};
|
|
16
|
+
var onMouseLeave = function onMouseLeave() {
|
|
17
|
+
setIsHover(false);
|
|
18
|
+
};
|
|
19
|
+
useEffect(function () {
|
|
20
|
+
var _targetElementRef$cur, _targetElementRef$cur2;
|
|
21
|
+
(_targetElementRef$cur = targetElementRef.current) === null || _targetElementRef$cur === void 0 || _targetElementRef$cur.addEventListener("mouseenter", onMouseEnter);
|
|
22
|
+
(_targetElementRef$cur2 = targetElementRef.current) === null || _targetElementRef$cur2 === void 0 || _targetElementRef$cur2.addEventListener("mouseleave", onMouseLeave);
|
|
23
|
+
return function () {
|
|
24
|
+
var _targetElementRef$cur3, _targetElementRef$cur4;
|
|
25
|
+
(_targetElementRef$cur3 = targetElementRef.current) === null || _targetElementRef$cur3 === void 0 || _targetElementRef$cur3.removeEventListener("mouseenter", onMouseEnter);
|
|
26
|
+
(_targetElementRef$cur4 = targetElementRef.current) === null || _targetElementRef$cur4 === void 0 || _targetElementRef$cur4.removeEventListener("mouseleave", onMouseLeave);
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
return isHover;
|
|
30
|
+
};
|
|
31
|
+
export default useHover;
|
|
@@ -0,0 +1,325 @@
|
|
|
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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(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(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _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(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
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(arr) { if (Array.isArray(arr)) return arr; }
|
|
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
|
+
TimeRangeSliderWrapperRef = _ref.TimeRangeSliderWrapperRef,
|
|
26
|
+
TimeRangeAreaLimitSlider = _ref.TimeRangeAreaLimitSlider,
|
|
27
|
+
TimeRangeAreaLimitBottomSlider = _ref.TimeRangeAreaLimitBottomSlider,
|
|
28
|
+
recordDate = _ref.recordDate,
|
|
29
|
+
TimeRangeSliderBottomWrapperRef = _ref.TimeRangeSliderBottomWrapperRef;
|
|
30
|
+
var min = timeBoundary.min,
|
|
31
|
+
max = timeBoundary.max,
|
|
32
|
+
days = timeBoundary.days;
|
|
33
|
+
var _useState = useState(false),
|
|
34
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
+
bottomSliderDragStatus = _useState2[0],
|
|
36
|
+
setBottomSliderDragStatus = _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
|
+
data: [],
|
|
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
|
+
data: []
|
|
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
|
+
beginX: 0 // 记录鼠标按下时的位置
|
|
77
|
+
});
|
|
78
|
+
var bottomSliderInfoRef = useRef({
|
|
79
|
+
width: 0,
|
|
80
|
+
left: 0,
|
|
81
|
+
data: [],
|
|
82
|
+
canDrag: true
|
|
83
|
+
});
|
|
84
|
+
var isHoverBottomWrapper = useHover(TimeRangeSliderBottomWrapperRef);
|
|
85
|
+
var isHoverPlaceholderBottom = useHover(TimeRangeAreaLimitBottomSlider);
|
|
86
|
+
useEffect(function () {
|
|
87
|
+
document.addEventListener("mousemove", move);
|
|
88
|
+
document.addEventListener("mouseup", endMove);
|
|
89
|
+
return function () {
|
|
90
|
+
document.removeEventListener("mousemove", move);
|
|
91
|
+
document.removeEventListener("mouseup", endMove);
|
|
92
|
+
};
|
|
93
|
+
}, []);
|
|
94
|
+
useEffect(function () {
|
|
95
|
+
if (!visible) {
|
|
96
|
+
inputRef.current.blur();
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (Array.isArray(recordDate) && recordDate.length) {
|
|
100
|
+
currentMomentRef.current = moment();
|
|
101
|
+
var endDate = recordDate[1].clone();
|
|
102
|
+
var startDate = recordDate[1].clone().subtract(1, "days");
|
|
103
|
+
var startLeft = getPositionInfoByDateInfo(startDate, timeSliderWidth, currentMomentRef.current, days);
|
|
104
|
+
var newRecordEndTimeDateWrapper = [startDate, endDate];
|
|
105
|
+
recordEndTimeDateWrapper.current = newRecordEndTimeDateWrapper;
|
|
106
|
+
setTopSliderInfo(function (pre) {
|
|
107
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
108
|
+
left: startLeft,
|
|
109
|
+
date: newRecordEndTimeDateWrapper
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
setBottomSliderInfo(function (pre) {
|
|
113
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
114
|
+
date: recordDate
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
setRecordTimeDateWrapper(newRecordEndTimeDateWrapper);
|
|
118
|
+
}
|
|
119
|
+
}, [visible]);
|
|
120
|
+
useEffect(function () {
|
|
121
|
+
bottomSliderInfoRef.current = bottomSliderInfo;
|
|
122
|
+
}, [bottomSliderInfo]);
|
|
123
|
+
// 下半部分滑块信息
|
|
124
|
+
useEffect(function () {
|
|
125
|
+
var positionInfo = getPositionInfoByTimeDateInfo(recordDate, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
|
|
126
|
+
var date = getTimeDateInfoByPositionInfo(positionInfo.left, positionInfo.width, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
|
|
127
|
+
setBottomSliderInfo(function (pre) {
|
|
128
|
+
return _objectSpread(_objectSpread(_objectSpread({}, pre), positionInfo), {}, {
|
|
129
|
+
date: [date.startDate, date.endDate]
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}, [recordDate, recordTimeDateWrapper]);
|
|
133
|
+
var resStartLeftDate = currentMomentRef.current.clone().subtract(1, "days");
|
|
134
|
+
var resStartLeftDatePosition = getPositionInfoByDateInfo(resStartLeftDate, timeSliderWidth, currentMomentRef.current, days);
|
|
135
|
+
/**
|
|
136
|
+
* 拖拽中
|
|
137
|
+
* @param {*} e : 事件对象
|
|
138
|
+
* @returns
|
|
139
|
+
*/
|
|
140
|
+
var move = function move(e) {
|
|
141
|
+
var left = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef); // 计算鼠标位置距离目标元素左侧的距离
|
|
142
|
+
var _getBottomSliderHover = getBottomSliderHoverInfo(left, bottomSliderInfoRef, timeSliderWidth, currentMomentRef, recordEndTimeDateWrapper.current, days),
|
|
143
|
+
hoverTimeDate = _getBottomSliderHover.date,
|
|
144
|
+
hoverLeft = _getBottomSliderHover.left,
|
|
145
|
+
hoverWidth = _getBottomSliderHover.width;
|
|
146
|
+
setBottomSliderHoverInfo({
|
|
147
|
+
left: hoverLeft,
|
|
148
|
+
width: hoverWidth,
|
|
149
|
+
date: hoverTimeDate
|
|
150
|
+
});
|
|
151
|
+
isHandleClickRef.current = e.buttons !== 1; // e.buttons === 1 为鼠标左键按下
|
|
152
|
+
var _dragableRef$current = dragableRef.current,
|
|
153
|
+
status = _dragableRef$current.status,
|
|
154
|
+
position = _dragableRef$current.position,
|
|
155
|
+
resizePosition = _dragableRef$current.resizePosition,
|
|
156
|
+
initialWidth = _dragableRef$current.initialWidth,
|
|
157
|
+
beginX = _dragableRef$current.beginX;
|
|
158
|
+
if (!status) return;
|
|
159
|
+
var TimeRangeSliderWrapper = TimeRangeSliderWrapperRef.current;
|
|
160
|
+
var TimeRangeAreaLimitSliderDom = TimeRangeAreaLimitSlider.current;
|
|
161
|
+
// 计算当前偏移量
|
|
162
|
+
var newLeft = e.clientX - beginX;
|
|
163
|
+
if (position === "top") {
|
|
164
|
+
if (newLeft >= 0 && newLeft + TimeRangeAreaLimitSliderDom.offsetWidth <= TimeRangeSliderWrapper.offsetWidth) {
|
|
165
|
+
if (newLeft > resStartLeftDatePosition) {
|
|
166
|
+
newLeft = resStartLeftDatePosition;
|
|
167
|
+
}
|
|
168
|
+
var _getDateInfoByPositio = getDateInfoByPositionInfo(newLeft, timeSliderWidth, currentMomentRef.current, days),
|
|
169
|
+
startDate = _getDateInfoByPositio.startDate,
|
|
170
|
+
endDate = _getDateInfoByPositio.endDate;
|
|
171
|
+
var newRecordEndTimeDateWrapper = [startDate, endDate];
|
|
172
|
+
recordEndTimeDateWrapper.current = newRecordEndTimeDateWrapper;
|
|
173
|
+
setTopSliderInfo({
|
|
174
|
+
left: newLeft,
|
|
175
|
+
date: newRecordEndTimeDateWrapper
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (position === "bottom") {
|
|
180
|
+
var width = bottomSliderInfoRef.current.width;
|
|
181
|
+
var _left = bottomSliderInfoRef.current.left;
|
|
182
|
+
var millisecondsOfTheDay = moment.duration(1, "days").valueOf(); // 一天的毫秒数 86400000
|
|
183
|
+
var minWidth = min / millisecondsOfTheDay * timeSliderWidth;
|
|
184
|
+
var maxWidth = max / millisecondsOfTheDay * timeSliderWidth;
|
|
185
|
+
var canDrag = true;
|
|
186
|
+
if (!resizePosition) {
|
|
187
|
+
_left = newLeft;
|
|
188
|
+
} else if (resizePosition === "left") {
|
|
189
|
+
var diffLeft = _left - newLeft;
|
|
190
|
+
width = Number(width + diffLeft);
|
|
191
|
+
_left = newLeft;
|
|
192
|
+
if (width < minWidth) {
|
|
193
|
+
width = minWidth;
|
|
194
|
+
_left = Number(bottomSliderInfoRef.current.left + bottomSliderInfoRef.current.width - minWidth);
|
|
195
|
+
canDrag = false;
|
|
196
|
+
} else if (width > maxWidth) {
|
|
197
|
+
width = maxWidth;
|
|
198
|
+
_left = Number(bottomSliderInfoRef.current.left + bottomSliderInfoRef.current.width - maxWidth);
|
|
199
|
+
canDrag = false;
|
|
200
|
+
}
|
|
201
|
+
} else {
|
|
202
|
+
width = Number(initialWidth + newLeft);
|
|
203
|
+
if (width < minWidth) {
|
|
204
|
+
width = minWidth;
|
|
205
|
+
canDrag = false;
|
|
206
|
+
} else if (width > maxWidth) {
|
|
207
|
+
width = maxWidth;
|
|
208
|
+
canDrag = false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
var date = getTimeDateInfoByPositionInfo(_left, width, timeSliderWidth, currentMomentRef.current, recordEndTimeDateWrapper.current, days);
|
|
212
|
+
var _startDate = currentMomentRef.current.clone().subtract(days, "days");
|
|
213
|
+
var isSameOrAfterStart = isSameOrAfter(date.startDate, _startDate);
|
|
214
|
+
var isSameOrAfterEnd = isSameOrAfter(currentMomentRef.current, date.endDate);
|
|
215
|
+
if (!isSameOrAfterStart || !isSameOrAfterEnd) return;
|
|
216
|
+
var newTimeDate = [date.startDate, date.endDate];
|
|
217
|
+
setBottomSliderInfo(function (pre) {
|
|
218
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
219
|
+
width: width,
|
|
220
|
+
left: _left,
|
|
221
|
+
date: newTimeDate,
|
|
222
|
+
canDrag: canDrag
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* 拖拽结束
|
|
229
|
+
* @param {*} e : 事件对象
|
|
230
|
+
*/
|
|
231
|
+
var endMove = function endMove(e) {
|
|
232
|
+
var position = dragableRef.current.position;
|
|
233
|
+
if (position === "top") {
|
|
234
|
+
setRecordTimeDateWrapper(recordEndTimeDateWrapper.current);
|
|
235
|
+
}
|
|
236
|
+
if (position === "bottom") {
|
|
237
|
+
var returnValue = getCorrectValue({
|
|
238
|
+
value: bottomSliderInfoRef.current.date
|
|
239
|
+
});
|
|
240
|
+
onChange(returnValue);
|
|
241
|
+
}
|
|
242
|
+
var status = false;
|
|
243
|
+
setBottomSliderDragStatus(status);
|
|
244
|
+
dragableRef.current = _objectSpread(_objectSpread({}, dragableRef.current), {}, {
|
|
245
|
+
status: status,
|
|
246
|
+
position: undefined,
|
|
247
|
+
initialWidth: 0,
|
|
248
|
+
resizePosition: undefined,
|
|
249
|
+
beginX: 0
|
|
250
|
+
});
|
|
251
|
+
setBottomSliderInfo(function (pre) {
|
|
252
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
253
|
+
canDrag: true
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* 拖拽开始、滑块按下机制触发: 记录拖拽信息
|
|
259
|
+
* @param {*} e : 事件对象
|
|
260
|
+
* @param {*} position : top 上部分滑块 bottom 下部分滑块
|
|
261
|
+
* @param {*} resizePosition : position = "bottom" 情况下 left 向左拖拽 right 向右拖拽
|
|
262
|
+
*/
|
|
263
|
+
var beginMouseDown = function beginMouseDown(e, position, resizePosition) {
|
|
264
|
+
e.stopPropagation();
|
|
265
|
+
e.preventDefault();
|
|
266
|
+
var TimeRangeAreaLimitSliderDom = TimeRangeAreaLimitSlider.current;
|
|
267
|
+
var TimeRangeAreaLimitBottomSliderDom = TimeRangeAreaLimitBottomSlider.current;
|
|
268
|
+
var X = e.clientX;
|
|
269
|
+
if (position === "top") {
|
|
270
|
+
X = e.clientX - TimeRangeAreaLimitSliderDom.offsetLeft;
|
|
271
|
+
} else if (position === "bottom" && resizePosition !== "right") {
|
|
272
|
+
X = e.clientX - TimeRangeAreaLimitBottomSliderDom.offsetLeft;
|
|
273
|
+
}
|
|
274
|
+
var status = true;
|
|
275
|
+
setBottomSliderDragStatus(status);
|
|
276
|
+
dragableRef.current = _objectSpread(_objectSpread({}, dragableRef.current), {}, {
|
|
277
|
+
status: status,
|
|
278
|
+
position: position,
|
|
279
|
+
resizePosition: resizePosition,
|
|
280
|
+
// 左右拖拽
|
|
281
|
+
initialWidth: TimeRangeAreaLimitBottomSliderDom.offsetWidth,
|
|
282
|
+
// 左右拖拽
|
|
283
|
+
beginX: X
|
|
284
|
+
});
|
|
285
|
+
};
|
|
286
|
+
/**
|
|
287
|
+
* 点击下部分滑块
|
|
288
|
+
* @param {*} e : 事件对象
|
|
289
|
+
* @returns
|
|
290
|
+
*/
|
|
291
|
+
var clickBottomWrapper = function clickBottomWrapper(e) {
|
|
292
|
+
e.stopPropagation();
|
|
293
|
+
if (!isHandleClickRef.current) {
|
|
294
|
+
isHandleClickRef.current = true;
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
var left = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef); // 计算鼠标位置距离目标元素左侧的距离
|
|
298
|
+
var _getBottomSliderHover2 = getBottomSliderHoverInfo(left, bottomSliderInfoRef, timeSliderWidth, currentMomentRef, recordTimeDateWrapper, days),
|
|
299
|
+
newTimeDate = _getBottomSliderHover2.date,
|
|
300
|
+
hoverLeft = _getBottomSliderHover2.left;
|
|
301
|
+
setBottomSliderInfo(function (pre) {
|
|
302
|
+
return _objectSpread(_objectSpread({}, pre), {}, {
|
|
303
|
+
left: hoverLeft,
|
|
304
|
+
date: newTimeDate
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
var returnValue = getCorrectValue({
|
|
308
|
+
value: newTimeDate
|
|
309
|
+
});
|
|
310
|
+
onChange(returnValue);
|
|
311
|
+
};
|
|
312
|
+
return {
|
|
313
|
+
topSliderInfo: topSliderInfo,
|
|
314
|
+
bottomSliderInfo: bottomSliderInfo,
|
|
315
|
+
recordTimeDateWrapper: recordTimeDateWrapper,
|
|
316
|
+
currentMomentRef: currentMomentRef,
|
|
317
|
+
beginMouseDown: beginMouseDown,
|
|
318
|
+
clickBottomWrapper: clickBottomWrapper,
|
|
319
|
+
bottomSliderHoverInfo: bottomSliderHoverInfo,
|
|
320
|
+
bottomSliderDragStatus: bottomSliderDragStatus,
|
|
321
|
+
isHoverBottomWrapper: isHoverBottomWrapper,
|
|
322
|
+
isHoverPlaceholderBottom: isHoverPlaceholderBottom
|
|
323
|
+
};
|
|
324
|
+
};
|
|
325
|
+
export default useMouse;
|