Implement privacy selector UI
Categories
(Calendar :: Calendar Frontend, enhancement)
Tracking
(Not tracked)
People
(Reporter: arschmitz, Unassigned)
References
(Depends on 1 open bug, Blocks 2 open bugs)
Details
(Whiteboard: [calendar-ui-create-edit])
Summary:
Implement the sticky-footer privacy selector as a draft-only control.
Links:
-
Zeplin sticky footer/availability/privacy annotations: https://app.zeplin.io/project/66dd0f2b2fe8f1b63cda36f1/screen/6a0f2f285393a283202254bc
-
Interaction guide: Create > Availability/privacy: https://docs.google.com/document/d/15OpMthOHmBGyPpDBNRW8vp6uCxeoitBp8n7Fti3LD10/edit?tab=t.why4m6lqup0#heading=h.5fg39gqf1jkr
-
Planning: Questions - Q16 Additional Availability And Privacy Values
Acceptance criteria: -
The privacy selector provides Default, Public, and Private options. Any additional existing Thunderbird privacy values require product confirmation before they are exposed.
-
The selector renders the current session’s plain privacy draft through stable
storeObserverselections. Do not use getters that pull state from the store. -
Privacy state is a plain enum value only; it contains no
calIEvent, calendar object, preference value, DOM node, or open-popup state. -
Selecting an option dispatches one narrow privacy-section patch and changes draft state only.
-
Popup visibility, active option, keyboard navigation, and focus restoration remain local selector state.
-
A route/session replacement closes stale popup interaction and prevents an obsolete selection event from patching the newer draft.
-
The selector uses the sticky footer’s established layout and does not grow, resize, or re-anchor the dialog or call
PositionedDialog. -
Privacy loading, create defaults, and event-property persistence remain outside this story and belong to Bug 2062016.
-
Add focused tests for the allowed options, draft-only selection patches, inaccessible-until-confirmed additional values, keyboard and accessible naming behavior, stale-session protection, footer layout integration, and axe coverage where supported.
Out of scope:
- Privacy loading, default selection, preference reads or writes, calendar-property conversion, Save-time persistence, a generic dropdown service, and direct calendar mutation.
Description
•