@bifrostui/utils 1.4.2-beta.0 → 1.4.2-beta.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * 根据元素宽高判断是否超出边界,超出边界则重新定义方向
3
3
  */
4
- export declare const getNewDirectionLocation: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, }: {
4
+ export declare const getNewDirectionLocation: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, offsetSpacing, }: {
5
5
  rootOffset: any;
6
6
  arrowDirection: any;
7
7
  tipOffset: any;
8
8
  arrowLocation: any;
9
+ offsetSpacing: any;
9
10
  }) => {
10
11
  newArrowDirection: any;
11
12
  newArrowLocation: any;
@@ -13,19 +14,21 @@ export declare const getNewDirectionLocation: ({ rootOffset, arrowDirection, tip
13
14
  /**
14
15
  * 根据新的气泡位置和箭头位置 计算气泡位置以及箭头位置
15
16
  */
16
- export declare const getDirectionLocationStyle: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, }: {
17
+ export declare const getDirectionLocationStyle: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, offsetSpacing, }: {
17
18
  rootOffset: any;
18
19
  arrowDirection: any;
19
20
  tipOffset: any;
20
21
  arrowLocation: any;
22
+ offsetSpacing: any;
21
23
  }) => any;
22
24
  /**
23
25
  * 获取气泡位置和箭头位置
24
26
  */
25
- export declare const getStylesAndLocation: ({ childrenRef, arrowDirection, arrowLocation, selector, }: {
27
+ export declare const getStylesAndLocation: ({ childrenRef, arrowDirection, arrowLocation, offsetSpacing, selector, }: {
26
28
  childrenRef: any;
27
29
  arrowDirection: any;
28
30
  arrowLocation: any;
31
+ offsetSpacing: any;
29
32
  selector: any;
30
33
  }) => {
31
34
  styles: any;
@@ -33,9 +33,17 @@ const getNewDirectionLocation = ({
33
33
  rootOffset,
34
34
  arrowDirection,
35
35
  tipOffset,
36
- arrowLocation
36
+ arrowLocation,
37
+ offsetSpacing
37
38
  }) => {
38
- const { left: cLeft, right: cRight, top: cTop, bottom: cBottom } = rootOffset;
39
+ const {
40
+ left: cLeft,
41
+ right: cRight,
42
+ top: cTop,
43
+ bottom: cBottom,
44
+ width: cWidth,
45
+ height: cHeight
46
+ } = rootOffset;
39
47
  const { width, height } = tipOffset;
40
48
  const pgegWidth = document.documentElement.clientWidth || document.body.clientWidth;
41
49
  const pgegHeight = document.documentElement.clientHeight || document.body.clientHeight;
@@ -45,7 +53,7 @@ const getNewDirectionLocation = ({
45
53
  const isDirectionBottom = arrowDirection === "bottom";
46
54
  const isDirectionLeft = arrowDirection === "left";
47
55
  const isDirectionRight = arrowDirection === "right";
48
- if (isDirectionTop && cTop - height < 0 || isDirectionBottom && cBottom + height > pgegHeight || isDirectionLeft && cLeft - width < 0 || isDirectionRight && cRight + width > pgegWidth) {
56
+ if (isDirectionTop && cTop - height - offsetSpacing < 0 || isDirectionBottom && cBottom + height + offsetSpacing > pgegHeight || isDirectionLeft && cLeft - width - offsetSpacing < 0 || isDirectionRight && cRight + width + offsetSpacing > pgegWidth) {
49
57
  newArrowDirection = directionCssMap[arrowDirection];
50
58
  }
51
59
  if (arrowLocation === "top" && cTop + height > pgegHeight || arrowLocation === "bottom" && cBottom - height < 0 || arrowLocation === "left" && cLeft + width > pgegWidth || arrowLocation === "right" && cRight - width < 0) {
@@ -53,15 +61,15 @@ const getNewDirectionLocation = ({
53
61
  }
54
62
  const isCenter = arrowLocation === "center";
55
63
  if (isCenter && (isDirectionTop || isDirectionBottom)) {
56
- if (cLeft + width > pgegWidth) {
64
+ if (cLeft + (cWidth - width) / 2 + width > pgegWidth) {
57
65
  newArrowLocation = directionCssMap.left;
58
- } else if (cRight - width < 0) {
66
+ } else if (cLeft + (cWidth - width) / 2 < 0) {
59
67
  newArrowLocation = directionCssMap.right;
60
68
  }
61
69
  } else if (isCenter && (isDirectionLeft || isDirectionRight)) {
62
- if (cTop + height > pgegHeight) {
70
+ if (cTop + (cHeight - height) / 2 + cHeight > pgegHeight) {
63
71
  newArrowLocation = directionCssMap.top;
64
- } else if (cBottom - height < 0) {
72
+ } else if (cTop + (cHeight - height) / 2 < 0) {
65
73
  newArrowLocation = directionCssMap.bottom;
66
74
  }
67
75
  }
@@ -74,7 +82,8 @@ const getDirectionLocationStyle = ({
74
82
  rootOffset,
75
83
  arrowDirection,
76
84
  tipOffset,
77
- arrowLocation
85
+ arrowLocation,
86
+ offsetSpacing
78
87
  }) => {
79
88
  const scrollTop = window.scrollY >= 0 && window.scrollY || document.documentElement.scrollTop;
80
89
  const scrollLeft = window.scrollX >= 0 && window.scrollX || document.documentElement.scrollLeft;
@@ -89,7 +98,7 @@ const getDirectionLocationStyle = ({
89
98
  } = rootOffset;
90
99
  const { width, height } = tipOffset;
91
100
  if (arrowDirection === "top") {
92
- styles.top = cTop;
101
+ styles.top = cTop - offsetSpacing;
93
102
  styles.transform = `translateY(-100%)`;
94
103
  switch (arrowLocation) {
95
104
  case "left":
@@ -106,7 +115,7 @@ const getDirectionLocationStyle = ({
106
115
  break;
107
116
  }
108
117
  } else if (arrowDirection === "bottom") {
109
- styles.top = cBottom;
118
+ styles.top = cBottom + offsetSpacing;
110
119
  switch (arrowLocation) {
111
120
  case "left":
112
121
  styles.left = cLeft;
@@ -122,7 +131,7 @@ const getDirectionLocationStyle = ({
122
131
  break;
123
132
  }
124
133
  } else if (arrowDirection === "left") {
125
- styles.left = cLeft;
134
+ styles.left = cLeft - offsetSpacing;
126
135
  styles.transform = `translateX(-100%)`;
127
136
  switch (arrowLocation) {
128
137
  case "top":
@@ -139,7 +148,7 @@ const getDirectionLocationStyle = ({
139
148
  break;
140
149
  }
141
150
  } else if (arrowDirection === "right") {
142
- styles.left = cRight;
151
+ styles.left = cRight + offsetSpacing;
143
152
  switch (arrowLocation) {
144
153
  case "top":
145
154
  styles.top = cTop;
@@ -162,13 +171,13 @@ const getDirectionLocationStyle = ({
162
171
  styles.left = `${styles.left + scrollLeft}px`;
163
172
  }
164
173
  styles.width = `${width}px`;
165
- styles.height = `${height}px`;
166
174
  return styles;
167
175
  };
168
176
  const getStylesAndLocation = ({
169
177
  childrenRef,
170
178
  arrowDirection,
171
179
  arrowLocation,
180
+ offsetSpacing,
172
181
  selector
173
182
  }) => {
174
183
  if (!(childrenRef == null ? void 0 : childrenRef.current)) {
@@ -186,13 +195,15 @@ const getStylesAndLocation = ({
186
195
  rootOffset,
187
196
  arrowDirection,
188
197
  tipOffset,
189
- arrowLocation
198
+ arrowLocation,
199
+ offsetSpacing
190
200
  });
191
201
  const styles = getDirectionLocationStyle({
192
202
  rootOffset,
193
203
  arrowDirection: newArrowDirection,
194
204
  tipOffset,
195
- arrowLocation: newArrowLocation
205
+ arrowLocation: newArrowLocation,
206
+ offsetSpacing
196
207
  });
197
208
  styles.visibility = "visible";
198
209
  return {
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * 根据元素宽高判断是否超出边界,超出边界则重新定义方向
3
3
  */
4
- export declare const getNewDirectionLocation: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, }: {
4
+ export declare const getNewDirectionLocation: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, offsetSpacing, }: {
5
5
  rootOffset: any;
6
6
  arrowDirection: any;
7
7
  tipOffset: any;
8
8
  arrowLocation: any;
9
+ offsetSpacing: any;
9
10
  }) => {
10
11
  newArrowDirection: any;
11
12
  newArrowLocation: any;
@@ -13,19 +14,21 @@ export declare const getNewDirectionLocation: ({ rootOffset, arrowDirection, tip
13
14
  /**
14
15
  * 根据新的气泡位置和箭头位置 计算气泡位置以及箭头位置
15
16
  */
16
- export declare const getDirectionLocationStyle: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, }: {
17
+ export declare const getDirectionLocationStyle: ({ rootOffset, arrowDirection, tipOffset, arrowLocation, offsetSpacing, }: {
17
18
  rootOffset: any;
18
19
  arrowDirection: any;
19
20
  tipOffset: any;
20
21
  arrowLocation: any;
22
+ offsetSpacing: any;
21
23
  }) => any;
22
24
  /**
23
25
  * 获取气泡位置和箭头位置
24
26
  */
25
- export declare const getStylesAndLocation: ({ childrenRef, arrowDirection, arrowLocation, selector, }: {
27
+ export declare const getStylesAndLocation: ({ childrenRef, arrowDirection, arrowLocation, offsetSpacing, selector, }: {
26
28
  childrenRef: any;
27
29
  arrowDirection: any;
28
30
  arrowLocation: any;
31
+ offsetSpacing: any;
29
32
  selector: any;
30
33
  }) => {
31
34
  styles: any;
@@ -8,9 +8,17 @@ const getNewDirectionLocation = ({
8
8
  rootOffset,
9
9
  arrowDirection,
10
10
  tipOffset,
11
- arrowLocation
11
+ arrowLocation,
12
+ offsetSpacing
12
13
  }) => {
13
- const { left: cLeft, right: cRight, top: cTop, bottom: cBottom } = rootOffset;
14
+ const {
15
+ left: cLeft,
16
+ right: cRight,
17
+ top: cTop,
18
+ bottom: cBottom,
19
+ width: cWidth,
20
+ height: cHeight
21
+ } = rootOffset;
14
22
  const { width, height } = tipOffset;
15
23
  const pgegWidth = document.documentElement.clientWidth || document.body.clientWidth;
16
24
  const pgegHeight = document.documentElement.clientHeight || document.body.clientHeight;
@@ -20,7 +28,7 @@ const getNewDirectionLocation = ({
20
28
  const isDirectionBottom = arrowDirection === "bottom";
21
29
  const isDirectionLeft = arrowDirection === "left";
22
30
  const isDirectionRight = arrowDirection === "right";
23
- if (isDirectionTop && cTop - height < 0 || isDirectionBottom && cBottom + height > pgegHeight || isDirectionLeft && cLeft - width < 0 || isDirectionRight && cRight + width > pgegWidth) {
31
+ if (isDirectionTop && cTop - height - offsetSpacing < 0 || isDirectionBottom && cBottom + height + offsetSpacing > pgegHeight || isDirectionLeft && cLeft - width - offsetSpacing < 0 || isDirectionRight && cRight + width + offsetSpacing > pgegWidth) {
24
32
  newArrowDirection = directionCssMap[arrowDirection];
25
33
  }
26
34
  if (arrowLocation === "top" && cTop + height > pgegHeight || arrowLocation === "bottom" && cBottom - height < 0 || arrowLocation === "left" && cLeft + width > pgegWidth || arrowLocation === "right" && cRight - width < 0) {
@@ -28,15 +36,15 @@ const getNewDirectionLocation = ({
28
36
  }
29
37
  const isCenter = arrowLocation === "center";
30
38
  if (isCenter && (isDirectionTop || isDirectionBottom)) {
31
- if (cLeft + width > pgegWidth) {
39
+ if (cLeft + (cWidth - width) / 2 + width > pgegWidth) {
32
40
  newArrowLocation = directionCssMap.left;
33
- } else if (cRight - width < 0) {
41
+ } else if (cLeft + (cWidth - width) / 2 < 0) {
34
42
  newArrowLocation = directionCssMap.right;
35
43
  }
36
44
  } else if (isCenter && (isDirectionLeft || isDirectionRight)) {
37
- if (cTop + height > pgegHeight) {
45
+ if (cTop + (cHeight - height) / 2 + cHeight > pgegHeight) {
38
46
  newArrowLocation = directionCssMap.top;
39
- } else if (cBottom - height < 0) {
47
+ } else if (cTop + (cHeight - height) / 2 < 0) {
40
48
  newArrowLocation = directionCssMap.bottom;
41
49
  }
42
50
  }
@@ -49,7 +57,8 @@ const getDirectionLocationStyle = ({
49
57
  rootOffset,
50
58
  arrowDirection,
51
59
  tipOffset,
52
- arrowLocation
60
+ arrowLocation,
61
+ offsetSpacing
53
62
  }) => {
54
63
  const scrollTop = window.scrollY >= 0 && window.scrollY || document.documentElement.scrollTop;
55
64
  const scrollLeft = window.scrollX >= 0 && window.scrollX || document.documentElement.scrollLeft;
@@ -64,7 +73,7 @@ const getDirectionLocationStyle = ({
64
73
  } = rootOffset;
65
74
  const { width, height } = tipOffset;
66
75
  if (arrowDirection === "top") {
67
- styles.top = cTop;
76
+ styles.top = cTop - offsetSpacing;
68
77
  styles.transform = `translateY(-100%)`;
69
78
  switch (arrowLocation) {
70
79
  case "left":
@@ -81,7 +90,7 @@ const getDirectionLocationStyle = ({
81
90
  break;
82
91
  }
83
92
  } else if (arrowDirection === "bottom") {
84
- styles.top = cBottom;
93
+ styles.top = cBottom + offsetSpacing;
85
94
  switch (arrowLocation) {
86
95
  case "left":
87
96
  styles.left = cLeft;
@@ -97,7 +106,7 @@ const getDirectionLocationStyle = ({
97
106
  break;
98
107
  }
99
108
  } else if (arrowDirection === "left") {
100
- styles.left = cLeft;
109
+ styles.left = cLeft - offsetSpacing;
101
110
  styles.transform = `translateX(-100%)`;
102
111
  switch (arrowLocation) {
103
112
  case "top":
@@ -114,7 +123,7 @@ const getDirectionLocationStyle = ({
114
123
  break;
115
124
  }
116
125
  } else if (arrowDirection === "right") {
117
- styles.left = cRight;
126
+ styles.left = cRight + offsetSpacing;
118
127
  switch (arrowLocation) {
119
128
  case "top":
120
129
  styles.top = cTop;
@@ -137,13 +146,13 @@ const getDirectionLocationStyle = ({
137
146
  styles.left = `${styles.left + scrollLeft}px`;
138
147
  }
139
148
  styles.width = `${width}px`;
140
- styles.height = `${height}px`;
141
149
  return styles;
142
150
  };
143
151
  const getStylesAndLocation = ({
144
152
  childrenRef,
145
153
  arrowDirection,
146
154
  arrowLocation,
155
+ offsetSpacing,
147
156
  selector
148
157
  }) => {
149
158
  if (!(childrenRef == null ? void 0 : childrenRef.current)) {
@@ -161,13 +170,15 @@ const getStylesAndLocation = ({
161
170
  rootOffset,
162
171
  arrowDirection,
163
172
  tipOffset,
164
- arrowLocation
173
+ arrowLocation,
174
+ offsetSpacing
165
175
  });
166
176
  const styles = getDirectionLocationStyle({
167
177
  rootOffset,
168
178
  arrowDirection: newArrowDirection,
169
179
  tipOffset,
170
- arrowLocation: newArrowLocation
180
+ arrowLocation: newArrowLocation,
181
+ offsetSpacing
171
182
  });
172
183
  styles.visibility = "visible";
173
184
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bifrostui/utils",
3
- "version": "1.4.2-beta.0",
3
+ "version": "1.4.2-beta.1",
4
4
  "description": "BUI React utilities for building components.",
5
5
  "main": "dist/index.js",
6
6
  "module": "es/index.js",