@rakun-kit/manager-react 1.0.4 → 1.2.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/README.md +1 -1
- package/dist/cjs/components/app-sidebar.js +76 -10
- package/dist/cjs/components/app-sidebar.js.map +1 -1
- package/dist/cjs/components/nav-main.js +4 -1
- package/dist/cjs/components/nav-main.js.map +1 -1
- package/dist/cjs/components/nav-secondary.js +2 -1
- package/dist/cjs/components/nav-secondary.js.map +1 -1
- package/dist/cjs/layouts.js +1 -1
- package/dist/cjs/layouts.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.js +13 -10
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.js +31 -5
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/edit.js +67 -73
- package/dist/cjs/router/dashboard/[contentType]/[edit]/edit.js.map +1 -1
- package/dist/esm/components/app-sidebar.d.ts +4 -1
- package/dist/esm/components/app-sidebar.d.ts.map +1 -1
- package/dist/esm/components/app-sidebar.js +78 -12
- package/dist/esm/components/app-sidebar.js.map +1 -1
- package/dist/esm/components/nav-main.d.ts +2 -0
- package/dist/esm/components/nav-main.d.ts.map +1 -1
- package/dist/esm/components/nav-main.js +5 -2
- package/dist/esm/components/nav-main.js.map +1 -1
- package/dist/esm/components/nav-secondary.d.ts +1 -0
- package/dist/esm/components/nav-secondary.d.ts.map +1 -1
- package/dist/esm/components/nav-secondary.js +2 -1
- package/dist/esm/components/nav-secondary.js.map +1 -1
- package/dist/esm/layouts.d.ts.map +1 -1
- package/dist/esm/layouts.js +1 -1
- package/dist/esm/layouts.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.d.ts +2 -2
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.js +23 -20
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.js +31 -5
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/index.d.ts +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.js +67 -73
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.js.map +1 -1
- package/dist/styles.css +237 -99
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -9,6 +9,42 @@ const nav_main_1 = require("./nav-main.js");
|
|
|
9
9
|
const nav_secondary_1 = require("./nav-secondary.js");
|
|
10
10
|
const nav_user_1 = require("./nav-user.js");
|
|
11
11
|
const sidebar_1 = require("./ui/sidebar.js");
|
|
12
|
+
const lucideIconByName = lucide_react_1.icons;
|
|
13
|
+
const toPascalCase = (value) => value
|
|
14
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
15
|
+
.split(/[\s_-]+/)
|
|
16
|
+
.filter(Boolean)
|
|
17
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
18
|
+
.join('');
|
|
19
|
+
const resolveLucideIcon = (name) => {
|
|
20
|
+
if (!name)
|
|
21
|
+
return undefined;
|
|
22
|
+
const candidates = [
|
|
23
|
+
name,
|
|
24
|
+
`${name}Icon`,
|
|
25
|
+
toPascalCase(name),
|
|
26
|
+
`${toPascalCase(name)}Icon`,
|
|
27
|
+
];
|
|
28
|
+
for (const candidate of candidates) {
|
|
29
|
+
const icon = lucideIconByName[candidate];
|
|
30
|
+
if (icon)
|
|
31
|
+
return icon;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const cleanPathname = (path) => {
|
|
35
|
+
const [pathname = ''] = path.split(/[?#]/);
|
|
36
|
+
return pathname.replace(/\/+$/, '') || '/';
|
|
37
|
+
};
|
|
38
|
+
const isActiveHref = (href, pathname, basePath) => {
|
|
39
|
+
if (!pathname || !href)
|
|
40
|
+
return false;
|
|
41
|
+
const currentPath = cleanPathname(pathname);
|
|
42
|
+
const itemPath = cleanPathname((0, navigation_1.getManagerRelativePathname)(href, { basePath }));
|
|
43
|
+
if (itemPath === '/') {
|
|
44
|
+
return currentPath === '/';
|
|
45
|
+
}
|
|
46
|
+
return currentPath === itemPath || currentPath.startsWith(`${itemPath}/`);
|
|
47
|
+
};
|
|
12
48
|
const getDefaultSecondaryNavItems = (basePath) => [
|
|
13
49
|
{
|
|
14
50
|
title: 'Media Library',
|
|
@@ -36,15 +72,45 @@ const getDefaultSecondaryNavItems = (basePath) => [
|
|
|
36
72
|
icon: lucide_react_1.HelpCircle,
|
|
37
73
|
},
|
|
38
74
|
];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
75
|
+
const getContentTypeNavItems = (contentTypes, basePath, pathname) => {
|
|
76
|
+
const items = [];
|
|
77
|
+
const categories = new Map();
|
|
78
|
+
for (const type of contentTypes) {
|
|
79
|
+
if (!type.menu)
|
|
80
|
+
continue;
|
|
81
|
+
const item = {
|
|
82
|
+
title: type.menu.title,
|
|
83
|
+
url: (0, navigation_1.getManagerRouteHref)({
|
|
84
|
+
name: 'content.list',
|
|
85
|
+
contentType: type.name,
|
|
86
|
+
}, { basePath }),
|
|
87
|
+
icon: resolveLucideIcon(type.menu.icon),
|
|
88
|
+
isActive: false,
|
|
89
|
+
};
|
|
90
|
+
item.isActive = isActiveHref(item.url, pathname, basePath);
|
|
91
|
+
if (!type.menu.category) {
|
|
92
|
+
items.push(item);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
let category = categories.get(type.menu.category);
|
|
96
|
+
if (!category) {
|
|
97
|
+
category = {
|
|
98
|
+
title: type.menu.category,
|
|
99
|
+
url: '',
|
|
100
|
+
items: [],
|
|
101
|
+
};
|
|
102
|
+
categories.set(type.menu.category, category);
|
|
103
|
+
items.push(category);
|
|
104
|
+
}
|
|
105
|
+
category.items?.push(item);
|
|
106
|
+
category.isActive ||= item.isActive;
|
|
107
|
+
}
|
|
108
|
+
return items;
|
|
109
|
+
};
|
|
110
|
+
function AppSidebar({ contentTypes, pathname, basePath = '', secondaryItems = getDefaultSecondaryNavItems(basePath), ...props }) {
|
|
111
|
+
return ((0, jsx_runtime_1.jsxs)(sidebar_1.Sidebar, { variant: 'inset', ...props, children: [(0, jsx_runtime_1.jsx)(sidebar_1.SidebarHeader, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenu, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuItem, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuButton, { size: 'lg', asChild: true, children: (0, jsx_runtime_1.jsxs)(link_1.ManagerLink, { href: basePath, children: [(0, jsx_runtime_1.jsx)("div", { className: 'bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg', children: (0, jsx_runtime_1.jsx)(lucide_react_1.Command, { className: 'size-4' }) }), (0, jsx_runtime_1.jsxs)("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [(0, jsx_runtime_1.jsx)("span", { className: 'truncate font-medium', children: "CMS" }), (0, jsx_runtime_1.jsx)("span", { className: 'truncate text-xs', children: "Enterprise" })] })] }) }) }) }) }), (0, jsx_runtime_1.jsxs)(sidebar_1.SidebarContent, { children: [(0, jsx_runtime_1.jsx)(nav_main_1.NavMain, { items: getContentTypeNavItems(contentTypes, basePath, pathname) }), (0, jsx_runtime_1.jsx)(nav_secondary_1.NavSecondary, { items: secondaryItems.map((item) => ({
|
|
112
|
+
...item,
|
|
113
|
+
isActive: isActiveHref(item.url, pathname, basePath),
|
|
114
|
+
})), className: 'mt-auto' })] }), (0, jsx_runtime_1.jsx)(sidebar_1.SidebarFooter, { children: (0, jsx_runtime_1.jsx)(nav_user_1.NavUser, {}) })] }));
|
|
49
115
|
}
|
|
50
116
|
//# sourceMappingURL=app-sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-sidebar.js","sourceRoot":"","sources":["../../../src/components/app-sidebar.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"app-sidebar.js","sourceRoot":"","sources":["../../../src/components/app-sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,10 @@ const lucide_react_1 = require("lucide-react");
|
|
|
7
7
|
const link_1 = require("../link.js");
|
|
8
8
|
const collapsible_1 = require("./ui/collapsible.js");
|
|
9
9
|
const sidebar_1 = require("./ui/sidebar.js");
|
|
10
|
+
const activeMenuClass = 'data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-sm data-[active=true]:hover:bg-primary/90 data-[active=true]:hover:text-primary-foreground data-[active=true]:[&>svg]:text-primary-foreground';
|
|
11
|
+
const closedCategoryActiveMenuClass = 'data-[state=closed]:data-[active=true]:bg-primary data-[state=closed]:data-[active=true]:text-primary-foreground data-[state=closed]:data-[active=true]:shadow-sm data-[state=closed]:data-[active=true]:hover:bg-primary/90 data-[state=closed]:data-[active=true]:hover:text-primary-foreground data-[state=closed]:data-[active=true]:[&>svg]:text-primary-foreground';
|
|
10
12
|
function NavMain({ items, }) {
|
|
11
|
-
|
|
13
|
+
const totalItems = items.reduce((total, item) => total + (item.items?.length ?? 1), 0);
|
|
14
|
+
return ((0, jsx_runtime_1.jsxs)(sidebar_1.SidebarGroup, { children: [(0, jsx_runtime_1.jsxs)(sidebar_1.SidebarGroupLabel, { children: ["Content types (", totalItems, ")"] }), (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenu, { children: items.map((item) => ((0, jsx_runtime_1.jsx)(collapsible_1.Collapsible, { asChild: true, defaultOpen: item.isActive ?? Boolean(item.items?.length), children: (0, jsx_runtime_1.jsxs)(sidebar_1.SidebarMenuItem, { className: 'group/collapsible', children: [item.items?.length ? ((0, jsx_runtime_1.jsx)(collapsible_1.CollapsibleTrigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)(sidebar_1.SidebarMenuButton, { tooltip: item.title, isActive: item.isActive, className: closedCategoryActiveMenuClass, children: [item.icon && (0, jsx_runtime_1.jsx)(item.icon, {}), (0, jsx_runtime_1.jsx)("span", { children: item.title }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: 'ms-auto transition-transform group-data-[state=open]/collapsible:rotate-90' })] }) })) : ((0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuButton, { asChild: true, tooltip: item.title, isActive: item.isActive, className: activeMenuClass, children: (0, jsx_runtime_1.jsxs)(link_1.ManagerLink, { href: item.url, children: [item.icon && (0, jsx_runtime_1.jsx)(item.icon, {}), (0, jsx_runtime_1.jsx)("span", { children: item.title })] }) })), item.items?.length ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(collapsible_1.CollapsibleContent, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuSub, { children: item.items?.map((subItem) => ((0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuSubItem, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuSubButton, { asChild: true, isActive: subItem.isActive, className: activeMenuClass, children: (0, jsx_runtime_1.jsxs)(link_1.ManagerLink, { href: subItem.url, children: [subItem.icon && (0, jsx_runtime_1.jsx)(subItem.icon, {}), subItem.title] }) }) }, subItem.title))) }) }) })) : null] }) }, item.title))) })] }));
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=nav-main.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-main.js","sourceRoot":"","sources":["../../../src/components/nav-main.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"nav-main.js","sourceRoot":"","sources":["../../../src/components/nav-main.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;AA0BZ,0BAqFC;;AA9GD,+CAA4D;AAE5D,iCAAoC;AACpC,kDAIyB;AACzB,0CASqB;AAErB,MAAM,eAAe,GACnB,kPAAkP,CAAA;AAEpP,MAAM,6BAA6B,GACjC,0WAA0W,CAAA;AAE5W,SAAgB,OAAO,CAAC,EACtB,KAAK,GAcN;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,EAClD,CAAC,CACF,CAAA;IAED,OAAO,CACL,wBAAC,sBAAY,eACX,wBAAC,2BAAiB,kCAAiB,UAAU,SAAsB,EACnE,uBAAC,qBAAW,cACT,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,uBAAC,yBAAW,IAEV,OAAO,QACP,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,YAEzD,wBAAC,yBAAe,IAAC,SAAS,EAAC,mBAAmB,aAC3C,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CACpB,uBAAC,gCAAkB,IAAC,OAAO,kBACzB,wBAAC,2BAAiB,IAChB,OAAO,EAAE,IAAI,CAAC,KAAK,EACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,6BAA6B,aAEvC,IAAI,CAAC,IAAI,IAAI,uBAAC,IAAI,CAAC,IAAI,KAAG,EAC3B,2CAAO,IAAI,CAAC,KAAK,GAAQ,EACzB,uBAAC,2BAAY,IAAC,SAAS,EAAC,4EAA4E,GAAG,IACrF,GACD,CACtB,CAAC,CAAC,CAAC,CACF,uBAAC,2BAAiB,IAChB,OAAO,QACP,OAAO,EAAE,IAAI,CAAC,KAAK,EACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,eAAe,YAE1B,wBAAC,kBAAW,IAAC,IAAI,EAAE,IAAI,CAAC,GAAG,aACxB,IAAI,CAAC,IAAI,IAAI,uBAAC,IAAI,CAAC,IAAI,KAAG,EAC3B,2CAAO,IAAI,CAAC,KAAK,GAAQ,IACb,GACI,CACrB,EACA,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CACpB,2DACE,uBAAC,gCAAkB,cACjB,uBAAC,wBAAc,cACZ,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC5B,uBAAC,4BAAkB,cACjB,uBAAC,8BAAoB,IACnB,OAAO,QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,SAAS,EAAE,eAAe,YAE1B,wBAAC,kBAAW,IAAC,IAAI,EAAE,OAAO,CAAC,GAAG,aAC3B,OAAO,CAAC,IAAI,IAAI,uBAAC,OAAO,CAAC,IAAI,KAAG,EAChC,OAAO,CAAC,KAAK,IACF,GACO,IAVA,OAAO,CAAC,KAAK,CAWjB,CACtB,CAAC,GACa,GACE,GACpB,CACJ,CAAC,CAAC,CAAC,IAAI,IACQ,IApDb,IAAI,CAAC,KAAK,CAqDH,CACf,CAAC,GACU,IACD,CAChB,CAAA;AACH,CAAC"}
|
|
@@ -4,7 +4,8 @@ exports.NavSecondary = NavSecondary;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const link_1 = require("../link.js");
|
|
6
6
|
const sidebar_1 = require("./ui/sidebar.js");
|
|
7
|
+
const activeMenuClass = 'data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-sm data-[active=true]:hover:bg-primary/90 data-[active=true]:hover:text-primary-foreground data-[active=true]:[&>svg]:text-primary-foreground';
|
|
7
8
|
function NavSecondary({ items, ...props }) {
|
|
8
|
-
return ((0, jsx_runtime_1.jsx)(sidebar_1.SidebarGroup, { ...props, children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarGroupContent, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenu, { children: items.map((item) => ((0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuItem, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuButton, { asChild: true, size: "sm", children: (0, jsx_runtime_1.jsxs)(link_1.ManagerLink, { href: item.url, children: [item.icon && (0, jsx_runtime_1.jsx)(item.icon, {}), (0, jsx_runtime_1.jsx)("span", { children: item.title })] }) }) }, item.title))) }) }) }));
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)(sidebar_1.SidebarGroup, { ...props, children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarGroupContent, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenu, { children: items.map((item) => ((0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuItem, { children: (0, jsx_runtime_1.jsx)(sidebar_1.SidebarMenuButton, { asChild: true, size: "sm", isActive: item.isActive, className: activeMenuClass, children: (0, jsx_runtime_1.jsxs)(link_1.ManagerLink, { href: item.url, children: [item.icon && (0, jsx_runtime_1.jsx)(item.icon, {}), (0, jsx_runtime_1.jsx)("span", { children: item.title })] }) }) }, item.title))) }) }) }));
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=nav-secondary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-secondary.js","sourceRoot":"","sources":["../../../src/components/nav-secondary.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"nav-secondary.js","sourceRoot":"","sources":["../../../src/components/nav-secondary.tsx"],"names":[],"mappings":";;AAeA,oCAkCC;;AA9CD,iCAAoC;AACpC,0CAMqB;AAErB,MAAM,eAAe,GACnB,kPAAkP,CAAA;AAEpP,SAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,GAAG,KAAK,EAQ6C;IACrD,OAAO,CACL,uBAAC,sBAAY,OAAK,KAAK,YACrB,uBAAC,6BAAmB,cAClB,uBAAC,qBAAW,cACT,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,uBAAC,yBAAe,cACd,uBAAC,2BAAiB,IAChB,OAAO,QACP,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,eAAe,YAE1B,wBAAC,kBAAW,IAAC,IAAI,EAAE,IAAI,CAAC,GAAG,aACxB,IAAI,CAAC,IAAI,IAAI,uBAAC,IAAI,CAAC,IAAI,KAAG,EAC3B,2CAAO,IAAI,CAAC,KAAK,GAAQ,IACb,GACI,IAXA,IAAI,CAAC,KAAK,CAYd,CACnB,CAAC,GACU,GACM,GACT,CAChB,CAAA;AACH,CAAC"}
|
package/dist/cjs/layouts.js
CHANGED
|
@@ -13,6 +13,6 @@ const separator_1 = require("./components/ui/separator.js");
|
|
|
13
13
|
const sidebar_1 = require("./components/ui/sidebar.js");
|
|
14
14
|
const ManagerAuthLayout = ({ children }) => ((0, jsx_runtime_1.jsx)("div", { className: "bg-background flex min-h-svh flex-col items-center justify-center gap-6 p-6 md:p-10", children: (0, jsx_runtime_1.jsx)("div", { className: "w-full max-w-sm", children: children }) }));
|
|
15
15
|
exports.ManagerAuthLayout = ManagerAuthLayout;
|
|
16
|
-
const ManagerDashboardLayout = ({ children, contentTypes, pathname, basePath = "", secondaryItems, sidebar, headerStart, headerEnd, }) => ((0, jsx_runtime_1.jsxs)(sidebar_1.SidebarProvider, { className: "max-h-screen overflow-hidden", children: [sidebar ?? ((0, jsx_runtime_1.jsx)(app_sidebar_1.AppSidebar, { contentTypes: contentTypes, basePath: basePath, secondaryItems: secondaryItems })), (0, jsx_runtime_1.jsxs)(sidebar_1.SidebarInset, { className: "p-4 pt-0", children: [(0, jsx_runtime_1.jsxs)(sidebar_1.SidebarHeader, { className: "flex h-16 shrink-0 flex-row items-center justify-between gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(sidebar_1.SidebarTrigger, { className: "-ml-1" }), (0, jsx_runtime_1.jsx)(separator_1.Separator, { orientation: "vertical", className: "mr-2 data-[orientation=vertical]:h-4" }), headerStart ?? ((0, jsx_runtime_1.jsx)(bread_crumb_1.default, { basePath: basePath, pathname: pathname }))] }), headerEnd] }), (0, jsx_runtime_1.jsx)(scroll_area_1.ScrollArea, { className: "max-h-[calc(100vh-6rem)]", children: children })] })] }));
|
|
16
|
+
const ManagerDashboardLayout = ({ children, contentTypes, pathname, basePath = "", secondaryItems, sidebar, headerStart, headerEnd, }) => ((0, jsx_runtime_1.jsxs)(sidebar_1.SidebarProvider, { className: "max-h-screen overflow-hidden", children: [sidebar ?? ((0, jsx_runtime_1.jsx)(app_sidebar_1.AppSidebar, { contentTypes: contentTypes, pathname: pathname, basePath: basePath, secondaryItems: secondaryItems })), (0, jsx_runtime_1.jsxs)(sidebar_1.SidebarInset, { className: "p-4 pt-0", children: [(0, jsx_runtime_1.jsxs)(sidebar_1.SidebarHeader, { className: "flex h-16 shrink-0 flex-row items-center justify-between gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(sidebar_1.SidebarTrigger, { className: "-ml-1" }), (0, jsx_runtime_1.jsx)(separator_1.Separator, { orientation: "vertical", className: "mr-2 data-[orientation=vertical]:h-4" }), headerStart ?? ((0, jsx_runtime_1.jsx)(bread_crumb_1.default, { basePath: basePath, pathname: pathname }))] }), headerEnd] }), (0, jsx_runtime_1.jsx)(scroll_area_1.ScrollArea, { className: "max-h-[calc(100vh-6rem)]", children: children })] })] }));
|
|
17
17
|
exports.ManagerDashboardLayout = ManagerDashboardLayout;
|
|
18
18
|
//# sourceMappingURL=layouts.js.map
|
package/dist/cjs/layouts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layouts.js","sourceRoot":"","sources":["../../src/layouts.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;AAKb,0DAA+E;AAC/E,2EAA2D;AAC3D,6DAAyD;AACzD,yDAAsD;AACtD,qDAKiC;AAmB1B,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAA0B,EAAE,EAAE,CAAC,CACzE,gCAAK,SAAS,EAAC,qFAAqF,YAClG,gCAAK,SAAS,EAAC,iBAAiB,YAAE,QAAQ,GAAO,GAC7C,CACP,CAAC;AAJW,QAAA,iBAAiB,qBAI5B;AAaK,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,GAAG,EAAE,EACb,cAAc,EACd,OAAO,EACP,WAAW,EACX,SAAS,GACmB,EAAE,EAAE,CAAC,CACjC,wBAAC,yBAAe,IAAC,SAAS,EAAC,8BAA8B,aACtD,OAAO,IAAI,CACV,uBAAC,wBAAU,IACT,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC9B,CACH,EACD,wBAAC,sBAAY,IAAC,SAAS,EAAC,UAAU,aAChC,wBAAC,uBAAa,IAAC,SAAS,EAAC,gEAAgE,aACvF,iCAAK,SAAS,EAAC,yBAAyB,aACtC,uBAAC,wBAAc,IAAC,SAAS,EAAC,OAAO,GAAG,EACpC,uBAAC,qBAAS,IACR,WAAW,EAAC,UAAU,EACtB,SAAS,EAAC,sCAAsC,GAChD,EACD,WAAW,IAAI,CACd,uBAAC,qBAAmB,IAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAChE,IACG,EACL,SAAS,IACI,EAEhB,uBAAC,wBAAU,IAAC,SAAS,EAAC,0BAA0B,YAAE,QAAQ,GAAc,IAC3D,IACC,CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"layouts.js","sourceRoot":"","sources":["../../src/layouts.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;AAKb,0DAA+E;AAC/E,2EAA2D;AAC3D,6DAAyD;AACzD,yDAAsD;AACtD,qDAKiC;AAmB1B,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAA0B,EAAE,EAAE,CAAC,CACzE,gCAAK,SAAS,EAAC,qFAAqF,YAClG,gCAAK,SAAS,EAAC,iBAAiB,YAAE,QAAQ,GAAO,GAC7C,CACP,CAAC;AAJW,QAAA,iBAAiB,qBAI5B;AAaK,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,GAAG,EAAE,EACb,cAAc,EACd,OAAO,EACP,WAAW,EACX,SAAS,GACmB,EAAE,EAAE,CAAC,CACjC,wBAAC,yBAAe,IAAC,SAAS,EAAC,8BAA8B,aACtD,OAAO,IAAI,CACV,uBAAC,wBAAU,IACT,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC9B,CACH,EACD,wBAAC,sBAAY,IAAC,SAAS,EAAC,UAAU,aAChC,wBAAC,uBAAa,IAAC,SAAS,EAAC,gEAAgE,aACvF,iCAAK,SAAS,EAAC,yBAAyB,aACtC,uBAAC,wBAAc,IAAC,SAAS,EAAC,OAAO,GAAG,EACpC,uBAAC,qBAAS,IACR,WAAW,EAAC,UAAU,EACtB,SAAS,EAAC,sCAAsC,GAChD,EACD,WAAW,IAAI,CACd,uBAAC,qBAAmB,IAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAChE,IACG,EACL,SAAS,IACI,EAEhB,uBAAC,wBAAU,IAAC,SAAS,EAAC,0BAA0B,YAAE,QAAQ,GAAc,IAC3D,IACC,CACnB,CAAC;AArCW,QAAA,sBAAsB,0BAqCjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
"use client";
|
|
3
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
4
|
if (k2 === undefined) k2 = k;
|
|
5
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -45,8 +45,8 @@ const card_1 = require("../../../../../../components/ui/card.js");
|
|
|
45
45
|
const collapsible_1 = require("../../../../../../components/ui/collapsible.js");
|
|
46
46
|
const sortable_1 = require("../../../../../../components/ui/sortable.js");
|
|
47
47
|
const LanguageClientProvider_1 = require("../../../../../../lib/providers/language/LanguageClientProvider.js");
|
|
48
|
-
const AddListButtons = react_1.default.memo(({ fields, onAdd, }) => ((0, jsx_runtime_1.jsx)("div", { className:
|
|
49
|
-
AddListButtons.displayName =
|
|
48
|
+
const AddListButtons = react_1.default.memo(({ fields, onAdd, }) => ((0, jsx_runtime_1.jsx)("div", { className: "flex gap-2 flex-wrap", children: fields.map((field) => ((0, jsx_runtime_1.jsxs)(button_1.Button, { onClick: () => onAdd(field.name), variant: "outline", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Plus, {}), " ", field.name] }, field.name))) })));
|
|
49
|
+
AddListButtons.displayName = "AddListButtons";
|
|
50
50
|
const ListUI = ({ id, ref, ...props }) => {
|
|
51
51
|
const refs = (0, react_1.useRef)({});
|
|
52
52
|
const valueRef = (0, react_1.useRef)([]);
|
|
@@ -65,8 +65,8 @@ const ListUI = ({ id, ref, ...props }) => {
|
|
|
65
65
|
defaultValue: [],
|
|
66
66
|
validateValue: (value) => {
|
|
67
67
|
const values = value.map((item) => refs.current[item.uid]?.getValue());
|
|
68
|
-
if (values.some((v) => typeof v ===
|
|
69
|
-
return
|
|
68
|
+
if (values.some((v) => typeof v === "object" && v && "_error" in v)) {
|
|
69
|
+
return "Please fix the errors above";
|
|
70
70
|
}
|
|
71
71
|
return null;
|
|
72
72
|
},
|
|
@@ -76,7 +76,7 @@ const ListUI = ({ id, ref, ...props }) => {
|
|
|
76
76
|
}, [value]);
|
|
77
77
|
const getValueWithNested = () => {
|
|
78
78
|
const values = getValue();
|
|
79
|
-
if (!values ||
|
|
79
|
+
if (!values || "_error" in values) {
|
|
80
80
|
return values;
|
|
81
81
|
}
|
|
82
82
|
return values
|
|
@@ -84,7 +84,7 @@ const ListUI = ({ id, ref, ...props }) => {
|
|
|
84
84
|
name: field.name,
|
|
85
85
|
value: refs.current[field.uid]?.getValue(),
|
|
86
86
|
}))
|
|
87
|
-
.filter((v) => v.value !== undefined && v.value !== null && v.value !==
|
|
87
|
+
.filter((v) => v.value !== undefined && v.value !== null && v.value !== "");
|
|
88
88
|
};
|
|
89
89
|
const getStateWithNested = () => {
|
|
90
90
|
const states = getState();
|
|
@@ -136,15 +136,18 @@ const ListUI = ({ id, ref, ...props }) => {
|
|
|
136
136
|
uid: item.uid,
|
|
137
137
|
})));
|
|
138
138
|
}, [language.code]);
|
|
139
|
-
return ((0, jsx_runtime_1.jsx)(sortable_1.Sortable, { value: value, onValueChange: handleSort, getItemValue: (item) => item.uid, children: (0, jsx_runtime_1.jsxs)(FieldWrapper_1.FieldWrapper, { id: id, errors: errors, getValue: getValueWithNested, getState: getStateWithNested, ref: ref, children: [(0, jsx_runtime_1.jsx)(AddListButtons, { fields: props.fields, onAdd: handleAddItem }), (0, jsx_runtime_1.jsx)(sortable_1.SortableContent, { children: value.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className:
|
|
139
|
+
return ((0, jsx_runtime_1.jsx)(sortable_1.Sortable, { value: value, onValueChange: handleSort, getItemValue: (item) => item.uid, children: (0, jsx_runtime_1.jsxs)(FieldWrapper_1.FieldWrapper, { id: id, errors: errors, getValue: getValueWithNested, getState: getStateWithNested, ref: ref, children: [(0, jsx_runtime_1.jsx)(AddListButtons, { fields: props.fields, onAdd: handleAddItem }), (0, jsx_runtime_1.jsx)(sortable_1.SortableContent, { children: value.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-4 mt-6", children: value.map((item, i) => {
|
|
140
140
|
const fieldConfig = props.fields.find((f) => f.name === item.name);
|
|
141
141
|
if (!fieldConfig) {
|
|
142
142
|
return null;
|
|
143
143
|
}
|
|
144
|
+
const noModulesToRender = fieldConfig.field.config.type === "Relation" &&
|
|
145
|
+
Object.values(fieldConfig.field.contentType
|
|
146
|
+
.fields).every((f) => f.visibility === "api");
|
|
144
147
|
const FieldComponent = ContentTypeEdit_1.fieldsMap[fieldConfig?.field.config.type];
|
|
145
|
-
return ((0, jsx_runtime_1.jsx)(sortable_1.SortableItem, { value: item.uid, asChild: true, children: (0, jsx_runtime_1.jsx)("div", { className:
|
|
148
|
+
return ((0, jsx_runtime_1.jsx)(sortable_1.SortableItem, { value: item.uid, asChild: true, children: (0, jsx_runtime_1.jsx)("div", { className: "flex gap-2", children: (0, jsx_runtime_1.jsx)(collapsible_1.Collapsible, { defaultOpen: !noModulesToRender, className: "w-full", children: (0, jsx_runtime_1.jsxs)(card_1.Card, { className: "w-full", children: [(0, jsx_runtime_1.jsx)(card_1.CardHeader, { className: "gap-0", children: (0, jsx_runtime_1.jsx)(collapsible_1.CollapsibleTrigger, { asChild: true, disabled: noModulesToRender, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between items-center cursor-pointer", children: [(0, jsx_runtime_1.jsxs)(card_1.CardTitle, { className: "flex items-center gap-2 ", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(sortable_1.SortableItemHandle, { asChild: true, children: (0, jsx_runtime_1.jsx)(button_1.Button, { variant: "ghost", size: "icon", className: "size-8", children: (0, jsx_runtime_1.jsx)(lucide_react_1.GripVertical, { className: "h-4 w-4" }) }) }), !noModulesToRender ? ((0, jsx_runtime_1.jsx)(button_1.Button, { variant: "ghost", size: "icon", className: "size-8", asChild: true, children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(lucide_react_1.ChevronsUpDown, {}), (0, jsx_runtime_1.jsx)("span", { className: "sr-only", children: "Toggle" })] }) })) : null] }), item.name] }), (0, jsx_runtime_1.jsx)(button_1.Button, { size: "icon", variant: "destructive", onClick: () => {
|
|
146
149
|
handleDelete(item.uid);
|
|
147
|
-
}, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Trash, {}) })] }) }) }), (0, jsx_runtime_1.jsx)(collapsible_1.CollapsibleContent, { forceMount: true, className:
|
|
150
|
+
}, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Trash, {}) })] }) }) }), !noModulesToRender ? ((0, jsx_runtime_1.jsx)(collapsible_1.CollapsibleContent, { forceMount: true, className: "data-[state=closed]:hidden", children: (0, jsx_runtime_1.jsx)(card_1.CardContent, { children: (0, jsx_runtime_1.jsx)(FieldComponent, { id: `${id}.${item.uid}.${fieldConfig.name}`, ref: setRef(item.uid), collapsible: true, defaultData: value[i]?.value, ...fieldConfig.field }) }) })) : null] }) }) }) }, item.uid));
|
|
148
151
|
}) })) })] }) }));
|
|
149
152
|
};
|
|
150
153
|
exports.default = ListUI;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListUI.js","sourceRoot":"","sources":["../../../../../../../../src/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.tsx"],"names":[],"mappings":";AAAA,YAAY,
|
|
1
|
+
{"version":3,"file":"ListUI.js","sourceRoot":"","sources":["../../../../../../../../src/router/dashboard/[contentType]/[edit]/_fields/ListField/ListUI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,33 @@ const EmptyValue = {
|
|
|
28
28
|
version: 1,
|
|
29
29
|
},
|
|
30
30
|
};
|
|
31
|
+
const isSerializedEditorState = (value) => {
|
|
32
|
+
if (!value || typeof value !== 'object')
|
|
33
|
+
return false;
|
|
34
|
+
const root = value.root;
|
|
35
|
+
if (!root || typeof root !== 'object')
|
|
36
|
+
return false;
|
|
37
|
+
const children = root.children;
|
|
38
|
+
const type = root.type;
|
|
39
|
+
return (type === 'root' &&
|
|
40
|
+
Array.isArray(children) &&
|
|
41
|
+
children.length > 0 &&
|
|
42
|
+
children.every(isSerializedLexicalNode));
|
|
43
|
+
};
|
|
44
|
+
const isSerializedLexicalNode = (value) => {
|
|
45
|
+
if (!value || typeof value !== 'object')
|
|
46
|
+
return false;
|
|
47
|
+
const type = value.type;
|
|
48
|
+
const children = value.children;
|
|
49
|
+
if (typeof type !== 'string')
|
|
50
|
+
return false;
|
|
51
|
+
if (children === undefined)
|
|
52
|
+
return true;
|
|
53
|
+
return Array.isArray(children) && children.every(isSerializedLexicalNode);
|
|
54
|
+
};
|
|
55
|
+
const normalizeEditorState = (value) => {
|
|
56
|
+
return isSerializedEditorState(value) ? value : EmptyValue;
|
|
57
|
+
};
|
|
31
58
|
const RichTextUI = ({ id, isTranslatable, defaultData, ref, ...props }) => {
|
|
32
59
|
const { errors, cleanErrors, value, translatesStore, getState, onValueChange, getValue, } = (0, shared_1.useFieldValues)({
|
|
33
60
|
id,
|
|
@@ -38,18 +65,17 @@ const RichTextUI = ({ id, isTranslatable, defaultData, ref, ...props }) => {
|
|
|
38
65
|
});
|
|
39
66
|
const { language } = (0, LanguageClientProvider_1.useLanguage)();
|
|
40
67
|
const editorRef = (0, react_1.useRef)(null);
|
|
68
|
+
const editorValue = normalizeEditorState(value);
|
|
41
69
|
(0, react_1.useEffect)(() => {
|
|
42
70
|
if (!isTranslatable)
|
|
43
71
|
return;
|
|
44
72
|
editorRef.current?.update(() => {
|
|
45
73
|
// get from store serialized state of the current language and set it to the editor
|
|
46
|
-
const state = translatesStore[language.code]
|
|
47
|
-
|
|
48
|
-
editorRef.current?.setEditorState(editorRef.current?.parseEditorState(state));
|
|
49
|
-
}
|
|
74
|
+
const state = normalizeEditorState(translatesStore[language.code]);
|
|
75
|
+
editorRef.current?.setEditorState(editorRef.current.parseEditorState(state));
|
|
50
76
|
});
|
|
51
77
|
}, [isTranslatable, language.code]);
|
|
52
|
-
return ((0, jsx_runtime_1.jsx)(FieldWrapper_1.FieldWrapper, { id: id, errors: errors, getState: getState, getValue: getValue, ref: ref, children: (0, jsx_runtime_1.jsx)(editor_1.Editor, { editorRef: editorRef, editorSerializedState:
|
|
78
|
+
return ((0, jsx_runtime_1.jsx)(FieldWrapper_1.FieldWrapper, { id: id, errors: errors, getState: getState, getValue: getValue, ref: ref, children: (0, jsx_runtime_1.jsx)(editor_1.Editor, { editorRef: editorRef, editorSerializedState: editorValue, onSerializedChange: (value) => {
|
|
53
79
|
onValueChange(value);
|
|
54
80
|
cleanErrors();
|
|
55
81
|
} }) }));
|
package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextUI.js","sourceRoot":"","sources":["../../../../../../../../src/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;AAGZ,iCAAyC;AAGzC,sCAAiE;AACjE,yDAAqD;AAErD,iEAA6D;AAC7D,4FAA6E;AAE7E,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR;gBACE,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,CAAC;aACX;SACF;QACD,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACX;CACkC,CAAA;AAErC,MAAM,UAAU,GAA6B,CAAC,EAC5C,EAAE,EACF,cAAc,EACd,WAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,EACJ,MAAM,EACN,WAAW,EACX,KAAK,EACL,eAAe,EACf,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,GAAG,IAAA,uBAAc,EAAwB;QACxC,EAAE;QACF,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc;QACd,WAAW,EAAE,WAAsD;QACnE,YAAY,EAAE,UAA8C;KAC7D,CAAC,CAAA;IAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,oCAAW,GAAE,CAAA;IAClC,MAAM,SAAS,GAAG,IAAA,cAAM,EAAgB,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"RichTextUI.js","sourceRoot":"","sources":["../../../../../../../../src/router/dashboard/[contentType]/[edit]/_fields/StringField/RichTextUI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,71 @@ const react_2 = require("../../../../client/react.js");
|
|
|
20
20
|
const navigation_1 = require("../../../../state/navigation.js");
|
|
21
21
|
const select_1 = require("../../../../components/ui/select.js");
|
|
22
22
|
const language_1 = require("../../../../state/language.js");
|
|
23
|
+
const getLayoutOverrideValue = (override) => {
|
|
24
|
+
if (!override)
|
|
25
|
+
return "__default__";
|
|
26
|
+
return override.moduleId && override.moduleId.length > 0
|
|
27
|
+
? override.moduleId
|
|
28
|
+
: "__none__";
|
|
29
|
+
};
|
|
30
|
+
const RouteLayoutModuleTabContent = ({ layoutModule, override, options, activeTab, contentTypeId, overridesByKey, routeLayoutOverridesQuery, }) => {
|
|
31
|
+
const [selected, setSelected] = (0, react_1.useState)(() => getLayoutOverrideValue(override));
|
|
32
|
+
(0, react_1.useEffect)(() => {
|
|
33
|
+
setSelected(getLayoutOverrideValue(override));
|
|
34
|
+
}, [override]);
|
|
35
|
+
const createOverrideMutation = (0, react_2.useManagerMutation)("manager.create");
|
|
36
|
+
const updateOverrideMutation = (0, react_2.useManagerMutation)("manager.update");
|
|
37
|
+
const deleteOverrideMutation = (0, react_2.useManagerMutation)("manager.delete");
|
|
38
|
+
const [isSaving, setIsSaving] = (0, react_1.useState)(false);
|
|
39
|
+
const saveLayoutOverride = async (layoutModule, selected) => {
|
|
40
|
+
if (!contentTypeId)
|
|
41
|
+
return;
|
|
42
|
+
setIsSaving(true);
|
|
43
|
+
const existing = overridesByKey.get(`${layoutModule.routeId}:${layoutModule.key}`);
|
|
44
|
+
if (selected === "__default__") {
|
|
45
|
+
if (existing) {
|
|
46
|
+
await deleteOverrideMutation.mutateAsync({
|
|
47
|
+
contentType: "RouteLayoutModuleOverride",
|
|
48
|
+
id: existing._id,
|
|
49
|
+
});
|
|
50
|
+
await routeLayoutOverridesQuery.refetch();
|
|
51
|
+
}
|
|
52
|
+
sonner_1.toast.success("Layout override updated successfully");
|
|
53
|
+
setIsSaving(false);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const payload = {
|
|
57
|
+
_type: "RouteLayoutModuleOverride",
|
|
58
|
+
routeId: layoutModule.routeId,
|
|
59
|
+
routeKey: layoutModule.routeKey,
|
|
60
|
+
contentTypeId,
|
|
61
|
+
key: layoutModule.key,
|
|
62
|
+
contentType: layoutModule.contentType,
|
|
63
|
+
moduleId: selected === "__none__" ? "" : selected,
|
|
64
|
+
};
|
|
65
|
+
if (existing) {
|
|
66
|
+
await updateOverrideMutation.mutateAsync({
|
|
67
|
+
contentType: "RouteLayoutModuleOverride",
|
|
68
|
+
id: existing._id,
|
|
69
|
+
data: payload,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
await createOverrideMutation.mutateAsync({
|
|
74
|
+
contentType: "RouteLayoutModuleOverride",
|
|
75
|
+
data: payload,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
sonner_1.toast.success("Layout override updated successfully");
|
|
79
|
+
await routeLayoutOverridesQuery.refetch();
|
|
80
|
+
setIsSaving(false);
|
|
81
|
+
};
|
|
82
|
+
const defaultOption = layoutModule.moduleId
|
|
83
|
+
? (options.find((option) => option.value === layoutModule.moduleId)
|
|
84
|
+
?.label ?? layoutModule.moduleId)
|
|
85
|
+
: "No module";
|
|
86
|
+
return ((0, jsx_runtime_1.jsx)(tabs_1.TabsContent, { value: `layout:${layoutModule._id}`, forceMount: true, hidden: activeTab !== `layout:${layoutModule._id}`, className: "w-full", children: (0, jsx_runtime_1.jsxs)("div", { className: "mx-auto flex w-full flex-col gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-lg font-semibold", children: layoutModule.contentType }), (0, jsx_runtime_1.jsxs)("p", { className: "text-muted-foreground text-sm", children: ["Default from route: ", defaultOption, ". Override only for this entry."] })] }), (0, jsx_runtime_1.jsxs)(select_1.Select, { value: selected, onValueChange: setSelected, children: [(0, jsx_runtime_1.jsx)(select_1.SelectTrigger, { children: (0, jsx_runtime_1.jsx)(select_1.SelectValue, { placeholder: "Select module" }) }), (0, jsx_runtime_1.jsxs)(select_1.SelectContent, { children: [(0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: "__default__", children: "Use route default" }), (0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: "__none__", children: "No module" }), options.map((option) => ((0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: option.value, children: option.label }, option.value)))] })] }), (0, jsx_runtime_1.jsx)(button_1.Button, { className: "w-fit", loading: isSaving, onClick: () => saveLayoutOverride(layoutModule, selected), children: "Save override" })] }) }));
|
|
87
|
+
};
|
|
23
88
|
exports.errorStyle = (0, class_variance_authority_1.cva)("", {
|
|
24
89
|
variants: {
|
|
25
90
|
error: {
|
|
@@ -36,9 +101,6 @@ const EditPage = ({ contentType, defaultData }) => {
|
|
|
36
101
|
const managerClient = (0, react_2.useManagerClient)();
|
|
37
102
|
const createMutation = (0, react_2.useManagerMutation)("manager.create");
|
|
38
103
|
const updateMutation = (0, react_2.useManagerMutation)("manager.update");
|
|
39
|
-
const createOverrideMutation = (0, react_2.useManagerMutation)("manager.create");
|
|
40
|
-
const updateOverrideMutation = (0, react_2.useManagerMutation)("manager.update");
|
|
41
|
-
const deleteOverrideMutation = (0, react_2.useManagerMutation)("manager.delete");
|
|
42
104
|
const { getTranslation } = (0, language_1.useLanguage)();
|
|
43
105
|
const contentTypeId = defaultData?._id;
|
|
44
106
|
const routeLayoutModulesQuery = (0, react_2.useManagerQuery)({
|
|
@@ -213,20 +275,6 @@ const EditPage = ({ contentType, defaultData }) => {
|
|
|
213
275
|
})),
|
|
214
276
|
];
|
|
215
277
|
}));
|
|
216
|
-
const [selectedLayoutOverrides, setSelectedLayoutOverrides] = (0, react_1.useState)({});
|
|
217
|
-
(0, react_1.useEffect)(() => {
|
|
218
|
-
setSelectedLayoutOverrides(Object.fromEntries(routeLayoutModules.map((layoutModule) => {
|
|
219
|
-
const override = overridesByKey.get(`${layoutModule.routeId}:${layoutModule.key}`);
|
|
220
|
-
return [
|
|
221
|
-
layoutModule._id,
|
|
222
|
-
override
|
|
223
|
-
? override.moduleId && override.moduleId.length > 0
|
|
224
|
-
? override.moduleId
|
|
225
|
-
: "__none__"
|
|
226
|
-
: "__default__",
|
|
227
|
-
];
|
|
228
|
-
})));
|
|
229
|
-
}, [routeLayoutModulesQuery.data, routeLayoutOverridesQuery.data]);
|
|
230
278
|
const [activeTab, setActiveTab] = (0, react_1.useState)(hasNonIterables
|
|
231
279
|
? "info"
|
|
232
280
|
: hasIterables
|
|
@@ -234,68 +282,14 @@ const EditPage = ({ contentType, defaultData }) => {
|
|
|
234
282
|
: hasSeo
|
|
235
283
|
? "seo"
|
|
236
284
|
: "versions");
|
|
237
|
-
const saveLayoutOverride = async (layoutModule) => {
|
|
238
|
-
if (!contentTypeId)
|
|
239
|
-
return;
|
|
240
|
-
const selected = selectedLayoutOverrides[layoutModule._id] ?? "__default__";
|
|
241
|
-
const existing = overridesByKey.get(`${layoutModule.routeId}:${layoutModule.key}`);
|
|
242
|
-
if (selected === "__default__") {
|
|
243
|
-
if (existing) {
|
|
244
|
-
await deleteOverrideMutation.mutateAsync({
|
|
245
|
-
contentType: "RouteLayoutModuleOverride",
|
|
246
|
-
id: existing._id,
|
|
247
|
-
});
|
|
248
|
-
await routeLayoutOverridesQuery.refetch();
|
|
249
|
-
}
|
|
250
|
-
sonner_1.toast.success("Layout override updated successfully");
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
const payload = {
|
|
254
|
-
_type: "RouteLayoutModuleOverride",
|
|
255
|
-
routeId: layoutModule.routeId,
|
|
256
|
-
routeKey: layoutModule.routeKey,
|
|
257
|
-
contentTypeId,
|
|
258
|
-
key: layoutModule.key,
|
|
259
|
-
contentType: layoutModule.contentType,
|
|
260
|
-
moduleId: selected === "__none__" ? "" : selected,
|
|
261
|
-
};
|
|
262
|
-
if (existing) {
|
|
263
|
-
await updateOverrideMutation.mutateAsync({
|
|
264
|
-
contentType: "RouteLayoutModuleOverride",
|
|
265
|
-
id: existing._id,
|
|
266
|
-
data: payload,
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
await createOverrideMutation.mutateAsync({
|
|
271
|
-
contentType: "RouteLayoutModuleOverride",
|
|
272
|
-
data: payload,
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
sonner_1.toast.success("Layout override updated successfully");
|
|
276
|
-
await routeLayoutOverridesQuery.refetch();
|
|
277
|
-
};
|
|
278
285
|
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("div", { className: "container py-10 px-4 mx-auto", children: (0, jsx_runtime_1.jsxs)(tabs_1.Tabs, { value: activeTab, onValueChange: (v) => {
|
|
279
286
|
saveState();
|
|
280
287
|
setActiveTab(v);
|
|
281
288
|
}, className: "w-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2 justify-between items-center sticky top-0 bg-background z-50 pb-3 mb-3 border-b", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex", children: (0, jsx_runtime_1.jsxs)(tabs_1.TabsList, { variant: "line", children: [hasNonIterables ? ((0, jsx_runtime_1.jsxs)(tabs_1.TabsTrigger, { value: "info", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.NotepadText, {}), "Info"] })) : null, hasIterables ? ((0, jsx_runtime_1.jsxs)(tabs_1.TabsTrigger, { value: "content", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.ScrollText, {}), "Content"] })) : null, hasSeo ? ((0, jsx_runtime_1.jsxs)(tabs_1.TabsTrigger, { value: "seo", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Globe, {}), "Seo"] })) : null, [...routeLayoutModules]
|
|
282
289
|
.sort((a, b) => a.order - b.order)
|
|
283
|
-
.map((layoutModule) => ((0, jsx_runtime_1.jsxs)(tabs_1.TabsTrigger, { value: `layout:${layoutModule._id}`, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.LayoutPanelTop, {}), layoutModule.
|
|
290
|
+
.map((layoutModule) => ((0, jsx_runtime_1.jsxs)(tabs_1.TabsTrigger, { value: `layout:${layoutModule._id}`, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.LayoutPanelTop, {}), layoutModule.contentType] }, layoutModule._id))), hasIterables ? ((0, jsx_runtime_1.jsxs)(tabs_1.TabsTrigger, { value: "versions", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.GitBranch, {}), "Versions"] })) : null] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(LanguageSelector_1.default, {}), (0, jsx_runtime_1.jsx)(button_1.Button, { loading: createMutation.isPending || updateMutation.isPending, className: "cursor-pointer ml-auto", onClick: () => void handleSave(), children: "Save" })] })] }), hasIterables ? ((0, jsx_runtime_1.jsx)(tabs_1.TabsContent, { value: "content", forceMount: true, hidden: activeTab !== "content", className: "w-full", children: (0, jsx_runtime_1.jsx)(ContentTypeEdit_1.default, { defaultData: draft.current, ref: iterablesRef, contentType: iterables, id: contentType.name, collapsible: true, hideTitle: true }) })) : null, hasNonIterables ? ((0, jsx_runtime_1.jsx)(tabs_1.TabsContent, { value: "info", forceMount: true, hidden: activeTab !== "info", className: "w-full", children: (0, jsx_runtime_1.jsx)(ContentTypeEdit_1.default, { defaultData: draft.current, ref: nonIterablesRef, contentType: nonIterables, id: contentType.name }) })) : null, hasSeo ? ((0, jsx_runtime_1.jsx)(tabs_1.TabsContent, { value: "seo", forceMount: true, hidden: activeTab !== "seo", className: "w-full", children: (0, jsx_runtime_1.jsx)(ContentTypeEdit_1.default, { defaultData: draft.current, ref: seoRef, contentType: seo, id: contentType.name, hideTitle: true }) })) : null, [...routeLayoutModules]
|
|
284
291
|
.sort((a, b) => a.order - b.order)
|
|
285
|
-
.map((layoutModule) => {
|
|
286
|
-
const defaultOption = layoutModule.moduleId
|
|
287
|
-
? ((layoutOptionsByContentType.get(layoutModule.contentType) ??
|
|
288
|
-
[]).find((option) => option.value === layoutModule.moduleId)
|
|
289
|
-
?.label ?? layoutModule.moduleId)
|
|
290
|
-
: "No module";
|
|
291
|
-
return ((0, jsx_runtime_1.jsx)(tabs_1.TabsContent, { value: `layout:${layoutModule._id}`, forceMount: true, hidden: activeTab !== `layout:${layoutModule._id}`, className: "w-full", children: (0, jsx_runtime_1.jsxs)("div", { className: "mx-auto flex w-full max-w-2xl flex-col gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-lg font-semibold", children: layoutModule.key }), (0, jsx_runtime_1.jsxs)("p", { className: "text-muted-foreground text-sm", children: ["Default from route: ", defaultOption, ". Override only for this entry."] })] }), (0, jsx_runtime_1.jsxs)(select_1.Select, { value: selectedLayoutOverrides[layoutModule._id] ??
|
|
292
|
-
"__default__", onValueChange: (value) => setSelectedLayoutOverrides((current) => ({
|
|
293
|
-
...current,
|
|
294
|
-
[layoutModule._id]: value,
|
|
295
|
-
})), children: [(0, jsx_runtime_1.jsx)(select_1.SelectTrigger, { children: (0, jsx_runtime_1.jsx)(select_1.SelectValue, { placeholder: "Select module" }) }), (0, jsx_runtime_1.jsxs)(select_1.SelectContent, { children: [(0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: "__default__", children: "Use route default" }), (0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: "__none__", children: "No module" }), (layoutOptionsByContentType.get(layoutModule.contentType) ?? []).map((option) => ((0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: option.value, children: option.label }, option.value)))] })] }), (0, jsx_runtime_1.jsx)(button_1.Button, { className: "w-fit", loading: createOverrideMutation.isPending ||
|
|
296
|
-
updateOverrideMutation.isPending ||
|
|
297
|
-
deleteOverrideMutation.isPending, onClick: () => void saveLayoutOverride(layoutModule), children: "Save override" })] }) }, layoutModule._id));
|
|
298
|
-
}), hasIterables ? ((0, jsx_runtime_1.jsx)(tabs_1.TabsContent, { value: "versions", children: "Comming soon" })) : null] }) }) }));
|
|
292
|
+
.map((layoutModule) => ((0, jsx_runtime_1.jsx)(RouteLayoutModuleTabContent, { routeLayoutOverridesQuery: routeLayoutOverridesQuery, layoutModule: layoutModule, override: overridesByKey.get(`${layoutModule.routeId}:${layoutModule.key}`), options: layoutOptionsByContentType.get(layoutModule.contentType) ?? [], activeTab: activeTab, contentTypeId: contentTypeId, overridesByKey: overridesByKey }, layoutModule._id))), hasIterables ? ((0, jsx_runtime_1.jsx)(tabs_1.TabsContent, { value: "versions", children: "Comming soon" })) : null] }) }) }));
|
|
299
293
|
};
|
|
300
294
|
exports.default = EditPage;
|
|
301
295
|
//# sourceMappingURL=edit.js.map
|