@firecms/core 3.0.0-canary.269 → 3.0.0-canary.270
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/components/HomePage/NavigationGroup.d.ts +3 -2
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useCollapsedGroups.d.ts +9 -0
- package/dist/index.es.js +156 -60
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +155 -59
- package/dist/index.umd.js.map +1 -1
- package/package.json +5 -5
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/HomePage/DefaultHomePage.tsx +18 -5
- package/src/components/HomePage/NavigationGroup.tsx +121 -41
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
- package/src/hooks/useCollapsedGroups.ts +64 -0
package/dist/index.umd.js
CHANGED
|
@@ -4760,6 +4760,48 @@
|
|
|
4760
4760
|
if (typeof window === "undefined") return false;
|
|
4761
4761
|
return window.matchMedia(`(min-width: ${breakpoints[breakpoint] + 1}px)`).matches;
|
|
4762
4762
|
}
|
|
4763
|
+
function useCollapsedGroups(groupNames) {
|
|
4764
|
+
const [collapsedGroups, setCollapsedGroups] = React.useState(() => {
|
|
4765
|
+
try {
|
|
4766
|
+
const stored = localStorage.getItem("firecms-collapsed-groups");
|
|
4767
|
+
return stored ? JSON.parse(stored) : {};
|
|
4768
|
+
} catch {
|
|
4769
|
+
return {};
|
|
4770
|
+
}
|
|
4771
|
+
});
|
|
4772
|
+
React.useEffect(() => {
|
|
4773
|
+
try {
|
|
4774
|
+
localStorage.setItem("firecms-collapsed-groups", JSON.stringify(collapsedGroups));
|
|
4775
|
+
} catch {
|
|
4776
|
+
}
|
|
4777
|
+
}, [collapsedGroups]);
|
|
4778
|
+
React.useEffect(() => {
|
|
4779
|
+
if (groupNames.length === 0) return;
|
|
4780
|
+
const currentGroupNames = new Set(groupNames);
|
|
4781
|
+
setCollapsedGroups((prev) => {
|
|
4782
|
+
const cleaned = Object.fromEntries(Object.entries(prev).filter(([groupName]) => currentGroupNames.has(groupName)));
|
|
4783
|
+
const prevKeys = Object.keys(prev);
|
|
4784
|
+
const cleanedKeys = Object.keys(cleaned);
|
|
4785
|
+
if (prevKeys.length === cleanedKeys.length && prevKeys.every((key) => cleanedKeys.includes(key))) {
|
|
4786
|
+
return prev;
|
|
4787
|
+
}
|
|
4788
|
+
return cleaned;
|
|
4789
|
+
});
|
|
4790
|
+
}, [groupNames]);
|
|
4791
|
+
const isGroupCollapsed = React.useCallback((name) => {
|
|
4792
|
+
return !!collapsedGroups[name];
|
|
4793
|
+
}, [collapsedGroups]);
|
|
4794
|
+
const toggleGroupCollapsed = React.useCallback((name_0) => {
|
|
4795
|
+
setCollapsedGroups((prev_0) => ({
|
|
4796
|
+
...prev_0,
|
|
4797
|
+
[name_0]: !prev_0[name_0]
|
|
4798
|
+
}));
|
|
4799
|
+
}, []);
|
|
4800
|
+
return {
|
|
4801
|
+
isGroupCollapsed,
|
|
4802
|
+
toggleGroupCollapsed
|
|
4803
|
+
};
|
|
4804
|
+
}
|
|
4763
4805
|
function ErrorTooltip(props) {
|
|
4764
4806
|
const $ = reactCompilerRuntime.c(2);
|
|
4765
4807
|
let t0;
|
|
@@ -4780,6 +4822,7 @@
|
|
|
4780
4822
|
tooltip
|
|
4781
4823
|
} = t0;
|
|
4782
4824
|
const component = error instanceof Error ? error.message : error;
|
|
4825
|
+
console.warn("ErrorView", JSON.stringify(error));
|
|
4783
4826
|
let t1;
|
|
4784
4827
|
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
4785
4828
|
t1 = /* @__PURE__ */ jsxRuntime.jsx(ui.ErrorIcon, { className: "mx-2", size: "small", color: "error" });
|
|
@@ -12922,7 +12965,7 @@
|
|
|
12922
12965
|
};
|
|
12923
12966
|
}
|
|
12924
12967
|
function NavigationGroup(t0) {
|
|
12925
|
-
const $ = reactCompilerRuntime.c(
|
|
12968
|
+
const $ = reactCompilerRuntime.c(42);
|
|
12926
12969
|
const {
|
|
12927
12970
|
children,
|
|
12928
12971
|
group,
|
|
@@ -12930,97 +12973,144 @@
|
|
|
12930
12973
|
isPreview,
|
|
12931
12974
|
isPotentialCardDropTarget,
|
|
12932
12975
|
onEditGroup,
|
|
12933
|
-
dndDisabled
|
|
12976
|
+
dndDisabled,
|
|
12977
|
+
collapsed,
|
|
12978
|
+
onToggleCollapsed
|
|
12934
12979
|
} = t0;
|
|
12935
12980
|
const [isHovered, setIsHovered] = React.useState(false);
|
|
12936
12981
|
const currentGroupName = group ?? "Views";
|
|
12937
|
-
const
|
|
12982
|
+
const showCaret = !isPreview && !!onToggleCollapsed;
|
|
12983
|
+
const t1 = isPreview ? "px-1 py-0.5" : "";
|
|
12938
12984
|
let t2;
|
|
12939
12985
|
if ($[0] !== t1) {
|
|
12940
|
-
t2 = ui.cls(
|
|
12986
|
+
t2 = ui.cls("flex items-center", t1);
|
|
12941
12987
|
$[0] = t1;
|
|
12942
12988
|
$[1] = t2;
|
|
12943
12989
|
} else {
|
|
12944
12990
|
t2 = $[1];
|
|
12945
12991
|
}
|
|
12946
|
-
const t3 =
|
|
12992
|
+
const t3 = isPreview ? "body2" : "caption";
|
|
12947
12993
|
let t4;
|
|
12948
|
-
let t5;
|
|
12949
12994
|
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
12950
|
-
t4 = (
|
|
12951
|
-
t5 = () => setIsHovered(false);
|
|
12995
|
+
t4 = ui.cls("p-4 py-2 rounded", "font-medium uppercase text-sm text-surface-600 dark:text-surface-400");
|
|
12952
12996
|
$[2] = t4;
|
|
12953
|
-
$[3] = t5;
|
|
12954
12997
|
} else {
|
|
12955
12998
|
t4 = $[2];
|
|
12956
|
-
t5 = $[3];
|
|
12957
12999
|
}
|
|
12958
|
-
|
|
12959
|
-
|
|
12960
|
-
|
|
12961
|
-
|
|
12962
|
-
|
|
12963
|
-
$[
|
|
12964
|
-
$[5] = t6;
|
|
12965
|
-
$[6] = t7;
|
|
12966
|
-
$[7] = t8;
|
|
13000
|
+
let t5;
|
|
13001
|
+
if ($[3] !== currentGroupName || $[4] !== t3) {
|
|
13002
|
+
t5 = /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: t3, component: "h2", color: "secondary", className: t4, children: currentGroupName });
|
|
13003
|
+
$[3] = currentGroupName;
|
|
13004
|
+
$[4] = t3;
|
|
13005
|
+
$[5] = t5;
|
|
12967
13006
|
} else {
|
|
12968
|
-
|
|
13007
|
+
t5 = $[5];
|
|
12969
13008
|
}
|
|
12970
|
-
let
|
|
12971
|
-
if ($[
|
|
12972
|
-
|
|
13009
|
+
let t6;
|
|
13010
|
+
if ($[6] !== currentGroupName || $[7] !== dndDisabled || $[8] !== isHovered || $[9] !== isPreview || $[10] !== onEditGroup) {
|
|
13011
|
+
t6 = !isPreview && onEditGroup && !dndDisabled && /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { size: "smallest", onClick: (e) => {
|
|
12973
13012
|
e.stopPropagation();
|
|
12974
13013
|
onEditGroup(currentGroupName);
|
|
12975
13014
|
}, className: ui.cls("ml-2 ", isHovered ? "opacity-100" : "opacity-0", "transition-opacity duration-100"), children: /* @__PURE__ */ jsxRuntime.jsx(ui.EditIcon, { size: "smallest" }) });
|
|
12976
|
-
$[
|
|
12977
|
-
$[
|
|
12978
|
-
$[
|
|
12979
|
-
$[
|
|
12980
|
-
$[
|
|
12981
|
-
$[
|
|
13015
|
+
$[6] = currentGroupName;
|
|
13016
|
+
$[7] = dndDisabled;
|
|
13017
|
+
$[8] = isHovered;
|
|
13018
|
+
$[9] = isPreview;
|
|
13019
|
+
$[10] = onEditGroup;
|
|
13020
|
+
$[11] = t6;
|
|
13021
|
+
} else {
|
|
13022
|
+
t6 = $[11];
|
|
13023
|
+
}
|
|
13024
|
+
let t7;
|
|
13025
|
+
if ($[12] !== t2 || $[13] !== t5 || $[14] !== t6) {
|
|
13026
|
+
t7 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: t2, children: [
|
|
13027
|
+
t5,
|
|
13028
|
+
t6
|
|
13029
|
+
] });
|
|
13030
|
+
$[12] = t2;
|
|
13031
|
+
$[13] = t5;
|
|
13032
|
+
$[14] = t6;
|
|
13033
|
+
$[15] = t7;
|
|
13034
|
+
} else {
|
|
13035
|
+
t7 = $[15];
|
|
13036
|
+
}
|
|
13037
|
+
const TitleContent = t7;
|
|
13038
|
+
const t8 = !isPotentialCardDropTarget ? "my-10" : "my-6";
|
|
13039
|
+
let t9;
|
|
13040
|
+
if ($[16] !== t8) {
|
|
13041
|
+
t9 = ui.cls(t8, "transition-all duration-200 ease-in-out");
|
|
13042
|
+
$[16] = t8;
|
|
13043
|
+
$[17] = t9;
|
|
12982
13044
|
} else {
|
|
12983
|
-
t9 = $[
|
|
13045
|
+
t9 = $[17];
|
|
12984
13046
|
}
|
|
12985
13047
|
let t10;
|
|
12986
|
-
if ($[
|
|
12987
|
-
t10 = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12988
|
-
|
|
12989
|
-
|
|
13048
|
+
if ($[18] !== TitleContent || $[19] !== children || $[20] !== isPreview) {
|
|
13049
|
+
t10 = isPreview && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13050
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("flex items-center justify-between w-full", "p-4 py-2"), onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: TitleContent }),
|
|
13051
|
+
children
|
|
12990
13052
|
] });
|
|
12991
|
-
$[
|
|
12992
|
-
$[
|
|
12993
|
-
$[
|
|
12994
|
-
$[
|
|
13053
|
+
$[18] = TitleContent;
|
|
13054
|
+
$[19] = children;
|
|
13055
|
+
$[20] = isPreview;
|
|
13056
|
+
$[21] = t10;
|
|
12995
13057
|
} else {
|
|
12996
|
-
t10 = $[
|
|
13058
|
+
t10 = $[21];
|
|
12997
13059
|
}
|
|
12998
13060
|
let t11;
|
|
12999
|
-
if ($[
|
|
13000
|
-
t11 = isPreview
|
|
13061
|
+
if ($[22] !== TitleContent || $[23] !== children || $[24] !== collapsed || $[25] !== isPreview || $[26] !== minimised || $[27] !== onToggleCollapsed || $[28] !== showCaret) {
|
|
13062
|
+
t11 = !isPreview && showCaret && /* @__PURE__ */ jsxRuntime.jsx(ui.ExpandablePanel, { invisible: true, expanded: !collapsed, onExpandedChange: (open) => {
|
|
13063
|
+
if (open !== !collapsed) {
|
|
13064
|
+
onToggleCollapsed?.();
|
|
13065
|
+
}
|
|
13066
|
+
}, className: ui.cls("mt-6"), titleClassName: ui.cls("min-h-0 p-0 border-none", "rounded-t flex items-center justify-between w-full", "hover:bg-transparent", "cursor-pointer select-none"), innerClassName: ui.cls("mt-4", !minimised ? "pt-0" : ""), title: /* @__PURE__ */ jsxRuntime.jsx("div", { onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), className: "flex items-center", children: TitleContent }), children: minimised ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg"), style: {
|
|
13001
13067
|
minHeight: "50px"
|
|
13002
|
-
} }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("mt-4", !minimised ? "pt-0" : ""), children });
|
|
13003
|
-
$[
|
|
13004
|
-
$[
|
|
13005
|
-
$[
|
|
13006
|
-
$[
|
|
13068
|
+
} }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("mt-4", !minimised ? "pt-0" : ""), children }) });
|
|
13069
|
+
$[22] = TitleContent;
|
|
13070
|
+
$[23] = children;
|
|
13071
|
+
$[24] = collapsed;
|
|
13072
|
+
$[25] = isPreview;
|
|
13073
|
+
$[26] = minimised;
|
|
13074
|
+
$[27] = onToggleCollapsed;
|
|
13075
|
+
$[28] = showCaret;
|
|
13076
|
+
$[29] = t11;
|
|
13007
13077
|
} else {
|
|
13008
|
-
t11 = $[
|
|
13078
|
+
t11 = $[29];
|
|
13009
13079
|
}
|
|
13010
13080
|
let t12;
|
|
13011
|
-
if ($[
|
|
13012
|
-
t12 = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13081
|
+
if ($[30] !== TitleContent || $[31] !== children || $[32] !== collapsed || $[33] !== isPreview || $[34] !== minimised || $[35] !== showCaret) {
|
|
13082
|
+
t12 = !isPreview && !showCaret && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13083
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("flex items-center justify-between w-full", "mt-6"), onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: TitleContent }),
|
|
13084
|
+
!collapsed && (minimised ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg"), style: {
|
|
13085
|
+
minHeight: "50px"
|
|
13086
|
+
} }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cls("mt-4", !minimised ? "pt-0" : ""), children }))
|
|
13087
|
+
] });
|
|
13088
|
+
$[30] = TitleContent;
|
|
13089
|
+
$[31] = children;
|
|
13090
|
+
$[32] = collapsed;
|
|
13091
|
+
$[33] = isPreview;
|
|
13092
|
+
$[34] = minimised;
|
|
13093
|
+
$[35] = showCaret;
|
|
13094
|
+
$[36] = t12;
|
|
13095
|
+
} else {
|
|
13096
|
+
t12 = $[36];
|
|
13097
|
+
}
|
|
13098
|
+
let t13;
|
|
13099
|
+
if ($[37] !== t10 || $[38] !== t11 || $[39] !== t12 || $[40] !== t9) {
|
|
13100
|
+
t13 = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: t9, children: [
|
|
13013
13101
|
t10,
|
|
13014
|
-
t11
|
|
13102
|
+
t11,
|
|
13103
|
+
t12
|
|
13015
13104
|
] });
|
|
13016
|
-
$[
|
|
13017
|
-
$[
|
|
13018
|
-
$[
|
|
13019
|
-
$[
|
|
13105
|
+
$[37] = t10;
|
|
13106
|
+
$[38] = t11;
|
|
13107
|
+
$[39] = t12;
|
|
13108
|
+
$[40] = t9;
|
|
13109
|
+
$[41] = t13;
|
|
13020
13110
|
} else {
|
|
13021
|
-
|
|
13111
|
+
t13 = $[41];
|
|
13022
13112
|
}
|
|
13023
|
-
return
|
|
13113
|
+
return t13;
|
|
13024
13114
|
}
|
|
13025
13115
|
const NavigationCard = React.memo(function NavigationCard2(t0) {
|
|
13026
13116
|
const $ = reactCompilerRuntime.c(25);
|
|
@@ -14219,6 +14309,11 @@
|
|
|
14219
14309
|
}] : draggable;
|
|
14220
14310
|
onNavigationEntriesUpdate(all);
|
|
14221
14311
|
};
|
|
14312
|
+
const groupNames = React.useMemo(() => [...items.map((item) => item.name), ...adminGroupData ? [adminGroupData.name] : []], [items, adminGroupData]);
|
|
14313
|
+
const {
|
|
14314
|
+
isGroupCollapsed,
|
|
14315
|
+
toggleGroupCollapsed
|
|
14316
|
+
} = useCollapsedGroups(groupNames);
|
|
14222
14317
|
const {
|
|
14223
14318
|
sensors,
|
|
14224
14319
|
collisionDetection,
|
|
@@ -14304,7 +14399,7 @@
|
|
|
14304
14399
|
return /* @__PURE__ */ jsxRuntime.jsx(SortableNavigationGroup, { groupName: groupKey, disabled: dndDisabled, children: /* @__PURE__ */ jsxRuntime.jsx(NavigationGroup, { group: groupKey === DEFAULT_GROUP_NAME ? void 0 : groupKey, minimised: draggingGroupId === groupKey && !isDraggingCardOnly, isPotentialCardDropTarget: isDraggingCardOnly, dndDisabled, onEditGroup: () => {
|
|
14305
14400
|
if (dndDisabled) return;
|
|
14306
14401
|
setDialogOpenForGroup(groupKey);
|
|
14307
|
-
}, children: /* @__PURE__ */ jsxRuntime.jsx(NavigationGroupDroppable, { id: groupKey, itemIds: entriesInGroup.map((e_4) => e_4.url), isPotentialCardDropTarget: isDraggingCardOnly, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 ", children: [
|
|
14402
|
+
}, collapsed: isGroupCollapsed(groupKey), onToggleCollapsed: () => toggleGroupCollapsed(groupKey), children: /* @__PURE__ */ jsxRuntime.jsx(NavigationGroupDroppable, { id: groupKey, itemIds: entriesInGroup.map((e_4) => e_4.url), isPotentialCardDropTarget: isDraggingCardOnly, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 ", children: [
|
|
14308
14403
|
entriesInGroup.map((entry) => /* @__PURE__ */ jsxRuntime.jsx(SortableNavigationCard, { entry, onClick: () => {
|
|
14309
14404
|
let event = "unmapped_event";
|
|
14310
14405
|
if (entry.type === "collection") event = "home_navigate_to_collection";
|
|
@@ -14323,7 +14418,7 @@
|
|
|
14323
14418
|
margin: 0
|
|
14324
14419
|
}, children: /* @__PURE__ */ jsxRuntime.jsx(NavigationGroup, { group: activeGroupData.name === DEFAULT_GROUP_NAME ? void 0 : activeGroupData.name, isPreview: false, minimised: true }) }) : activeItemForOverlay ? /* @__PURE__ */ jsxRuntime.jsx(NavigationCardBinding, { ...activeItemForOverlay, shrink: isHoveringNewGroupDropZone }) : null })
|
|
14325
14420
|
] }),
|
|
14326
|
-
!performingSearch && adminGroupData && /* @__PURE__ */ jsxRuntime.jsx(NavigationGroup, { group: adminGroupData.name, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 ", children: adminGroupData.entries.map((entry_0) => /* @__PURE__ */ jsxRuntime.jsx(NavigationCardBinding, { ...entry_0, onClick: () => {
|
|
14421
|
+
!performingSearch && adminGroupData && /* @__PURE__ */ jsxRuntime.jsx(NavigationGroup, { group: adminGroupData.name, collapsed: isGroupCollapsed(adminGroupData.name), onToggleCollapsed: () => toggleGroupCollapsed(adminGroupData.name), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 ", children: adminGroupData.entries.map((entry_0) => /* @__PURE__ */ jsxRuntime.jsx(NavigationCardBinding, { ...entry_0, onClick: () => {
|
|
14327
14422
|
let event_0 = "unmapped_event";
|
|
14328
14423
|
if (entry_0.type === "collection") event_0 = "home_navigate_to_collection";
|
|
14329
14424
|
else if (entry_0.type === "view") event_0 = "home_navigate_to_view";
|
|
@@ -21367,7 +21462,7 @@
|
|
|
21367
21462
|
}
|
|
21368
21463
|
return t2;
|
|
21369
21464
|
}
|
|
21370
|
-
const fireCMSLogo = "data:image/png;base64,
|
|
21465
|
+
const fireCMSLogo = "data:image/png;base64,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";
|
|
21371
21466
|
function useBrowserTitleAndIcon(name, logo) {
|
|
21372
21467
|
const $ = reactCompilerRuntime.c(4);
|
|
21373
21468
|
let t0;
|
|
@@ -25791,6 +25886,7 @@
|
|
|
25791
25886
|
exports2.useBuildNavigationController = useBuildNavigationController;
|
|
25792
25887
|
exports2.useClearRestoreValue = useClearRestoreValue;
|
|
25793
25888
|
exports2.useClipboard = useClipboard;
|
|
25889
|
+
exports2.useCollapsedGroups = useCollapsedGroups;
|
|
25794
25890
|
exports2.useCollectionFetch = useCollectionFetch;
|
|
25795
25891
|
exports2.useColumnIds = useColumnIds;
|
|
25796
25892
|
exports2.useCustomizationController = useCustomizationController;
|