@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.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("div", { ref: listRef, role: "menu", className: list2, onKeyDown: onMenuKeyDown, children: items.map((entry, index) => /* @__PURE__ */ jsx39(
1976
- "button",
1989
+ open && /* @__PURE__ */ jsx39(
1990
+ "div",
1977
1991
  {
1978
- type: "button",
1979
- role: "menuitem",
1980
- tabIndex: -1,
1981
- className: entry.danger ? dangerItem : item3,
1982
- onClick: () => {
1983
- entry.onClick?.();
1984
- setOpen(false);
1985
- },
1986
- children: entry.label
1987
- },
1988
- index
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