mirror of https://github.com/sveltejs/svelte
parent
791533e7a5
commit
ed85e0142b
@ -0,0 +1,48 @@
|
||||
import Element from '../nodes/Element';
|
||||
|
||||
const interactiveInputTypes = new Set([
|
||||
'submit',
|
||||
'reset',
|
||||
'image',
|
||||
'button',
|
||||
'radio',
|
||||
'checkbox'
|
||||
]);
|
||||
|
||||
export const is_interactive_element: (element: Element) => boolean = function (
|
||||
element
|
||||
) {
|
||||
if (element.name === 'details') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (element.name === 'summary') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (element.name === 'a') {
|
||||
return element.attributes.some((attr) => attr.name === 'href');
|
||||
}
|
||||
|
||||
if (element.name === 'button') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (element.name === 'input') {
|
||||
const typeValue = element.attributes.find((attr) => attr.name === 'type');
|
||||
if (typeValue) {
|
||||
return interactiveInputTypes.has((typeValue.get_static_value() || '').toString());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (element.name === 'option') {
|
||||
return element.attributes.some((attr) => attr.name === 'value');
|
||||
}
|
||||
|
||||
if (element.name === 'dialog') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
Loading…
Reference in new issue