@canlooks/can-ui 0.0.42 → 0.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/alert/alert.style.js +1 -0
- package/dist/cjs/components/checkboxBase/checkboxBase.js +1 -2
- package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.d.ts +0 -2
- package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.js +3 -3
- package/dist/cjs/components/clickAway/clickAway.d.ts +285 -1
- package/dist/cjs/components/clickAway/clickAway.js +1 -2
- package/dist/cjs/components/dataGrid/columnResize.js +5 -5
- package/dist/cjs/components/dataGrid/dataGrid.js +1 -1
- package/dist/cjs/components/dataGrid/dataGridRows.js +3 -1
- package/dist/cjs/components/descriptions/descriptionItem.d.ts +3 -3
- package/dist/cjs/components/draggable/draggable.d.ts +6 -6
- package/dist/cjs/components/draggable/draggable.js +13 -18
- package/dist/cjs/components/{image/imagePreview.d.ts → gallery/gallery.d.ts} +7 -3
- package/dist/cjs/components/gallery/gallery.js +165 -0
- package/dist/{esm/components/image/imagePreview.style.d.ts → cjs/components/gallery/gallery.style.d.ts} +3 -1
- package/dist/cjs/components/{image/imagePreview.style.js → gallery/gallery.style.js} +49 -13
- package/dist/cjs/components/gallery/imageItem.d.ts +14 -0
- package/dist/cjs/components/gallery/imageItem.js +51 -0
- package/dist/cjs/components/gallery/index.d.ts +1 -0
- package/dist/cjs/components/gallery/index.js +4 -0
- package/dist/cjs/components/image/image.d.ts +2 -2
- package/dist/cjs/components/image/image.js +3 -3
- package/dist/cjs/components/image/index.d.ts +0 -1
- package/dist/cjs/components/image/index.js +0 -1
- package/dist/cjs/components/overlayBase/overlayBase.js +1 -1
- package/dist/cjs/components/palette/palette.d.ts +3 -3
- package/dist/cjs/components/palette/palette.js +9 -9
- package/dist/cjs/components/pickerDialog/pickerDialog.style.js +6 -0
- package/dist/cjs/components/pinchable/index.d.ts +1 -0
- package/dist/cjs/components/pinchable/index.js +4 -0
- package/dist/cjs/components/pinchable/pinchable.d.ts +33 -0
- package/dist/cjs/components/pinchable/pinchable.js +160 -0
- package/dist/cjs/components/pinchable/pinchable.style.d.ts +6 -0
- package/dist/cjs/components/pinchable/pinchable.style.js +21 -0
- package/dist/cjs/components/placeholder/placeholder.style.js +1 -0
- package/dist/cjs/components/progress/progress.d.ts +1 -1
- package/dist/cjs/components/rating/rating.d.ts +2 -2
- package/dist/cjs/components/rating/rating.js +2 -5
- package/dist/cjs/components/rating/rating.style.js +1 -2
- package/dist/cjs/components/resizable/resizable.d.ts +2 -2
- package/dist/cjs/components/resizable/resizable.js +12 -12
- package/dist/cjs/components/scrollbar/scrollbar.d.ts +1 -1
- package/dist/cjs/components/scrollbar/scrollbar.js +6 -6
- package/dist/cjs/components/segmented/SegmentedOption.d.ts +1 -1
- package/dist/cjs/components/selectedList/selectedItem.js +1 -1
- package/dist/cjs/components/selectedList/selectedList.style.js +1 -1
- package/dist/cjs/components/skeleton/skeleton.d.ts +1 -1
- package/dist/cjs/components/slidableActions/slidableActions.d.ts +9 -5
- package/dist/cjs/components/slidableActions/slidableActions.js +21 -25
- package/dist/cjs/components/slidableActions/slidableActions.style.d.ts +1 -1
- package/dist/cjs/components/slidableActions/slidableActions.style.js +14 -13
- package/dist/cjs/components/slidableActions/slidableActionsAction.d.ts +4 -2
- package/dist/cjs/components/slidableActions/slidableActionsAction.js +6 -2
- package/dist/cjs/components/slider/slider.d.ts +3 -3
- package/dist/cjs/components/slider/slider.js +8 -8
- package/dist/cjs/components/tabs/tabs.js +1 -1
- package/dist/cjs/components/theme/themeVariables.js +7 -7
- package/dist/cjs/components/upload/itemStatus.d.ts +1 -1
- package/dist/cjs/components/upload/itemStatus.js +3 -0
- package/dist/cjs/components/upload/upload.d.ts +3 -3
- package/dist/cjs/components/upload/upload.js +1 -1
- package/dist/cjs/extensions/documentViewer/documentViewer.js +1 -2
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/utils/dnd.d.ts +0 -42
- package/dist/cjs/utils/dnd.js +0 -121
- package/dist/cjs/utils/gesture.d.ts +69 -0
- package/dist/cjs/utils/gesture.js +250 -0
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/style.js +1 -1
- package/dist/cjs/utils/utils.d.ts +0 -2
- package/dist/cjs/utils/utils.js +0 -2
- package/dist/esm/components/alert/alert.style.js +1 -0
- package/dist/esm/components/checkboxBase/checkboxBase.js +1 -2
- package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.d.ts +0 -2
- package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.js +4 -4
- package/dist/esm/components/clickAway/clickAway.d.ts +285 -1
- package/dist/esm/components/clickAway/clickAway.js +2 -3
- package/dist/esm/components/dataGrid/columnResize.js +6 -6
- package/dist/esm/components/dataGrid/dataGrid.js +1 -1
- package/dist/esm/components/dataGrid/dataGridRows.js +3 -1
- package/dist/esm/components/descriptions/descriptionItem.d.ts +3 -3
- package/dist/esm/components/draggable/draggable.d.ts +6 -6
- package/dist/esm/components/draggable/draggable.js +14 -19
- package/dist/esm/components/{image/imagePreview.d.ts → gallery/gallery.d.ts} +7 -3
- package/dist/esm/components/gallery/gallery.js +162 -0
- package/dist/{cjs/components/image/imagePreview.style.d.ts → esm/components/gallery/gallery.style.d.ts} +3 -1
- package/dist/esm/components/{image/imagePreview.style.js → gallery/gallery.style.js} +49 -13
- package/dist/esm/components/gallery/imageItem.d.ts +14 -0
- package/dist/esm/components/gallery/imageItem.js +48 -0
- package/dist/esm/components/gallery/index.d.ts +1 -0
- package/dist/esm/components/gallery/index.js +1 -0
- package/dist/esm/components/image/image.d.ts +2 -2
- package/dist/esm/components/image/image.js +3 -3
- package/dist/esm/components/image/index.d.ts +0 -1
- package/dist/esm/components/image/index.js +0 -1
- package/dist/esm/components/overlayBase/overlayBase.js +1 -1
- package/dist/esm/components/palette/palette.d.ts +3 -3
- package/dist/esm/components/palette/palette.js +10 -10
- package/dist/esm/components/pickerDialog/pickerDialog.style.js +6 -0
- package/dist/esm/components/pinchable/index.d.ts +1 -0
- package/dist/esm/components/pinchable/index.js +1 -0
- package/dist/esm/components/pinchable/pinchable.d.ts +33 -0
- package/dist/esm/components/pinchable/pinchable.js +157 -0
- package/dist/esm/components/pinchable/pinchable.style.d.ts +6 -0
- package/dist/esm/components/pinchable/pinchable.style.js +18 -0
- package/dist/esm/components/placeholder/placeholder.style.js +1 -0
- package/dist/esm/components/progress/progress.d.ts +1 -1
- package/dist/esm/components/rating/rating.d.ts +2 -2
- package/dist/esm/components/rating/rating.js +2 -5
- package/dist/esm/components/rating/rating.style.js +1 -2
- package/dist/esm/components/resizable/resizable.d.ts +2 -2
- package/dist/esm/components/resizable/resizable.js +13 -13
- package/dist/esm/components/scrollbar/scrollbar.d.ts +1 -1
- package/dist/esm/components/scrollbar/scrollbar.js +7 -7
- package/dist/esm/components/segmented/SegmentedOption.d.ts +1 -1
- package/dist/esm/components/selectedList/selectedItem.js +1 -1
- package/dist/esm/components/selectedList/selectedList.style.js +1 -1
- package/dist/esm/components/skeleton/skeleton.d.ts +1 -1
- package/dist/esm/components/slidableActions/slidableActions.d.ts +9 -5
- package/dist/esm/components/slidableActions/slidableActions.js +22 -26
- package/dist/esm/components/slidableActions/slidableActions.style.d.ts +1 -1
- package/dist/esm/components/slidableActions/slidableActions.style.js +14 -13
- package/dist/esm/components/slidableActions/slidableActionsAction.d.ts +4 -2
- package/dist/esm/components/slidableActions/slidableActionsAction.js +6 -2
- package/dist/esm/components/slider/slider.d.ts +3 -3
- package/dist/esm/components/slider/slider.js +9 -9
- package/dist/esm/components/tabs/tabs.js +1 -1
- package/dist/esm/components/theme/themeVariables.js +7 -7
- package/dist/esm/components/upload/itemStatus.d.ts +1 -1
- package/dist/esm/components/upload/itemStatus.js +3 -0
- package/dist/esm/components/upload/upload.d.ts +3 -3
- package/dist/esm/components/upload/upload.js +1 -1
- package/dist/esm/extensions/documentViewer/documentViewer.js +2 -3
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/utils/dnd.d.ts +0 -42
- package/dist/esm/utils/dnd.js +0 -120
- package/dist/esm/utils/gesture.d.ts +69 -0
- package/dist/esm/utils/gesture.js +245 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/style.js +1 -1
- package/dist/esm/utils/utils.d.ts +0 -2
- package/dist/esm/utils/utils.js +0 -2
- package/documentation/dist/assets/{index-B6FOULC1.js → index-DD484MoK.js} +1281 -1271
- package/documentation/dist/components/actionSheet.md +3 -3
- package/documentation/dist/components/autocomplete.md +10 -10
- package/documentation/dist/components/breadcrumb.md +1 -1
- package/documentation/dist/components/checkbox.md +24 -1
- package/documentation/dist/components/contextMenu.md +1 -1
- package/documentation/dist/components/counter.md +13 -13
- package/documentation/dist/components/dialog.md +3 -3
- package/documentation/dist/components/formDialog.md +6 -6
- package/documentation/dist/components/image.md +5 -3
- package/documentation/dist/components/menu.md +1 -1
- package/documentation/dist/components/pagination.md +15 -1
- package/documentation/dist/components/pickerDialog.md +56 -0
- package/documentation/dist/components/placeholder.md +30 -0
- package/documentation/dist/components/progress.md +43 -0
- package/documentation/dist/components/radio.md +37 -0
- package/documentation/dist/components/rating.md +35 -0
- package/documentation/dist/components/resizable.md +41 -0
- package/documentation/dist/components/scrollbar.md +31 -0
- package/documentation/dist/components/segmented.md +56 -0
- package/documentation/dist/components/select.md +30 -0
- package/documentation/dist/components/skeleton.md +26 -0
- package/documentation/dist/components/slidableActions.md +53 -0
- package/documentation/dist/guide/globalMethods.md +6 -6
- package/documentation/dist/index.html +1 -1
- package/package.json +6 -6
- package/dist/cjs/components/image/imagePreview.js +0 -63
- package/dist/esm/components/image/imagePreview.js +0 -60
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# SlidableActions 滑动操作
|
|
2
|
+
|
|
3
|
+
## 示例
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
import {SlidableActions} from '@canlooks/can-ui'
|
|
7
|
+
|
|
8
|
+
export default function Index() {
|
|
9
|
+
return (
|
|
10
|
+
<SlidableActions
|
|
11
|
+
style={{width: 400}}
|
|
12
|
+
leftActions={[
|
|
13
|
+
{
|
|
14
|
+
label: '操作1',
|
|
15
|
+
color: 'warning'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
label: '操作2',
|
|
19
|
+
color: 'info'
|
|
20
|
+
}
|
|
21
|
+
]}
|
|
22
|
+
rightActions={{
|
|
23
|
+
label: '删除',
|
|
24
|
+
color: 'error'
|
|
25
|
+
}}
|
|
26
|
+
>
|
|
27
|
+
<MenuItem label="左右滑动显示更多操作"/>
|
|
28
|
+
</SlidableActions>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Props
|
|
34
|
+
|
|
35
|
+
| 属性 | 类型 | 默认值 | 说明 |
|
|
36
|
+
|------------------------|-------------------------------------------|------------|-----------------|
|
|
37
|
+
| leftActions | [ActionType](#ActionType) \| ActionType[] | - | |
|
|
38
|
+
| rightActions | ActionType \| ActionType[] | - | |
|
|
39
|
+
| autoReturn | boolean | true | 点击action后是否自动归位 |
|
|
40
|
+
| bounceElementTranslate | number | 12 | 元素弹性移动距离 |
|
|
41
|
+
| bounceDragDistance | number | 240 | 手指弹性拖拽距离 |
|
|
42
|
+
| effectiveSpeed | number | 450 (px/s) | 滑动生效的速度 |
|
|
43
|
+
| disabled | boolean | false | |
|
|
44
|
+
|
|
45
|
+
## ActionType
|
|
46
|
+
|
|
47
|
+
| 属性 | 类型 | 默认值 | 说明 |
|
|
48
|
+
|-------------|-----------------------------------------|-----------|---------------------|
|
|
49
|
+
| color | string | 'default' | |
|
|
50
|
+
| label | ReactNode | - | |
|
|
51
|
+
| icon | ReactNode | - | |
|
|
52
|
+
| autoReturn | boolean | true | 点击当前action后是否自动归位 |
|
|
53
|
+
| buttonProps | [ButtonProps](/components/button#Props) | - | 传递至`<Button/>`组件的属性 |
|
|
@@ -47,15 +47,15 @@ export default function Index() {
|
|
|
47
47
|
| minWidth | string \| number | | |
|
|
48
48
|
| maxWidth | string \| number | 100% | |
|
|
49
49
|
| showClose | boolean | | 是否显示关闭按钮 |
|
|
50
|
-
| closeProps | [ButtonProps](/components/button) | | |
|
|
50
|
+
| closeProps | [ButtonProps](/components/button#Props) | | |
|
|
51
51
|
| showConfirm | boolean | true | 是否显示确定按钮 |
|
|
52
52
|
| confirmText | ReactNode | '确定' | |
|
|
53
|
-
| confirmProps | [ButtonProps](/components/button) | | |
|
|
53
|
+
| confirmProps | [ButtonProps](/components/button#Props) | | |
|
|
54
54
|
| onConfirm | (...args) => void | | |
|
|
55
55
|
| confirmLoading | boolean | | 确定按钮的加载状态 |
|
|
56
56
|
| showCancel | boolean | true | 取消按钮 |
|
|
57
57
|
| cancelText | ReactNode | '取消' | |
|
|
58
|
-
| cancelProps | [ButtonProps](/components/button) | | |
|
|
58
|
+
| cancelProps | [ButtonProps](/components/button#Props) | | |
|
|
59
59
|
| onCancel | (...args) => void | | |
|
|
60
60
|
| draggable | boolean | | 对话框是否可拖拽 |
|
|
61
61
|
| maskClosable | boolean | true | 是否可以点击遮罩层关闭 |
|
|
@@ -188,7 +188,7 @@ export default function Index() {
|
|
|
188
188
|
| 属性 | 类型 | 默认值 | 说明 |
|
|
189
189
|
|-------------------|--------------------------------------|---------------------------------------|----------------------------------------------------------------|
|
|
190
190
|
| title | ReactNode | | |
|
|
191
|
-
| actions | ReactNode | [MenuItemProps](/components/menuItem) | |
|
|
191
|
+
| actions | ReactNode | [MenuItemProps](/components/menuItem#MenuItemProps) | |
|
|
192
192
|
| placement | 'top' \| 'bottom' | 'bottom' | 菜单弹出的位置 |
|
|
193
193
|
| maskClosable | boolean | true | 是否可以点击遮罩层关闭 |
|
|
194
194
|
| escapeClosable | boolean | false | 是否可以点击`ESC`关闭 |
|
|
@@ -196,10 +196,10 @@ export default function Index() {
|
|
|
196
196
|
| onConfirm | (e: MouseEvent) => void | | 点击确定 |
|
|
197
197
|
| showConfirm | boolean | true | 是否显示确定选项,`actionSheet.confirm`方法有效 |
|
|
198
198
|
| confirmText | ReactNode | '确定' | |
|
|
199
|
-
| confirmProps | [ButtonProps](/components/button) | | |
|
|
199
|
+
| confirmProps | [ButtonProps](/components/button#Props) | | |
|
|
200
200
|
| showCancel | boolean | true | 是否显示取消选项,`actionSheet.confirm`方法有效 |
|
|
201
201
|
| cancelText | ReactNode | '取消' | |
|
|
202
|
-
| cancelProps | [ButtonProps](/components/button) | | |
|
|
202
|
+
| cancelProps | [ButtonProps](/components/button#Props) | | |
|
|
203
203
|
| onCancel | (e: MouseEvent) => void | | 点击取消 |
|
|
204
204
|
| defaultOpen | boolean | | 打开状态 |
|
|
205
205
|
| open | boolean | | 受控的打开状态 |
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="shortcut icon" href="/logo.png">
|
|
6
6
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
7
7
|
<title>Canlooks UI</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-DD484MoK.js"></script>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canlooks/can-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.44",
|
|
4
4
|
"author": "C.CanLiang <canlooks@gmail.com>",
|
|
5
5
|
"description": "My ui framework",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
|
-
"clean": "npx shx rm -rf dist",
|
|
43
|
-
"build": "
|
|
44
|
-
"build:core": "npm run clean && tscup",
|
|
42
|
+
"clean": "npx shx rm -rf dist documentation/bootstrap.mjs documentation/vite.config.mjs",
|
|
43
|
+
"build:core": "tsc -m esnext --outDir dist/esm & tsc -m commonjs --outDir dist/cjs",
|
|
45
44
|
"build:documentation": "vite build -c documentation/vite.config.mts && tsc -p documentation/tsconfig.bootstrap.json",
|
|
45
|
+
"rebuild": "npm run clean && npm run build:core && npm run build:documentation",
|
|
46
46
|
"dev": "vite -c test/vite.config.mts",
|
|
47
|
-
"dev:documentation": "vite -c documentation/vite.config.mts",
|
|
47
|
+
"dev:documentation": "vite -c documentation/vite.config.mts --host",
|
|
48
48
|
"test:unit": "npx ts-node test/unit.ts"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
@@ -65,7 +65,6 @@
|
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@ant-design/icons": "^6.0.0",
|
|
67
67
|
"@canlooks/react-router": "^1.0.11",
|
|
68
|
-
"@canlooks/tscup": "^0.1.2",
|
|
69
68
|
"@emotion/styled": "^11.14.0",
|
|
70
69
|
"@mdi/js": "^7.4.47",
|
|
71
70
|
"@mdi/react": "^1.6.1",
|
|
@@ -80,6 +79,7 @@
|
|
|
80
79
|
"react-markdown": "^10.1.0",
|
|
81
80
|
"react-syntax-highlighter": "^15.6.1",
|
|
82
81
|
"remark-gfm": "^4.0.1",
|
|
82
|
+
"ts-node": "^10.9.2",
|
|
83
83
|
"typescript": "^5.8.3",
|
|
84
84
|
"vite": "^6.2.5"
|
|
85
85
|
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ImagePreview = void 0;
|
|
4
|
-
const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
|
|
5
|
-
const react_1 = require("react");
|
|
6
|
-
const modal_1 = require("../modal");
|
|
7
|
-
const utils_1 = require("../../utils");
|
|
8
|
-
const imagePreview_style_1 = require("./imagePreview.style");
|
|
9
|
-
const button_1 = require("../button");
|
|
10
|
-
const react_zoom_pan_pinch_1 = require("react-zoom-pan-pinch");
|
|
11
|
-
const tooltip_1 = require("../tooltip");
|
|
12
|
-
const __1 = require("../..");
|
|
13
|
-
const faXmark_1 = require("@fortawesome/free-solid-svg-icons/faXmark");
|
|
14
|
-
const faExpand_1 = require("@fortawesome/free-solid-svg-icons/faExpand");
|
|
15
|
-
const faAngleLeft_1 = require("@fortawesome/free-solid-svg-icons/faAngleLeft");
|
|
16
|
-
const faAngleRight_1 = require("@fortawesome/free-solid-svg-icons/faAngleRight");
|
|
17
|
-
const faArrowRotateLeft_1 = require("@fortawesome/free-solid-svg-icons/faArrowRotateLeft");
|
|
18
|
-
const faArrowRotateRight_1 = require("@fortawesome/free-solid-svg-icons/faArrowRotateRight");
|
|
19
|
-
const faMagnifyingGlassPlus_1 = require("@fortawesome/free-solid-svg-icons/faMagnifyingGlassPlus");
|
|
20
|
-
const faMagnifyingGlassMinus_1 = require("@fortawesome/free-solid-svg-icons/faMagnifyingGlassMinus");
|
|
21
|
-
exports.ImagePreview = (0, react_1.memo)(({ src = [], defaultIndex = 0, index, onIndexChange, defaultOpen = false, open, onOpenChange, showRotation = true, showZoom = true, showClose = true, renderControl, transformWrapperProps, ...props }) => {
|
|
22
|
-
const srcArr = (0, utils_1.toArray)(src);
|
|
23
|
-
const [innerOpen, setInnerOpen] = (0, utils_1.useControlled)(defaultOpen, open, onOpenChange);
|
|
24
|
-
const [innerIndex, setInnerIndex] = (0, utils_1.useControlled)(defaultIndex, index, onIndexChange);
|
|
25
|
-
const innerTransformWrapperRef = (0, react_1.useRef)(null);
|
|
26
|
-
const imgLoaded = () => {
|
|
27
|
-
innerTransformWrapperRef.current.centerView();
|
|
28
|
-
};
|
|
29
|
-
const prev = (e) => {
|
|
30
|
-
e.stopPropagation();
|
|
31
|
-
setInnerIndex(o => (o - 1 + srcArr.length) % srcArr.length);
|
|
32
|
-
innerTransformWrapperRef.current?.resetTransform();
|
|
33
|
-
};
|
|
34
|
-
const next = (e) => {
|
|
35
|
-
e.stopPropagation();
|
|
36
|
-
setInnerIndex(o => (o + 1) % srcArr.length);
|
|
37
|
-
innerTransformWrapperRef.current?.resetTransform();
|
|
38
|
-
};
|
|
39
|
-
const [rotate, setRotate] = (0, react_1.useState)(0);
|
|
40
|
-
const isPanning = (0, react_1.useRef)(false);
|
|
41
|
-
const commonControlProps = {
|
|
42
|
-
className: imagePreview_style_1.classes.button,
|
|
43
|
-
shape: 'circular',
|
|
44
|
-
size: 'large',
|
|
45
|
-
color: 'text'
|
|
46
|
-
};
|
|
47
|
-
return ((0, jsx_runtime_1.jsx)(modal_1.Modal, { ...props, css: imagePreview_style_1.style, className: (0, utils_1.clsx)(imagePreview_style_1.classes.root, props.className), open: innerOpen.current, maskProps: {
|
|
48
|
-
...props.maskProps,
|
|
49
|
-
children: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: imagePreview_style_1.classes.control, children: [renderControl, showRotation &&
|
|
50
|
-
(0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u65CB\u8F6C-90\u00B0", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => setRotate(rotate - 90), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faArrowRotateLeft_1.faArrowRotateLeft }) }) }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u65CB\u8F6C90\u00B0", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => setRotate(rotate + 90), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faArrowRotateRight_1.faArrowRotateRight }) }) })] }), showZoom &&
|
|
51
|
-
(0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u7F29\u5C0F", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomOut(), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faMagnifyingGlassMinus_1.faMagnifyingGlassMinus }) }) }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u653E\u5927", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomIn(), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faMagnifyingGlassPlus_1.faMagnifyingGlassPlus }) }) }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u9002\u5E94\u5C4F\u5E55", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.resetTransform(), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faExpand_1.faExpand }) }) })] }), showClose &&
|
|
52
|
-
(0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => setInnerOpen(false), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faXmark_1.faXmark }) })] }), srcArr.length > 1 &&
|
|
53
|
-
(0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: imagePreview_style_1.classes.swap, children: [(0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: prev, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faAngleLeft_1.faAngleLeft }) }), (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: next, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faAngleRight_1.faAngleRight }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: imagePreview_style_1.classes.counter, children: [innerIndex.current + 1, " / ", srcArr.length] })] })] }))
|
|
54
|
-
}, children: (0, jsx_runtime_1.jsx)(react_zoom_pan_pinch_1.TransformWrapper, { smooth: false, ...transformWrapperProps, ref: (0, utils_1.cloneRef)(transformWrapperProps?.ref, innerTransformWrapperRef), minScale: .2, onPanning: (ref, e) => {
|
|
55
|
-
transformWrapperProps?.onPanning?.(ref, e);
|
|
56
|
-
isPanning.current = true;
|
|
57
|
-
}, onPanningStop: (ref, e) => {
|
|
58
|
-
transformWrapperProps?.onPanningStop?.(ref, e);
|
|
59
|
-
isPanning.current && setTimeout(() => isPanning.current = false);
|
|
60
|
-
}, children: (0, jsx_runtime_1.jsx)(react_zoom_pan_pinch_1.TransformComponent, { wrapperClass: imagePreview_style_1.classes.imageWrapper, contentClass: imagePreview_style_1.classes.image, wrapperProps: {
|
|
61
|
-
onClick: () => !isPanning.current && setInnerOpen(false)
|
|
62
|
-
}, children: (0, jsx_runtime_1.jsx)("img", { src: srcArr[innerIndex.current], style: { rotate: rotate + 'deg' }, onLoad: imgLoaded, alt: "" }, innerIndex.current) }) }) }));
|
|
63
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { memo, useRef, useState } from 'react';
|
|
3
|
-
import { Modal } from '../modal';
|
|
4
|
-
import { clsx, cloneRef, toArray, useControlled } from '../../utils';
|
|
5
|
-
import { classes, style } from './imagePreview.style';
|
|
6
|
-
import { Button } from '../button';
|
|
7
|
-
import { TransformComponent, TransformWrapper } from 'react-zoom-pan-pinch';
|
|
8
|
-
import { Tooltip } from '../tooltip';
|
|
9
|
-
import { Icon } from '../..';
|
|
10
|
-
import { faXmark } from '@fortawesome/free-solid-svg-icons/faXmark';
|
|
11
|
-
import { faExpand } from '@fortawesome/free-solid-svg-icons/faExpand';
|
|
12
|
-
import { faAngleLeft } from '@fortawesome/free-solid-svg-icons/faAngleLeft';
|
|
13
|
-
import { faAngleRight } from '@fortawesome/free-solid-svg-icons/faAngleRight';
|
|
14
|
-
import { faArrowRotateLeft } from '@fortawesome/free-solid-svg-icons/faArrowRotateLeft';
|
|
15
|
-
import { faArrowRotateRight } from '@fortawesome/free-solid-svg-icons/faArrowRotateRight';
|
|
16
|
-
import { faMagnifyingGlassPlus } from '@fortawesome/free-solid-svg-icons/faMagnifyingGlassPlus';
|
|
17
|
-
import { faMagnifyingGlassMinus } from '@fortawesome/free-solid-svg-icons/faMagnifyingGlassMinus';
|
|
18
|
-
export const ImagePreview = memo(({ src = [], defaultIndex = 0, index, onIndexChange, defaultOpen = false, open, onOpenChange, showRotation = true, showZoom = true, showClose = true, renderControl, transformWrapperProps, ...props }) => {
|
|
19
|
-
const srcArr = toArray(src);
|
|
20
|
-
const [innerOpen, setInnerOpen] = useControlled(defaultOpen, open, onOpenChange);
|
|
21
|
-
const [innerIndex, setInnerIndex] = useControlled(defaultIndex, index, onIndexChange);
|
|
22
|
-
const innerTransformWrapperRef = useRef(null);
|
|
23
|
-
const imgLoaded = () => {
|
|
24
|
-
innerTransformWrapperRef.current.centerView();
|
|
25
|
-
};
|
|
26
|
-
const prev = (e) => {
|
|
27
|
-
e.stopPropagation();
|
|
28
|
-
setInnerIndex(o => (o - 1 + srcArr.length) % srcArr.length);
|
|
29
|
-
innerTransformWrapperRef.current?.resetTransform();
|
|
30
|
-
};
|
|
31
|
-
const next = (e) => {
|
|
32
|
-
e.stopPropagation();
|
|
33
|
-
setInnerIndex(o => (o + 1) % srcArr.length);
|
|
34
|
-
innerTransformWrapperRef.current?.resetTransform();
|
|
35
|
-
};
|
|
36
|
-
const [rotate, setRotate] = useState(0);
|
|
37
|
-
const isPanning = useRef(false);
|
|
38
|
-
const commonControlProps = {
|
|
39
|
-
className: classes.button,
|
|
40
|
-
shape: 'circular',
|
|
41
|
-
size: 'large',
|
|
42
|
-
color: 'text'
|
|
43
|
-
};
|
|
44
|
-
return (_jsx(Modal, { ...props, css: style, className: clsx(classes.root, props.className), open: innerOpen.current, maskProps: {
|
|
45
|
-
...props.maskProps,
|
|
46
|
-
children: (_jsxs(_Fragment, { children: [_jsxs("div", { className: classes.control, children: [renderControl, showRotation &&
|
|
47
|
-
_jsxs(_Fragment, { children: [_jsx(Tooltip, { title: "\u65CB\u8F6C-90\u00B0", children: _jsx(Button, { ...commonControlProps, onClick: () => setRotate(rotate - 90), children: _jsx(Icon, { icon: faArrowRotateLeft }) }) }), _jsx(Tooltip, { title: "\u65CB\u8F6C90\u00B0", children: _jsx(Button, { ...commonControlProps, onClick: () => setRotate(rotate + 90), children: _jsx(Icon, { icon: faArrowRotateRight }) }) })] }), showZoom &&
|
|
48
|
-
_jsxs(_Fragment, { children: [_jsx(Tooltip, { title: "\u7F29\u5C0F", children: _jsx(Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomOut(), children: _jsx(Icon, { icon: faMagnifyingGlassMinus }) }) }), _jsx(Tooltip, { title: "\u653E\u5927", children: _jsx(Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomIn(), children: _jsx(Icon, { icon: faMagnifyingGlassPlus }) }) }), _jsx(Tooltip, { title: "\u9002\u5E94\u5C4F\u5E55", children: _jsx(Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.resetTransform(), children: _jsx(Icon, { icon: faExpand }) }) })] }), showClose &&
|
|
49
|
-
_jsx(Button, { ...commonControlProps, onClick: () => setInnerOpen(false), children: _jsx(Icon, { icon: faXmark }) })] }), srcArr.length > 1 &&
|
|
50
|
-
_jsxs(_Fragment, { children: [_jsxs("div", { className: classes.swap, children: [_jsx(Button, { ...commonControlProps, onClick: prev, children: _jsx(Icon, { icon: faAngleLeft }) }), _jsx(Button, { ...commonControlProps, onClick: next, children: _jsx(Icon, { icon: faAngleRight }) })] }), _jsxs("div", { className: classes.counter, children: [innerIndex.current + 1, " / ", srcArr.length] })] })] }))
|
|
51
|
-
}, children: _jsx(TransformWrapper, { smooth: false, ...transformWrapperProps, ref: cloneRef(transformWrapperProps?.ref, innerTransformWrapperRef), minScale: .2, onPanning: (ref, e) => {
|
|
52
|
-
transformWrapperProps?.onPanning?.(ref, e);
|
|
53
|
-
isPanning.current = true;
|
|
54
|
-
}, onPanningStop: (ref, e) => {
|
|
55
|
-
transformWrapperProps?.onPanningStop?.(ref, e);
|
|
56
|
-
isPanning.current && setTimeout(() => isPanning.current = false);
|
|
57
|
-
}, children: _jsx(TransformComponent, { wrapperClass: classes.imageWrapper, contentClass: classes.image, wrapperProps: {
|
|
58
|
-
onClick: () => !isPanning.current && setInnerOpen(false)
|
|
59
|
-
}, children: _jsx("img", { src: srcArr[innerIndex.current], style: { rotate: rotate + 'deg' }, onLoad: imgLoaded, alt: "" }, innerIndex.current) }) }) }));
|
|
60
|
-
});
|