@octavius2929-personal/design-system 0.8.0 → 0.9.0
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/dist/index.cjs +37 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +6 -1
- package/dist/index.css.map +1 -1
- package/dist/index.js +38 -14
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
package/dist/index.js
CHANGED
|
@@ -1855,6 +1855,7 @@ function Tabs({ items, value, onChange }) {
|
|
|
1855
1855
|
import {
|
|
1856
1856
|
cloneElement as cloneElement2,
|
|
1857
1857
|
useEffect as useEffect4,
|
|
1858
|
+
useLayoutEffect,
|
|
1858
1859
|
useRef as useRef3,
|
|
1859
1860
|
useState as useState8
|
|
1860
1861
|
} from "react";
|
|
@@ -1891,6 +1892,7 @@ function assignRef(ref, value) {
|
|
|
1891
1892
|
function Menu({ trigger: trigger2, items }) {
|
|
1892
1893
|
const { wrapper: wrapper4, list: list2, item: item3, dangerItem } = useStyles25();
|
|
1893
1894
|
const [open, setOpen] = useState8(false);
|
|
1895
|
+
const [alignEnd, setAlignEnd] = useState8(false);
|
|
1894
1896
|
const rootRef = useRef3(null);
|
|
1895
1897
|
const listRef = useRef3(null);
|
|
1896
1898
|
const triggerRef = useRef3(null);
|
|
@@ -1905,6 +1907,18 @@ function Menu({ trigger: trigger2, items }) {
|
|
|
1905
1907
|
setOpen(false);
|
|
1906
1908
|
triggerRef.current?.focus();
|
|
1907
1909
|
};
|
|
1910
|
+
useLayoutEffect(() => {
|
|
1911
|
+
if (!open) {
|
|
1912
|
+
setAlignEnd(false);
|
|
1913
|
+
return;
|
|
1914
|
+
}
|
|
1915
|
+
const listEl = listRef.current;
|
|
1916
|
+
const rootEl = rootRef.current;
|
|
1917
|
+
if (!listEl || !rootEl) return;
|
|
1918
|
+
const rootLeft = rootEl.getBoundingClientRect().left;
|
|
1919
|
+
const viewport = document.documentElement.clientWidth;
|
|
1920
|
+
setAlignEnd(rootLeft + listEl.offsetWidth > viewport);
|
|
1921
|
+
}, [open]);
|
|
1908
1922
|
useEffect4(() => {
|
|
1909
1923
|
if (!open) return;
|
|
1910
1924
|
listRef.current?.querySelector('[role="menuitem"]')?.focus();
|
|
@@ -1972,21 +1986,31 @@ function Menu({ trigger: trigger2, items }) {
|
|
|
1972
1986
|
});
|
|
1973
1987
|
return /* @__PURE__ */ jsxs24("div", { ref: rootRef, className: wrapper4, children: [
|
|
1974
1988
|
clonedTrigger,
|
|
1975
|
-
open && /* @__PURE__ */ jsx39(
|
|
1976
|
-
"
|
|
1989
|
+
open && /* @__PURE__ */ jsx39(
|
|
1990
|
+
"div",
|
|
1977
1991
|
{
|
|
1978
|
-
|
|
1979
|
-
role: "
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1992
|
+
ref: listRef,
|
|
1993
|
+
role: "menu",
|
|
1994
|
+
className: list2,
|
|
1995
|
+
"data-align": alignEnd ? "end" : "start",
|
|
1996
|
+
onKeyDown: onMenuKeyDown,
|
|
1997
|
+
children: items.map((entry, index) => /* @__PURE__ */ jsx39(
|
|
1998
|
+
"button",
|
|
1999
|
+
{
|
|
2000
|
+
type: "button",
|
|
2001
|
+
role: "menuitem",
|
|
2002
|
+
tabIndex: -1,
|
|
2003
|
+
className: entry.danger ? dangerItem : item3,
|
|
2004
|
+
onClick: () => {
|
|
2005
|
+
entry.onClick?.();
|
|
2006
|
+
setOpen(false);
|
|
2007
|
+
},
|
|
2008
|
+
children: entry.label
|
|
2009
|
+
},
|
|
2010
|
+
index
|
|
2011
|
+
))
|
|
2012
|
+
}
|
|
2013
|
+
)
|
|
1990
2014
|
] });
|
|
1991
2015
|
}
|
|
1992
2016
|
|