|
1 | 1 | import { newE2EPage } from "@stencil/core/testing";
|
2 | 2 | import { renders, hidden } from "../../tests/commonTests";
|
| 3 | +import { isElementFocused } from "../../tests/utils"; |
| 4 | +import { html } from "../../../support/formatting"; |
3 | 5 |
|
4 | 6 | describe("calcite-label", () => {
|
5 | 7 | describe("renders", () => {
|
@@ -145,6 +147,28 @@ describe("calcite-label", () => {
|
145 | 147 | expect(element).toEqualAttribute("layout", "inline-space-between");
|
146 | 148 | });
|
147 | 149 |
|
| 150 | + it("should not focus on the slotted form element when a label's text is selected", async () => { |
| 151 | + const page = await newE2EPage(); |
| 152 | + await page.setContent(html` |
| 153 | + <calcite-label layout="inline-space-between"> |
| 154 | + Label text |
| 155 | + <calcite-input></calcite-input> |
| 156 | + </calcite-label> |
| 157 | + `); |
| 158 | + |
| 159 | + await page.$eval("calcite-label", (el) => { |
| 160 | + const selection = window.getSelection(); |
| 161 | + selection.removeAllRanges(); |
| 162 | + const range = document.createRange(); |
| 163 | + range.selectNode(el); |
| 164 | + selection.addRange(range); |
| 165 | + el.click(); |
| 166 | + }); |
| 167 | + await page.waitForChanges(); |
| 168 | + |
| 169 | + expect(await isElementFocused(page, "calcite-input")).toBe(false); |
| 170 | + }); |
| 171 | + |
148 | 172 | // TODO: need shadow DOM equivalent update on helper
|
149 | 173 | it("clicking sibling label focuses input when both are inside a shadowRoot", async () => {
|
150 | 174 | const page = await newE2EPage();
|
|
0 commit comments