@sheinx/hooks 3.8.0-beta.2 → 3.8.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/cjs/common/use-position-style/check-border.d.ts +1 -0
  2. package/cjs/common/use-position-style/check-border.d.ts.map +1 -1
  3. package/cjs/common/use-position-style/check-border.js +2 -2
  4. package/cjs/common/use-position-style/index.d.ts.map +1 -1
  5. package/cjs/common/use-position-style/index.js +10 -4
  6. package/cjs/components/use-datepicker/use-date.d.ts.map +1 -1
  7. package/cjs/components/use-datepicker/use-date.js +12 -4
  8. package/cjs/components/use-datepicker/use-date.type.d.ts +2 -1
  9. package/cjs/components/use-datepicker/use-date.type.d.ts.map +1 -1
  10. package/cjs/components/use-datepicker/use-datepicker-format.d.ts +2 -1
  11. package/cjs/components/use-datepicker/use-datepicker-format.d.ts.map +1 -1
  12. package/cjs/components/use-datepicker/use-datepicker-format.js +22 -5
  13. package/cjs/components/use-datepicker/use-datepicker-range.js +2 -2
  14. package/cjs/components/use-datepicker/use-time.d.ts.map +1 -1
  15. package/cjs/components/use-datepicker/use-time.js +4 -2
  16. package/cjs/components/use-datepicker/use-time.type.d.ts +3 -1
  17. package/cjs/components/use-datepicker/use-time.type.d.ts.map +1 -1
  18. package/cjs/components/use-datepicker/util.d.ts +7 -1
  19. package/cjs/components/use-datepicker/util.d.ts.map +1 -1
  20. package/cjs/components/use-datepicker/util.js +11 -1
  21. package/cjs/components/use-form/use-form-context.d.ts.map +1 -1
  22. package/cjs/components/use-form/use-form-context.js +11 -5
  23. package/cjs/components/use-form/use-form-control/use-form-control.d.ts.map +1 -1
  24. package/cjs/components/use-form/use-form-control/use-form-control.js +12 -3
  25. package/cjs/components/use-form/use-form-control/use-form-control.type.d.ts +8 -2
  26. package/cjs/components/use-form/use-form-control/use-form-control.type.d.ts.map +1 -1
  27. package/cjs/components/use-form/use-form-flow/use-form-datum.d.ts +8 -0
  28. package/cjs/components/use-form/use-form-flow/use-form-datum.d.ts.map +1 -1
  29. package/cjs/components/use-form/use-form.d.ts.map +1 -1
  30. package/cjs/components/use-form/use-form.js +12 -8
  31. package/cjs/components/use-form/use-form.type.d.ts +43 -39
  32. package/cjs/components/use-form/use-form.type.d.ts.map +1 -1
  33. package/cjs/components/use-input/use-input-format.d.ts.map +1 -1
  34. package/cjs/components/use-input/use-input-format.js +2 -1
  35. package/cjs/components/use-input/use-input.d.ts.map +1 -1
  36. package/cjs/components/use-input/use-input.js +4 -1
  37. package/cjs/components/use-pagination/use-pagination.d.ts.map +1 -1
  38. package/cjs/components/use-pagination/use-pagination.js +2 -1
  39. package/cjs/components/use-popup/use-popup.d.ts.map +1 -1
  40. package/cjs/components/use-popup/use-popup.js +7 -4
  41. package/cjs/components/use-table/use-table-virtual.d.ts +2 -1
  42. package/cjs/components/use-table/use-table-virtual.d.ts.map +1 -1
  43. package/cjs/components/use-table/use-table-virtual.js +3 -3
  44. package/cjs/components/use-table/use-table.type.d.ts +70 -92
  45. package/cjs/components/use-table/use-table.type.d.ts.map +1 -1
  46. package/cjs/components/use-transfer/index.d.ts +1 -0
  47. package/cjs/components/use-transfer/index.d.ts.map +1 -1
  48. package/cjs/components/use-transfer/index.js +15 -0
  49. package/cjs/components/use-transfer/transfer-context.d.ts +7 -0
  50. package/cjs/components/use-transfer/transfer-context.d.ts.map +1 -0
  51. package/cjs/components/use-transfer/transfer-context.js +12 -0
  52. package/cjs/components/use-tree/use-tree-node.d.ts +7 -1
  53. package/cjs/components/use-tree/use-tree-node.d.ts.map +1 -1
  54. package/cjs/components/use-tree/use-tree-node.js +19 -1
  55. package/cjs/components/use-tree/use-tree.d.ts.map +1 -1
  56. package/cjs/components/use-tree/use-tree.js +14 -9
  57. package/cjs/components/use-tree/use-tree.type.d.ts +7 -1
  58. package/cjs/components/use-tree/use-tree.type.d.ts.map +1 -1
  59. package/cjs/utils/dom/document.d.ts +4 -0
  60. package/cjs/utils/dom/document.d.ts.map +1 -1
  61. package/cjs/utils/dom/document.js +19 -2
  62. package/cjs/utils/highlight.d.ts.map +1 -1
  63. package/cjs/utils/highlight.js +24 -11
  64. package/cjs/utils/number.d.ts +10 -0
  65. package/cjs/utils/number.d.ts.map +1 -1
  66. package/cjs/utils/number.js +99 -1
  67. package/cjs/utils/object.d.ts +6 -0
  68. package/cjs/utils/object.d.ts.map +1 -1
  69. package/cjs/utils/object.js +21 -1
  70. package/cjs/utils/shallow-equal.d.ts +1 -0
  71. package/cjs/utils/shallow-equal.d.ts.map +1 -1
  72. package/cjs/utils/shallow-equal.js +9 -0
  73. package/esm/common/use-position-style/check-border.d.ts +1 -0
  74. package/esm/common/use-position-style/check-border.d.ts.map +1 -1
  75. package/esm/common/use-position-style/check-border.js +2 -2
  76. package/esm/common/use-position-style/index.d.ts.map +1 -1
  77. package/esm/common/use-position-style/index.js +11 -5
  78. package/esm/components/use-datepicker/use-date.d.ts.map +1 -1
  79. package/esm/components/use-datepicker/use-date.js +12 -4
  80. package/esm/components/use-datepicker/use-date.type.d.ts +2 -1
  81. package/esm/components/use-datepicker/use-date.type.d.ts.map +1 -1
  82. package/esm/components/use-datepicker/use-datepicker-format.d.ts +2 -1
  83. package/esm/components/use-datepicker/use-datepicker-format.d.ts.map +1 -1
  84. package/esm/components/use-datepicker/use-datepicker-format.js +19 -5
  85. package/esm/components/use-datepicker/use-datepicker-range.js +2 -2
  86. package/esm/components/use-datepicker/use-time.d.ts.map +1 -1
  87. package/esm/components/use-datepicker/use-time.js +4 -2
  88. package/esm/components/use-datepicker/use-time.type.d.ts +3 -1
  89. package/esm/components/use-datepicker/use-time.type.d.ts.map +1 -1
  90. package/esm/components/use-datepicker/util.d.ts +7 -1
  91. package/esm/components/use-datepicker/util.d.ts.map +1 -1
  92. package/esm/components/use-datepicker/util.js +11 -1
  93. package/esm/components/use-form/use-form-context.d.ts.map +1 -1
  94. package/esm/components/use-form/use-form-context.js +11 -5
  95. package/esm/components/use-form/use-form-control/use-form-control.d.ts.map +1 -1
  96. package/esm/components/use-form/use-form-control/use-form-control.js +12 -3
  97. package/esm/components/use-form/use-form-control/use-form-control.type.d.ts +8 -2
  98. package/esm/components/use-form/use-form-control/use-form-control.type.d.ts.map +1 -1
  99. package/esm/components/use-form/use-form-flow/use-form-datum.d.ts +8 -0
  100. package/esm/components/use-form/use-form-flow/use-form-datum.d.ts.map +1 -1
  101. package/esm/components/use-form/use-form.d.ts.map +1 -1
  102. package/esm/components/use-form/use-form.js +12 -8
  103. package/esm/components/use-form/use-form.type.d.ts +43 -39
  104. package/esm/components/use-form/use-form.type.d.ts.map +1 -1
  105. package/esm/components/use-input/use-input-format.d.ts.map +1 -1
  106. package/esm/components/use-input/use-input-format.js +2 -1
  107. package/esm/components/use-input/use-input.d.ts.map +1 -1
  108. package/esm/components/use-input/use-input.js +4 -1
  109. package/esm/components/use-pagination/use-pagination.d.ts.map +1 -1
  110. package/esm/components/use-pagination/use-pagination.js +2 -1
  111. package/esm/components/use-popup/use-popup.d.ts.map +1 -1
  112. package/esm/components/use-popup/use-popup.js +7 -4
  113. package/esm/components/use-table/use-table-virtual.d.ts +2 -1
  114. package/esm/components/use-table/use-table-virtual.d.ts.map +1 -1
  115. package/esm/components/use-table/use-table-virtual.js +3 -3
  116. package/esm/components/use-table/use-table.type.d.ts +70 -92
  117. package/esm/components/use-table/use-table.type.d.ts.map +1 -1
  118. package/esm/components/use-transfer/index.d.ts +1 -0
  119. package/esm/components/use-transfer/index.d.ts.map +1 -1
  120. package/esm/components/use-transfer/index.js +1 -0
  121. package/esm/components/use-transfer/transfer-context.d.ts +7 -0
  122. package/esm/components/use-transfer/transfer-context.d.ts.map +1 -0
  123. package/esm/components/use-transfer/transfer-context.js +6 -0
  124. package/esm/components/use-tree/use-tree-node.d.ts +7 -1
  125. package/esm/components/use-tree/use-tree-node.d.ts.map +1 -1
  126. package/esm/components/use-tree/use-tree-node.js +19 -1
  127. package/esm/components/use-tree/use-tree.d.ts.map +1 -1
  128. package/esm/components/use-tree/use-tree.js +14 -9
  129. package/esm/components/use-tree/use-tree.type.d.ts +7 -1
  130. package/esm/components/use-tree/use-tree.type.d.ts.map +1 -1
  131. package/esm/utils/dom/document.d.ts +4 -0
  132. package/esm/utils/dom/document.d.ts.map +1 -1
  133. package/esm/utils/dom/document.js +18 -1
  134. package/esm/utils/highlight.d.ts.map +1 -1
  135. package/esm/utils/highlight.js +24 -10
  136. package/esm/utils/number.d.ts +10 -0
  137. package/esm/utils/number.d.ts.map +1 -1
  138. package/esm/utils/number.js +98 -1
  139. package/esm/utils/object.d.ts +6 -0
  140. package/esm/utils/object.d.ts.map +1 -1
  141. package/esm/utils/object.js +20 -0
  142. package/esm/utils/shallow-equal.d.ts +1 -0
  143. package/esm/utils/shallow-equal.d.ts.map +1 -1
  144. package/esm/utils/shallow-equal.js +8 -0
  145. package/package.json +3 -3
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- 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); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -11,6 +10,12 @@ var _is = require("./is");
11
10
  var _jsxRuntime = require("react/jsx-runtime");
12
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ 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); }
14
+ 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; }
15
+ 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; }
16
+ 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; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
18
+ 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); }
14
19
  function getHighlightText(_ref) {
15
20
  var nodeList = _ref.nodeList,
16
21
  searchWords = _ref.searchWords,
@@ -19,22 +24,31 @@ function getHighlightText(_ref) {
19
24
  if (!enable || !searchWords) {
20
25
  return nodeList;
21
26
  }
22
- var transformNode = function transformNode(node) {
23
- var _node$props;
24
- if (node && typeof ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.children) === 'string') {
25
- return /*#__PURE__*/(0, _react.cloneElement)(node, undefined, /*#__PURE__*/(0, _jsxRuntime.jsx)(HighlightText, {
26
- textToHighlight: node.props.children,
27
+
28
+ // 递归转换节点
29
+ var transformNode = function transformNode(node, index) {
30
+ // 如果是合法的 React 元素
31
+ if ( /*#__PURE__*/_react.default.isValidElement(node) && node.props && node.props.children) {
32
+ // 对 children 递归调用 getHighlightText 进行转换
33
+ var transformedChildren = getHighlightText({
34
+ nodeList: node.props.children,
27
35
  searchWords: searchWords,
28
- highlightClassName: highlightClassName
29
- }));
36
+ highlightClassName: highlightClassName,
37
+ enable: enable
38
+ });
39
+ return /*#__PURE__*/(0, _react.cloneElement)(node, _objectSpread(_objectSpread({}, node.props), {}, {
40
+ key: index
41
+ }), transformedChildren);
30
42
  }
31
- if (node && typeof node === 'string') {
43
+ // 如果节点为字符串,则直接高亮替换
44
+ if (typeof node === 'string') {
32
45
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(HighlightText, {
33
46
  textToHighlight: node,
34
47
  searchWords: searchWords,
35
48
  highlightClassName: highlightClassName
36
49
  });
37
50
  }
51
+ // 其他情况直接返回原节点
38
52
  return node;
39
53
  };
40
54
  return (0, _is.isArray)(nodeList) ? nodeList.map(transformNode) : transformNode(nodeList);
@@ -50,8 +64,7 @@ function HighlightText(_ref2) {
50
64
  searchWords = searchWords.slice(0, 500);
51
65
  }
52
66
 
53
- // 注意这里的括号,这里使用了带capture group功能的正则,来split字符串
54
- // 从而在strArr中可以保留匹配文本
67
+ // capture group 的正则用于 split 保留匹配文本
55
68
  var re = new RegExp("(".concat((0, _string.escapeRegExp)(searchWords), ")"), 'i');
56
69
  var strArr = textToHighlight.split(re);
57
70
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
@@ -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"}
@@ -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
+ };
@@ -45,5 +45,11 @@ export declare const getAllKeyPaths: (obj: ObjectType, parentKey?: string) => st
45
45
  * console.log(completeFields) // ['user', 'user.name', 'user.age', 'user[0].name', 'user[0].age', 'user[1].name', 'user[1].age']
46
46
  */
47
47
  export declare const getCompleteFieldKeys: (fields: string | string[], allFields: string[]) => string[];
48
+ /**
49
+ * 将对象中的所有值设置为空, 如果值是数组,重置为空数组,如果是对象,重置为空对象,如果是基础类型,重置为undefined
50
+ * @param obj 对象
51
+ * @returns 空对象
52
+ */
53
+ export declare const clearValue: (obj: ObjectType) => any;
48
54
  export {};
49
55
  //# sourceMappingURL=object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,UAGvC;AASD,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,eAAO,MAAM,YAAY,QAAS,UAAU,UAG3C,CAAC;AAGF,eAAO,MAAM,SAAS,2CAEZ,UAAU,YACT,WAAW,eAwBrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,+DA4BxC;AAED,UAAU,cAAc;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,OAAO,WACV,UAAU,QACZ,MAAM,SACL,GAAG,YACD,cAAc,eAiDxB,CAAC;AAEF,eAAO,MAAM,OAAO,WAAY,UAAU,QAAQ,MAAM,YAAW,WAAW,YAyB7E,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,UAAU,QAAQ,MAAM,eA0B1D,CAAC;AAEF,eAAO,MAAM,OAAO,WAAY,UAAU,QAAQ,MAAM,YAavD,CAAC;AAEF,eAAO,MAAM,OAAO,QAAS,UAAU,YAItC,CAAC;AAEF,eAAO,MAAM,WAAW,wFAQvB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,QAAS,UAAU,cAAa,MAAM,KAAQ,MAAM,EAoB9E,CAAC;AAGF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,WAAY,MAAM,GAAG,MAAM,EAAE,aAAa,MAAM,EAAE,KAAG,MAAM,EAmB3F,CAAA"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,UAGvC;AASD,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,eAAO,MAAM,YAAY,QAAS,UAAU,UAG3C,CAAC;AAGF,eAAO,MAAM,SAAS,2CAEZ,UAAU,YACT,WAAW,eAwBrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,+DA4BxC;AAED,UAAU,cAAc;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,OAAO,WACV,UAAU,QACZ,MAAM,SACL,GAAG,YACD,cAAc,eAiDxB,CAAC;AAEF,eAAO,MAAM,OAAO,WAAY,UAAU,QAAQ,MAAM,YAAW,WAAW,YAyB7E,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,UAAU,QAAQ,MAAM,eA0B1D,CAAC;AAEF,eAAO,MAAM,OAAO,WAAY,UAAU,QAAQ,MAAM,YAavD,CAAC;AAEF,eAAO,MAAM,OAAO,QAAS,UAAU,YAItC,CAAC;AAEF,eAAO,MAAM,WAAW,wFAQvB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,QAAS,UAAU,cAAa,MAAM,KAAQ,MAAM,EAoB9E,CAAC;AAGF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,WAAY,MAAM,GAAG,MAAM,EAAE,aAAa,MAAM,EAAE,KAAG,MAAM,EAmB3F,CAAA;AAGD;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAS,UAAU,KAAG,GAW5C,CAAC"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getCompleteFieldKeys = exports.getAllKeyPaths = exports.entries = exports.deepSet = exports.deepRemove = exports.deepMerge = exports.deepHas = exports.deepGet = void 0;
6
+ exports.getCompleteFieldKeys = exports.getAllKeyPaths = exports.entries = exports.deepSet = exports.deepRemove = exports.deepMerge = exports.deepHas = exports.deepGet = exports.clearValue = void 0;
7
7
  exports.insertPoint = insertPoint;
8
8
  exports.objectValues = void 0;
9
9
  exports.pathGenerator = pathGenerator;
@@ -335,4 +335,24 @@ var getCompleteFieldKeys = exports.getCompleteFieldKeys = function getCompleteFi
335
335
 
336
336
  // 返回之前去重
337
337
  return Array.from(new Set(completeFields));
338
+ };
339
+
340
+ /**
341
+ * 将对象中的所有值设置为空, 如果值是数组,重置为空数组,如果是对象,重置为空对象,如果是基础类型,重置为undefined
342
+ * @param obj 对象
343
+ * @returns 空对象
344
+ */
345
+ var clearValue = exports.clearValue = function clearValue(obj) {
346
+ if ((0, _is.isArray)(obj)) {
347
+ return obj.map(function (item) {
348
+ return clearValue(item);
349
+ });
350
+ }
351
+ if ((0, _is.isObject)(obj)) {
352
+ return Object.keys(obj).reduce(function (acc, key) {
353
+ acc[key] = clearValue(obj[key]);
354
+ return acc;
355
+ }, {});
356
+ }
357
+ return undefined;
338
358
  };
@@ -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;CACvC;AAGD,eAAO,MAAM,0BAA0B,eACzB,MAAM,SAAS,CAAC,WAAW,CAAC,YAC/B,iCAAiC,KACzC,MAqBF,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;AAsBD,eAAO,MAAM,gBAAgB,WAAY,mBAAmB;;CA4S3D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
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;;CA+S3D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -12,7 +12,7 @@ import { useCheckElementBorderWidth } from "./check-border";
12
12
  import { useCheckElementSize } from "./check-element-size";
13
13
  import shallowEqual from "../../utils/shallow-equal";
14
14
  import usePersistFn from "../use-persist-fn";
15
- import { getCurrentCSSZoom } from "../../utils";
15
+ import { getCurrentCSSZoom, getScrollPosition } from "../../utils";
16
16
  import { docSize } from "../../utils";
17
17
  var horizontalPosition = ['left-bottom', 'left-top', 'right-bottom', 'right-top', 'left', 'right'];
18
18
  var verticalPosition = ['bottom-left', 'bottom-right', 'top-left', 'top-right', 'bottom', 'top'];
@@ -79,7 +79,8 @@ export var usePositionStyle = function usePositionStyle(config) {
79
79
  enable: show && adjust
80
80
  });
81
81
  var parentElBorderWidth = useCheckElementBorderWidth(parentElRef, {
82
- direction: 'horizontal'
82
+ direction: 'horizontal',
83
+ enable: show
83
84
  });
84
85
  var popupElSize = useCheckElementSize(popupElRef, {
85
86
  enable: show
@@ -235,7 +236,7 @@ export var usePositionStyle = function usePositionStyle(config) {
235
236
  _v = _targetPosition$split4[1];
236
237
  if (_v === 'top') {
237
238
  style.top = rect.top - containerRect.top + containerScroll.top - (offset ? offset[1] : 0);
238
- setTransform(style, '');
239
+ setTransform(style, 'translateX(0%)');
239
240
  } else if (_v === 'bottom') {
240
241
  style.top = rect.bottom - containerRect.top + containerScroll.top + (offset ? offset[1] : 0);
241
242
  setTransform(style, 'translateY(-100%)');
@@ -264,10 +265,13 @@ export var usePositionStyle = function usePositionStyle(config) {
264
265
  };
265
266
  var rect = context.parentRect;
266
267
  var needCheck = !show || !shallowEqual(context.prevParentPosition, parentElNewPosition);
268
+ var _getScrollPosition = getScrollPosition(scrollElRef === null || scrollElRef === void 0 ? void 0 : scrollElRef.current),
269
+ scrollTop = _getScrollPosition.scrollTop,
270
+ scrollLeft = _getScrollPosition.scrollLeft;
267
271
  if (needCheck && scrollElRef !== null && scrollElRef !== void 0 && scrollElRef.current && (_scrollElRef$current = scrollElRef.current) !== null && _scrollElRef$current !== void 0 && _scrollElRef$current.contains(parentElRef.current)) {
268
272
  var _scrollElRef$current2;
269
273
  var visibleRect = ((_scrollElRef$current2 = scrollElRef.current) === null || _scrollElRef$current2 === void 0 ? void 0 : _scrollElRef$current2.getBoundingClientRect()) || {};
270
- if (rect.bottom < visibleRect.top || rect.top > visibleRect.bottom || rect.right < visibleRect.left || rect.left > visibleRect.right) {
274
+ if (rect.bottom < visibleRect.top || rect.top > visibleRect.bottom + scrollTop || rect.right < visibleRect.left || rect.left > visibleRect.right + scrollLeft) {
271
275
  return {
272
276
  style: hideStyle
273
277
  };
@@ -340,7 +344,9 @@ export var usePositionStyle = function usePositionStyle(config) {
340
344
  }
341
345
 
342
346
  // 当父元素的滚动容器滚动时,判断是否需要更新弹出层位置,包括是否隐藏弹出层(通过hideStyle隐藏,不是show状态)
343
- context.prevParentPosition = parentElNewPosition;
347
+ if (show) {
348
+ context.prevParentPosition = parentElNewPosition;
349
+ }
344
350
  });
345
351
  useEffect(updateStyle, [show, position, absolute, updateKey, fixedWidth, parentElNewPosition, popupElSize]);
346
352
  return {
@@ -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;;;;;;;;;;wBAmBX,IAAI;2BAkDD,IAAI;yBAkBN,IAAI;0BAkDH,IAAI;+BAxEC,IAAI;+BAiDJ,IAAI,YAAY,OAAO;0BAnB5B,IAAI;2BAIH,IAAI;;gCAIC,IAAI;;CAiFpC,CAAC;AAEF,eAAe,OAAO,CAAC"}
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
- setCurrentState(date);
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
- props === null || props === void 0 || props.onClearInputArr(position === 'start' ? 0 : 1);
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
- setCurrent(newDate);
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
- onChange?: (date: Date, noClose?: boolean) => void;
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;IACnD,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"}
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;;;;;;;;;;;;;;;;;0BA6Me,gBAAgB;sCAiEJ,MAAM;iCA7BX,MAAM,SAAS,MAAM;yCA9LrD,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;;CA8N3E,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
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 (!shallowEqual(v, value)) {
246
- onChange === null || onChange === void 0 || onChange(v);
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') {
@@ -1 +1 @@
1
- {"version":3,"file":"use-time.d.ts","sourceRoot":"","sources":["use-time.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,QAAA,MAAM,OAAO,UAAW,YAAY;;;;iBA4HU,MAAM;kBAAQ,IAAI;sBAAY,OAAO;;;;;6BAvBrD,IAAI;2BAjEN,IAAI,gBAAgB,MAAM;;CA6IrD,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"use-time.d.ts","sourceRoot":"","sources":["use-time.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,QAAA,MAAM,OAAO,UAAW,YAAY;;;;iBA+HU,MAAM;kBAAQ,IAAI;sBAAY,OAAO;;;;;6BAvBrD,IAAI;2BAlEN,IAAI,gBAAgB,MAAM;;CA8IrD,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -12,7 +12,9 @@ var useTime = function useTime(props) {
12
12
  _props$secondStep = props.secondStep,
13
13
  secondStep = _props$secondStep === void 0 ? 1 : _props$secondStep,
14
14
  staticMin = props.staticMin,
15
- staticMax = props.staticMax;
15
+ staticMax = props.staticMax,
16
+ position = props.position,
17
+ rangeDate = props.rangeDate;
16
18
  var min = dateUtil.resetTimeByFormat(mi, format, options);
17
19
  var max = dateUtil.resetTimeByFormat(ma, format, options);
18
20
  var current = props.value || dateUtil.newDate(undefined, options);
@@ -38,7 +40,7 @@ var useTime = function useTime(props) {
38
40
  disabledTime = props.disabledTime;
39
41
  if (disabledTime) {
40
42
  var _time = dateUtil.format(date, dateUtil.TIME_FORMAT, options);
41
- if (typeof disabledTime === 'function') return disabledTime(_time);
43
+ if (typeof disabledTime === 'function') return disabledTime(_time, position, rangeDate === null || rangeDate === void 0 ? void 0 : rangeDate[0], rangeDate === null || rangeDate === void 0 ? void 0 : rangeDate[1]);
42
44
  return disabledTime === _time;
43
45
  }
44
46
  var isDis = disabled && typeof disabled === 'function' ? disabled(date) : false;
@@ -11,9 +11,11 @@ export interface UseTimeProps {
11
11
  staticMin?: Date;
12
12
  staticMax?: Date;
13
13
  disabled?: boolean | ((date: Date) => boolean);
14
- disabledTime?: string | ((time: string) => boolean);
14
+ disabledTime?: string | ((time: string, type?: 'start' | 'end', value0?: Date, value1?: Date) => boolean);
15
15
  minuteStep?: number;
16
16
  hourStep?: number;
17
17
  secondStep?: number;
18
+ position?: 'start' | 'end';
19
+ rangeDate?: Array<Date | undefined>;
18
20
  }
19
21
  //# sourceMappingURL=use-time.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-time.type.d.ts","sourceRoot":"","sources":["use-time.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"use-time.type.d.ts","sourceRoot":"","sources":["use-time.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;CACrC"}
@@ -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
- declare function isValidString(date: string, fmt: string): boolean;
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[];