@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.maxHeight, maxHeight = _b === void 0 ? 200 : _b, _c = _a.isInModal, isInModal = _c === void 0 ? false : _c;
7
- var _d = useState(false), isOpen = _d[0], setIsOpen = _d[1];
8
- var _e = useState({}), menuStyle = _e[0], setMenuStyle = _e[1];
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
- var left = triggerRect.left;
28
- var top = 0;
29
- var renderHeight = maxHeight;
30
- // ============ Vertical Position ============
31
- if (spaceBelow >= 120) {
32
- // มีพื้นที่พอด้านล่าง
33
- renderHeight = Math.min(maxHeight, spaceBelow - 12);
34
- top = triggerRect.bottom;
35
- }
36
- else if (spaceAbove >= 120) {
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
- // ============ Horizontal Boundary ============
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Menu/index.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  border-radius: 0.3em;
12
12
  min-width: 140px;
13
13
  max-width: 320px;
14
+ max-height: 45%;
14
15
  box-shadow: rgba(0, 0, 0, 0.15) 0px 4px 12px;
15
16
  overflow-y: auto;
16
17
  overflow-x: hidden;
@@ -5,6 +5,5 @@ export type PropsMenu = {
5
5
  }) => JSX.Element;
6
6
  children: JSX.Element | JSX.Element[];
7
7
  disabled?: boolean;
8
- maxHeight?: number;
9
8
  isInModal?: boolean;
10
9
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datability/8ui",
3
- "version": "0.1.63",
3
+ "version": "0.1.65",
4
4
  "description": "",
5
5
  "main": "dist/components/index.js",
6
6
  "types": "dist/components/index.d.ts",