feat(extensions): add ZIP installation and unify action dialogs
This commit is contained in:
@@ -9,6 +9,18 @@ let previousFocus: HTMLElement | null = null
|
||||
function dismiss() { if (props.dismissible) emit('close') }
|
||||
function keydown(event: KeyboardEvent) {
|
||||
if (event.key === 'Escape') { event.preventDefault(); event.stopPropagation(); dismiss() }
|
||||
if (event.key === 'Tab' && dialog.value) {
|
||||
const items = Array.from(dialog.value.querySelectorAll<HTMLElement>('button:not(:disabled), input:not(:disabled):not([type="hidden"]), textarea:not(:disabled), select:not(:disabled), a[href], [tabindex]'))
|
||||
.filter(element => element.tabIndex >= 0 && element.getClientRects().length > 0)
|
||||
const first = items[0]
|
||||
const last = items.at(-1)
|
||||
if (!first) { event.preventDefault(); dialog.value.focus(); return }
|
||||
if (event.shiftKey && (document.activeElement === first || document.activeElement === dialog.value)) {
|
||||
event.preventDefault(); last?.focus()
|
||||
} else if (!event.shiftKey && document.activeElement === last) {
|
||||
event.preventDefault(); first.focus()
|
||||
}
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
previousFocus = document.activeElement as HTMLElement | null
|
||||
|
||||
Reference in New Issue
Block a user