| <!DOCTYPE html> | |
| <title>Focusability of form-associated custom elements</title> | |
| <link rel="author" title="Michael[tm] Smith" href="mailto:mike@w3.org"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <x-foo></x-foo> | |
| <x-bar tabindex=0></x-bar> | |
| <x-baz tabindex=0 disabled></x-baz> | |
| <script> | |
| test(() => { | |
| customElements.define( | |
| 'x-foo', | |
| class Foo extends HTMLElement { | |
| static formAssociated = true; | |
| } | |
| ); | |
| const foo = document.querySelector('x-foo'); | |
| foo.focus(); | |
| assert_false(document.activeElement === foo, | |
| "FACE without tabindex is not focusable."); | |
| customElements.define( | |
| 'x-bar', | |
| class bar extends HTMLElement { | |
| static formAssociated = true; | |
| } | |
| ); | |
| const bar = document.querySelector('x-bar'); | |
| bar.focus(); | |
| assert_true(document.activeElement === bar, | |
| "FACE with tabindex is focusable."); | |
| customElements.define( | |
| 'x-baz', | |
| class baz extends HTMLElement { | |
| static formAssociated = true; | |
| } | |
| ); | |
| const baz = document.querySelector('x-baz'); | |
| baz.focus(); | |
| assert_false(document.activeElement === baz, | |
| "Disabled FACE with tabindex is not focusable."); | |
| }); | |
| </script> | |
| </html> |