feffery_utils_components 0.2.0-rc20 → 0.2.0-rc22

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 (55) hide show
  1. package/DESCRIPTION +1 -1
  2. package/NAMESPACE +2 -0
  3. package/Project.toml +1 -1
  4. package/README.md +1 -1
  5. package/feffery_utils_components/FefferyGrid.py +13 -8
  6. package/feffery_utils_components/FefferyListenDrag.py +51 -0
  7. package/feffery_utils_components/FefferyListenDrop.py +103 -0
  8. package/feffery_utils_components/_imports_.py +4 -0
  9. package/feffery_utils_components/async-feffery_animated_3d_background_p5.js +1 -1
  10. package/feffery_utils_components/async-feffery_animated_3d_background_three.js +1 -1
  11. package/feffery_utils_components/async-feffery_animated_image.js +1 -1
  12. package/feffery_utils_components/async-feffery_aplayer.js +1 -1
  13. package/feffery_utils_components/async-feffery_auto_animate.js +1 -1
  14. package/feffery_utils_components/async-feffery_auto_fit.js +2 -2
  15. package/feffery_utils_components/async-feffery_burger.js +1 -1
  16. package/feffery_utils_components/async-feffery_captcha.js +1 -1
  17. package/feffery_utils_components/async-feffery_color_pickers.js +1 -1
  18. package/feffery_utils_components/async-feffery_dom2image.js +2 -2
  19. package/feffery_utils_components/async-feffery_dplayer.js +1 -1
  20. package/feffery_utils_components/async-feffery_emoji_picker.js +1 -1
  21. package/feffery_utils_components/async-feffery_excel_preview.js +1 -1
  22. package/feffery_utils_components/async-feffery_extra_spinner.js +1 -1
  23. package/feffery_utils_components/async-feffery_fancy_button.js +1 -1
  24. package/feffery_utils_components/async-feffery_grid.js +1 -1
  25. package/feffery_utils_components/async-feffery_http_requests.js +1 -1
  26. package/feffery_utils_components/async-feffery_image_cropper.js +1 -1
  27. package/feffery_utils_components/async-feffery_json_viewer.js +1 -1
  28. package/feffery_utils_components/async-feffery_local_large_storage.js +1 -1
  29. package/feffery_utils_components/async-feffery_markdown_editor.js +2 -2
  30. package/feffery_utils_components/async-feffery_motion.js +1 -1
  31. package/feffery_utils_components/async-feffery_music_player.js +1 -1
  32. package/feffery_utils_components/async-feffery_photo_sphere_viewer.js +1 -1
  33. package/feffery_utils_components/async-feffery_photo_sphere_viewer.js.LICENSE.txt +8 -2
  34. package/feffery_utils_components/async-feffery_resizable.js +1 -1
  35. package/feffery_utils_components/async-feffery_rich_text_editor.js +3 -3
  36. package/feffery_utils_components/async-feffery_rnd.js +1 -1
  37. package/feffery_utils_components/async-feffery_seamless_scroll.js +1 -1
  38. package/feffery_utils_components/async-feffery_shortcut_panel.js +16 -16
  39. package/feffery_utils_components/async-feffery_slider_captcha.js +1 -1
  40. package/feffery_utils_components/async-feffery_sortable.js +1 -1
  41. package/feffery_utils_components/async-feffery_vditor.js +1 -1
  42. package/feffery_utils_components/async-feffery_word_preview.js +1 -1
  43. package/feffery_utils_components/async-fuc-shared.js +15 -15
  44. package/feffery_utils_components/feffery_utils_components.min.js +7 -7
  45. package/feffery_utils_components/metadata.json +228 -3
  46. package/feffery_utils_components/package-info.json +1 -1
  47. package/package.json +1 -1
  48. package/src/lib/components/draggable/FefferyGrid.react.js +12 -1
  49. package/src/lib/components/listeners/FefferyListenDrag.react.js +83 -0
  50. package/src/lib/components/listeners/FefferyListenDrop.react.js +177 -0
  51. package/src/lib/components/styles.css +126 -124
  52. package/src/lib/fragments/draggable/FefferyGrid.react.js +112 -107
  53. package/src/lib/index.js +5 -1
  54. package/usage.py +61 -12
  55. package/.vscode/settings.json +0 -11
@@ -1,260 +1,262 @@
1
1
  /* 补充部分css变量 */
2
2
  :root {
3
- --sl-border-radius-circle: 50%;
4
- --sl-transition-fast: 150ms;
3
+ --sl-border-radius-circle: 50%;
4
+ --sl-transition-fast: 150ms;
5
5
  }
6
6
 
7
7
  body {
8
- margin: 0;
8
+ margin: 0;
9
9
  }
10
10
 
11
11
  .modal-footer {
12
- background: var(--ninja-footer-background);
13
- padding: 0.5em 1em;
14
- display: flex;
15
- border-top: var(--ninja-separate-border);
16
- color: var(--ninja-secondary-text-color);
12
+ background: var(--ninja-footer-background);
13
+ padding: 0.5em 1em;
14
+ display: flex;
15
+ border-top: var(--ninja-separate-border);
16
+ color: var(--ninja-secondary-text-color);
17
17
  }
18
18
 
19
19
  .modal-footer .help {
20
- display: flex;
21
- margin-right: 1em;
22
- align-items: center;
23
- font-size: 0.75em;
20
+ display: flex;
21
+ margin-right: 1em;
22
+ align-items: center;
23
+ font-size: 0.75em;
24
24
  }
25
25
 
26
26
  .ninja-examplekey {
27
- background: var(--ninja-secondary-background-color);
28
- padding: 0.06em 0.25em;
29
- border-radius: var(--ninja-key-border-radius);
30
- color: var(--ninja-secondary-text-color);
31
- height: 1em;
32
- margin-right: 0.5em;
33
- font-size: 1.25em;
34
- fill: currentColor;
27
+ background: var(--ninja-secondary-background-color);
28
+ padding: 0.06em 0.25em;
29
+ border-radius: var(--ninja-key-border-radius);
30
+ color: var(--ninja-secondary-text-color);
31
+ height: 1em;
32
+ margin-right: 0.5em;
33
+ font-size: 1.25em;
34
+ fill: currentColor;
35
35
  }
36
36
 
37
37
  .ninja-examplekey.esc {
38
- width: auto;
39
- height: auto;
40
- font-size: 1.1em;
38
+ width: auto;
39
+ height: auto;
40
+ font-size: 1.1em;
41
41
  }
42
42
 
43
43
  .ninja-examplekey.backspace {
44
- opacity: 0.7;
44
+ opacity: 0.7;
45
45
  }
46
46
 
47
47
  .feffery-split-vertical {
48
- border: none;
48
+ border: none;
49
49
  }
50
50
 
51
51
  .feffery-split-horizontal {
52
- display: flex;
53
- flex-direction: row;
52
+ display: flex;
53
+ flex-direction: row;
54
54
  }
55
55
 
56
56
  .gutter {
57
- position: relative;
57
+ position: relative;
58
58
  }
59
59
 
60
60
  .gutter.gutter-horizontal {
61
- cursor: col-resize;
61
+ cursor: col-resize;
62
62
  }
63
63
 
64
64
  .gutter.gutter-horizontal:after {
65
- content: "";
66
- box-sizing: border-box;
67
- border-right: 1px solid #e6e6e6;
68
- inset: 0;
69
- position: absolute;
70
- transform: translateX(-50%);
71
- left: 1px;
65
+ content: "";
66
+ box-sizing: border-box;
67
+ border-right: 1px solid #e6e6e6;
68
+ inset: 0;
69
+ position: absolute;
70
+ transform: translateX(-50%);
71
+ left: 1px;
72
72
  }
73
73
 
74
74
  .gutter.gutter-vertical {
75
- cursor: row-resize;
75
+ cursor: row-resize;
76
76
  }
77
77
 
78
78
  .gutter.gutter-horizontal:after {
79
- content: "";
80
- box-sizing: border-box;
81
- border-right: 1px solid #e6e6e6;
82
- inset: 0;
83
- position: absolute;
84
- transform: translateX(-50%);
85
- left: 1px;
79
+ content: "";
80
+ box-sizing: border-box;
81
+ border-right: 1px solid #e6e6e6;
82
+ inset: 0;
83
+ position: absolute;
84
+ transform: translateX(-50%);
85
+ left: 1px;
86
86
  }
87
87
 
88
88
  .gutter.gutter-vertical:after {
89
- content: "";
90
- box-sizing: border-box;
91
- border-bottom: 1px solid #e6e6e6;
92
- inset: 0;
93
- transform: translateY(-50%);
94
- position: absolute;
95
- top: 1px;
89
+ content: "";
90
+ box-sizing: border-box;
91
+ border-bottom: 1px solid #e6e6e6;
92
+ inset: 0;
93
+ transform: translateY(-50%);
94
+ position: absolute;
95
+ top: 1px;
96
96
  }
97
97
 
98
98
  .copy-to-clipboard-button:hover {
99
- opacity: 0.8;
99
+ opacity: 0.8;
100
100
  }
101
101
 
102
102
  /* FefferyHighlightWords高亮相关样式 */
103
103
  .feffery-highlight-words-highlight {
104
- background-color: #ffd54f;
105
- font-weight: "normal";
104
+ background-color: #ffd54f;
105
+ font-weight: "normal";
106
106
  }
107
107
 
108
108
  .sortable-helper {
109
- box-shadow: 0 0 7px rgba(0, 0, 0, 0.15);
109
+ box-shadow: 0 0 7px rgba(0, 0, 0, 0.15);
110
110
  }
111
111
 
112
112
  /* FefferyDiv阴影相关样式效果 */
113
113
  .feffery-div-always-shadow {
114
- box-shadow: 0 8px 24px rgba(81, 87, 103, 0.16);
114
+ box-shadow: 0 8px 24px rgba(81, 87, 103, 0.16);
115
115
  }
116
116
 
117
117
  .feffery-div-always-shadow-light {
118
- box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
118
+ box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
119
119
  }
120
120
 
121
121
  .feffery-div-hover-shadow {
122
- transition: box-shadow 0.3s ease-in-out;
122
+ transition: box-shadow 0.3s ease-in-out;
123
123
  }
124
124
 
125
125
  .feffery-div-hover-shadow-light {
126
- transition: box-shadow 0.3s ease-in-out;
126
+ transition: box-shadow 0.3s ease-in-out;
127
127
  }
128
128
 
129
129
  .feffery-div-hover-shadow:hover {
130
- box-shadow: 0 8px 24px rgba(81, 87, 103, 0.16);
131
- transition: box-shadow 0.3s ease-in-out;
130
+ box-shadow: 0 8px 24px rgba(81, 87, 103, 0.16);
131
+ transition: box-shadow 0.3s ease-in-out;
132
132
  }
133
133
 
134
134
  .feffery-div-hover-shadow-light:hover {
135
- box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
136
- transition: box-shadow 0.3s ease-in-out;
135
+ box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
136
+ transition: box-shadow 0.3s ease-in-out;
137
137
  }
138
138
 
139
139
  /* FefferyDiv滚动条相关样式 */
140
140
  .feffery-div-scrollbar-simple::-webkit-scrollbar {
141
- width: 6px;
141
+ width: 6px;
142
142
  }
143
143
 
144
144
  .feffery-div-scrollbar-simple::-webkit-scrollbar-thumb {
145
- background-color: #e4e6eb;
146
- outline: none;
147
- border-radius: 2px;
145
+ background-color: #e4e6eb;
146
+ outline: none;
147
+ border-radius: 2px;
148
148
  }
149
149
 
150
150
  .feffery-div-scrollbar-simple::-webkit-scrollbar-track {
151
- box-shadow: none;
152
- border-radius: 2px;
151
+ box-shadow: none;
152
+ border-radius: 2px;
153
153
  }
154
154
 
155
155
  .feffery-div-scrollbar-hidden::-webkit-scrollbar {
156
- width: 0;
156
+ width: 0;
157
157
  }
158
158
 
159
159
  .feffery-div-scrollbar-hidden {
160
- scrollbar-width: none;
160
+ scrollbar-width: none;
161
161
  }
162
162
 
163
163
  .github-picker {
164
- box-sizing: content-box;
164
+ box-sizing: content-box;
165
165
  }
166
166
 
167
167
  /* 可拖拽网格项样式美化 */
168
168
  .feffery-grid-item-container {
169
- position: relative;
170
- box-shadow: 0px 0px 6px rgba(0, 0, 0, .12);
171
- border-radius: 5px;
172
- padding: 6px 4px;
173
- background: #fff;
169
+ position: relative;
170
+ box-shadow: 0px 0px 6px rgba(0, 0, 0, .12);
171
+ border-radius: 5px;
172
+ padding: 6px 4px;
173
+ background: #fff;
174
+ box-sizing: border-box;
174
175
  }
175
176
 
176
177
  .feffery-grid-item-container>div {
177
- height: 100%;
178
- overflow: auto;
179
- padding: 25px 5px 5px 5px;
178
+ height: 100%;
179
+ overflow: auto;
180
+ padding: 25px 5px 5px 5px;
181
+ box-sizing: border-box;
180
182
  }
181
183
 
182
184
  .feffery-grid-item-container>div::-webkit-scrollbar-thumb {
183
- background-color: #bfbfbf;
184
- outline: none;
185
- border-radius: 6px;
185
+ background-color: #bfbfbf;
186
+ outline: none;
187
+ border-radius: 6px;
186
188
  }
187
189
 
188
190
  .feffery-grid-item-container>div::-webkit-scrollbar {
189
- width: 6px;
190
- height: 6px;
191
+ width: 6px;
192
+ height: 6px;
191
193
  }
192
194
 
193
195
  /* firefox */
194
196
  .feffery-grid-item-container>div {
195
- scrollbar-width: thin;
197
+ scrollbar-width: thin;
196
198
  }
197
199
 
198
200
  .feffery-grid-item-dragger {
199
- cursor: all-scroll;
200
- touch-action: none;
201
- border-radius: 5px;
202
- border: none;
203
- outline: none;
204
- appearance: none;
205
- background-color: transparent;
206
- -webkit-tap-highlight-color: transparent;
207
- position: absolute;
208
- top: 5px;
209
- right: 3px;
210
- display: flex;
211
- align-items: center;
212
- justify-content: center;
213
- height: 24px;
214
- transition: background 0.15s ease;
215
- z-index: 2;
201
+ cursor: all-scroll;
202
+ touch-action: none;
203
+ border-radius: 5px;
204
+ border: none;
205
+ outline: none;
206
+ appearance: none;
207
+ background-color: transparent;
208
+ -webkit-tap-highlight-color: transparent;
209
+ position: absolute;
210
+ top: 5px;
211
+ right: 3px;
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ height: 24px;
216
+ transition: background 0.15s ease;
217
+ z-index: 2;
216
218
  }
217
219
 
218
220
  .feffery-grid-item-dragger:hover {
219
- background: #f2f2f2;
220
- transition: background 0.15s ease;
221
+ background: #f2f2f2;
222
+ transition: background 0.15s ease;
221
223
  }
222
224
 
223
225
  .feffery-draggable-dragger {
224
- touch-action: none;
225
- border-radius: 5px;
226
- border: none;
227
- outline: none;
228
- appearance: none;
229
- background-color: transparent;
230
- -webkit-tap-highlight-color: transparent;
231
- display: flex;
232
- align-items: center;
233
- justify-content: center;
234
- height: 24px;
235
- transition: background 0.15s ease;
236
- z-index: 2;
226
+ touch-action: none;
227
+ border-radius: 5px;
228
+ border: none;
229
+ outline: none;
230
+ appearance: none;
231
+ background-color: transparent;
232
+ -webkit-tap-highlight-color: transparent;
233
+ display: flex;
234
+ align-items: center;
235
+ justify-content: center;
236
+ height: 24px;
237
+ transition: background 0.15s ease;
238
+ z-index: 2;
237
239
  }
238
240
 
239
241
  .feffery-draggable-dragger:hover {
240
- /* background: #f2f2f2; */
241
- transition: background 0.15s ease;
242
+ /* background: #f2f2f2; */
243
+ transition: background 0.15s ease;
242
244
  }
243
245
 
244
246
  .react-json-view svg {
245
- vertical-align: middle !important;
247
+ vertical-align: middle !important;
246
248
  }
247
249
 
248
250
  /* firefox */
249
251
  ninja-keys::part(actions-list) {
250
- scrollbar-width: thin;
252
+ scrollbar-width: thin;
251
253
  }
252
254
 
253
255
  ninja-keys {
254
- --ninja-z-index: 99999;
256
+ --ninja-z-index: 99999;
255
257
  }
256
258
 
257
259
  /* 提升卷帘拖拽条默认层级 */
258
260
  [data-rcs="handle-container"] {
259
- z-index: 500;
261
+ z-index: 500;
260
262
  }
@@ -8,84 +8,85 @@ import FefferyStyle from '../../components/FefferyStyle.react';
8
8
 
9
9
  const ResponsiveReactGridLayout = WidthProvider(Responsive);
10
10
 
11
- // 定义可拖拽网格组件FefferyGrid
11
+ /**
12
+ * 可拖拽网格组件FefferyGrid
13
+ */
12
14
  const FefferyGrid = (props) => {
15
+ let {
16
+ id,
17
+ children,
18
+ placeholder,
19
+ key,
20
+ style,
21
+ className,
22
+ height,
23
+ autoSize,
24
+ compactType,
25
+ margin,
26
+ containerPadding,
27
+ rowHeight,
28
+ isDraggable,
29
+ isResizable,
30
+ isBounded,
31
+ allowOverlap,
32
+ breakpoints,
33
+ cols,
34
+ layouts,
35
+ placeholderBackground,
36
+ placeholderOpacity,
37
+ placeholderBorder,
38
+ placeholderBorderRadius,
39
+ debug,
40
+ setProps,
41
+ loading_state
42
+ } = props;
43
+
44
+ children = parseChildrenToArray(children)
45
+
46
+ const gridItems = children && children.map(
47
+ (child) => {
48
+ let childProps = resolveChildProps(child)
49
+
50
+ return (
51
+ <div
52
+ className={'feffery-grid-item-container'}
53
+ {...omit(
54
+ ['setProps', 'persistence', 'persistence_type', 'persisted_props', 'id', 'className', 'style'],
55
+ childProps
56
+ )}>
57
+ <button className={"feffery-grid-item-dragger"}>
58
+ <svg viewBox={"0 0 20 20"} style={{ width: 16, fill: '#919eab' }}>
59
+ <path d={"M7 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 2zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 14zm6-8a2 2 0 1 0-.001-4.001A2 2 0 0 0 13 6zm0 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 14z"}>
60
+ </path>
61
+ </svg>
62
+ </button>
63
+ {child}
64
+ </div>
65
+ );
66
+ }
67
+ )
13
68
 
14
- // 取得必要属性或参数
15
- let {
16
- id,
17
- children,
18
- key,
19
- style,
20
- className,
21
- height,
22
- autoSize,
23
- compactType,
24
- margin,
25
- containerPadding,
26
- rowHeight,
27
- isDraggable,
28
- isResizable,
29
- isBounded,
30
- allowOverlap,
31
- breakpoints,
32
- cols,
33
- layouts,
34
- placeholderBackground,
35
- placeholderOpacity,
36
- placeholderBorder,
37
- placeholderBorderRadius,
38
- debug,
39
- setProps,
40
- loading_state
41
- } = props;
42
-
43
- children = parseChildrenToArray(children)
44
-
45
- const gridItems = children.map(
46
- (child) => {
47
- let childProps = resolveChildProps(child)
48
-
49
- return (
50
- <div
51
- className={'feffery-grid-item-container'}
52
- {...omit(
53
- ['setProps', 'persistence', 'persistence_type', 'persisted_props', 'id', 'className', 'style'],
54
- childProps
55
- )}>
56
- <button className={"feffery-grid-item-dragger"}>
57
- <svg viewBox={"0 0 20 20"} style={{ width: 16, fill: '#919eab' }}>
58
- <path d={"M7 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 2zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 7 14zm6-8a2 2 0 1 0-.001-4.001A2 2 0 0 0 13 6zm0 2a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 8zm0 6a2 2 0 1 0 .001 4.001A2 2 0 0 0 13 14z"}>
59
- </path>
60
- </svg>
61
- </button>
62
- {child}
63
- </div>
64
- );
65
- }
66
- )
67
-
68
- // 根据breakpoints为cols的通用模式重构数据结构
69
- let _cols = {};
70
- if (isNumber(cols)) {
71
- for (let key of Object.keys(breakpoints)) {
72
- _cols[key] = cols
69
+ // 根据breakpoints为cols的通用模式重构数据结构
70
+ let _cols = {};
71
+ if (isNumber(cols)) {
72
+ for (let key of Object.keys(breakpoints)) {
73
+ _cols[key] = cols
74
+ }
73
75
  }
74
- }
75
76
 
76
- // 根据breakpoints为layouts的通用模式重构数据结构
77
- let _layouts = {};
78
- if (Array.isArray(layouts)) {
79
- for (let key of Object.keys(breakpoints)) {
80
- _layouts[key] = layouts
77
+ // 根据breakpoints为layouts的通用模式重构数据结构
78
+ let _layouts = {};
79
+ if (Array.isArray(layouts)) {
80
+ for (let key of Object.keys(breakpoints)) {
81
+ _layouts[key] = layouts
82
+ }
81
83
  }
82
- }
83
84
 
84
- return (
85
- <React.Fragment >
86
- <FefferyStyle
87
- rawStyle={
88
- `
85
+ return (
86
+ <>
87
+ <FefferyStyle
88
+ rawStyle={
89
+ `
89
90
  .react-grid-layout {
90
91
  position: relative;
91
92
  transition: height 200ms ease;
@@ -206,42 +207,46 @@ const FefferyGrid = (props) => {
206
207
  transform: rotate(45deg);
207
208
  }
208
209
  `
209
- }
210
- />
211
- <ResponsiveReactGridLayout
212
- id={id}
213
- key={key}
214
- style={style}
215
- className={className}
216
- height={height}
217
- autoSize={autoSize}
218
- compactType={compactType}
219
- margin={margin}
220
- containerPadding={containerPadding}
221
- rowHeight={rowHeight}
222
- isDraggable={isDraggable}
223
- isResizable={isResizable}
224
- isBounded={isBounded}
225
- allowOverlap={allowOverlap}
226
- breakpoints={breakpoints}
227
- cols={isEmpty(_cols) ? cols : _cols}
228
- layouts={isEmpty(_layouts) ? layouts : _layouts}
229
- draggableHandle={'.feffery-grid-item-dragger'}
230
- onLayoutChange={(e) => {
231
- if (e) {
232
- if (debug) {
233
- console.log('layouts: ', e)
210
+ }
211
+ />
212
+ {
213
+ gridItems ?
214
+ <ResponsiveReactGridLayout
215
+ id={id}
216
+ key={key}
217
+ style={style}
218
+ className={className}
219
+ height={height}
220
+ autoSize={autoSize}
221
+ compactType={compactType}
222
+ margin={margin}
223
+ containerPadding={containerPadding}
224
+ rowHeight={rowHeight}
225
+ isDraggable={isDraggable}
226
+ isResizable={isResizable}
227
+ isBounded={isBounded}
228
+ allowOverlap={allowOverlap}
229
+ breakpoints={breakpoints}
230
+ cols={isEmpty(_cols) ? cols : _cols}
231
+ layouts={isEmpty(_layouts) ? layouts : _layouts}
232
+ draggableHandle={'.feffery-grid-item-dragger'}
233
+ onLayoutChange={(e) => {
234
+ if (e) {
235
+ if (debug) {
236
+ console.log('layouts: ', e)
237
+ }
238
+ setProps({ layouts: cloneDeep(e) })
239
+ }
240
+ }}
241
+ setProps={setProps}
242
+ useCSSTransforms={true}
243
+ data-dash-is-loading={
244
+ (loading_state && loading_state.is_loading) || undefined
245
+ } >{gridItems}</ResponsiveReactGridLayout> :
246
+ placeholder
234
247
  }
235
- setProps({ layouts: cloneDeep(e) })
236
- }
237
- }}
238
- setProps={setProps}
239
- useCSSTransforms={true}
240
- data-dash-is-loading={
241
- (loading_state && loading_state.is_loading) || undefined
242
- } >{gridItems}</ResponsiveReactGridLayout>
243
- </React.Fragment>
244
- );
248
+ </>
249
+ );
245
250
  }
246
251
 
247
252
  export default FefferyGrid;
package/src/lib/index.js CHANGED
@@ -113,6 +113,8 @@ import FefferyEventSource from "./components/FefferyEventSource.react.js";
113
113
  import FefferyEventListener from "./components/listeners/FefferyEventListener.react.js";
114
114
  import FefferyListenHover from "./components/listeners/FefferyListenHover.js";
115
115
  import FefferyListenElementSize from "./components/listeners/FefferyListenElementSize.react.js";
116
+ import FefferyListenDrag from './components/listeners/FefferyListenDrag.react';
117
+ import FefferyListenDrop from './components/listeners/FefferyListenDrop.react';
116
118
  import './components/styles.css';
117
119
 
118
120
  // 自定义sessionStorage事件监听
@@ -250,5 +252,7 @@ export {
250
252
  FefferyEventSource,
251
253
  FefferyEventListener,
252
254
  FefferyListenHover,
253
- FefferyListenElementSize
255
+ FefferyListenElementSize,
256
+ FefferyListenDrag,
257
+ FefferyListenDrop
254
258
  };