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
|
@@ -4383,26 +4383,33 @@
|
|
|
4383
4383
|
"required": false,
|
|
4384
4384
|
"description": "\u4f20\u5165\u5185\u90e8\u7684\u5404\u4e2aFefferyGridItem\u5143\u7d20"
|
|
4385
4385
|
},
|
|
4386
|
+
"placeholder": {
|
|
4387
|
+
"type": {
|
|
4388
|
+
"name": "node"
|
|
4389
|
+
},
|
|
4390
|
+
"required": false,
|
|
4391
|
+
"description": "\u5360\u4f4d\u5143\u7d20\uff0c\u7528\u4e8e\u5728children\u4e3a\u7a7a\u65f6\u5448\u73b0\u76f8\u5173\u63d0\u793a\u4fe1\u606f"
|
|
4392
|
+
},
|
|
4386
4393
|
"key": {
|
|
4387
4394
|
"type": {
|
|
4388
4395
|
"name": "string"
|
|
4389
4396
|
},
|
|
4390
4397
|
"required": false,
|
|
4391
|
-
"description": "\
|
|
4398
|
+
"description": "\u5f3a\u5236\u5237\u65b0\u7528"
|
|
4392
4399
|
},
|
|
4393
4400
|
"style": {
|
|
4394
4401
|
"type": {
|
|
4395
4402
|
"name": "object"
|
|
4396
4403
|
},
|
|
4397
4404
|
"required": false,
|
|
4398
|
-
"description": ""
|
|
4405
|
+
"description": "\u5f53\u524d\u7ec4\u4ef6css\u6837\u5f0f"
|
|
4399
4406
|
},
|
|
4400
4407
|
"className": {
|
|
4401
4408
|
"type": {
|
|
4402
4409
|
"name": "string"
|
|
4403
4410
|
},
|
|
4404
4411
|
"required": false,
|
|
4405
|
-
"description": ""
|
|
4412
|
+
"description": "\u5f53\u524d\u7ec4\u4ef6css\u7c7b\u540d"
|
|
4406
4413
|
},
|
|
4407
4414
|
"height": {
|
|
4408
4415
|
"type": {
|
|
@@ -18338,6 +18345,224 @@
|
|
|
18338
18345
|
}
|
|
18339
18346
|
}
|
|
18340
18347
|
},
|
|
18348
|
+
"src/lib/components/listeners/FefferyListenDrag.react.js": {
|
|
18349
|
+
"description": "\u62d6\u62fd\u4e8b\u4ef6\u76d1\u542c\u7ec4\u4ef6FefferyListenDrag",
|
|
18350
|
+
"displayName": "FefferyListenDrag",
|
|
18351
|
+
"methods": [],
|
|
18352
|
+
"props": {
|
|
18353
|
+
"id": {
|
|
18354
|
+
"type": {
|
|
18355
|
+
"name": "string"
|
|
18356
|
+
},
|
|
18357
|
+
"required": false,
|
|
18358
|
+
"description": "\u7ec4\u4ef6id"
|
|
18359
|
+
},
|
|
18360
|
+
"targetSelector": {
|
|
18361
|
+
"type": {
|
|
18362
|
+
"name": "string"
|
|
18363
|
+
},
|
|
18364
|
+
"required": false,
|
|
18365
|
+
"description": "\u62d6\u62fd\u4e8b\u4ef6\u76d1\u542c\u76ee\u6807\u9009\u62e9\u5668\u89c4\u5219\u5b57\u7b26\u4e32"
|
|
18366
|
+
},
|
|
18367
|
+
"data": {
|
|
18368
|
+
"type": {
|
|
18369
|
+
"name": "any"
|
|
18370
|
+
},
|
|
18371
|
+
"required": false,
|
|
18372
|
+
"description": "\u5f53\u524d\u76d1\u542c\u76ee\u6807\u6240\u643a\u5e26\u7684\u6570\u636e\uff0c\u914d\u5408**FefferyListenDrop**\u4f7f\u7528"
|
|
18373
|
+
},
|
|
18374
|
+
"isDragging": {
|
|
18375
|
+
"type": {
|
|
18376
|
+
"name": "bool"
|
|
18377
|
+
},
|
|
18378
|
+
"required": false,
|
|
18379
|
+
"description": "\u76d1\u542c\u76ee\u6807\u662f\u5426\u5904\u4e8e\u62d6\u62fd\u4e2d\u72b6\u6001"
|
|
18380
|
+
},
|
|
18381
|
+
"setProps": {
|
|
18382
|
+
"type": {
|
|
18383
|
+
"name": "func"
|
|
18384
|
+
},
|
|
18385
|
+
"required": false,
|
|
18386
|
+
"description": "Dash-assigned callback that should be called to report property changes\r\nto Dash, to make them available for callbacks."
|
|
18387
|
+
},
|
|
18388
|
+
"loading_state": {
|
|
18389
|
+
"type": {
|
|
18390
|
+
"name": "shape",
|
|
18391
|
+
"value": {
|
|
18392
|
+
"is_loading": {
|
|
18393
|
+
"name": "bool",
|
|
18394
|
+
"description": "Determines if the component is loading or not",
|
|
18395
|
+
"required": false
|
|
18396
|
+
},
|
|
18397
|
+
"prop_name": {
|
|
18398
|
+
"name": "string",
|
|
18399
|
+
"description": "Holds which property is loading",
|
|
18400
|
+
"required": false
|
|
18401
|
+
},
|
|
18402
|
+
"component_name": {
|
|
18403
|
+
"name": "string",
|
|
18404
|
+
"description": "Holds the name of the component that is loading",
|
|
18405
|
+
"required": false
|
|
18406
|
+
}
|
|
18407
|
+
}
|
|
18408
|
+
},
|
|
18409
|
+
"required": false,
|
|
18410
|
+
"description": ""
|
|
18411
|
+
}
|
|
18412
|
+
}
|
|
18413
|
+
},
|
|
18414
|
+
"src/lib/components/listeners/FefferyListenDrop.react.js": {
|
|
18415
|
+
"description": "\u653e\u7f6e\u4e8b\u4ef6\u76d1\u542c\u7ec4\u4ef6FefferyListenDrop",
|
|
18416
|
+
"displayName": "FefferyListenDrop",
|
|
18417
|
+
"methods": [],
|
|
18418
|
+
"props": {
|
|
18419
|
+
"id": {
|
|
18420
|
+
"type": {
|
|
18421
|
+
"name": "string"
|
|
18422
|
+
},
|
|
18423
|
+
"required": false,
|
|
18424
|
+
"description": "\u7ec4\u4ef6id"
|
|
18425
|
+
},
|
|
18426
|
+
"targetSelector": {
|
|
18427
|
+
"type": {
|
|
18428
|
+
"name": "string"
|
|
18429
|
+
},
|
|
18430
|
+
"required": false,
|
|
18431
|
+
"description": "\u653e\u7f6e\u4e8b\u4ef6\u76d1\u542c\u76ee\u6807\u5bb9\u5668\u9009\u62e9\u5668\u89c4\u5219\u5b57\u7b26\u4e32"
|
|
18432
|
+
},
|
|
18433
|
+
"dropEvent": {
|
|
18434
|
+
"type": {
|
|
18435
|
+
"name": "shape",
|
|
18436
|
+
"value": {
|
|
18437
|
+
"time": {
|
|
18438
|
+
"name": "number",
|
|
18439
|
+
"description": "\u4e8b\u4ef6\u5bf9\u5e94\u65f6\u95f4\u6233",
|
|
18440
|
+
"required": false
|
|
18441
|
+
},
|
|
18442
|
+
"data": {
|
|
18443
|
+
"name": "any",
|
|
18444
|
+
"description": "\u4e8b\u4ef6\u643a\u5e26\u6570\u636e",
|
|
18445
|
+
"required": false
|
|
18446
|
+
},
|
|
18447
|
+
"pageX": {
|
|
18448
|
+
"name": "number",
|
|
18449
|
+
"description": "\u4ee5\u9875\u9762\u6574\u4f53\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55x\u5750\u6807",
|
|
18450
|
+
"required": false
|
|
18451
|
+
},
|
|
18452
|
+
"pageY": {
|
|
18453
|
+
"name": "number",
|
|
18454
|
+
"description": "\u4ee5\u9875\u9762\u6574\u4f53\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55y\u5750\u6807",
|
|
18455
|
+
"required": false
|
|
18456
|
+
},
|
|
18457
|
+
"clientX": {
|
|
18458
|
+
"name": "number",
|
|
18459
|
+
"description": "\u4ee5\u6d4f\u89c8\u5668\u7a97\u53e3\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55x\u5750\u6807",
|
|
18460
|
+
"required": false
|
|
18461
|
+
},
|
|
18462
|
+
"clientY": {
|
|
18463
|
+
"name": "number",
|
|
18464
|
+
"description": "\u4ee5\u6d4f\u89c8\u5668\u7a97\u53e3\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55y\u5750\u6807",
|
|
18465
|
+
"required": false
|
|
18466
|
+
},
|
|
18467
|
+
"screenX": {
|
|
18468
|
+
"name": "number",
|
|
18469
|
+
"description": "\u4ee5\u5c4f\u5e55\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55x\u5750\u6807",
|
|
18470
|
+
"required": false
|
|
18471
|
+
},
|
|
18472
|
+
"screenY": {
|
|
18473
|
+
"name": "number",
|
|
18474
|
+
"description": "\u4ee5\u5c4f\u5e55\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55y\u5750\u6807",
|
|
18475
|
+
"required": false
|
|
18476
|
+
}
|
|
18477
|
+
}
|
|
18478
|
+
},
|
|
18479
|
+
"required": false,
|
|
18480
|
+
"description": "\u76d1\u542c\u6700\u8fd1\u4e00\u6b21\u57fa\u4e8eFefferyListenDrag\u7684\u5143\u7d20\u62d6\u62fd\u653e\u7f6e\u4e8b\u4ef6"
|
|
18481
|
+
},
|
|
18482
|
+
"isHovering": {
|
|
18483
|
+
"type": {
|
|
18484
|
+
"name": "bool"
|
|
18485
|
+
},
|
|
18486
|
+
"required": false,
|
|
18487
|
+
"description": "\u76d1\u542c\u653e\u7f6e\u4e8b\u4ef6\u76d1\u542c\u76ee\u6807\u5bb9\u5668\u662f\u5426\u6b63\u5904\u4e8e\u5f85\u653e\u7f6e\u9f20\u6807\u60ac\u505c\u72b6\u6001"
|
|
18488
|
+
},
|
|
18489
|
+
"hoverEvent": {
|
|
18490
|
+
"type": {
|
|
18491
|
+
"name": "shape",
|
|
18492
|
+
"value": {
|
|
18493
|
+
"time": {
|
|
18494
|
+
"name": "number",
|
|
18495
|
+
"description": "\u4e8b\u4ef6\u5bf9\u5e94\u65f6\u95f4\u6233",
|
|
18496
|
+
"required": false
|
|
18497
|
+
},
|
|
18498
|
+
"pageX": {
|
|
18499
|
+
"name": "number",
|
|
18500
|
+
"description": "\u4ee5\u9875\u9762\u6574\u4f53\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55x\u5750\u6807",
|
|
18501
|
+
"required": false
|
|
18502
|
+
},
|
|
18503
|
+
"pageY": {
|
|
18504
|
+
"name": "number",
|
|
18505
|
+
"description": "\u4ee5\u9875\u9762\u6574\u4f53\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55y\u5750\u6807",
|
|
18506
|
+
"required": false
|
|
18507
|
+
},
|
|
18508
|
+
"clientX": {
|
|
18509
|
+
"name": "number",
|
|
18510
|
+
"description": "\u4ee5\u6d4f\u89c8\u5668\u7a97\u53e3\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55x\u5750\u6807",
|
|
18511
|
+
"required": false
|
|
18512
|
+
},
|
|
18513
|
+
"clientY": {
|
|
18514
|
+
"name": "number",
|
|
18515
|
+
"description": "\u4ee5\u6d4f\u89c8\u5668\u7a97\u53e3\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55y\u5750\u6807",
|
|
18516
|
+
"required": false
|
|
18517
|
+
},
|
|
18518
|
+
"screenX": {
|
|
18519
|
+
"name": "number",
|
|
18520
|
+
"description": "\u4ee5\u5c4f\u5e55\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55x\u5750\u6807",
|
|
18521
|
+
"required": false
|
|
18522
|
+
},
|
|
18523
|
+
"screenY": {
|
|
18524
|
+
"name": "number",
|
|
18525
|
+
"description": "\u4ee5\u5c4f\u5e55\u5de6\u4e0a\u89d2\u4e3a\u539f\u70b9\uff0c\u8bb0\u5f55y\u5750\u6807",
|
|
18526
|
+
"required": false
|
|
18527
|
+
}
|
|
18528
|
+
}
|
|
18529
|
+
},
|
|
18530
|
+
"required": false,
|
|
18531
|
+
"description": "\u76d1\u542c\u6700\u8fd1\u4e00\u6b21\u6b63\u5904\u4e8e\u5f85\u653e\u7f6e\u9f20\u6807\u60ac\u505c\u72b6\u6001\u65f6\u7684\u4e8b\u4ef6"
|
|
18532
|
+
},
|
|
18533
|
+
"setProps": {
|
|
18534
|
+
"type": {
|
|
18535
|
+
"name": "func"
|
|
18536
|
+
},
|
|
18537
|
+
"required": false,
|
|
18538
|
+
"description": "Dash-assigned callback that should be called to report property changes\r\nto Dash, to make them available for callbacks."
|
|
18539
|
+
},
|
|
18540
|
+
"loading_state": {
|
|
18541
|
+
"type": {
|
|
18542
|
+
"name": "shape",
|
|
18543
|
+
"value": {
|
|
18544
|
+
"is_loading": {
|
|
18545
|
+
"name": "bool",
|
|
18546
|
+
"description": "Determines if the component is loading or not",
|
|
18547
|
+
"required": false
|
|
18548
|
+
},
|
|
18549
|
+
"prop_name": {
|
|
18550
|
+
"name": "string",
|
|
18551
|
+
"description": "Holds which property is loading",
|
|
18552
|
+
"required": false
|
|
18553
|
+
},
|
|
18554
|
+
"component_name": {
|
|
18555
|
+
"name": "string",
|
|
18556
|
+
"description": "Holds the name of the component that is loading",
|
|
18557
|
+
"required": false
|
|
18558
|
+
}
|
|
18559
|
+
}
|
|
18560
|
+
},
|
|
18561
|
+
"required": false,
|
|
18562
|
+
"description": ""
|
|
18563
|
+
}
|
|
18564
|
+
}
|
|
18565
|
+
},
|
|
18341
18566
|
"src/lib/components/listeners/FefferyListenElementSize.react.js": {
|
|
18342
18567
|
"description": "\u5143\u7d20\u5c3a\u5bf8\u76d1\u542c\u7ec4\u4ef6FefferyListenElementSize",
|
|
18343
18568
|
"displayName": "FefferyListenElementSize",
|
package/package.json
CHANGED
|
@@ -24,12 +24,23 @@ FefferyGrid.propTypes = {
|
|
|
24
24
|
children: PropTypes.node,
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* 占位元素,用于在children为空时呈现相关提示信息
|
|
28
|
+
*/
|
|
29
|
+
placeholder: PropTypes.node,
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 强制刷新用
|
|
28
33
|
*/
|
|
29
34
|
key: PropTypes.string,
|
|
30
35
|
|
|
36
|
+
/**
|
|
37
|
+
* 当前组件css样式
|
|
38
|
+
*/
|
|
31
39
|
style: PropTypes.object,
|
|
32
40
|
|
|
41
|
+
/**
|
|
42
|
+
* 当前组件css类名
|
|
43
|
+
*/
|
|
33
44
|
className: PropTypes.string,
|
|
34
45
|
|
|
35
46
|
/**
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { useDrag } from 'ahooks';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 拖拽事件监听组件FefferyListenDrag
|
|
6
|
+
*/
|
|
7
|
+
const FefferyListenDrag = (props) => {
|
|
8
|
+
const {
|
|
9
|
+
targetSelector,
|
|
10
|
+
data,
|
|
11
|
+
isDragging,
|
|
12
|
+
setProps,
|
|
13
|
+
loading_state
|
|
14
|
+
} = props;
|
|
15
|
+
|
|
16
|
+
useDrag(
|
|
17
|
+
data,
|
|
18
|
+
() => document.querySelector(targetSelector),
|
|
19
|
+
{
|
|
20
|
+
onDragStart: (e) => {
|
|
21
|
+
setProps({
|
|
22
|
+
isDragging: true
|
|
23
|
+
})
|
|
24
|
+
},
|
|
25
|
+
onDragEnd: (e) => {
|
|
26
|
+
setProps({
|
|
27
|
+
isDragging: false
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
return <></>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
FefferyListenDrag.propTypes = {
|
|
37
|
+
/**
|
|
38
|
+
* 组件id
|
|
39
|
+
*/
|
|
40
|
+
id: PropTypes.string,
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 拖拽事件监听目标选择器规则字符串
|
|
44
|
+
*/
|
|
45
|
+
targetSelector: PropTypes.string,
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 当前监听目标所携带的数据,配合**FefferyListenDrop**使用
|
|
49
|
+
*/
|
|
50
|
+
data: PropTypes.any,
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 监听目标是否处于拖拽中状态
|
|
54
|
+
*/
|
|
55
|
+
isDragging: PropTypes.bool,
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Dash-assigned callback that should be called to report property changes
|
|
59
|
+
* to Dash, to make them available for callbacks.
|
|
60
|
+
*/
|
|
61
|
+
setProps: PropTypes.func,
|
|
62
|
+
|
|
63
|
+
loading_state: PropTypes.shape({
|
|
64
|
+
/**
|
|
65
|
+
* Determines if the component is loading or not
|
|
66
|
+
*/
|
|
67
|
+
is_loading: PropTypes.bool,
|
|
68
|
+
/**
|
|
69
|
+
* Holds which property is loading
|
|
70
|
+
*/
|
|
71
|
+
prop_name: PropTypes.string,
|
|
72
|
+
/**
|
|
73
|
+
* Holds the name of the component that is loading
|
|
74
|
+
*/
|
|
75
|
+
component_name: PropTypes.string
|
|
76
|
+
})
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// 设置默认参数
|
|
80
|
+
FefferyListenDrag.defaultProps = {
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export default FefferyListenDrag;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { useDrop, useRequest } from 'ahooks';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 放置事件监听组件FefferyListenDrop
|
|
6
|
+
*/
|
|
7
|
+
const FefferyListenDrop = (props) => {
|
|
8
|
+
const {
|
|
9
|
+
targetSelector,
|
|
10
|
+
hoverEvent,
|
|
11
|
+
setProps,
|
|
12
|
+
loading_state
|
|
13
|
+
} = props;
|
|
14
|
+
|
|
15
|
+
const { run: onDragOver } = useRequest(
|
|
16
|
+
(e) => {
|
|
17
|
+
if (!(e.pageX === hoverEvent?.pageX && e.pageY === hoverEvent?.pageY)) {
|
|
18
|
+
setProps({
|
|
19
|
+
hoverEvent: {
|
|
20
|
+
time: Date.now(),
|
|
21
|
+
pageX: e.pageX,
|
|
22
|
+
pageY: e.pageY,
|
|
23
|
+
clientX: e.clientX,
|
|
24
|
+
clientY: e.clientY,
|
|
25
|
+
screenX: e.screenX,
|
|
26
|
+
screenY: e.screenY
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
throttleWait: 200,
|
|
33
|
+
manual: true
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
useDrop(
|
|
37
|
+
() => document.querySelector(targetSelector),
|
|
38
|
+
{
|
|
39
|
+
onDom: (content, e) => {
|
|
40
|
+
setProps({
|
|
41
|
+
dropEvent: {
|
|
42
|
+
time: Date.now(),
|
|
43
|
+
data: content,
|
|
44
|
+
pageX: e.pageX,
|
|
45
|
+
pageY: e.pageY,
|
|
46
|
+
clientX: e.clientX,
|
|
47
|
+
clientY: e.clientY,
|
|
48
|
+
screenX: e.screenX,
|
|
49
|
+
screenY: e.screenY
|
|
50
|
+
},
|
|
51
|
+
isHovering: false
|
|
52
|
+
})
|
|
53
|
+
},
|
|
54
|
+
onDragEnter: () => setProps({ isHovering: true }),
|
|
55
|
+
onDragLeave: () => setProps({ isHovering: false }),
|
|
56
|
+
onDragOver: onDragOver
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
return <></>;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
FefferyListenDrop.propTypes = {
|
|
64
|
+
/**
|
|
65
|
+
* 组件id
|
|
66
|
+
*/
|
|
67
|
+
id: PropTypes.string,
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 放置事件监听目标容器选择器规则字符串
|
|
71
|
+
*/
|
|
72
|
+
targetSelector: PropTypes.string,
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 监听最近一次基于FefferyListenDrag的元素拖拽放置事件
|
|
76
|
+
*/
|
|
77
|
+
dropEvent: PropTypes.shape({
|
|
78
|
+
/**
|
|
79
|
+
* 事件对应时间戳
|
|
80
|
+
*/
|
|
81
|
+
time: PropTypes.number,
|
|
82
|
+
/**
|
|
83
|
+
* 事件携带数据
|
|
84
|
+
*/
|
|
85
|
+
data: PropTypes.any,
|
|
86
|
+
/**
|
|
87
|
+
* 以页面整体左上角为原点,记录x坐标
|
|
88
|
+
*/
|
|
89
|
+
pageX: PropTypes.number,
|
|
90
|
+
/**
|
|
91
|
+
* 以页面整体左上角为原点,记录y坐标
|
|
92
|
+
*/
|
|
93
|
+
pageY: PropTypes.number,
|
|
94
|
+
/**
|
|
95
|
+
* 以浏览器窗口左上角为原点,记录x坐标
|
|
96
|
+
*/
|
|
97
|
+
clientX: PropTypes.number,
|
|
98
|
+
/**
|
|
99
|
+
* 以浏览器窗口左上角为原点,记录y坐标
|
|
100
|
+
*/
|
|
101
|
+
clientY: PropTypes.number,
|
|
102
|
+
/**
|
|
103
|
+
* 以屏幕左上角为原点,记录x坐标
|
|
104
|
+
*/
|
|
105
|
+
screenX: PropTypes.number,
|
|
106
|
+
/**
|
|
107
|
+
* 以屏幕左上角为原点,记录y坐标
|
|
108
|
+
*/
|
|
109
|
+
screenY: PropTypes.number,
|
|
110
|
+
}),
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 监听放置事件监听目标容器是否正处于待放置鼠标悬停状态
|
|
114
|
+
*/
|
|
115
|
+
isHovering: PropTypes.bool,
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* 监听最近一次正处于待放置鼠标悬停状态时的事件
|
|
119
|
+
*/
|
|
120
|
+
hoverEvent: PropTypes.shape({
|
|
121
|
+
/**
|
|
122
|
+
* 事件对应时间戳
|
|
123
|
+
*/
|
|
124
|
+
time: PropTypes.number,
|
|
125
|
+
/**
|
|
126
|
+
* 以页面整体左上角为原点,记录x坐标
|
|
127
|
+
*/
|
|
128
|
+
pageX: PropTypes.number,
|
|
129
|
+
/**
|
|
130
|
+
* 以页面整体左上角为原点,记录y坐标
|
|
131
|
+
*/
|
|
132
|
+
pageY: PropTypes.number,
|
|
133
|
+
/**
|
|
134
|
+
* 以浏览器窗口左上角为原点,记录x坐标
|
|
135
|
+
*/
|
|
136
|
+
clientX: PropTypes.number,
|
|
137
|
+
/**
|
|
138
|
+
* 以浏览器窗口左上角为原点,记录y坐标
|
|
139
|
+
*/
|
|
140
|
+
clientY: PropTypes.number,
|
|
141
|
+
/**
|
|
142
|
+
* 以屏幕左上角为原点,记录x坐标
|
|
143
|
+
*/
|
|
144
|
+
screenX: PropTypes.number,
|
|
145
|
+
/**
|
|
146
|
+
* 以屏幕左上角为原点,记录y坐标
|
|
147
|
+
*/
|
|
148
|
+
screenY: PropTypes.number,
|
|
149
|
+
}),
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Dash-assigned callback that should be called to report property changes
|
|
153
|
+
* to Dash, to make them available for callbacks.
|
|
154
|
+
*/
|
|
155
|
+
setProps: PropTypes.func,
|
|
156
|
+
|
|
157
|
+
loading_state: PropTypes.shape({
|
|
158
|
+
/**
|
|
159
|
+
* Determines if the component is loading or not
|
|
160
|
+
*/
|
|
161
|
+
is_loading: PropTypes.bool,
|
|
162
|
+
/**
|
|
163
|
+
* Holds which property is loading
|
|
164
|
+
*/
|
|
165
|
+
prop_name: PropTypes.string,
|
|
166
|
+
/**
|
|
167
|
+
* Holds the name of the component that is loading
|
|
168
|
+
*/
|
|
169
|
+
component_name: PropTypes.string
|
|
170
|
+
})
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// 设置默认参数
|
|
174
|
+
FefferyListenDrop.defaultProps = {
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export default FefferyListenDrop;
|