feat: kanban view

This commit is contained in:
Philipinho
2026-06-14 00:46:54 +01:00
parent 572452c80b
commit 5ec4f19839
55 changed files with 2820 additions and 373 deletions
@@ -80,6 +80,8 @@ export function RowDetailModal({
// The shared closeRequest atom asks an open dirty PropertyMenuContent to
// run its discard-confirm flow instead of being torn down mid-edit.
const [openMenuId, setOpenMenuId] = useState<string | null>(null);
const [newPropertyId, setNewPropertyId] = useState<string | null>(null);
const clearNewProperty = useCallback(() => setNewPropertyId(null), []);
const menuDirtyRef = useRef(false);
const [closeRequest, setCloseRequest] = useAtom(
propertyMenuCloseRequestAtomFamily(base.id),
@@ -310,6 +312,8 @@ export function RowDetailModal({
property={property}
row={row}
pageId={base.id}
autoFocusValue={property.id === newPropertyId}
onAutoFocused={clearNewProperty}
menuOpened={openMenuId === property.id}
onMenuOpenChange={(nextOpened) =>
handleMenuOpenChange(property.id, nextOpened)
@@ -329,6 +333,7 @@ export function RowDetailModal({
<CreatePropertyPopover
pageId={base.id}
properties={base.properties}
onPropertyCreated={(p) => setNewPropertyId(p.id)}
renderTarget={(open) => (
<button
type="button"