feffery_utils_components 0.0.9 → 0.0.13
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/DESCRIPTION +1 -1
- package/NAMESPACE +5 -5
- package/Project.toml +1 -1
- package/feffery_utils_components/FefferyCaptcha.py +5 -3
- package/feffery_utils_components/FefferyCircleColorPicker.py +47 -0
- package/{build/lib/feffery_utils_components/FefferyDashboard.py → feffery_utils_components/FefferyColorPicker.py} +9 -11
- package/feffery_utils_components/FefferyDiv.py +47 -0
- package/feffery_utils_components/FefferyExecuteJs.py +5 -3
- package/feffery_utils_components/FefferyExtraSpinner.py +49 -0
- package/feffery_utils_components/FefferyGuide.py +5 -3
- package/feffery_utils_components/FefferyScroll.py +57 -0
- package/feffery_utils_components/FefferyScrollbars.py +51 -0
- package/feffery_utils_components/FefferyShortcutPanel.py +5 -3
- package/feffery_utils_components/FefferySplit.py +8 -8
- package/feffery_utils_components/FefferySplitPane.py +5 -3
- package/feffery_utils_components/FefferySyntaxHighlighter.py +5 -3
- package/feffery_utils_components/FefferyTopProgress.py +5 -3
- package/feffery_utils_components/_imports_.py +10 -4
- package/feffery_utils_components/feffery_utils_components.min.js +50 -28
- package/feffery_utils_components/metadata.json +457 -202
- package/feffery_utils_components/package-info.json +7 -6
- package/package.json +7 -6
- package/src/FefferyUtilsComponents.jl +8 -5
- package/src/jl/''_fefferycirclecolorpicker.jl +26 -0
- package/src/jl/''_fefferycolorpicker.jl +22 -0
- package/src/jl/''_fefferydiv.jl +32 -0
- package/src/jl/''_fefferyextraspinner.jl +27 -0
- package/src/jl/''_fefferyscroll.jl +31 -0
- package/src/jl/''_fefferyscrollbars.jl +34 -0
- package/src/jl/''_fefferysplit.jl +1 -2
- package/src/lib/components/FefferyCaptcha.react.js +6 -2
- package/src/lib/components/FefferyDiv.react.js +85 -0
- package/src/lib/components/FefferyExecuteJs.react.js +21 -12
- package/src/lib/components/FefferyExtraSpinner.react.js +373 -0
- package/src/lib/components/FefferyGuide.react.js +11 -4
- package/src/lib/components/FefferyScroll.react.js +170 -0
- package/src/lib/components/FefferyScrollbars.react.js +104 -0
- package/src/lib/components/FefferyShortcutPanel.react.js +5 -1
- package/src/lib/components/FefferySyntaxHighlighter.react.js +6 -2
- package/src/lib/components/FefferyTopProgress.react.js +3 -3
- package/src/lib/components/colorPickers/FefferyCircleColorPicker.react.js +88 -0
- package/src/lib/components/nprogress.css +84 -0
- package/src/lib/components/split/FefferySplit.react.js +28 -42
- package/src/lib/components/styles.css +32 -8
- package/src/lib/index.js +11 -6
- package/usage.py +107 -39
- package/build/lib/feffery_utils_components/FefferyCaptcha.py +0 -51
- package/build/lib/feffery_utils_components/FefferyGuide.py +0 -69
- package/build/lib/feffery_utils_components/FefferyPasteImage.py +0 -56
- package/build/lib/feffery_utils_components/FefferyResizable.py +0 -39
- package/build/lib/feffery_utils_components/FefferyShortcutPanel.py +0 -51
- package/build/lib/feffery_utils_components/FefferySplit.py +0 -59
- package/build/lib/feffery_utils_components/FefferySplitPane.py +0 -48
- package/build/lib/feffery_utils_components/FefferySyntaxHighlighter.py +0 -52
- package/build/lib/feffery_utils_components/FefferyTopProgress.py +0 -68
- package/build/lib/feffery_utils_components/FefferyUtilsComponents.py +0 -40
- package/build/lib/feffery_utils_components/FefferyWaterMark.py +0 -64
- package/build/lib/feffery_utils_components/__init__.py +0 -89
- package/build/lib/feffery_utils_components/_imports_.py +0 -21
- package/build/lib/feffery_utils_components/feffery_utils_components.min.js +0 -407
- package/build/lib/feffery_utils_components/metadata.json +0 -1053
- package/build/lib/feffery_utils_components/package-info.json +0 -84
- package/src/lib/components/FefferyPasteImage.react.js +0 -168
- package/src/lib/components/FefferyWaterMark.react.js +0 -112
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BallSpinner,
|
|
3
|
+
SwapSpinner,
|
|
4
|
+
BarsSpinner,
|
|
5
|
+
GridSpinner,
|
|
6
|
+
WaveSpinner,
|
|
7
|
+
PushSpinner,
|
|
8
|
+
FireworkSpinner,
|
|
9
|
+
StageSpinner,
|
|
10
|
+
RingSpinner,
|
|
11
|
+
HeartSpinner,
|
|
12
|
+
GuardSpinner,
|
|
13
|
+
RotateSpinner,
|
|
14
|
+
SpiralSpinner,
|
|
15
|
+
PulseSpinner,
|
|
16
|
+
SwishSpinner,
|
|
17
|
+
SequenceSpinner,
|
|
18
|
+
ImpulseSpinner,
|
|
19
|
+
CubeSpinner,
|
|
20
|
+
MagicSpinner,
|
|
21
|
+
FlagSpinner,
|
|
22
|
+
FillSpinner,
|
|
23
|
+
SphereSpinner,
|
|
24
|
+
DominoSpinner,
|
|
25
|
+
GooSpinner,
|
|
26
|
+
CombSpinner,
|
|
27
|
+
PongSpinner,
|
|
28
|
+
RainbowSpinner,
|
|
29
|
+
HoopSpinner,
|
|
30
|
+
FlapperSpinner,
|
|
31
|
+
JellyfishSpinner,
|
|
32
|
+
TraceSpinner,
|
|
33
|
+
ClassicSpinner,
|
|
34
|
+
WhisperSpinner,
|
|
35
|
+
MetroSpinner
|
|
36
|
+
} from "react-spinners-kit";
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
// 定义额外加载动画组件FefferyExtraSpinner,api参考https://github.com/dmitrymorozoff/react-spinners-kit
|
|
40
|
+
// 取得必要属性或参数
|
|
41
|
+
const FefferyExtraSpinner = (props) => {
|
|
42
|
+
// 取得必要属性或参数
|
|
43
|
+
const {
|
|
44
|
+
id,
|
|
45
|
+
style,
|
|
46
|
+
className,
|
|
47
|
+
type,
|
|
48
|
+
size,
|
|
49
|
+
color,
|
|
50
|
+
frontColor,
|
|
51
|
+
backColor,
|
|
52
|
+
loading_state
|
|
53
|
+
} = props;
|
|
54
|
+
|
|
55
|
+
let spinner;
|
|
56
|
+
|
|
57
|
+
if (type === 'ball') {
|
|
58
|
+
spinner = <BallSpinner
|
|
59
|
+
size={size || 40}
|
|
60
|
+
color={color}
|
|
61
|
+
frontColor={frontColor}
|
|
62
|
+
backColor={backColor}
|
|
63
|
+
/>;
|
|
64
|
+
} else if (type === 'swap') {
|
|
65
|
+
spinner = <SwapSpinner
|
|
66
|
+
size={size || 40}
|
|
67
|
+
color={color}
|
|
68
|
+
frontColor={frontColor}
|
|
69
|
+
backColor={backColor}
|
|
70
|
+
/>;
|
|
71
|
+
} else if (type === 'bars') {
|
|
72
|
+
spinner = <BarsSpinner
|
|
73
|
+
size={size || 40}
|
|
74
|
+
color={color}
|
|
75
|
+
frontColor={frontColor}
|
|
76
|
+
backColor={backColor}
|
|
77
|
+
/>;
|
|
78
|
+
} else if (type === 'grid') {
|
|
79
|
+
spinner = <GridSpinner
|
|
80
|
+
size={size || 40}
|
|
81
|
+
color={color}
|
|
82
|
+
frontColor={frontColor}
|
|
83
|
+
backColor={backColor}
|
|
84
|
+
/>;
|
|
85
|
+
} else if (type === 'wave') {
|
|
86
|
+
spinner = <WaveSpinner
|
|
87
|
+
size={size || 40}
|
|
88
|
+
color={color}
|
|
89
|
+
frontColor={frontColor}
|
|
90
|
+
backColor={backColor}
|
|
91
|
+
/>;
|
|
92
|
+
} else if (type === 'push') {
|
|
93
|
+
spinner = <PushSpinner
|
|
94
|
+
size={size || 40}
|
|
95
|
+
color={color}
|
|
96
|
+
frontColor={frontColor}
|
|
97
|
+
backColor={backColor}
|
|
98
|
+
/>;
|
|
99
|
+
} else if (type === 'firework') {
|
|
100
|
+
spinner = <FireworkSpinner
|
|
101
|
+
size={size || 40}
|
|
102
|
+
color={color}
|
|
103
|
+
frontColor={frontColor}
|
|
104
|
+
backColor={backColor}
|
|
105
|
+
/>;
|
|
106
|
+
} else if (type === 'stage') {
|
|
107
|
+
spinner = <StageSpinner
|
|
108
|
+
size={size || 40}
|
|
109
|
+
color={color}
|
|
110
|
+
frontColor={frontColor}
|
|
111
|
+
backColor={backColor}
|
|
112
|
+
/>;
|
|
113
|
+
} else if (type === 'ring') {
|
|
114
|
+
spinner = <RingSpinner
|
|
115
|
+
size={size || 40}
|
|
116
|
+
color={color}
|
|
117
|
+
frontColor={frontColor}
|
|
118
|
+
backColor={backColor}
|
|
119
|
+
/>;
|
|
120
|
+
} else if (type === 'heart') {
|
|
121
|
+
spinner = <HeartSpinner
|
|
122
|
+
size={size || 40}
|
|
123
|
+
color={color}
|
|
124
|
+
frontColor={frontColor}
|
|
125
|
+
backColor={backColor}
|
|
126
|
+
/>;
|
|
127
|
+
} else if (type === 'guard') {
|
|
128
|
+
spinner = <GuardSpinner
|
|
129
|
+
size={size || 40}
|
|
130
|
+
color={color}
|
|
131
|
+
frontColor={frontColor}
|
|
132
|
+
backColor={backColor}
|
|
133
|
+
/>;
|
|
134
|
+
} else if (type === 'rotate') {
|
|
135
|
+
spinner = <RotateSpinner
|
|
136
|
+
size={size || 40}
|
|
137
|
+
color={color}
|
|
138
|
+
frontColor={frontColor}
|
|
139
|
+
backColor={backColor}
|
|
140
|
+
/>;
|
|
141
|
+
} else if (type === 'spiral') {
|
|
142
|
+
spinner = <SpiralSpinner
|
|
143
|
+
size={size || 40}
|
|
144
|
+
color={color}
|
|
145
|
+
frontColor={frontColor}
|
|
146
|
+
backColor={backColor}
|
|
147
|
+
/>;
|
|
148
|
+
} else if (type === 'pulse') {
|
|
149
|
+
spinner = <PulseSpinner
|
|
150
|
+
size={size || 40}
|
|
151
|
+
color={color}
|
|
152
|
+
frontColor={frontColor}
|
|
153
|
+
backColor={backColor}
|
|
154
|
+
/>;
|
|
155
|
+
} else if (type === 'swish') {
|
|
156
|
+
spinner = <SwishSpinner
|
|
157
|
+
size={size || 40}
|
|
158
|
+
color={color}
|
|
159
|
+
frontColor={frontColor}
|
|
160
|
+
backColor={backColor}
|
|
161
|
+
/>;
|
|
162
|
+
} else if (type === 'sequence') {
|
|
163
|
+
spinner = <SequenceSpinner
|
|
164
|
+
size={size || 40}
|
|
165
|
+
color={color}
|
|
166
|
+
frontColor={frontColor}
|
|
167
|
+
backColor={backColor}
|
|
168
|
+
/>;
|
|
169
|
+
} else if (type === 'impulse') {
|
|
170
|
+
spinner = <ImpulseSpinner
|
|
171
|
+
size={size || 40}
|
|
172
|
+
color={color}
|
|
173
|
+
frontColor={frontColor}
|
|
174
|
+
backColor={backColor}
|
|
175
|
+
/>;
|
|
176
|
+
} else if (type === 'cube') {
|
|
177
|
+
spinner = <CubeSpinner
|
|
178
|
+
size={size || 40}
|
|
179
|
+
color={color}
|
|
180
|
+
frontColor={frontColor}
|
|
181
|
+
backColor={backColor}
|
|
182
|
+
/>;
|
|
183
|
+
} else if (type === 'magic') {
|
|
184
|
+
spinner = <MagicSpinner
|
|
185
|
+
size={size || 40}
|
|
186
|
+
color={color}
|
|
187
|
+
frontColor={frontColor}
|
|
188
|
+
backColor={backColor}
|
|
189
|
+
/>;
|
|
190
|
+
} else if (type === 'flag') {
|
|
191
|
+
spinner = <FlagSpinner
|
|
192
|
+
size={size || 40}
|
|
193
|
+
color={color}
|
|
194
|
+
frontColor={frontColor}
|
|
195
|
+
backColor={backColor}
|
|
196
|
+
/>;
|
|
197
|
+
} else if (type === 'fill') {
|
|
198
|
+
spinner = <FillSpinner
|
|
199
|
+
size={size || 40}
|
|
200
|
+
color={color}
|
|
201
|
+
frontColor={frontColor}
|
|
202
|
+
backColor={backColor}
|
|
203
|
+
/>;
|
|
204
|
+
} else if (type === 'sphere') {
|
|
205
|
+
spinner = <SphereSpinner
|
|
206
|
+
size={size || 40}
|
|
207
|
+
color={color}
|
|
208
|
+
frontColor={frontColor}
|
|
209
|
+
backColor={backColor}
|
|
210
|
+
/>;
|
|
211
|
+
} else if (type === 'domino') {
|
|
212
|
+
spinner = <DominoSpinner
|
|
213
|
+
size={size || 40}
|
|
214
|
+
color={color}
|
|
215
|
+
frontColor={frontColor}
|
|
216
|
+
backColor={backColor}
|
|
217
|
+
/>;
|
|
218
|
+
} else if (type === 'goo') {
|
|
219
|
+
spinner = <GooSpinner
|
|
220
|
+
size={size || 40}
|
|
221
|
+
color={color}
|
|
222
|
+
frontColor={frontColor}
|
|
223
|
+
backColor={backColor}
|
|
224
|
+
/>;
|
|
225
|
+
} else if (type === 'comb') {
|
|
226
|
+
spinner = <CombSpinner
|
|
227
|
+
size={size || 40}
|
|
228
|
+
color={color}
|
|
229
|
+
frontColor={frontColor}
|
|
230
|
+
backColor={backColor}
|
|
231
|
+
/>;
|
|
232
|
+
} else if (type === 'pong') {
|
|
233
|
+
spinner = <PongSpinner
|
|
234
|
+
size={size || 40}
|
|
235
|
+
color={color}
|
|
236
|
+
frontColor={frontColor}
|
|
237
|
+
backColor={backColor}
|
|
238
|
+
/>;
|
|
239
|
+
} else if (type === 'rainbow') {
|
|
240
|
+
spinner = <RainbowSpinner
|
|
241
|
+
size={size || 40}
|
|
242
|
+
color={color}
|
|
243
|
+
frontColor={frontColor}
|
|
244
|
+
backColor={backColor}
|
|
245
|
+
/>;
|
|
246
|
+
} else if (type === 'hoop') {
|
|
247
|
+
spinner = <HoopSpinner
|
|
248
|
+
size={size || 40}
|
|
249
|
+
color={color}
|
|
250
|
+
frontColor={frontColor}
|
|
251
|
+
backColor={backColor}
|
|
252
|
+
/>;
|
|
253
|
+
} else if (type === 'flapper') {
|
|
254
|
+
spinner = <FlapperSpinner
|
|
255
|
+
size={size || 40}
|
|
256
|
+
color={color}
|
|
257
|
+
frontColor={frontColor}
|
|
258
|
+
backColor={backColor}
|
|
259
|
+
/>;
|
|
260
|
+
} else if (type === 'jellyfish') {
|
|
261
|
+
spinner = <JellyfishSpinner
|
|
262
|
+
size={size || 40}
|
|
263
|
+
color={color}
|
|
264
|
+
frontColor={frontColor}
|
|
265
|
+
backColor={backColor}
|
|
266
|
+
/>;
|
|
267
|
+
} else if (type === 'trace') {
|
|
268
|
+
spinner = <TraceSpinner
|
|
269
|
+
size={size || 40}
|
|
270
|
+
color={color}
|
|
271
|
+
frontColor={frontColor}
|
|
272
|
+
backColor={backColor}
|
|
273
|
+
/>;
|
|
274
|
+
} else if (type === 'classic') {
|
|
275
|
+
spinner = <ClassicSpinner
|
|
276
|
+
size={size || 40}
|
|
277
|
+
color={color}
|
|
278
|
+
frontColor={frontColor}
|
|
279
|
+
backColor={backColor}
|
|
280
|
+
/>;
|
|
281
|
+
} else if (type === 'whisper') {
|
|
282
|
+
spinner = <WhisperSpinner
|
|
283
|
+
size={size || 40}
|
|
284
|
+
color={color}
|
|
285
|
+
frontColor={frontColor}
|
|
286
|
+
backColor={backColor}
|
|
287
|
+
/>;
|
|
288
|
+
} else if (type === 'metro') {
|
|
289
|
+
spinner = <MetroSpinner
|
|
290
|
+
size={size || 40}
|
|
291
|
+
color={color}
|
|
292
|
+
frontColor={frontColor}
|
|
293
|
+
backColor={backColor}
|
|
294
|
+
/>;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return <div
|
|
298
|
+
id={id}
|
|
299
|
+
style={{
|
|
300
|
+
...{
|
|
301
|
+
display: 'flex',
|
|
302
|
+
justifyContent: 'center'
|
|
303
|
+
},
|
|
304
|
+
...style
|
|
305
|
+
}}
|
|
306
|
+
className={className}
|
|
307
|
+
data-dash-is-loading={
|
|
308
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
309
|
+
}>
|
|
310
|
+
{spinner}
|
|
311
|
+
</div>;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
// 定义参数或属性
|
|
316
|
+
FefferyExtraSpinner.propTypes = {
|
|
317
|
+
// 部件id
|
|
318
|
+
id: PropTypes.string,
|
|
319
|
+
|
|
320
|
+
style: PropTypes.object,
|
|
321
|
+
|
|
322
|
+
className: PropTypes.string,
|
|
323
|
+
|
|
324
|
+
// 加载动画类型
|
|
325
|
+
type: PropTypes.oneOf([
|
|
326
|
+
"ball", "swap", "bars", "grid", "wave", "push", "firework",
|
|
327
|
+
"stage", "ring", "heart", "guard", "rotate", "spiral", "pulse",
|
|
328
|
+
"swish", "sequence", "impulse", "cube", "magic", "flag", "fill",
|
|
329
|
+
"sphere", "domino", "goo", "comb", "pong", "rainbow", "hoop",
|
|
330
|
+
"flapper", "jellyfish", "trace", "classic", "whisper", "metro"
|
|
331
|
+
]),
|
|
332
|
+
|
|
333
|
+
// 设置尺寸
|
|
334
|
+
size: PropTypes.number,
|
|
335
|
+
|
|
336
|
+
// 设置尺寸值单位,默认为'px'
|
|
337
|
+
sizeUnit: PropTypes.string,
|
|
338
|
+
|
|
339
|
+
// 设置颜色
|
|
340
|
+
color: PropTypes.string,
|
|
341
|
+
|
|
342
|
+
// 设置前景色
|
|
343
|
+
frontColor: PropTypes.string,
|
|
344
|
+
|
|
345
|
+
// 设置背景色
|
|
346
|
+
backColor: PropTypes.string,
|
|
347
|
+
|
|
348
|
+
loading_state: PropTypes.shape({
|
|
349
|
+
/**
|
|
350
|
+
* Determines if the component is loading or not
|
|
351
|
+
*/
|
|
352
|
+
is_loading: PropTypes.bool,
|
|
353
|
+
/**
|
|
354
|
+
* Holds which property is loading
|
|
355
|
+
*/
|
|
356
|
+
prop_name: PropTypes.string,
|
|
357
|
+
/**
|
|
358
|
+
* Holds the name of the component that is loading
|
|
359
|
+
*/
|
|
360
|
+
component_name: PropTypes.string
|
|
361
|
+
})
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
// 设置默认参数
|
|
365
|
+
FefferyExtraSpinner.defaultProps = {
|
|
366
|
+
sizeUnit: 'px',
|
|
367
|
+
type: 'ball',
|
|
368
|
+
color: '#1890ff',
|
|
369
|
+
frontColor: '#def6ff',
|
|
370
|
+
backColor: '#1890ff'
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
export default FefferyExtraSpinner;
|
|
@@ -25,6 +25,7 @@ const FefferyGuide = (props) => {
|
|
|
25
25
|
okText,
|
|
26
26
|
step,
|
|
27
27
|
setProps,
|
|
28
|
+
loading_state
|
|
28
29
|
} = props;
|
|
29
30
|
|
|
30
31
|
// 返回向页面注入的快捷键监听
|
|
@@ -47,7 +48,10 @@ const FefferyGuide = (props) => {
|
|
|
47
48
|
prevText={prevText}
|
|
48
49
|
showPreviousBtn={showPreviousBtn}
|
|
49
50
|
okText={okText}
|
|
50
|
-
step={step}
|
|
51
|
+
step={step}
|
|
52
|
+
data-dash-is-loading={
|
|
53
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
54
|
+
} />
|
|
51
55
|
);
|
|
52
56
|
}
|
|
53
57
|
|
|
@@ -89,9 +93,12 @@ FefferyGuide.propTypes = {
|
|
|
89
93
|
// 设置展示面板的描述内容
|
|
90
94
|
content: PropTypes.string,
|
|
91
95
|
|
|
92
|
-
// 设置展示面板相对锚点的方位,可选的有'bottom-left'
|
|
96
|
+
// 设置展示面板相对锚点的方位,可选的有'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',
|
|
97
|
+
// 'right-top', 'right-bottom',默认为'bottom'
|
|
93
98
|
placement: PropTypes.oneOf([
|
|
94
|
-
'bottom
|
|
99
|
+
'top', 'bottom', 'left', 'right', 'top-left', 'top-right',
|
|
100
|
+
'bottom-left', 'bottom-right', 'left-top', 'left-bottom',
|
|
101
|
+
'right-top', 'right-bottom'
|
|
95
102
|
]),
|
|
96
103
|
|
|
97
104
|
// 设置展示面板的像素偏移量
|
|
@@ -116,7 +123,7 @@ FefferyGuide.propTypes = {
|
|
|
116
123
|
// 设置蒙版层的类名
|
|
117
124
|
maskClassName: PropTypes.string,
|
|
118
125
|
|
|
119
|
-
// 设置是否展示蒙板层,默认为true
|
|
126
|
+
// 设置是否展示蒙板层,默认为true
|
|
120
127
|
mask: PropTypes.bool,
|
|
121
128
|
|
|
122
129
|
// 设置展示面板是否添加箭头,默认为true
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { animateScroll as scroll, scroller } from 'react-scroll'
|
|
3
|
+
|
|
4
|
+
// 定义滚动操作组件FefferyScroll,api参数参考https://github.com/fisshy/react-scroll
|
|
5
|
+
const FefferyScroll = (props) => {
|
|
6
|
+
// 取得必要属性或参数
|
|
7
|
+
let {
|
|
8
|
+
id,
|
|
9
|
+
scrollMode,
|
|
10
|
+
executeScroll,
|
|
11
|
+
scrollTopOffset,
|
|
12
|
+
scrollRelativeOffset,
|
|
13
|
+
scrollTargetId,
|
|
14
|
+
duration,
|
|
15
|
+
smooth,
|
|
16
|
+
delay,
|
|
17
|
+
containerId,
|
|
18
|
+
offset,
|
|
19
|
+
setProps,
|
|
20
|
+
loading_state
|
|
21
|
+
} = props;
|
|
22
|
+
|
|
23
|
+
if (executeScroll && scrollMode) {
|
|
24
|
+
if (scrollMode === 'to-top') {
|
|
25
|
+
scroll.scrollToTop({
|
|
26
|
+
duration,
|
|
27
|
+
smooth,
|
|
28
|
+
delay,
|
|
29
|
+
containerId,
|
|
30
|
+
offset
|
|
31
|
+
})
|
|
32
|
+
} else if (scrollMode === 'to-bottom') {
|
|
33
|
+
scroll.scrollToBottom({
|
|
34
|
+
duration,
|
|
35
|
+
smooth,
|
|
36
|
+
delay,
|
|
37
|
+
containerId,
|
|
38
|
+
offset
|
|
39
|
+
})
|
|
40
|
+
} else if (scrollMode === 'top-offset') {
|
|
41
|
+
scroll.scrollTo(
|
|
42
|
+
scrollTopOffset,
|
|
43
|
+
{
|
|
44
|
+
duration,
|
|
45
|
+
smooth,
|
|
46
|
+
delay,
|
|
47
|
+
containerId,
|
|
48
|
+
offset
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
} else if (scrollMode === 'relative-offset') {
|
|
52
|
+
scroll.scrollMore(
|
|
53
|
+
scrollRelativeOffset,
|
|
54
|
+
{
|
|
55
|
+
duration,
|
|
56
|
+
smooth,
|
|
57
|
+
delay,
|
|
58
|
+
containerId,
|
|
59
|
+
offset
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
} else {
|
|
63
|
+
scroller.scrollTo(
|
|
64
|
+
scrollTargetId,
|
|
65
|
+
{
|
|
66
|
+
duration,
|
|
67
|
+
smooth,
|
|
68
|
+
delay,
|
|
69
|
+
containerId,
|
|
70
|
+
offset
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// 重置executeScroll为false
|
|
76
|
+
setProps({
|
|
77
|
+
executeScroll: false
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
<div id={id}
|
|
83
|
+
data-dash-is-loading={
|
|
84
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
85
|
+
} />
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// 定义参数或属性
|
|
90
|
+
FefferyScroll.propTypes = {
|
|
91
|
+
// 部件id
|
|
92
|
+
id: PropTypes.string,
|
|
93
|
+
|
|
94
|
+
// 设置页面滚动模式,可选的有'top'、'bottom'、'top-offset'、'relative-offset'、'target'
|
|
95
|
+
scrollMode: PropTypes.oneOf([
|
|
96
|
+
'to-top', 'to-bottom', 'top-offset', 'relative-offset', 'target'
|
|
97
|
+
]),
|
|
98
|
+
|
|
99
|
+
// 用于指示是否进行滚动操作,默认为false
|
|
100
|
+
// 在回调中可executeScroll参数Output为true从而触发新一次滚动
|
|
101
|
+
// 每次由executeScroll=true触发的滚动完成后,executeScroll会自动恢复为false
|
|
102
|
+
executeScroll: PropTypes.bool,
|
|
103
|
+
|
|
104
|
+
// 当scrollMode='top-offset'时,用于设置滚动终点距离页面顶端的像素
|
|
105
|
+
scrollTopOffset: PropTypes.number,
|
|
106
|
+
|
|
107
|
+
// 当scrollMode='relative-offset'时,用于设置相对滚动的像素距离,负数则为向上滚动
|
|
108
|
+
scrollRelativeOffset: PropTypes.number,
|
|
109
|
+
|
|
110
|
+
// 当scrollMode='target'时,用于设置滚动目标元素的id信息
|
|
111
|
+
scrollTargetId: PropTypes.string,
|
|
112
|
+
|
|
113
|
+
// 用于设置滚动过程耗时(单位:毫秒)
|
|
114
|
+
duration: PropTypes.number,
|
|
115
|
+
|
|
116
|
+
// 用于设置滚动过程动画模式
|
|
117
|
+
smooth: PropTypes.oneOf([
|
|
118
|
+
'linear',
|
|
119
|
+
'easeInQuad',
|
|
120
|
+
'easeOutQuad',
|
|
121
|
+
'easeInOutQuad',
|
|
122
|
+
'easeInCubic',
|
|
123
|
+
'easeOutCubic',
|
|
124
|
+
'easeInOutCubic',
|
|
125
|
+
'easeInQuart',
|
|
126
|
+
'easeOutQuart',
|
|
127
|
+
'easeInOutQuart',
|
|
128
|
+
'easeInQuint',
|
|
129
|
+
'easeOutQuint',
|
|
130
|
+
'easeInOutQuint'
|
|
131
|
+
]),
|
|
132
|
+
|
|
133
|
+
// 用于设置滚动延时(单位:毫秒)
|
|
134
|
+
delay: PropTypes.number,
|
|
135
|
+
|
|
136
|
+
// 当滚动目标位于局部滚动条内时,用于设置局部滚动条所在的容器id信息
|
|
137
|
+
containerId: PropTypes.string,
|
|
138
|
+
|
|
139
|
+
// 设置滚动过程的额外偏移像素距离
|
|
140
|
+
offset: PropTypes.number,
|
|
141
|
+
|
|
142
|
+
loading_state: PropTypes.shape({
|
|
143
|
+
/**
|
|
144
|
+
* Determines if the component is loading or not
|
|
145
|
+
*/
|
|
146
|
+
is_loading: PropTypes.bool,
|
|
147
|
+
/**
|
|
148
|
+
* Holds which property is loading
|
|
149
|
+
*/
|
|
150
|
+
prop_name: PropTypes.string,
|
|
151
|
+
/**
|
|
152
|
+
* Holds the name of the component that is loading
|
|
153
|
+
*/
|
|
154
|
+
component_name: PropTypes.string
|
|
155
|
+
}),
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Dash-assigned callback that should be called to report property changes
|
|
159
|
+
* to Dash, to make them available for callbacks.
|
|
160
|
+
*/
|
|
161
|
+
setProps: PropTypes.func
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
// 设置默认参数
|
|
165
|
+
FefferyScroll.defaultProps = {
|
|
166
|
+
executeScroll: false,
|
|
167
|
+
scrollMode: 'to-top'
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export default FefferyScroll;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import SimpleBarReact from "simplebar-react";
|
|
2
|
+
import "simplebar/src/simplebar.css";
|
|
3
|
+
|
|
4
|
+
// 定义自定义滚动条容器组件FefferyScrollbars
|
|
5
|
+
const FefferyScrollbars = (props) => {
|
|
6
|
+
// 取得必要属性或参数
|
|
7
|
+
const {
|
|
8
|
+
id,
|
|
9
|
+
children,
|
|
10
|
+
style,
|
|
11
|
+
className,
|
|
12
|
+
autoHide,
|
|
13
|
+
classNames,
|
|
14
|
+
forceVisible,
|
|
15
|
+
timeout,
|
|
16
|
+
scrollbarMinSize,
|
|
17
|
+
scrollbarMaxSize,
|
|
18
|
+
loading_state
|
|
19
|
+
} = props;
|
|
20
|
+
|
|
21
|
+
return <SimpleBarReact
|
|
22
|
+
id={id}
|
|
23
|
+
style={style}
|
|
24
|
+
className={className}
|
|
25
|
+
autoHide={autoHide}
|
|
26
|
+
classNames={classNames}
|
|
27
|
+
forceVisible={forceVisible}
|
|
28
|
+
timeout={timeout}
|
|
29
|
+
scrollbarMinSize={scrollbarMinSize}
|
|
30
|
+
scrollbarMaxSize={scrollbarMaxSize}
|
|
31
|
+
data-dash-is-loading={
|
|
32
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
33
|
+
} >
|
|
34
|
+
{children}
|
|
35
|
+
</ SimpleBarReact>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
// 定义参数或属性
|
|
40
|
+
FefferyScrollbars.propTypes = {
|
|
41
|
+
// 部件id
|
|
42
|
+
id: PropTypes.string,
|
|
43
|
+
|
|
44
|
+
children: PropTypes.node,
|
|
45
|
+
|
|
46
|
+
style: PropTypes.object,
|
|
47
|
+
|
|
48
|
+
className: PropTypes.string,
|
|
49
|
+
|
|
50
|
+
// 设置是否在无操作时自动隐藏滚动条,默认为true
|
|
51
|
+
autoHide: PropTypes.bool,
|
|
52
|
+
|
|
53
|
+
// 针对各组成部分单独设置自定义css类名
|
|
54
|
+
classNames: PropTypes.exact({
|
|
55
|
+
// 内容区域容器
|
|
56
|
+
content: PropTypes.string,
|
|
57
|
+
// 正在滚动的内容容器
|
|
58
|
+
scrollContent: PropTypes.string,
|
|
59
|
+
// 滚动条
|
|
60
|
+
scrollbar: PropTypes.string,
|
|
61
|
+
// 滚动条滑块
|
|
62
|
+
track: PropTypes.string
|
|
63
|
+
}),
|
|
64
|
+
|
|
65
|
+
// 设置滑块区域是否强制可见
|
|
66
|
+
forceVisible: PropTypes.oneOfType([
|
|
67
|
+
PropTypes.bool,
|
|
68
|
+
PropTypes.oneOf(['x', 'y'])
|
|
69
|
+
]),
|
|
70
|
+
|
|
71
|
+
// 设置滑块自动隐藏的毫秒数,默认为1000
|
|
72
|
+
timeout: PropTypes.number,
|
|
73
|
+
|
|
74
|
+
// 设置滚动条最小像素长度,默认为25
|
|
75
|
+
scrollbarMinSize: PropTypes.number,
|
|
76
|
+
|
|
77
|
+
// 设置滚动条最大像素长度,默认为0,代表无限制
|
|
78
|
+
scrollbarMaxSize: PropTypes.number,
|
|
79
|
+
|
|
80
|
+
loading_state: PropTypes.shape({
|
|
81
|
+
/**
|
|
82
|
+
* Determines if the component is loading or not
|
|
83
|
+
*/
|
|
84
|
+
is_loading: PropTypes.bool,
|
|
85
|
+
/**
|
|
86
|
+
* Holds which property is loading
|
|
87
|
+
*/
|
|
88
|
+
prop_name: PropTypes.string,
|
|
89
|
+
/**
|
|
90
|
+
* Holds the name of the component that is loading
|
|
91
|
+
*/
|
|
92
|
+
component_name: PropTypes.string
|
|
93
|
+
})
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// 设置默认参数
|
|
97
|
+
FefferyScrollbars.defaultProps = {
|
|
98
|
+
autoHide: true,
|
|
99
|
+
timeout: 1000,
|
|
100
|
+
scrollbarMinSize: 25,
|
|
101
|
+
forceVisible: false
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export default FefferyScrollbars;
|
|
@@ -89,6 +89,7 @@ const FefferyShortcutPanel = (props) => {
|
|
|
89
89
|
theme,
|
|
90
90
|
locale,
|
|
91
91
|
setProps,
|
|
92
|
+
loading_state
|
|
92
93
|
} = props;
|
|
93
94
|
|
|
94
95
|
data = data || [
|
|
@@ -180,7 +181,10 @@ const FefferyShortcutPanel = (props) => {
|
|
|
180
181
|
disableHotkeys={disableHotkeys}
|
|
181
182
|
openHotkey={openHotkey}
|
|
182
183
|
hotKeysJoinedView={true}
|
|
183
|
-
hideBreadcrumbs={true}
|
|
184
|
+
hideBreadcrumbs={true}
|
|
185
|
+
data-dash-is-loading={
|
|
186
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
187
|
+
} >
|
|
184
188
|
{locale === 'en' ? footerHtmlEn : footerHtmlZh}
|
|
185
189
|
</ ninja-keys>
|
|
186
190
|
);
|