- From: Christophe Garcia <notifications@github.com>
- Date: Wed, 24 Jan 2024 06:01:56 -0800
- To: WICG/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <WICG/webcomponents/issues/1046@github.com>
I've created a simple web component that lets you create a custom button.
When clicked, I want the page title to be focused.
With button tag and a simple text content inside, the title is not visually focused. Same with my web component (in slot). That's cool.
With button tag and a tag span inside, the title is not visually focused. But, the title is visually focused with my web component (in slot). That's not cool.
I don't understand why the title is visually focused (which I don't want it to be), when I click on the lightDom element (e.g. the span). This doesn't happen when I click on my component directly (the shadowDOM part).
I expect my title to be focus but not visible-focus, without hiding by forcing.
I tried to look at this thread too: [Why is focus-visible applied on page load](https://stackoverflow.com/questions/72245017/why-is-focus-visible-applied-on-page-load)
```js
// Template web component
const template = document.createElement('template');
template.innerHTML = `
<style>
button {
background-color: lightgreen;
padding: 10px;
}
</style>
<button>
<slot></slot>
</button>`;
// Class web component
class MyBtn extends HTMLElement {
constructor() {
super();
this.attachShadow({
mode: 'open'
});
this.shadowRoot.appendChild(template.content.cloneNode(true));
}
}
// web component definition
window.customElements.define('my-btn', MyBtn);
// Set focus to title on click
function focusTitle() {
const h1 = document.getElementById('title');
h1.setAttribute('tabindex', -1);
h1.focus();
}
// Add click event listener
document.getElementById('btn1').addEventListener('click', focusTitle);
document.getElementById('btn2').addEventListener('click', focusTitle);
```
```html
<h1 id="title">Test redirection focus</h1>
<button id="btn1" style="padding: 10px">
<span>(button > span) Click me and I don't visually focus title</span>
(button > simple text content) Click me and I don't visually focus title
</button>
<my-btn id="btn2">
<span>(MyBtn > span) Click me and I DO visually focus title</span>
(MyBtn > simple text content) Click me and I don't visually focus title
</my-btn>
```
--
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/1046
You are receiving this because you are subscribed to this thread.
Message ID: <WICG/webcomponents/issues/1046@github.com>
Received on Wednesday, 24 January 2024 14:02:03 UTC