@sheinx/hooks 3.8.0-beta.1 → 3.8.0-beta.11
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/cjs/common/use-position-style/check-border.d.ts +1 -0
- package/cjs/common/use-position-style/check-border.d.ts.map +1 -1
- package/cjs/common/use-position-style/check-border.js +2 -2
- package/cjs/common/use-position-style/index.d.ts.map +1 -1
- package/cjs/common/use-position-style/index.js +29 -13
- package/cjs/components/use-datepicker/use-date.d.ts.map +1 -1
- package/cjs/components/use-datepicker/use-date.js +12 -4
- package/cjs/components/use-datepicker/use-date.type.d.ts +2 -1
- package/cjs/components/use-datepicker/use-date.type.d.ts.map +1 -1
- package/cjs/components/use-datepicker/use-datepicker-format.d.ts +2 -1
- package/cjs/components/use-datepicker/use-datepicker-format.d.ts.map +1 -1
- package/cjs/components/use-datepicker/use-datepicker-format.js +22 -5
- package/cjs/components/use-datepicker/use-datepicker-range.js +2 -2
- package/cjs/components/use-datepicker/util.d.ts +7 -1
- package/cjs/components/use-datepicker/util.d.ts.map +1 -1
- package/cjs/components/use-datepicker/util.js +11 -1
- package/cjs/components/use-form/use-form-context.d.ts.map +1 -1
- package/cjs/components/use-form/use-form-context.js +11 -5
- package/cjs/components/use-form/use-form.d.ts.map +1 -1
- package/cjs/components/use-form/use-form.js +6 -2
- package/cjs/components/use-input/use-input-format.d.ts.map +1 -1
- package/cjs/components/use-input/use-input-format.js +2 -1
- package/cjs/components/use-pagination/use-pagination.d.ts.map +1 -1
- package/cjs/components/use-pagination/use-pagination.js +2 -1
- package/cjs/components/use-popup/use-popup.d.ts.map +1 -1
- package/cjs/components/use-popup/use-popup.js +5 -2
- package/cjs/components/use-transfer/index.d.ts +1 -0
- package/cjs/components/use-transfer/index.d.ts.map +1 -1
- package/cjs/components/use-transfer/index.js +15 -0
- package/cjs/components/use-transfer/transfer-context.d.ts +7 -0
- package/cjs/components/use-transfer/transfer-context.d.ts.map +1 -0
- package/cjs/components/use-transfer/transfer-context.js +12 -0
- package/cjs/components/use-tree/use-tree-node.d.ts +7 -1
- package/cjs/components/use-tree/use-tree-node.d.ts.map +1 -1
- package/cjs/components/use-tree/use-tree-node.js +19 -1
- package/cjs/components/use-tree/use-tree.d.ts.map +1 -1
- package/cjs/components/use-tree/use-tree.js +11 -6
- package/cjs/components/use-tree/use-tree.type.d.ts +7 -1
- package/cjs/components/use-tree/use-tree.type.d.ts.map +1 -1
- package/cjs/utils/number.d.ts +10 -0
- package/cjs/utils/number.d.ts.map +1 -1
- package/cjs/utils/number.js +99 -1
- package/cjs/utils/shallow-equal.d.ts +1 -0
- package/cjs/utils/shallow-equal.d.ts.map +1 -1
- package/cjs/utils/shallow-equal.js +9 -0
- package/esm/common/use-position-style/check-border.d.ts +1 -0
- package/esm/common/use-position-style/check-border.d.ts.map +1 -1
- package/esm/common/use-position-style/check-border.js +2 -2
- package/esm/common/use-position-style/index.d.ts.map +1 -1
- package/esm/common/use-position-style/index.js +29 -13
- package/esm/components/use-datepicker/use-date.d.ts.map +1 -1
- package/esm/components/use-datepicker/use-date.js +12 -4
- package/esm/components/use-datepicker/use-date.type.d.ts +2 -1
- package/esm/components/use-datepicker/use-date.type.d.ts.map +1 -1
- package/esm/components/use-datepicker/use-datepicker-format.d.ts +2 -1
- package/esm/components/use-datepicker/use-datepicker-format.d.ts.map +1 -1
- package/esm/components/use-datepicker/use-datepicker-format.js +19 -5
- package/esm/components/use-datepicker/use-datepicker-range.js +2 -2
- package/esm/components/use-datepicker/util.d.ts +7 -1
- package/esm/components/use-datepicker/util.d.ts.map +1 -1
- package/esm/components/use-datepicker/util.js +11 -1
- package/esm/components/use-form/use-form-context.d.ts.map +1 -1
- package/esm/components/use-form/use-form-context.js +11 -5
- package/esm/components/use-form/use-form.d.ts.map +1 -1
- package/esm/components/use-form/use-form.js +6 -2
- package/esm/components/use-input/use-input-format.d.ts.map +1 -1
- package/esm/components/use-input/use-input-format.js +2 -1
- package/esm/components/use-pagination/use-pagination.d.ts.map +1 -1
- package/esm/components/use-pagination/use-pagination.js +2 -1
- package/esm/components/use-popup/use-popup.d.ts.map +1 -1
- package/esm/components/use-popup/use-popup.js +5 -2
- package/esm/components/use-transfer/index.d.ts +1 -0
- package/esm/components/use-transfer/index.d.ts.map +1 -1
- package/esm/components/use-transfer/index.js +1 -0
- package/esm/components/use-transfer/transfer-context.d.ts +7 -0
- package/esm/components/use-transfer/transfer-context.d.ts.map +1 -0
- package/esm/components/use-transfer/transfer-context.js +6 -0
- package/esm/components/use-tree/use-tree-node.d.ts +7 -1
- package/esm/components/use-tree/use-tree-node.d.ts.map +1 -1
- package/esm/components/use-tree/use-tree-node.js +19 -1
- package/esm/components/use-tree/use-tree.d.ts.map +1 -1
- package/esm/components/use-tree/use-tree.js +11 -6
- package/esm/components/use-tree/use-tree.type.d.ts +7 -1
- package/esm/components/use-tree/use-tree.type.d.ts.map +1 -1
- package/esm/utils/number.d.ts +10 -0
- package/esm/utils/number.d.ts.map +1 -1
- package/esm/utils/number.js +98 -1
- package/esm/utils/shallow-equal.d.ts +1 -0
- package/esm/utils/shallow-equal.d.ts.map +1 -1
- package/esm/utils/shallow-equal.js +8 -0
- package/package.json +1 -1
@@ -31,6 +31,18 @@ var useTreeNode = function useTreeNode(props) {
|
|
31
31
|
_useState6 = _slicedToArray(_useState5, 2),
|
32
32
|
fetching = _useState6[0],
|
33
33
|
setFetching = _useState6[1];
|
34
|
+
var _useState7 = (0, _react.useState)(false),
|
35
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
36
|
+
hasTriggered = _useState8[0],
|
37
|
+
setHasTriggered = _useState8[1];
|
38
|
+
var get = function get() {
|
39
|
+
return {
|
40
|
+
hasTriggered: hasTriggered,
|
41
|
+
active: active,
|
42
|
+
expanded: expanded,
|
43
|
+
fetching: fetching
|
44
|
+
};
|
45
|
+
};
|
34
46
|
var update = (0, _usePersistFn.default)(function (key, value) {
|
35
47
|
switch (key) {
|
36
48
|
case 'active':
|
@@ -46,9 +58,14 @@ var useTreeNode = function useTreeNode(props) {
|
|
46
58
|
setFetching(value);
|
47
59
|
}
|
48
60
|
break;
|
61
|
+
case 'get':
|
62
|
+
return get();
|
49
63
|
}
|
50
64
|
});
|
51
65
|
var handleToggle = function handleToggle() {};
|
66
|
+
var handleTriggered = function handleTriggered() {
|
67
|
+
setHasTriggered(true);
|
68
|
+
};
|
52
69
|
var isLeaf = function isLeaf() {
|
53
70
|
var children = data[childrenKey];
|
54
71
|
if (children && children.length > 0) return false;
|
@@ -72,7 +89,8 @@ var useTreeNode = function useTreeNode(props) {
|
|
72
89
|
isLeaf: isLeaf,
|
73
90
|
setFetching: setFetching,
|
74
91
|
setExpanded: setExpanded,
|
75
|
-
onToggle: handleToggle
|
92
|
+
onToggle: handleToggle,
|
93
|
+
onTriggered: handleTriggered
|
76
94
|
};
|
77
95
|
};
|
78
96
|
var _default = exports.default = useTreeNode;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-tree.d.ts","sourceRoot":"","sources":["use-tree.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAKb,SAAS,
|
1
|
+
{"version":3,"file":"use-tree.d.ts","sourceRoot":"","sources":["use-tree.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAKb,SAAS,EAIV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiBjD,eAAO,MAAM,IAAI;IACf;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEJ,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;CAgtBZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
@@ -615,14 +615,18 @@ var useTree = function useTree(props) {
|
|
615
615
|
var getFlatData = function getFlatData() {
|
616
616
|
return context.dataFlat;
|
617
617
|
};
|
618
|
-
var updateExpanded = (0, _usePersistFn.usePersistFn)(function (expanded) {
|
618
|
+
var updateExpanded = (0, _usePersistFn.usePersistFn)(function (expanded, ignoreExpanded) {
|
619
619
|
var tempExpandMap = new Set(expanded);
|
620
620
|
if (!expanded) return;
|
621
621
|
if (virtual) {
|
622
622
|
expandedFlat(expanded);
|
623
623
|
}
|
624
|
-
context.updateMap.forEach(function (
|
625
|
-
|
624
|
+
context.updateMap.forEach(function (call, id) {
|
625
|
+
if (ignoreExpanded) {
|
626
|
+
var nodeStatus = call('get', true);
|
627
|
+
if (nodeStatus && nodeStatus.hasTriggered) return;
|
628
|
+
}
|
629
|
+
call('expanded', tempExpandMap.has(id));
|
626
630
|
});
|
627
631
|
});
|
628
632
|
(0, _react.useEffect)(function () {
|
@@ -634,16 +638,17 @@ var useTree = function useTree(props) {
|
|
634
638
|
}
|
635
639
|
});
|
636
640
|
onExpand(nextExpanded);
|
641
|
+
updateExpanded(nextExpanded, true);
|
637
642
|
}
|
638
|
-
}, [context.dataMap]);
|
643
|
+
}, [context.dataMap, props.data]);
|
639
644
|
(0, _react.useEffect)(function () {
|
640
645
|
if (props.datum) return;
|
641
646
|
if (!dataUpdate) return;
|
642
647
|
setData(data);
|
643
648
|
var nextExpanded = props.expanded || props.defaultExpanded || [];
|
644
|
-
if (!(0, _utils.shallowEqual)(nextExpanded, expanded)) {
|
649
|
+
if (!defaultExpandAll && !(0, _utils.shallowEqual)(nextExpanded, expanded)) {
|
645
650
|
onExpand(nextExpanded);
|
646
|
-
updateExpanded(nextExpanded);
|
651
|
+
updateExpanded(nextExpanded, true);
|
647
652
|
}
|
648
653
|
updateInnerCheckStatus();
|
649
654
|
}, [props.data]);
|
@@ -1,7 +1,13 @@
|
|
1
1
|
import { StructKeygenStringType, KeygenResult, ObjectKey } from '../../common/type';
|
2
2
|
export type CheckedStatusType = 0 | 1 | 2;
|
3
3
|
export type TreeModeType = 0 | 1 | 2 | 3 | 4;
|
4
|
-
export type
|
4
|
+
export type NodeStates = {
|
5
|
+
active: boolean;
|
6
|
+
expanded: boolean;
|
7
|
+
fetching: boolean;
|
8
|
+
hasTriggered?: boolean;
|
9
|
+
};
|
10
|
+
export type UpdateFunc = (name: string, active: boolean) => void | NodeStates;
|
5
11
|
export type FlatNodeType<DataItem> = {
|
6
12
|
id: KeygenResult;
|
7
13
|
data: DataItem;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-tree.type.d.ts","sourceRoot":"","sources":["use-tree.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpF,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"use-tree.type.d.ts","sourceRoot":"","sources":["use-tree.type.ts"],"names":[],"mappings":"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"}
|
package/cjs/utils/number.d.ts
CHANGED
@@ -5,4 +5,14 @@ export declare function isE(number: unknown): boolean;
|
|
5
5
|
export declare function getNumberPrecision(number: unknown): number;
|
6
6
|
export declare function sub(num1: number, num2: number): number;
|
7
7
|
export declare function toNum(v: number | string | undefined): number;
|
8
|
+
/**
|
9
|
+
* 格式化数字字符串到指定小数位
|
10
|
+
* @param {string} value 数字字符串
|
11
|
+
* @param {number} precision 小数位数
|
12
|
+
* @returns {string} 格式化后的字符串
|
13
|
+
* @example
|
14
|
+
* console.log(preciseString('111111111111111.888', 2)) // "111111111111111.89"
|
15
|
+
* console.log(preciseString('9.999', 2)) // "10.00"
|
16
|
+
*/
|
17
|
+
export declare const preciseString: (value: string, precision?: number) => string;
|
8
18
|
//# sourceMappingURL=number.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["number.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAI,YAM3C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAK,UAEtD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,WAgB1C;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,WAIlC;AACD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,UAgBjD;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAY7C;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAe5D"}
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["number.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAI,YAM3C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAK,UAEtD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,WAgB1C;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,WAIlC;AACD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,UAgBjD;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAY7C;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAe5D;AAmED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,UAAW,MAAM,+BAwB1C,CAAA"}
|
package/cjs/utils/number.js
CHANGED
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.getNumberPrecision = getNumberPrecision;
|
7
7
|
exports.isE = isE;
|
8
|
+
exports.preciseString = void 0;
|
8
9
|
exports.range = range;
|
9
10
|
exports.sub = sub;
|
10
11
|
exports.toNum = toNum;
|
@@ -85,4 +86,101 @@ function toNum(v) {
|
|
85
86
|
return isNaN(parsedValue) ? 0 : parsedValue;
|
86
87
|
}
|
87
88
|
return 0;
|
88
|
-
}
|
89
|
+
}
|
90
|
+
|
91
|
+
/**
|
92
|
+
* 在字符串层面实现四舍五入
|
93
|
+
* @param {string} numStr 数字字符串
|
94
|
+
* @param {number} precision 精度
|
95
|
+
* @returns {string} 四舍五入后的字符串
|
96
|
+
*/
|
97
|
+
function roundString(numStr, precision) {
|
98
|
+
if (precision < 0) return numStr;
|
99
|
+
var parts = numStr.split('.');
|
100
|
+
var intPart = parts[0];
|
101
|
+
var decimalPart = parts[1] || '';
|
102
|
+
if (decimalPart.length <= precision) {
|
103
|
+
return intPart + (decimalPart ? ".".concat(decimalPart.padEnd(precision, '0')) : '');
|
104
|
+
}
|
105
|
+
|
106
|
+
// 需要进行四舍五入
|
107
|
+
var roundPos = precision;
|
108
|
+
var carry = 0;
|
109
|
+
|
110
|
+
// 确定是否需要进位
|
111
|
+
if (parseInt(decimalPart[roundPos], 10) >= 5) carry = 1;
|
112
|
+
|
113
|
+
// 如果不需要进位,直接截断
|
114
|
+
if (carry === 0) {
|
115
|
+
return intPart + (precision > 0 ? ".".concat(decimalPart.slice(0, precision)) : '');
|
116
|
+
}
|
117
|
+
|
118
|
+
// 处理进位
|
119
|
+
var digits = (intPart + (decimalPart ? ".".concat(decimalPart) : '')).replace('.', '').split('');
|
120
|
+
var dotPos = intPart.length;
|
121
|
+
|
122
|
+
// 从小数位开始向前进位
|
123
|
+
var i = dotPos + precision - 1;
|
124
|
+
while (carry > 0 && i >= 0) {
|
125
|
+
// 跳过小数点
|
126
|
+
if (i === dotPos - 1) {
|
127
|
+
i -= 1;
|
128
|
+
continue;
|
129
|
+
}
|
130
|
+
var d = parseInt(digits[i], 10) + carry;
|
131
|
+
digits[i] = (d % 10).toString();
|
132
|
+
carry = Math.floor(d / 10);
|
133
|
+
i -= 1;
|
134
|
+
}
|
135
|
+
|
136
|
+
// 处理最高位进位
|
137
|
+
var result = '';
|
138
|
+
if (carry > 0) result = '1';
|
139
|
+
|
140
|
+
// 重建数字字符串
|
141
|
+
for (var j = 0; j < digits.length; j++) {
|
142
|
+
// 插入小数点
|
143
|
+
if (j === dotPos && precision > 0) result += '.';
|
144
|
+
// 只添加到所需精度
|
145
|
+
if (j < dotPos || j < dotPos + precision) {
|
146
|
+
result += digits[j];
|
147
|
+
}
|
148
|
+
}
|
149
|
+
return result;
|
150
|
+
}
|
151
|
+
|
152
|
+
/**
|
153
|
+
* 格式化数字字符串到指定小数位
|
154
|
+
* @param {string} value 数字字符串
|
155
|
+
* @param {number} precision 小数位数
|
156
|
+
* @returns {string} 格式化后的字符串
|
157
|
+
* @example
|
158
|
+
* console.log(preciseString('111111111111111.888', 2)) // "111111111111111.89"
|
159
|
+
* console.log(preciseString('9.999', 2)) // "10.00"
|
160
|
+
*/
|
161
|
+
var preciseString = exports.preciseString = function preciseString(value) {
|
162
|
+
var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
|
163
|
+
// 如果不是数字字符串,则返回原值
|
164
|
+
if (!/^-?\d+(\.\d+)?$/.test(value)) {
|
165
|
+
return value;
|
166
|
+
}
|
167
|
+
|
168
|
+
// 如果不需要格式化精度,直接返回
|
169
|
+
if (precision < 0) return value;
|
170
|
+
|
171
|
+
// 分离整数和小数部分
|
172
|
+
var parts = value.split('.');
|
173
|
+
var intPart = parts[0];
|
174
|
+
var decimalPart = parts[1] || '';
|
175
|
+
|
176
|
+
// 截断或补零
|
177
|
+
if (decimalPart.length > precision) {
|
178
|
+
// 需要四舍五入
|
179
|
+
if (precision < decimalPart.length && parseInt(decimalPart[precision], 10) >= 5) {
|
180
|
+
// 手动实现字符串层面的四舍五入
|
181
|
+
return roundString("".concat(intPart, ".").concat(decimalPart), precision);
|
182
|
+
}
|
183
|
+
return intPart + (precision > 0 ? ".".concat(decimalPart.slice(0, precision)) : '');
|
184
|
+
}
|
185
|
+
return intPart + (precision > 0 ? ".".concat(decimalPart.padEnd(precision, '0')) : '');
|
186
|
+
};
|
@@ -4,5 +4,6 @@ interface Column {
|
|
4
4
|
}
|
5
5
|
export declare function compareColumns(columns1?: Column[], columns2?: Column[]): boolean;
|
6
6
|
export declare function shallowEqual(objA: any, objB?: any, options?: {}): boolean;
|
7
|
+
export declare function shallowEqualExceptFalsely(objA: any, objB?: any, options?: {}): boolean;
|
7
8
|
export default shallowEqual;
|
8
9
|
//# sourceMappingURL=shallow-equal.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shallow-equal.d.ts","sourceRoot":"","sources":["shallow-equal.ts"],"names":[],"mappings":"AAqBA,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AACD,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WActE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,WAyC/D;AAED,eAAe,YAAY,CAAC"}
|
1
|
+
{"version":3,"file":"shallow-equal.d.ts","sourceRoot":"","sources":["shallow-equal.ts"],"names":[],"mappings":"AAqBA,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AACD,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WActE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,WAyC/D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,WAO5E;AAED,eAAe,YAAY,CAAC"}
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.compareColumns = compareColumns;
|
7
7
|
exports.default = void 0;
|
8
8
|
exports.shallowEqual = shallowEqual;
|
9
|
+
exports.shallowEqualExceptFalsely = shallowEqualExceptFalsely;
|
9
10
|
var _reactFastCompare = _interopRequireDefault(require("react-fast-compare"));
|
10
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11
12
|
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); }
|
@@ -74,4 +75,12 @@ function shallowEqual(objA, objB) {
|
|
74
75
|
}
|
75
76
|
return true;
|
76
77
|
}
|
78
|
+
function shallowEqualExceptFalsely(objA, objB) {
|
79
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
80
|
+
var falselys = [false, 0, '', null, undefined, NaN];
|
81
|
+
if (falselys.includes(objA) && falselys.includes(objB)) {
|
82
|
+
return true;
|
83
|
+
}
|
84
|
+
return shallowEqual(objA, objB, options);
|
85
|
+
}
|
77
86
|
var _default = exports.default = shallowEqual;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
interface UseCheckElementBorderWidthOptions {
|
2
2
|
direction?: 'horizontal' | 'vertical';
|
3
|
+
enable?: boolean;
|
3
4
|
}
|
4
5
|
export declare const useCheckElementBorderWidth: (elementRef: React.RefObject<HTMLElement>, options?: UseCheckElementBorderWidthOptions) => number;
|
5
6
|
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"check-border.d.ts","sourceRoot":"","sources":["check-border.ts"],"names":[],"mappings":"AAEA,UAAU,iCAAiC;IAGzC,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"check-border.d.ts","sourceRoot":"","sources":["check-border.ts"],"names":[],"mappings":"AAEA,UAAU,iCAAiC;IAGzC,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAGD,eAAO,MAAM,0BAA0B,eACzB,MAAM,SAAS,CAAC,WAAW,CAAC,YAC/B,iCAAiC,KACzC,MAqBF,CAAC"}
|
@@ -14,14 +14,14 @@ export var useCheckElementBorderWidth = function useCheckElementBorderWidth(elem
|
|
14
14
|
|
15
15
|
// 获取指定方向上的border宽度之和
|
16
16
|
var getBorderWidth = useCallback(function () {
|
17
|
-
if (elementRef.current) {
|
17
|
+
if (elementRef.current && options.enable) {
|
18
18
|
var _options$direction = options.direction,
|
19
19
|
direction = _options$direction === void 0 ? 'horizontal' : _options$direction;
|
20
20
|
var style = window.getComputedStyle(elementRef.current);
|
21
21
|
var _borderWidth = direction === 'horizontal' ? parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth) : parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
|
22
22
|
setBorderWidth(_borderWidth);
|
23
23
|
}
|
24
|
-
}, [elementRef]);
|
24
|
+
}, [elementRef, options.enable]);
|
25
25
|
useEffect(function () {
|
26
26
|
getBorderWidth();
|
27
27
|
}, [getBorderWidth]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAUpE,MAAM,MAAM,kBAAkB,GAC1B,aAAa,GACb,UAAU,GACV,cAAc,GACd,WAAW,GACX,MAAM,GACN,OAAO,CAAC;AACZ,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,UAAU,GACV,WAAW,GACX,KAAK,GACL,QAAQ,CAAC;AAYb,KAAK,YAAY,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,OAAO,CAAC;AACpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IAEd,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE1C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEzC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,YAAY,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAUpE,MAAM,MAAM,kBAAkB,GAC1B,aAAa,GACb,UAAU,GACV,cAAc,GACd,WAAW,GACX,MAAM,GACN,OAAO,CAAC;AACZ,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,UAAU,GACV,WAAW,GACX,KAAK,GACL,QAAQ,CAAC;AAYb,KAAK,YAAY,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,OAAO,CAAC;AACpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IAEd,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE1C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEzC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,YAAY,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B;AAsBD,eAAO,MAAM,gBAAgB,WAAY,mBAAmB;;CA8S3D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
@@ -21,6 +21,19 @@ var hideStyle = {
|
|
21
21
|
position: 'fixed',
|
22
22
|
visibility: 'hidden'
|
23
23
|
};
|
24
|
+
function setTransform(style, transform, addon) {
|
25
|
+
if (addon) {
|
26
|
+
style.transform += ' ' + transform;
|
27
|
+
} else {
|
28
|
+
style.transform = transform;
|
29
|
+
}
|
30
|
+
// 提供给动画侧合并使用
|
31
|
+
if (addon) {
|
32
|
+
style['--soui-popup-transform'] += ' ' + transform;
|
33
|
+
} else {
|
34
|
+
style['--soui-popup-transform'] = transform;
|
35
|
+
}
|
36
|
+
}
|
24
37
|
export var usePositionStyle = function usePositionStyle(config) {
|
25
38
|
var _ref = config || {},
|
26
39
|
absolute = _ref.absolute,
|
@@ -66,7 +79,8 @@ export var usePositionStyle = function usePositionStyle(config) {
|
|
66
79
|
enable: show && adjust
|
67
80
|
});
|
68
81
|
var parentElBorderWidth = useCheckElementBorderWidth(parentElRef, {
|
69
|
-
direction: 'horizontal'
|
82
|
+
direction: 'horizontal',
|
83
|
+
enable: show
|
70
84
|
});
|
71
85
|
var popupElSize = useCheckElementSize(popupElRef, {
|
72
86
|
enable: show
|
@@ -177,7 +191,7 @@ export var usePositionStyle = function usePositionStyle(config) {
|
|
177
191
|
var overLeft = 0;
|
178
192
|
if (h === 'left') {
|
179
193
|
style.left = rect.left - containerRect.left + containerScroll.left - (offset ? offset[0] : 0);
|
180
|
-
style
|
194
|
+
setTransform(style, '');
|
181
195
|
if (adjust) {
|
182
196
|
overRight = rect.left + context.popUpWidth - bodyRect.right + containerScrollBarWidth;
|
183
197
|
if (style.left < 0 && targetRect) {
|
@@ -187,11 +201,11 @@ export var usePositionStyle = function usePositionStyle(config) {
|
|
187
201
|
} else if (h === 'right') {
|
188
202
|
style.right = containerRect.right - rect.right + containerScrollBarWidth - containerScroll.left - (offset ? offset[0] : 0);
|
189
203
|
style.left = 'auto';
|
190
|
-
style
|
204
|
+
setTransform(style, '');
|
191
205
|
} else {
|
192
206
|
// 居中对齐
|
193
207
|
style.left = rect.left + rect.width / 2 - containerRect.left + containerScroll.left;
|
194
|
-
style
|
208
|
+
setTransform(style, 'translateX(-50%)');
|
195
209
|
if (adjust) {
|
196
210
|
overRight = rect.left + rect.width / 2 + context.popUpWidth / 2 - bodyRect.width + containerScrollBarWidth;
|
197
211
|
overLeft = bodyRect.left - (rect.left + rect.width / 2 - context.popUpWidth / 2);
|
@@ -213,7 +227,7 @@ export var usePositionStyle = function usePositionStyle(config) {
|
|
213
227
|
style.top = rect.bottom - containerRect.top + containerScroll.top + popupGap;
|
214
228
|
} else {
|
215
229
|
style.top = rect.top - containerRect.top + containerScroll.top - popupGap;
|
216
|
-
style
|
230
|
+
setTransform(style, 'translateY(-100%)', true);
|
217
231
|
}
|
218
232
|
} else if (horizontalPosition.includes(targetPosition)) {
|
219
233
|
var _targetPosition$split3 = targetPosition.split('-'),
|
@@ -222,14 +236,14 @@ export var usePositionStyle = function usePositionStyle(config) {
|
|
222
236
|
_v = _targetPosition$split4[1];
|
223
237
|
if (_v === 'top') {
|
224
238
|
style.top = rect.top - containerRect.top + containerScroll.top - (offset ? offset[1] : 0);
|
225
|
-
style
|
239
|
+
setTransform(style, 'translateX(0%)');
|
226
240
|
} else if (_v === 'bottom') {
|
227
241
|
style.top = rect.bottom - containerRect.top + containerScroll.top + (offset ? offset[1] : 0);
|
228
|
-
style
|
242
|
+
setTransform(style, 'translateY(-100%)');
|
229
243
|
} else {
|
230
244
|
// 居中对齐
|
231
245
|
style.top = rect.top - containerRect.top + containerScroll.top + rect.height / 2;
|
232
|
-
style
|
246
|
+
setTransform(style, 'translateY(-50%)');
|
233
247
|
}
|
234
248
|
if (_h === 'right') {
|
235
249
|
style.left = rect.right - containerRect.left + containerScroll.left + popupGap;
|
@@ -245,16 +259,18 @@ export var usePositionStyle = function usePositionStyle(config) {
|
|
245
259
|
};
|
246
260
|
};
|
247
261
|
var getAbsoluteStyle = function getAbsoluteStyle(position) {
|
248
|
-
var _scrollElRef$current;
|
262
|
+
var _scrollElRef$current, _scrollElRef$current2, _scrollElRef$current3;
|
249
263
|
if (!parentElRef.current) return {
|
250
264
|
style: hideStyle
|
251
265
|
};
|
252
266
|
var rect = context.parentRect;
|
253
267
|
var needCheck = !show || !shallowEqual(context.prevParentPosition, parentElNewPosition);
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
268
|
+
var scrollTop = (scrollElRef === null || scrollElRef === void 0 || (_scrollElRef$current = scrollElRef.current) === null || _scrollElRef$current === void 0 ? void 0 : _scrollElRef$current.scrollTop) || 0;
|
269
|
+
var scrollLeft = (scrollElRef === null || scrollElRef === void 0 || (_scrollElRef$current2 = scrollElRef.current) === null || _scrollElRef$current2 === void 0 ? void 0 : _scrollElRef$current2.scrollLeft) || 0;
|
270
|
+
if (needCheck && scrollElRef !== null && scrollElRef !== void 0 && scrollElRef.current && (_scrollElRef$current3 = scrollElRef.current) !== null && _scrollElRef$current3 !== void 0 && _scrollElRef$current3.contains(parentElRef.current)) {
|
271
|
+
var _scrollElRef$current4;
|
272
|
+
var visibleRect = ((_scrollElRef$current4 = scrollElRef.current) === null || _scrollElRef$current4 === void 0 ? void 0 : _scrollElRef$current4.getBoundingClientRect()) || {};
|
273
|
+
if (rect.bottom < visibleRect.top || rect.top > visibleRect.bottom + scrollTop || rect.right < visibleRect.left || rect.left > visibleRect.right + scrollLeft) {
|
258
274
|
return {
|
259
275
|
style: hideStyle
|
260
276
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-date.d.ts","sourceRoot":"","sources":["use-date.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,QAAA,MAAM,OAAO,UAAW,YAAY;;;;;;;;;;
|
1
|
+
{"version":3,"file":"use-date.d.ts","sourceRoot":"","sources":["use-date.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,QAAA,MAAM,OAAO,UAAW,YAAY;;;;;;;;;;wBAoBX,IAAI;2BAkDD,IAAI;yBAkBN,IAAI;0BAgEH,IAAI;+BAtFC,IAAI;+BAiDJ,IAAI,YAAY,OAAO;0BAnB5B,IAAI;2BAIH,IAAI;;gCAIC,IAAI;;CA+FpC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
@@ -22,14 +22,16 @@ var useDate = function useDate(props) {
|
|
22
22
|
cachedDays: []
|
23
23
|
}),
|
24
24
|
context = _useRef.current;
|
25
|
-
var current = props.current === undefined ? currentState : props.current;
|
25
|
+
var current = props.current === undefined || !props.current ? currentState : props.current;
|
26
26
|
var setCurrent = function setCurrent(date) {
|
27
27
|
var _props$onCurrentChang2;
|
28
28
|
if (props.current !== undefined) {
|
29
29
|
var _props$onCurrentChang;
|
30
30
|
(_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date);
|
31
31
|
} else {
|
32
|
-
|
32
|
+
if (date) {
|
33
|
+
setCurrentState(date);
|
34
|
+
}
|
33
35
|
}
|
34
36
|
(_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date);
|
35
37
|
};
|
@@ -104,9 +106,15 @@ var useDate = function useDate(props) {
|
|
104
106
|
var _props$onChange;
|
105
107
|
if (isDisabled(date)) return;
|
106
108
|
var newDate = getDateWithTime(date);
|
107
|
-
|
109
|
+
var index = position === 'start' ? 0 : 1;
|
110
|
+
if (props.allowSingle && props.rangeDate && Array.isArray(props.rangeDate) && props.rangeDate[index] && utils.clearHMS(newDate, options).getTime() === utils.clearHMS(props.rangeDate[index], options).getTime()) {
|
111
|
+
newDate = '';
|
112
|
+
}
|
113
|
+
props === null || props === void 0 || props.onClearInputArr(index);
|
108
114
|
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, newDate, noClose);
|
109
|
-
|
115
|
+
if (newDate) {
|
116
|
+
setCurrent(newDate);
|
117
|
+
}
|
110
118
|
};
|
111
119
|
var getTimeStr = function getTimeStr() {
|
112
120
|
var format = props.format,
|
@@ -6,7 +6,8 @@ export interface UseDateProps {
|
|
6
6
|
onCurrentChange?: (date: Date) => void;
|
7
7
|
onClearInputArr: (index?: number | undefined) => void;
|
8
8
|
value?: Date;
|
9
|
-
|
9
|
+
allowSingle?: boolean;
|
10
|
+
onChange?: (date: Date | string, noClose?: boolean) => void;
|
10
11
|
min?: Date;
|
11
12
|
max?: Date;
|
12
13
|
position?: 'start' | 'end';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-date.type.d.ts","sourceRoot":"","sources":["use-date.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACtD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"use-date.type.d.ts","sourceRoot":"","sources":["use-date.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACtD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH"}
|
@@ -36,7 +36,8 @@ declare const useDatePickerFormat: <Value extends DatePickerValueType>(props: Us
|
|
36
36
|
setTargetArr: React.Dispatch<React.SetStateAction<(Date | undefined)[]>>;
|
37
37
|
handleClear: (e?: React.MouseEvent) => void;
|
38
38
|
handleClearInputArr: (index?: number) => void;
|
39
|
-
handleInputChange: (str: string, index: number) => void;
|
39
|
+
handleInputChange: (str: string, index: number, isFromBlur?: boolean) => void;
|
40
|
+
handleInputBlur: (str: string, index: number) => void;
|
40
41
|
registerModeDisabled: (position: 'start' | 'end' | undefined, mode: string, fn: (d: Date) => boolean) => void;
|
41
42
|
setCurrentArrWithParams: (arg: React.SetStateAction<Date[]>, type: string, quick: {
|
42
43
|
name: React.ReactNode;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-datepicker-format.d.ts","sourceRoot":"","sources":["use-datepicker-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AAKtC,eAAO,MAAM,qBAAqB,UACzB,mBAAmB,UAClB,MAAM,WACL;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,yBAOF,CAAC;AAEF,eAAO,MAAM,SAAS,WAAY,MAAM,GAAG,SAAS,QAAQ,MAAM,WAkBjE,CAAC;AA4BF,UAAU,eAAe;IACvB,OAAO,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,eAAO,MAAM,iBAAiB,SAAU,eAAe,2BAOtD,CAAC;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"use-datepicker-format.d.ts","sourceRoot":"","sources":["use-datepicker-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AAKtC,eAAO,MAAM,qBAAqB,UACzB,mBAAmB,UAClB,MAAM,WACL;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,yBAOF,CAAC;AAEF,eAAO,MAAM,SAAS,WAAY,MAAM,GAAG,SAAS,QAAQ,MAAM,WAkBjE,CAAC;AA4BF,UAAU,eAAe;IACvB,OAAO,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,eAAO,MAAM,iBAAiB,SAAU,eAAe,2BAOtD,CAAC;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;0BA0Ne,gBAAgB;sCAsEJ,MAAM;iCAlCX,MAAM,SAAS,MAAM,eAAe,OAAO;+BA8B7C,MAAM,SAAS,MAAM;yCAzOnD,OAAO,GAAG,KAAK,GAAG,SAAS,QAAQ,MAAM,UAAU,IAAI,KAAK,OAAO;uCAWvE,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,QAC3B,MAAM;kBACG,MAAM,SAAS;mBAAS,GAAG;;+BA4CrC,IAAI,YAAY,OAAO,GAAG,KAAK,GAAG,SAAS,gBAAgB,MAAM;;CAiP3E,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
@@ -10,7 +10,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
10
10
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
11
11
|
import { useEffect, useRef, useState } from 'react';
|
12
12
|
import dateUtil from "./util";
|
13
|
-
import shallowEqual from "../../utils/shallow-equal";
|
13
|
+
import shallowEqual, { shallowEqualExceptFalsely } from "../../utils/shallow-equal";
|
14
14
|
import { usePersistFn } from "../../common/use-persist-fn";
|
15
15
|
import useLatestObj from "../../common/use-latest-obj";
|
16
16
|
export var convertValueToDateArr = function convertValueToDateArr(value, format, options) {
|
@@ -221,6 +221,7 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
|
|
221
221
|
return getFormatValueArr(dateArr, props.formatResult);
|
222
222
|
} else if (typeof props.formatResult === 'function') {
|
223
223
|
return dateArr.map(function (item) {
|
224
|
+
if (!item) return '';
|
224
225
|
return props.formatResult(item);
|
225
226
|
});
|
226
227
|
} else {
|
@@ -242,8 +243,15 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
|
|
242
243
|
}
|
243
244
|
var formatValue = getFormatValueArr(dateArr);
|
244
245
|
var v = range ? formatValue : formatValue[0];
|
245
|
-
if (
|
246
|
-
|
246
|
+
if (Array.isArray(value) && value.length && Array.isArray(v) && v.length) {
|
247
|
+
// 针对 range 的情况,['2025-01-01',''] 和 ['2025-01-01',undefined] 无法通过 shallowEqual 出来,这边需要放行
|
248
|
+
if (!shallowEqualExceptFalsely(v[0], value[0]) || !shallowEqualExceptFalsely(v[1], value[1])) {
|
249
|
+
onChange === null || onChange === void 0 || onChange(v);
|
250
|
+
}
|
251
|
+
} else {
|
252
|
+
if (!shallowEqual(v, value)) {
|
253
|
+
onChange === null || onChange === void 0 || onChange(v);
|
254
|
+
}
|
247
255
|
}
|
248
256
|
};
|
249
257
|
var getDateArr = function getDateArr() {
|
@@ -316,9 +324,9 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
|
|
316
324
|
}
|
317
325
|
(_props$onClear = props.onClear) === null || _props$onClear === void 0 || _props$onClear.call(props);
|
318
326
|
});
|
319
|
-
var handleInputChange = usePersistFn(function (str, index) {
|
327
|
+
var handleInputChange = usePersistFn(function (str, index, isFromBlur) {
|
320
328
|
// 比较 日期字符串是否符合format格式, 如果符合返回 true 否则返回 false
|
321
|
-
var isValid = dateUtil.isValidString(str, format);
|
329
|
+
var isValid = dateUtil.isValidString(str, format, isFromBlur);
|
322
330
|
if (!isValid) return;
|
323
331
|
var date = dateUtil.toDateWithFormat(str, format, undefined, options);
|
324
332
|
setInputArr(function (prev) {
|
@@ -342,6 +350,11 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
|
|
342
350
|
return arr;
|
343
351
|
});
|
344
352
|
});
|
353
|
+
|
354
|
+
// 失焦时,需要宽松模式校验,eg: 2025-06-16 18:00 和 2025-06-16 18 都可以校验通过
|
355
|
+
var handleInputBlur = usePersistFn(function (str, index) {
|
356
|
+
handleInputChange(str, index, true);
|
357
|
+
});
|
345
358
|
var handleClearInputArr = usePersistFn(function (index) {
|
346
359
|
if (index !== undefined) {
|
347
360
|
setInputArr(function (prev) {
|
@@ -385,6 +398,7 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
|
|
385
398
|
handleClear: handleClear,
|
386
399
|
handleClearInputArr: handleClearInputArr,
|
387
400
|
handleInputChange: handleInputChange,
|
401
|
+
handleInputBlur: handleInputBlur,
|
388
402
|
registerModeDisabled: registerModeDisabled,
|
389
403
|
setCurrentArrWithParams: setCurrentArrWithParams,
|
390
404
|
isDisabledDate: isDisabledDate
|
@@ -30,7 +30,7 @@ var useRangePick = function useRangePick(props) {
|
|
30
30
|
setDateArr(function (arr) {
|
31
31
|
var newArr = _toConsumableArray(arr);
|
32
32
|
newArr[index] = date;
|
33
|
-
if (range && index === 0 && newArr[1]) {
|
33
|
+
if (date && range && index === 0 && newArr[1]) {
|
34
34
|
if (typeof range === 'number') {
|
35
35
|
var rangeMax = utils.addSeconds(date, range, options);
|
36
36
|
if (rangeMax.getTime() < newArr[1].getTime()) {
|
@@ -59,7 +59,7 @@ var useRangePick = function useRangePick(props) {
|
|
59
59
|
var newArr = _toConsumableArray(arr);
|
60
60
|
newArr[index] = date;
|
61
61
|
var modeCache = context.modeCache;
|
62
|
-
if (modeCache[0] === modeCache[1]) {
|
62
|
+
if (date && modeCache[0] === modeCache[1]) {
|
63
63
|
var mode = modeCache[0];
|
64
64
|
if (range && index === 0 && newArr[1]) {
|
65
65
|
if (mode === 'year') {
|
@@ -20,7 +20,13 @@ declare function isSameWeek(date1: Date, date2: Date, options: DateOptions): boo
|
|
20
20
|
declare function isSameQuarter(date1: Date, date2: Date, options: DateOptions): boolean;
|
21
21
|
declare function isSameYear(date1: Date, date2: Date, options: DateOptions): boolean;
|
22
22
|
declare function isValid(date: DateTimeType): boolean;
|
23
|
-
|
23
|
+
/**
|
24
|
+
* @param date 日期字符串
|
25
|
+
* @param fmt 日期格式
|
26
|
+
* @param isLoose 是否为宽松模式
|
27
|
+
* @returns 是否为有效日期
|
28
|
+
*/
|
29
|
+
declare function isValidString(date: string, fmt: string, isLoose?: boolean): boolean;
|
24
30
|
declare function parse(d: string, fmt?: string, options?: DateOptions): Date;
|
25
31
|
declare function toDate(day: DateTimeType, options?: DateOptions): Date;
|
26
32
|
declare function getDaysOfMonth(dirtyDate: DateTimeType, options: DateOptions): Date[];
|