Skip to content

Instantly share code, notes, and snippets.

@jdgower
Last active April 26, 2026 22:54
Show Gist options
  • Select an option

  • Save jdgower/e3951251bbcf7d8bce611be5b5a41a81 to your computer and use it in GitHub Desktop.

Select an option

Save jdgower/e3951251bbcf7d8bce611be5b5a41a81 to your computer and use it in GitHub Desktop.
Cycle ui.sh designs
(() => {
const host = () => document.querySelector('uidotsh-picker');
const btn = dir => host()?.shadowRoot?.querySelector(`button[data-nav][data-${dir}]`);
const cycle = dir => {
const b = btn(dir);
if (!b) return;
b.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, composed: true }));
};
window.uiNext = () => cycle('next');
window.uiPrev = () => cycle('previous');
if (window.__uiPickerKeydown) {
window.removeEventListener('keydown', window.__uiPickerKeydown, true);
}
window.__uiPickerKeydown = e => {
if (e.target.closest('input, textarea, [contenteditable], select')) return;
if (e.key === '[') { e.preventDefault(); window.uiNext(); }
if (e.key === ']') { e.preventDefault(); window.uiPrev(); }
};
window.addEventListener('keydown', window.__uiPickerKeydown, true);
console.log('ui picker: [ = next, ] = prev');
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment