dragonflight/services/web-ui/public
Zac Gaetano 3ffffd5b32 feat(schedule): right-click menu + drag-to-resize on EPG event blocks
Right-click any event block to open a context menu (Edit, Cancel,
Copy schedule ID, Delete) — actions per status mirror the List view so
the two surfaces stay in lockstep. Menu is viewport-clamped and
dismisses on outside click / scroll, same pattern as the asset menu in
the Library.

Drag-to-resize works for pending schedules only (the schedules PUT
rejects edits to running rows, and terminal statuses are read-only):
- Drag the left edge to move the start time
- Drag the right edge to move the end time
- Drag the body to shift the whole block in time
All gestures snap to 15-minute increments to match the new-schedule
click snap. Minimum duration is clamped to 5 minutes; the block clamps
to the visible day on both edges. While dragging the title shows the
preview range ("Start time → end time") and the block lifts with a
project-tinted shadow.

A short pointer click (< 4px travel) still opens the edit modal — the
click and drag share the same pointerdown so the operator never has
to know which gesture they made first.

Implementation: replaces the <button> block with a <div> hosting three
zones (left handle / body / right handle). Pointer events with
setPointerCapture so drags survive losing the cursor over the block,
and pointerup demotes back to click if travel was below threshold.
Optimistic local update on resize, PUT /schedules/:id with just the
two changed time fields, refetch to reconcile.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 16:33:57 -04:00
..
css fix: remove Google Fonts, fix editor link to :47435, fix page titles 2026-05-18 22:56:51 -04:00
fonts web-ui: wave-1 finish — self-host fonts + multi-stage Dockerfile 2026-05-21 16:32:55 +00:00
img feat(brand): add Wild Dragon logo + favicon 2026-05-18 14:11:29 +00:00
js web-ui: tag IN DEV pages in sidebar from auth-guard 2026-05-21 09:59:29 -04:00
_primitives-smoke.html rebrand: _primitives-smoke — Dragonflight brand 2026-05-21 22:52:12 -04:00
api-tokens.html feat: migrate api-tokens.html to wd-* design system 2026-05-21 23:14:09 -04:00
app.jsx feat(ingest): YouTube importer — paste link, asset travels normal pipeline 2026-05-23 16:05:41 -04:00
capture.html feat: migrate capture.html to wd-* design system 2026-05-21 23:16:29 -04:00
cluster.html feat: migrate cluster.html to wd-* design system 2026-05-21 23:17:48 -04:00
containers.html rebrand: containers.html — Z-AMPP → Dragonflight 2026-05-21 22:31:41 -04:00
data.jsx feat(ui): polish round 2 — live refresh, schedule calendar, jobs times, real sidebar user 2026-05-23 14:52:04 -04:00
edit.html feat: migrate edit.html to wd-* design system 2026-05-21 23:14:19 -04:00
editor.html feat: migrate editor.html to wd-* design system 2026-05-21 23:16:46 -04:00
favicon.ico feat(brand): add Wild Dragon logo + favicon 2026-05-18 14:11:29 +00:00
home.html rebrand: Dragonflight — home.html wordmark, accent gradients, brand names 2026-05-21 22:19:00 -04:00
icons.jsx feat(home,users): real metrics, working Users row actions + Groups CRUD 2026-05-23 03:30:10 +00:00
index.html index: add hls.js for live stream HLS playback 2026-05-22 13:31:57 -04:00
jobs.html feat: migrate jobs.html to wd-* design system 2026-05-21 23:12:58 -04:00
login.html rebrand: Dragonflight — login.html brand names, description text 2026-05-21 22:22:58 -04:00
modal-new-recorder.jsx feat(ui): polish round 2 — live refresh, schedule calendar, jobs times, real sidebar user 2026-05-23 14:52:04 -04:00
player.html feat: migrate player.html to wd-* design system 2026-05-21 23:15:18 -04:00
projects.html feat: migrate projects.html to wd-* design system 2026-05-21 23:15:57 -04:00
recorders.html feat: migrate recorders.html to wd-* design system 2026-05-22 03:16:27 +00:00
screens-admin.jsx fix(tokens): add missing showCalc state — page was crashing on render 2026-05-23 16:18:19 -04:00
screens-asset.jsx fix(asset): show 'Generate proxy' CTA when an asset has a hi-res 2026-05-23 10:30:42 -04:00
screens-editor.jsx polish(ui): wire dead buttons across asset detail, shell, containers, cluster 2026-05-23 04:04:08 +00:00
screens-home.jsx feat(home): restore launcher home page; move current home to Dashboard 2026-05-23 10:48:06 -04:00
screens-ingest.jsx feat(schedule): right-click menu + drag-to-resize on EPG event blocks 2026-05-23 16:33:57 -04:00
screens-jobs.jsx feat(ingest): YouTube importer — paste link, asset travels normal pipeline 2026-05-23 16:05:41 -04:00
screens-library.jsx feat(ui): polish round 2 — live refresh, schedule calendar, jobs times, real sidebar user 2026-05-23 14:52:04 -04:00
screens-projects.jsx fix(projects): RenameProjectModal replaces prompt() 2026-05-23 09:02:23 -04:00
settings.html rebrand: settings.html — Z-AMPP → Dragonflight 2026-05-21 22:35:33 -04:00
shell.jsx feat(ingest): YouTube importer — paste link, asset travels normal pipeline 2026-05-23 16:05:41 -04:00
styles-asset.css feat(web-ui): asset detail + rest CSS: styles-asset.css 2026-05-22 08:06:39 -04:00
styles-fixes.css fix: settings S3 surfaces fetch errors; recorder signal dot pulses 2026-05-23 13:19:48 -04:00
styles-modal.css feat(web-ui): Z-AMPP screen + component CSS: styles-modal.css 2026-05-22 08:03:57 -04:00
styles-rest.css feat(schedule): right-click menu + drag-to-resize on EPG event blocks 2026-05-23 16:33:57 -04:00
styles-screens.css feat(web-ui): Z-AMPP screen + component CSS: styles-screens.css 2026-05-22 08:03:55 -04:00
styles.css feat(web-ui): Z-AMPP design system CSS: styles.css 2026-05-22 08:02:35 -04:00
tokens.html rebrand: Dragonflight — tokens.html brand names and footer text 2026-05-21 22:26:24 -04:00
tweaks-panel.jsx Add Z-AMPP UI: visuals + tweaks-panel: tweaks-panel.jsx 2026-05-22 08:13:37 -04:00
upload.html feat: migrate upload.html to wd-* design system 2026-05-21 23:14:51 -04:00
users.html rebrand: users.html — Z-AMPP → Dragonflight 2026-05-21 22:33:21 -04:00
visuals.jsx feat(ui): wire screens to live API data; add thumbnail lazy-loading: visuals.jsx 2026-05-22 10:04:23 -04:00