@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.
Files changed (129) hide show
  1. package/lib/Ace/diff.js +1 -0
  2. package/lib/Antd5/_util/scrollTo.js +3 -3
  3. package/lib/Antd5/anchor/Anchor.js +3 -3
  4. package/lib/Antd5/table/hooks/useFilter/FilterDropdown.js +6 -6
  5. package/lib/Antd5/table/hooks/useFilter/index.js +3 -3
  6. package/lib/Antd5/table/hooks/useLazyKVMap.js +3 -3
  7. package/lib/Antd5/table/hooks/useSelection.js +3 -3
  8. package/lib/Antd5/theme/useToken.js +4 -3
  9. package/lib/Badge/index.js +1 -1
  10. package/lib/CWCascader/rc-cascader/utils/warningPropsUtil.js +3 -3
  11. package/lib/CWColorPicker/SketchPicker/components/common/ColorWrap.js +1 -1
  12. package/lib/CWColorPicker/SketchPicker/components/common/Hue.js +1 -1
  13. package/lib/CWColorPicker/SketchPicker/components/common/Raised.js +1 -1
  14. package/lib/CWColorPicker/SketchPicker/components/common/Saturation.js +1 -1
  15. package/lib/CWColorPicker/SketchPicker/components/sketch/index.js +1 -1
  16. package/lib/CWColorPicker/SketchPicker/helpers/color.js +1 -1
  17. package/lib/CWRangePicker/Refresh/index.style.js +10 -5
  18. package/lib/CWRangePicker/index.js +2 -2
  19. package/lib/CWRangePicker/index.style.js +0 -6
  20. package/lib/CWTree/index.js +3 -3
  21. package/lib/CWTree/utils/index.js +4 -3
  22. package/lib/Collapse/index.js +1 -1
  23. package/lib/ConfigProvider/ConfigProvider.js +7 -4
  24. package/lib/DateRangePicker/index.js +2 -0
  25. package/lib/Documentation/Tocify.js +1 -1
  26. package/lib/Drawer/index.js +1 -1
  27. package/lib/EchartsArea/index.js +2 -2
  28. package/lib/EchartsBar/index.js +2 -2
  29. package/lib/EchartsBarRow/index.js +0 -2
  30. package/lib/EchartsBase/index.js +14 -14
  31. package/lib/EchartsLine/index.js +2 -2
  32. package/lib/EchartsPie/index.js +2 -3
  33. package/lib/EchartsRing/index.js +2 -2
  34. package/lib/Empty/index.js +1 -1
  35. package/lib/FilterDropDown/DragList.js +2 -1
  36. package/lib/Flow/BasicLayout/Chain.js +3 -3
  37. package/lib/Flow/BasicLayout/util.js +3 -3
  38. package/lib/Form/FormItem.js +3 -1
  39. package/lib/Form/hook/useForm3.js +3 -3
  40. package/lib/Form/index.js +1 -1
  41. package/lib/Formily/FieldList/index.js +43 -0
  42. package/lib/Formily/Form/index.js +2 -0
  43. package/lib/Formily/FormButtonGroup/index.js +2 -0
  44. package/lib/Formily/FormItem/index.js +90 -0
  45. package/lib/Formily/FormItem/items/Checkbox.js +13 -0
  46. package/lib/Formily/FormItem/items/DatePicker.js +121 -0
  47. package/lib/Formily/FormItem/items/Input.js +13 -0
  48. package/lib/Formily/FormItem/items/NumberPicker.js +9 -0
  49. package/lib/Formily/FormItem/items/Password.js +70 -0
  50. package/lib/Formily/FormItem/items/Radio.js +13 -0
  51. package/lib/Formily/FormItem/items/Range.js +82 -0
  52. package/lib/Formily/FormItem/items/Rating.js +8 -0
  53. package/lib/Formily/FormItem/items/Select.js +8 -0
  54. package/lib/Formily/FormItem/items/Switch.js +9 -0
  55. package/lib/Formily/FormItem/items/Tansfer.js +9 -0
  56. package/lib/Formily/FormItem/items/TimePicker.js +44 -0
  57. package/lib/Formily/FormItem/items/Upload.js +260 -0
  58. package/lib/Formily/FormItem/items/formItemWrapper.js +17 -0
  59. package/lib/Formily/FormItem/items/shared.js +140 -0
  60. package/lib/Formily/FormPath/index.js +2 -0
  61. package/lib/Formily/MegaLayout/index.js +24 -0
  62. package/lib/Formily/Reset/index.js +2 -0
  63. package/lib/Formily/Submit/index.js +2 -0
  64. package/lib/Formily/context.js +3 -0
  65. package/lib/Formily/formily/index.js +22 -0
  66. package/lib/Formily/index.js +5 -0
  67. package/lib/Formily/subscribeFields/index.js +46 -0
  68. package/lib/Header/UserSetting/utils.js +5 -4
  69. package/lib/Joyride/List.js +3 -3
  70. package/lib/Joyride/index.js +3 -3
  71. package/lib/Modal/Modal.js +1 -1
  72. package/lib/Modal/index.js +1 -1
  73. package/lib/Pagination/index.js +1 -1
  74. package/lib/QuickTransfer/index.js +5 -5
  75. package/lib/QuickTransfer/utils.js +32 -23
  76. package/lib/RangePicker/components/ExtraQuickSelect.js +51 -0
  77. package/lib/RangePicker/components/ExtraTimeFooter.js +71 -0
  78. package/lib/RangePicker/index.js +469 -2
  79. package/lib/RangePicker/index.style.js +110 -0
  80. package/lib/RangePicker/utils/index.js +171 -0
  81. package/lib/ScrollLoad/index.js +7 -2
  82. package/lib/SiderMenu/index.js +14 -14
  83. package/lib/SingleSpa/system/systemjs-css.js +3 -3
  84. package/lib/ThemeProvider/main.js +1 -0
  85. package/lib/TimeRangeSlider/Refresh/index.js +163 -0
  86. package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/Limit.js +126 -0
  87. package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/Limit.svg +50 -0
  88. package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/LimitAreaSvg.js +110 -0
  89. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomPlaceholder.js +99 -0
  90. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomTimeDateProcess.js +36 -0
  91. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/index.js +56 -0
  92. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopDateProcess.js +32 -0
  93. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopPlaceholder.js +54 -0
  94. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/index.js +47 -0
  95. package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useHover.js +31 -0
  96. package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useMouse.js +410 -0
  97. package/lib/TimeRangeSlider/TimeRangeSliderCmp/index.js +72 -0
  98. package/lib/TimeRangeSlider/TimeRangeSliderCmp/utils/index.js +255 -0
  99. package/lib/TimeRangeSlider/TimeSpan/index.js +93 -0
  100. package/lib/TimeRangeSlider/assets/Calendar.js +15 -0
  101. package/lib/TimeRangeSlider/assets/Calendar2.js +15 -0
  102. package/lib/TimeRangeSlider/assets/Recover.js +18 -0
  103. package/lib/TimeRangeSlider/assets/Refresh1.js +14 -0
  104. package/lib/TimeRangeSlider/assets/Refresh2.js +14 -0
  105. package/lib/TimeRangeSlider/assets/Refresh3.js +14 -0
  106. package/lib/TimeRangeSlider/assets/live.js +19 -0
  107. package/lib/TimeRangeSlider/assets/more.js +23 -0
  108. package/lib/TimeRangeSlider/index.js +562 -0
  109. package/lib/TimeRangeSlider/locale/en_US.js +31 -0
  110. package/lib/TimeRangeSlider/locale/index.js +11 -0
  111. package/lib/TimeRangeSlider/locale/zh_CN.js +31 -0
  112. package/lib/TimeRangeSlider/locale/zh_TW.js +31 -0
  113. package/lib/TimeRangeSlider/styles/index.style.js +64 -0
  114. package/lib/TimeRangeSlider/styles/refresh.style.js +38 -0
  115. package/lib/TimeRangeSlider/styles/timeRangeSliderBottom.style.js +125 -0
  116. package/lib/TimeRangeSlider/styles/timeRangeSliderTop.style.js +81 -0
  117. package/lib/TimeRangeSlider/styles/timeSpan.style.js +22 -0
  118. package/lib/TimeRangeSlider/utils/index.js +737 -0
  119. package/lib/UniversalLayout/index.js +4 -4
  120. package/lib/antd-style/factories/createThemeProvider/AntdProvider.js +5 -1
  121. package/lib/antd-style/functions/extractStaticStyle.js +1 -1
  122. package/lib/antd-style/hooks/useAntdToken.js +1 -1
  123. package/lib/antd-style/hooks/useResponsive.js +1 -1
  124. package/lib/antd-style/utils/css.js +3 -2
  125. package/lib/locales/en_US.json +1 -1
  126. package/lib/locales/zh_CN.json +1 -1
  127. package/lib/locales/zh_TW.json +1 -1
  128. package/lib/useLocale/index.js +20 -0
  129. 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;