Phase 4: Rich card features — labels, checklists, comments, attachments, categories
Add full CRUD + UI for all card sub-resources (tags/labels, assignees, checklists with items, comments with markdown, file attachments). Restructure CardModal into a two-column layout with lazy-loaded data. Upgrade card thumbnails with named label pills, urgency-colored due date badges, checklist progress indicators, and SVG icons. Add board categories with filtering on the listing page. Include markdown rendering with DOMPurify sanitization and .prose CSS styles. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3,9 +3,9 @@ import { withTenant } from '$lib/server/rls.js';
|
||||
|
||||
export const load: PageServerLoad = async ({ locals }) => {
|
||||
const tenant = locals.tenant;
|
||||
if (!tenant) return { boards: [] };
|
||||
if (!tenant) return { boards: [], categories: [] };
|
||||
|
||||
const boards = await withTenant(tenant.id, async (tx) => {
|
||||
const result = await withTenant(tenant.id, async (tx) => {
|
||||
const where: any = { tenantId: tenant.id, archived: false };
|
||||
|
||||
if (!locals.user) {
|
||||
@@ -17,17 +17,28 @@ export const load: PageServerLoad = async ({ locals }) => {
|
||||
];
|
||||
}
|
||||
|
||||
return tx.board.findMany({
|
||||
where,
|
||||
include: {
|
||||
members: {
|
||||
include: { user: { select: { id: true, name: true, avatarUrl: true } } }
|
||||
const [boards, categories] = await Promise.all([
|
||||
tx.board.findMany({
|
||||
where,
|
||||
include: {
|
||||
members: {
|
||||
include: { user: { select: { id: true, name: true, avatarUrl: true } } }
|
||||
},
|
||||
category: true,
|
||||
_count: { select: { columns: true } }
|
||||
},
|
||||
_count: { select: { columns: true } }
|
||||
},
|
||||
orderBy: { updatedAt: 'desc' }
|
||||
});
|
||||
orderBy: { updatedAt: 'desc' }
|
||||
}),
|
||||
locals.user
|
||||
? tx.category.findMany({
|
||||
where: { tenantId: tenant.id },
|
||||
orderBy: { name: 'asc' }
|
||||
})
|
||||
: []
|
||||
]);
|
||||
|
||||
return { boards, categories };
|
||||
});
|
||||
|
||||
return { boards };
|
||||
return result;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user