Open Bug 2062018 Opened 1 month ago Updated 1 month ago

Implement edit-mode delete action with confirmation

Categories

(Calendar :: Calendar Frontend, enhancement)

enhancement

Tracking

(Not tracked)

People

(Reporter: arschmitz, Unassigned)

References

(Depends on 2 open bugs, Blocks 1 open bug)

Details

(Whiteboard: [calendar-ui-create-edit])

Summary:

Implement the edit-mode Delete confirmation and transaction controller.

Links:

  • Zeplin more-menu delete annotation: https://app.zeplin.io/project/66dd0f2b2fe8f1b63cda36f1/screen/6a0f2f285393a283202254bc

  • Interaction guide: Create > Quick actions: https://docs.google.com/document/d/15OpMthOHmBGyPpDBNRW8vp6CxeoitBp8n7Fti3LD10/edit?tab=t.why4m6lqup0#heading=h.qwdqcwauo1fg

  • Interaction guide: Context Menu > Event dialog menu: https://docs.google.com/document/d/15OpMthOHmBGyPpDBNRW8vp6uCxeoitBp8n7Fti3LD10/edit?tab=t.vmldrayyqw4o#heading=h.duaczaoudzkg

  • Planning: Redux - Start Save, edit, and delete with direct async controllers
    Acceptance criteria:

  • Delete is available only for the current edit session. Create sessions never expose or execute Delete.

  • The Delete controller renders edit-mode eligibility and current operation state through stable storeObserver selections. Do not use getters that pull state from the store.

  • Invoking Delete opens an internal, accessible confirmation. Confirmation-open state, focus trap, trigger restoration, and background inertness remain local dialog-controller state.

  • Confirming Delete dispatches serializable delete pending, success, or failure operation state, then uses the current session’s private raw source and existing calendar transaction APIs at the transaction boundary. Redux contains no calIEvent, calendar object, callback, or transaction handle.

  • The controller preserves existing ownership behavior: organizer events with guests use the established cancellation-email confirmation path; organizer events without guests and attendee copies retain undo notification where supported.

  • A route/session replacement, duplicate confirmation, or stale delete result cannot delete an event for a newer session.

  • Cancel leaves the event unchanged and restores focus to the More-menu Delete item.

  • On success, the dialog closes through the established contract. On failure, retain the dialog and expose the serializable operation error for retry.

  • The confirmation overlays the existing dialog without resizing, re-positioning, or calling PositionedDialog.

  • Bug 2061209 owns the More-menu trigger, placement, and item availability; this story owns only the Delete confirmation and transaction path.

  • Add focused tests for edit-only availability, create-mode absence, confirmation and cancel flow, organizer-with-guests cancellation-email path, organizer-without-guests and attendee-copy behavior, undo notification where supported, stale-session/duplicate protection, failure retention, transaction deletion, and axe coverage where supported.

Out of scope:

  • More-menu layout, generic modal infrastructure, changing existing deletion or cancellation-email semantics, new undo infrastructure, direct transaction work in reducers, and delete behavior for tasks/todos.
You need to log in before you can comment on or make changes to this bug.