@postenbring/hedwig-react 2.1.2 → 2.1.3

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.
@@ -60,17 +60,6 @@ var NavbarExpandableMenuTrigger = forwardRef(
60
60
  "className"
61
61
  ]);
62
62
  const { contentId, open, setOpen } = useNavbarExpendableMenuContext();
63
- const [textWidth, setTextWidth] = useState(void 0);
64
- const measurementId = useId();
65
- useEffect(() => {
66
- var _a2, _b2, _c, _d;
67
- const widthWhenOpen = (_b2 = (_a2 = document.getElementById(`${measurementId}-when-open`)) == null ? void 0 : _a2.getBoundingClientRect().width) != null ? _b2 : 0;
68
- const widthWhenClosed = (_d = (_c = document.getElementById(`${measurementId}-when-closed`)) == null ? void 0 : _c.getBoundingClientRect().width) != null ? _d : 0;
69
- setTextWidth(widthWhenOpen < widthWhenClosed ? widthWhenClosed : widthWhenOpen);
70
- }, [measurementId]);
71
- const text = open ? whenOpenText : whenClosedText;
72
- const title = open ? whenOpenHelperTitle : whenClosedHelperTitle;
73
- const icon = open ? /* @__PURE__ */ jsx(CloseIcon, {}) : /* @__PURE__ */ jsx(MenuIcon, {});
74
63
  function toggleOpen() {
75
64
  setOpen(!open);
76
65
  }
@@ -79,51 +68,23 @@ var NavbarExpandableMenuTrigger = forwardRef(
79
68
  __spreadProps(__spreadValues({
80
69
  "aria-expanded": open,
81
70
  "aria-controls": contentId,
82
- className: clsx("hds-navbar__item", className),
71
+ className: clsx(
72
+ "hds-navbar__item",
73
+ className,
74
+ open ? "hds-navbar__item--open" : "hds-navbar__item--closed"
75
+ ),
83
76
  onClick: toggleOpen,
84
77
  ref,
85
- title,
78
+ title: open ? whenOpenHelperTitle : whenClosedHelperTitle,
86
79
  type: "button",
87
80
  style: __spreadValues({ position: "relative" }, style)
88
81
  }, rest), {
89
82
  children: [
90
- /* @__PURE__ */ jsx(
91
- "span",
92
- {
93
- id: `${measurementId}-when-closed`,
94
- "aria-hidden": true,
95
- style: {
96
- position: "absolute",
97
- visibility: "hidden",
98
- pointerEvents: "none",
99
- whiteSpace: "nowrap"
100
- },
101
- children: whenOpenText
102
- }
103
- ),
104
- /* @__PURE__ */ jsx(
105
- "span",
106
- {
107
- id: `${measurementId}-when-open`,
108
- "aria-hidden": true,
109
- style: {
110
- position: "absolute",
111
- visibility: "hidden",
112
- pointerEvents: "none",
113
- whiteSpace: "nowrap"
114
- },
115
- children: whenClosedText
116
- }
117
- ),
118
- /* @__PURE__ */ jsx(
119
- "span",
120
- {
121
- style: { width: textWidth, whiteSpace: "nowrap" },
122
- className: clsx("hds-navbar__item-responsive-text"),
123
- children: text
124
- }
125
- ),
126
- /* @__PURE__ */ jsx("span", { style: { width: 32, height: 32 }, children: icon })
83
+ /* @__PURE__ */ jsxs("span", { className: "hds-navbar__item-responsive-text", children: [
84
+ /* @__PURE__ */ jsx("span", { "aria-hidden": !open, className: clsx("hds-navbar__item-whenopentext"), children: whenOpenText }),
85
+ /* @__PURE__ */ jsx("span", { "aria-hidden": open, className: clsx("hds-navbar__item-whenclosedtext"), children: whenClosedText })
86
+ ] }),
87
+ /* @__PURE__ */ jsx("span", { style: { width: 32, height: 32 }, children: open ? /* @__PURE__ */ jsx(CloseIcon, {}) : /* @__PURE__ */ jsx(MenuIcon, {}) })
127
88
  ]
128
89
  })
129
90
  );
@@ -153,4 +114,4 @@ export {
153
114
  NavbarExpandableMenuTrigger,
154
115
  NavbarExpandableMenuContent
155
116
  };
156
- //# sourceMappingURL=chunk-ZV4GTALL.mjs.map
117
+ //# sourceMappingURL=chunk-DRSAVDIE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/navbar/navbar-expandable-menu.tsx"],"sourcesContent":["import { createContext, useContext, forwardRef, useState, useEffect, useId } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { focusTrap } from \"../utils/utils\";\nimport { CloseIcon, MenuIcon } from \"./icons\";\n\ninterface ExpandableMenuContextProps {\n open: boolean;\n setOpen: (open: boolean) => void;\n contentId: string;\n}\n\nconst ExpandableMenuContext = createContext<ExpandableMenuContextProps | null>(null);\nexport const useNavbarExpendableMenuContext = () => {\n const value = useContext(ExpandableMenuContext);\n if (value === null) {\n throw new Error(\"useNavbarExpendableMenuContext must be used within a Navbar.ExpandableMenu\");\n }\n return value;\n};\n\nexport interface NavbarExpandableMenuProps {\n children: React.ReactNode;\n}\n\n/**\n * Expandable Menu Provider\n * Handles scroll and focus locking,\n * as well as scrolling the user to the top of the page.\n *\n * If we want a sticky header in the future the scrolling should be configurable\n */\nexport function NavbarExpandableMenu({ children }: NavbarExpandableMenuProps) {\n const contentId = useId();\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (open) {\n window.scrollTo(0, 0);\n document.body.classList.add(clsx(\"hds-navbar-scroll-lock\"));\n const releaseFocusTrap = focusTrap(\n document.getElementsByClassName(clsx(\"hds-navbar\"))[0] as HTMLElement,\n );\n\n return () => {\n document.body.classList.remove(clsx(\"hds-navbar-scroll-lock\"));\n releaseFocusTrap();\n };\n }\n }, [open]);\n\n return (\n <ExpandableMenuContext.Provider value={{ contentId, open, setOpen }}>\n {children}\n </ExpandableMenuContext.Provider>\n );\n}\n\nNavbarExpandableMenu.displayName = \"NavbarExpandableMenu\";\n\n/**\n * Trigger\n */\nexport interface NavbarExpandableMenuTriggerProps\n extends Omit<React.HTMLAttributes<HTMLButtonElement>, \"children\"> {\n whenClosedText: React.ReactNode;\n whenClosedHelperTitle?: string;\n\n whenOpenText: React.ReactNode;\n whenOpenHelperTitle?: string;\n}\n\nexport const NavbarExpandableMenuTrigger = forwardRef<\n HTMLButtonElement,\n NavbarExpandableMenuTriggerProps\n>(\n (\n {\n whenClosedText,\n whenClosedHelperTitle,\n\n whenOpenText,\n whenOpenHelperTitle,\n\n style,\n className,\n ...rest\n },\n ref,\n ) => {\n const { contentId, open, setOpen } = useNavbarExpendableMenuContext();\n\n function toggleOpen() {\n setOpen(!open);\n }\n\n return (\n <button\n aria-expanded={open}\n aria-controls={contentId}\n className={clsx(\n \"hds-navbar__item\",\n className as undefined,\n open ? \"hds-navbar__item--open\" : \"hds-navbar__item--closed\",\n )}\n onClick={toggleOpen}\n ref={ref}\n title={open ? whenOpenHelperTitle : whenClosedHelperTitle}\n type=\"button\"\n style={{ position: \"relative\", ...style }}\n {...rest}\n >\n <span className=\"hds-navbar__item-responsive-text\">\n <span aria-hidden={!open} className={clsx(\"hds-navbar__item-whenopentext\")}>\n {whenOpenText}\n </span>\n <span aria-hidden={open} className={clsx(\"hds-navbar__item-whenclosedtext\")}>\n {whenClosedText}\n </span>\n </span>\n <span style={{ width: 32, height: 32 }}>{open ? <CloseIcon /> : <MenuIcon />}</span>\n </button>\n );\n },\n);\nNavbarExpandableMenuTrigger.displayName = \"Navbar.ExpandableMenuTrigger\";\n\n/**\n * Content\n */\nexport interface NavbarExpandableMenuContentProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const NavbarExpandableMenuContent = forwardRef<\n HTMLDivElement,\n NavbarExpandableMenuContentProps\n>(({ children, className, ...rest }, ref) => {\n const { contentId, open } = useNavbarExpendableMenuContext();\n return (\n <section\n {...rest}\n id={contentId}\n className={clsx(\"hds-navbar__expandable-menu-content\", className as undefined)}\n data-state={open ? \"open\" : \"closed\"}\n {...{ inert: open ? undefined : \"true\" }}\n ref={ref}\n >\n <div className={clsx(\"hds-navbar__expandable-menu-content-inner\")}>{children}</div>\n </section>\n );\n});\nNavbarExpandableMenuContent.displayName = \"Navbar.ExpandableMenuContent\";\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,eAAe,YAAY,YAAY,UAAU,WAAW,aAAa;AAClF,SAAS,YAAY;AAkDjB,cA4DI,YA5DJ;AAxCJ,IAAM,wBAAwB,cAAiD,IAAI;AAC5E,IAAM,iCAAiC,MAAM;AAClD,QAAM,QAAQ,WAAW,qBAAqB;AAC9C,MAAI,UAAU,MAAM;AAClB,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAC9F;AACA,SAAO;AACT;AAaO,SAAS,qBAAqB,EAAE,SAAS,GAA8B;AAC5E,QAAM,YAAY,MAAM;AACxB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,YAAU,MAAM;AACd,QAAI,MAAM;AACR,aAAO,SAAS,GAAG,CAAC;AACpB,eAAS,KAAK,UAAU,IAAI,KAAK,wBAAwB,CAAC;AAC1D,YAAM,mBAAmB;AAAA,QACvB,SAAS,uBAAuB,KAAK,YAAY,CAAC,EAAE,CAAC;AAAA,MACvD;AAEA,aAAO,MAAM;AACX,iBAAS,KAAK,UAAU,OAAO,KAAK,wBAAwB,CAAC;AAC7D,yBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,SACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,EAAE,WAAW,MAAM,QAAQ,GAC/D,UACH;AAEJ;AAEA,qBAAqB,cAAc;AAc5B,IAAM,8BAA8B;AAAA,EAIzC,CACE,IAWA,QACG;AAZH,iBACE;AAAA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,IApFN,IA4EI,IASK,iBATL,IASK;AAAA,MARH;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA;AAKF,UAAM,EAAE,WAAW,MAAM,QAAQ,IAAI,+BAA+B;AAEpE,aAAS,aAAa;AACpB,cAAQ,CAAC,IAAI;AAAA,IACf;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,OAAO,2BAA2B;AAAA,QACpC;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,OAAO,OAAO,sBAAsB;AAAA,QACpC,MAAK;AAAA,QACL,OAAO,iBAAE,UAAU,cAAe;AAAA,SAC9B,OAbL;AAAA,QAeC;AAAA,+BAAC,UAAK,WAAU,oCACd;AAAA,gCAAC,UAAK,eAAa,CAAC,MAAM,WAAW,KAAK,+BAA+B,GACtE,wBACH;AAAA,YACA,oBAAC,UAAK,eAAa,MAAM,WAAW,KAAK,iCAAiC,GACvE,0BACH;AAAA,aACF;AAAA,UACA,oBAAC,UAAK,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAG,GAAI,iBAAO,oBAAC,aAAU,IAAK,oBAAC,YAAS,GAAG;AAAA;AAAA;AAAA,IAC/E;AAAA,EAEJ;AACF;AACA,4BAA4B,cAAc;AAUnC,IAAM,8BAA8B,WAGzC,CAAC,IAAkC,QAAQ;AAA1C,eAAE,YAAU,UAzIf,IAyIG,IAA0B,iBAA1B,IAA0B,CAAxB,YAAU;AACb,QAAM,EAAE,WAAW,KAAK,IAAI,+BAA+B;AAC3D,SACE;AAAA,IAAC;AAAA,kEACK,OADL;AAAA,MAEC,IAAI;AAAA,MACJ,WAAW,KAAK,uCAAuC,SAAsB;AAAA,MAC7E,cAAY,OAAO,SAAS;AAAA,QACxB,EAAE,OAAO,OAAO,SAAY,OAAO,IALxC;AAAA,MAMC;AAAA,MAEA,8BAAC,SAAI,WAAW,KAAK,2CAA2C,GAAI,UAAS;AAAA;AAAA,EAC/E;AAEJ,CAAC;AACD,4BAA4B,cAAc;","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  NavbarExpandableMenu,
3
3
  NavbarExpandableMenuContent,
4
4
  NavbarExpandableMenuTrigger
5
- } from "./chunk-ZV4GTALL.mjs";
5
+ } from "./chunk-DRSAVDIE.mjs";
6
6
  import {
7
7
  __objRest,
8
8
  __spreadProps,
@@ -133,4 +133,4 @@ export {
133
133
  NavbarNavigation,
134
134
  Navbar
135
135
  };
136
- //# sourceMappingURL=chunk-AQZALI2J.mjs.map
136
+ //# sourceMappingURL=chunk-DTU7AXY3.mjs.map
package/dist/index.js CHANGED
@@ -2056,17 +2056,6 @@ var NavbarExpandableMenuTrigger = (0, import_react38.forwardRef)(
2056
2056
  "className"
2057
2057
  ]);
2058
2058
  const { contentId, open, setOpen } = useNavbarExpendableMenuContext();
2059
- const [textWidth, setTextWidth] = (0, import_react38.useState)(void 0);
2060
- const measurementId = (0, import_react38.useId)();
2061
- (0, import_react38.useEffect)(() => {
2062
- var _a2, _b2, _c, _d;
2063
- const widthWhenOpen = (_b2 = (_a2 = document.getElementById(`${measurementId}-when-open`)) == null ? void 0 : _a2.getBoundingClientRect().width) != null ? _b2 : 0;
2064
- const widthWhenClosed = (_d = (_c = document.getElementById(`${measurementId}-when-closed`)) == null ? void 0 : _c.getBoundingClientRect().width) != null ? _d : 0;
2065
- setTextWidth(widthWhenOpen < widthWhenClosed ? widthWhenClosed : widthWhenOpen);
2066
- }, [measurementId]);
2067
- const text = open ? whenOpenText : whenClosedText;
2068
- const title = open ? whenOpenHelperTitle : whenClosedHelperTitle;
2069
- const icon = open ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(CloseIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(MenuIcon, {});
2070
2059
  function toggleOpen() {
2071
2060
  setOpen(!open);
2072
2061
  }
@@ -2075,51 +2064,23 @@ var NavbarExpandableMenuTrigger = (0, import_react38.forwardRef)(
2075
2064
  __spreadProps(__spreadValues({
2076
2065
  "aria-expanded": open,
2077
2066
  "aria-controls": contentId,
2078
- className: (0, import_typed_classname33.clsx)("hds-navbar__item", className),
2067
+ className: (0, import_typed_classname33.clsx)(
2068
+ "hds-navbar__item",
2069
+ className,
2070
+ open ? "hds-navbar__item--open" : "hds-navbar__item--closed"
2071
+ ),
2079
2072
  onClick: toggleOpen,
2080
2073
  ref,
2081
- title,
2074
+ title: open ? whenOpenHelperTitle : whenClosedHelperTitle,
2082
2075
  type: "button",
2083
2076
  style: __spreadValues({ position: "relative" }, style)
2084
2077
  }, rest), {
2085
2078
  children: [
2086
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2087
- "span",
2088
- {
2089
- id: `${measurementId}-when-closed`,
2090
- "aria-hidden": true,
2091
- style: {
2092
- position: "absolute",
2093
- visibility: "hidden",
2094
- pointerEvents: "none",
2095
- whiteSpace: "nowrap"
2096
- },
2097
- children: whenOpenText
2098
- }
2099
- ),
2100
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2101
- "span",
2102
- {
2103
- id: `${measurementId}-when-open`,
2104
- "aria-hidden": true,
2105
- style: {
2106
- position: "absolute",
2107
- visibility: "hidden",
2108
- pointerEvents: "none",
2109
- whiteSpace: "nowrap"
2110
- },
2111
- children: whenClosedText
2112
- }
2113
- ),
2114
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2115
- "span",
2116
- {
2117
- style: { width: textWidth, whiteSpace: "nowrap" },
2118
- className: (0, import_typed_classname33.clsx)("hds-navbar__item-responsive-text"),
2119
- children: text
2120
- }
2121
- ),
2122
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { style: { width: 32, height: 32 }, children: icon })
2079
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "hds-navbar__item-responsive-text", children: [
2080
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": !open, className: (0, import_typed_classname33.clsx)("hds-navbar__item-whenopentext"), children: whenOpenText }),
2081
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": open, className: (0, import_typed_classname33.clsx)("hds-navbar__item-whenclosedtext"), children: whenClosedText })
2082
+ ] }),
2083
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { style: { width: 32, height: 32 }, children: open ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(CloseIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(MenuIcon, {}) })
2123
2084
  ]
2124
2085
  })
2125
2086
  );