hc-busin-components 1.0.3 → 1.0.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/dist/CascaderCluster/index.js +46 -37
- package/dist/DateRangePicker/index.d.ts +17 -1
- package/dist/DateRangePicker/index.js +221 -103
- package/dist/DateRangePicker/index.less +50 -17
- package/dist/HCDrawer/index.d.ts +14 -0
- package/dist/HCDrawer/index.js +307 -0
- package/dist/HCDrawer/index.less +30 -0
- package/dist/HCModal/index.d.ts +9 -0
- package/dist/HCModal/index.js +50 -0
- package/dist/HCModal/index.less +29 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +2 -0
- package/package.json +1 -1
|
@@ -15,7 +15,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
15
15
|
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); }
|
|
16
16
|
import { SearchOutlined } from '@ant-design/icons';
|
|
17
17
|
import { ConfigProvider, Divider, Dropdown, Input, Popover } from 'antd';
|
|
18
|
-
import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
18
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
19
19
|
import ComponentUninstalled from "../ComponentUninstalled";
|
|
20
20
|
import Icon from "../Icon";
|
|
21
21
|
import TextEllipsis from "../TextEllipsis";
|
|
@@ -91,6 +91,10 @@ var CascaderCluster = function CascaderCluster(props) {
|
|
|
91
91
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
92
92
|
currentCluster = _useState12[0],
|
|
93
93
|
setCurrentCluster = _useState12[1];
|
|
94
|
+
var onClusterChangeRef = useRef(onClusterChange);
|
|
95
|
+
useEffect(function () {
|
|
96
|
+
onClusterChangeRef.current = onClusterChange;
|
|
97
|
+
}, [onClusterChange]);
|
|
94
98
|
var resolvedDataInterface = useMemo(function () {
|
|
95
99
|
if (dataInterfaceProp) return dataInterfaceProp;
|
|
96
100
|
if (services) return buildCascaderClusterDataInterface(space, isBackend, storage, services);
|
|
@@ -103,6 +107,9 @@ var CascaderCluster = function CascaderCluster(props) {
|
|
|
103
107
|
writeFilterCache(storage, isBackend, pathname, params);
|
|
104
108
|
onFilterCacheChange === null || onFilterCacheChange === void 0 || onFilterCacheChange(params);
|
|
105
109
|
}, [storage, isBackend, pathname, onFilterCacheChange]);
|
|
110
|
+
var emitClusterChange = useCallback(function (clusterName) {
|
|
111
|
+
onClusterChangeRef.current(clusterName);
|
|
112
|
+
}, []);
|
|
106
113
|
var getInitCluster = useCallback(function (list, dcData) {
|
|
107
114
|
var cachedClusterName = getCache().clusterName;
|
|
108
115
|
var all = list || [];
|
|
@@ -120,43 +127,45 @@ var CascaderCluster = function CascaderCluster(props) {
|
|
|
120
127
|
var clusterName = cluster.clusterName || '';
|
|
121
128
|
setCurrentCluster(clusterName);
|
|
122
129
|
if (clusterName) {
|
|
123
|
-
|
|
130
|
+
emitClusterChange(clusterName);
|
|
124
131
|
}
|
|
125
132
|
saveCache(_objectSpread(_objectSpread({}, dcData), {}, {
|
|
126
133
|
clusterName: clusterName
|
|
127
134
|
}));
|
|
128
|
-
}, [
|
|
129
|
-
var fetchClusterList = useCallback( /*#__PURE__*/
|
|
130
|
-
var
|
|
131
|
-
|
|
132
|
-
list
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
135
|
+
}, [emitClusterChange, getCache, saveCache]);
|
|
136
|
+
var fetchClusterList = useCallback( /*#__PURE__*/function () {
|
|
137
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(params) {
|
|
138
|
+
var _resolvedDataInterfac;
|
|
139
|
+
var list;
|
|
140
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
141
|
+
while (1) switch (_context.prev = _context.next) {
|
|
142
|
+
case 0:
|
|
143
|
+
if (resolvedDataInterface !== null && resolvedDataInterface !== void 0 && (_resolvedDataInterfac = resolvedDataInterface.resource) !== null && _resolvedDataInterfac !== void 0 && _resolvedDataInterfac.service) {
|
|
144
|
+
_context.next = 2;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
return _context.abrupt("return");
|
|
148
|
+
case 2:
|
|
149
|
+
_context.next = 4;
|
|
150
|
+
return resolvedDataInterface.resource.service(_objectSpread(_objectSpread({}, resolvedDataInterface.resource.params || {}), {}, {
|
|
151
|
+
dataCenterId: params === null || params === void 0 ? void 0 : params.dataCenterId,
|
|
152
|
+
logicalUnitId: params === null || params === void 0 ? void 0 : params.logicalUnitId
|
|
153
|
+
}));
|
|
154
|
+
case 4:
|
|
155
|
+
list = _context.sent;
|
|
156
|
+
setAllClusters(list);
|
|
157
|
+
setClusterList(list);
|
|
158
|
+
getInitCluster(list, params);
|
|
159
|
+
case 8:
|
|
160
|
+
case "end":
|
|
161
|
+
return _context.stop();
|
|
162
|
+
}
|
|
163
|
+
}, _callee);
|
|
164
|
+
}));
|
|
165
|
+
return function (_x) {
|
|
166
|
+
return _ref.apply(this, arguments);
|
|
167
|
+
};
|
|
168
|
+
}(), [resolvedDataInterface, getInitCluster]);
|
|
160
169
|
var getLdcWriteBack = useCallback(function (list) {
|
|
161
170
|
var cache = getCache();
|
|
162
171
|
if (cache.id === '-1') {
|
|
@@ -257,7 +266,7 @@ var CascaderCluster = function CascaderCluster(props) {
|
|
|
257
266
|
if (space === 'cluster') {
|
|
258
267
|
var cluster = String(storage.getSession('clusterName') || '');
|
|
259
268
|
setCurrentCluster(cluster);
|
|
260
|
-
|
|
269
|
+
emitClusterChange(cluster);
|
|
261
270
|
setDatacenterList([]);
|
|
262
271
|
setClusterList([]);
|
|
263
272
|
setAllClusters([]);
|
|
@@ -269,7 +278,7 @@ var CascaderCluster = function CascaderCluster(props) {
|
|
|
269
278
|
return;
|
|
270
279
|
}
|
|
271
280
|
fetchDatacenterList();
|
|
272
|
-
}, [space, datacenters, clusters, compoKey, fetchDatacenterList, getInitDatacenter,
|
|
281
|
+
}, [space, datacenters, clusters, compoKey, fetchDatacenterList, getInitDatacenter, emitClusterChange, storage]);
|
|
273
282
|
useEffect(function () {
|
|
274
283
|
if (!pathname.includes('resourceQuotaCenter')) return;
|
|
275
284
|
var timer = setTimeout(function () {
|
|
@@ -331,7 +340,7 @@ var CascaderCluster = function CascaderCluster(props) {
|
|
|
331
340
|
};
|
|
332
341
|
var handleChangeCluster = function handleChangeCluster(cluster) {
|
|
333
342
|
setCurrentCluster(cluster.clusterName);
|
|
334
|
-
|
|
343
|
+
emitClusterChange(cluster.clusterName);
|
|
335
344
|
saveCache(_objectSpread(_objectSpread({}, currentDatacenter), {}, {
|
|
336
345
|
clusterName: cluster.clusterName
|
|
337
346
|
}));
|
|
@@ -13,6 +13,16 @@ export interface TimeRangeInfo {
|
|
|
13
13
|
timeUnitId?: number;
|
|
14
14
|
id?: number;
|
|
15
15
|
}
|
|
16
|
+
export interface DateRangePickerValue {
|
|
17
|
+
from: string;
|
|
18
|
+
to: string;
|
|
19
|
+
inputValue?: string;
|
|
20
|
+
diff?: number;
|
|
21
|
+
sliderValue?: number | null;
|
|
22
|
+
interval?: number;
|
|
23
|
+
timeUnitId?: number;
|
|
24
|
+
id?: number;
|
|
25
|
+
}
|
|
16
26
|
export interface QuickTimeOption {
|
|
17
27
|
id: number;
|
|
18
28
|
value: number;
|
|
@@ -21,9 +31,14 @@ export interface QuickTimeOption {
|
|
|
21
31
|
interval?: number;
|
|
22
32
|
timeUnitId?: number;
|
|
23
33
|
}
|
|
34
|
+
export interface DateRangePickerLocale {
|
|
35
|
+
recent: React.ReactNode;
|
|
36
|
+
custom: React.ReactNode;
|
|
37
|
+
confirm: React.ReactNode;
|
|
38
|
+
}
|
|
24
39
|
export interface DateRangePickerProps {
|
|
25
40
|
onChange?: (timeInfo: TimeRangeInfo) => void;
|
|
26
|
-
value?:
|
|
41
|
+
value?: DateRangePickerValue;
|
|
27
42
|
format?: string;
|
|
28
43
|
placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';
|
|
29
44
|
quickTimeOptions?: QuickTimeOption[];
|
|
@@ -33,6 +48,7 @@ export interface DateRangePickerProps {
|
|
|
33
48
|
width?: number | string;
|
|
34
49
|
disabled?: boolean;
|
|
35
50
|
flat?: boolean;
|
|
51
|
+
locale?: Partial<DateRangePickerLocale>;
|
|
36
52
|
}
|
|
37
53
|
declare const DateRangePicker: React.FC<DateRangePickerProps>;
|
|
38
54
|
export default DateRangePicker;
|
|
@@ -1,9 +1,3 @@
|
|
|
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
1
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
2
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
3
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -14,8 +8,14 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
14
8
|
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; }
|
|
15
9
|
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; } }
|
|
16
10
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
|
+
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); }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
16
|
+
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); }
|
|
17
17
|
import { CalendarOutlined, CloseOutlined } from '@ant-design/icons';
|
|
18
|
-
import { Button, ConfigProvider, DatePicker, Input, Popover,
|
|
18
|
+
import { Button, ConfigProvider, DatePicker, Input, Popover, Segmented, Slider, Switch } from 'antd';
|
|
19
19
|
import dayjs from 'dayjs';
|
|
20
20
|
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
21
21
|
import moment from 'moment';
|
|
@@ -24,56 +24,55 @@ import enUS from 'rc-calendar/lib/locale/en_US';
|
|
|
24
24
|
import zhCN from 'rc-calendar/lib/locale/zh_CN';
|
|
25
25
|
import zhHK from 'rc-calendar/lib/locale/zh_TW';
|
|
26
26
|
import TimePickerPanel from 'rc-time-picker/lib/Panel';
|
|
27
|
-
import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
27
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
28
28
|
import 'rc-calendar/assets/index.css';
|
|
29
29
|
import 'rc-time-picker/assets/index.css';
|
|
30
30
|
import "./index.less";
|
|
31
31
|
dayjs.extend(customParseFormat);
|
|
32
32
|
var RangePicker = DatePicker.RangePicker;
|
|
33
33
|
var DEFAULT_DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';
|
|
34
|
-
var
|
|
34
|
+
var DEFAULT_QUICK_TIME_OPTION_PRESETS = [{
|
|
35
35
|
id: 1,
|
|
36
36
|
value: 1,
|
|
37
|
-
label: '5分钟',
|
|
38
37
|
diff: 5 * 60 * 1000,
|
|
39
38
|
interval: 1,
|
|
40
39
|
timeUnitId: 1
|
|
41
40
|
}, {
|
|
42
41
|
id: 2,
|
|
43
42
|
value: 2,
|
|
44
|
-
label: '1小时',
|
|
45
43
|
diff: 60 * 60 * 1000,
|
|
46
44
|
interval: 2,
|
|
47
45
|
timeUnitId: 2
|
|
48
46
|
}, {
|
|
49
47
|
id: 3,
|
|
50
48
|
value: 3,
|
|
51
|
-
label: '6小时',
|
|
52
49
|
diff: 6 * 60 * 60 * 1000,
|
|
53
50
|
interval: 4,
|
|
54
51
|
timeUnitId: 2
|
|
55
52
|
}, {
|
|
56
53
|
id: 4,
|
|
57
54
|
value: 4,
|
|
58
|
-
label: '12小时',
|
|
59
55
|
diff: 12 * 60 * 60 * 1000,
|
|
60
56
|
interval: 5,
|
|
61
57
|
timeUnitId: 4
|
|
62
58
|
}, {
|
|
63
59
|
id: 5,
|
|
64
60
|
value: 5,
|
|
65
|
-
label: '1天',
|
|
66
61
|
diff: 24 * 60 * 60 * 1000,
|
|
67
62
|
interval: 6,
|
|
68
63
|
timeUnitId: 5
|
|
69
64
|
}, {
|
|
70
65
|
id: 6,
|
|
71
66
|
value: 6,
|
|
72
|
-
label: '7天',
|
|
73
67
|
diff: 7 * 24 * 60 * 60 * 1000,
|
|
74
68
|
interval: 5,
|
|
75
69
|
timeUnitId: 5
|
|
76
70
|
}];
|
|
71
|
+
var DEFAULT_QUICK_TIME_OPTION_LABELS = {
|
|
72
|
+
'zh-CN': ['5分钟', '1小时', '6小时', '12小时', '1天', '7天'],
|
|
73
|
+
'zh-HK': ['5分鐘', '1小時', '6小時', '12小時', '1天', '7天'],
|
|
74
|
+
'en-US': ['5m', '1h', '6h', '12h', '1d', '7d']
|
|
75
|
+
};
|
|
77
76
|
var LOCALE_TEXT = {
|
|
78
77
|
'zh-CN': {
|
|
79
78
|
recent: '最近',
|
|
@@ -98,21 +97,83 @@ var CALENDAR_LOCALE_MAP = {
|
|
|
98
97
|
};
|
|
99
98
|
var PRIMARY = 'var(--ant-color-primary, #1677ff)';
|
|
100
99
|
var TEXT_SECONDARY = 'rgba(0, 0, 0, 0.65)';
|
|
100
|
+
var getDefaultQuickTimeOptions = function getDefaultQuickTimeOptions(locale) {
|
|
101
|
+
return DEFAULT_QUICK_TIME_OPTION_PRESETS.map(function (item, index) {
|
|
102
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
103
|
+
label: DEFAULT_QUICK_TIME_OPTION_LABELS[locale][index]
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
var getSafeDayjs = function getSafeDayjs(value, format) {
|
|
108
|
+
var strictValue = dayjs(value, format, true);
|
|
109
|
+
return strictValue.isValid() ? strictValue : dayjs(value);
|
|
110
|
+
};
|
|
111
|
+
var getPickerStateSnapshot = function getPickerStateSnapshot(value, format, quickTimeOptions) {
|
|
112
|
+
var _quickTimeOptions$;
|
|
113
|
+
var defaultOption = (_quickTimeOptions$ = quickTimeOptions[0]) !== null && _quickTimeOptions$ !== void 0 ? _quickTimeOptions$ : getDefaultQuickTimeOptions('zh-CN')[0];
|
|
114
|
+
var defaultTo = dayjs();
|
|
115
|
+
var defaultFrom = dayjs().subtract(defaultOption.diff, 'millisecond');
|
|
116
|
+
if (!value) {
|
|
117
|
+
return {
|
|
118
|
+
isRecent: true,
|
|
119
|
+
sliderValue: defaultOption.value,
|
|
120
|
+
selectTimeRange: [defaultFrom, defaultTo],
|
|
121
|
+
customTimeRange: [moment(defaultFrom.valueOf()), moment(defaultTo.valueOf())],
|
|
122
|
+
displayValue: defaultOption.label,
|
|
123
|
+
flatRadioValue: defaultOption.id
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
var safeFrom = getSafeDayjs(value.from, format);
|
|
127
|
+
var safeTo = getSafeDayjs(value.to, format);
|
|
128
|
+
if (value.sliderValue !== null && value.sliderValue !== undefined) {
|
|
129
|
+
var _matchedOption$value, _ref, _matchedOption$label;
|
|
130
|
+
var matchedOption = quickTimeOptions.find(function (option) {
|
|
131
|
+
return option.id === value.id || option.value === value.sliderValue;
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
isRecent: true,
|
|
135
|
+
sliderValue: (_matchedOption$value = matchedOption === null || matchedOption === void 0 ? void 0 : matchedOption.value) !== null && _matchedOption$value !== void 0 ? _matchedOption$value : value.sliderValue,
|
|
136
|
+
selectTimeRange: [safeFrom, safeTo],
|
|
137
|
+
customTimeRange: [moment(safeFrom.valueOf()), moment(safeTo.valueOf())],
|
|
138
|
+
displayValue: (_ref = (_matchedOption$label = matchedOption === null || matchedOption === void 0 ? void 0 : matchedOption.label) !== null && _matchedOption$label !== void 0 ? _matchedOption$label : value.inputValue) !== null && _ref !== void 0 ? _ref : "".concat(value.from, " - ").concat(value.to),
|
|
139
|
+
flatRadioValue: matchedOption === null || matchedOption === void 0 ? void 0 : matchedOption.id
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
isRecent: false,
|
|
144
|
+
sliderValue: defaultOption.value,
|
|
145
|
+
selectTimeRange: [safeFrom, safeTo],
|
|
146
|
+
customTimeRange: [moment(safeFrom.valueOf()), moment(safeTo.valueOf())],
|
|
147
|
+
displayValue: value.inputValue || "".concat(value.from, " - ").concat(value.to),
|
|
148
|
+
flatRadioValue: undefined
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
var normalizeDisabledDateFrom = function normalizeDisabledDateFrom(source) {
|
|
152
|
+
if (!source) {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
var rawFrom = _typeof(source) === 'object' && !Array.isArray(source) && 'from' in source ? source.from : source;
|
|
156
|
+
var fromList = Array.isArray(rawFrom) ? rawFrom : [rawFrom];
|
|
157
|
+
return fromList.filter(function (item) {
|
|
158
|
+
return Boolean(item);
|
|
159
|
+
}).map(function (item) {
|
|
160
|
+
return dayjs(item.valueOf());
|
|
161
|
+
});
|
|
162
|
+
};
|
|
101
163
|
var DateRangePicker = function DateRangePicker(props) {
|
|
102
|
-
var _quickTimeOptions$2;
|
|
103
164
|
var onChange = props.onChange,
|
|
104
165
|
value = props.value,
|
|
105
166
|
_props$format = props.format,
|
|
106
167
|
format = _props$format === void 0 ? DEFAULT_DATE_TIME_FORMAT : _props$format,
|
|
107
168
|
_props$placement = props.placement,
|
|
108
169
|
placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,
|
|
109
|
-
|
|
110
|
-
quickTimeOptions = _props$quickTimeOptio === void 0 ? DEFAULT_QUICK_TIME_OPTIONS : _props$quickTimeOptio,
|
|
170
|
+
quickTimeOptionsProp = props.quickTimeOptions,
|
|
111
171
|
disabledDate = props.disabledDate,
|
|
112
172
|
width = props.width,
|
|
113
173
|
disabled = props.disabled,
|
|
114
174
|
_props$flat = props.flat,
|
|
115
|
-
flat = _props$flat === void 0 ? false : _props$flat
|
|
175
|
+
flat = _props$flat === void 0 ? false : _props$flat,
|
|
176
|
+
localeProp = props.locale;
|
|
116
177
|
var _useContext = useContext(ConfigProvider.ConfigContext),
|
|
117
178
|
antdLocale = _useContext.locale;
|
|
118
179
|
var currentLocale = useMemo(function () {
|
|
@@ -128,40 +189,53 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
128
189
|
}
|
|
129
190
|
return 'zh-CN';
|
|
130
191
|
}, [antdLocale]);
|
|
131
|
-
var
|
|
132
|
-
return
|
|
192
|
+
var defaultQuickTimeOptions = useMemo(function () {
|
|
193
|
+
return getDefaultQuickTimeOptions(currentLocale);
|
|
133
194
|
}, [currentLocale]);
|
|
134
|
-
var
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
var _useState5 = useState(function () {
|
|
143
|
-
var _quickTimeOptions$0$v, _quickTimeOptions$;
|
|
144
|
-
return (_quickTimeOptions$0$v = (_quickTimeOptions$ = quickTimeOptions[0]) === null || _quickTimeOptions$ === void 0 ? void 0 : _quickTimeOptions$.value) !== null && _quickTimeOptions$0$v !== void 0 ? _quickTimeOptions$0$v : DEFAULT_QUICK_TIME_OPTIONS[0].value;
|
|
195
|
+
var quickTimeOptions = useMemo(function () {
|
|
196
|
+
return quickTimeOptionsProp !== null && quickTimeOptionsProp !== void 0 && quickTimeOptionsProp.length ? quickTimeOptionsProp : defaultQuickTimeOptions;
|
|
197
|
+
}, [quickTimeOptionsProp, defaultQuickTimeOptions]);
|
|
198
|
+
var mergedLocale = useMemo(function () {
|
|
199
|
+
return _objectSpread(_objectSpread({}, LOCALE_TEXT[currentLocale]), localeProp);
|
|
200
|
+
}, [currentLocale, localeProp]);
|
|
201
|
+
var _useState = useState(function () {
|
|
202
|
+
return getPickerStateSnapshot(value, format, quickTimeOptions);
|
|
145
203
|
}),
|
|
204
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
205
|
+
initialState = _useState2[0];
|
|
206
|
+
var _useState3 = useState(false),
|
|
207
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
208
|
+
visible = _useState4[0],
|
|
209
|
+
setVisible = _useState4[1];
|
|
210
|
+
var _useState5 = useState(initialState.isRecent),
|
|
146
211
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
var _useState7 = useState(
|
|
212
|
+
isRecent = _useState6[0],
|
|
213
|
+
setIsRecent = _useState6[1];
|
|
214
|
+
var _useState7 = useState(initialState.sliderValue),
|
|
150
215
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
var _useState9 = useState(
|
|
216
|
+
sliderValue = _useState8[0],
|
|
217
|
+
setSliderValue = _useState8[1];
|
|
218
|
+
var _useState9 = useState(initialState.selectTimeRange),
|
|
154
219
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
var _useState11 = useState(
|
|
220
|
+
selectTimeRange = _useState10[0],
|
|
221
|
+
setSelectTimeRange = _useState10[1];
|
|
222
|
+
var _useState11 = useState(initialState.customTimeRange),
|
|
158
223
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
var _useState13 = useState(
|
|
224
|
+
customTimeRange = _useState12[0],
|
|
225
|
+
setCustomTimeRange = _useState12[1];
|
|
226
|
+
var _useState13 = useState(initialState.displayValue),
|
|
162
227
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
163
|
-
|
|
164
|
-
|
|
228
|
+
displayValue = _useState14[0],
|
|
229
|
+
setDisplayValue = _useState14[1];
|
|
230
|
+
var _useState15 = useState(initialState.flatRadioValue),
|
|
231
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
232
|
+
flatRadioValue = _useState16[0],
|
|
233
|
+
setFlatRadioValue = _useState16[1];
|
|
234
|
+
var flatSegmentedRef = useRef(null);
|
|
235
|
+
var _useState17 = useState({}),
|
|
236
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
237
|
+
flatSegmentedThumbStyle = _useState18[0],
|
|
238
|
+
setFlatSegmentedThumbStyle = _useState18[1];
|
|
165
239
|
var marks = useMemo(function () {
|
|
166
240
|
var marksObj = {};
|
|
167
241
|
quickTimeOptions.forEach(function (option) {
|
|
@@ -178,10 +252,70 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
178
252
|
max: Math.max.apply(Math, _toConsumableArray(values))
|
|
179
253
|
};
|
|
180
254
|
}, [quickTimeOptions]);
|
|
255
|
+
var flatSegmentedOptions = useMemo(function () {
|
|
256
|
+
return quickTimeOptions.map(function (item) {
|
|
257
|
+
return {
|
|
258
|
+
label: item.label,
|
|
259
|
+
value: item.id
|
|
260
|
+
};
|
|
261
|
+
});
|
|
262
|
+
}, [quickTimeOptions]);
|
|
263
|
+
var flatSegmentedTheme = useMemo(function () {
|
|
264
|
+
return {
|
|
265
|
+
cssVar: {
|
|
266
|
+
key: 'hc-date-range-picker-flat-segmented'
|
|
267
|
+
},
|
|
268
|
+
token: {
|
|
269
|
+
borderRadius: 4,
|
|
270
|
+
borderRadiusSM: 4,
|
|
271
|
+
boxShadowTertiary: '0 1px 10px rgba(0, 0, 0, 0.08)',
|
|
272
|
+
colorBgElevated: '#FFFFFF'
|
|
273
|
+
},
|
|
274
|
+
components: {
|
|
275
|
+
Segmented: {
|
|
276
|
+
trackBg: 'rgba(40, 105, 246, 0.1)',
|
|
277
|
+
trackPadding: 3,
|
|
278
|
+
itemColor: 'rgba(0, 0, 0, 0.85)',
|
|
279
|
+
itemHoverColor: 'rgba(0, 0, 0, 0.85)',
|
|
280
|
+
itemSelectedColor: '#2869F6'
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
}, []);
|
|
285
|
+
var quickTimeOptionsSignature = useMemo(function () {
|
|
286
|
+
return quickTimeOptions.map(function (item) {
|
|
287
|
+
var _item$interval, _item$timeUnitId;
|
|
288
|
+
return "".concat(item.id, ":").concat(item.value, ":").concat(item.label, ":").concat(item.diff, ":").concat((_item$interval = item.interval) !== null && _item$interval !== void 0 ? _item$interval : '', ":").concat((_item$timeUnitId = item.timeUnitId) !== null && _item$timeUnitId !== void 0 ? _item$timeUnitId : '');
|
|
289
|
+
}).join('|');
|
|
290
|
+
}, [quickTimeOptions]);
|
|
181
291
|
var setRangeByDate = useCallback(function (from, to) {
|
|
182
292
|
setSelectTimeRange([from, to]);
|
|
183
293
|
setCustomTimeRange([moment(from.valueOf()), moment(to.valueOf())]);
|
|
184
294
|
}, []);
|
|
295
|
+
var updateFlatSegmentedThumb = useCallback(function () {
|
|
296
|
+
var _items$find;
|
|
297
|
+
if (!flatSegmentedRef.current || flatRadioValue === undefined) {
|
|
298
|
+
setFlatSegmentedThumbStyle(_defineProperty({}, '--hc-date-range-picker-flat-segmented-thumb-opacity', 0));
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
var rootElement = flatSegmentedRef.current;
|
|
302
|
+
var items = Array.from(rootElement.querySelectorAll('.ant-segmented-item'));
|
|
303
|
+
var targetItem = (_items$find = items.find(function (item) {
|
|
304
|
+
var input = item.querySelector('.ant-segmented-item-input');
|
|
305
|
+
return input === null || input === void 0 ? void 0 : input.checked;
|
|
306
|
+
})) !== null && _items$find !== void 0 ? _items$find : items.find(function (item) {
|
|
307
|
+
var input = item.querySelector('.ant-segmented-item-input');
|
|
308
|
+
return Number(input === null || input === void 0 ? void 0 : input.value) === flatRadioValue;
|
|
309
|
+
});
|
|
310
|
+
var targetLabel = targetItem === null || targetItem === void 0 ? void 0 : targetItem.querySelector('.ant-segmented-item-label');
|
|
311
|
+
if (!targetItem || !targetLabel) {
|
|
312
|
+
setFlatSegmentedThumbStyle(_defineProperty({}, '--hc-date-range-picker-flat-segmented-thumb-opacity', 0));
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
var rootRect = rootElement.getBoundingClientRect();
|
|
316
|
+
var labelRect = targetLabel.getBoundingClientRect();
|
|
317
|
+
setFlatSegmentedThumbStyle(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, '--hc-date-range-picker-flat-segmented-thumb-left', "".concat(labelRect.left - rootRect.left, "px")), '--hc-date-range-picker-flat-segmented-thumb-top', "".concat(labelRect.top - rootRect.top, "px")), '--hc-date-range-picker-flat-segmented-thumb-width', "".concat(labelRect.width, "px")), '--hc-date-range-picker-flat-segmented-thumb-height', "".concat(labelRect.height, "px")), '--hc-date-range-picker-flat-segmented-thumb-opacity', 1));
|
|
318
|
+
}, [flatRadioValue]);
|
|
185
319
|
var calculateInterval = useCallback(function (fromTime, toTime) {
|
|
186
320
|
var diff = dayjs(toTime).valueOf() - dayjs(fromTime).valueOf();
|
|
187
321
|
var hours = diff / (60 * 60 * 1000);
|
|
@@ -215,46 +349,34 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
215
349
|
};
|
|
216
350
|
}, []);
|
|
217
351
|
useEffect(function () {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
} else {
|
|
240
|
-
setIsRecent(false);
|
|
241
|
-
setDisplayValue("".concat(from, " - ").concat(to));
|
|
242
|
-
if (flat) {
|
|
243
|
-
setFlatRadioValue(undefined);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
} else if (quickTimeOptions.length > 0) {
|
|
247
|
-
var defaultOption = quickTimeOptions[0];
|
|
248
|
-
var _to = dayjs();
|
|
249
|
-
var _from = dayjs().subtract(defaultOption.diff, 'millisecond');
|
|
250
|
-
setSliderValue(defaultOption.value);
|
|
251
|
-
setDisplayValue(defaultOption.label);
|
|
252
|
-
setRangeByDate(_from, _to);
|
|
253
|
-
if (flat) {
|
|
254
|
-
setFlatRadioValue(defaultOption.id);
|
|
255
|
-
}
|
|
352
|
+
var nextState = getPickerStateSnapshot(value, format, quickTimeOptions);
|
|
353
|
+
setIsRecent(nextState.isRecent);
|
|
354
|
+
setSliderValue(nextState.sliderValue);
|
|
355
|
+
setSelectTimeRange(nextState.selectTimeRange);
|
|
356
|
+
setCustomTimeRange(nextState.customTimeRange);
|
|
357
|
+
setDisplayValue(nextState.displayValue);
|
|
358
|
+
setFlatRadioValue(flat ? nextState.flatRadioValue : undefined);
|
|
359
|
+
}, [value, quickTimeOptionsSignature, flat, format, quickTimeOptions]);
|
|
360
|
+
useEffect(function () {
|
|
361
|
+
if (!flat) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
var frameId = window.requestAnimationFrame(function () {
|
|
365
|
+
updateFlatSegmentedThumb();
|
|
366
|
+
});
|
|
367
|
+
var resizeObserver = typeof ResizeObserver === 'undefined' || !flatSegmentedRef.current ? null : new ResizeObserver(function () {
|
|
368
|
+
updateFlatSegmentedThumb();
|
|
369
|
+
});
|
|
370
|
+
if (flatSegmentedRef.current) {
|
|
371
|
+
resizeObserver === null || resizeObserver === void 0 || resizeObserver.observe(flatSegmentedRef.current);
|
|
256
372
|
}
|
|
257
|
-
|
|
373
|
+
window.addEventListener('resize', updateFlatSegmentedThumb);
|
|
374
|
+
return function () {
|
|
375
|
+
window.cancelAnimationFrame(frameId);
|
|
376
|
+
resizeObserver === null || resizeObserver === void 0 || resizeObserver.disconnect();
|
|
377
|
+
window.removeEventListener('resize', updateFlatSegmentedThumb);
|
|
378
|
+
};
|
|
379
|
+
}, [flat, flatSegmentedOptions, updateFlatSegmentedThumb]);
|
|
258
380
|
var handleRecentSave = useCallback(function () {
|
|
259
381
|
var option = quickTimeOptions.find(function (opt) {
|
|
260
382
|
return opt.value === sliderValue;
|
|
@@ -305,13 +427,10 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
305
427
|
onChange === null || onChange === void 0 || onChange(timeInfo);
|
|
306
428
|
}, [customTimeRange, format, calculateInterval, onChange]);
|
|
307
429
|
var wrappedDisabledDateForCalendar = useCallback(function (current, options) {
|
|
308
|
-
var _options$from$map, _options$from;
|
|
309
430
|
if (!disabledDate) {
|
|
310
431
|
return false;
|
|
311
432
|
}
|
|
312
|
-
var fromArr = (
|
|
313
|
-
return dayjs(item.valueOf());
|
|
314
|
-
})) !== null && _options$from$map !== void 0 ? _options$from$map : [];
|
|
433
|
+
var fromArr = normalizeDisabledDateFrom(options);
|
|
315
434
|
var currentDayjs = current ? dayjs(current.valueOf()) : null;
|
|
316
435
|
return disabledDate(currentDayjs, {
|
|
317
436
|
from: fromArr
|
|
@@ -326,8 +445,8 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
326
445
|
from: fromArr
|
|
327
446
|
});
|
|
328
447
|
}, [disabledDate]);
|
|
329
|
-
var
|
|
330
|
-
var selectedId =
|
|
448
|
+
var handleFlatSegmentedChange = useCallback(function (selectedValue) {
|
|
449
|
+
var selectedId = Number(selectedValue);
|
|
331
450
|
setFlatRadioValue(selectedId);
|
|
332
451
|
var option = quickTimeOptions.find(function (opt) {
|
|
333
452
|
return opt.id === selectedId;
|
|
@@ -383,7 +502,7 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
383
502
|
style: {
|
|
384
503
|
color: isRecent ? PRIMARY : TEXT_SECONDARY
|
|
385
504
|
}
|
|
386
|
-
},
|
|
505
|
+
}, mergedLocale.recent), /*#__PURE__*/React.createElement(Switch, {
|
|
387
506
|
checked: !isRecent,
|
|
388
507
|
onChange: function onChange(checked) {
|
|
389
508
|
return setIsRecent(!checked);
|
|
@@ -396,7 +515,7 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
396
515
|
style: {
|
|
397
516
|
color: isRecent ? TEXT_SECONDARY : PRIMARY
|
|
398
517
|
}
|
|
399
|
-
},
|
|
518
|
+
}, mergedLocale.custom)), /*#__PURE__*/React.createElement(CloseOutlined, {
|
|
400
519
|
className: "hc-date-range-picker-close",
|
|
401
520
|
onClick: function onClick() {
|
|
402
521
|
return setVisible(false);
|
|
@@ -421,7 +540,7 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
421
540
|
type: "primary",
|
|
422
541
|
size: "small",
|
|
423
542
|
onClick: handleRecentSave
|
|
424
|
-
},
|
|
543
|
+
}, mergedLocale.confirm))) : /*#__PURE__*/React.createElement("div", {
|
|
425
544
|
className: "hc-date-range-picker-custom"
|
|
426
545
|
}, /*#__PURE__*/React.createElement(RangeCalendar, {
|
|
427
546
|
showToday: false,
|
|
@@ -439,16 +558,15 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
439
558
|
className: "hc-date-range-picker-wrapper ".concat(flat ? 'hc-date-range-picker-flat' : '')
|
|
440
559
|
}, flat ? /*#__PURE__*/React.createElement("div", {
|
|
441
560
|
className: "hc-date-range-picker-flat-content"
|
|
442
|
-
}, /*#__PURE__*/React.createElement(
|
|
443
|
-
|
|
444
|
-
|
|
561
|
+
}, /*#__PURE__*/React.createElement(ConfigProvider, {
|
|
562
|
+
theme: flatSegmentedTheme
|
|
563
|
+
}, /*#__PURE__*/React.createElement(Segmented, {
|
|
564
|
+
ref: flatSegmentedRef,
|
|
565
|
+
className: "hc-date-range-picker-flat-segmented",
|
|
445
566
|
value: flatRadioValue,
|
|
446
|
-
onChange:
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
key: item.id,
|
|
450
|
-
value: item.id
|
|
451
|
-
}, item.label);
|
|
567
|
+
onChange: handleFlatSegmentedChange,
|
|
568
|
+
options: flatSegmentedOptions,
|
|
569
|
+
style: flatSegmentedThumbStyle
|
|
452
570
|
})), /*#__PURE__*/React.createElement(RangePicker, {
|
|
453
571
|
allowClear: false,
|
|
454
572
|
disabledDate: disabledDate ? wrappedDisabledDateForAntd : undefined,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@hc-primary: var(--ant-color-primary, #
|
|
1
|
+
@hc-primary: var(--ant-color-primary, #2869f6);
|
|
2
2
|
|
|
3
3
|
.hc-date-range-picker-wrapper {
|
|
4
4
|
position: relative;
|
|
@@ -23,33 +23,66 @@
|
|
|
23
23
|
align-items: center;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
.hc-date-range-picker-flat-
|
|
26
|
+
.hc-date-range-picker-flat-segmented {
|
|
27
|
+
position: relative;
|
|
27
28
|
display: inline-flex;
|
|
28
29
|
flex-wrap: nowrap;
|
|
29
|
-
gap: 3px;
|
|
30
30
|
margin: 0;
|
|
31
|
-
|
|
32
|
-
background: rgba(40, 105, 246, 10%);
|
|
31
|
+
border: none;
|
|
33
32
|
border-radius: 4px;
|
|
33
|
+
box-shadow: none;
|
|
34
|
+
|
|
35
|
+
&::before {
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: var(--hc-date-range-picker-flat-segmented-thumb-top, 3px);
|
|
38
|
+
left: var(--hc-date-range-picker-flat-segmented-thumb-left, 3px);
|
|
39
|
+
z-index: 0;
|
|
40
|
+
width: var(--hc-date-range-picker-flat-segmented-thumb-width, 0);
|
|
41
|
+
height: var(--hc-date-range-picker-flat-segmented-thumb-height, 26px);
|
|
42
|
+
background: var(--ant-color-bg-elevated, #fff);
|
|
43
|
+
border-radius: var(--ant-border-radius-sm, 4px);
|
|
44
|
+
box-shadow: var(--ant-box-shadow-tertiary, 0 1px 10px #00000014);
|
|
45
|
+
opacity: var(--hc-date-range-picker-flat-segmented-thumb-opacity, 0);
|
|
46
|
+
transition:
|
|
47
|
+
left 0.2s ease,
|
|
48
|
+
top 0.2s ease,
|
|
49
|
+
width 0.2s ease,
|
|
50
|
+
height 0.2s ease,
|
|
51
|
+
opacity 0.2s ease;
|
|
52
|
+
pointer-events: none;
|
|
53
|
+
content: '';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.ant-segmented-group {
|
|
57
|
+
position: relative;
|
|
58
|
+
z-index: 1;
|
|
59
|
+
gap: 3px;
|
|
60
|
+
}
|
|
34
61
|
|
|
35
|
-
.ant-
|
|
62
|
+
.ant-segmented-item {
|
|
36
63
|
height: 26px;
|
|
64
|
+
padding: 0;
|
|
65
|
+
background: transparent;
|
|
66
|
+
box-shadow: none;
|
|
67
|
+
border-radius: 4px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.ant-segmented-item-label {
|
|
71
|
+
min-height: 26px;
|
|
37
72
|
padding: 0 12px;
|
|
38
73
|
line-height: 26px;
|
|
39
|
-
background: none;
|
|
40
|
-
border: none;
|
|
41
74
|
border-radius: 4px;
|
|
75
|
+
}
|
|
42
76
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
77
|
+
.ant-segmented-thumb {
|
|
78
|
+
pointer-events: none;
|
|
79
|
+
opacity: 0;
|
|
80
|
+
}
|
|
46
81
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
box-shadow: 0 1px 10px #00000014;
|
|
52
|
-
}
|
|
82
|
+
.ant-segmented-item-selected,
|
|
83
|
+
.ant-segmented-item-selected:hover {
|
|
84
|
+
background: transparent;
|
|
85
|
+
box-shadow: none;
|
|
53
86
|
}
|
|
54
87
|
}
|
|
55
88
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DrawerProps } from 'antd';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import './index.less';
|
|
4
|
+
export interface HCDrawerProps extends DrawerProps {
|
|
5
|
+
showFooter?: boolean;
|
|
6
|
+
onOk?: () => void | Promise<void>;
|
|
7
|
+
okText?: React.ReactNode;
|
|
8
|
+
cancelText?: React.ReactNode;
|
|
9
|
+
resizable?: boolean;
|
|
10
|
+
minWidth?: number;
|
|
11
|
+
maxWidth?: number;
|
|
12
|
+
}
|
|
13
|
+
declare const HCDrawer: React.FC<HCDrawerProps>;
|
|
14
|
+
export default HCDrawer;
|
|
@@ -0,0 +1,307 @@
|
|
|
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
|
+
var _excluded = ["footer", "showFooter", "onOk", "onClose", "okText", "cancelText", "resizable", "minWidth", "maxWidth", "width", "size", "placement", "rootClassName", "open", "styles", "classNames"];
|
|
3
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
|
+
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; }
|
|
5
|
+
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; }
|
|
6
|
+
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; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
8
|
+
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); }
|
|
9
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
10
|
+
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."); }
|
|
11
|
+
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); }
|
|
12
|
+
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; }
|
|
13
|
+
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; } }
|
|
14
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
15
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
16
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
17
|
+
import classNames from 'classnames';
|
|
18
|
+
import { Button, Drawer, Space } from 'antd';
|
|
19
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
20
|
+
import "./index.less";
|
|
21
|
+
var DEFAULT_WIDTH = 378;
|
|
22
|
+
var DEFAULT_LARGE_WIDTH = 736;
|
|
23
|
+
var RESIZE_EDGE_WIDTH = 8;
|
|
24
|
+
var drawerId = 0;
|
|
25
|
+
function getDefaultWidth(size) {
|
|
26
|
+
return size === 'large' ? DEFAULT_LARGE_WIDTH : DEFAULT_WIDTH;
|
|
27
|
+
}
|
|
28
|
+
function getDefaultMaxWidth(minWidth) {
|
|
29
|
+
if (typeof window === 'undefined') {
|
|
30
|
+
return minWidth;
|
|
31
|
+
}
|
|
32
|
+
return Math.max(minWidth, window.innerWidth - 48);
|
|
33
|
+
}
|
|
34
|
+
function clampWidth(width, minWidth, maxWidth) {
|
|
35
|
+
return Math.min(Math.max(width, minWidth), Math.max(minWidth, maxWidth));
|
|
36
|
+
}
|
|
37
|
+
var HCDrawer = function HCDrawer(props) {
|
|
38
|
+
var footer = props.footer,
|
|
39
|
+
_props$showFooter = props.showFooter,
|
|
40
|
+
showFooter = _props$showFooter === void 0 ? true : _props$showFooter,
|
|
41
|
+
onOk = props.onOk,
|
|
42
|
+
onClose = props.onClose,
|
|
43
|
+
_props$okText = props.okText,
|
|
44
|
+
okText = _props$okText === void 0 ? '确认' : _props$okText,
|
|
45
|
+
_props$cancelText = props.cancelText,
|
|
46
|
+
cancelText = _props$cancelText === void 0 ? '取消' : _props$cancelText,
|
|
47
|
+
_props$resizable = props.resizable,
|
|
48
|
+
resizable = _props$resizable === void 0 ? false : _props$resizable,
|
|
49
|
+
_props$minWidth = props.minWidth,
|
|
50
|
+
minWidth = _props$minWidth === void 0 ? DEFAULT_WIDTH : _props$minWidth,
|
|
51
|
+
maxWidth = props.maxWidth,
|
|
52
|
+
width = props.width,
|
|
53
|
+
_props$size = props.size,
|
|
54
|
+
size = _props$size === void 0 ? 'default' : _props$size,
|
|
55
|
+
_props$placement = props.placement,
|
|
56
|
+
placement = _props$placement === void 0 ? 'right' : _props$placement,
|
|
57
|
+
rootClassName = props.rootClassName,
|
|
58
|
+
open = props.open,
|
|
59
|
+
styles = props.styles,
|
|
60
|
+
drawerClassNames = props.classNames,
|
|
61
|
+
restProps = _objectWithoutProperties(props, _excluded);
|
|
62
|
+
var supportsResize = resizable && (placement === 'left' || placement === 'right');
|
|
63
|
+
var resolvedMinWidth = Math.max(0, minWidth);
|
|
64
|
+
var resolvedMaxWidth = maxWidth === undefined ? getDefaultMaxWidth(resolvedMinWidth) : Math.max(resolvedMinWidth, maxWidth);
|
|
65
|
+
var hasCustomFooter = Object.prototype.hasOwnProperty.call(props, 'footer');
|
|
66
|
+
var instanceClassNameRef = useRef('');
|
|
67
|
+
var dragStateRef = useRef(null);
|
|
68
|
+
var innerWidthRef = useRef(null);
|
|
69
|
+
var _useState = useState(null),
|
|
70
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
71
|
+
innerWidth = _useState2[0],
|
|
72
|
+
setInnerWidth = _useState2[1];
|
|
73
|
+
var _useState3 = useState(false),
|
|
74
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
75
|
+
okLoading = _useState4[0],
|
|
76
|
+
setOkLoading = _useState4[1];
|
|
77
|
+
var _useState5 = useState(false),
|
|
78
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
79
|
+
edgeHovered = _useState6[0],
|
|
80
|
+
setEdgeHovered = _useState6[1];
|
|
81
|
+
var _useState7 = useState(false),
|
|
82
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
83
|
+
isResizing = _useState8[0],
|
|
84
|
+
setIsResizing = _useState8[1];
|
|
85
|
+
var _useState9 = useState(false),
|
|
86
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
87
|
+
footerDividerVisible = _useState10[0],
|
|
88
|
+
setFooterDividerVisible = _useState10[1];
|
|
89
|
+
if (!instanceClassNameRef.current) {
|
|
90
|
+
drawerId += 1;
|
|
91
|
+
instanceClassNameRef.current = "hc-drawer-instance-".concat(drawerId);
|
|
92
|
+
}
|
|
93
|
+
var syncInnerWidth = function syncInnerWidth() {
|
|
94
|
+
if (!supportsResize) {
|
|
95
|
+
setInnerWidth(null);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (typeof width === 'number') {
|
|
99
|
+
setInnerWidth(clampWidth(width, resolvedMinWidth, resolvedMaxWidth));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (width === undefined) {
|
|
103
|
+
setInnerWidth(clampWidth(getDefaultWidth(size), resolvedMinWidth, resolvedMaxWidth));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
setInnerWidth(null);
|
|
107
|
+
};
|
|
108
|
+
useEffect(function () {
|
|
109
|
+
innerWidthRef.current = innerWidth;
|
|
110
|
+
}, [innerWidth]);
|
|
111
|
+
useEffect(function () {
|
|
112
|
+
syncInnerWidth();
|
|
113
|
+
}, [width, size, supportsResize, resolvedMinWidth, resolvedMaxWidth]);
|
|
114
|
+
useEffect(function () {
|
|
115
|
+
if (!supportsResize || !open || typeof width !== 'string' || typeof document === 'undefined') {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
var frameId = window.requestAnimationFrame(function () {
|
|
119
|
+
var rootElement = document.querySelector(".".concat(instanceClassNameRef.current));
|
|
120
|
+
var contentElement = rootElement === null || rootElement === void 0 ? void 0 : rootElement.querySelector('.ant-drawer-content');
|
|
121
|
+
if (!contentElement) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
var nextWidth = clampWidth(Math.round(contentElement.getBoundingClientRect().width), resolvedMinWidth, resolvedMaxWidth);
|
|
125
|
+
setInnerWidth(nextWidth);
|
|
126
|
+
});
|
|
127
|
+
return function () {
|
|
128
|
+
window.cancelAnimationFrame(frameId);
|
|
129
|
+
};
|
|
130
|
+
}, [width, open, resolvedMinWidth, resolvedMaxWidth, supportsResize]);
|
|
131
|
+
useEffect(function () {
|
|
132
|
+
if (!open || hasCustomFooter || !showFooter || typeof document === 'undefined') {
|
|
133
|
+
setFooterDividerVisible(false);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
var rootElement = document.querySelector(".".concat(instanceClassNameRef.current));
|
|
137
|
+
var bodyElement = rootElement === null || rootElement === void 0 ? void 0 : rootElement.querySelector('.ant-drawer-body');
|
|
138
|
+
if (!bodyElement) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
var updateFooterDivider = function updateFooterDivider() {
|
|
142
|
+
setFooterDividerVisible(bodyElement.scrollHeight > bodyElement.clientHeight);
|
|
143
|
+
};
|
|
144
|
+
updateFooterDivider();
|
|
145
|
+
var resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(function () {
|
|
146
|
+
updateFooterDivider();
|
|
147
|
+
});
|
|
148
|
+
resizeObserver === null || resizeObserver === void 0 || resizeObserver.observe(bodyElement);
|
|
149
|
+
if (bodyElement.firstElementChild instanceof HTMLElement) {
|
|
150
|
+
resizeObserver === null || resizeObserver === void 0 || resizeObserver.observe(bodyElement.firstElementChild);
|
|
151
|
+
}
|
|
152
|
+
bodyElement.addEventListener('scroll', updateFooterDivider);
|
|
153
|
+
window.addEventListener('resize', updateFooterDivider);
|
|
154
|
+
return function () {
|
|
155
|
+
resizeObserver === null || resizeObserver === void 0 || resizeObserver.disconnect();
|
|
156
|
+
bodyElement.removeEventListener('scroll', updateFooterDivider);
|
|
157
|
+
window.removeEventListener('resize', updateFooterDivider);
|
|
158
|
+
};
|
|
159
|
+
}, [hasCustomFooter, open, showFooter, innerWidth]);
|
|
160
|
+
useEffect(function () {
|
|
161
|
+
if (!supportsResize || !open || typeof document === 'undefined') {
|
|
162
|
+
setEdgeHovered(false);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
var rootElement = document.querySelector(".".concat(instanceClassNameRef.current));
|
|
166
|
+
var contentElement = rootElement === null || rootElement === void 0 ? void 0 : rootElement.querySelector('.ant-drawer-content');
|
|
167
|
+
if (!contentElement) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
var isInResizeEdge = function isInResizeEdge(clientX) {
|
|
171
|
+
var rect = contentElement.getBoundingClientRect();
|
|
172
|
+
if (placement === 'right') {
|
|
173
|
+
return clientX >= rect.left && clientX <= rect.left + RESIZE_EDGE_WIDTH;
|
|
174
|
+
}
|
|
175
|
+
return clientX <= rect.right && clientX >= rect.right - RESIZE_EDGE_WIDTH;
|
|
176
|
+
};
|
|
177
|
+
var handleMouseMove = function handleMouseMove(event) {
|
|
178
|
+
if (dragStateRef.current) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
setEdgeHovered(isInResizeEdge(event.clientX));
|
|
182
|
+
};
|
|
183
|
+
var handleMouseLeave = function handleMouseLeave() {
|
|
184
|
+
if (!dragStateRef.current) {
|
|
185
|
+
setEdgeHovered(false);
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
var cleanupDraggingStyle = function cleanupDraggingStyle() {
|
|
189
|
+
document.body.style.userSelect = '';
|
|
190
|
+
document.body.style.cursor = '';
|
|
191
|
+
};
|
|
192
|
+
var handleMouseUp = function handleMouseUp() {
|
|
193
|
+
dragStateRef.current = null;
|
|
194
|
+
setIsResizing(false);
|
|
195
|
+
setEdgeHovered(false);
|
|
196
|
+
cleanupDraggingStyle();
|
|
197
|
+
window.removeEventListener('mousemove', handleWindowMouseMove);
|
|
198
|
+
window.removeEventListener('mouseup', handleMouseUp);
|
|
199
|
+
};
|
|
200
|
+
var handleWindowMouseMove = function handleWindowMouseMove(event) {
|
|
201
|
+
var dragState = dragStateRef.current;
|
|
202
|
+
if (!dragState) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
var delta = event.clientX - dragState.startX;
|
|
206
|
+
var nextWidth = placement === 'right' ? dragState.startWidth - delta : dragState.startWidth + delta;
|
|
207
|
+
setInnerWidth(clampWidth(nextWidth, resolvedMinWidth, resolvedMaxWidth));
|
|
208
|
+
};
|
|
209
|
+
var handleMouseDown = function handleMouseDown(event) {
|
|
210
|
+
var _ref, _innerWidthRef$curren;
|
|
211
|
+
if (event.button !== 0 || !isInResizeEdge(event.clientX)) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
var currentWidth = (_ref = (_innerWidthRef$curren = innerWidthRef.current) !== null && _innerWidthRef$curren !== void 0 ? _innerWidthRef$curren : Math.round(contentElement.getBoundingClientRect().width)) !== null && _ref !== void 0 ? _ref : getDefaultWidth(size);
|
|
215
|
+
dragStateRef.current = {
|
|
216
|
+
startX: event.clientX,
|
|
217
|
+
startWidth: currentWidth
|
|
218
|
+
};
|
|
219
|
+
document.body.style.userSelect = 'none';
|
|
220
|
+
document.body.style.cursor = 'col-resize';
|
|
221
|
+
setIsResizing(true);
|
|
222
|
+
setEdgeHovered(true);
|
|
223
|
+
window.addEventListener('mousemove', handleWindowMouseMove);
|
|
224
|
+
window.addEventListener('mouseup', handleMouseUp);
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
};
|
|
227
|
+
contentElement.addEventListener('mousemove', handleMouseMove);
|
|
228
|
+
contentElement.addEventListener('mouseleave', handleMouseLeave);
|
|
229
|
+
contentElement.addEventListener('mousedown', handleMouseDown);
|
|
230
|
+
return function () {
|
|
231
|
+
contentElement.removeEventListener('mousemove', handleMouseMove);
|
|
232
|
+
contentElement.removeEventListener('mouseleave', handleMouseLeave);
|
|
233
|
+
contentElement.removeEventListener('mousedown', handleMouseDown);
|
|
234
|
+
cleanupDraggingStyle();
|
|
235
|
+
window.removeEventListener('mousemove', handleWindowMouseMove);
|
|
236
|
+
window.removeEventListener('mouseup', handleMouseUp);
|
|
237
|
+
dragStateRef.current = null;
|
|
238
|
+
setIsResizing(false);
|
|
239
|
+
};
|
|
240
|
+
}, [open, resolvedMinWidth, placement, resolvedMaxWidth, size, supportsResize]);
|
|
241
|
+
var mergedFooter = useMemo(function () {
|
|
242
|
+
if (hasCustomFooter) {
|
|
243
|
+
return footer;
|
|
244
|
+
}
|
|
245
|
+
if (!showFooter) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
249
|
+
className: classNames('hc-drawer-footer', {
|
|
250
|
+
'hc-drawer-footer-divider': footerDividerVisible
|
|
251
|
+
})
|
|
252
|
+
}, /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Button, {
|
|
253
|
+
onClick: function onClick(event) {
|
|
254
|
+
return onClose === null || onClose === void 0 ? void 0 : onClose(event);
|
|
255
|
+
}
|
|
256
|
+
}, cancelText), /*#__PURE__*/React.createElement(Button, {
|
|
257
|
+
type: "primary",
|
|
258
|
+
loading: okLoading,
|
|
259
|
+
onClick: function onClick() {
|
|
260
|
+
if (!onOk) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
var result = onOk();
|
|
264
|
+
if (result && typeof result.then === 'function') {
|
|
265
|
+
setOkLoading(true);
|
|
266
|
+
void result.catch(function () {
|
|
267
|
+
return undefined;
|
|
268
|
+
}).finally(function () {
|
|
269
|
+
setOkLoading(false);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}, okText)));
|
|
274
|
+
}, [cancelText, footer, footerDividerVisible, hasCustomFooter, okLoading, okText, onClose, onOk, showFooter]);
|
|
275
|
+
var mergedRootClassName = classNames('hc-drawer', instanceClassNameRef.current, {
|
|
276
|
+
'hc-drawer-resizable': supportsResize,
|
|
277
|
+
'hc-drawer-resize-hover': supportsResize && edgeHovered,
|
|
278
|
+
'hc-drawer-resizing': supportsResize && isResizing,
|
|
279
|
+
'hc-drawer-resizable-left': supportsResize && placement === 'left',
|
|
280
|
+
'hc-drawer-resizable-right': supportsResize && placement === 'right',
|
|
281
|
+
'hc-drawer-footer-divider-visible': footerDividerVisible && !hasCustomFooter && showFooter
|
|
282
|
+
}, rootClassName);
|
|
283
|
+
var mergedWidth = supportsResize ? innerWidth !== null && innerWidth !== void 0 ? innerWidth : width : width;
|
|
284
|
+
var mergedStyles = useMemo(function () {
|
|
285
|
+
if (!supportsResize) {
|
|
286
|
+
return styles;
|
|
287
|
+
}
|
|
288
|
+
return _objectSpread(_objectSpread({}, styles), {}, {
|
|
289
|
+
wrapper: _objectSpread(_objectSpread({}, styles === null || styles === void 0 ? void 0 : styles.wrapper), {}, {
|
|
290
|
+
minWidth: resolvedMinWidth,
|
|
291
|
+
maxWidth: resolvedMaxWidth
|
|
292
|
+
})
|
|
293
|
+
});
|
|
294
|
+
}, [resolvedMaxWidth, resolvedMinWidth, styles, supportsResize]);
|
|
295
|
+
return /*#__PURE__*/React.createElement(Drawer, _extends({}, restProps, {
|
|
296
|
+
open: open,
|
|
297
|
+
onClose: onClose,
|
|
298
|
+
placement: placement,
|
|
299
|
+
size: size,
|
|
300
|
+
width: mergedWidth,
|
|
301
|
+
footer: mergedFooter,
|
|
302
|
+
rootClassName: mergedRootClassName,
|
|
303
|
+
classNames: drawerClassNames,
|
|
304
|
+
styles: mergedStyles
|
|
305
|
+
}));
|
|
306
|
+
};
|
|
307
|
+
export default HCDrawer;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
.hc-drawer-footer {
|
|
3
|
+
display: flex;
|
|
4
|
+
justify-content: flex-end;
|
|
5
|
+
width: 100%;
|
|
6
|
+
border-top: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.hc-drawer .ant-drawer-footer {
|
|
10
|
+
border-top: 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.hc-drawer-footer-divider-visible .ant-drawer-footer {
|
|
14
|
+
border-top: 1px solid #f0f0f0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.hc-drawer-resizable-right .ant-drawer-content,
|
|
18
|
+
.hc-drawer-resizable-left .ant-drawer-content {
|
|
19
|
+
position: relative;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.hc-drawer-resize-hover.hc-drawer-resizable-right .ant-drawer-content,
|
|
23
|
+
.hc-drawer-resize-hover.hc-drawer-resizable-left .ant-drawer-content {
|
|
24
|
+
cursor: col-resize;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.hc-drawer-resizing .ant-drawer-content-wrapper {
|
|
28
|
+
transition: none;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Modal } from 'antd';
|
|
2
|
+
import type { ModalProps } from 'antd';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import './index.less';
|
|
5
|
+
export interface HCModalProps extends ModalProps {
|
|
6
|
+
}
|
|
7
|
+
type HCModalType = React.FC<HCModalProps> & Pick<typeof Modal, 'useModal' | 'destroyAll' | 'config' | 'info' | 'success' | 'error' | 'warning' | 'warn' | 'confirm' | '_InternalPanelDoNotUseOrYouWillBeFired'>;
|
|
8
|
+
declare const HCModal: HCModalType;
|
|
9
|
+
export default HCModal;
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
var _excluded = ["rootClassName"];
|
|
3
|
+
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; }
|
|
4
|
+
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; }
|
|
5
|
+
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; }
|
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
|
+
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); }
|
|
8
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
9
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
11
|
+
import classNames from 'classnames';
|
|
12
|
+
import { Modal } from 'antd';
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import "./index.less";
|
|
15
|
+
var HCModalBase = function HCModalBase(_ref) {
|
|
16
|
+
var rootClassName = _ref.rootClassName,
|
|
17
|
+
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
18
|
+
return /*#__PURE__*/React.createElement(Modal, _extends({}, restProps, {
|
|
19
|
+
rootClassName: classNames('hc-modal', rootClassName)
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
var withStaticClassName = function withStaticClassName(config) {
|
|
23
|
+
return _objectSpread(_objectSpread({}, config), {}, {
|
|
24
|
+
className: classNames('hc-modal', config.className)
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
var HCModal = HCModalBase;
|
|
28
|
+
HCModal.useModal = Modal.useModal;
|
|
29
|
+
HCModal.destroyAll = Modal.destroyAll;
|
|
30
|
+
HCModal.config = Modal.config;
|
|
31
|
+
HCModal.info = function (config) {
|
|
32
|
+
return Modal.info(withStaticClassName(config));
|
|
33
|
+
};
|
|
34
|
+
HCModal.success = function (config) {
|
|
35
|
+
return Modal.success(withStaticClassName(config));
|
|
36
|
+
};
|
|
37
|
+
HCModal.error = function (config) {
|
|
38
|
+
return Modal.error(withStaticClassName(config));
|
|
39
|
+
};
|
|
40
|
+
HCModal.warning = function (config) {
|
|
41
|
+
return Modal.warning(withStaticClassName(config));
|
|
42
|
+
};
|
|
43
|
+
HCModal.warn = function (config) {
|
|
44
|
+
return Modal.warn(withStaticClassName(config));
|
|
45
|
+
};
|
|
46
|
+
HCModal.confirm = function (config) {
|
|
47
|
+
return Modal.confirm(withStaticClassName(config));
|
|
48
|
+
};
|
|
49
|
+
HCModal._InternalPanelDoNotUseOrYouWillBeFired = Modal._InternalPanelDoNotUseOrYouWillBeFired;
|
|
50
|
+
export default HCModal;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
.hc-modal {
|
|
3
|
+
.ant-modal-content {
|
|
4
|
+
padding: 0;
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
border-radius: 4px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.ant-modal-header {
|
|
10
|
+
margin-bottom: 0;
|
|
11
|
+
padding: 16px 24px;
|
|
12
|
+
background: #fff;
|
|
13
|
+
border-bottom: 1px solid #f0f0f0;
|
|
14
|
+
border-radius: 4px 4px 0 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ant-modal-body {
|
|
18
|
+
padding: 24px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.ant-modal-footer {
|
|
22
|
+
margin-top: 0;
|
|
23
|
+
padding: 10px 16px;
|
|
24
|
+
background: #fff;
|
|
25
|
+
border-top: 1px solid #f0f0f0;
|
|
26
|
+
border-radius: 0 0 4px 4px;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { ResourceProgressProps } from './ResourceProgress';
|
|
|
10
10
|
export { default as ShowMore } from './showMore';
|
|
11
11
|
export { default as BasicFilesRead } from './BasicFilesRead';
|
|
12
12
|
export { default as DateRangePicker } from './DateRangePicker';
|
|
13
|
-
export type { DateRangePickerProps, QuickTimeOption, TimeRangeInfo, } from './DateRangePicker';
|
|
13
|
+
export type { DateRangePickerLocale, DateRangePickerProps, DateRangePickerValue, QuickTimeOption, TimeRangeInfo, } from './DateRangePicker';
|
|
14
14
|
export { Actions, LinkButton } from './Actions';
|
|
15
15
|
export type { ActionElementProps, ActionsProps, LinkButtonProps, } from './Actions';
|
|
16
16
|
export { default as TextCopy } from './TextCopy';
|
|
@@ -30,6 +30,10 @@ export { default as Yaml } from './Yaml';
|
|
|
30
30
|
export type { YamlProps, YamlTexts, YamlValidateResult } from './Yaml';
|
|
31
31
|
export { default as PageHeader } from './PageHeader';
|
|
32
32
|
export type { PageHeaderProps } from './PageHeader';
|
|
33
|
+
export { default as HCModal } from './HCModal';
|
|
34
|
+
export type { HCModalProps } from './HCModal';
|
|
35
|
+
export { default as HCDrawer } from './HCDrawer';
|
|
36
|
+
export type { HCDrawerProps } from './HCDrawer';
|
|
33
37
|
export { default as MetadataForm } from './MetadataForm';
|
|
34
38
|
export type { MetadataFormProps, MetadataFormRef } from './MetadataForm';
|
|
35
39
|
export { default as MetadataTags } from './MetadataTags';
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,8 @@ export { logCenterLocaleZhCN, LOG_CENTER_API, createLogCenterServices } from "./
|
|
|
19
19
|
export { default as Terminal } from "./Terminal";
|
|
20
20
|
export { default as Yaml } from "./Yaml";
|
|
21
21
|
export { default as PageHeader } from "./PageHeader";
|
|
22
|
+
export { default as HCModal } from "./HCModal";
|
|
23
|
+
export { default as HCDrawer } from "./HCDrawer";
|
|
22
24
|
export { default as MetadataForm } from "./MetadataForm";
|
|
23
25
|
export { default as MetadataTags } from "./MetadataTags";
|
|
24
26
|
export { default as MetadataCount } from "./MetadataCount";
|