@datability/8ui 0.1.63 → 0.1.65
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.
|
@@ -3,9 +3,9 @@ import React, { useEffect, useRef, useState } from 'react';
|
|
|
3
3
|
import { createPortal } from 'react-dom';
|
|
4
4
|
import './index.scss';
|
|
5
5
|
var Menu = function (_a) {
|
|
6
|
-
var children = _a.children, trigger = _a.trigger, disabled = _a.disabled, _b = _a.
|
|
7
|
-
var
|
|
8
|
-
var
|
|
6
|
+
var children = _a.children, trigger = _a.trigger, disabled = _a.disabled, _b = _a.isInModal, isInModal = _b === void 0 ? false : _b;
|
|
7
|
+
var _c = useState(false), isOpen = _c[0], setIsOpen = _c[1];
|
|
8
|
+
var _d = useState({}), menuStyle = _d[0], setMenuStyle = _d[1];
|
|
9
9
|
var triggerRef = useRef(null);
|
|
10
10
|
var menuRef = useRef(null);
|
|
11
11
|
// Toggle dropdown
|
|
@@ -24,44 +24,28 @@ var Menu = function (_a) {
|
|
|
24
24
|
var menuWidth = menu.offsetWidth;
|
|
25
25
|
var spaceAbove = triggerRect.top;
|
|
26
26
|
var spaceBelow = viewportH - triggerRect.bottom;
|
|
27
|
-
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
renderHeight = Math.min(maxHeight, spaceAbove - 12);
|
|
39
|
-
top = triggerRect.top - renderHeight;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
// พื้นที่ทั้งบนและล่างน้อย → เอาที่มากกว่า
|
|
43
|
-
if (spaceBelow > spaceAbove) {
|
|
44
|
-
renderHeight = spaceBelow - 12;
|
|
45
|
-
top = triggerRect.bottom;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
renderHeight = spaceAbove - 12;
|
|
49
|
-
top = triggerRect.top - renderHeight;
|
|
50
|
-
}
|
|
27
|
+
// วางล่างถ้าพื้นที่ล่างมากกว่า
|
|
28
|
+
var placeBottom = spaceBelow >= spaceAbove;
|
|
29
|
+
var top = placeBottom
|
|
30
|
+
? triggerRect.bottom // show below
|
|
31
|
+
: triggerRect.top - menu.offsetHeight; // show above (height กำหนดจาก CSS max-height)
|
|
32
|
+
// เปลี่ยน logic ตรงนี้ → กันเมนูล้นจอจาก CSS max-height
|
|
33
|
+
// ถ้าด้านบนพื้นที่ไม่พอ ให้ clamp
|
|
34
|
+
if (!placeBottom) {
|
|
35
|
+
var minTop = 8;
|
|
36
|
+
if (top < minTop)
|
|
37
|
+
top = minTop;
|
|
51
38
|
}
|
|
52
|
-
|
|
39
|
+
var left = triggerRect.left;
|
|
53
40
|
if (left + menuWidth > viewportW - 8) {
|
|
54
41
|
left = viewportW - menuWidth - 8;
|
|
55
42
|
}
|
|
56
43
|
if (left < 8)
|
|
57
44
|
left = 8;
|
|
58
|
-
// Apply styles
|
|
59
45
|
setMenuStyle({
|
|
60
46
|
position: 'fixed',
|
|
61
47
|
top: top,
|
|
62
|
-
left: left
|
|
63
|
-
maxHeight: "".concat(renderHeight, "px"),
|
|
64
|
-
overflowY: 'auto'
|
|
48
|
+
left: left
|
|
65
49
|
});
|
|
66
50
|
};
|
|
67
51
|
// ------------ Double RAF (ให้ DOM render ก่อน 100%) ------------
|
|
@@ -73,7 +57,7 @@ var Menu = function (_a) {
|
|
|
73
57
|
calculateMenuPosition();
|
|
74
58
|
});
|
|
75
59
|
});
|
|
76
|
-
}, [isOpen]);
|
|
60
|
+
}, [isOpen, children]);
|
|
77
61
|
// ------------ Reposition when scroll/resize/orientation ------------
|
|
78
62
|
useEffect(function () {
|
|
79
63
|
if (!isOpen)
|
|
@@ -87,7 +71,7 @@ var Menu = function (_a) {
|
|
|
87
71
|
window.removeEventListener('resize', handler);
|
|
88
72
|
window.removeEventListener('orientationchange', handler);
|
|
89
73
|
};
|
|
90
|
-
}, [isOpen]);
|
|
74
|
+
}, [isOpen, children]);
|
|
91
75
|
// ------------ Close On Click Outside ------------
|
|
92
76
|
useEffect(function () {
|
|
93
77
|
if (!isOpen)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Menu/index.tsx"],"names":[],"mappings":"AAAA,MAAM;AACN,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,cAAc,CAAA;AAGrB,IAAM,IAAI,GAAwB,UAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Menu/index.tsx"],"names":[],"mappings":"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"}
|