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.
Files changed (64) hide show
  1. package/DESCRIPTION +1 -1
  2. package/NAMESPACE +5 -5
  3. package/Project.toml +1 -1
  4. package/feffery_utils_components/FefferyCaptcha.py +5 -3
  5. package/feffery_utils_components/FefferyCircleColorPicker.py +47 -0
  6. package/{build/lib/feffery_utils_components/FefferyDashboard.py → feffery_utils_components/FefferyColorPicker.py} +9 -11
  7. package/feffery_utils_components/FefferyDiv.py +47 -0
  8. package/feffery_utils_components/FefferyExecuteJs.py +5 -3
  9. package/feffery_utils_components/FefferyExtraSpinner.py +49 -0
  10. package/feffery_utils_components/FefferyGuide.py +5 -3
  11. package/feffery_utils_components/FefferyScroll.py +57 -0
  12. package/feffery_utils_components/FefferyScrollbars.py +51 -0
  13. package/feffery_utils_components/FefferyShortcutPanel.py +5 -3
  14. package/feffery_utils_components/FefferySplit.py +8 -8
  15. package/feffery_utils_components/FefferySplitPane.py +5 -3
  16. package/feffery_utils_components/FefferySyntaxHighlighter.py +5 -3
  17. package/feffery_utils_components/FefferyTopProgress.py +5 -3
  18. package/feffery_utils_components/_imports_.py +10 -4
  19. package/feffery_utils_components/feffery_utils_components.min.js +50 -28
  20. package/feffery_utils_components/metadata.json +457 -202
  21. package/feffery_utils_components/package-info.json +7 -6
  22. package/package.json +7 -6
  23. package/src/FefferyUtilsComponents.jl +8 -5
  24. package/src/jl/''_fefferycirclecolorpicker.jl +26 -0
  25. package/src/jl/''_fefferycolorpicker.jl +22 -0
  26. package/src/jl/''_fefferydiv.jl +32 -0
  27. package/src/jl/''_fefferyextraspinner.jl +27 -0
  28. package/src/jl/''_fefferyscroll.jl +31 -0
  29. package/src/jl/''_fefferyscrollbars.jl +34 -0
  30. package/src/jl/''_fefferysplit.jl +1 -2
  31. package/src/lib/components/FefferyCaptcha.react.js +6 -2
  32. package/src/lib/components/FefferyDiv.react.js +85 -0
  33. package/src/lib/components/FefferyExecuteJs.react.js +21 -12
  34. package/src/lib/components/FefferyExtraSpinner.react.js +373 -0
  35. package/src/lib/components/FefferyGuide.react.js +11 -4
  36. package/src/lib/components/FefferyScroll.react.js +170 -0
  37. package/src/lib/components/FefferyScrollbars.react.js +104 -0
  38. package/src/lib/components/FefferyShortcutPanel.react.js +5 -1
  39. package/src/lib/components/FefferySyntaxHighlighter.react.js +6 -2
  40. package/src/lib/components/FefferyTopProgress.react.js +3 -3
  41. package/src/lib/components/colorPickers/FefferyCircleColorPicker.react.js +88 -0
  42. package/src/lib/components/nprogress.css +84 -0
  43. package/src/lib/components/split/FefferySplit.react.js +28 -42
  44. package/src/lib/components/styles.css +32 -8
  45. package/src/lib/index.js +11 -6
  46. package/usage.py +107 -39
  47. package/build/lib/feffery_utils_components/FefferyCaptcha.py +0 -51
  48. package/build/lib/feffery_utils_components/FefferyGuide.py +0 -69
  49. package/build/lib/feffery_utils_components/FefferyPasteImage.py +0 -56
  50. package/build/lib/feffery_utils_components/FefferyResizable.py +0 -39
  51. package/build/lib/feffery_utils_components/FefferyShortcutPanel.py +0 -51
  52. package/build/lib/feffery_utils_components/FefferySplit.py +0 -59
  53. package/build/lib/feffery_utils_components/FefferySplitPane.py +0 -48
  54. package/build/lib/feffery_utils_components/FefferySyntaxHighlighter.py +0 -52
  55. package/build/lib/feffery_utils_components/FefferyTopProgress.py +0 -68
  56. package/build/lib/feffery_utils_components/FefferyUtilsComponents.py +0 -40
  57. package/build/lib/feffery_utils_components/FefferyWaterMark.py +0 -64
  58. package/build/lib/feffery_utils_components/__init__.py +0 -89
  59. package/build/lib/feffery_utils_components/_imports_.py +0 -21
  60. package/build/lib/feffery_utils_components/feffery_utils_components.min.js +0 -407
  61. package/build/lib/feffery_utils_components/metadata.json +0 -1053
  62. package/build/lib/feffery_utils_components/package-info.json +0 -84
  63. package/src/lib/components/FefferyPasteImage.react.js +0 -168
  64. 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''left-bottom''bottom',默认为'bottom'
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-left', 'left-bottom', '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
  );