@hzab/form-render 1.6.2 → 1.6.4

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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # @hzab/form-render@1.6.3
2
+
3
+ fix: 修复LocationListPicker组件的Pupup弹窗在某些时候漂移的bug。
4
+
1
5
  # @hzab/form-render@1.6.2
2
6
 
3
7
  feat:自增列表组件新增删除二次确认功能
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/form-render",
3
- "version": "1.6.2",
3
+ "version": "1.6.4",
4
4
  "description": "",
5
5
  "main": "src",
6
6
  "scripts": {
@@ -1,7 +1,10 @@
1
1
  .popup-box {
2
- position: fixed;
2
+ position: absolute;
3
3
  z-index: 9;
4
4
  min-width: 200px;
5
+ left: 50%;
6
+ top: 50%;
7
+ transform: translate(-50%, -50%);
5
8
  padding: 20px;
6
9
  border-radius: 4px;
7
10
  background-color: #fff;
@@ -1,4 +1,4 @@
1
- import { useRef, forwardRef, useImperativeHandle, useState } from "react";
1
+ import { useRef, forwardRef, useImperativeHandle, useState, useEffect } from "react";
2
2
  import { createPortal } from "react-dom";
3
3
  import { Button } from "antd";
4
4
 
@@ -15,6 +15,7 @@ export interface IPopupProps {
15
15
  schema;
16
16
  initialValues?: Object;
17
17
  };
18
+ mountElement?: HTMLElement;
18
19
  }
19
20
 
20
21
  export interface IData {
@@ -24,7 +25,7 @@ export interface IData {
24
25
  }
25
26
 
26
27
  export const Popup = forwardRef((props: IPopupProps, parentRef) => {
27
- const { formProps = { schema: RangeSchema } } = props;
28
+ const { formProps = { schema: RangeSchema }, mountElement } = props;
28
29
 
29
30
  const [data, setData] = useState<IData>();
30
31
 
@@ -62,9 +63,10 @@ export const Popup = forwardRef((props: IPopupProps, parentRef) => {
62
63
 
63
64
  const schema = mergeSchema(AddressSchema, formProps?.schema ?? RangeSchema);
64
65
 
66
+
65
67
  return data
66
68
  ? createPortal(
67
- <div className="popup-box" style={{ top: data?.top, left: data?.left }}>
69
+ <div className="popup-box">
68
70
  <div className="popup-body">
69
71
  {/* TODO: schema 中插入地址字段 text 格式 */}
70
72
  <div>地址:{data?.address}</div>
@@ -82,7 +84,7 @@ export const Popup = forwardRef((props: IPopupProps, parentRef) => {
82
84
  <Button onClick={onCancel}>取消</Button>
83
85
  </div>
84
86
  </div>,
85
- document.body,
87
+ mountElement || document.body,
86
88
  )
87
89
  : null;
88
90
  });
@@ -48,6 +48,7 @@ export const LocationListPicker = observer((props) => {
48
48
  const currentItemRef = useRef();
49
49
  const popupRef = useRef();
50
50
  const isEditingRef = useRef();
51
+ const mapBoxRef = useRef(null)
51
52
 
52
53
  useEffect(() => {
53
54
  return () => {
@@ -469,7 +470,7 @@ export const LocationListPicker = observer((props) => {
469
470
 
470
471
  return (
471
472
  <div className="location-list-picker">
472
- <div className="map-box">
473
+ <div className="map-box" ref={mapBoxRef}>
473
474
  <AMapCom init={mapInit} loading={loading} markerIconConf={markerIconConf} />
474
475
  {!readOnly && !disabled && <MapSearch setPoint={setPoint} isAutoSearch={isAutoSearch} />}
475
476
  {showTip && (
@@ -485,7 +486,7 @@ export const LocationListPicker = observer((props) => {
485
486
  新增地址
486
487
  </Button>
487
488
  )}
488
- <Popup ref={popupRef} {...popupProps} />
489
+ <Popup ref={popupRef} mountElement={mapBoxRef.current} {...popupProps} />
489
490
  </div>
490
491
  <AddrList
491
492
  {...listProps}