@datability/8ui 0.1.10 → 0.1.11
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.
|
@@ -6,146 +6,145 @@ import { createPortal } from 'react-dom';
|
|
|
6
6
|
import { DBuiContext } from '../context';
|
|
7
7
|
var Menu = function (_a) {
|
|
8
8
|
var children = _a.children, trigger = _a.trigger, _b = _a.isAutoCloseWhenClickOutsideMenuItem, isAutoCloseWhenClickOutsideMenuItem = _b === void 0 ? true : _b, disabled = _a.disabled, _c = _a.maxHeight, maxHeight = _c === void 0 ? 200 : _c;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (prevIsOpen) {
|
|
28
|
-
if (openMenuCount_1 <= 0) {
|
|
29
|
-
setMenuZero_1();
|
|
30
|
-
if (openModalCount_1 <= 0) {
|
|
31
|
-
document.body.style.overflow = 'visible';
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
setMenuDecress_1();
|
|
9
|
+
var _d = useContext(DBuiContext), openMenuCount = _d.openMenuCount, openModalCount = _d.openModalCount, setOpenMenuCount = _d.setOpenMenuCount;
|
|
10
|
+
var setMenuIncress = function () { return setOpenMenuCount === null || setOpenMenuCount === void 0 ? void 0 : setOpenMenuCount(function (prev) { return prev + 1; }); };
|
|
11
|
+
var setMenuDecress = function () { return setOpenMenuCount === null || setOpenMenuCount === void 0 ? void 0 : setOpenMenuCount(function (prev) { return prev - 1; }); };
|
|
12
|
+
var setMenuZero = function () { return setOpenMenuCount === null || setOpenMenuCount === void 0 ? void 0 : setOpenMenuCount(0); };
|
|
13
|
+
var _e = useState(false), isOpen = _e[0], setIsOpen = _e[1];
|
|
14
|
+
var _f = useState({ top: 0, left: 0 }), menuStyle = _f[0], setMenuStyle = _f[1];
|
|
15
|
+
var menuRef = useRef(null);
|
|
16
|
+
var menuItemRef = useRef(null);
|
|
17
|
+
var triggerRef = useRef(null);
|
|
18
|
+
var handleToggle = function () {
|
|
19
|
+
if (disabled)
|
|
20
|
+
return;
|
|
21
|
+
setIsOpen(function (prevIsOpen) {
|
|
22
|
+
if (prevIsOpen) {
|
|
23
|
+
if (openMenuCount <= 0) {
|
|
24
|
+
setMenuZero();
|
|
25
|
+
if (openModalCount <= 0) {
|
|
26
|
+
document.body.style.overflow = 'visible';
|
|
36
27
|
}
|
|
37
|
-
calculateMenuPosition_1();
|
|
38
28
|
}
|
|
39
29
|
else {
|
|
40
|
-
|
|
41
|
-
calculateMenuPosition_1();
|
|
30
|
+
setMenuDecress();
|
|
42
31
|
}
|
|
43
|
-
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
// Close the menu when clicking outside
|
|
47
|
-
useEffect(function () {
|
|
48
|
-
// Update the global counter and adjust the overflow style
|
|
49
|
-
if (isOpen_1) {
|
|
50
|
-
setMenuIncress_1();
|
|
51
|
-
document.body.style.overflow = 'hidden';
|
|
32
|
+
calculateMenuPosition();
|
|
52
33
|
}
|
|
53
34
|
else {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (openModalCount_1 <= 0) {
|
|
57
|
-
document.body.style.overflow = 'visible';
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
setMenuDecress_1();
|
|
62
|
-
}
|
|
35
|
+
document.body.style.overflow = 'hidden';
|
|
36
|
+
calculateMenuPosition();
|
|
63
37
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
};
|
|
79
|
-
var handleKeydown = function (event) {
|
|
80
|
-
// Check if the pressed key is the Escape key
|
|
81
|
-
if (event.key === 'Escape' || event.keyCode === 27) {
|
|
82
|
-
setIsOpen_1(false);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
document.addEventListener('click', handleClickOutside);
|
|
86
|
-
document.addEventListener('keydown', handleKeydown);
|
|
87
|
-
return function () {
|
|
88
|
-
document.removeEventListener('click', handleClickOutside);
|
|
89
|
-
document.removeEventListener('keydown', handleKeydown);
|
|
90
|
-
// Adjust the overflow style based on the global counter
|
|
91
|
-
if (openMenuCount_1 === 0 && openModalCount_1 === 0) {
|
|
38
|
+
return !prevIsOpen;
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
// Close the menu when clicking outside
|
|
42
|
+
useEffect(function () {
|
|
43
|
+
// Update the global counter and adjust the overflow style
|
|
44
|
+
if (isOpen) {
|
|
45
|
+
setMenuIncress();
|
|
46
|
+
document.body.style.overflow = 'hidden';
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
if (openMenuCount <= 0) {
|
|
50
|
+
setMenuZero();
|
|
51
|
+
if (openModalCount <= 0) {
|
|
92
52
|
document.body.style.overflow = 'visible';
|
|
93
53
|
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var spaceBelow = viewportHeight - triggerRect.bottom;
|
|
105
|
-
// Calculate the height of the menu
|
|
106
|
-
var menuMaxHeight = maxHeight;
|
|
107
|
-
var actualMenuHeight = Math.min(menuMaxHeight, menuItemRect.height);
|
|
108
|
-
var top_1 = 0;
|
|
109
|
-
var left = 0;
|
|
110
|
-
// Choose to position the menu above or below based on available space
|
|
111
|
-
if (spaceBelow >= actualMenuHeight) {
|
|
112
|
-
// Enough space below the trigger
|
|
113
|
-
top_1 = triggerRect.bottom + window.scrollY;
|
|
114
|
-
}
|
|
115
|
-
else if (spaceAbove >= actualMenuHeight) {
|
|
116
|
-
// Enough space above the trigger
|
|
117
|
-
top_1 = triggerRect.top + window.scrollY - actualMenuHeight;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
setMenuDecress();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
var handleClickOutside = function (event) {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
if (isAutoCloseWhenClickOutsideMenuItem) {
|
|
62
|
+
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
63
|
+
setIsOpen(false);
|
|
118
64
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (menuRef.current &&
|
|
68
|
+
!menuRef.current.contains(event.target) &&
|
|
69
|
+
!((_b = (_a = menuItemRef.current) === null || _a === void 0 ? void 0 : _a.contains) === null || _b === void 0 ? void 0 : _b.call(_a, event.target))) {
|
|
70
|
+
setIsOpen(false);
|
|
122
71
|
}
|
|
123
|
-
// Ensure the menu stays within the bounds of the screen
|
|
124
|
-
left = Math.min(Math.max(triggerRect.left + window.scrollX, 0), viewportWidth - menuRef_1.current.offsetWidth);
|
|
125
|
-
// Set the calculated position in state
|
|
126
|
-
setMenuStyle_1({ top: top_1, left: left, maxHeight: "".concat(maxHeight, "px") });
|
|
127
72
|
}
|
|
128
73
|
};
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
74
|
+
var handleKeydown = function (event) {
|
|
75
|
+
// Check if the pressed key is the Escape key
|
|
76
|
+
if (event.key === 'Escape' || event.keyCode === 27) {
|
|
77
|
+
setIsOpen(false);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
document.addEventListener('click', handleClickOutside);
|
|
81
|
+
document.addEventListener('keydown', handleKeydown);
|
|
82
|
+
return function () {
|
|
83
|
+
document.removeEventListener('click', handleClickOutside);
|
|
84
|
+
document.removeEventListener('keydown', handleKeydown);
|
|
85
|
+
// Adjust the overflow style based on the global counter
|
|
86
|
+
if (openMenuCount === 0 && openModalCount === 0) {
|
|
87
|
+
document.body.style.overflow = 'visible';
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}, [isOpen]);
|
|
91
|
+
var calculateMenuPosition = function () {
|
|
92
|
+
if (triggerRef.current && menuItemRef.current) {
|
|
93
|
+
var triggerRect = triggerRef.current.getBoundingClientRect();
|
|
94
|
+
var menuItemRect = menuItemRef.current.getBoundingClientRect();
|
|
95
|
+
var viewportHeight = window.innerHeight;
|
|
96
|
+
var viewportWidth = window.innerWidth;
|
|
97
|
+
// Calculate available space above and below the trigger
|
|
98
|
+
var spaceAbove = triggerRect.top;
|
|
99
|
+
var spaceBelow = viewportHeight - triggerRect.bottom;
|
|
100
|
+
// Calculate the height of the menu
|
|
101
|
+
var menuMaxHeight = maxHeight;
|
|
102
|
+
var actualMenuHeight = Math.min(menuMaxHeight, menuItemRect.height);
|
|
103
|
+
var top_1 = 0;
|
|
104
|
+
var left = 0;
|
|
105
|
+
// Choose to position the menu above or below based on available space
|
|
106
|
+
if (spaceBelow >= actualMenuHeight) {
|
|
107
|
+
// Enough space below the trigger
|
|
108
|
+
top_1 = triggerRect.bottom + window.scrollY;
|
|
109
|
+
}
|
|
110
|
+
else if (spaceAbove >= actualMenuHeight) {
|
|
111
|
+
// Enough space above the trigger
|
|
112
|
+
top_1 = triggerRect.top + window.scrollY - actualMenuHeight;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Not enough space above or below; you might want to add more logic here for complex cases
|
|
116
|
+
top_1 = triggerRect.bottom + window.scrollY; // Default to below
|
|
117
|
+
}
|
|
118
|
+
// Ensure the menu stays within the bounds of the screen
|
|
119
|
+
left = Math.min(Math.max(triggerRect.left + window.scrollX, 0), viewportWidth - menuRef.current.offsetWidth);
|
|
120
|
+
// Set the calculated position in state
|
|
121
|
+
setMenuStyle({ top: top_1, left: left, maxHeight: "".concat(maxHeight, "px") });
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
// Effect to handle window resize and click outside
|
|
125
|
+
useEffect(function () {
|
|
126
|
+
calculateMenuPosition();
|
|
127
|
+
// Event listener for window resize
|
|
128
|
+
var handleResize = function () {
|
|
129
|
+
if (isOpen) {
|
|
130
|
+
calculateMenuPosition();
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
// Add the event listener
|
|
134
|
+
window.addEventListener('resize', handleResize);
|
|
135
|
+
// Clean up the event listener when component unmounts
|
|
136
|
+
return function () {
|
|
137
|
+
window.removeEventListener('resize', handleResize);
|
|
138
|
+
};
|
|
139
|
+
}, [isOpen]);
|
|
140
|
+
var _g = useState(false), mounted = _g[0], setMounted = _g[1];
|
|
141
|
+
useEffect(function () {
|
|
142
|
+
setMounted(true);
|
|
143
|
+
return function () { return setMounted(false); };
|
|
144
|
+
}, []);
|
|
145
|
+
return (React.createElement("div", { ref: menuRef },
|
|
146
|
+
React.createElement("div", { onClick: handleToggle, className: "cursor", ref: triggerRef }, trigger({ isOpen: isOpen })),
|
|
147
|
+
mounted && createPortal(React.createElement("div", { className: "DBui-wrapperMenuItem", "aria-hidden": !(isOpen && !disabled), style: menuStyle, ref: menuItemRef }, children), document.getElementById('root') || document.getElementById('__next'))));
|
|
149
148
|
};
|
|
150
149
|
export default Menu;
|
|
151
150
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Menu/index.tsx"],"names":[],"mappings":"AAAA,MAAM;AACN,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEtE,qBAAqB;AACrB,OAAO,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,IAAM,IAAI,GAAwB,UAAC,EAMlC;QALC,QAAQ,cAAA,EACR,OAAO,aAAA,EACP,2CAA0C,EAA1C,mCAAmC,mBAAG,IAAI,KAAA,EAC1C,QAAQ,cAAA,EACR,iBAAe,EAAf,SAAS,mBAAG,GAAG,KAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Menu/index.tsx"],"names":[],"mappings":"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"}
|