@canlooks/can-ui 0.0.42 → 0.0.43

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 (174) hide show
  1. package/dist/cjs/components/alert/alert.style.js +1 -0
  2. package/dist/cjs/components/checkboxBase/checkboxBase.js +1 -2
  3. package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.d.ts +0 -2
  4. package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.js +3 -3
  5. package/dist/cjs/components/clickAway/clickAway.d.ts +285 -1
  6. package/dist/cjs/components/clickAway/clickAway.js +1 -2
  7. package/dist/cjs/components/dataGrid/columnResize.js +5 -5
  8. package/dist/cjs/components/dataGrid/dataGrid.js +1 -1
  9. package/dist/cjs/components/dataGrid/dataGridRows.js +3 -1
  10. package/dist/cjs/components/descriptions/descriptionItem.d.ts +3 -3
  11. package/dist/cjs/components/draggable/draggable.d.ts +6 -6
  12. package/dist/cjs/components/draggable/draggable.js +13 -18
  13. package/dist/cjs/components/{image/imagePreview.d.ts → gallery/gallery.d.ts} +7 -3
  14. package/dist/cjs/components/gallery/gallery.js +165 -0
  15. package/dist/{esm/components/image/imagePreview.style.d.ts → cjs/components/gallery/gallery.style.d.ts} +3 -1
  16. package/dist/cjs/components/{image/imagePreview.style.js → gallery/gallery.style.js} +49 -13
  17. package/dist/cjs/components/gallery/imageItem.d.ts +14 -0
  18. package/dist/cjs/components/gallery/imageItem.js +51 -0
  19. package/dist/cjs/components/gallery/index.d.ts +1 -0
  20. package/dist/cjs/components/gallery/index.js +4 -0
  21. package/dist/cjs/components/image/image.d.ts +2 -2
  22. package/dist/cjs/components/image/image.js +3 -3
  23. package/dist/cjs/components/image/index.d.ts +0 -1
  24. package/dist/cjs/components/image/index.js +0 -1
  25. package/dist/cjs/components/overlayBase/overlayBase.js +1 -1
  26. package/dist/cjs/components/palette/palette.d.ts +3 -3
  27. package/dist/cjs/components/palette/palette.js +9 -9
  28. package/dist/cjs/components/pickerDialog/pickerDialog.style.js +6 -0
  29. package/dist/cjs/components/pinchable/index.d.ts +1 -0
  30. package/dist/cjs/components/pinchable/index.js +4 -0
  31. package/dist/cjs/components/pinchable/pinchable.d.ts +33 -0
  32. package/dist/cjs/components/pinchable/pinchable.js +160 -0
  33. package/dist/cjs/components/pinchable/pinchable.style.d.ts +6 -0
  34. package/dist/cjs/components/pinchable/pinchable.style.js +21 -0
  35. package/dist/cjs/components/placeholder/placeholder.style.js +1 -0
  36. package/dist/cjs/components/progress/progress.d.ts +1 -1
  37. package/dist/cjs/components/rating/rating.d.ts +2 -2
  38. package/dist/cjs/components/rating/rating.js +2 -5
  39. package/dist/cjs/components/rating/rating.style.js +1 -2
  40. package/dist/cjs/components/resizable/resizable.d.ts +2 -2
  41. package/dist/cjs/components/resizable/resizable.js +12 -12
  42. package/dist/cjs/components/scrollbar/scrollbar.d.ts +1 -1
  43. package/dist/cjs/components/scrollbar/scrollbar.js +6 -6
  44. package/dist/cjs/components/segmented/SegmentedOption.d.ts +1 -1
  45. package/dist/cjs/components/selectedList/selectedItem.js +1 -1
  46. package/dist/cjs/components/selectedList/selectedList.style.js +1 -1
  47. package/dist/cjs/components/skeleton/skeleton.d.ts +1 -1
  48. package/dist/cjs/components/slidableActions/slidableActions.d.ts +9 -5
  49. package/dist/cjs/components/slidableActions/slidableActions.js +21 -25
  50. package/dist/cjs/components/slidableActions/slidableActions.style.d.ts +1 -1
  51. package/dist/cjs/components/slidableActions/slidableActions.style.js +14 -13
  52. package/dist/cjs/components/slidableActions/slidableActionsAction.d.ts +4 -2
  53. package/dist/cjs/components/slidableActions/slidableActionsAction.js +6 -2
  54. package/dist/cjs/components/slider/slider.d.ts +3 -3
  55. package/dist/cjs/components/slider/slider.js +8 -8
  56. package/dist/cjs/components/tabs/tabs.js +1 -1
  57. package/dist/cjs/components/theme/themeVariables.js +1 -1
  58. package/dist/cjs/components/upload/itemStatus.d.ts +1 -1
  59. package/dist/cjs/components/upload/itemStatus.js +3 -0
  60. package/dist/cjs/components/upload/upload.d.ts +3 -3
  61. package/dist/cjs/components/upload/upload.js +1 -1
  62. package/dist/cjs/extensions/documentViewer/documentViewer.js +1 -2
  63. package/dist/cjs/index.d.ts +2 -0
  64. package/dist/cjs/index.js +2 -0
  65. package/dist/cjs/utils/dnd.d.ts +0 -42
  66. package/dist/cjs/utils/dnd.js +0 -121
  67. package/dist/cjs/utils/gesture.d.ts +69 -0
  68. package/dist/cjs/utils/gesture.js +250 -0
  69. package/dist/cjs/utils/index.d.ts +1 -0
  70. package/dist/cjs/utils/index.js +1 -0
  71. package/dist/cjs/utils/style.js +1 -1
  72. package/dist/cjs/utils/utils.d.ts +0 -2
  73. package/dist/cjs/utils/utils.js +0 -2
  74. package/dist/esm/components/alert/alert.style.js +1 -0
  75. package/dist/esm/components/checkboxBase/checkboxBase.js +1 -2
  76. package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.d.ts +0 -2
  77. package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.js +4 -4
  78. package/dist/esm/components/clickAway/clickAway.d.ts +285 -1
  79. package/dist/esm/components/clickAway/clickAway.js +2 -3
  80. package/dist/esm/components/dataGrid/columnResize.js +6 -6
  81. package/dist/esm/components/dataGrid/dataGrid.js +1 -1
  82. package/dist/esm/components/dataGrid/dataGridRows.js +3 -1
  83. package/dist/esm/components/descriptions/descriptionItem.d.ts +3 -3
  84. package/dist/esm/components/draggable/draggable.d.ts +6 -6
  85. package/dist/esm/components/draggable/draggable.js +14 -19
  86. package/dist/esm/components/{image/imagePreview.d.ts → gallery/gallery.d.ts} +7 -3
  87. package/dist/esm/components/gallery/gallery.js +162 -0
  88. package/dist/{cjs/components/image/imagePreview.style.d.ts → esm/components/gallery/gallery.style.d.ts} +3 -1
  89. package/dist/esm/components/{image/imagePreview.style.js → gallery/gallery.style.js} +49 -13
  90. package/dist/esm/components/gallery/imageItem.d.ts +14 -0
  91. package/dist/esm/components/gallery/imageItem.js +48 -0
  92. package/dist/esm/components/gallery/index.d.ts +1 -0
  93. package/dist/esm/components/gallery/index.js +1 -0
  94. package/dist/esm/components/image/image.d.ts +2 -2
  95. package/dist/esm/components/image/image.js +3 -3
  96. package/dist/esm/components/image/index.d.ts +0 -1
  97. package/dist/esm/components/image/index.js +0 -1
  98. package/dist/esm/components/overlayBase/overlayBase.js +1 -1
  99. package/dist/esm/components/palette/palette.d.ts +3 -3
  100. package/dist/esm/components/palette/palette.js +10 -10
  101. package/dist/esm/components/pickerDialog/pickerDialog.style.js +6 -0
  102. package/dist/esm/components/pinchable/index.d.ts +1 -0
  103. package/dist/esm/components/pinchable/index.js +1 -0
  104. package/dist/esm/components/pinchable/pinchable.d.ts +33 -0
  105. package/dist/esm/components/pinchable/pinchable.js +157 -0
  106. package/dist/esm/components/pinchable/pinchable.style.d.ts +6 -0
  107. package/dist/esm/components/pinchable/pinchable.style.js +18 -0
  108. package/dist/esm/components/placeholder/placeholder.style.js +1 -0
  109. package/dist/esm/components/progress/progress.d.ts +1 -1
  110. package/dist/esm/components/rating/rating.d.ts +2 -2
  111. package/dist/esm/components/rating/rating.js +2 -5
  112. package/dist/esm/components/rating/rating.style.js +1 -2
  113. package/dist/esm/components/resizable/resizable.d.ts +2 -2
  114. package/dist/esm/components/resizable/resizable.js +13 -13
  115. package/dist/esm/components/scrollbar/scrollbar.d.ts +1 -1
  116. package/dist/esm/components/scrollbar/scrollbar.js +7 -7
  117. package/dist/esm/components/segmented/SegmentedOption.d.ts +1 -1
  118. package/dist/esm/components/selectedList/selectedItem.js +1 -1
  119. package/dist/esm/components/selectedList/selectedList.style.js +1 -1
  120. package/dist/esm/components/skeleton/skeleton.d.ts +1 -1
  121. package/dist/esm/components/slidableActions/slidableActions.d.ts +9 -5
  122. package/dist/esm/components/slidableActions/slidableActions.js +22 -26
  123. package/dist/esm/components/slidableActions/slidableActions.style.d.ts +1 -1
  124. package/dist/esm/components/slidableActions/slidableActions.style.js +14 -13
  125. package/dist/esm/components/slidableActions/slidableActionsAction.d.ts +4 -2
  126. package/dist/esm/components/slidableActions/slidableActionsAction.js +6 -2
  127. package/dist/esm/components/slider/slider.d.ts +3 -3
  128. package/dist/esm/components/slider/slider.js +9 -9
  129. package/dist/esm/components/tabs/tabs.js +1 -1
  130. package/dist/esm/components/theme/themeVariables.js +1 -1
  131. package/dist/esm/components/upload/itemStatus.d.ts +1 -1
  132. package/dist/esm/components/upload/itemStatus.js +3 -0
  133. package/dist/esm/components/upload/upload.d.ts +3 -3
  134. package/dist/esm/components/upload/upload.js +1 -1
  135. package/dist/esm/extensions/documentViewer/documentViewer.js +2 -3
  136. package/dist/esm/index.d.ts +2 -0
  137. package/dist/esm/index.js +2 -0
  138. package/dist/esm/utils/dnd.d.ts +0 -42
  139. package/dist/esm/utils/dnd.js +0 -120
  140. package/dist/esm/utils/gesture.d.ts +69 -0
  141. package/dist/esm/utils/gesture.js +245 -0
  142. package/dist/esm/utils/index.d.ts +1 -0
  143. package/dist/esm/utils/index.js +1 -0
  144. package/dist/esm/utils/style.js +1 -1
  145. package/dist/esm/utils/utils.d.ts +0 -2
  146. package/dist/esm/utils/utils.js +0 -2
  147. package/documentation/dist/assets/{index-B6FOULC1.js → index-DXo4Z-bc.js} +1281 -1271
  148. package/documentation/dist/components/actionSheet.md +3 -3
  149. package/documentation/dist/components/autocomplete.md +10 -10
  150. package/documentation/dist/components/breadcrumb.md +1 -1
  151. package/documentation/dist/components/checkbox.md +24 -1
  152. package/documentation/dist/components/contextMenu.md +1 -1
  153. package/documentation/dist/components/counter.md +13 -13
  154. package/documentation/dist/components/dialog.md +3 -3
  155. package/documentation/dist/components/formDialog.md +6 -6
  156. package/documentation/dist/components/image.md +5 -3
  157. package/documentation/dist/components/menu.md +1 -1
  158. package/documentation/dist/components/pagination.md +15 -1
  159. package/documentation/dist/components/pickerDialog.md +56 -0
  160. package/documentation/dist/components/placeholder.md +30 -0
  161. package/documentation/dist/components/progress.md +43 -0
  162. package/documentation/dist/components/radio.md +37 -0
  163. package/documentation/dist/components/rating.md +35 -0
  164. package/documentation/dist/components/resizable.md +41 -0
  165. package/documentation/dist/components/scrollbar.md +31 -0
  166. package/documentation/dist/components/segmented.md +56 -0
  167. package/documentation/dist/components/select.md +30 -0
  168. package/documentation/dist/components/skeleton.md +26 -0
  169. package/documentation/dist/components/slidableActions.md +53 -0
  170. package/documentation/dist/guide/globalMethods.md +6 -6
  171. package/documentation/dist/index.html +1 -1
  172. package/package.json +6 -6
  173. package/dist/cjs/components/image/imagePreview.js +0 -63
  174. package/dist/esm/components/image/imagePreview.js +0 -60
@@ -9,29 +9,29 @@ exports.classes = (0, utils_1.defineInnerClasses)('slidable-actions', [
9
9
  'actionsLeft',
10
10
  'actionsRight',
11
11
  'actionItem',
12
- 'actionItemWrap',
12
+ 'actionItemButton',
13
13
  'actionItemIcon'
14
14
  ]);
15
15
  exports.style = (0, utils_1.defineCss)(({ background }) => (0, react_1.css) `
16
16
  position: relative;
17
17
  overflow: hidden;
18
-
18
+
19
19
  .${exports.classes.content} {
20
20
  touch-action: pan-y;
21
21
  position: relative;
22
22
  z-index: 1;
23
23
  }
24
-
24
+
25
25
  .${exports.classes.actions} {
26
26
  position: absolute;
27
27
  inset: 0;
28
-
28
+
29
29
  .${exports.classes.actionsLeft}, .${exports.classes.actionsRight} {
30
30
  width: 100%;
31
31
  height: 100%;
32
32
  position: absolute;
33
33
  top: 0;
34
-
34
+
35
35
  .${exports.classes.actionItem} {
36
36
  width: 100%;
37
37
  height: 100%;
@@ -41,34 +41,35 @@ exports.style = (0, utils_1.defineCss)(({ background }) => (0, react_1.css) `
41
41
  color: ${background.content};
42
42
  position: absolute;
43
43
  top: 0;
44
-
45
- .${exports.classes.actionItemWrap} {
44
+
45
+ .${exports.classes.actionItemButton} {
46
46
  flex: 1;
47
47
  display: flex;
48
48
  flex-direction: column;
49
49
  align-items: center;
50
50
  justify-content: center;
51
- padding: 0 18px;
51
+ padding: 0 18px;
52
+ border-radius: 0;
52
53
  }
53
-
54
+
54
55
  .${exports.classes.actionItemIcon} {
55
56
  display: flex;
56
57
  }
57
58
  }
58
59
  }
59
-
60
+
60
61
  .${exports.classes.actionsLeft} {
61
62
  right: 100%;
62
-
63
+
63
64
  .${exports.classes.actionItem} {
64
65
  align-items: flex-end;
65
66
  right: 0;
66
67
  }
67
68
  }
68
-
69
+
69
70
  .${exports.classes.actionsRight} {
70
71
  left: 100%;
71
-
72
+
72
73
  .${exports.classes.actionItem} {
73
74
  align-items: flex-start;
74
75
  left: 0;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { ColorPropsValue, DivProps } from '../../types';
3
3
  import { ButtonProps } from '../button';
4
4
  export interface SlidableActionsActionProps extends DivProps {
@@ -6,7 +6,9 @@ export interface SlidableActionsActionProps extends DivProps {
6
6
  label?: ReactNode;
7
7
  icon?: ReactNode;
8
8
  buttonProps?: Omit<ButtonProps, 'onClick'>;
9
+ /** 点击action后是否自动归位,默认为`true` */
10
+ autoReturn?: boolean;
9
11
  /** @private */
10
12
  _index?: number;
11
13
  }
12
- export declare const SlidableActionsAction: import("react").MemoExoticComponent<({ color, label, icon, buttonProps, _index, ...props }: SlidableActionsActionProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
14
+ export declare const SlidableActionsAction: React.MemoExoticComponent<({ color, label, icon, buttonProps, _index, ...props }: SlidableActionsActionProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
@@ -9,7 +9,7 @@ const utils_1 = require("../../utils");
9
9
  const theme_1 = require("../theme");
10
10
  const slidableActions_1 = require("./slidableActions");
11
11
  exports.SlidableActionsAction = (0, react_1.memo)(({ color = 'default', label, icon, buttonProps, _index, ...props }) => {
12
- const { actionsContainer, translate, maxDistance } = (0, slidableActions_1.useSlidableActionsContext)();
12
+ const { actionsContainer, translate, resetTranslate, maxDistance, autoReturn } = (0, slidableActions_1.useSlidableActionsContext)();
13
13
  const innerButtonRef = (0, react_1.useRef)(null);
14
14
  (0, react_1.useEffect)(() => {
15
15
  actionsContainer[_index] = innerButtonRef.current;
@@ -32,8 +32,12 @@ exports.SlidableActionsAction = (0, react_1.memo)(({ color = 'default', label, i
32
32
  ? '#aaaaaa'
33
33
  : (0, utils_1.colorTransfer)(color, theme);
34
34
  }, [color, theme]);
35
+ const clickHandler = (e) => {
36
+ props.onClick?.(e);
37
+ autoReturn && resetTranslate();
38
+ };
35
39
  return ((0, jsx_runtime_1.jsx)("div", { ...props, className: slidableActions_style_1.classes.actionItem, style: {
36
40
  translate: `${currentTranslate}px 0`,
37
41
  backgroundColor
38
- }, children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...buttonProps, ref: (0, utils_1.cloneRef)(buttonProps?.ref, innerButtonRef), className: (0, utils_1.clsx)(slidableActions_style_1.classes.actionItemWrap, buttonProps?.className), prefix: icon, variant: "plain", color: "#ffffff", children: label }) }));
42
+ }, onClick: clickHandler, children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...buttonProps, ref: (0, utils_1.cloneRef)(buttonProps?.ref, innerButtonRef), className: (0, utils_1.clsx)(slidableActions_style_1.classes.actionItemButton, buttonProps?.className), prefix: icon, color: color, variant: "flatted", children: label }) }));
39
43
  });
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode, JSX } from 'react';
2
- import { DraggableOptions } from '../../utils';
2
+ import { GestureOptions } from '../../utils';
3
3
  import { ColorPropsValue, DivProps } from '../../types';
4
4
  import { TooltipProps } from '../tooltip';
5
5
  export interface MarkItem extends DivProps {
@@ -41,7 +41,7 @@ interface SliderBaseProps extends Omit<DivProps, 'defaultValue' | 'onChange' | '
41
41
  markLabelOffset?: number;
42
42
  markSize?: number;
43
43
  disableTrack?: boolean;
44
- draggableOptions?: DraggableOptions;
44
+ gestureOptions?: GestureOptions;
45
45
  }
46
46
  export interface SliderSingleProps extends SliderBaseProps {
47
47
  defaultValue?: number;
@@ -58,5 +58,5 @@ export interface SliderRangeProps extends SliderBaseProps {
58
58
  suffix?: ReactNode | ((value: [number, number]) => ReactNode);
59
59
  }
60
60
  export type SliderProps = SliderSingleProps | SliderRangeProps;
61
- export declare const Slider: import("react").MemoExoticComponent<({ color, orientation, variant, inset, railSize, railProps, renderRail, handleSize, handleProps, disableHandleOutline, renderHandle, tooltipProps, min, max, step, marks, markLabelOffset, prefix, suffix, disableTrack, draggableOptions, defaultValue, value, onChange, ...props }: SliderProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
61
+ export declare const Slider: import("react").MemoExoticComponent<({ color, orientation, variant, inset, railSize, railProps, renderRail, handleSize, handleProps, disableHandleOutline, renderHandle, tooltipProps, min, max, step, marks, markLabelOffset, prefix, suffix, disableTrack, gestureOptions, defaultValue, value, onChange, ...props }: SliderProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
62
62
  export {};
@@ -8,7 +8,7 @@ const utils_1 = require("../../utils");
8
8
  const slider_style_1 = require("./slider.style");
9
9
  const tooltip_1 = require("../tooltip");
10
10
  const theme_1 = require("../theme");
11
- exports.Slider = (0, react_2.memo)(({ color = 'primary', orientation = 'horizontal', variant = 'filled', inset, railSize = inset ? 14 : 4, railProps, renderRail, handleSize = 14, handleProps, disableHandleOutline, renderHandle, tooltipProps, min = 0, max = 100, step = 1, marks, markLabelOffset, prefix, suffix, disableTrack, draggableOptions, defaultValue = min, value, onChange, ...props }) => {
11
+ exports.Slider = (0, react_2.memo)(({ color = 'primary', orientation = 'horizontal', variant = 'filled', inset, railSize = inset ? 14 : 4, railProps, renderRail, handleSize = 14, handleProps, disableHandleOutline, renderHandle, tooltipProps, min = 0, max = 100, step = 1, marks, markLabelOffset, prefix, suffix, disableTrack, gestureOptions, defaultValue = min, value, onChange, ...props }) => {
12
12
  const { spacing } = (0, theme_1.useTheme)();
13
13
  markLabelOffset ??= inset ? spacing[1] : spacing[2];
14
14
  const orderedMarks = (0, react_2.useMemo)(() => {
@@ -90,10 +90,10 @@ exports.Slider = (0, react_2.memo)(({ color = 'primary', orientation = 'horizont
90
90
  const railRef = (0, react_2.useRef)(null);
91
91
  const handleRefs = (0, react_2.useRef)([]);
92
92
  const dragStartData = (0, react_2.useRef)(void 0);
93
- const draggableHandle = (0, utils_1.useDraggableHandle)({
94
- ...draggableOptions,
93
+ const draggableHandles = (0, utils_1.useDraggable)({
94
+ ...gestureOptions,
95
95
  onDragStart(e) {
96
- draggableOptions?.onDragStart?.(e);
96
+ gestureOptions?.onDragStart?.(e);
97
97
  const railLength = orientation === 'horizontal' ? railRef.current.offsetWidth : railRef.current.offsetHeight;
98
98
  let handleIndex = 0;
99
99
  let percent;
@@ -150,9 +150,9 @@ exports.Slider = (0, react_2.memo)(({ color = 'primary', orientation = 'horizont
150
150
  dragStartData.current = { railLength, percent, handleIndex };
151
151
  },
152
152
  onDrag(info, e) {
153
- draggableOptions?.onDrag?.(info, e);
153
+ gestureOptions?.onDrag?.(info, e);
154
154
  const { percent, railLength, handleIndex } = dragStartData.current;
155
- const delta = orientation === 'horizontal' ? info.deltaX : -info.deltaY;
155
+ const delta = orientation === 'horizontal' ? info.diff[0] : -info.diff[1];
156
156
  setInnerValue(percentToValue(percent + delta / railLength * 100), handleIndex);
157
157
  }
158
158
  });
@@ -187,7 +187,7 @@ exports.Slider = (0, react_2.memo)(({ color = 'primary', orientation = 'horizont
187
187
  onPointerDown(e) {
188
188
  e.stopPropagation();
189
189
  handleProps?.onPointerDown?.(e);
190
- draggableHandle.onPointerDown(e);
190
+ draggableHandles.onPointerDown(e);
191
191
  }
192
192
  };
193
193
  return renderHandle
@@ -229,7 +229,7 @@ exports.Slider = (0, react_2.memo)(({ color = 'primary', orientation = 'horizont
229
229
  },
230
230
  onPointerDown: e => {
231
231
  railProps?.onPointerDown?.(e);
232
- draggableHandle.onPointerDown(e);
232
+ draggableHandles.onPointerDown(e);
233
233
  },
234
234
  children: ((0, jsx_runtime_1.jsxs)("div", { className: slider_style_1.classes.railWrap, children: [!disableTrack &&
235
235
  (0, jsx_runtime_1.jsx)("div", { className: slider_style_1.classes.track, style: valueIsArray
@@ -98,7 +98,7 @@ exports.Tabs = (0, react_1.memo)(({ tabs, labelKey = 'label', primaryKey = 'valu
98
98
  });
99
99
  };
100
100
  if (position === 'top' || position === 'bottom') {
101
- scroller.addEventListener('wheel', onWheel, { passive: false });
101
+ scroller.addEventListener('wheel', onWheel);
102
102
  }
103
103
  const resizeObserver = new ResizeObserver(setShadow);
104
104
  resizeObserver.observe(scroller);
@@ -109,7 +109,7 @@ exports.defaultBreakpoints = {
109
109
  sm: 600,
110
110
  md: 900,
111
111
  lg: 1200,
112
- xl: 1536
112
+ xl: 1500
113
113
  };
114
114
  exports.defaultFontFamily = `-apple-system, BlinkMacSystemFont, 'Segoe UI',
115
115
  Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Apple Color Emoji', 'Segoe UI Emoji',
@@ -1,7 +1,7 @@
1
1
  import { Dispatch, Ref, SetStateAction } from 'react';
2
2
  import { UploadSharedProps, UploadFile, UploadStatus } from './upload';
3
3
  export type ItemRef<R, A extends any[]> = {
4
- upload(...args: A): Promise<R>;
4
+ upload(...args: A): Promise<R | undefined>;
5
5
  setStatus: Dispatch<SetStateAction<UploadStatus>>;
6
6
  setProgress: Dispatch<SetStateAction<number>>;
7
7
  };
@@ -7,6 +7,9 @@ function useItemStatus(props) {
7
7
  props.file.url ||= URL.createObjectURL(props.file);
8
8
  }
9
9
  const upload = props.file.upload = async (...args) => {
10
+ if (!props.onUpload) {
11
+ return;
12
+ }
10
13
  try {
11
14
  setStatus('uploading');
12
15
  setProgress(0);
@@ -8,11 +8,11 @@ export interface UploadFile<R, A extends any[]> extends File {
8
8
  progress?: number;
9
9
  status?: UploadStatus;
10
10
  url?: string;
11
- upload?(...args: A): Promise<R>;
11
+ upload?(...args: A): Promise<R | undefined>;
12
12
  }
13
13
  export interface UploadSharedProps<R, A extends any[]> {
14
14
  type?: 'file' | 'image';
15
- onUpload(files: UploadFile<R, A>[], setProgress: Dispatch<SetStateAction<number>>, ...args: A): Promise<R>;
15
+ onUpload?(files: UploadFile<R, A>[], setProgress: Dispatch<SetStateAction<number>>, ...args: A): Promise<R>;
16
16
  }
17
17
  export interface UploadProps<R, A extends any[]> extends UploadSharedProps<R, A>, Omit<DivProps, 'defaultValue' | 'onChange'> {
18
18
  inputProps?: JSX.IntrinsicElements['input'];
@@ -37,7 +37,7 @@ export interface UploadProps<R, A extends any[]> extends UploadSharedProps<R, A>
37
37
  onChange?(value: UploadFile<R, A>[]): void;
38
38
  }
39
39
  export interface UploadRef<R = any, A extends any[] = any[]> extends HTMLDivElement {
40
- upload(...args: A): Promise<R>;
40
+ upload(...args: A): Promise<R | undefined>;
41
41
  }
42
42
  export declare const Upload: {
43
43
  <R, A extends any[]>(props: UploadProps<R, A>): ReactElement;
@@ -34,7 +34,7 @@ exports.Upload = (0, react_1.memo)(({ inputProps, type = 'file', accept = type =
34
34
  itemRef?.setProgress(0);
35
35
  }
36
36
  try {
37
- const ret = await onUpload(innerValue.current, progress => {
37
+ const ret = await onUpload?.(innerValue.current, progress => {
38
38
  for (const [, itemRef] of itemRefs.current) {
39
39
  itemRef?.setProgress(progress);
40
40
  }
@@ -13,7 +13,6 @@ const button_1 = require("../../components/button");
13
13
  const documentViewer_style_1 = require("./documentViewer.style");
14
14
  const utils_1 = require("../../utils");
15
15
  const pdfViewer_1 = require("./pdfViewer");
16
- const image_1 = require("../../components/image");
17
16
  const __1 = require("../..");
18
17
  const faDownload_1 = require("@fortawesome/free-solid-svg-icons/faDownload");
19
18
  exports.DocumentViewer = (0, react_1.memo)(({ src, filename, onError, type, extension, setDocumentTitle = true }) => {
@@ -65,7 +64,7 @@ exports.DocumentViewer = (0, react_1.memo)(({ src, filename, onError, type, exte
65
64
  }
66
65
  // image
67
66
  if (mimeType.includes('image/')) {
68
- return (0, jsx_runtime_1.jsx)(image_1.ImagePreview, { src: src, open: true, showClose: false });
67
+ return (0, jsx_runtime_1.jsx)(__1.Gallery, { src: src, open: true, showClose: false });
69
68
  }
70
69
  return empty;
71
70
  });
@@ -37,6 +37,7 @@ export * from './components/dropdown';
37
37
  export * from './components/flex';
38
38
  export * from './components/form';
39
39
  export * from './components/formDialog';
40
+ export * from './components/gallery';
40
41
  export * from './components/grid';
41
42
  export * from './components/highlight';
42
43
  export * from './components/image';
@@ -52,6 +53,7 @@ export * from './components/overlayBase';
52
53
  export * from './components/pagination';
53
54
  export * from './components/palette';
54
55
  export * from './components/pickerDialog';
56
+ export * from './components/pinchable';
55
57
  export * from './components/placeholder';
56
58
  export * from './components/popper';
57
59
  export * from './components/progress';
package/dist/cjs/index.js CHANGED
@@ -42,6 +42,7 @@ tslib_1.__exportStar(require("./components/dropdown"), exports);
42
42
  tslib_1.__exportStar(require("./components/flex"), exports);
43
43
  tslib_1.__exportStar(require("./components/form"), exports);
44
44
  tslib_1.__exportStar(require("./components/formDialog"), exports);
45
+ tslib_1.__exportStar(require("./components/gallery"), exports);
45
46
  tslib_1.__exportStar(require("./components/grid"), exports);
46
47
  tslib_1.__exportStar(require("./components/highlight"), exports);
47
48
  tslib_1.__exportStar(require("./components/image"), exports);
@@ -57,6 +58,7 @@ tslib_1.__exportStar(require("./components/overlayBase"), exports);
57
58
  tslib_1.__exportStar(require("./components/pagination"), exports);
58
59
  tslib_1.__exportStar(require("./components/palette"), exports);
59
60
  tslib_1.__exportStar(require("./components/pickerDialog"), exports);
61
+ tslib_1.__exportStar(require("./components/pinchable"), exports);
60
62
  tslib_1.__exportStar(require("./components/placeholder"), exports);
61
63
  tslib_1.__exportStar(require("./components/popper"), exports);
62
64
  tslib_1.__exportStar(require("./components/progress"), exports);
@@ -1,4 +1,3 @@
1
- import React, { HTMLAttributes } from 'react';
2
1
  import { DragEndEvent } from '@dnd-kit/core';
3
2
  import { Obj } from '../types';
4
3
  /**
@@ -12,44 +11,3 @@ export declare function useDndSensors(): import("@dnd-kit/core").SensorDescripto
12
11
  * @param primaryKey 索引用的主键
13
12
  */
14
13
  export declare function onDndDragEnd<S extends Obj>(e: DragEndEvent, prevState: S[], primaryKey?: string): S[] | undefined;
15
- export type DraggableOptions<T extends Element = Element, D = any> = {
16
- disabled?: boolean;
17
- /** 按下后经过一段时间才触发拖拽事件,单位ms */
18
- delay?: number;
19
- /** 拖拽一段距离后才触发拖拽事件,单位px */
20
- distance?: number;
21
- onDragStart?(e: React.PointerEvent<T>): D;
22
- onDrag?(info: DragInfo<D>, e: PointerEvent): void;
23
- onDragEnd?(info: DragEndInfo<D>): void;
24
- onDragCancel?(info: DragEndInfo<D>): void;
25
- /** 若设为true,则会禁用浏览器默认拖拽行为,通常在触屏端使用 */
26
- disableNativeTouchMove?: boolean;
27
- /** 托管原有的onPointerDown、onTouchStart、onClick事件 */
28
- onPointerDown?(e: React.PointerEvent<T>): void;
29
- onTouchStart?(e: React.TouchEvent<T>): void;
30
- onClick?(e: React.MouseEvent<T>): void;
31
- /** 若拖拽节点受zoom样式的影响,可传入zoom值修正 */
32
- zoom?: number;
33
- };
34
- export type DragInfo<T> = {
35
- /** 开始位置 */
36
- startX: number;
37
- startY: number;
38
- /** 当前位置 */
39
- currentX: number;
40
- currentY: number;
41
- /** 拖拽距离,往右下拖拽为正数,往左上拖拽为负数 */
42
- deltaX: number;
43
- deltaY: number;
44
- /** `onDragStart`的返回值 */
45
- startData: T | undefined;
46
- };
47
- export interface DragEndInfo<T> extends DragInfo<T> {
48
- /** 从按下到抬起经过的时长(ms) */
49
- duration: number;
50
- /** 拖拽速度(px/ms) */
51
- speedX: number;
52
- speedY: number;
53
- }
54
- export type HandleProps<T extends Element> = Required<Pick<HTMLAttributes<T>, 'onPointerDown' | 'onTouchStart' | 'onClick' | 'onDragStart'>>;
55
- export declare function useDraggableHandle<T extends Element, D = any>(options?: DraggableOptions<T, D>): HandleProps<T>;
@@ -2,12 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useDndSensors = useDndSensors;
4
4
  exports.onDndDragEnd = onDndDragEnd;
5
- exports.useDraggableHandle = useDraggableHandle;
6
- const react_1 = require("react");
7
- const hooks_1 = require("./hooks");
8
5
  const core_1 = require("@dnd-kit/core");
9
6
  const sortable_1 = require("@dnd-kit/sortable");
10
- const theme_1 = require("../components/theme");
11
7
  /**
12
8
  * 默认提供给@dnd-kit的sensors属性
13
9
  */
@@ -34,120 +30,3 @@ function onDndDragEnd(e, prevState, primaryKey = 'id') {
34
30
  const newIndex = prevState.findIndex(v => v[primaryKey] === over.id);
35
31
  return (0, sortable_1.arrayMove)(prevState, oldIndex, newIndex);
36
32
  }
37
- function useDraggableHandle(options = {}) {
38
- const { zoom } = (0, theme_1.useTheme)();
39
- options.zoom ||= zoom;
40
- const syncOptions = (0, hooks_1.useSync)(options);
41
- const preventDefaultCallback = (0, react_1.useRef)(void 0);
42
- const onTouchStart = (0, react_1.useCallback)(() => {
43
- if (syncOptions.current.disabled || !syncOptions.current.disableNativeTouchMove) {
44
- return;
45
- }
46
- addEventListener('touchmove', preventDefaultCallback.current = e => {
47
- e.cancelable && e.preventDefault();
48
- }, { passive: false });
49
- }, []);
50
- const startTime = (0, react_1.useRef)(0);
51
- const startPosition = (0, react_1.useRef)([0, 0]);
52
- const delay = (0, react_1.useRef)(void 0);
53
- const data = (0, react_1.useRef)(void 0);
54
- const onPointerDown = (0, react_1.useCallback)((e) => {
55
- if (syncOptions.current.disabled) {
56
- return;
57
- }
58
- isDragged.current = false;
59
- const dragStart = () => {
60
- startTime.current = Date.now();
61
- startPosition.current = [e.clientX, e.clientY];
62
- data.current = syncOptions.current.onDragStart?.(e);
63
- document.documentElement.style.userSelect = 'none';
64
- };
65
- if (syncOptions.current.delay) {
66
- delay.current = setTimeout(() => {
67
- delay.current = void 0;
68
- dragStart();
69
- }, syncOptions.current.delay);
70
- }
71
- else {
72
- dragStart();
73
- }
74
- addEventListener('pointermove', onPointerMove);
75
- addEventListener('pointerup', onPointerUp);
76
- addEventListener('pointercancel', onPointerCancel);
77
- }, []);
78
- const buildDragInfo = ({ clientX, clientY }) => {
79
- const [startX, startY] = startPosition.current;
80
- const deltaX = (clientX - startX) / (syncOptions.current.zoom);
81
- const deltaY = (clientY - startY) / (syncOptions.current.zoom);
82
- return {
83
- startX, startY,
84
- currentX: clientX, currentY: clientY,
85
- deltaX, deltaY,
86
- startData: data.current
87
- };
88
- };
89
- const onPointerMove = (e) => {
90
- e.preventDefault();
91
- const dragInfo = buildDragInfo(e);
92
- const absDeltaX = Math.abs(dragInfo.deltaX);
93
- const absDeltaY = Math.abs(dragInfo.deltaY);
94
- if (delay.current) {
95
- // 延迟尚未结束,但偏移量过大,取消拖拽
96
- (absDeltaX > 5 || absDeltaY > 5) && onPointerCancel(e);
97
- return;
98
- }
99
- const distance = syncOptions.current.distance || 0;
100
- if (absDeltaX < distance && absDeltaY < distance) {
101
- // 拖拽距离未达到起步距离
102
- return;
103
- }
104
- isDragged.current = true;
105
- syncOptions.current.onDrag?.(dragInfo, e);
106
- };
107
- const removeListener = () => {
108
- delay.current && clearTimeout(delay.current);
109
- delay.current = void 0;
110
- if (preventDefaultCallback.current) {
111
- removeEventListener('touchmove', preventDefaultCallback.current);
112
- preventDefaultCallback.current = void 0;
113
- }
114
- document.documentElement.style.userSelect = '';
115
- removeEventListener('pointermove', onPointerMove);
116
- removeEventListener('pointerup', onPointerUp);
117
- removeEventListener('pointercancel', onPointerCancel);
118
- };
119
- const buildDragEndInfo = (e) => {
120
- const dragInfo = buildDragInfo(e);
121
- const duration = Date.now() - startTime.current;
122
- return {
123
- ...dragInfo,
124
- duration,
125
- speedX: Math.abs(dragInfo.deltaX / duration),
126
- speedY: Math.abs(dragInfo.deltaY / duration)
127
- };
128
- };
129
- const onPointerUp = (e) => {
130
- removeListener();
131
- syncOptions.current.onDragEnd?.(buildDragEndInfo(e));
132
- };
133
- const onPointerCancel = (e) => {
134
- removeListener();
135
- const callback = syncOptions.current.onDragCancel || syncOptions.current.onDragEnd;
136
- callback?.(buildDragEndInfo(e));
137
- };
138
- const isDragged = (0, react_1.useRef)(false);
139
- const onClick = (0, react_1.useCallback)((e) => {
140
- if (isDragged.current) {
141
- // 已经触发了拖拽,避免触发点击事件
142
- e.preventDefault();
143
- e.stopPropagation();
144
- }
145
- else {
146
- syncOptions.current.onClick?.(e);
147
- }
148
- }, []);
149
- const onDragStart = (0, react_1.useCallback)((e) => {
150
- e.preventDefault();
151
- }, []);
152
- return { onTouchStart, onPointerDown, onClick, onDragStart };
153
- }
@@ -0,0 +1,69 @@
1
+ import React, { HTMLAttributes, MouseEventHandler } from 'react';
2
+ type Point = [number, number];
3
+ export type DragInfo<D = any> = {
4
+ /** 开始位置 */
5
+ start: Point;
6
+ /** 当前位置 */
7
+ current: Point;
8
+ /** 拖拽距离,往右下拖拽为正数,往左上拖拽为负数 */
9
+ diff: Point;
10
+ /** {@link GestureOptions.onDragStart}的返回值 */
11
+ data: D;
12
+ };
13
+ export interface DragEndInfo<D = any> extends DragInfo<D> {
14
+ /** 从按下到抬起经过的时长(ms) */
15
+ duration: number;
16
+ /** 拖拽速度(px/ms) */
17
+ speed: Point;
18
+ }
19
+ export type PinchStartInfo = {
20
+ /** 两指中点 */
21
+ startMiddle: Point;
22
+ /** 两指间距 */
23
+ startSpacing: number;
24
+ };
25
+ export interface PinchInfo<P = any> extends PinchStartInfo {
26
+ currentMiddle: Point;
27
+ diffMiddle: Point;
28
+ currentSpacing: number;
29
+ diffSpacing: number;
30
+ data: P;
31
+ }
32
+ type SharedGestureOptions = {
33
+ disabled?: boolean;
34
+ /** 通常无需使用,若元素受zoom样式的影响,可传入zoom值修正 */
35
+ zoom?: number;
36
+ /** 托管点击事件 */
37
+ onClick?: MouseEventHandler;
38
+ };
39
+ export interface DraggableGestureOptions<D = any> extends SharedGestureOptions {
40
+ /** 按下后经过一段时间才触发拖拽事件,单位ms */
41
+ delay?: number;
42
+ /** 拖拽一段距离后才触发拖拽事件,单位px */
43
+ distance?: number;
44
+ onDragStart?(e: React.PointerEvent): D;
45
+ onDrag?(info: DragInfo<D>, e: PointerEvent): void;
46
+ onDragEnd?(info: DragEndInfo<D>): void;
47
+ onDragCancel?(info: DragEndInfo<D>): void;
48
+ /** 若设为true,则会禁用浏览器默认拖拽行为,通常在触屏端使用,默认为`true` */
49
+ preventNativeTouchMove?: boolean;
50
+ }
51
+ export interface PinchableGestureOptions<P = any> extends SharedGestureOptions {
52
+ onPinchStart?(info: PinchStartInfo): P;
53
+ onPinch?(info: PinchInfo<P>): void;
54
+ onPinchEnd?(info: PinchInfo<P>): void;
55
+ }
56
+ export declare function useDraggable<D = any>({ disabled, ...options }: DraggableGestureOptions<D>): HandleProps;
57
+ export declare function usePinchable<P = any>({ disabled, ...options }: PinchableGestureOptions<P>): HandleProps;
58
+ export interface GestureOptions<D = any, P = any> extends Omit<DraggableGestureOptions<D>, 'disabled'>, Omit<PinchableGestureOptions<P>, 'disabled'> {
59
+ /** 是否可拖拽,默认为`true` */
60
+ draggable?: boolean;
61
+ /** 是否可捏合缩放,默认为`false` */
62
+ pinchable?: boolean;
63
+ }
64
+ export type HandleProps = Required<Pick<HTMLAttributes<Element>, 'onPointerDown'>> & Pick<HTMLAttributes<Element>, 'onTouchStart' | 'onClick'>;
65
+ export declare function useGesture<D = any, P = any>(options: GestureOptions<D, P>): {
66
+ draggableHandles: HandleProps;
67
+ pinchableHandles: HandleProps;
68
+ };
69
+ export {};