On /tasks/<id> pages, the status badge is clickable and opens a dropdown to change status. Implement the same pattern for the priority label (e.g., "P1 High").
Current priority display (in task detail header): Lucid.span_ [Lucid.class_ "priority-badge"] (Lucid.toHtml (tshow priority <> " " <> priorityDesc priority))
Design:
Implementation:
1. Add new route: "tasks" :> Capture "id" Text :> "priority" :> ReqBody '[FormUrlEncoded] PriorityForm :> Post '[Lucid.HTML] PriorityBadgePartial
2. Add form and partial types: newtype PriorityForm = PriorityForm TaskCore.Priority data PriorityBadgePartial = PriorityBadgePartial TaskCore.Priority Text
3. Add handler: priorityHandler :: Text -> PriorityForm -> Handler PriorityBadgePartial
4. Create priority dropdown components (mirror status pattern): priorityBadgeClickable :: Priority -> Text -> HtmlT m () priorityDropdownOptions :: Priority -> Text -> HtmlT m () priorityOption :: Priority -> Priority -> Text -> HtmlT m ()
5. Wrap priority in #priority-badge-container div for HTMX targeting
6. Reuse existing .status-badge-dropdown CSS classes, or create parallel .priority-badge-dropdown classes
7. Add JavaScript handlers (or reuse toggle/close logic with class parameterization):
Or generalize: toggleDropdown(elem, containerClass)
Files: Omni/Jr/Web.hs, Omni/Jr/Web/Style.hs, Omni/Task/Core.hs (add updateTaskPriority if not exists)
No activity yet.