plain-design 1.0.0-beta.31 → 1.0.0-beta.32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. package/dist/plain-design.commonjs.min.js +3 -3
  2. package/dist/plain-design.min.css +11 -6
  3. package/dist/plain-design.min.js +3 -3
  4. package/dist/report.html +2 -2
  5. package/package.json +3 -3
  6. package/src/packages/components/$previewer/ImagePreviewerFixedContainer.tsx +107 -0
  7. package/src/packages/components/$previewer/image-previewer-fixed-container.scss +18 -0
  8. package/src/packages/components/$previewer/index.tsx +52 -0
  9. package/src/packages/components/Application/service/useApplicationService.tsx +2 -0
  10. package/src/packages/components/Carousel/carousel.scss +391 -0
  11. package/src/packages/components/Carousel/index.tsx +569 -22
  12. package/src/packages/components/CarouselItem/index.tsx +77 -0
  13. package/src/packages/components/ImagePreviewer/ImagePreviewer.tsx +572 -0
  14. package/src/packages/components/ImagePreviewer/ImagePreviewerButtonBar.tsx +140 -0
  15. package/src/packages/components/ImagePreviewer/ImagePreviewerCarouselImage.tsx +54 -0
  16. package/src/packages/components/ImagePreviewer/ImagePreviewerGallery.tsx +202 -0
  17. package/src/packages/components/ImagePreviewer/PreviewerLoading.tsx +26 -0
  18. package/src/packages/components/ImagePreviewer/image-previewer.scss +244 -0
  19. package/src/packages/components/ImagePreviewer/image-previewer.utils.tsx +135 -0
  20. package/src/packages/components/ImagePreviewer/index.tsx +5 -0
  21. package/src/packages/components/ImagePreviewer/previewer-loading.scss +52 -0
  22. package/src/packages/components/Input/useMultipleInput.tsx +2 -79
  23. package/src/packages/components/Scroll/index.tsx +6 -6
  24. package/src/packages/components/SortList/index.tsx +191 -0
  25. package/src/packages/components/SortList/sort-list.scss +11 -0
  26. package/src/packages/components/StackCard/index.tsx +260 -0
  27. package/src/packages/components/StackCard/stack-card.scss +28 -0
  28. package/src/packages/components/StackCardItem/index.tsx +23 -0
  29. package/src/packages/components/Table/standard/PlcOperation/PlcOperation.tsx +1 -1
  30. package/src/packages/components/Table/standard/PlcTree/RenderPlcTreeNode.tsx +2 -1
  31. package/src/packages/components/Table/table/body/row.tsx +1 -1
  32. package/src/packages/components/Table/table/use/useTableDraggier.row.tsx +1 -1
  33. package/src/packages/components/Table/table/utils/createTableHooks.ts +1 -1
  34. package/src/packages/components/Tree/RenderTreeNode.tsx +2 -1
  35. package/src/packages/components/Tree/index.tsx +2 -1
  36. package/src/packages/components/VirtualList/index.tsx +12 -3
  37. package/src/packages/components/VirtualList/useVirtualList.tsx +129 -86
  38. package/src/packages/components/VirtualList/virtual-list.scss +31 -17
  39. package/src/packages/components/VirtualTable/index.tsx +1 -1
  40. package/src/packages/entry.tsx +5 -1
  41. package/src/packages/uses/useDragHorizontalScroll.ts +82 -0
  42. package/src/packages/utils/ComponentUtils.ts +10 -0
  43. package/src/packages/utils/buildCycleIndexList.ts +31 -0
  44. package/src/packages/utils/getDeviceInfo.ts +44 -44
  45. package/src/packages/utils/getRectAutoFormat.ts +9 -0
  46. package/src/packages/utils/notNull.ts +9 -0
  47. package/src/pages/index/app.scss +1 -1
  48. package/src/pages/index/components/normal/DemoCarousel.tsx +178 -73
  49. package/src/pages/index/components/normal/DemoKeepAlive.tsx +25 -25
  50. package/src/pages/index/components/normal/DemoSortList.tsx +70 -0
  51. package/src/pages/index/components/normal/DemoStackCard.tsx +356 -0
  52. package/src/pages/index/components/normal/DemoVirtualList.tsx +89 -3
  53. package/src/pages/index/components/service/DemoImagePreviewer.tsx +185 -0
  54. package/src/pages/index/home/AppHome.tsx +18 -3
  55. package/src/pages/index/home/menus.tsx +3 -1
  56. package/src/packages/components/CarouselGroup/carousel.scss +0 -143
  57. package/src/packages/components/CarouselGroup/index.tsx +0 -274
@@ -0,0 +1,356 @@
1
+ import {designPage, reactive} from "plain-design-composition";
2
+ import {DemoRow} from "../../Demo/DemoRow";
3
+ import {Select, SelectOption, StackCard, StackCardItem} from "../../../../packages";
4
+ import {getDeviceInfo} from "../../../../packages/utils/getDeviceInfo";
5
+
6
+
7
+ export const demoRight3 = designPage(() => {
8
+ const images = [
9
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
10
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
11
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
12
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
13
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
14
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
15
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
16
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
17
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
18
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
19
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
20
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
21
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
22
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
23
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
24
+ ];
25
+
26
+ return () => (
27
+ <DemoRow title="只有右侧2个">
28
+ <p>StackCard会根据内容自动撑开高度,但是为了保险起见,建议每个元素的宽高一致</p>
29
+ <div style={{ width: '300px' }}>
30
+ <StackCard leftBufferCount={0} rightBufferCount={3}>
31
+ {images.map(url => (
32
+ <StackCardItem key={url}>
33
+ <img src={url} style={{ display: 'block' }}/>
34
+ </StackCardItem>
35
+ ))}
36
+ </StackCard>
37
+ </div>
38
+ </DemoRow>
39
+ );
40
+ });
41
+
42
+ export const demoVerticalOffset = designPage(() => {
43
+ const images = [
44
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
45
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
46
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
47
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
48
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
49
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
50
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
51
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
52
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
53
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
54
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
55
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
56
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
57
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
58
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
59
+ ];
60
+
61
+ return () => (
62
+ <DemoRow title="纵向一并偏移">
63
+ <div style={{ width: '300px' }}>
64
+ <StackCard leftBufferCount={0} rightBufferCount={4} stackItemHeight={4} stackItemWidth={12} verticalOffset verticalAlign="bottom">
65
+ {images.map(url => (
66
+ <StackCardItem key={url}>
67
+ <img src={url} style={{ display: 'block' }}/>
68
+ </StackCardItem>
69
+ ))}
70
+ </StackCard>
71
+ </div>
72
+ </DemoRow>
73
+ );
74
+ });
75
+
76
+ export const demoLeftRight3 = designPage(() => {
77
+
78
+ const state = reactive({
79
+ currentIndex: undefined as any
80
+ });
81
+
82
+ const isMobile = getDeviceInfo().deviceType === 'mobile';
83
+
84
+ const images = [
85
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
86
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
87
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
88
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
89
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
90
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
91
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
92
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
93
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
94
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
95
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
96
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
97
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
98
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
99
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
100
+ ];
101
+
102
+ return () => (
103
+ <DemoRow title="左右各3个">
104
+ <div style={{ marginBottom: '16px' }}>
105
+ <Select v-model={state.currentIndex} width={200}>
106
+ {images.map((_, index) => (<SelectOption label={`index_${index}`} val={index} key={index}/>))}
107
+ </Select>
108
+ </div>
109
+ <div style={{ width: '300px' }}>
110
+ <StackCard v-model={state.currentIndex} leftBufferCount={3} rightBufferCount={4}>
111
+ {images.map(url => (
112
+ <StackCardItem key={url}>
113
+ <img src={url} style={{ display: 'block', maxWidth: isMobile ? '33.33vw' : undefined }}/>
114
+ </StackCardItem>
115
+ ))}
116
+ </StackCard>
117
+ </div>
118
+ </DemoRow>
119
+ );
120
+ });
121
+
122
+ export const demoAll = designPage(() => {
123
+
124
+ const isMobile = getDeviceInfo().deviceType === 'mobile';
125
+
126
+ const images = [
127
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
128
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
129
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
130
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
131
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
132
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
133
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
134
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
135
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
136
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
137
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
138
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
139
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
140
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
141
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
142
+ ];
143
+
144
+ return () => (
145
+ <DemoRow title="全部展示">
146
+ <div style={{ width: '600px' }}>
147
+ <StackCard>
148
+ {images.map(url => (
149
+ <StackCardItem key={url}>
150
+ <img src={url} style={{ display: 'block', maxWidth: isMobile ? '33.33vw' : undefined }}/>
151
+ </StackCardItem>
152
+ ))}
153
+ </StackCard>
154
+ </div>
155
+ </DemoRow>
156
+ );
157
+ });
158
+
159
+ export const demoAlignBottom = designPage(() => {
160
+
161
+ const isMobile = getDeviceInfo().deviceType === 'mobile';
162
+
163
+ const images = [
164
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
165
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
166
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
167
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
168
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
169
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
170
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
171
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
172
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
173
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
174
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
175
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
176
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
177
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
178
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
179
+ ];
180
+
181
+ return () => (
182
+ <DemoRow title="底部对齐">
183
+ <div style={{ width: '600px' }}>
184
+ <StackCard verticalAlign="bottom">
185
+ {images.map(url => (
186
+ <StackCardItem key={url}>
187
+ <img src={url}/>
188
+ </StackCardItem>
189
+ ))}
190
+ </StackCard>
191
+ </div>
192
+ </DemoRow>
193
+ );
194
+ });
195
+
196
+ export const demoRightAll = designPage(() => {
197
+
198
+ const isMobile = getDeviceInfo().deviceType === 'mobile';
199
+
200
+ const images = [
201
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
202
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
203
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
204
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
205
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
206
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
207
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
208
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
209
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
210
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
211
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
212
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
213
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
214
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
215
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
216
+ ];
217
+
218
+ return () => (
219
+ <DemoRow title="全部展示在右边">
220
+ <div style={{ width: '600px' }}>
221
+ <StackCard leftBufferCount={0} rightBufferCount={images.length}>
222
+ {images.map(url => (
223
+ <StackCardItem key={url}>
224
+ <img src={url} style={{ display: 'block', maxWidth: isMobile ? '33.33vw' : undefined }}/>
225
+ </StackCardItem>
226
+ ))}
227
+ </StackCard>
228
+ </div>
229
+ </DemoRow>
230
+ );
231
+ });
232
+
233
+
234
+ export const demoOffsetRate = designPage(() => {
235
+
236
+ const isMobile = getDeviceInfo().deviceType === 'mobile';
237
+
238
+ const images = [
239
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
240
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
241
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
242
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
243
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
244
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
245
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
246
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
247
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
248
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
249
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
250
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
251
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
252
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
253
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
254
+ ];
255
+
256
+ return () => (
257
+ <DemoRow title="设置偏移距离stackItemWidth">
258
+ <p>stackItemWidth默认为24,就是每一张卡片偏移24个px;这里设置为80</p>
259
+ <div style={{ width: '600px' }}>
260
+ <StackCard leftBufferCount={3} rightBufferCount={4} stackItemWidth={80}>
261
+ {images.map(url => (
262
+ <StackCardItem key={url}>
263
+ <img src={url} style={{ display: 'block', maxWidth: isMobile ? '33.33vw' : undefined }}/>
264
+ </StackCardItem>
265
+ ))}
266
+ </StackCard>
267
+ </div>
268
+ </DemoRow>
269
+ );
270
+ });
271
+
272
+
273
+ export const demoScaleRate = designPage(() => {
274
+
275
+ const isMobile = getDeviceInfo().deviceType === 'mobile';
276
+
277
+ const images = [
278
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
279
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
280
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
281
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
282
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
283
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
284
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
285
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
286
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
287
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
288
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
289
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
290
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
291
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
292
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
293
+ ];
294
+
295
+ return () => (
296
+ <DemoRow title="设置缩放比例scaleRate">
297
+ <p>scaleRate默认为0.1,就是每一张图片缩小10%,这里调整为0.25,也就是4张图之后的图片就小的看不见了</p>
298
+ <div style={{ width: '600px' }}>
299
+ <StackCard leftBufferCount={3} rightBufferCount={4} stackItemWidth={80} scaleRate={0.25}>
300
+ {images.map(url => (
301
+ <StackCardItem key={url}>
302
+ <img src={url} style={{ display: 'block', maxWidth: isMobile ? '33.33vw' : undefined }}/>
303
+ </StackCardItem>
304
+ ))}
305
+ </StackCard>
306
+ </div>
307
+ </DemoRow>
308
+ );
309
+ });
310
+
311
+ export const demoBinding = designPage(() => {
312
+ const images = [
313
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card15.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
314
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card14.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
315
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card13.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
316
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card12.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
317
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card11.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
318
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card10.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
319
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card9.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
320
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card8.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
321
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card7.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
322
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card6.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
323
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card5.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
324
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card4.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
325
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card3.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
326
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card2.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
327
+ "https://plain-assets.oss-cn-guangzhou.aliyuncs.com/card1.jpg?x-oss-process=image/resize,h_300,w_228,m_fill",
328
+ ];
329
+
330
+ const state = reactive({
331
+ current: 0
332
+ });
333
+
334
+ return () => (
335
+ <DemoRow title="双向绑定">
336
+ <div style={{ width: '300px', float: 'left' }}>
337
+ <StackCard leftBufferCount={0} rightBufferCount={3} v-model={state.current}>
338
+ {images.map(url => (
339
+ <StackCardItem key={url}>
340
+ <img src={url} style={{ display: 'block' }}/>
341
+ </StackCardItem>
342
+ ))}
343
+ </StackCard>
344
+ </div>
345
+ <div style={{ width: '300px', float: 'left' }}>
346
+ <StackCard leftBufferCount={0} rightBufferCount={3} v-model={state.current}>
347
+ {images.map(url => (
348
+ <StackCardItem key={url}>
349
+ <img src={url} style={{ display: 'block' }}/>
350
+ </StackCardItem>
351
+ ))}
352
+ </StackCard>
353
+ </div>
354
+ </DemoRow>
355
+ );
356
+ });
@@ -1,7 +1,7 @@
1
- import {computed, designPage, getComponentCls, classnames, reactive} from "plain-design-composition";
1
+ import {classnames, computed, designPage, getComponentCls, reactive} from "plain-design-composition";
2
2
  import data2 from '../../../data/data-2.json';
3
3
  import {DemoRow} from "../../Demo/DemoRow";
4
- import {Alert, ApplicationConfigurationProvider, Checkbox, VirtualList} from "../../../../packages";
4
+ import {Alert, Checkbox, VirtualList} from "../../../../packages";
5
5
 
6
6
  export const demo1 = designPage(() => {
7
7
 
@@ -26,10 +26,11 @@ export const demo1 = designPage(() => {
26
26
  <div style={{ width: '300px', height: '400px', backgroundColor: '#f6f6f6' }}>
27
27
  <VirtualList
28
28
  data={list.value} size={40} v-slots={{
29
- default: ({ item, index }) => (
29
+ default: ({ item, index, vIndex }) => (
30
30
  <div
31
31
  key={index}
32
32
  onClick={() => console.log(index, { ...item })}
33
+ data-idx={index}
33
34
  style={{
34
35
  ...item.color,
35
36
  height: '40px',
@@ -104,6 +105,7 @@ export const demo2 = designPage(() => {
104
105
  <div
105
106
  key={vIndex}
106
107
  data-vid={vid}
108
+ data-idx={index}
107
109
  onClick={() => console.log(vid, { ...item })}
108
110
  style={{
109
111
  ...item.color,
@@ -187,6 +189,7 @@ export const demo3 = designPage(() => {
187
189
  default: ({ item, index }) => (
188
190
  <div
189
191
  key={index}
192
+ data-idx={index}
190
193
  onClick={() => console.log(index, { ...item })}
191
194
  style={{
192
195
  ...item.color,
@@ -269,6 +272,7 @@ export const demo4 = designPage(() => {
269
272
  default: ({ item, index }) => (
270
273
  <div
271
274
  key={index}
275
+ data-idx={index}
272
276
  onClick={() => console.log(index, { ...item })}
273
277
  style={{
274
278
  ...item.color,
@@ -324,6 +328,7 @@ export const demo4 = designPage(() => {
324
328
  default: ({ item, index }) => (
325
329
  <div
326
330
  key={index}
331
+ data-idx={index}
327
332
  onClick={() => console.log(index, { ...item })}
328
333
  style={{
329
334
  ...item.color,
@@ -376,3 +381,84 @@ export const demo4 = designPage(() => {
376
381
  </DemoRow>
377
382
  );
378
383
  });
384
+
385
+
386
+ export const demo2Horizontal = designPage(() => {
387
+
388
+ const sourceColors = ['secondary', 'primary', 'success', 'warn', 'error'];
389
+ let colors: string[] = [];
390
+ const getRandomColor = () => {
391
+ if (colors.length === 0) {colors = [...sourceColors];}
392
+ const palette = colors.splice(Math.floor(Math.random() * colors.length), 1);
393
+ const backgroundColor = `var(--${getComponentCls(`${palette}-1`)})`;
394
+ const color = `var(--${getComponentCls(`${palette}-6`)})`;
395
+ return { backgroundColor, color };
396
+ };
397
+ const list = computed(() => data2.slice(0, 188).map(item => ({ ...item, color: getRandomColor() })));
398
+
399
+ return () => (
400
+ <DemoRow title={'横向虚拟滚动'}>
401
+ <div style={{ width: '400px', height: '100px', backgroundColor: '#f6f6f6' }}>
402
+ <VirtualList
403
+ data={list.value}
404
+ size={60 * 3}
405
+ dynamicSize
406
+ horizontal
407
+ v-slots={{
408
+ default: ({ item, vid, index, vIndex }) => (
409
+ <div
410
+ key={vIndex}
411
+ data-vid={vid}
412
+ data-idx={index}
413
+ onClick={() => console.log(vid, { ...item })}
414
+ style={{
415
+ ...item.color,
416
+ width: item.size * 3 + 'px',
417
+ display: 'inline-block',
418
+ height: '100px'
419
+ }}
420
+ >
421
+ <div
422
+ style={{
423
+ width: '40px',
424
+ backgroundColor: 'var(--custom-secondary-2)',
425
+ height: '100%',
426
+ overflow: 'hidden',
427
+ display: 'inline-flex',
428
+ alignItems: 'center',
429
+ justifyContent: 'center',
430
+ }}>
431
+ {index + 1}
432
+ </div>
433
+ <div style={{
434
+ width: 'calc(100% - 40px)',
435
+ float: 'right',
436
+ height: '100%',
437
+ padding: '0 12px',
438
+ display: 'flex',
439
+ justifyContent: 'center',
440
+ flexDirection: 'column',
441
+ boxSizing: 'border-box',
442
+ }}>
443
+ <div style={{
444
+ fontSize: '12px',
445
+ display: 'flex',
446
+ justifyContent: 'space-between'
447
+ }}>
448
+ <span>{item.name}</span>
449
+ <span>{item.date}</span>
450
+ </div>
451
+ <div style={{
452
+ textAlign: 'right',
453
+ color: 'white'
454
+ }}>
455
+ {item.star}
456
+ </div>
457
+ </div>
458
+ </div>
459
+ )
460
+ }}/>
461
+ </div>
462
+ </DemoRow>
463
+ );
464
+ });