@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.
- package/dist/{chunk-ZV4GTALL.mjs → chunk-DRSAVDIE.mjs} +12 -51
- package/dist/chunk-DRSAVDIE.mjs.map +1 -0
- package/dist/{chunk-AQZALI2J.mjs → chunk-DTU7AXY3.mjs} +2 -2
- package/dist/index.js +11 -50
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/navbar/index.js +11 -50
- package/dist/navbar/index.js.map +1 -1
- package/dist/navbar/index.mjs +2 -2
- package/dist/navbar/navbar-expandable-menu.d.ts.map +1 -1
- package/dist/navbar/navbar-expandable-menu.js +11 -50
- package/dist/navbar/navbar-expandable-menu.js.map +1 -1
- package/dist/navbar/navbar-expandable-menu.mjs +1 -1
- package/dist/navbar/navbar.js +11 -50
- package/dist/navbar/navbar.js.map +1 -1
- package/dist/navbar/navbar.mjs +2 -2
- package/package.json +2 -2
- package/src/navbar/navbar-expandable-menu.tsx +18 -52
- package/dist/chunk-ZV4GTALL.mjs.map +0 -1
- /package/dist/{chunk-AQZALI2J.mjs.map → chunk-DTU7AXY3.mjs.map} +0 -0
package/dist/navbar/navbar.mjs
CHANGED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
NavbarLogo,
|
|
8
8
|
NavbarLogoAndServiceText,
|
|
9
9
|
NavbarNavigation
|
|
10
|
-
} from "../chunk-
|
|
11
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-DTU7AXY3.mjs";
|
|
11
|
+
import "../chunk-DRSAVDIE.mjs";
|
|
12
12
|
import "../chunk-XMDDGSCF.mjs";
|
|
13
13
|
import "../chunk-ILFK3VKS.mjs";
|
|
14
14
|
import "../chunk-YOSPWY5K.mjs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@postenbring/hedwig-react",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@radix-ui/react-popover": "1.1.13",
|
|
33
33
|
"@radix-ui/react-slot": "1.2.2",
|
|
34
|
-
"@postenbring/hedwig-css": "2.1.
|
|
34
|
+
"@postenbring/hedwig-css": "2.1.3"
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public"
|
|
@@ -8,6 +8,7 @@ interface ExpandableMenuContextProps {
|
|
|
8
8
|
setOpen: (open: boolean) => void;
|
|
9
9
|
contentId: string;
|
|
10
10
|
}
|
|
11
|
+
|
|
11
12
|
const ExpandableMenuContext = createContext<ExpandableMenuContextProps | null>(null);
|
|
12
13
|
export const useNavbarExpendableMenuContext = () => {
|
|
13
14
|
const value = useContext(ExpandableMenuContext);
|
|
@@ -53,6 +54,7 @@ export function NavbarExpandableMenu({ children }: NavbarExpandableMenuProps) {
|
|
|
53
54
|
</ExpandableMenuContext.Provider>
|
|
54
55
|
);
|
|
55
56
|
}
|
|
57
|
+
|
|
56
58
|
NavbarExpandableMenu.displayName = "NavbarExpandableMenu";
|
|
57
59
|
|
|
58
60
|
/**
|
|
@@ -66,6 +68,7 @@ export interface NavbarExpandableMenuTriggerProps
|
|
|
66
68
|
whenOpenText: React.ReactNode;
|
|
67
69
|
whenOpenHelperTitle?: string;
|
|
68
70
|
}
|
|
71
|
+
|
|
69
72
|
export const NavbarExpandableMenuTrigger = forwardRef<
|
|
70
73
|
HTMLButtonElement,
|
|
71
74
|
NavbarExpandableMenuTriggerProps
|
|
@@ -86,23 +89,6 @@ export const NavbarExpandableMenuTrigger = forwardRef<
|
|
|
86
89
|
) => {
|
|
87
90
|
const { contentId, open, setOpen } = useNavbarExpendableMenuContext();
|
|
88
91
|
|
|
89
|
-
// Measure the width of the text when open and closed and choose the widest one
|
|
90
|
-
// This is to ensure that the button doesn't change size when the text changes
|
|
91
|
-
const [textWidth, setTextWidth] = useState<number | undefined>(undefined);
|
|
92
|
-
const measurementId = useId();
|
|
93
|
-
useEffect(() => {
|
|
94
|
-
const widthWhenOpen =
|
|
95
|
-
document.getElementById(`${measurementId}-when-open`)?.getBoundingClientRect().width ?? 0;
|
|
96
|
-
const widthWhenClosed =
|
|
97
|
-
document.getElementById(`${measurementId}-when-closed`)?.getBoundingClientRect().width ?? 0;
|
|
98
|
-
|
|
99
|
-
setTextWidth(widthWhenOpen < widthWhenClosed ? widthWhenClosed : widthWhenOpen);
|
|
100
|
-
}, [measurementId]);
|
|
101
|
-
|
|
102
|
-
const text = open ? whenOpenText : whenClosedText;
|
|
103
|
-
const title = open ? whenOpenHelperTitle : whenClosedHelperTitle;
|
|
104
|
-
const icon = open ? <CloseIcon /> : <MenuIcon />;
|
|
105
|
-
|
|
106
92
|
function toggleOpen() {
|
|
107
93
|
setOpen(!open);
|
|
108
94
|
}
|
|
@@ -111,48 +97,27 @@ export const NavbarExpandableMenuTrigger = forwardRef<
|
|
|
111
97
|
<button
|
|
112
98
|
aria-expanded={open}
|
|
113
99
|
aria-controls={contentId}
|
|
114
|
-
className={clsx(
|
|
100
|
+
className={clsx(
|
|
101
|
+
"hds-navbar__item",
|
|
102
|
+
className as undefined,
|
|
103
|
+
open ? "hds-navbar__item--open" : "hds-navbar__item--closed",
|
|
104
|
+
)}
|
|
115
105
|
onClick={toggleOpen}
|
|
116
106
|
ref={ref}
|
|
117
|
-
title={
|
|
107
|
+
title={open ? whenOpenHelperTitle : whenClosedHelperTitle}
|
|
118
108
|
type="button"
|
|
119
109
|
style={{ position: "relative", ...style }}
|
|
120
110
|
{...rest}
|
|
121
111
|
>
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
pointerEvents: "none",
|
|
130
|
-
whiteSpace: "nowrap",
|
|
131
|
-
}}
|
|
132
|
-
>
|
|
133
|
-
{whenOpenText}
|
|
134
|
-
</span>
|
|
135
|
-
<span
|
|
136
|
-
id={`${measurementId}-when-open`}
|
|
137
|
-
aria-hidden
|
|
138
|
-
style={{
|
|
139
|
-
position: "absolute",
|
|
140
|
-
visibility: "hidden",
|
|
141
|
-
pointerEvents: "none",
|
|
142
|
-
whiteSpace: "nowrap",
|
|
143
|
-
}}
|
|
144
|
-
>
|
|
145
|
-
{whenClosedText}
|
|
112
|
+
<span className="hds-navbar__item-responsive-text">
|
|
113
|
+
<span aria-hidden={!open} className={clsx("hds-navbar__item-whenopentext")}>
|
|
114
|
+
{whenOpenText}
|
|
115
|
+
</span>
|
|
116
|
+
<span aria-hidden={open} className={clsx("hds-navbar__item-whenclosedtext")}>
|
|
117
|
+
{whenClosedText}
|
|
118
|
+
</span>
|
|
146
119
|
</span>
|
|
147
|
-
|
|
148
|
-
{/* Actual content */}
|
|
149
|
-
<span
|
|
150
|
-
style={{ width: textWidth, whiteSpace: "nowrap" }}
|
|
151
|
-
className={clsx("hds-navbar__item-responsive-text")}
|
|
152
|
-
>
|
|
153
|
-
{text}
|
|
154
|
-
</span>
|
|
155
|
-
<span style={{ width: 32, height: 32 }}>{icon}</span>
|
|
120
|
+
<span style={{ width: 32, height: 32 }}>{open ? <CloseIcon /> : <MenuIcon />}</span>
|
|
156
121
|
</button>
|
|
157
122
|
);
|
|
158
123
|
},
|
|
@@ -166,6 +131,7 @@ export interface NavbarExpandableMenuContentProps {
|
|
|
166
131
|
children: React.ReactNode;
|
|
167
132
|
className?: string;
|
|
168
133
|
}
|
|
134
|
+
|
|
169
135
|
export const NavbarExpandableMenuContent = forwardRef<
|
|
170
136
|
HTMLDivElement,
|
|
171
137
|
NavbarExpandableMenuContentProps
|
|
@@ -1 +0,0 @@
|
|
|
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}\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}\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}\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 // Measure the width of the text when open and closed and choose the widest one\n // This is to ensure that the button doesn't change size when the text changes\n const [textWidth, setTextWidth] = useState<number | undefined>(undefined);\n const measurementId = useId();\n useEffect(() => {\n const widthWhenOpen =\n document.getElementById(`${measurementId}-when-open`)?.getBoundingClientRect().width ?? 0;\n const widthWhenClosed =\n document.getElementById(`${measurementId}-when-closed`)?.getBoundingClientRect().width ?? 0;\n\n setTextWidth(widthWhenOpen < widthWhenClosed ? widthWhenClosed : widthWhenOpen);\n }, [measurementId]);\n\n const text = open ? whenOpenText : whenClosedText;\n const title = open ? whenOpenHelperTitle : whenClosedHelperTitle;\n const icon = open ? <CloseIcon /> : <MenuIcon />;\n\n function toggleOpen() {\n setOpen(!open);\n }\n\n return (\n <button\n aria-expanded={open}\n aria-controls={contentId}\n className={clsx(\"hds-navbar__item\", className as undefined)}\n onClick={toggleOpen}\n ref={ref}\n title={title}\n type=\"button\"\n style={{ position: \"relative\", ...style }}\n {...rest}\n >\n {/* Measurement elements, not shown to the user */}\n <span\n id={`${measurementId}-when-closed`}\n aria-hidden\n style={{\n position: \"absolute\",\n visibility: \"hidden\",\n pointerEvents: \"none\",\n whiteSpace: \"nowrap\",\n }}\n >\n {whenOpenText}\n </span>\n <span\n id={`${measurementId}-when-open`}\n aria-hidden\n style={{\n position: \"absolute\",\n visibility: \"hidden\",\n pointerEvents: \"none\",\n whiteSpace: \"nowrap\",\n }}\n >\n {whenClosedText}\n </span>\n\n {/* Actual content */}\n <span\n style={{ width: textWidth, whiteSpace: \"nowrap\" }}\n className={clsx(\"hds-navbar__item-responsive-text\")}\n >\n {text}\n </span>\n <span style={{ width: 32, height: 32 }}>{icon}</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}\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":"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","names":["_a","_b"]}
|
|
File without changes
|