mirror of
https://github.com/immich-app/immich.git
synced 2025-12-20 09:15:35 +03:00
* feat(web): keyboard access for search dropdown Also: fixing cosmetic issue with combobox component. * fix: revert changing required field * fix: create new focusChange action * fix: combobox usability improvements * handle escape key on the clear button * move focus to input when clear button is clicked * leave the dropdown closed if the user has already closed the dropdown and tabs over to the clear button * activate the combobox if a user tabs backwards onto the clear button * rename focusChange to focusOutside * small fixes * do not activate combobox on backwards tabbing * simplify classes in "No results" option * prevent dropdown option from being preselected when clear button is clicked * fix: remove unused event dispatcher interface
22 lines
503 B
TypeScript
22 lines
503 B
TypeScript
interface Options {
|
|
onFocusOut?: () => void;
|
|
}
|
|
|
|
export function focusOutside(node: HTMLElement, options: Options = {}) {
|
|
const { onFocusOut } = options;
|
|
|
|
const handleFocusOut = (event: FocusEvent) => {
|
|
if (onFocusOut && event.relatedTarget instanceof Node && !node.contains(event.relatedTarget as Node)) {
|
|
onFocusOut();
|
|
}
|
|
};
|
|
|
|
node.addEventListener('focusout', handleFocusOut);
|
|
|
|
return {
|
|
destroy() {
|
|
node.removeEventListener('focusout', handleFocusOut);
|
|
},
|
|
};
|
|
}
|