@postxl/generators 1.11.7 → 1.12.1

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.
Files changed (51) hide show
  1. package/dist/backend-view/model-view-service.generator.js +4 -1
  2. package/dist/backend-view/model-view-service.generator.js.map +1 -1
  3. package/dist/backend-view/template/query.utils.test.ts +34 -0
  4. package/dist/backend-view/template/query.utils.ts +12 -0
  5. package/dist/decoders/decoders.generator.js +19 -5
  6. package/dist/decoders/decoders.generator.js.map +1 -1
  7. package/dist/decoders/discriminated-union.decoder.generator.js +61 -37
  8. package/dist/decoders/discriminated-union.decoder.generator.js.map +1 -1
  9. package/dist/decoders/excel-field-decoder.helper.d.ts +1 -0
  10. package/dist/decoders/excel-field-decoder.helper.js +6 -5
  11. package/dist/decoders/excel-field-decoder.helper.js.map +1 -1
  12. package/dist/decoders/model-decoder.generator.js +4 -3
  13. package/dist/decoders/model-decoder.generator.js.map +1 -1
  14. package/dist/frontend-admin/admin.generator.d.ts +9 -0
  15. package/dist/frontend-admin/admin.generator.js +19 -0
  16. package/dist/frontend-admin/admin.generator.js.map +1 -1
  17. package/dist/frontend-admin/generators/admin-sidebar.generator.js +1 -1
  18. package/dist/frontend-admin/generators/audit-log-sidebar.generator.js +107 -113
  19. package/dist/frontend-admin/generators/audit-log-sidebar.generator.js.map +1 -1
  20. package/dist/frontend-admin/generators/comment-sidebar.generator.d.ts +9 -0
  21. package/dist/frontend-admin/generators/comment-sidebar.generator.js +246 -0
  22. package/dist/frontend-admin/generators/comment-sidebar.generator.js.map +1 -0
  23. package/dist/frontend-admin/generators/detail-sidebar.generator.d.ts +9 -0
  24. package/dist/frontend-admin/generators/detail-sidebar.generator.js +148 -0
  25. package/dist/frontend-admin/generators/detail-sidebar.generator.js.map +1 -0
  26. package/dist/frontend-admin/generators/model-admin-page.generator.js +40 -6
  27. package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
  28. package/dist/frontend-core/frontend.generator.js +2 -1
  29. package/dist/frontend-core/frontend.generator.js.map +1 -1
  30. package/dist/frontend-core/template/docs/LOGIN_PROCESS.d2 +372 -0
  31. package/dist/frontend-core/template/docs/LOGIN_PROCESS.md +214 -0
  32. package/dist/frontend-core/template/docs/LOGIN_PROCESS.svg +914 -0
  33. package/dist/frontend-core/template/src/components/admin/table-filter.tsx +1 -1
  34. package/dist/frontend-core/template/src/components/admin/table-view-panel.tsx +159 -0
  35. package/dist/frontend-core/template/src/context-providers/auth-context-provider.tsx +54 -43
  36. package/dist/frontend-core/template/src/hooks/use-table-view-config.tsx +249 -0
  37. package/dist/frontend-core/template/src/pages/dashboard/dashboard.page.tsx +5 -5
  38. package/dist/frontend-core/template/src/pages/error/auth-error.page.tsx +37 -0
  39. package/dist/frontend-core/template/src/pages/error/default-error.page.tsx +24 -40
  40. package/dist/frontend-core/template/src/pages/error/not-found-error.page.tsx +8 -10
  41. package/dist/frontend-core/template/src/pages/login/login.page.tsx +39 -13
  42. package/dist/frontend-core/template/src/pages/unauthorized/unauthorized.page.tsx +2 -2
  43. package/dist/frontend-core/template/src/routes/_auth-routes.tsx +21 -8
  44. package/dist/frontend-core/template/src/routes/auth-error.tsx +19 -0
  45. package/dist/frontend-core/template/vite.config.ts +5 -0
  46. package/dist/frontend-core/types/hook.d.ts +1 -1
  47. package/dist/frontend-tables/generators/model-table.generator.js +30 -5
  48. package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
  49. package/dist/seed-data/generator/excel-template.generator.js +3 -3
  50. package/dist/seed-data/generator/excel-template.generator.js.map +1 -1
  51. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"model-decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/model-decoder.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-decoder.generator.js","sourceRoot":"","sources":["../../src/decoders/model-decoder.generator.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,15 @@ type ContextAdmin = {
55
55
  * Audit Log Sidebar component for the Admin UI
56
56
  */
57
57
  auditLogSidebar: Generator.ImportableFunction;
58
+ /**
59
+ * Admin Detail Sidebar wrapper component (right sidebar shell with tabs)
60
+ */
61
+ adminDetailSidebar: Generator.ImportableFunction;
62
+ /**
63
+ * Comment Sidebar Content component for admin pages.
64
+ * Only present when the project includes a Comment model.
65
+ */
66
+ commentSidebar?: Generator.ImportableFunction;
58
67
  };
59
68
  pages: {
60
69
  /**
@@ -42,7 +42,9 @@ const types_1 = require("../types");
42
42
  const admin_overview_page_generator_1 = require("./generators/admin-overview-page.generator");
43
43
  const admin_sidebar_generator_1 = require("./generators/admin-sidebar.generator");
44
44
  const audit_log_sidebar_generator_1 = require("./generators/audit-log-sidebar.generator");
45
+ const comment_sidebar_generator_1 = require("./generators/comment-sidebar.generator");
45
46
  const data_management_page_generator_1 = require("./generators/data-management-page.generator");
47
+ const detail_sidebar_generator_1 = require("./generators/detail-sidebar.generator");
46
48
  const model_admin_page_generator_1 = require("./generators/model-admin-page.generator");
47
49
  const utils_1 = require("./utils");
48
50
  const paths = {
@@ -57,6 +59,7 @@ exports.generator = {
57
59
  id: exports.generatorId,
58
60
  requires: [base_1.baseGeneratorId, types_1.typesGeneratorId, frontend_tables_1.frontendTablesGeneratorId],
59
61
  register: (context) => {
62
+ const hasCommentModel = context.models.has('Comment');
60
63
  const admin = {
61
64
  components: {
62
65
  sidebar: {
@@ -67,6 +70,18 @@ exports.generator = {
67
70
  name: Generator.toFunctionName('AuditLogSidebar'),
68
71
  location: Generator.toBackendModuleLocation('@admin/audit-log-sidebar'),
69
72
  },
73
+ adminDetailSidebar: {
74
+ name: Generator.toFunctionName('AdminDetailSidebar'),
75
+ location: Generator.toBackendModuleLocation('@admin/admin-detail-sidebar'),
76
+ },
77
+ ...(hasCommentModel
78
+ ? {
79
+ commentSidebar: {
80
+ name: Generator.toFunctionName('ModelCommentContent'),
81
+ location: Generator.toBackendModuleLocation('@admin/model-comment-content'),
82
+ },
83
+ }
84
+ : {}),
70
85
  },
71
86
  pages: {
72
87
  overview: {
@@ -113,6 +128,10 @@ exports.generator = {
113
128
  });
114
129
  context.vfs.write((0, node_path_1.join)(paths.components, 'admin', Generator.toLocalReactComponent(context.admin.components.sidebar)), (0, admin_sidebar_generator_1.generateAdminSidebar)({ context }));
115
130
  context.vfs.write((0, node_path_1.join)(paths.components, 'admin', Generator.toLocalReactComponent(context.admin.components.auditLogSidebar)), (0, audit_log_sidebar_generator_1.generateAuditLogSidebar)({ context }));
131
+ context.vfs.write((0, node_path_1.join)(paths.components, 'admin', Generator.toLocalReactComponent(context.admin.components.adminDetailSidebar)), (0, detail_sidebar_generator_1.generateAdminDetailSidebar)({ context }));
132
+ if (context.admin.components.commentSidebar) {
133
+ context.vfs.write((0, node_path_1.join)(paths.components, 'admin', Generator.toLocalReactComponent(context.admin.components.commentSidebar)), (0, comment_sidebar_generator_1.generateCommentSidebar)({ context }));
134
+ }
116
135
  return Promise.resolve(context); // NOSONAR
117
136
  },
118
137
  };
@@ -1 +1 @@
1
- {"version":3,"file":"admin.generator.js","sourceRoot":"","sources":["../../src/frontend-admin/admin.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.generator.js","sourceRoot":"","sources":["../../src/frontend-admin/admin.generator.ts"],"names":[],"mappings":"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"}
@@ -140,7 +140,7 @@ export function AdminSidebar({ ...props }: ComponentProps<typeof Sidebar>) {
140
140
  const setOpen = (key: keyof CollapseState) => (open: boolean) => {
141
141
  setCollapseState((prev) => ({ ...prev, [key]: open }))
142
142
  }
143
-
143
+
144
144
  return (
145
145
  <Sidebar className="h-svh border-r" {...props}>
146
146
  <SidebarHeader>
@@ -46,7 +46,6 @@ function generateAuditLogSidebar({ context }) {
46
46
  .addImport({
47
47
  from: Generator.toPackageName('react'),
48
48
  items: [
49
- Generator.toFunctionName('ComponentProps'),
50
49
  Generator.toFunctionName('useState'),
51
50
  Generator.toFunctionName('useMemo'),
52
51
  Generator.toFunctionName('useCallback'),
@@ -92,8 +91,6 @@ import {
92
91
  SelectItem,
93
92
  SelectTrigger,
94
93
  SelectValue,
95
- Sidebar,
96
- SidebarContent,
97
94
  SidebarGroup,
98
95
  SidebarGroupContent,
99
96
  SidebarSeparator,
@@ -439,8 +436,7 @@ export function AuditLogSidebar({
439
436
  labelField: _labelField = 'name',
440
437
  onClearField,
441
438
  onClearEntity,
442
- ...props
443
- }: AuditLogSidebarProps & ComponentProps<typeof Sidebar>) {
439
+ }: AuditLogSidebarProps) {
444
440
  const [limit, setLimit] = useState(20)
445
441
  const [expandedEntries, setExpandedEntries] = useState<Set<string>>(new Set())
446
442
  const { open: isOpen } = useSidebar()
@@ -524,117 +520,115 @@ export function AuditLogSidebar({
524
520
  const showBreadcrumbs = hasEntityFilter || hasFieldFilter
525
521
 
526
522
  return (
527
- <Sidebar {...props}>
528
- <SidebarContent>
529
- <SidebarGroup>
530
- <SidebarGroupContent className="p-2">
531
- <div className="flex items-center justify-between">
532
- <h3 className="text-lg font-semibold text-sidebar-foreground">Audit Log</h3>
533
- <button
534
- onClick={() => void refetch()}
535
- disabled={isFetching}
536
- className="hover:bg-sidebar-accent rounded transition-colors disabled:opacity-50"
537
- aria-label="Refresh"
538
- >
539
- <ReloadIcon className={\`w-4 h-4 \${isFetching ? 'animate-spin' : ''}\`} />
540
- </button>
541
- </div>
523
+ <>
524
+ <SidebarGroup>
525
+ <SidebarGroupContent className="p-2">
526
+ <div className="flex items-center justify-between">
527
+ <h3 className="text-lg font-semibold text-sidebar-foreground">Audit Log</h3>
528
+ <button
529
+ onClick={() => void refetch()}
530
+ disabled={isFetching}
531
+ className="hover:bg-sidebar-accent rounded transition-colors disabled:opacity-50"
532
+ aria-label="Refresh"
533
+ >
534
+ <ReloadIcon className={\`w-4 h-4 \${isFetching ? 'animate-spin' : ''}\`} />
535
+ </button>
536
+ </div>
542
537
 
543
- <p className="mt-1 text-sm text-muted-foreground">{filterDescription}</p>
544
- {data && (
545
- <p className="mt-1 text-xs text-muted-foreground">
546
- {data.total} {data.total === 1 ? 'change' : 'changes'} found
547
- </p>
538
+ <p className="mt-1 text-sm text-muted-foreground">{filterDescription}</p>
539
+ {data && (
540
+ <p className="mt-1 text-xs text-muted-foreground">
541
+ {data.total} {data.total === 1 ? 'change' : 'changes'} found
542
+ </p>
543
+ )}
544
+ </SidebarGroupContent>
545
+ </SidebarGroup>
546
+
547
+ <SidebarSeparator className="mx-0" />
548
+
549
+ <SidebarGroup>
550
+ <SidebarGroupContent className="p-2">
551
+ <p className="font-bold mb-2">Breadcrumb navigation</p>
552
+ {showBreadcrumbs && (
553
+ <BreadcrumbNavigation
554
+ model={model}
555
+ hasEntityFilter={hasEntityFilter}
556
+ hasFieldFilter={hasFieldFilter}
557
+ entityCount={entityCount}
558
+ field={field}
559
+ onClearEntity={handleClearEntity}
560
+ onClearField={handleClearField}
561
+ />
562
+ )}
563
+ </SidebarGroupContent>
564
+ </SidebarGroup>
565
+
566
+ <SidebarSeparator className="mx-0" />
567
+
568
+ <SidebarGroup>
569
+ <SidebarGroupContent className="p-2">
570
+ <p className="font-bold mb-2">Limit selector</p>
571
+ <label className="flex gap-2 items-center text-xs text-muted-foreground">
572
+ <span>Show:</span>
573
+ <Select defaultValue={limit.toString()}>
574
+ <SelectTrigger className="w-[70px]" variant="simple" size="xs">
575
+ <SelectValue placeholder="Limit" />
576
+ </SelectTrigger>
577
+ <SelectContent>
578
+ {[10, 20, 50, 100].map((option) => (
579
+ <SelectItem key={option} value={option.toString()}>
580
+ {option}
581
+ </SelectItem>
582
+ ))}
583
+ </SelectContent>
584
+ </Select>
585
+ </label>
586
+ </SidebarGroupContent>
587
+ </SidebarGroup>
588
+
589
+ <SidebarSeparator className="mx-0" />
590
+
591
+ <SidebarGroup>
592
+ <SidebarGroupContent className="p-2">
593
+ <p className="font-bold mb-2">Content</p>
594
+ <div className="flex-1 overflow-y-auto">
595
+ {isLoading && (
596
+ <div className="flex items-center justify-center h-32">
597
+ <ReloadIcon className="w-6 h-6 animate-spin text-muted-foreground" />
598
+ </div>
548
599
  )}
549
- </SidebarGroupContent>
550
- </SidebarGroup>
551
-
552
- <SidebarSeparator className="mx-0" />
553
-
554
- <SidebarGroup>
555
- <SidebarGroupContent className="p-2">
556
- <p className="font-bold mb-2">Breadcrumb navigation</p>
557
- {showBreadcrumbs && (
558
- <BreadcrumbNavigation
559
- model={model}
560
- hasEntityFilter={hasEntityFilter}
561
- hasFieldFilter={hasFieldFilter}
562
- entityCount={entityCount}
563
- field={field}
564
- onClearEntity={handleClearEntity}
565
- onClearField={handleClearField}
566
- />
600
+ {!isLoading && data?.entries.length === 0 && (
601
+ <div className="flex flex-col text-muted-foreground">
602
+ <p className="text-sm font-bold">No changes found</p>
603
+ <p className="text-sm mt-1">Changes will appear here when entities are modified</p>
604
+ </div>
567
605
  )}
568
- </SidebarGroupContent>
569
- </SidebarGroup>
570
-
571
- <SidebarSeparator className="mx-0" />
572
-
573
- <SidebarGroup>
574
- <SidebarGroupContent className="p-2">
575
- <p className="font-bold mb-2">Limit selector</p>
576
- <label className="flex gap-2 items-center text-xs text-muted-foreground">
577
- <span>Show:</span>
578
- <Select defaultValue={limit.toString()}>
579
- <SelectTrigger className="w-[70px]" variant="simple" size="xs">
580
- <SelectValue placeholder="Limit" />
581
- </SelectTrigger>
582
- <SelectContent>
583
- {[10, 20, 50, 100].map((option) => (
584
- <SelectItem key={option} value={option.toString()}>
585
- {option}
586
- </SelectItem>
587
- ))}
588
- </SelectContent>
589
- </Select>
590
- </label>
591
- </SidebarGroupContent>
592
- </SidebarGroup>
593
-
594
- <SidebarSeparator className="mx-0" />
595
-
596
- <SidebarGroup>
597
- <SidebarGroupContent className="p-2">
598
- <p className="font-bold mb-2">Content</p>
599
- <div className="flex-1 overflow-y-auto">
600
- {isLoading && (
601
- <div className="flex items-center justify-center h-32">
602
- <ReloadIcon className="w-6 h-6 animate-spin text-muted-foreground" />
603
- </div>
604
- )}
605
- {!isLoading && data?.entries.length === 0 && (
606
- <div className="flex flex-col text-muted-foreground">
607
- <p className="text-sm font-bold">No changes found</p>
608
- <p className="text-sm mt-1">Changes will appear here when entities are modified</p>
609
- </div>
610
- )}
611
- {!isLoading && data && data.entries.length > 0 && (
612
- <div>
613
- {data.entries.map((entry: AuditLogEntry) => (
614
- <AuditLogEntryCard
615
- key={entry.id}
616
- entry={entry}
617
- isExpanded={expandedEntries.has(entry.id)}
618
- onToggle={() => toggleEntry(entry.id)}
619
- />
620
- ))}
621
- {data.hasMore && (
622
- <div className="p-3">
623
- <button
624
- onClick={loadMore}
625
- className="w-full py-2 text-sm text-primary hover:bg-sidebar-accent rounded transition-colors"
626
- >
627
- Load more...
628
- </button>
629
- </div>
630
- )}
631
- </div>
632
- )}
633
- </div>
634
- </SidebarGroupContent>
635
- </SidebarGroup>
636
- </SidebarContent>
637
- </Sidebar>
606
+ {!isLoading && data && data.entries.length > 0 && (
607
+ <div>
608
+ {data.entries.map((entry: AuditLogEntry) => (
609
+ <AuditLogEntryCard
610
+ key={entry.id}
611
+ entry={entry}
612
+ isExpanded={expandedEntries.has(entry.id)}
613
+ onToggle={() => toggleEntry(entry.id)}
614
+ />
615
+ ))}
616
+ {data.hasMore && (
617
+ <div className="p-3">
618
+ <button
619
+ onClick={loadMore}
620
+ className="w-full py-2 text-sm text-primary hover:bg-sidebar-accent rounded transition-colors"
621
+ >
622
+ Load more...
623
+ </button>
624
+ </div>
625
+ )}
626
+ </div>
627
+ )}
628
+ </div>
629
+ </SidebarGroupContent>
630
+ </SidebarGroup>
631
+ </>
638
632
  )
639
633
  }
640
634
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/audit-log-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,0DAylBC;AAjmBD,6DAA8C;AAI9C;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,EAAE,OAAO,EAA8B;IAC7E,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,CAAC;SACpE,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;QACtC,KAAK,EAAE;YACL,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAC1C,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC;YACpC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;YACnC,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC;SACxC;KACF,CAAC;SACD,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACtD,KAAK,EAAE;YACL,SAAS,CAAC,cAAc,CAAC,kBAAkB,CAAC;YAC5C,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;YACrC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC;YACtC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC;SACvC;KACF,CAAC;SACD,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACtD,KAAK,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;KAC1F,CAAC;SACD,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAE1B,6DAA6D;IAC7D,MAAM,mBAAmB,GAAa,EAAE,CAAA;IACxC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAA6C,CAAA;YACtE,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChE,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,OAAO,WAAW,IAAI,CAAC,CAAA;gBAC1F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;EACP,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;EAyBlB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqVf,OAAO,CAAC,UAAU,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgMvC,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"audit-log-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/audit-log-sidebar.generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ContextResult } from '../admin.generator';
2
+ /**
3
+ * Generator function that generates the Comment Sidebar Content component for admin pages.
4
+ * This is a reusable component that fetches comments for a given model,
5
+ * groups them by model entity, builds reply trees, and renders them using CommentList.
6
+ */
7
+ export declare function generateCommentSidebar({ context }: {
8
+ context: ContextResult;
9
+ }): string;
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.generateCommentSidebar = generateCommentSidebar;
37
+ const Generator = __importStar(require("@postxl/generator"));
38
+ /**
39
+ * Generator function that generates the Comment Sidebar Content component for admin pages.
40
+ * This is a reusable component that fetches comments for a given model,
41
+ * groups them by model entity, builds reply trees, and renders them using CommentList.
42
+ */
43
+ function generateCommentSidebar({ context }) {
44
+ const commentModel = context.models.get('Comment');
45
+ const userModel = context.models.get('User');
46
+ const imports = Generator.ImportGenerator
47
+ //
48
+ .from(context.admin.components.commentSidebar.location)
49
+ .addImport({
50
+ from: Generator.toPackageName('react'),
51
+ items: [
52
+ Generator.toFunctionName('useState'),
53
+ Generator.toFunctionName('useMemo'),
54
+ Generator.toFunctionName('useCallback'),
55
+ Generator.toFunctionName('useEffect'),
56
+ ],
57
+ })
58
+ .add(commentModel.itemsHook)
59
+ .add(userModel.itemsHook)
60
+ .addType(commentModel.types.id)
61
+ .addType(userModel.types.id);
62
+ const userLabelField = userModel.labelField.name;
63
+ return `
64
+ ${imports.generate()}
65
+ import { useAuth } from '@context-providers/auth-context-provider'
66
+ import { Avatar, AvatarFallback, AvatarImage, Button, CommentCreate, CommentList, Label, Switch } from '@postxl/ui-components'
67
+ import type { CommentItem, CommentGroup } from '@postxl/ui-components'
68
+
69
+ type ModelCommentContentProps = Readonly<{
70
+ model: string
71
+ filteredIds?: string[]
72
+ labelMap?: Record<string, string>
73
+ selectedEntityId?: string
74
+ onCommentCountChange?: (count: number) => void
75
+ }>
76
+
77
+ export function ${context.admin.components.commentSidebar.name}({ model, filteredIds, labelMap, selectedEntityId, onCommentCountChange }: ModelCommentContentProps) {
78
+ const { viewerData } = useAuth()
79
+ const currentUserId = viewerData?.user?.id
80
+ const [commentTarget, setCommentTarget] = useState<{ entityId: string; label: string } | null>(null)
81
+ const [unresolvedOnly, setUnresolvedOnly] = useState(false)
82
+ const {
83
+ ${commentModel.itemsHook.filteredList.name}: comments,
84
+ ${commentModel.itemsHook.create.name}: createComment,
85
+ ${commentModel.itemsHook.updateField.name}: updateCommentField,
86
+ ${commentModel.itemsHook.isLoaded.name}: commentsLoaded,
87
+ } = ${commentModel.itemsHook.name}({
88
+ filters: {
89
+ model: { values: [model] },
90
+ ...(filteredIds?.length ? { modelId: { values: filteredIds } } : {}),
91
+ ...(unresolvedOnly ? { isResolved: [false] } : {}),
92
+ },
93
+ paginated: false,
94
+ })
95
+
96
+ const { ${userModel.itemsHook.map.name}: userMap } = ${userModel.itemsHook.name}()
97
+
98
+ const groups = useMemo<CommentGroup[]>(() => {
99
+ if (!comments?.length || !userMap) return []
100
+
101
+ function toItem(c: (typeof comments)[number], groupComments: typeof comments): CommentItem {
102
+ const user = userMap.get(c.userId)
103
+ const replies = groupComments.filter(r => r.replyToCommentId === c.id).map(r => toItem(r, groupComments))
104
+ return {
105
+ id: c.id,
106
+ userName: user?.${userLabelField} ?? String(c.userId),
107
+ userAvatar: user?.profilePictureUrl ? (
108
+ <Avatar className="size-full">
109
+ <AvatarImage src={user.profilePictureUrl} />
110
+ <AvatarFallback className="text-sm">{(user.${userLabelField} ?? '?').slice(0, 2).toUpperCase()}</AvatarFallback>
111
+ </Avatar>
112
+ ) : undefined,
113
+ createdAt: c.createdAt ?? new Date(),
114
+ comment: c.comment,
115
+ isResolved: c.isResolved ?? undefined,
116
+ replies: replies.length > 0 ? replies : undefined,
117
+ }
118
+ }
119
+
120
+ const grouped = new Map<string, typeof comments>()
121
+ for (const c of comments) {
122
+ if (!grouped.has(c.modelId)) grouped.set(c.modelId, [])
123
+ grouped.get(c.modelId)!.push(c)
124
+ }
125
+
126
+ return Array.from(grouped.entries())
127
+ .map(([modelId, items]): CommentGroup => ({
128
+ groupId: modelId,
129
+ groupName: labelMap?.[modelId] ?? modelId,
130
+ comments: items.filter(c => !c.replyToCommentId).map(c => toItem(c, items)),
131
+ }))
132
+ .filter(g => g.comments.length > 0)
133
+ }, [comments, userMap, labelMap])
134
+
135
+ const commentCount = useMemo(() => groups.reduce((sum, g) => sum + g.comments.length, 0), [groups])
136
+
137
+ useEffect(() => {
138
+ onCommentCountChange?.(commentCount)
139
+ }, [commentCount, onCommentCountChange])
140
+
141
+ const handleResolve = useCallback((commentId: string, isResolve: boolean) => {
142
+ void updateCommentField({ id: commentId as ${commentModel.types.id.name}, field: 'isResolved', value: isResolve || null })
143
+ }, [updateCommentField])
144
+
145
+ const handleReply = useCallback((parentId: string, text: string) => {
146
+ if (!currentUserId) return
147
+ const parentComment = comments?.find(c => c.id === parentId)
148
+ if (!parentComment) return
149
+ void createComment({
150
+ userId: currentUserId as ${userModel.types.id.name},
151
+ model,
152
+ modelId: parentComment.modelId,
153
+ comment: text,
154
+ replyToCommentId: parentId as ${commentModel.types.id.name},
155
+ isResolved: null,
156
+ })
157
+ }, [currentUserId, comments, createComment, model])
158
+
159
+ const handleCreate = useCallback((text: string, groupId?: string) => {
160
+ if (!currentUserId || !groupId) return
161
+ void createComment({
162
+ userId: currentUserId as ${userModel.types.id.name},
163
+ model,
164
+ modelId: groupId,
165
+ comment: text,
166
+ replyToCommentId: null,
167
+ isResolved: null,
168
+ })
169
+ }, [currentUserId, createComment, model])
170
+
171
+ const handleCreateForTarget = useCallback((text: string) => {
172
+ if (!currentUserId || !commentTarget) return
173
+ void createComment({
174
+ userId: currentUserId as ${userModel.types.id.name},
175
+ model,
176
+ modelId: commentTarget.entityId,
177
+ comment: text,
178
+ replyToCommentId: null,
179
+ isResolved: null,
180
+ })
181
+ setCommentTarget(null)
182
+ }, [currentUserId, createComment, model, commentTarget])
183
+
184
+ const selectedLabel = selectedEntityId ? labelMap?.[selectedEntityId] ?? selectedEntityId : undefined
185
+
186
+ if (!commentsLoaded) {
187
+ return (
188
+ <div className="p-4">
189
+ <p className="text-sm text-muted-foreground">Loading comments...</p>
190
+ </div>
191
+ )
192
+ }
193
+
194
+ return (
195
+ <div className="p-2">
196
+ {commentTarget ? (
197
+ <div className="mb-3">
198
+ <p className="text-xs text-muted-foreground mb-1">Commenting on {commentTarget.label}</p>
199
+ <CommentCreate
200
+ onSubmit={handleCreateForTarget}
201
+ onCancel={() => setCommentTarget(null)}
202
+ />
203
+ </div>
204
+ ) : (
205
+ <>
206
+ {currentUserId && selectedEntityId && (
207
+ <div className="mb-3">
208
+ <Button
209
+ variant="outline"
210
+ size="sm"
211
+ className="w-full truncate block"
212
+ onClick={() =>
213
+ setCommentTarget({ entityId: selectedEntityId, label: selectedLabel ?? selectedEntityId })
214
+ }
215
+ >
216
+ Comment on {selectedLabel}
217
+ </Button>
218
+ </div>
219
+ )}
220
+ </>
221
+ )}
222
+ {(groups.length > 0 || unresolvedOnly) && (
223
+ <div className="flex items-center gap-2 mb-3">
224
+ <Switch id="unresolved-only" checked={unresolvedOnly} onCheckedChange={setUnresolvedOnly} />
225
+ <Label htmlFor="unresolved-only" className="text-xs">Unresolved only</Label>
226
+ </div>
227
+ )}
228
+ {groups.length === 0 && !commentTarget && (
229
+ <p className="text-sm text-muted-foreground">
230
+ {unresolvedOnly ? 'No unresolved comments' : selectedEntityId ? 'No comments' : 'Select a row to add a comment'}
231
+ </p>
232
+ )}
233
+ {groups.length > 0 && (
234
+ <CommentList
235
+ comments={groups}
236
+ onResolve={handleResolve}
237
+ onReply={currentUserId ? handleReply : undefined}
238
+ onCreate={currentUserId ? handleCreate : undefined}
239
+ />
240
+ )}
241
+ </div>
242
+ )
243
+ }
244
+ `;
245
+ }
246
+ //# sourceMappingURL=comment-sidebar.generator.js.map