@sheinx/hooks 3.8.0-beta.1 → 3.8.0-beta.10

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 (91) 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 +29 -13
  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/util.d.ts +7 -1
  15. package/cjs/components/use-datepicker/util.d.ts.map +1 -1
  16. package/cjs/components/use-datepicker/util.js +11 -1
  17. package/cjs/components/use-form/use-form-context.d.ts.map +1 -1
  18. package/cjs/components/use-form/use-form-context.js +11 -5
  19. package/cjs/components/use-form/use-form.d.ts.map +1 -1
  20. package/cjs/components/use-form/use-form.js +6 -2
  21. package/cjs/components/use-input/use-input-format.d.ts.map +1 -1
  22. package/cjs/components/use-input/use-input-format.js +2 -1
  23. package/cjs/components/use-pagination/use-pagination.d.ts.map +1 -1
  24. package/cjs/components/use-pagination/use-pagination.js +2 -1
  25. package/cjs/components/use-popup/use-popup.d.ts.map +1 -1
  26. package/cjs/components/use-popup/use-popup.js +5 -2
  27. package/cjs/components/use-transfer/index.d.ts +1 -0
  28. package/cjs/components/use-transfer/index.d.ts.map +1 -1
  29. package/cjs/components/use-transfer/index.js +15 -0
  30. package/cjs/components/use-transfer/transfer-context.d.ts +7 -0
  31. package/cjs/components/use-transfer/transfer-context.d.ts.map +1 -0
  32. package/cjs/components/use-transfer/transfer-context.js +12 -0
  33. package/cjs/components/use-tree/use-tree-node.d.ts +7 -1
  34. package/cjs/components/use-tree/use-tree-node.d.ts.map +1 -1
  35. package/cjs/components/use-tree/use-tree-node.js +19 -1
  36. package/cjs/components/use-tree/use-tree.d.ts.map +1 -1
  37. package/cjs/components/use-tree/use-tree.js +11 -6
  38. package/cjs/components/use-tree/use-tree.type.d.ts +7 -1
  39. package/cjs/components/use-tree/use-tree.type.d.ts.map +1 -1
  40. package/cjs/utils/number.d.ts +10 -0
  41. package/cjs/utils/number.d.ts.map +1 -1
  42. package/cjs/utils/number.js +99 -1
  43. package/cjs/utils/shallow-equal.d.ts +1 -0
  44. package/cjs/utils/shallow-equal.d.ts.map +1 -1
  45. package/cjs/utils/shallow-equal.js +9 -0
  46. package/esm/common/use-position-style/check-border.d.ts +1 -0
  47. package/esm/common/use-position-style/check-border.d.ts.map +1 -1
  48. package/esm/common/use-position-style/check-border.js +2 -2
  49. package/esm/common/use-position-style/index.d.ts.map +1 -1
  50. package/esm/common/use-position-style/index.js +29 -13
  51. package/esm/components/use-datepicker/use-date.d.ts.map +1 -1
  52. package/esm/components/use-datepicker/use-date.js +12 -4
  53. package/esm/components/use-datepicker/use-date.type.d.ts +2 -1
  54. package/esm/components/use-datepicker/use-date.type.d.ts.map +1 -1
  55. package/esm/components/use-datepicker/use-datepicker-format.d.ts +2 -1
  56. package/esm/components/use-datepicker/use-datepicker-format.d.ts.map +1 -1
  57. package/esm/components/use-datepicker/use-datepicker-format.js +19 -5
  58. package/esm/components/use-datepicker/use-datepicker-range.js +2 -2
  59. package/esm/components/use-datepicker/util.d.ts +7 -1
  60. package/esm/components/use-datepicker/util.d.ts.map +1 -1
  61. package/esm/components/use-datepicker/util.js +11 -1
  62. package/esm/components/use-form/use-form-context.d.ts.map +1 -1
  63. package/esm/components/use-form/use-form-context.js +11 -5
  64. package/esm/components/use-form/use-form.d.ts.map +1 -1
  65. package/esm/components/use-form/use-form.js +6 -2
  66. package/esm/components/use-input/use-input-format.d.ts.map +1 -1
  67. package/esm/components/use-input/use-input-format.js +2 -1
  68. package/esm/components/use-pagination/use-pagination.d.ts.map +1 -1
  69. package/esm/components/use-pagination/use-pagination.js +2 -1
  70. package/esm/components/use-popup/use-popup.d.ts.map +1 -1
  71. package/esm/components/use-popup/use-popup.js +5 -2
  72. package/esm/components/use-transfer/index.d.ts +1 -0
  73. package/esm/components/use-transfer/index.d.ts.map +1 -1
  74. package/esm/components/use-transfer/index.js +1 -0
  75. package/esm/components/use-transfer/transfer-context.d.ts +7 -0
  76. package/esm/components/use-transfer/transfer-context.d.ts.map +1 -0
  77. package/esm/components/use-transfer/transfer-context.js +6 -0
  78. package/esm/components/use-tree/use-tree-node.d.ts +7 -1
  79. package/esm/components/use-tree/use-tree-node.d.ts.map +1 -1
  80. package/esm/components/use-tree/use-tree-node.js +19 -1
  81. package/esm/components/use-tree/use-tree.d.ts.map +1 -1
  82. package/esm/components/use-tree/use-tree.js +11 -6
  83. package/esm/components/use-tree/use-tree.type.d.ts +7 -1
  84. package/esm/components/use-tree/use-tree.type.d.ts.map +1 -1
  85. package/esm/utils/number.d.ts +10 -0
  86. package/esm/utils/number.d.ts.map +1 -1
  87. package/esm/utils/number.js +98 -1
  88. package/esm/utils/shallow-equal.d.ts +1 -0
  89. package/esm/utils/shallow-equal.d.ts.map +1 -1
  90. package/esm/utils/shallow-equal.js +8 -0
  91. 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,EAGV,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;;;;;CA4sBZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
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 (update, id) {
625
- update('expanded', tempExpandMap.has(id));
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 UpdateFunc = (name: string, active: boolean) => void;
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":"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"}
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;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,UAAU,CAAC;AAE9E,MAAM,MAAM,YAAY,CAAC,QAAQ,IAAI;IACnC,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,WAAW,CAAC,QAAQ;IACnC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACrC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,iBAAiB,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAClD,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC/C,iBAAiB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACzC,cAAc,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc,CAAC,QAAQ;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa,CAAC,QAAQ;IACrC;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B;;;OAGG;IACH,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9E;;;;OAIG;IACH,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACzC;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS,CAAC,QAAQ;IACjC,GAAG,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,iBAAiB,GAAG,SAAS,CAAC;IACzD,GAAG,EAAE,CACH,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,KACvB,iBAAiB,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,YAAY,GAAG,SAAS,CAAC;IACxD,QAAQ,EAAE,MAAM,YAAY,EAAE,CAAC;IAC/B,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,GAAG,eAAe,CAAC;IAC5D,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC;IAC5E,eAAe,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,KAAK,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAClG,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC;IAC1C,QAAQ,EAAE,CACR,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,KACX;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C,eAAe,EAAE,CACf,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,KACX;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C,WAAW,EAAE,CACX,EAAE,EAAE,YAAY,KACb,QAAQ,GAAG;QAAE,oBAAoB,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACrF,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC3D,YAAY,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACpC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACrC,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC/C,iBAAiB,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAClD,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CACrD"}
@@ -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
+ };
@@ -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;AAOD,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;;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.transform = '';
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.transform = '';
204
+ setTransform(style, '');
191
205
  } else {
192
206
  // 居中对齐
193
207
  style.left = rect.left + rect.width / 2 - containerRect.left + containerScroll.left;
194
- style.transform = 'translateX(-50%)';
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.transform += 'translateY(-100%)';
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.transform = '';
239
+ setTransform(style, '');
226
240
  } else if (_v === 'bottom') {
227
241
  style.top = rect.bottom - containerRect.top + containerScroll.top + (offset ? offset[1] : 0);
228
- style.transform = 'translateY(-100%)';
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.transform = 'translateY(-50%)';
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
- if (needCheck && scrollElRef !== null && scrollElRef !== void 0 && scrollElRef.current && (_scrollElRef$current = scrollElRef.current) !== null && _scrollElRef$current !== void 0 && _scrollElRef$current.contains(parentElRef.current)) {
255
- var _scrollElRef$current2;
256
- var visibleRect = ((_scrollElRef$current2 = scrollElRef.current) === null || _scrollElRef$current2 === void 0 ? void 0 : _scrollElRef$current2.getBoundingClientRect()) || {};
257
- if (rect.bottom < visibleRect.top || rect.top > visibleRect.bottom || rect.right < visibleRect.left || rect.left > visibleRect.right) {
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;;;;;;;;;;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') {
@@ -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[];