@fjyueke/arco-mcp 1.0.0 → 1.0.2

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 (122) hide show
  1. package/dist/index.js +113 -1
  2. package/metaData/components/action-sheet/api.md +94 -0
  3. package/metaData/components/action-sheet/style.md +57 -0
  4. package/metaData/components/avatar/api.md +49 -0
  5. package/metaData/components/avatar/style.md +147 -0
  6. package/metaData/components/badge/api.md +20 -0
  7. package/metaData/components/badge/style.md +74 -0
  8. package/metaData/components/button/api.md +37 -0
  9. package/metaData/components/button/style.md +151 -0
  10. package/metaData/components/carousel/api.md +81 -0
  11. package/metaData/components/carousel/style.md +208 -0
  12. package/metaData/components/cell/api.md +60 -0
  13. package/metaData/components/cell/style.md +123 -0
  14. package/metaData/components/checkbox/api.md +83 -0
  15. package/metaData/components/checkbox/style.md +62 -0
  16. package/metaData/components/circle-progress/api.md +32 -0
  17. package/metaData/components/circle-progress/style.md +52 -0
  18. package/metaData/components/collapse/api.md +66 -0
  19. package/metaData/components/collapse/style.md +53 -0
  20. package/metaData/components/context-provider/api.md +36 -0
  21. package/metaData/components/context-provider/style.md +1 -0
  22. package/metaData/components/count-down/api.md +32 -0
  23. package/metaData/components/count-down/style.md +7 -0
  24. package/metaData/components/date-picker/api.md +94 -0
  25. package/metaData/components/date-picker/style.md +27 -0
  26. package/metaData/components/dialog/api.md +192 -0
  27. package/metaData/components/dialog/style.md +271 -0
  28. package/metaData/components/divider/api.md +17 -0
  29. package/metaData/components/divider/style.md +68 -0
  30. package/metaData/components/dropdown/api.md +72 -0
  31. package/metaData/components/dropdown/style.md +108 -0
  32. package/metaData/components/dropdown-menu/api.md +83 -0
  33. package/metaData/components/dropdown-menu/style.md +60 -0
  34. package/metaData/components/ellipsis/api.md +25 -0
  35. package/metaData/components/ellipsis/style.md +31 -0
  36. package/metaData/components/form/api.md +82 -0
  37. package/metaData/components/form/style.md +105 -0
  38. package/metaData/components/grid/api.md +31 -0
  39. package/metaData/components/grid/style.md +109 -0
  40. package/metaData/components/icon/api.md +7 -0
  41. package/metaData/components/image/api.md +54 -0
  42. package/metaData/components/image/style.md +144 -0
  43. package/metaData/components/image-picker/api.md +108 -0
  44. package/metaData/components/image-picker/style.md +116 -0
  45. package/metaData/components/image-preview/api.md +111 -0
  46. package/metaData/components/image-preview/style.md +103 -0
  47. package/metaData/components/index-bar/api.md +75 -0
  48. package/metaData/components/index-bar/style.md +122 -0
  49. package/metaData/components/input/api.md +52 -0
  50. package/metaData/components/input/style.md +108 -0
  51. package/metaData/components/keyboard/api.md +65 -0
  52. package/metaData/components/keyboard/style.md +80 -0
  53. package/metaData/components/load-more/api.md +40 -0
  54. package/metaData/components/load-more/style.md +7 -0
  55. package/metaData/components/loading/api.md +26 -0
  56. package/metaData/components/loading/style.md +102 -0
  57. package/metaData/components/masking/api.md +85 -0
  58. package/metaData/components/masking/style.md +30 -0
  59. package/metaData/components/nav-bar/api.md +32 -0
  60. package/metaData/components/nav-bar/style.md +112 -0
  61. package/metaData/components/notice-bar/api.md +26 -0
  62. package/metaData/components/notice-bar/style.md +124 -0
  63. package/metaData/components/notify/api.md +73 -0
  64. package/metaData/components/notify/style.md +40 -0
  65. package/metaData/components/pagination/api.md +33 -0
  66. package/metaData/components/pagination/style.md +105 -0
  67. package/metaData/components/picker/api.md +81 -0
  68. package/metaData/components/picker/style.md +46 -0
  69. package/metaData/components/picker-view/api.md +49 -0
  70. package/metaData/components/picker-view/style.md +75 -0
  71. package/metaData/components/popover/api.md +136 -0
  72. package/metaData/components/popover/style.md +226 -0
  73. package/metaData/components/popup/api.md +93 -0
  74. package/metaData/components/popup/style.md +115 -0
  75. package/metaData/components/popup-swiper/api.md +100 -0
  76. package/metaData/components/popup-swiper/style.md +10 -0
  77. package/metaData/components/portal/api.md +6 -0
  78. package/metaData/components/portal/style.md +1 -0
  79. package/metaData/components/progress/api.md +34 -0
  80. package/metaData/components/progress/style.md +114 -0
  81. package/metaData/components/pull-refresh/api.md +29 -0
  82. package/metaData/components/pull-refresh/style.md +86 -0
  83. package/metaData/components/radio/api.md +81 -0
  84. package/metaData/components/radio/style.md +57 -0
  85. package/metaData/components/rate/api.md +25 -0
  86. package/metaData/components/rate/style.md +63 -0
  87. package/metaData/components/search-bar/api.md +89 -0
  88. package/metaData/components/search-bar/style.md +115 -0
  89. package/metaData/components/show-monitor/api.md +26 -0
  90. package/metaData/components/show-monitor/style.md +1 -0
  91. package/metaData/components/skeleton/api.md +93 -0
  92. package/metaData/components/skeleton/style.md +147 -0
  93. package/metaData/components/slider/api.md +34 -0
  94. package/metaData/components/slider/style.md +292 -0
  95. package/metaData/components/stepper/api.md +38 -0
  96. package/metaData/components/stepper/style.md +85 -0
  97. package/metaData/components/steps/api.md +49 -0
  98. package/metaData/components/steps/style.md +304 -0
  99. package/metaData/components/sticky/api.md +37 -0
  100. package/metaData/components/sticky/style.md +5 -0
  101. package/metaData/components/swipe-action/api.md +36 -0
  102. package/metaData/components/swipe-action/style.md +89 -0
  103. package/metaData/components/swipe-load/api.md +35 -0
  104. package/metaData/components/swipe-load/style.md +29 -0
  105. package/metaData/components/switch/api.md +30 -0
  106. package/metaData/components/switch/style.md +158 -0
  107. package/metaData/components/tab-bar/api.md +49 -0
  108. package/metaData/components/tab-bar/style.md +57 -0
  109. package/metaData/components/tabs/api.md +179 -0
  110. package/metaData/components/tabs/style.md +436 -0
  111. package/metaData/components/tag/api.md +72 -0
  112. package/metaData/components/tag/style.md +133 -0
  113. package/metaData/components/textarea/api.md +59 -0
  114. package/metaData/components/textarea/style.md +37 -0
  115. package/metaData/components/toast/api.md +82 -0
  116. package/metaData/components/toast/style.md +93 -0
  117. package/metaData/components/transition/api.md +11 -0
  118. package/metaData/components/transition/style.md +28 -0
  119. package/metaData/components/uploader/api.md +74 -0
  120. package/metaData/components/uploader/style.md +86 -0
  121. package/metaData/tokens.json +2358 -0
  122. package/package.json +1 -1
@@ -0,0 +1,54 @@
1
+ > 属性/Props
2
+
3
+ |参数|描述|类型|默认值|
4
+ |----------|-------------|------|------|
5
+ |style|自定义样式|CSSProperties|-|
6
+ |className|自定义类名|string|-|
7
+ |status|指定图片状态,staticLabel=false时有效|"loading" \| "loaded" \| "init" \| "error"|-|
8
+ |src|图片链接|string|必填|
9
+ |width|容器宽度,传数值,默认单位为px,传字符串则接受传入的单位|ReactText|-|
10
+ |height|容器高度,传数值,默认单位为px,传字符串则接受传入的单位|ReactText|-|
11
+ |alt|替代文本|string|""|
12
+ |fit|图片填充模式(object\-fit),传preview\-\*为预览模式,预览模式仅staticLabel=false时有效|"\-moz\-initial" \| "inherit" \| "initial" \| "revert" \| "revert\-layer" \| "unset" \| "contain" \| "cover" \| "fill" \| "none" \| "scale\-down" \| "preview\-y" \| "preview\-x"|"fill"|
13
+ |position|图片填充位置(object\-position)|ObjectPosition\<ReactText\>|"center"|
14
+ |radius|图片圆角|ReactText|-|
15
+ |bordered|是否加边框|boolean|-|
16
+ |loadingArea|自定义展示加载中内容|ReactNode|-|
17
+ |errorArea|自定义展示加载失败内容|ReactNode|-|
18
+ |showLoading|是否展示图片加载中提示|boolean|-|
19
+ |showError|是否展示图片加载失败提示|boolean|-|
20
+ |animateDuration|加载完时展现动画时长,staticLabel=false时有效|number|200|
21
+ |retryTime|失败时自动重试次数|number|0|
22
+ |forceHttps|是否强制使用https|boolean|-|
23
+ |boxWidth|预览模式下,父容器宽度|number|-|
24
+ |boxHeight|预览模式下,父容器高度|number|-|
25
+ |topOverlap|图片顶层内容|ReactNode|-|
26
+ |bottomOverlap|图片底层内容(placeholder),默认是灰色兜底,传null可移除|ReactNode|-|
27
+ |showImage|手动控制是否加载图片|boolean|-|
28
+ |staticLabel|是否直接渲染\<img\>标签,不走加载图片流程|boolean|-|
29
+ |nativeProps|img标签原生属性,优先级低于单独设置|DetailedHTMLProps\<ImgHTMLAttributes\<HTMLImageElement\>, HTMLImageElement\>|-|
30
+ |onChange|切换status时触发的回调|(status: string) =\> void|-|
31
+ |onClick|点击图片时触发的回调|(e: MouseEvent\<HTMLElement, MouseEvent\>) =\> void|-|
32
+ |onLoad|图片加载完毕时触发的回调|(e: Event, image: HTMLImageElement) =\> void|-|
33
+ |onError|图片加载失败时触发的回调,如果有自动重试则在重试最终失败后触发|(e: string \| Event) =\> void|-|
34
+ |onAutoRetry|图片加载失败时自动重试触发的回调|(e: string \| Event) =\> void|-|
35
+
36
+ > 引用/Refs
37
+
38
+ |参数|描述|类型|
39
+ |----------|-------------|------|
40
+ |dom|最外层元素 DOM|HTMLDivElement|
41
+ |image|原生图片元素 DOM|HTMLImageElement|
42
+ |retry|手动重试图片加载|() =\> void|
43
+
44
+ > ImageStatus
45
+
46
+ ```
47
+ "loading" | "loaded" | "init" | "error"
48
+ ```
49
+
50
+ > ObjectPosition
51
+
52
+ ```
53
+ string | number | string & {}
54
+ ```
@@ -0,0 +1,144 @@
1
+ @import '../../../style/mixin.less';
2
+
3
+ .@{prefix}-image {
4
+ display: inline-block;
5
+ position: relative;
6
+
7
+ &.preview {
8
+ transition: all 0.3s ease-in-out;
9
+
10
+ .image-container,
11
+ .image-loading-container .image-loading,
12
+ .image-error-container .image-retry-load {
13
+ background-color: transparent;
14
+ }
15
+
16
+ .image-container::after {
17
+ border-color: transparent;
18
+ }
19
+ }
20
+
21
+ .image-bottom-overlap,
22
+ .image-top-overlap {
23
+ position: absolute;
24
+ width: 100%;
25
+ height: 100%;
26
+ top: 0;
27
+ left: 0;
28
+ }
29
+
30
+ .image-bottom-overlap {
31
+ z-index: 0;
32
+ overflow: hidden;
33
+ }
34
+
35
+ .image-placeholder {
36
+ .use-var(background-color, image-placeholder-background);
37
+ width: 100%;
38
+ height: 100%;
39
+ }
40
+
41
+ .image-top-overlap {
42
+ z-index: 10;
43
+ }
44
+
45
+ .image-loading-container,
46
+ .image-error-container {
47
+ overflow: hidden;
48
+ position: absolute;
49
+ top: 0;
50
+ left: 0;
51
+ width: 100%;
52
+ height: 100%;
53
+ display: flex;
54
+ flex-direction: column;
55
+ align-items: center;
56
+ justify-content: center;
57
+ z-index: 2;
58
+ .use-var(font-size, image-inner-font-size);
59
+ }
60
+
61
+ .image-container {
62
+ position: relative;
63
+ font-size: 0;
64
+ opacity: 0;
65
+ z-index: 1;
66
+ overflow: hidden;
67
+
68
+ &.static-label,
69
+ &.loaded,
70
+ &.error,
71
+ &.has-loaded {
72
+ opacity: 1;
73
+ }
74
+
75
+ &.animate {
76
+ transition-property: opacity;
77
+ .use-var(transition-timing-function, image-transition-function);
78
+ }
79
+
80
+ .bordered {
81
+ .hairline-var(line-color);
82
+ }
83
+
84
+ &,
85
+ & img {
86
+ width: inherit;
87
+ height: inherit;
88
+ min-width: inherit;
89
+ min-height: inherit;
90
+ max-width: inherit;
91
+ max-height: inherit;
92
+ }
93
+
94
+ .preview-fit-contain-y {
95
+ width: 100%;
96
+ height: auto;
97
+ position: absolute;
98
+ top: 50%;
99
+ transform: translateY(-50%);
100
+ }
101
+
102
+ .preview-fit-contain-x {
103
+ height: 100%;
104
+ width: auto;
105
+ position: absolute;
106
+ left: 50%;
107
+ transform: translateX(-50%);
108
+ }
109
+ }
110
+
111
+ .image-error-container {
112
+ .image-retry-load {
113
+ position: absolute;
114
+ top: 0;
115
+ left: 0;
116
+ width: 100%;
117
+ height: 100%;
118
+ display: flex;
119
+ flex-direction: column;
120
+ justify-content: center;
121
+ align-items: center;
122
+ .use-var(background-color, image-mask-background);
123
+ .use-var(font-size, image-retry-font-size);
124
+ .use-var(color, image-retry-icon-color);
125
+ }
126
+ }
127
+
128
+ .image-loading-container {
129
+ .image-loading {
130
+ position: absolute;
131
+ top: 0;
132
+ left: 0;
133
+ width: 100%;
134
+ height: 100%;
135
+ display: flex;
136
+ flex-direction: column;
137
+ justify-content: center;
138
+ align-items: center;
139
+ .use-var(color, image-loading-icon-color);
140
+ .use-var(background-color, image-mask-background);
141
+ .set-loading-color-var(image-loading-icon-color);
142
+ }
143
+ }
144
+ }
@@ -0,0 +1,108 @@
1
+ > 属性/Props
2
+
3
+ |参数|描述|类型|默认值|
4
+ |----------|-------------|------|------|
5
+ |className|自定义类名|string|-|
6
+ |style|自定义样式|CSSProperties|-|
7
+ |images|已选择图片列表|ImagePickItem\[\]|必填|
8
+ |accept|可以选择的文件类型|string|'image/*'|
9
+ |multiple|是否支持多选|boolean|-|
10
+ |capture|图片选取模式 Image selection mode \[capture MDN\](https://developer\.mozilla\.org/en\-US/docs/Web/HTML/Attributes/capture)|string \| boolean|-|
11
+ |columns|一行展示图片张数|number|3|
12
+ |gutter|格子间的间距|number|8|
13
+ |hideDelete|是否隐藏删除Icon|boolean|false|
14
+ |hideSelect|是否隐藏选择Icon|boolean|false|
15
+ |alwaysShowSelect|是否总是展示选择Icon,默认情况下当图片数量超出limit值时会自动隐藏选择Icon|boolean|false|
16
+ |disabled|禁用选择和删除图片|boolean|-|
17
+ |deleteIcon|自定义删除图标|ReactNode|-|
18
+ |selectIcon|自定义选择图标|ReactNode|-|
19
+ |imageProps|透传给图片的属性|Partial\<ImageProps\>|-|
20
+ |renderError|自定义上传失败展示|(index?: number) =\> ReactNode|-|
21
+ |renderLoading|自定义上传中展示|(index?: number) =\> ReactNode|-|
22
+ |onSelectClick|选图点击事件(同onUploadClick)|() =\> void|-|
23
+ |onUploadClick|选图点击事件|() =\> void|-|
24
+ |upload|上传方法|(file: ImagePickItem) =\> Promise\<ImagePickItem\>|-|
25
+ |onChange|已选文件列表发生变化|(fileList: ImagePickItem\[\]) =\> void|-|
26
+ |maxSize|文件大小限制,单位为K|number|-|
27
+ |onMaxSizeExceed|文件超过限制大小|(file: File) =\> void|-|
28
+ |limit|最多选择文件数,超出数量自动隐藏上传按钮,0表示不做限制|number|0|
29
+ |onLimitExceed|选择文件数超过限制|(files: File\[\]) =\> void|-|
30
+ |onDeleteClick|删除点击事件|(index: number) =\> void|-|
31
+ |selectAdapter|文件选择适配器|() =\> Promise\<SelectCallback\>|-|
32
+ |onClick|文件点击|(e: MouseEvent\<HTMLElement, MouseEvent\>, file: ImagePickItem, index: number) =\> void|-|
33
+ |onLongPress|文件长按事件|(e: TouchEvent\<HTMLElement\>, file: ImagePickItem, index: number) =\> void|-|
34
+
35
+ > 引用/Refs
36
+
37
+ |参数|描述|类型|
38
+ |----------|-------------|------|
39
+ |dom|最外层 DOM 元素|HTMLDivElement|
40
+
41
+ > ImagePickItem
42
+
43
+ |参数|描述|类型|默认值|
44
+ |----------|-------------|------|------|
45
+ |url|图片地址|string|必填|
46
+ |file|文件|File|-|
47
+ |status|文件状态|"loaded" \| "loading" \| "error"|以文件自身加载状态而定|
48
+
49
+ > ImageProps
50
+
51
+ |参数|描述|类型|默认值|
52
+ |----------|-------------|------|------|
53
+ |style|自定义样式|CSSProperties|-|
54
+ |className|自定义类名|string|-|
55
+ |status|指定图片状态,staticLabel=false时有效|"loaded" \| "loading" \| "error" \| "init"|-|
56
+ |src|图片链接|string|必填|
57
+ |width|容器宽度,传数值,默认单位为px,传字符串则接受传入的单位|ReactText|-|
58
+ |height|容器高度,传数值,默认单位为px,传字符串则接受传入的单位|ReactText|-|
59
+ |alt|替代文本|string|""|
60
+ |fit|图片填充模式(object\-fit),传preview\-\*为预览模式,预览模式仅staticLabel=false时有效|"\-moz\-initial" \| "inherit" \| "initial" \| "revert" \| "revert\-layer" \| "unset" \| "contain" \| "cover" \| "fill" \| "none" \| "scale\-down" \| "preview\-y" \| "preview\-x"|"fill"|
61
+ |position|图片填充位置(object\-position)|ObjectPosition\<ReactText\>|"center"|
62
+ |radius|图片圆角|ReactText|-|
63
+ |bordered|是否加边框|boolean|-|
64
+ |loadingArea|自定义展示加载中内容|ReactNode|-|
65
+ |errorArea|自定义展示加载失败内容|ReactNode|-|
66
+ |showLoading|是否展示图片加载中提示|boolean|-|
67
+ |showError|是否展示图片加载失败提示|boolean|-|
68
+ |animateDuration|加载完时展现动画时长,staticLabel=false时有效|number|200|
69
+ |retryTime|失败时自动重试次数|number|0|
70
+ |forceHttps|是否强制使用https|boolean|-|
71
+ |boxWidth|预览模式下,父容器宽度|number|-|
72
+ |boxHeight|预览模式下,父容器高度|number|-|
73
+ |topOverlap|图片顶层内容|ReactNode|-|
74
+ |bottomOverlap|图片底层内容(placeholder),默认是灰色兜底,传null可移除|ReactNode|-|
75
+ |showImage|手动控制是否加载图片|boolean|-|
76
+ |staticLabel|是否直接渲染\<img\>标签,不走加载图片流程|boolean|-|
77
+ |nativeProps|img标签原生属性,优先级低于单独设置|DetailedHTMLProps\<ImgHTMLAttributes\<HTMLImageElement\>, HTMLImageElement\>|-|
78
+ |onChange|切换status时触发的回调|(status: string) =\> void|-|
79
+ |onClick|点击图片时触发的回调|(e: MouseEvent\<HTMLElement, MouseEvent\>) =\> void|-|
80
+ |onLoad|图片加载完毕时触发的回调|(e: Event, image: HTMLImageElement) =\> void|-|
81
+ |onError|图片加载失败时触发的回调,如果有自动重试则在重试最终失败后触发|(e: string \| Event) =\> void|-|
82
+ |onAutoRetry|图片加载失败时自动重试触发的回调|(e: string \| Event) =\> void|-|
83
+
84
+ > ImageStatus
85
+
86
+ ```
87
+ "loaded" | "loading" | "error" | "init"
88
+ ```
89
+
90
+ > ObjectPosition
91
+
92
+ ```
93
+ string | number | string & {}
94
+ ```
95
+
96
+ > SelectCallback
97
+
98
+ |参数|描述|类型|
99
+ |----------|-------------|------|
100
+ |files|文件列表|AdapterFile\[\]|
101
+
102
+ > AdapterFile
103
+
104
+ |参数|描述|类型|
105
+ |----------|-------------|------|
106
+ |url|文件 url|string|
107
+ |size|文件大小|number|
108
+ |name|文件名|string|
@@ -0,0 +1,116 @@
1
+ @import '../../../style/mixin.less';
2
+
3
+ .@{prefix}-image-picker {
4
+ .use-var(font-size, image-picker-font-size);
5
+ &-container {
6
+ display: flex;
7
+ flex-wrap: wrap;
8
+ }
9
+ .container() {
10
+ position: absolute;
11
+ top: 0;
12
+ width: 100%;
13
+ height: 100%;
14
+ left: 0;
15
+ }
16
+ &-image {
17
+ position: relative;
18
+ width: 100%;
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ padding-top: 100%;
23
+ .use-var(border-radius, image-picker-border-radius);
24
+ overflow: hidden;
25
+ &-container {
26
+ .container()
27
+ }
28
+ .@{prefix}-image {
29
+ height: 100%;
30
+ width: 100%;
31
+ }
32
+ &-mask {
33
+ position: absolute;
34
+ left: 0;
35
+ top: 0;
36
+ width: 100%;
37
+ height: 100%;
38
+ z-index: 2;
39
+ }
40
+ }
41
+ &-add {
42
+ .use-var(background-color, image-picker-add-background);
43
+ .use-var(border-radius, image-picker-border-radius);
44
+ position: relative;
45
+ width: 100%;
46
+ height: 100%;
47
+ padding-top: 100%;
48
+ &-container {
49
+ .container();
50
+ display: flex;
51
+ flex-direction: column;
52
+ justify-content: center;
53
+ align-items: center;
54
+ text-align: center;
55
+ .use-var(font-size, image-picker-add-text-font-size);
56
+ .use-var(color, image-picker-add-text-color);
57
+ }
58
+ &-icon {
59
+ .use-var(font-size, image-picker-add-icon-font-size);
60
+ .use-var(color, image-picker-add-icon-color);
61
+ svg {
62
+ display: block;
63
+ }
64
+ }
65
+ &-disabled {
66
+ pointer-events: none;
67
+ }
68
+ &-disabled &-icon {
69
+ .use-var(opacity, image-picker-disabled-opacity);
70
+ }
71
+ input {
72
+ position: absolute;
73
+ opacity: 0;
74
+ left: 0;
75
+ top: 0;
76
+ width: 100%;
77
+ height: 100%;
78
+ display: none;
79
+ }
80
+ }
81
+ &-close {
82
+ position: absolute;
83
+ top: 0;
84
+ right: 0;
85
+ z-index: 2;
86
+ &-icon {
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ .use-var(font-size, image-picker-close-font-size);
91
+ .use-var(width, image-picker-close-width);
92
+ .use-var(height, image-picker-close-height);
93
+ .use-var(color, image-picker-close-color);
94
+ .use-var(background, image-picker-close-background);
95
+ .use-var(border-radius, image-picker-close-border-radius);
96
+ }
97
+ }
98
+ &-error {
99
+ position: absolute;
100
+ top: 0;
101
+ left: 0;
102
+ width: 100%;
103
+ height: 100%;
104
+ display: flex;
105
+ flex-direction: column;
106
+ justify-content: center;
107
+ align-items: center;
108
+ .use-var(background, image-picker-error-background);
109
+ .use-var(color, image-picker-error-color);
110
+ .use-var(font-size, image-picker-font-size);
111
+ }
112
+ }
113
+
114
+ .@{prefix}-image-picker-disabled {
115
+ pointer-events: none;
116
+ }
@@ -0,0 +1,111 @@
1
+ > 属性/Props
2
+
3
+ |参数|描述|类型|默认值|
4
+ |----------|-------------|------|------|
5
+ |style|自定义样式|CSSProperties|-|
6
+ |className|自定义类名|string|-|
7
+ |images|图片信息数组|PreviewImageProps\[\]|必填|
8
+ |openIndex|打开时展示的index,在images范围内会展示弹窗,否则隐藏弹窗|number|必填|
9
+ |loop|是否可循环滑动|boolean|false|
10
+ |fit|图片布局方式,preview\-y为宽度撑满高度溢出滚动,preview\-x为高度撑满宽度溢出滚动|"preview\-y" \| "preview\-x"|"preview-y"|
11
+ |displayDuration|打开和关闭时的过渡动画|number|300|
12
+ |replaceFallbackWhenLoaded|是否在原图加载完成后将过渡图动画替换为原图动画|boolean|-|
13
+ |noselect|图片不可选中,屏蔽系统默认事件|boolean|true|
14
+ |spaceBetween|图片横向间距|number|-|
15
+ |loadingArea|自定义展示加载中内容|ReactNode|-|
16
+ |errorArea|自定义展示加载失败内容|ReactNode|-|
17
+ |showLoading|是否展示图片加载中提示|boolean|true|
18
+ |showError|是否展示图片加载失败提示|boolean|true|
19
+ |retryTime|失败时自动重试次数|number|-|
20
+ |staticLabel|是否直接渲染\<img\>标签,不走加载图片流程|boolean|-|
21
+ |scrollBezier|长图滚动变化曲线|\[number, number, number, number\]|-|
22
+ |lazyloadCount|只加载当前页相邻的n个内容,为0时会销毁所有相邻内容|number|1|
23
+ |swipeToClose|当图片滚动到边缘时,继续滑动是否关闭预览|boolean|true|
24
+ |indicatorPos|轮播索引位置|"start" \| "center" \| "end"|"start"|
25
+ |extra|渲染自定义元素,如自定义关闭按钮|ReactNode|-|
26
+ |getMinScale|图片捏合时最小缩放倍数,松手后仍会恢复到1的状态,默认为0\.7|(image: HTMLImageElement, imageIndex: number) =\> number|-|
27
+ |getMaxScale|图片最大缩放倍数,默认根据图片尺寸调节|(image: HTMLImageElement, imageIndex: number) =\> number|-|
28
+ |getDoubleClickScale|当双击图片时,图片应缩放的倍数|(currentScale: number, maxScale: number, image: HTMLImageElement, imageIndex: number) =\> number|-|
29
+ |getContainer|获取挂载容器|() =\> HTMLElement|-|
30
+ |renderIndicator|自定义索引内容|(currentIndex: number, total: number, lastIndex: number) =\> ReactNode|-|
31
+ |getThumbBounds|获取缩略图定位|(index: number) =\> ClientRect|-|
32
+ |onChange|索引发生改变时回调|(index: number) =\> void|-|
33
+ |onAfterChange|索引切换,动画完成后触发|(index: number) =\> void|-|
34
+ |close|关闭弹窗|(e: MouseEvent\<HTMLDivElement, MouseEvent\> \| TouchEvent) =\> void|必填|
35
+ |onClose|关闭弹窗回调(动画执行完成后)|() =\> void|-|
36
+ |onImageClick|点击图片回调,如果返回true则阻止关闭弹窗|(index: number, e: MouseEvent\<HTMLDivElement, MouseEvent\>) =\> boolean \| void|-|
37
+ |onImageDoubleClick|双击图片回调|(index: number, e: MouseEvent\<HTMLDivElement, MouseEvent\>) =\> void|-|
38
+ |onImageLongTap|长按图片回调|(index: number, image: HTMLImageElement, e: TouchEvent) =\> void|-|
39
+ |onTouchStart|弹窗内容touchstart事件|(e: TouchEvent, index: number) =\> boolean \| void|-|
40
+ |onTouchMove|弹窗内容touchmove事件|(e: TouchEvent, index: number) =\> boolean \| void|-|
41
+ |onTouchEnd|弹窗内容touchend / touchcancel事件|(e: TouchEvent, index: number) =\> boolean \| void|-|
42
+ |animateDurationSlide|手动切换轮播滑块时,当手指释放后,动画的执行时间(ms)|number|300|
43
+ |showIndicator|是否展示轮播索引|boolean|true|
44
+ |hideSingleIndicator|children 只有一个时隐藏轮播索引|boolean|true|
45
+ |percentToChange|滑动切换距离阈值(宽度比例),范围为\[0, 1\],如果该属性和\`distanceToChange\`属性均设置,则实际计算结果更大的生效|number|0.3|
46
+ |distanceToChange|滑动切换距离阈值(固定px宽度),如果该属性和\`percentToChange\`属性均设置,则实际计算结果更大的生效|number|10|
47
+ |speedToChange|滑动切换速度阈值(手指从按下到抬起之间的滑动速度,单位为px/s),与滑动切换距离阈值同时设置时,满足其中一个即生效|number|200|
48
+ |swipeable|是否响应手势滑动|boolean|true|
49
+ |offsetBetween|前后两端露出距离,设置值时不能循环轮播|number \| \{ left?: number; right?: number; \}|0|
50
+ |renderExtra|在轮播图内部渲染额外元素,该元素不随轮播滑动,但处于手指可交互热区|(currentIndex: number) =\> ReactNode|-|
51
+
52
+ > 引用/Refs
53
+
54
+ |参数|描述|类型|
55
+ |----------|-------------|------|
56
+ |dom|最外层元素 DOM|HTMLDivElement|
57
+ |imageDoms|原生图片 DOM 列表|HTMLImageElement\[\]|
58
+
59
+ > 方法/Methods
60
+
61
+ |方法名|描述|类型|
62
+ |----------|-------------|------|
63
+ |open|打开图片预览|(config: ImagePreviewProps) =\> \{ close: () =\> void; update: (newConfig: ImagePreviewProps) =\> void; \}|
64
+
65
+ > PreviewImageProps
66
+
67
+ |参数|描述|类型|默认值|
68
+ |----------|-------------|------|------|
69
+ |src|图片地址|string|必填|
70
+ |fit|图片布局方式,preview\-y为宽度撑满高度溢出滚动,preview\-x为高度撑满宽度溢出滚动|"preview\-y" \| "preview\-x"|-|
71
+ |fallbackSrc|过渡图url|string|-|
72
+ |transitionEndDelay|过渡图到原图放大动效完成后,移除过渡图的延迟时间(ms),一般当原图过大时有调整需求|number|30|
73
+ |thumbPosition|缩略图填充方式(backgroundPosition),默认top center|string|-|
74
+ |extraNode|自定义DOM|ReactNode|-|
75
+
76
+ > GlobalContextParams
77
+
78
+ |参数|描述|类型|默认值|
79
+ |----------|-------------|------|------|
80
+ |prefixCls|组件类名前缀|string|"arco"|
81
+ |system|手动控制当前所在系统,传入后将直接使用传入的值,ssr场景需指定系统初始值时适用|"" \| "pc" \| "android" \| "ios"|""|
82
+ |useDarkMode|是否监听系统原生的暗黑模式变化(prefers\-color\-scheme: dark)以判断是否切为暗黑模式|boolean|false|
83
+ |isDarkMode|是否处于暗黑模式,指定后以指定的值为准|boolean|false|
84
+ |darkModeSelector|当处于暗黑模式时,body上挂载的类名,为空值时不挂载类名|string|"arco-theme-dark"|
85
+ |theme|主题变量,传入后将在线替换css变量,需设置less变量 @use\-css\-vars: 1|Record\<string, string\>|-|
86
+ |locale|国际化语言包配置|ILocale|-|
87
+ |useRtl|是否使用Rtl模式|boolean|false|
88
+ |onDarkModeChange|当系统原生暗黑模式发生变化时触发,useDarkMode=true 时有效|(isDark: boolean) =\> void|-|
89
+ |createRoot|React19 修改了 createRoot 的引入路径,导致组件内部无法直接引入(低react版本会找不到模块)。因此使用 react 19 的用户需从外部传入 createRoot 方法|CreateRootFnType|-|
90
+
91
+ > ILocale
92
+
93
+ |参数|描述|类型|
94
+ |----------|-------------|------|
95
+ |locale|语言类型|string|
96
+ |LoadMore|-|\{ loadMoreText: string; loadingText: string; noDataText: string; failLoadText: string; prepareScrollText: string; prepareClickText: string; \}|
97
+ |Picker|-|\{ okText: string; cancelText: string; \}|
98
+ |Tag|-|\{ addTag: string; \}|
99
+ |Dialog|-|\{ okText: string; cancelText: string; \}|
100
+ |SwipeLoad|-|\{ normalText: string; activeText: string; \}|
101
+ |PullRefresh|-|\{ loadingText: string; pullingText: string; finishText: string; loosingText: string; \}|
102
+ |DropdownMenu|-|\{ select: string; \}|
103
+ |Pagination|-|\{ previousPage: string; nextPage: string; \}|
104
+ |Image|-|\{ loadError: string; \}|
105
+ |ImagePicker|-|\{ loadError: string; \}|
106
+ |SearchBar|-|\{ placeholder: string; cancelBtn: string; \}|
107
+ |Stepper|-|\{ minusButtonName: string; addButtonName: string; \}|
108
+ |Keyboard|-|\{ confirm: string; \}|
109
+ |Form|-|\{ required: string; type: \{ email: string; url: string; string: string; number: string; array: string; object: string; boolean: string; \}; number: \{ min: string; max: string; equal: string; range: string; positive: string; negative: string; \}; \.\.\. 4 more \.\.\.; pickerDefaultHint: string; \}|
110
+ |NavBar|-|\{ backBtnAriaLabel: string; \}|
111
+ |Uploader|-|\{ uploadBtn: string; retryUpload: string; \}|
@@ -0,0 +1,103 @@
1
+ @import "../../../style/mixin.less";
2
+
3
+ .@{prefix}-image-preview,
4
+ .image-preview-lock-modal {
5
+ .full-screen();
6
+ z-index: @full-screen-z-index;
7
+ }
8
+
9
+ .image-preview-lock-modal {
10
+ transform: translateZ(2PX);
11
+ }
12
+
13
+ .@{prefix}-image-preview {
14
+ .use-var(background, image-preview-mask-background);
15
+
16
+ &.noselect {
17
+ -webkit-touch-callout: none;
18
+ .noselect();
19
+ }
20
+
21
+ .preview-image-wrap-container, .preview-image-wrap {
22
+ width: 100%;
23
+ height: 100%;
24
+ }
25
+ .@{prefix}-carousel-wrap,
26
+ .@{prefix}-carousel,
27
+ .@{prefix}-carousel-inner {
28
+ height: 100%;
29
+ }
30
+
31
+ .carousel-item {
32
+ overflow: hidden;
33
+
34
+ &::-webkit-scrollbar {
35
+ display: none;
36
+ }
37
+ }
38
+
39
+ .preview-image {
40
+ width: 100%;
41
+ height: 100%;
42
+ will-change: transform;
43
+
44
+ .image-container {
45
+ overflow: visible;
46
+ }
47
+
48
+ &.preview-hidden {
49
+ pointer-events: none;
50
+
51
+ .image-container {
52
+ visibility: hidden;
53
+ }
54
+ }
55
+
56
+ .image-bottom-overlap {
57
+ overflow: visible;
58
+ }
59
+ }
60
+ }
61
+
62
+ .image-preview-indicator {
63
+ width: 100%;
64
+ left: 0;
65
+ bottom: 0;
66
+ z-index: @full-screen-z-index + 3;
67
+ position: fixed;
68
+ box-sizing: border-box;
69
+ .use-var(font-size, image-preview-indicator-font-size);
70
+ .use-var(color, mask-content-color);
71
+ .use-var(padding, image-preview-indicator-padding);
72
+ .use-var(background, image-preview-indicator-background);
73
+ }
74
+
75
+ .image-preview-fake-rect {
76
+ .full-screen();
77
+ opacity: 0;
78
+ }
79
+
80
+ .@{prefix}-image-preview .image-container img.closing-animation,
81
+ .image-preview-fake-trans-image {
82
+ position: fixed;
83
+ left: 0;
84
+ top: 0;
85
+ object-fit: cover;
86
+ .use-var(transition, image-preview-thumb-transition);
87
+ will-change: transform;
88
+ pointer-events: none;
89
+ height: auto !important;
90
+ }
91
+
92
+ .image-preview-loading-area {
93
+ .full-screen();
94
+ z-index: @full-screen-z-index + 10;
95
+ display: flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ pointer-events: none;
99
+
100
+ .loading-icon {
101
+ .set-loading-color-var(mask-content-color);
102
+ }
103
+ }