feat(timeline): add pulse animation for in-flight drag mutations
Allocation bars that have active optimistic overrides (post-drag, awaiting server confirmation) now pulse subtly via animate-pulse. The pending set is derived from the existing optimisticAllocations map keys, requiring no additional state. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ import {
|
||||
AllocationStatus,
|
||||
PermissionKey,
|
||||
SystemRole,
|
||||
toIsoDateOrNull,
|
||||
} from "@capakraken/shared";
|
||||
import type { WeekdayAvailability } from "@capakraken/shared";
|
||||
import { TRPCError } from "@trpc/server";
|
||||
@@ -269,9 +270,7 @@ const createStaffingCaller = createCallerFactory(staffingRouter);
|
||||
|
||||
// ─── Helpers ────────────────────────────────────────────────────────────────
|
||||
|
||||
function fmtDate(d: Date | null | undefined): string | null {
|
||||
return d ? d.toISOString().slice(0, 10) : null;
|
||||
}
|
||||
const fmtDate = toIsoDateOrNull;
|
||||
|
||||
class AssistantVisibleError extends Error {
|
||||
constructor(message: string) {
|
||||
@@ -301,7 +300,7 @@ function formatHolidayCalendarEntry(entry: {
|
||||
}) {
|
||||
return {
|
||||
id: entry.id,
|
||||
date: fmtDate(entry.date),
|
||||
date: toIsoDateOrNull(entry.date),
|
||||
name: entry.name,
|
||||
isRecurringAnnual: entry.isRecurringAnnual ?? false,
|
||||
source: entry.source ?? null,
|
||||
|
||||
Reference in New Issue
Block a user