@zykj2024/much-library 1.1.9 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,418 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
+ var _excluded = ["style", "className", "label", "valueFormat", "dateType", "dynamic", "showTime", "disabled", "value", "onChange"];
5
+ import { useEmotionCss } from '@ant-design/use-emotion-css';
6
+ import { DatePicker, Tabs } from 'antd';
7
+ import classNames from 'classnames';
8
+ import dayjs from 'dayjs';
9
+ import { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
10
+ import ShortcutItem, { CODE_LABEL_MAP } from "./comps/ShortcutItem";
11
+ import "./index.css";
12
+
13
+ // 获取动态日期显示内容
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ import { jsxs as _jsxs } from "react/jsx-runtime";
16
+ export var getDynamicLabel = function getDynamicLabel(dynamicValue) {
17
+ // 'M_N'表示为一个不存在的值
18
+ var _dynamicValue = dynamicValue || 'M_N';
19
+ var _dynamicLabel = CODE_LABEL_MAP[_dynamicValue];
20
+ if (!_dynamicLabel) {
21
+ var _dynamicValue$split$m = _dynamicValue.split('_').map(function (v) {
22
+ return isNaN(+v) ? undefined : +v;
23
+ }),
24
+ _dynamicValue$split$m2 = _slicedToArray(_dynamicValue$split$m, 2),
25
+ n1 = _dynamicValue$split$m2[0],
26
+ n2 = _dynamicValue$split$m2[1];
27
+ if (n1 !== undefined && n2 !== undefined) {
28
+ if (n1 < 0 && n2 === 0) {
29
+ // 最近n日
30
+ _dynamicLabel = "\u6700\u8FD1".concat(-n1 + 1, "\u65E5");
31
+ } else if (n1 < 0 && n2 === -1) {
32
+ // 过去n日
33
+ _dynamicLabel = "\u8FC7\u53BB".concat(-n1, "\u65E5");
34
+ } else if (n1 === 0 && n2 > 0) {
35
+ // 今天 - 未来n日
36
+ _dynamicLabel = "\u4ECA\u5929 - \u672A\u6765".concat(n2, "\u65E5");
37
+ } else if (n1 > 0 && n2 > 0 && n1 <= n2) {
38
+ // 未来m日 - 未来n日
39
+ _dynamicLabel = "\u672A\u6765".concat(n1, "\u65E5 - \u672A\u6765").concat(n2, "\u65E5");
40
+ }
41
+ }
42
+ }
43
+ return _dynamicLabel;
44
+ };
45
+ var McDateRangePro = /*#__PURE__*/forwardRef(function (props, ref) {
46
+ /* 获取label宽度 */
47
+ var labelRef = useRef();
48
+ var _useState = useState(11),
49
+ _useState2 = _slicedToArray(_useState, 2),
50
+ paddingLeft = _useState2[0],
51
+ setPaddingLeft = _useState2[1];
52
+ useEffect(function () {
53
+ var labelResizeObserver = new ResizeObserver(function (entries) {
54
+ setPaddingLeft(entries[0].contentRect.width + 11);
55
+ });
56
+ labelRef.current && labelResizeObserver.observe(labelRef.current);
57
+ return function () {
58
+ return labelResizeObserver.disconnect();
59
+ };
60
+ }, []);
61
+
62
+ /* 基础数据 */
63
+ var style = props.style,
64
+ className = props.className,
65
+ label = props.label,
66
+ valueFormat = props.valueFormat,
67
+ dateType = props.dateType,
68
+ _props$dynamic = props.dynamic,
69
+ dynamic = _props$dynamic === void 0 ? false : _props$dynamic,
70
+ _props$showTime = props.showTime,
71
+ showTime = _props$showTime === void 0 ? false : _props$showTime,
72
+ disabled = props.disabled,
73
+ value = props.value,
74
+ onChange = props.onChange,
75
+ rest = _objectWithoutProperties(props, _excluded);
76
+ var _valueFormat = valueFormat || (showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');
77
+ var _dynamic = dateType && dynamic;
78
+ var _useState3 = useState(),
79
+ _useState4 = _slicedToArray(_useState3, 2),
80
+ _value = _useState4[0],
81
+ set_value = _useState4[1];
82
+ var _useState5 = useState(false),
83
+ _useState6 = _slicedToArray(_useState5, 2),
84
+ open = _useState6[0],
85
+ setOpen = _useState6[1];
86
+ var _useState7 = useState('static'),
87
+ _useState8 = _slicedToArray(_useState7, 2),
88
+ type = _useState8[0],
89
+ setType = _useState8[1];
90
+ var _useState9 = useState(false),
91
+ _useState10 = _slicedToArray(_useState9, 2),
92
+ inActiveArea = _useState10[0],
93
+ setInActiveArea = _useState10[1];
94
+ var _useState11 = useState(),
95
+ _useState12 = _slicedToArray(_useState11, 2),
96
+ activeCode = _useState12[0],
97
+ setActiveCode = _useState12[1];
98
+ var _useState13 = useState(),
99
+ _useState14 = _slicedToArray(_useState13, 2),
100
+ dynamicValue = _useState14[0],
101
+ setDynamicValue = _useState14[1];
102
+ var isInit = useRef(false);
103
+ var oldType = useRef('static');
104
+ var newType = useRef('static');
105
+ var oldActiveCode = useRef();
106
+ var oldValue = useRef();
107
+ var newValue = useRef();
108
+ var shortcutItemRefs = useRef({
109
+ '-n_0': useRef(),
110
+ '-n_-1': useRef(),
111
+ '0_n': useRef(),
112
+ m_n: useRef()
113
+ });
114
+ var dynamicWidth = dynamic || dateType === 'future' ? 208 : 120;
115
+ var rootClassName = useEmotionCss(function () {
116
+ return {
117
+ '.ant-picker-footer-extra': {
118
+ width: dynamicWidth
119
+ },
120
+ '.ant-picker-ranges': {
121
+ width: "calc(100% - ".concat(dynamicWidth, "px) !important")
122
+ }
123
+ };
124
+ });
125
+
126
+ // 快捷项集合
127
+ var shortcutItems = useMemo(function () {
128
+ return dateType === 'future' ? ['0_0', '0_n', 'm_n'] : ['0_0', '-1_-1', '-6_0', '-29_0', '-59_0', '-89_0', '-n_0', '-n_-1'];
129
+ }, [dateType]);
130
+
131
+ // 动态日期显示内容
132
+ var dynamicLabel = useMemo(function () {
133
+ return getDynamicLabel(dynamicValue);
134
+ }, [dynamicValue]);
135
+
136
+ // 异常数据抛出静态日期
137
+ var changeToStatic = function changeToStatic(v) {
138
+ return onChange === null || onChange === void 0 ? void 0 : onChange(v.map(function (i) {
139
+ return i === null || i === void 0 ? void 0 : i.format(_valueFormat);
140
+ }));
141
+ };
142
+
143
+ // 回显的方法
144
+ var echo = function echo() {
145
+ var _v = null,
146
+ _type = 'static',
147
+ _activeCode = undefined,
148
+ _dynamicValue = undefined;
149
+ if (value) {
150
+ if (typeof value === 'string') {
151
+ // 动态日期
152
+ _v = value.split('_').map(function (v) {
153
+ return isNaN(+v) ? undefined : dayjs().add(+v, 'd');
154
+ });
155
+ if (dateType === 'past') {
156
+ // 过去
157
+ if (['0_0', '-1_-1', '-6_0', '-29_0', '-59_0', '-89_0'].includes(value)) {
158
+ _type = 'dynamic';
159
+ _activeCode = value;
160
+ _dynamicValue = value;
161
+ } else {
162
+ var _value$split$map = value.split('_').map(function (v) {
163
+ return isNaN(+v) ? undefined : +v;
164
+ }),
165
+ _value$split$map2 = _slicedToArray(_value$split$map, 2),
166
+ n1 = _value$split$map2[0],
167
+ n2 = _value$split$map2[1];
168
+ if (n1 !== undefined && n2 !== undefined) {
169
+ if (n1 < 0 && n2 === 0) {
170
+ // 最近n日
171
+ _type = 'dynamic';
172
+ _activeCode = '-n_0';
173
+ _dynamicValue = value;
174
+ } else if (n1 < 0 && n2 === -1) {
175
+ // 过去n日
176
+ _type = 'dynamic';
177
+ _activeCode = '-n_-1';
178
+ _dynamicValue = value;
179
+ } else {
180
+ // 异常数据抛出静态日期
181
+ changeToStatic(_v);
182
+ }
183
+ } else {
184
+ // 异常数据抛出静态日期
185
+ changeToStatic(_v);
186
+ }
187
+ }
188
+ } else if (dateType === 'future') {
189
+ // 未来
190
+ var _value$split$map3 = value.split('_').map(function (v) {
191
+ return isNaN(+v) ? undefined : +v;
192
+ }),
193
+ _value$split$map4 = _slicedToArray(_value$split$map3, 2),
194
+ _n = _value$split$map4[0],
195
+ _n2 = _value$split$map4[1];
196
+ if (_n !== undefined && _n2 !== undefined) {
197
+ if (_n === 0 && _n2 === 0) {
198
+ // 今天
199
+ _type = 'dynamic';
200
+ _activeCode = '0_0';
201
+ _dynamicValue = value;
202
+ } else if (_n === 0 && _n2 > 0) {
203
+ // 今天 - 未来n日
204
+ _type = 'dynamic';
205
+ _activeCode = '0_n';
206
+ _dynamicValue = value;
207
+ } else if (_n > 0 && _n2 > 0 && _n <= _n2) {
208
+ // 未来m日 - 未来n日
209
+ _type = 'dynamic';
210
+ _activeCode = 'm_n';
211
+ _dynamicValue = value;
212
+ } else {
213
+ // 异常数据抛出静态日期
214
+ changeToStatic(_v);
215
+ }
216
+ } else {
217
+ // 异常数据抛出静态日期
218
+ changeToStatic(_v);
219
+ }
220
+ } else {
221
+ // 异常数据抛出静态日期
222
+ changeToStatic(_v);
223
+ }
224
+ } else {
225
+ // 静态日期
226
+ _v = value.map(function (i) {
227
+ return i && dayjs(i, _valueFormat);
228
+ });
229
+ }
230
+ }
231
+ set_value(_v);
232
+ setType(_type);
233
+ setActiveCode(_activeCode);
234
+ setDynamicValue(_dynamicValue);
235
+ oldType.current = _type;
236
+ newType.current = _type;
237
+ oldActiveCode.current = _activeCode;
238
+ oldValue.current = _v;
239
+ newValue.current = _v;
240
+ };
241
+
242
+ // 日期范围变化事件
243
+ var change = function change(dates) {
244
+ set_value(dates);
245
+ setDynamicValue(undefined);
246
+ newValue.current = dates;
247
+ // 清空时抛出undefined
248
+ dates === null && (onChange === null || onChange === void 0 ? void 0 : onChange(undefined));
249
+ };
250
+
251
+ // 快捷项取消激活事件
252
+ var inActiveHandle = function inActiveHandle() {
253
+ setInActiveArea(false);
254
+ setActiveCode(newType.current === 'dynamic' ? oldActiveCode.current : undefined);
255
+ props.hasOwnProperty('value') && set_value(oldValue.current);
256
+ };
257
+
258
+ // 初始化监听日历选择面板的鼠标移入移出事件
259
+ var initMouseEnterLeave = function initMouseEnterLeave() {
260
+ if (isInit.current) return;
261
+ setTimeout(function () {
262
+ var panelsEl = document.querySelector('.mc-date-range-pro__popup .ant-picker-panels');
263
+ panelsEl === null || panelsEl === void 0 || panelsEl.addEventListener('mouseenter', function () {
264
+ setInActiveArea(true);
265
+ setActiveCode(undefined);
266
+ });
267
+ panelsEl === null || panelsEl === void 0 || panelsEl.addEventListener('mouseleave', inActiveHandle);
268
+ isInit.current = true;
269
+ });
270
+ };
271
+
272
+ // 改变值的方法
273
+ var changeHandle = function changeHandle(newValue, code) {
274
+ if (newValue) {
275
+ var _oldValue$current;
276
+ var _new = newValue.map(function (i) {
277
+ return i === null || i === void 0 ? void 0 : i.format(_valueFormat);
278
+ });
279
+ var _old = (_oldValue$current = oldValue.current) === null || _oldValue$current === void 0 ? void 0 : _oldValue$current.map(function (i) {
280
+ return i === null || i === void 0 ? void 0 : i.format(_valueFormat);
281
+ });
282
+ var changeFn = function changeFn() {
283
+ var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
284
+ return (force ? true : JSON.stringify(_new) !== JSON.stringify(_old)) && (code ? onChange === null || onChange === void 0 ? void 0 : onChange(code, _new) : onChange === null || onChange === void 0 ? void 0 : onChange(_new));
285
+ };
286
+ /**
287
+ * 无需判断新旧值是否相同,强制onChange的情况:
288
+ * 旧-静态日期 && 新-动态日期 && 新-快捷项有值
289
+ * 旧-动态日期 && 新-静态日期 && 新-快捷项有值
290
+ * 旧-动态日期 && 新-动态日期 && 新-快捷项无值
291
+ */
292
+ changeFn(oldType.current === 'static' && type === 'dynamic' && !!activeCode || oldType.current === 'dynamic' && (type === 'static' && !!activeCode || type === 'dynamic' && !activeCode));
293
+ }
294
+ };
295
+
296
+ // 日历面板显隐事件
297
+ var openChange = function openChange(open) {
298
+ setOpen(open);
299
+ initMouseEnterLeave();
300
+ if (open) {
301
+ // 显示时初始化左侧快捷栏
302
+ setType(oldType.current);
303
+ newType.current = oldType.current;
304
+ setActiveCode(oldActiveCode.current);
305
+ oldType.current === 'dynamic' && setTimeout(function () {
306
+ var _shortcutItemRefs$cur;
307
+ (_shortcutItemRefs$cur = shortcutItemRefs.current[oldActiveCode.current]) === null || _shortcutItemRefs$cur === void 0 || (_shortcutItemRefs$cur = _shortcutItemRefs$cur.current) === null || _shortcutItemRefs$cur === void 0 || _shortcutItemRefs$cur.resetNs(value);
308
+ });
309
+ } else {
310
+ // 隐藏时触发改变值的方法
311
+ changeHandle(newValue.current);
312
+ }
313
+ };
314
+
315
+ // 快捷项激活事件
316
+ var activeHandle = function activeHandle(code, dates) {
317
+ setInActiveArea(true);
318
+ setActiveCode(code);
319
+ set_value(dates.map(function (v, i) {
320
+ return v === undefined ? undefined : dayjs().add(v, 'd')[i ? 'endOf' : 'startOf']('day');
321
+ }));
322
+ };
323
+
324
+ // 快捷项选择事件
325
+ var selectHandle = function selectHandle(dates) {
326
+ var newValue = dates.map(function (v, i) {
327
+ return dayjs().add(v, 'd')[i ? 'endOf' : 'startOf']('day');
328
+ });
329
+ set_value(newValue);
330
+ setDynamicValue(newType.current === 'dynamic' ? dates.join('_') : undefined);
331
+ changeHandle(newValue, newType.current === 'dynamic' ? dates.join('_') : undefined);
332
+ setOpen(false);
333
+ };
334
+
335
+ // 监听value值变化,处理回显逻辑
336
+ useEffect(function () {
337
+ echo();
338
+ }, [value]);
339
+ return /*#__PURE__*/_jsxs("div", {
340
+ style: style,
341
+ className: "".concat(classNames('mc-date-range-pro', className)),
342
+ children: [label && /*#__PURE__*/_jsx("span", {
343
+ ref: labelRef,
344
+ className: classNames('mc-date-range-pro__label', disabled && 'mc-date-range-pro--disabled'),
345
+ children: label
346
+ }), /*#__PURE__*/_jsx(DatePicker.RangePicker, _objectSpread(_objectSpread({
347
+ ref: ref,
348
+ style: {
349
+ paddingLeft: paddingLeft
350
+ },
351
+ className: "mc-date-range-pro__content",
352
+ classNames: {
353
+ popup: {
354
+ root: classNames('mc-date-range-pro__popup', showTime && 'mc-date-range-pro__popup--time', dateType && 'mc-date-range-pro__popup--preset', rootClassName)
355
+ }
356
+ },
357
+ showTime: showTime,
358
+ disabled: disabled,
359
+ minDate: dateType === 'future' ? dayjs() : undefined,
360
+ maxDate: dateType === 'past' ? dayjs() : undefined
361
+ }, rest), {}, {
362
+ value: _value,
363
+ onChange: change,
364
+ open: open,
365
+ onOpenChange: openChange,
366
+ presets: undefined,
367
+ renderExtraFooter: function renderExtraFooter() {
368
+ return dateType ? /*#__PURE__*/_jsxs("div", {
369
+ className: "mc-date-range-pro__presets",
370
+ children: [_dynamic && /*#__PURE__*/_jsx(Tabs, {
371
+ className: "mc-date-range-pro__presets__types",
372
+ items: [{
373
+ key: 'static',
374
+ label: '静态日期'
375
+ }, {
376
+ key: 'dynamic',
377
+ label: '动态日期'
378
+ }],
379
+ activeKey: type,
380
+ onChange: function onChange(v) {
381
+ setType(v);
382
+ newType.current = v;
383
+ setActiveCode(v === 'dynamic' ? oldActiveCode.current : undefined);
384
+ }
385
+ }), /*#__PURE__*/_jsx("div", {
386
+ className: "mc-date-range-pro__presets__list",
387
+ style: {
388
+ top: _dynamic ? 41 : 0
389
+ },
390
+ children: shortcutItems.map(function (code) {
391
+ return /*#__PURE__*/_jsx(ShortcutItem, {
392
+ ref: shortcutItemRefs.current[code],
393
+ code: code,
394
+ inActiveArea: inActiveArea,
395
+ active: activeCode === code,
396
+ onActive: function onActive(dates) {
397
+ return activeHandle(code, dates);
398
+ },
399
+ onInactive: inActiveHandle,
400
+ onSelected: selectHandle
401
+ }, code);
402
+ })
403
+ })]
404
+ }) : undefined;
405
+ }
406
+ })), dynamicLabel && /*#__PURE__*/_jsx("span", {
407
+ className: "mc-date-range-pro__dynamic-value",
408
+ style: {
409
+ left: paddingLeft + 1
410
+ },
411
+ onClick: function onClick() {
412
+ return openChange(true);
413
+ },
414
+ children: dynamicLabel
415
+ })]
416
+ });
417
+ });
418
+ export default McDateRangePro;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * title: 基础用法
3
+ * description: 数字区间输入框的基础用法
4
+ */
5
+ declare const _default: () => import("react/jsx-runtime").JSX.Element;
6
+ export default _default;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * title: 基础用法
3
+ * description: 数字区间输入框的基础用法
4
+ */
5
+
6
+ import { Space } from 'antd';
7
+ import { McNumberRangeInput } from "../..";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ export default (function () {
11
+ return /*#__PURE__*/_jsxs(Space, {
12
+ direction: "vertical",
13
+ size: 16,
14
+ children: [/*#__PURE__*/_jsxs(Space, {
15
+ children: [/*#__PURE__*/_jsx("span", {
16
+ children: "\u5E38\u89C4"
17
+ }), /*#__PURE__*/_jsx(McNumberRangeInput, {
18
+ style: {
19
+ width: 300
20
+ }
21
+ })]
22
+ }), /*#__PURE__*/_jsxs(Space, {
23
+ children: [/*#__PURE__*/_jsx("span", {
24
+ children: "\u7981\u7528"
25
+ }), /*#__PURE__*/_jsx(McNumberRangeInput, {
26
+ value: {
27
+ start: 1,
28
+ end: 10
29
+ },
30
+ style: {
31
+ width: 300
32
+ },
33
+ disabled: true
34
+ })]
35
+ }), /*#__PURE__*/_jsxs(Space, {
36
+ children: [/*#__PURE__*/_jsx("span", {
37
+ children: "\u4E0D\u663E\u793A\u6E05\u9664\u6309\u94AE"
38
+ }), /*#__PURE__*/_jsx(McNumberRangeInput, {
39
+ style: {
40
+ width: 300
41
+ },
42
+ allowClear: false
43
+ })]
44
+ }), /*#__PURE__*/_jsxs(Space, {
45
+ children: [/*#__PURE__*/_jsx("span", {
46
+ children: "\u6700\u591A\u4FDD\u75592\u4F4D\u5C0F\u6570"
47
+ }), /*#__PURE__*/_jsx(McNumberRangeInput, {
48
+ style: {
49
+ width: 300
50
+ },
51
+ precision: 2
52
+ })]
53
+ }), /*#__PURE__*/_jsxs(Space, {
54
+ children: [/*#__PURE__*/_jsx("span", {
55
+ children: "\u81EA\u5B9A\u4E49\u5206\u9694\u7B26"
56
+ }), /*#__PURE__*/_jsx(McNumberRangeInput, {
57
+ style: {
58
+ width: 300
59
+ },
60
+ separator: "\u81F3"
61
+ })]
62
+ }), /*#__PURE__*/_jsxs(Space, {
63
+ children: [/*#__PURE__*/_jsx("span", {
64
+ children: "\u81EA\u5B9A\u4E49\u5360\u4F4D\u7B26"
65
+ }), /*#__PURE__*/_jsx(McNumberRangeInput, {
66
+ style: {
67
+ width: 350
68
+ },
69
+ placeholders: ['自定义最小值占位符', '自定义最大值占位符']
70
+ })]
71
+ }), /*#__PURE__*/_jsxs(Space, {
72
+ children: [/*#__PURE__*/_jsx("span", {
73
+ children: "\u81EA\u5B9A\u4E49\u6700\u5C0F\u503C\u3001\u6700\u5927\u503C"
74
+ }), /*#__PURE__*/_jsx(McNumberRangeInput, {
75
+ style: {
76
+ width: 300
77
+ },
78
+ min: 1,
79
+ max: 10,
80
+ placeholders: ['最小值为1', '最大值为10']
81
+ })]
82
+ })]
83
+ });
84
+ });
@@ -0,0 +1,87 @@
1
+ .mc-number-range-input {
2
+ display: -webkit-inline-box;
3
+ display: -ms-inline-flexbox;
4
+ display: inline-flex;
5
+ width: 100%;
6
+ height: 32px;
7
+ padding: 0 10px;
8
+ overflow: hidden;
9
+ background: #f0f2f5;
10
+ border: 1px solid transparent;
11
+ border-radius: 4px;
12
+ }
13
+ .mc-number-range-input__label {
14
+ display: -webkit-box;
15
+ display: -ms-flexbox;
16
+ display: flex;
17
+ -ms-flex-negative: 0;
18
+ flex-shrink: 0;
19
+ -webkit-box-align: center;
20
+ -ms-flex-align: center;
21
+ align-items: center;
22
+ height: 100%;
23
+ color: #262626;
24
+ font-size: 14px;
25
+ }
26
+ .mc-number-range-input__label::after {
27
+ margin-left: 2px;
28
+ content: '\FF1A';
29
+ }
30
+ .mc-number-range-input__content {
31
+ position: relative;
32
+ -webkit-box-flex: 1;
33
+ -ms-flex: 1;
34
+ flex: 1;
35
+ }
36
+ .mc-number-range-input__wrapper {
37
+ position: absolute;
38
+ top: 0;
39
+ right: 0;
40
+ bottom: 0;
41
+ left: 0;
42
+ }
43
+ .mc-number-range-input__number {
44
+ -webkit-box-flex: 1;
45
+ -ms-flex: 1;
46
+ flex: 1;
47
+ padding: 0;
48
+ border-color: transparent !important;
49
+ -webkit-box-shadow: none !important;
50
+ box-shadow: none !important;
51
+ }
52
+ .mc-number-range-input__separator {
53
+ display: -webkit-box;
54
+ display: -ms-flexbox;
55
+ display: flex;
56
+ -ms-flex-negative: 0;
57
+ flex-shrink: 0;
58
+ -webkit-box-align: center;
59
+ -ms-flex-align: center;
60
+ align-items: center;
61
+ padding: 0 8px;
62
+ }
63
+ .mc-number-range-input:hover {
64
+ border-color: #5c85ff;
65
+ }
66
+ .mc-number-range-input:focus-within {
67
+ border-color: #325cf7;
68
+ -webkit-box-shadow: 0 0 0 2px rgba(5, 105, 255, 0.06);
69
+ box-shadow: 0 0 0 2px rgba(5, 105, 255, 0.06);
70
+ }
71
+ .mc-number-range-input.mc-number-range-input--disabled {
72
+ background: rgba(240, 242, 245, 0.5);
73
+ border-color: transparent;
74
+ cursor: no-drop;
75
+ }
76
+ .mc-number-range-input.mc-number-range-input--disabled .mc-number-range-input__number {
77
+ background: transparent !important;
78
+ }
79
+ .mc-number-range-input.mc-number-range-input--disabled .mc-number-range-input__separator {
80
+ color: #b3b3b3;
81
+ }
82
+ .mc-container .mc-number-range-input {
83
+ width: 270px;
84
+ }
85
+ .ant-form-item-has-error .mc-number-range-input {
86
+ border-color: #ff4d4f;
87
+ }
@@ -0,0 +1,37 @@
1
+ import { CSSProperties, FC, ReactNode } from 'react';
2
+ import './index.less';
3
+ interface ValueType {
4
+ start?: number;
5
+ end?: number;
6
+ }
7
+ export interface McNumberRangeInputProps {
8
+ /** 查询项的字段名(配合McContainer组件的查询功能使用) */
9
+ name?: string;
10
+ /** 查询项的标签文字(若未设置,样式为表单项形态) */
11
+ label?: ReactNode;
12
+ /** 默认文本,默认['最小值', '最大值'] */
13
+ placeholders?: [string, string];
14
+ /** 最小值 */
15
+ min?: number;
16
+ /** 最大值 */
17
+ max?: number;
18
+ /** 最多保留多少位小数,默认0 */
19
+ precision?: number;
20
+ /** 分隔符,默认'~' */
21
+ separator?: ReactNode;
22
+ /** 是否可清除,默认true */
23
+ allowClear?: boolean;
24
+ /** 是否禁用 */
25
+ disabled?: boolean;
26
+ value?: ValueType;
27
+ onChange?: (value?: ValueType) => void;
28
+ style?: CSSProperties;
29
+ className?: string;
30
+ ref?: any;
31
+ }
32
+ export type McNumberRangeInputRef = {
33
+ /** 校验大小值的方法 */
34
+ validate: (key?: 'start' | 'end') => boolean;
35
+ };
36
+ declare const McNumberRangeInput: FC<McNumberRangeInputProps>;
37
+ export default McNumberRangeInput;