@sheinx/hooks 3.9.0-beta.9 → 3.9.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/cjs/common/use-collapse-animation/index.d.ts +3 -0
  2. package/cjs/common/use-collapse-animation/index.d.ts.map +1 -0
  3. package/cjs/common/use-collapse-animation/index.js +13 -0
  4. package/cjs/common/use-collapse-animation/use-collapse-animation.d.ts +35 -0
  5. package/cjs/common/use-collapse-animation/use-collapse-animation.d.ts.map +1 -0
  6. package/cjs/common/use-collapse-animation/use-collapse-animation.js +107 -0
  7. package/cjs/common/use-filter/use-filter.type.d.ts +1 -1
  8. package/cjs/common/use-filter/use-filter.type.d.ts.map +1 -1
  9. package/cjs/common/use-input-able/use-Input-able.d.ts.map +1 -1
  10. package/cjs/common/use-input-able/use-Input-able.js +6 -7
  11. package/cjs/components/use-button/use-button.d.ts +2 -2
  12. package/cjs/components/use-carousel/use-carousel.d.ts +12 -0
  13. package/cjs/components/use-carousel/use-carousel.d.ts.map +1 -1
  14. package/cjs/components/use-carousel/use-carousel.js +67 -17
  15. package/cjs/components/use-datepicker/use-date.d.ts.map +1 -1
  16. package/cjs/components/use-datepicker/use-date.js +7 -7
  17. package/cjs/components/use-datepicker/use-date.type.d.ts +2 -1
  18. package/cjs/components/use-datepicker/use-date.type.d.ts.map +1 -1
  19. package/cjs/components/use-datepicker/use-datepicker-range.d.ts +2 -2
  20. package/cjs/components/use-datepicker/use-datepicker-range.d.ts.map +1 -1
  21. package/cjs/components/use-datepicker/use-datepicker-range.js +7 -16
  22. package/cjs/components/use-datepicker/use-month.d.ts.map +1 -1
  23. package/cjs/components/use-datepicker/use-month.js +5 -5
  24. package/cjs/components/use-datepicker/use-month.type.d.ts +2 -1
  25. package/cjs/components/use-datepicker/use-month.type.d.ts.map +1 -1
  26. package/cjs/components/use-datepicker/use-quarter.d.ts.map +1 -1
  27. package/cjs/components/use-datepicker/use-quarter.js +5 -5
  28. package/cjs/components/use-datepicker/use-year.d.ts.map +1 -1
  29. package/cjs/components/use-datepicker/use-year.js +5 -5
  30. package/cjs/components/use-datepicker/use-year.type.d.ts +2 -1
  31. package/cjs/components/use-datepicker/use-year.type.d.ts.map +1 -1
  32. package/cjs/components/use-form/use-form.type.d.ts +1 -1
  33. package/cjs/components/use-form/use-form.type.d.ts.map +1 -1
  34. package/cjs/components/use-input/use-input-format.d.ts +1 -1
  35. package/cjs/components/use-input/use-input-number.d.ts +1 -1
  36. package/cjs/components/use-table/use-table-columns.d.ts +8 -1
  37. package/cjs/components/use-table/use-table-columns.d.ts.map +1 -1
  38. package/cjs/components/use-table/use-table-columns.js +90 -1
  39. package/cjs/components/use-table/use-table-filter.d.ts +2 -2
  40. package/cjs/components/use-table/use-table-filter.d.ts.map +1 -1
  41. package/cjs/components/use-table/use-table-filter.js +11 -5
  42. package/cjs/components/use-table/use-table-layout.js +1 -1
  43. package/cjs/components/use-table/use-table-virtual.d.ts +1 -0
  44. package/cjs/components/use-table/use-table-virtual.d.ts.map +1 -1
  45. package/cjs/components/use-table/use-table-virtual.js +33 -4
  46. package/cjs/index.d.ts +1 -0
  47. package/cjs/index.d.ts.map +1 -1
  48. package/cjs/index.js +12 -0
  49. package/cjs/utils/dom/element.d.ts.map +1 -1
  50. package/cjs/utils/dom/element.js +3 -0
  51. package/cjs/utils/dom/get-dataset.d.ts +4 -0
  52. package/cjs/utils/dom/get-dataset.d.ts.map +1 -0
  53. package/cjs/utils/dom/get-dataset.js +18 -0
  54. package/cjs/utils/dom/index.d.ts +1 -0
  55. package/cjs/utils/dom/index.d.ts.map +1 -1
  56. package/cjs/utils/dom/index.js +12 -0
  57. package/cjs/utils/rule/regexp.d.ts +1 -1
  58. package/cjs/utils/rule/required.d.ts.map +1 -1
  59. package/cjs/utils/rule/required.js +3 -1
  60. package/cjs/utils/validate/get-rule.js +1 -1
  61. package/esm/common/use-collapse-animation/index.d.ts +3 -0
  62. package/esm/common/use-collapse-animation/index.d.ts.map +1 -0
  63. package/esm/common/use-collapse-animation/index.js +2 -0
  64. package/esm/common/use-collapse-animation/use-collapse-animation.d.ts +35 -0
  65. package/esm/common/use-collapse-animation/use-collapse-animation.d.ts.map +1 -0
  66. package/esm/common/use-collapse-animation/use-collapse-animation.js +101 -0
  67. package/esm/common/use-filter/use-filter.type.d.ts +1 -1
  68. package/esm/common/use-filter/use-filter.type.d.ts.map +1 -1
  69. package/esm/common/use-input-able/use-Input-able.d.ts.map +1 -1
  70. package/esm/common/use-input-able/use-Input-able.js +7 -8
  71. package/esm/components/use-button/use-button.d.ts +2 -2
  72. package/esm/components/use-carousel/use-carousel.d.ts +12 -0
  73. package/esm/components/use-carousel/use-carousel.d.ts.map +1 -1
  74. package/esm/components/use-carousel/use-carousel.js +67 -17
  75. package/esm/components/use-datepicker/use-date.d.ts.map +1 -1
  76. package/esm/components/use-datepicker/use-date.js +7 -7
  77. package/esm/components/use-datepicker/use-date.type.d.ts +2 -1
  78. package/esm/components/use-datepicker/use-date.type.d.ts.map +1 -1
  79. package/esm/components/use-datepicker/use-datepicker-range.d.ts +2 -2
  80. package/esm/components/use-datepicker/use-datepicker-range.d.ts.map +1 -1
  81. package/esm/components/use-datepicker/use-datepicker-range.js +7 -16
  82. package/esm/components/use-datepicker/use-month.d.ts.map +1 -1
  83. package/esm/components/use-datepicker/use-month.js +5 -5
  84. package/esm/components/use-datepicker/use-month.type.d.ts +2 -1
  85. package/esm/components/use-datepicker/use-month.type.d.ts.map +1 -1
  86. package/esm/components/use-datepicker/use-quarter.d.ts.map +1 -1
  87. package/esm/components/use-datepicker/use-quarter.js +5 -5
  88. package/esm/components/use-datepicker/use-year.d.ts.map +1 -1
  89. package/esm/components/use-datepicker/use-year.js +5 -5
  90. package/esm/components/use-datepicker/use-year.type.d.ts +2 -1
  91. package/esm/components/use-datepicker/use-year.type.d.ts.map +1 -1
  92. package/esm/components/use-form/use-form.type.d.ts +1 -1
  93. package/esm/components/use-form/use-form.type.d.ts.map +1 -1
  94. package/esm/components/use-input/use-input-format.d.ts +1 -1
  95. package/esm/components/use-input/use-input-number.d.ts +1 -1
  96. package/esm/components/use-table/use-table-columns.d.ts +8 -1
  97. package/esm/components/use-table/use-table-columns.d.ts.map +1 -1
  98. package/esm/components/use-table/use-table-columns.js +91 -2
  99. package/esm/components/use-table/use-table-filter.d.ts +2 -2
  100. package/esm/components/use-table/use-table-filter.d.ts.map +1 -1
  101. package/esm/components/use-table/use-table-filter.js +11 -5
  102. package/esm/components/use-table/use-table-layout.js +1 -1
  103. package/esm/components/use-table/use-table-virtual.d.ts +1 -0
  104. package/esm/components/use-table/use-table-virtual.d.ts.map +1 -1
  105. package/esm/components/use-table/use-table-virtual.js +33 -4
  106. package/esm/index.d.ts +1 -0
  107. package/esm/index.d.ts.map +1 -1
  108. package/esm/index.js +1 -0
  109. package/esm/utils/dom/element.d.ts.map +1 -1
  110. package/esm/utils/dom/element.js +3 -0
  111. package/esm/utils/dom/get-dataset.d.ts +4 -0
  112. package/esm/utils/dom/get-dataset.d.ts.map +1 -0
  113. package/esm/utils/dom/get-dataset.js +12 -0
  114. package/esm/utils/dom/index.d.ts +1 -0
  115. package/esm/utils/dom/index.d.ts.map +1 -1
  116. package/esm/utils/dom/index.js +1 -0
  117. package/esm/utils/rule/regexp.d.ts +1 -1
  118. package/esm/utils/rule/required.d.ts.map +1 -1
  119. package/esm/utils/rule/required.js +3 -1
  120. package/esm/utils/validate/get-rule.js +1 -1
  121. package/package.json +2 -2
@@ -0,0 +1,35 @@
1
+ /// <reference types="react" />
2
+ export interface UseCollapseAnimationOptions {
3
+ /**
4
+ * 是否展开
5
+ */
6
+ isOpen: boolean;
7
+ /**
8
+ * 动画时长(毫秒)
9
+ * @default 240
10
+ */
11
+ duration?: number;
12
+ /**
13
+ * 是否禁用动画
14
+ * @default false
15
+ */
16
+ disabled?: boolean;
17
+ /**
18
+ * 过渡函数
19
+ * @default 'cubic-bezier(.2,0,0,1)'
20
+ */
21
+ timingFunction?: string;
22
+ }
23
+ /**
24
+ * 为元素添加折叠/展开动画的 Hook
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * const ref = useRef<HTMLDivElement>(null);
29
+ * useCollapseAnimation(ref, { isOpen: true });
30
+ *
31
+ * return <div ref={ref}>Content</div>;
32
+ * ```
33
+ */
34
+ export declare function useCollapseAnimation<T extends HTMLElement = HTMLElement>(elementRef: React.RefObject<T>, options: UseCollapseAnimationOptions): void;
35
+ //# sourceMappingURL=use-collapse-animation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-collapse-animation.d.ts","sourceRoot":"","sources":["use-collapse-animation.ts"],"names":[],"mappings":";AAEA,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EACtE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAC9B,OAAO,EAAE,2BAA2B,QAwFrC"}
@@ -0,0 +1,101 @@
1
+ import { useEffect, useRef } from 'react';
2
+ /**
3
+ * 为元素添加折叠/展开动画的 Hook
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * const ref = useRef<HTMLDivElement>(null);
8
+ * useCollapseAnimation(ref, { isOpen: true });
9
+ *
10
+ * return <div ref={ref}>Content</div>;
11
+ * ```
12
+ */
13
+ export function useCollapseAnimation(elementRef, options) {
14
+ var isOpen = options.isOpen,
15
+ _options$duration = options.duration,
16
+ duration = _options$duration === void 0 ? 240 : _options$duration,
17
+ _options$disabled = options.disabled,
18
+ disabled = _options$disabled === void 0 ? false : _options$disabled,
19
+ _options$timingFuncti = options.timingFunction,
20
+ timingFunction = _options$timingFuncti === void 0 ? 'cubic-bezier(.2,0,0,1)' : _options$timingFuncti;
21
+ var isFirstRenderRef = useRef(true);
22
+
23
+ // 当 disabled 状态变化时,重置首次渲染标记
24
+ useEffect(function () {
25
+ if (disabled) {
26
+ isFirstRenderRef.current = true;
27
+ }
28
+ }, [disabled]);
29
+ useEffect(function () {
30
+ if (!elementRef.current) return;
31
+ var el = elementRef.current;
32
+
33
+ // 如果禁用动画,清除所有样式并返回
34
+ if (disabled) {
35
+ el.style.height = '';
36
+ el.style.overflow = '';
37
+ el.style.transition = '';
38
+ el.style.display = '';
39
+ return;
40
+ }
41
+ var timer = null;
42
+
43
+ // 设置 display: block,让元素始终可见,由高度控制折叠
44
+ el.style.display = 'block';
45
+
46
+ // 首次渲染时,直接设置初始状态,不做动画
47
+ if (isFirstRenderRef.current) {
48
+ isFirstRenderRef.current = false;
49
+ if (!isOpen) {
50
+ el.style.height = '0px';
51
+ el.style.overflow = 'hidden';
52
+ }
53
+ return;
54
+ }
55
+ if (isOpen) {
56
+ // 展开动画
57
+ el.style.height = '0px';
58
+ el.style.overflow = 'hidden';
59
+
60
+ // 强制重绘
61
+ void el.offsetHeight;
62
+
63
+ // 获取实际高度
64
+ var scrollHeight = el.scrollHeight;
65
+
66
+ // 启动动画
67
+ requestAnimationFrame(function () {
68
+ el.style.transition = "height ".concat(duration, "ms ").concat(timingFunction);
69
+ el.style.height = "".concat(scrollHeight, "px");
70
+
71
+ // 动画结束后恢复 auto
72
+ timer = setTimeout(function () {
73
+ if (el && isOpen) {
74
+ el.style.height = '';
75
+ el.style.overflow = '';
76
+ el.style.transition = '';
77
+ }
78
+ }, duration);
79
+ });
80
+ } else {
81
+ // 收起动画
82
+ var _scrollHeight = el.scrollHeight;
83
+ el.style.height = "".concat(_scrollHeight, "px");
84
+ el.style.overflow = 'hidden';
85
+
86
+ // 强制重绘
87
+ void el.offsetHeight;
88
+ requestAnimationFrame(function () {
89
+ el.style.transition = "height ".concat(duration, "ms ").concat(timingFunction);
90
+ el.style.height = '0px';
91
+ });
92
+ }
93
+
94
+ // 清理函数:组件卸载或依赖变化时清除定时器
95
+ return function () {
96
+ if (timer) {
97
+ clearTimeout(timer);
98
+ }
99
+ };
100
+ }, [isOpen, disabled, duration, timingFunction]);
101
+ }
@@ -13,7 +13,7 @@ export interface UseFilterProps<DataItem> {
13
13
  firstMatch?: boolean;
14
14
  onFilter?: (text: string, from?: string) => void | ((data: DataItem) => boolean);
15
15
  onFilterWidthCreate?: (data: DataItem, createdData: DataItem, key: string | number) => boolean;
16
- onCreate?: ((input: string | DataItem) => DataItem | string) | boolean;
16
+ onCreate?: ((input: string) => DataItem | string) | boolean;
17
17
  filterDelay?: number;
18
18
  }
19
19
  //# sourceMappingURL=use-filter.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-filter.type.d.ts","sourceRoot":"","sources":["use-filter.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,cAAc,CAAC,QAAQ;IACtC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC;IACjF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC;IAC/F,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"use-filter.type.d.ts","sourceRoot":"","sources":["use-filter.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,cAAc,CAAC,QAAQ;IACtC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC;IACjF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC;IAC/F,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-Input-able.d.ts","sourceRoot":"","sources":["use-Input-able.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;;;EA2E3F"}
1
+ {"version":3,"file":"use-Input-able.d.ts","sourceRoot":"","sources":["use-Input-able.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;;;EA6E3F"}
@@ -4,7 +4,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
4
4
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import { useEffect, useRef, useState } from 'react';
7
+ import { useLayoutEffect, useRef, useState } from 'react';
8
8
  import { isFunc } from "../../utils/is";
9
9
  import { shallowEqual } from "../../utils/shallow-equal";
10
10
  import usePersistFn from "../use-persist-fn";
@@ -39,19 +39,18 @@ export default function useInputAble(props) {
39
39
  var render = useRender(syncValue);
40
40
  var shouldUseState = delay || !control;
41
41
  var value = shouldUseState ? stateValue : valuePo;
42
- useEffect(function () {
43
- if (context.timer) {
44
- clearTimeout(context.timer);
45
- context.timer = null;
46
- }
42
+ useLayoutEffect(function () {
47
43
  if (delay && control && props.value !== stateValue) {
48
44
  changeStateValue(props.value);
45
+ } else if (context.timer) {
46
+ clearTimeout(context.timer);
47
+ context.timer = null;
49
48
  }
50
49
  }, [props.value, delay, control]);
51
50
  var forceDelayChange = usePersistFn(function () {
52
- if (context.timer && context.delayChange) {
51
+ if (context.delayChange) context.delayChange();
52
+ if (context.timer) {
53
53
  clearTimeout(context.timer);
54
- context.delayChange();
55
54
  context.timer = null;
56
55
  context.delayChange = null;
57
56
  }
@@ -8,7 +8,7 @@ declare const useButton: (props?: BaseButtonProps) => {
8
8
  text?: boolean | undefined;
9
9
  outline?: boolean | undefined;
10
10
  type?: import("./use-button.type").ButtonType | undefined;
11
- size?: "small" | "default" | "large" | undefined;
11
+ size?: "small" | "large" | "default" | undefined;
12
12
  space?: boolean | undefined;
13
13
  shape?: import("./use-button.type").ButtonShape | undefined;
14
14
  buttonRef?: React.Ref<HTMLButtonElement> | undefined;
@@ -22,7 +22,7 @@ declare const useButton: (props?: BaseButtonProps) => {
22
22
  text?: boolean | undefined;
23
23
  outline?: boolean | undefined;
24
24
  type?: import("./use-button.type").ButtonType | undefined;
25
- size?: "small" | "default" | "large" | undefined;
25
+ size?: "small" | "large" | "default" | undefined;
26
26
  space?: boolean | undefined;
27
27
  shape?: import("./use-button.type").ButtonShape | undefined;
28
28
  buttonRef?: React.Ref<HTMLButtonElement> | undefined;
@@ -4,6 +4,18 @@ export interface UseCarouselProps {
4
4
  * 自动播放间隔时间, 等于0 不自动播放
5
5
  */
6
6
  interval?: number;
7
+ /**
8
+ * 默认当前索引(非受控模式)
9
+ */
10
+ defaultValue?: number;
11
+ /**
12
+ * 当前索引(受控模式)
13
+ */
14
+ value?: number;
15
+ /**
16
+ * 当前索引变化回调
17
+ */
18
+ onChange?: (current: number) => void;
7
19
  onMove?: (current: number, extra: {
8
20
  prev: number;
9
21
  direction: 'forward' | 'backward';
@@ -1 +1 @@
1
- {"version":3,"file":"use-carousel.d.ts","sourceRoot":"","sources":["use-carousel.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,CACP,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;QAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,KACtF,IAAI,CAAC;CACX;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5D,QAAA,MAAM,WAAW,UAAW,gBAAgB;;;;;;;;;oBAcV,MAAM;;CAmEvC,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"use-carousel.d.ts","sourceRoot":"","sources":["use-carousel.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,CACP,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;QAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,KACtF,IAAI,CAAC;CACX;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5D,QAAA,MAAM,WAAW,UAAW,gBAAgB;;;;;;;;;oBAyCV,MAAM;;CA4FvC,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -10,9 +10,21 @@ import useLatestObj from "../../common/use-latest-obj";
10
10
  var useCarousel = function useCarousel(props) {
11
11
  var total = props.total,
12
12
  _props$interval = props.interval,
13
- interval = _props$interval === void 0 ? 0 : _props$interval;
13
+ interval = _props$interval === void 0 ? 0 : _props$interval,
14
+ _props$defaultValue = props.defaultValue,
15
+ defaultValue = _props$defaultValue === void 0 ? 0 : _props$defaultValue,
16
+ valueProp = props.value,
17
+ onChange = props.onChange;
18
+
19
+ // 规范化初始值,确保在有效范围内
20
+ var normalizeIndex = function normalizeIndex(index) {
21
+ if (index < 0) return 0;
22
+ if (index >= total) return Math.max(0, total - 1);
23
+ return index;
24
+ };
25
+ var initialValue = normalizeIndex(valueProp !== undefined ? valueProp : defaultValue);
14
26
  var _useState = useState({
15
- current: 0,
27
+ current: initialValue,
16
28
  pre: -1,
17
29
  direction: 'stop'
18
30
  }),
@@ -25,14 +37,32 @@ var useCarousel = function useCarousel(props) {
25
37
  var _useRef = useRef({
26
38
  timer: null,
27
39
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
28
- setNext: function setNext(next) {}
40
+ setNext: function setNext(next) {},
41
+ prevValue: initialValue // 用于追踪上一次的值
29
42
  }),
30
43
  context = _useRef.current;
44
+
45
+ // 判断是否为受控模式
46
+ var isControlled = valueProp !== undefined;
47
+ // 获取实际使用的 current 值
48
+ var actualCurrent = isControlled ? normalizeIndex(valueProp) : current;
49
+
50
+ // 在受控模式下,计算 direction 和 pre
51
+ var actualPre = pre;
52
+ var actualDirection = direction;
53
+ if (isControlled) {
54
+ if (actualCurrent !== context.prevValue) {
55
+ actualPre = context.prevValue;
56
+ actualDirection = actualCurrent > context.prevValue ? 'forward' : 'backward';
57
+ context.prevValue = actualCurrent;
58
+ }
59
+ }
31
60
  var autoPlay = interval > 0 && total > 1;
32
61
  var moveTo = usePersistFn(function (i) {
33
62
  var next = i;
34
- if (next === current) return;
35
- var dir = next > current ? 'forward' : 'backward';
63
+ var prevCurrent = actualCurrent;
64
+ if (next === prevCurrent) return;
65
+ var dir = next > prevCurrent ? 'forward' : 'backward';
36
66
  if (next >= total) {
37
67
  dir = 'forward';
38
68
  next = 0;
@@ -40,14 +70,26 @@ var useCarousel = function useCarousel(props) {
40
70
  dir = 'backward';
41
71
  next = total - 1;
42
72
  }
43
- setState({
44
- current: next,
45
- pre: current,
46
- direction: dir
47
- });
73
+
74
+ // 非受控模式下更新内部状态
75
+ if (!isControlled) {
76
+ setState({
77
+ current: next,
78
+ pre: prevCurrent,
79
+ direction: dir
80
+ });
81
+ }
82
+ // 受控模式下不更新内部状态,由外部 value 控制
83
+
84
+ // 触发 onChange 回调
85
+ if (onChange) {
86
+ onChange(next);
87
+ }
88
+
89
+ // 触发 onMove 回调(向后兼容)
48
90
  if (props.onMove) {
49
91
  props.onMove(next, {
50
- prev: current,
92
+ prev: prevCurrent,
51
93
  direction: dir,
52
94
  moveTo: moveTo
53
95
  });
@@ -69,13 +111,13 @@ var useCarousel = function useCarousel(props) {
69
111
  });
70
112
  context.setNext = setNext;
71
113
  var start = usePersistFn(function () {
72
- setNext(current + 1);
114
+ setNext(actualCurrent + 1);
73
115
  });
74
116
  var forward = usePersistFn(function () {
75
- moveTo(current + 1);
117
+ moveTo(actualCurrent + 1);
76
118
  });
77
119
  var backward = usePersistFn(function () {
78
- moveTo(current - 1);
120
+ moveTo(actualCurrent - 1);
79
121
  });
80
122
  var func = useLatestObj({
81
123
  start: start,
@@ -89,10 +131,18 @@ var useCarousel = function useCarousel(props) {
89
131
  start();
90
132
  }
91
133
  }, []);
134
+
135
+ // 受控模式下,当外部 value 变化时,重置自动轮播定时器
136
+ useEffect(function () {
137
+ if (isControlled && autoPlay && valueProp !== undefined) {
138
+ stop();
139
+ context.setNext(actualCurrent + 1);
140
+ }
141
+ }, [valueProp]);
92
142
  return {
93
- current: current,
94
- pre: pre,
95
- direction: direction,
143
+ current: actualCurrent,
144
+ pre: actualPre,
145
+ direction: actualDirection,
96
146
  func: func
97
147
  };
98
148
  };
@@ -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;;;;;;;;;;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"}
1
+ {"version":3,"file":"use-date.d.ts","sourceRoot":"","sources":["use-date.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAW/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"}
@@ -23,17 +23,17 @@ var useDate = function useDate(props) {
23
23
  }),
24
24
  context = _useRef.current;
25
25
  var current = props.current === undefined || !props.current ? currentState : props.current;
26
- var setCurrent = function setCurrent(date) {
26
+ var setCurrent = function setCurrent(date, type) {
27
27
  var _props$onCurrentChang2;
28
28
  if (props.current !== undefined) {
29
29
  var _props$onCurrentChang;
30
- (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date);
30
+ (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date, type);
31
31
  } else {
32
32
  if (date) {
33
33
  setCurrentState(date);
34
34
  }
35
35
  }
36
- (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date);
36
+ (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date, type);
37
37
  };
38
38
  var isToday = function isToday(date) {
39
39
  var today = utils.newDate(undefined, options);
@@ -55,19 +55,19 @@ var useDate = function useDate(props) {
55
55
  }, [options.weekStartsOn]);
56
56
  var handleNextYear = usePersistFn(function () {
57
57
  var date = utils.addYears(current, 1, options);
58
- setCurrent(date);
58
+ setCurrent(date, 'year');
59
59
  });
60
60
  var handlePrevYear = usePersistFn(function () {
61
61
  var date = utils.addYears(current, -1, options);
62
- setCurrent(date);
62
+ setCurrent(date, 'year');
63
63
  });
64
64
  var handleNextMonth = usePersistFn(function () {
65
65
  var date = utils.addMonths(current, 1, options);
66
- setCurrent(date);
66
+ setCurrent(date, 'month');
67
67
  });
68
68
  var handlePrevMonth = usePersistFn(function () {
69
69
  var date = utils.addMonths(current, -1, options);
70
- setCurrent(date);
70
+ setCurrent(date, 'month');
71
71
  });
72
72
  var isCurrentMonth = function isCurrentMonth(date) {
73
73
  return utils.isSameMonth(date, current, options);
@@ -1,9 +1,10 @@
1
+ import { DatePickerAreaType } from './use-datepicker-format.type';
1
2
  export interface UseDateProps {
2
3
  current?: Date;
3
4
  range?: boolean | number;
4
5
  rangeDate?: Array<Date | undefined>;
5
6
  defaultCurrent?: Date;
6
- onCurrentChange?: (date: Date) => void;
7
+ onCurrentChange?: (date: Date, type?: DatePickerAreaType) => void;
7
8
  onClearInputArr: (index?: number | undefined) => void;
8
9
  value?: Date;
9
10
  allowSingle?: boolean;
@@ -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,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"}
1
+ {"version":3,"file":"use-date.type.d.ts","sourceRoot":"","sources":["use-date.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,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,EAAE,IAAI,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClE,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"}
@@ -12,8 +12,8 @@ declare const useRangePick: (props: useRangeProps) => {
12
12
  setModeEnd: (m: any) => void;
13
13
  setDateStart: (date: Date, noClose?: boolean) => void;
14
14
  setDateEnd: (date: Date, noClose?: boolean) => void;
15
- setCurrentStart: (date: Date, ...args: any[]) => void;
16
- setCurrentEnd: (date: Date, ...args: any[]) => void;
15
+ setCurrentStart: (date: Date, type?: string) => void;
16
+ setCurrentEnd: (date: Date, type?: string) => void;
17
17
  setTargetStart: (date?: Date) => void;
18
18
  setTargetEnd: (date?: Date) => void;
19
19
  startDisabled: (date: Date) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"use-datepicker-range.d.ts","sourceRoot":"","sources":["use-datepicker-range.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D,QAAA,MAAM,YAAY,UAAW,aAAa;;;;;;;;;;;6BA2FC,IAAI,YAAY,OAAO;2BAKzB,IAAI,YAAY,OAAO;gCAblB,IAAI,WAAW,GAAG,EAAE;8BAItB,IAAI,WAAW,GAAG,EAAE;gCAclB,IAAI;8BA4BN,IAAI;8BAqBJ,IAAI;4BAeN,IAAI;+BA5DD,IAAI;6BAYN,IAAI;;CA2I9C,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"use-datepicker-range.d.ts","sourceRoot":"","sources":["use-datepicker-range.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D,QAAA,MAAM,YAAY,UAAW,aAAa;;;;;;;;;;;6BA2FC,IAAI,YAAY,OAAO;2BAKzB,IAAI,YAAY,OAAO;gCAblB,IAAI,SAAS,MAAM;8BAIrB,IAAI,SAAS,MAAM;gCAcjB,IAAI;8BA4BN,IAAI;8BAqBJ,IAAI;4BAeN,IAAI;+BA5DD,IAAI;6BAYN,IAAI;;CA2I9C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -51,11 +51,8 @@ var useRangePick = function useRangePick(props) {
51
51
  return newArr;
52
52
  });
53
53
  };
54
- var setCurrent = usePersistFn(function (index, date) {
55
- for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
56
- args[_key - 2] = arguments[_key];
57
- }
58
- props.setCurrentArr.apply(props, [function (arr) {
54
+ var setCurrent = usePersistFn(function (index, date, type) {
55
+ props.setCurrentArr(function (arr) {
59
56
  var newArr = _toConsumableArray(arr);
60
57
  newArr[index] = date;
61
58
  var modeCache = context.modeCache;
@@ -81,19 +78,13 @@ var useRangePick = function useRangePick(props) {
81
78
  }
82
79
  }
83
80
  return newArr;
84
- }].concat(args));
81
+ }, type, undefined);
85
82
  });
86
- var setCurrentStart = usePersistFn(function (date) {
87
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
88
- args[_key2 - 1] = arguments[_key2];
89
- }
90
- setCurrent.apply(void 0, [0, date].concat(args));
83
+ var setCurrentStart = usePersistFn(function (date, type) {
84
+ setCurrent(0, date, type);
91
85
  });
92
- var setCurrentEnd = usePersistFn(function (date) {
93
- for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
94
- args[_key3 - 1] = arguments[_key3];
95
- }
96
- setCurrent.apply(void 0, [1, date].concat(args));
86
+ var setCurrentEnd = usePersistFn(function (date, type) {
87
+ setCurrent(1, date, type);
97
88
  });
98
89
  var setDateStart = usePersistFn(function (date, noClose) {
99
90
  setDate(0, date, noClose);
@@ -1 +1 @@
1
- {"version":3,"file":"use-month.d.ts","sourceRoot":"","sources":["use-month.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAajD,QAAA,MAAM,QAAQ,UAAW,aAAa;;;;;;;sBAuBf,IAAI;2BAkCC,IAAI;yBAQN,IAAI;0BAgBH,IAAI;iCAPG,IAAI,YAAW,OAAO;4BAJ3B,IAAI;;CAwChC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"use-month.d.ts","sourceRoot":"","sources":["use-month.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAcjD,QAAA,MAAM,QAAQ,UAAW,aAAa;;;;;;;sBAuBf,IAAI;2BAkCC,IAAI;yBAQN,IAAI;0BAgBH,IAAI;iCAPG,IAAI,YAAW,OAAO;4BAJ3B,IAAI;;CAwChC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -24,15 +24,15 @@ var useMonth = function useMonth(props) {
24
24
  context = _useRef.current;
25
25
  var current = props.current === undefined ? currentState : props.current;
26
26
  var startYear = utils.getDateInfo(current, 'year', options);
27
- var setCurrent = function setCurrent(date) {
27
+ var setCurrent = function setCurrent(date, type) {
28
28
  var _props$onCurrentChang2;
29
29
  if (props.current !== undefined) {
30
30
  var _props$onCurrentChang;
31
- (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date);
31
+ (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date, type);
32
32
  } else {
33
33
  setCurrentState(date);
34
34
  }
35
- (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date);
35
+ (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date, type);
36
36
  };
37
37
  var isNow = function isNow(date) {
38
38
  var today = utils.newDate(undefined, options);
@@ -54,11 +54,11 @@ var useMonth = function useMonth(props) {
54
54
  };
55
55
  var handleNext = usePersistFn(function () {
56
56
  var date = utils.addYears(current, 1, options);
57
- setCurrent(date);
57
+ setCurrent(date, 'year');
58
58
  });
59
59
  var handlePrev = usePersistFn(function () {
60
60
  var date = utils.addYears(current, -1, options);
61
- setCurrent(date);
61
+ setCurrent(date, 'year');
62
62
  });
63
63
  var isDisabled = function isDisabled(date) {
64
64
  var min = props.min,
@@ -1,8 +1,9 @@
1
+ import { DatePickerAreaType } from './use-datepicker-format.type';
1
2
  export interface UseMonthProps {
2
3
  current?: Date;
3
4
  rangeDate?: Array<Date | undefined>;
4
5
  defaultCurrent?: Date;
5
- onCurrentChange?: (date: Date) => void;
6
+ onCurrentChange?: (date: Date, type?: DatePickerAreaType) => void;
6
7
  value?: Date;
7
8
  onChange?: (date: Date, onClose?: boolean) => void;
8
9
  min?: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"use-month.type.d.ts","sourceRoot":"","sources":["use-month.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,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,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,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH"}
1
+ {"version":3,"file":"use-month.type.d.ts","sourceRoot":"","sources":["use-month.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClE,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,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/C,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-quarter.d.ts","sourceRoot":"","sources":["use-quarter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAajD,QAAA,MAAM,UAAU,UAAW,aAAa;;;;;;;sBAuBjB,IAAI;2BAiCC,IAAI;yBAQN,IAAI;0BAgBH,IAAI;mCAPK,IAAI,YAAY,OAAO;8BAJ5B,IAAI;;CAwClC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"use-quarter.d.ts","sourceRoot":"","sources":["use-quarter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAcjD,QAAA,MAAM,UAAU,UAAW,aAAa;;;;;;;sBAuBjB,IAAI;2BAiCC,IAAI;yBAQN,IAAI;0BAgBH,IAAI;mCAPK,IAAI,YAAY,OAAO;8BAJ5B,IAAI;;CAwClC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -24,15 +24,15 @@ var useQuarter = function useQuarter(props) {
24
24
  context = _useRef.current;
25
25
  var current = props.current === undefined ? currentState : props.current;
26
26
  var startYear = utils.getDateInfo(current, 'year', options);
27
- var setCurrent = function setCurrent(date) {
27
+ var setCurrent = function setCurrent(date, type) {
28
28
  var _props$onCurrentChang2;
29
29
  if (props.current !== undefined) {
30
30
  var _props$onCurrentChang;
31
- (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date);
31
+ (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date, type);
32
32
  } else {
33
33
  setCurrentState(date);
34
34
  }
35
- (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date);
35
+ (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date, type);
36
36
  };
37
37
  var isNow = function isNow(date) {
38
38
  var today = utils.newDate(undefined, options);
@@ -53,11 +53,11 @@ var useQuarter = function useQuarter(props) {
53
53
  };
54
54
  var handleNext = usePersistFn(function () {
55
55
  var date = utils.addYears(current, 1, options);
56
- setCurrent(date);
56
+ setCurrent(date, 'year');
57
57
  });
58
58
  var handlePrev = usePersistFn(function () {
59
59
  var date = utils.addYears(current, -1, options);
60
- setCurrent(date);
60
+ setCurrent(date, 'year');
61
61
  });
62
62
  var isDisabled = function isDisabled(date) {
63
63
  var min = props.min,
@@ -1 +1 @@
1
- {"version":3,"file":"use-year.d.ts","sourceRoot":"","sources":["use-year.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAW/C,QAAA,MAAM,OAAO,UAAW,YAAY;;;;;;;;;sBAsBb,IAAI;2BA8BC,IAAI;yBAQN,IAAI;0BAgBH,IAAI;gCAPE,IAAI,YAAY,OAAO;2BAJ5B,IAAI;;CA4C/B,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"use-year.d.ts","sourceRoot":"","sources":["use-year.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAY/C,QAAA,MAAM,OAAO,UAAW,YAAY;;;;;;;;;sBAsBb,IAAI;2BA8BC,IAAI;yBAQN,IAAI;0BAgBH,IAAI;gCAPE,IAAI,YAAY,OAAO;2BAJ5B,IAAI;;CA4C/B,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -22,15 +22,15 @@ var useYear = function useYear(props) {
22
22
  context = _useRef.current;
23
23
  var current = props.current === undefined ? currentState : props.current;
24
24
  var startYear = utils.getStartYear(current, options);
25
- var setCurrent = function setCurrent(date) {
25
+ var setCurrent = function setCurrent(date, type) {
26
26
  var _props$onCurrentChang2;
27
27
  if (props.current !== undefined) {
28
28
  var _props$onCurrentChang;
29
- (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date);
29
+ (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date, type);
30
30
  } else {
31
31
  setCurrentState(date);
32
32
  }
33
- (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date);
33
+ (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date, type);
34
34
  };
35
35
  var isNow = function isNow(date) {
36
36
  var today = utils.newDate(undefined, options);
@@ -52,11 +52,11 @@ var useYear = function useYear(props) {
52
52
  };
53
53
  var handleNext = usePersistFn(function () {
54
54
  var date = utils.addYears(current, 10, options);
55
- setCurrent(date);
55
+ setCurrent(date, 'year');
56
56
  });
57
57
  var handlePrev = usePersistFn(function () {
58
58
  var date = utils.addYears(current, -10, options);
59
- setCurrent(date);
59
+ setCurrent(date, 'year');
60
60
  });
61
61
  var isDisabled = function isDisabled(date) {
62
62
  var min = props.min,