Commit graph

44 commits

Author SHA1 Message Date
Chris McCord
7461256268 Add accessible modal with focus_wrap component
The focus_wrap function component (and hook) can
be used to focus wrap any content.

The focus and focus_closest JS functions were added to
programmtaically focus an element on the client or
find the next element or previous element sibling when an
action is taken that requires moving focus to cloest item.

Co-authored-by: Nolan Darilek <nolan@thewordnerd.info>
2022-02-04 11:41:05 -05:00
Chris McCord
1975f85cfe Fix ping 2022-01-31 15:42:41 -05:00
Chris McCord
8cd6048d4b Optimize presence and rate limit pings 2022-01-31 14:27:06 -05:00
Chris McCord
1caf809be7 WIP 2022-01-28 20:40:48 -05:00
Chris McCord
65f307b1fa Add ping 2022-01-27 20:42:36 -05:00
Chris McCord
eecb14ecba Fix seekable songs 2022-01-27 14:41:26 -05:00
Chris McCord
214ec50f0e WIP 2022-01-27 13:03:42 -05:00
Chris McCord
add1d15177 Add clustering with proxy file streaming 2022-01-27 09:36:04 -05:00
Chris McCord
be420bdc44 Match topbar with theme 2022-01-14 11:05:41 -05:00
Chris McCord
9998e06caa Optimize presence.
Avoid fetching each user by passing in full pre-fetched
presences from Presence.fetch/2 callback.
Use temporary assigns in ProfileLive to avoid duping
presences in memeory.
Handle removes by a small hook event
2022-01-11 14:57:06 -05:00
Chris McCord
cb781d855e Merge branch 'cm-tailwind-standalone' 2022-01-07 13:42:26 -05:00
Chris McCord
c5b25aa5be Add standalone tailwind 2022-01-07 13:42:04 -05:00
Nolan Darilek
7b48c2fbaf Further simplify post-route handler.
* Use `HtmlElement.tabIndex` directly rather than going through attributes.
* Always restore `tabIndex` after focus.
* Remove `setTimeout` to simplify implementation.

This does have a disadvantage in that it leaves unnecessary `tabindex="1"` instances around. On the other hand, it does simplify the implementation and get the job done' so is probably a more clear example of how to do this correctly.
2021-12-22 12:41:19 -06:00
Nolan Darilek
7d09845b8c Remove unnecessary window.requestAnimationFrame. 2021-12-22 12:06:08 -06:00
Chris McCord
bbb9693e8c WIP 2021-12-16 11:06:22 -05:00
Nolan Darilek
566a574c0a Initial attempt at accessibly announcing route updates.
* Add handler for `phx:page-loading-stop` that focuses either the first `<h1>` child of `<main>`, or `<main>` directly if no child `<h1>` is present. Make this our focus target.
* Cache original `tabindex` of target, if any, and assign it a temporary `tabindex1 of -1.
* Focus the target.
* After a long timeout, either restore the target's original `tabindex` or remove the temporary -1 value. Short timeouts didn't seem to perform the focus step. Neither did nested `requestAnimationFrame` calls.
2021-11-22 15:25:41 -06:00
Chris McCord
cead091227
Update assets/js/app.js 2021-11-22 14:28:57 -05:00
Nolan Darilek
a19a6091e6 When a dropdown is open, block Tab to avoid navigating away.
Under Windows, dropdowns cannot be tabbed off of. They are only closed by either selecting an item or pressing Escape.
2021-11-22 12:55:01 -06:00
Chris McCord
7209a3121c Add dropdown component 2021-11-22 11:21:11 -05:00
Chris McCord
8ee6b39ad5 Show connection status flash 2021-11-22 09:24:41 -05:00
Chris McCord
07d1dbf744 Fixup flash hiding 2021-11-19 09:55:26 -05:00
Chris McCord
6622f791e0 Use keydown event to detect keyboard based clicks
Relying on e.detail is not supported on all OS/browsers
2021-11-18 22:09:01 -05:00
Chris McCord
7d8e1f2ec6 Reset focus on escape 2021-11-18 16:17:47 -05:00
Chris McCord
a643ca9fe5 Wrap focus 2021-11-18 16:01:29 -05:00
Chris McCord
1dc43ac366 Fix focus and keyboard nav
Only enable keyboard nav and focus if button is
triggered by keyboard event
2021-11-18 15:21:07 -05:00
Chris McCord
30b46e95e5 Add aria menu hook and use in sidebar 2021-11-18 09:55:09 -05:00
Chris McCord
364b0659e1 Deploy and presence stub 2021-11-16 11:58:28 -05:00
Chris McCord
c45510cb6e Add profiles 2021-11-11 22:42:10 -05:00
Chris McCord
64c68d7b61 remove redudant order_by 2021-11-10 16:07:10 -05:00
Chris McCord
7708779b9f Auto advance to next song via client 2021-11-10 14:29:53 -05:00
Chris McCord
635a2c9d21 Make sidebar live and add enhanced flash 2021-11-10 13:23:02 -05:00
Chris McCord
f482d5143a Update flash 2021-11-10 11:56:01 -05:00
Chris McCord
fdd37c5da8 Use GH LV and js 2021-11-10 10:35:49 -05:00
Chris McCord
b3033d0a94 Only show enable audio modal if not allowed 2021-11-08 14:52:45 -05:00
Chris McCord
17db535839 Move audio enabling entirely to client 2021-11-08 14:32:40 -05:00
Chris McCord
6358b0bb3b Fix changeset handling by recycling 2021-11-08 13:46:23 -05:00
Chris McCord
5f593dfaf2 Lock files behind temporary token 2021-11-05 23:02:31 -04:00
Chris McCord
287f78ab2a Synced playing fixup 2021-11-05 15:57:33 -04:00
Chris McCord
60382feddc Initial synced playback 2021-11-04 20:49:19 -04:00
Chris McCord
2552a32865 UI function components 2021-10-29 12:12:23 -04:00
Chris McCord
708bf715e1 WIP 2021-10-27 16:02:56 -04:00
Chris McCord
e28abc0a0a Add github login 2021-09-08 10:58:32 -04:00
Chris McCord
f9edbf76ba Fixed media player 2021-09-03 09:57:15 -04:00
Chris McCord
85855f9939 Make it so 🚀 2021-09-02 14:00:57 -04:00