@cosmicdrift/kumiko-renderer-web 0.345.0 → 0.347.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.
|
@@ -10,6 +10,8 @@ export type PageHeaderSlot = {
|
|
|
10
10
|
readonly setTitle: (title: string | undefined) => void;
|
|
11
11
|
readonly recordTitle: string | undefined;
|
|
12
12
|
readonly setRecordTitle: (recordTitle: string | undefined) => void;
|
|
13
|
+
readonly breadcrumbHidden: boolean;
|
|
14
|
+
readonly setBreadcrumbHidden: (hidden: boolean) => void;
|
|
13
15
|
readonly overflowItems: readonly ActionMenuItemSpec[] | undefined;
|
|
14
16
|
readonly setOverflowItems: (items: readonly ActionMenuItemSpec[] | undefined) => void;
|
|
15
17
|
};
|
|
@@ -18,6 +18,7 @@ export function PageHeaderSlotProvider({ children }) {
|
|
|
18
18
|
const [actionsElement, setActionsElement] = useState(null);
|
|
19
19
|
const [title, setTitle] = useState(undefined);
|
|
20
20
|
const [recordTitle, setRecordTitle] = useState(undefined);
|
|
21
|
+
const [breadcrumbHidden, setBreadcrumbHidden] = useState(false);
|
|
21
22
|
const [overflowItems, setOverflowItems] = useState(undefined);
|
|
22
23
|
const compact = useIsNarrowViewport();
|
|
23
24
|
const value = useMemo(() => ({
|
|
@@ -29,8 +30,10 @@ export function PageHeaderSlotProvider({ children }) {
|
|
|
29
30
|
setTitle,
|
|
30
31
|
recordTitle,
|
|
31
32
|
setRecordTitle,
|
|
33
|
+
breadcrumbHidden,
|
|
34
|
+
setBreadcrumbHidden,
|
|
32
35
|
overflowItems,
|
|
33
36
|
setOverflowItems,
|
|
34
|
-
}), [statusElement, actionsElement, title, recordTitle, overflowItems]);
|
|
37
|
+
}), [statusElement, actionsElement, title, recordTitle, breadcrumbHidden, overflowItems]);
|
|
35
38
|
return (_jsx(PageHeaderSlotContext.Provider, { value: value, children: _jsx(PageHeaderSlotAvailableProvider, { value: true, children: _jsx(PageHeaderCompactProvider, { value: compact, children: children }) }) }));
|
|
36
39
|
}
|
|
@@ -45,9 +45,11 @@ export function ShellHeader({ schema, user, headerActions, }) {
|
|
|
45
45
|
const compact = usePageHeaderCompact();
|
|
46
46
|
const overflowItems = slot?.overflowItems ?? [];
|
|
47
47
|
const hasOverflow = compact && (overflowItems.length > 0 || headerActions !== undefined);
|
|
48
|
-
const shownCrumbs =
|
|
49
|
-
?
|
|
50
|
-
: crumbs
|
|
48
|
+
const shownCrumbs = slot?.breadcrumbHidden === true
|
|
49
|
+
? undefined
|
|
50
|
+
: crumbs !== undefined && recordTitle !== undefined && crumbs.length > 0
|
|
51
|
+
? [...crumbs.slice(0, -1), { label: recordTitle }, ...crumbs.slice(-1)]
|
|
52
|
+
: crumbs;
|
|
51
53
|
return (_jsxs("header", { "data-kumiko-layout": "shell-header", className: cn("flex h-14 shrink-0 items-center gap-3 border-b border-border pl-1.5 pr-3 md:pl-4 md:pr-6", compact && "relative"), children: [_jsxs("div", { className: cn("flex min-w-0 items-center gap-3", compact && "flex-1"), children: [_jsx(SidebarTrigger, {}), shownCrumbs !== undefined && shownCrumbs.length > 0 && (_jsx(Breadcrumb, { className: "min-w-0", children: _jsx(BreadcrumbList, { className: "flex-nowrap gap-1.5 sm:gap-1.5", children: shownCrumbs.map((crumb, index) => {
|
|
52
54
|
const screenId = crumb.screenId;
|
|
53
55
|
const isLast = index === shownCrumbs.length - 1;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { PageHeaderProps } from "@cosmicdrift/kumiko-renderer";
|
|
2
2
|
import { type ReactNode } from "react";
|
|
3
|
-
export declare function DefaultPageHeader({ title, recordTitle, status, actions, overflowItems, }: PageHeaderProps): ReactNode;
|
|
3
|
+
export declare function DefaultPageHeader({ title, recordTitle, status, actions, overflowItems, hideBreadcrumb, }: PageHeaderProps): ReactNode;
|
|
@@ -2,11 +2,18 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { useEffect } from "react";
|
|
3
3
|
import { createPortal } from "react-dom";
|
|
4
4
|
import { usePageHeaderSlot } from "../layout/page-header-slot.js";
|
|
5
|
-
export function DefaultPageHeader({ title, recordTitle, status, actions, overflowItems, }) {
|
|
5
|
+
export function DefaultPageHeader({ title, recordTitle, status, actions, overflowItems, hideBreadcrumb, }) {
|
|
6
6
|
const slot = usePageHeaderSlot();
|
|
7
7
|
const setOverflowItems = slot?.setOverflowItems;
|
|
8
8
|
const setTitle = slot?.setTitle;
|
|
9
9
|
const setRecordTitle = slot?.setRecordTitle;
|
|
10
|
+
const setBreadcrumbHidden = slot?.setBreadcrumbHidden;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (setBreadcrumbHidden === undefined || hideBreadcrumb !== true)
|
|
13
|
+
return;
|
|
14
|
+
setBreadcrumbHidden(true);
|
|
15
|
+
return () => setBreadcrumbHidden(false);
|
|
16
|
+
}, [setBreadcrumbHidden, hideBreadcrumb]);
|
|
10
17
|
useEffect(() => {
|
|
11
18
|
if (setRecordTitle === undefined || recordTitle === undefined)
|
|
12
19
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-renderer-web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.347.0",
|
|
4
4
|
"description": "Web-platform bindings for @cosmicdrift/kumiko-renderer. HTML default-primitives, browser history-based navigation, EventSource-backed live events, and a one-call createKumikoApp that mounts the whole stack via react-dom.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@cosmicdrift/kumiko-dispatcher-live": "0.
|
|
24
|
-
"@cosmicdrift/kumiko-framework": "0.
|
|
25
|
-
"@cosmicdrift/kumiko-headless": "0.
|
|
26
|
-
"@cosmicdrift/kumiko-renderer": "0.
|
|
27
|
-
"@cosmicdrift/kumiko-types": "0.
|
|
23
|
+
"@cosmicdrift/kumiko-dispatcher-live": "0.347.0",
|
|
24
|
+
"@cosmicdrift/kumiko-framework": "0.347.0",
|
|
25
|
+
"@cosmicdrift/kumiko-headless": "0.347.0",
|
|
26
|
+
"@cosmicdrift/kumiko-renderer": "0.347.0",
|
|
27
|
+
"@cosmicdrift/kumiko-types": "0.347.0",
|
|
28
28
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
29
29
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
30
30
|
"@radix-ui/react-label": "^2.1.8",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"@types/react-dom": "^19.2.3",
|
|
73
73
|
"jsdom": "^29.1.1",
|
|
74
74
|
"tailwindcss": "^4.3.0",
|
|
75
|
-
"@cosmicdrift/kumiko-locale-de": "0.
|
|
75
|
+
"@cosmicdrift/kumiko-locale-de": "0.347.0"
|
|
76
76
|
},
|
|
77
77
|
"repository": {
|
|
78
78
|
"type": "git",
|