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.
- package/DESCRIPTION +1 -1
- package/NAMESPACE +2 -0
- package/Project.toml +1 -1
- package/README.md +1 -1
- package/feffery_utils_components/FefferyGrid.py +13 -8
- package/feffery_utils_components/FefferyListenDrag.py +51 -0
- package/feffery_utils_components/FefferyListenDrop.py +103 -0
- package/feffery_utils_components/_imports_.py +4 -0
- package/feffery_utils_components/async-feffery_animated_3d_background_p5.js +1 -1
- package/feffery_utils_components/async-feffery_animated_3d_background_three.js +1 -1
- package/feffery_utils_components/async-feffery_animated_image.js +1 -1
- package/feffery_utils_components/async-feffery_aplayer.js +1 -1
- package/feffery_utils_components/async-feffery_auto_animate.js +1 -1
- package/feffery_utils_components/async-feffery_auto_fit.js +2 -2
- package/feffery_utils_components/async-feffery_burger.js +1 -1
- package/feffery_utils_components/async-feffery_captcha.js +1 -1
- package/feffery_utils_components/async-feffery_color_pickers.js +1 -1
- package/feffery_utils_components/async-feffery_dom2image.js +2 -2
- package/feffery_utils_components/async-feffery_dplayer.js +1 -1
- package/feffery_utils_components/async-feffery_emoji_picker.js +1 -1
- package/feffery_utils_components/async-feffery_excel_preview.js +1 -1
- package/feffery_utils_components/async-feffery_extra_spinner.js +1 -1
- package/feffery_utils_components/async-feffery_fancy_button.js +1 -1
- package/feffery_utils_components/async-feffery_grid.js +1 -1
- package/feffery_utils_components/async-feffery_http_requests.js +1 -1
- package/feffery_utils_components/async-feffery_image_cropper.js +1 -1
- package/feffery_utils_components/async-feffery_json_viewer.js +1 -1
- package/feffery_utils_components/async-feffery_local_large_storage.js +1 -1
- package/feffery_utils_components/async-feffery_markdown_editor.js +2 -2
- package/feffery_utils_components/async-feffery_motion.js +1 -1
- package/feffery_utils_components/async-feffery_music_player.js +1 -1
- package/feffery_utils_components/async-feffery_photo_sphere_viewer.js +1 -1
- package/feffery_utils_components/async-feffery_photo_sphere_viewer.js.LICENSE.txt +8 -2
- package/feffery_utils_components/async-feffery_resizable.js +1 -1
- package/feffery_utils_components/async-feffery_rich_text_editor.js +3 -3
- package/feffery_utils_components/async-feffery_rnd.js +1 -1
- package/feffery_utils_components/async-feffery_seamless_scroll.js +1 -1
- package/feffery_utils_components/async-feffery_shortcut_panel.js +16 -16
- package/feffery_utils_components/async-feffery_slider_captcha.js +1 -1
- package/feffery_utils_components/async-feffery_sortable.js +1 -1
- package/feffery_utils_components/async-feffery_vditor.js +1 -1
- package/feffery_utils_components/async-feffery_word_preview.js +1 -1
- package/feffery_utils_components/async-fuc-shared.js +15 -15
- package/feffery_utils_components/feffery_utils_components.min.js +7 -7
- package/feffery_utils_components/metadata.json +228 -3
- package/feffery_utils_components/package-info.json +1 -1
- package/package.json +1 -1
- package/src/lib/components/draggable/FefferyGrid.react.js +12 -1
- package/src/lib/components/listeners/FefferyListenDrag.react.js +83 -0
- package/src/lib/components/listeners/FefferyListenDrop.react.js +177 -0
- package/src/lib/components/styles.css +126 -124
- package/src/lib/fragments/draggable/FefferyGrid.react.js +112 -107
- package/src/lib/index.js +5 -1
- package/usage.py +61 -12
- package/.vscode/settings.json +0 -11
|
@@ -1,260 +1,262 @@
|
|
|
1
1
|
/* 补充部分css变量 */
|
|
2
2
|
:root {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
--sl-border-radius-circle: 50%;
|
|
4
|
+
--sl-transition-fast: 150ms;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
body {
|
|
8
|
-
|
|
8
|
+
margin: 0;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.modal-footer {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
width: auto;
|
|
39
|
+
height: auto;
|
|
40
|
+
font-size: 1.1em;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.ninja-examplekey.backspace {
|
|
44
|
-
|
|
44
|
+
opacity: 0.7;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
.feffery-split-vertical {
|
|
48
|
-
|
|
48
|
+
border: none;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
.feffery-split-horizontal {
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: row;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
.gutter {
|
|
57
|
-
|
|
57
|
+
position: relative;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
.gutter.gutter-horizontal {
|
|
61
|
-
|
|
61
|
+
cursor: col-resize;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
.gutter.gutter-horizontal:after {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
75
|
+
cursor: row-resize;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
.gutter.gutter-horizontal:after {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
99
|
+
opacity: 0.8;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
/* FefferyHighlightWords高亮相关样式 */
|
|
103
103
|
.feffery-highlight-words-highlight {
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
background-color: #ffd54f;
|
|
105
|
+
font-weight: "normal";
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
.sortable-helper {
|
|
109
|
-
|
|
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
|
-
|
|
114
|
+
box-shadow: 0 8px 24px rgba(81, 87, 103, 0.16);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
.feffery-div-always-shadow-light {
|
|
118
|
-
|
|
118
|
+
box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
.feffery-div-hover-shadow {
|
|
122
|
-
|
|
122
|
+
transition: box-shadow 0.3s ease-in-out;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
.feffery-div-hover-shadow-light {
|
|
126
|
-
|
|
126
|
+
transition: box-shadow 0.3s ease-in-out;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
.feffery-div-hover-shadow:hover {
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
136
|
-
|
|
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
|
-
|
|
141
|
+
width: 6px;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
.feffery-div-scrollbar-simple::-webkit-scrollbar-thumb {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
|
|
152
|
-
|
|
151
|
+
box-shadow: none;
|
|
152
|
+
border-radius: 2px;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
.feffery-div-scrollbar-hidden::-webkit-scrollbar {
|
|
156
|
-
|
|
156
|
+
width: 0;
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
.feffery-div-scrollbar-hidden {
|
|
160
|
-
|
|
160
|
+
scrollbar-width: none;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
.github-picker {
|
|
164
|
-
|
|
164
|
+
box-sizing: content-box;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
/* 可拖拽网格项样式美化 */
|
|
168
168
|
.feffery-grid-item-container {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
178
|
-
|
|
179
|
-
|
|
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
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
190
|
-
|
|
191
|
+
width: 6px;
|
|
192
|
+
height: 6px;
|
|
191
193
|
}
|
|
192
194
|
|
|
193
195
|
/* firefox */
|
|
194
196
|
.feffery-grid-item-container>div {
|
|
195
|
-
|
|
197
|
+
scrollbar-width: thin;
|
|
196
198
|
}
|
|
197
199
|
|
|
198
200
|
.feffery-grid-item-dragger {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
-
|
|
220
|
-
|
|
221
|
+
background: #f2f2f2;
|
|
222
|
+
transition: background 0.15s ease;
|
|
221
223
|
}
|
|
222
224
|
|
|
223
225
|
.feffery-draggable-dragger {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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
|
-
|
|
241
|
-
|
|
242
|
+
/* background: #f2f2f2; */
|
|
243
|
+
transition: background 0.15s ease;
|
|
242
244
|
}
|
|
243
245
|
|
|
244
246
|
.react-json-view svg {
|
|
245
|
-
|
|
247
|
+
vertical-align: middle !important;
|
|
246
248
|
}
|
|
247
249
|
|
|
248
250
|
/* firefox */
|
|
249
251
|
ninja-keys::part(actions-list) {
|
|
250
|
-
|
|
252
|
+
scrollbar-width: thin;
|
|
251
253
|
}
|
|
252
254
|
|
|
253
255
|
ninja-keys {
|
|
254
|
-
|
|
256
|
+
--ninja-z-index: 99999;
|
|
255
257
|
}
|
|
256
258
|
|
|
257
259
|
/* 提升卷帘拖拽条默认层级 */
|
|
258
260
|
[data-rcs="handle-container"] {
|
|
259
|
-
|
|
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
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
|
|
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
|
};
|