@spectrum-web-components/checkbox 0.49.0-beta.0 → 0.49.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -6
- package/test/checkbox.test.js +50 -50
- package/test/checkbox.test.js.map +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/checkbox",
|
|
3
|
-
"version": "0.49.0-beta.
|
|
3
|
+
"version": "0.49.0-beta.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"lit-html"
|
|
66
66
|
],
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@spectrum-web-components/base": "^0.49.0-beta.
|
|
69
|
-
"@spectrum-web-components/icon": "^0.49.0-beta.
|
|
70
|
-
"@spectrum-web-components/icons-ui": "^0.49.0-beta.
|
|
71
|
-
"@spectrum-web-components/shared": "^0.49.0-beta.
|
|
68
|
+
"@spectrum-web-components/base": "^0.49.0-beta.1",
|
|
69
|
+
"@spectrum-web-components/icon": "^0.49.0-beta.1",
|
|
70
|
+
"@spectrum-web-components/icons-ui": "^0.49.0-beta.1",
|
|
71
|
+
"@spectrum-web-components/shared": "^0.49.0-beta.1"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@spectrum-css/checkbox": "^9.1.1"
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"./sp-*.js",
|
|
80
80
|
"./**/*.dev.js"
|
|
81
81
|
],
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "74ee2c5b1276e8e4f768566a1c3c4e263a7eb8b3"
|
|
83
83
|
}
|
package/test/checkbox.test.js
CHANGED
|
@@ -34,32 +34,30 @@ function labelNodeForCheckbox(checkbox) {
|
|
|
34
34
|
describe("Checkbox", () => {
|
|
35
35
|
let testFixture;
|
|
36
36
|
beforeEach(async () => {
|
|
37
|
-
testFixture = await fixture(
|
|
38
|
-
|
|
39
|
-
<div>
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</sp-checkbox>
|
|
59
|
-
</div>
|
|
37
|
+
testFixture = await fixture(html`
|
|
38
|
+
<div>
|
|
39
|
+
<div id="test-checkbox">
|
|
40
|
+
<sp-checkbox id="checkbox0" tabindex="5">
|
|
41
|
+
Component
|
|
42
|
+
</sp-checkbox>
|
|
43
|
+
<sp-checkbox id="checkbox1" tabindex="2" checked>
|
|
44
|
+
Check 1
|
|
45
|
+
</sp-checkbox>
|
|
46
|
+
<sp-checkbox id="checkbox2" tabindex="3" disabled>
|
|
47
|
+
Check 2
|
|
48
|
+
</sp-checkbox>
|
|
49
|
+
<sp-checkbox id="checkbox3" tabindex="1" autofocus>
|
|
50
|
+
Check 3
|
|
51
|
+
</sp-checkbox>
|
|
52
|
+
<sp-checkbox id="checkbox4" tabindex="0">
|
|
53
|
+
Check 4
|
|
54
|
+
</sp-checkbox>
|
|
55
|
+
<sp-checkbox id="checkbox5" tabindex="-1">
|
|
56
|
+
Check 5
|
|
57
|
+
</sp-checkbox>
|
|
60
58
|
</div>
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
</div>
|
|
60
|
+
`);
|
|
63
61
|
});
|
|
64
62
|
it("loads", async () => {
|
|
65
63
|
const el = testFixture.querySelector("sp-checkbox");
|
|
@@ -69,18 +67,14 @@ describe("Checkbox", () => {
|
|
|
69
67
|
expect(content).to.equal("Component");
|
|
70
68
|
});
|
|
71
69
|
testForLitDevWarnings(
|
|
72
|
-
async () => await fixture(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
`
|
|
76
|
-
)
|
|
70
|
+
async () => await fixture(html`
|
|
71
|
+
<sp-checkbox>Not Checked</sp-checkbox>
|
|
72
|
+
`)
|
|
77
73
|
);
|
|
78
74
|
it("loads default checkbox accessibly", async () => {
|
|
79
|
-
const el = await fixture(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
`
|
|
83
|
-
);
|
|
75
|
+
const el = await fixture(html`
|
|
76
|
+
<sp-checkbox>Not Checked</sp-checkbox>
|
|
77
|
+
`);
|
|
84
78
|
await elementUpdated(el);
|
|
85
79
|
await expect(el).to.be.accessible();
|
|
86
80
|
const labelEl = labelForCheckbox(el);
|
|
@@ -100,11 +94,9 @@ describe("Checkbox", () => {
|
|
|
100
94
|
).to.not.be.null;
|
|
101
95
|
});
|
|
102
96
|
it("loads `checked` checkbox accessibly", async () => {
|
|
103
|
-
const el = await fixture(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
`
|
|
107
|
-
);
|
|
97
|
+
const el = await fixture(html`
|
|
98
|
+
<sp-checkbox checked>Checked</sp-checkbox>
|
|
99
|
+
`);
|
|
108
100
|
await elementUpdated(el);
|
|
109
101
|
await expect(el).to.be.accessible();
|
|
110
102
|
const labelEl = labelForCheckbox(el);
|
|
@@ -124,11 +116,9 @@ describe("Checkbox", () => {
|
|
|
124
116
|
).to.not.be.null;
|
|
125
117
|
});
|
|
126
118
|
it("is `invalid` checkbox accessibly", async () => {
|
|
127
|
-
const el = await fixture(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
`
|
|
131
|
-
);
|
|
119
|
+
const el = await fixture(html`
|
|
120
|
+
<sp-checkbox invalid>Invalid Not Checked</sp-checkbox>
|
|
121
|
+
`);
|
|
132
122
|
await elementUpdated(el);
|
|
133
123
|
await expect(el).to.be.accessible();
|
|
134
124
|
const labelEl = labelForCheckbox(el);
|
|
@@ -149,11 +139,9 @@ describe("Checkbox", () => {
|
|
|
149
139
|
expect(document.activeElement).to.not.equal(autoElement);
|
|
150
140
|
});
|
|
151
141
|
it("`click()`ing host clicks `focusElement`", async () => {
|
|
152
|
-
const el = await fixture(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
`
|
|
156
|
-
);
|
|
142
|
+
const el = await fixture(html`
|
|
143
|
+
<sp-checkbox checked autofocus>Checked</sp-checkbox>
|
|
144
|
+
`);
|
|
157
145
|
await elementUpdated(el);
|
|
158
146
|
expect(el.checked, "checked initially").to.be.true;
|
|
159
147
|
el.click();
|
|
@@ -294,5 +282,17 @@ describe("Checkbox", () => {
|
|
|
294
282
|
partialCheckmarkLocalname
|
|
295
283
|
);
|
|
296
284
|
});
|
|
285
|
+
it("updates tabindex when no longer disabled", async function() {
|
|
286
|
+
const el = await fixture(html`
|
|
287
|
+
<sp-checkbox disabled>disabled checkbox</sp-checkbox>
|
|
288
|
+
`);
|
|
289
|
+
el.click();
|
|
290
|
+
await elementUpdated(el);
|
|
291
|
+
expect(el.checked).to.be.false;
|
|
292
|
+
expect(el.tabIndex).to.equal(-1);
|
|
293
|
+
el.removeAttribute("disabled");
|
|
294
|
+
await elementUpdated(el);
|
|
295
|
+
expect(el.tabIndex).to.equal(0);
|
|
296
|
+
});
|
|
297
297
|
});
|
|
298
298
|
//# sourceMappingURL=checkbox.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["checkbox.test.ts"],
|
|
4
|
-
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '@spectrum-web-components/checkbox/sp-checkbox.js';\nimport { Checkbox } from '../';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n triggerBlurFor,\n waitUntil,\n} from '@open-wc/testing';\nimport '@spectrum-web-components/shared/src/focus-visible.js';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\nimport { a11ySnapshot, findAccessibilityNode } from '@web/test-runner-commands';\n\nfunction inputForCheckbox(checkbox: Checkbox): HTMLInputElement {\n if (!checkbox.shadowRoot) throw new Error('No shadowRoot');\n return checkbox.shadowRoot.querySelector('#input') as HTMLInputElement;\n}\n\nfunction labelForCheckbox(checkbox: Checkbox): HTMLLabelElement {\n if (!checkbox.shadowRoot) throw new Error('No shadowRoot');\n const labelEl = checkbox.shadowRoot.querySelector('label');\n if (!labelEl) {\n throw new Error('Failed to find label in shadowRoot');\n }\n return labelEl;\n}\n\nfunction labelNodeForCheckbox(checkbox: Checkbox): Node {\n if (!checkbox.shadowRoot) throw new Error('No shadowRoot');\n const slotEl = checkbox.shadowRoot.querySelector('slot');\n if (!slotEl) {\n throw new Error('Failed to find slot in shadowRoot');\n }\n return slotEl.assignedNodes()[0];\n}\ndescribe('Checkbox', () => {\n let testFixture: HTMLDivElement;\n\n beforeEach(async () => {\n testFixture = await fixture<HTMLDivElement>(\n html`\n <div>\n <div id=\"test-checkbox\">\n <sp-checkbox id=\"checkbox0\" tabindex=\"5\">\n Component\n </sp-checkbox>\n <sp-checkbox id=\"checkbox1\" tabindex=\"2\" checked>\n Check 1\n </sp-checkbox>\n <sp-checkbox id=\"checkbox2\" tabindex=\"3\" disabled>\n Check 2\n </sp-checkbox>\n <sp-checkbox id=\"checkbox3\" tabindex=\"1\" autofocus>\n Check 3\n </sp-checkbox>\n <sp-checkbox id=\"checkbox4\" tabindex=\"0\">\n Check 4\n </sp-checkbox>\n <sp-checkbox id=\"checkbox5\" tabindex=\"-1\">\n Check 5\n </sp-checkbox>\n </div>\n </div>\n `\n );\n });\n\n it('loads', async () => {\n const el = testFixture.querySelector('sp-checkbox') as Checkbox;\n expect(el).to.not.equal(undefined);\n const textNode = labelNodeForCheckbox(el);\n const content = (textNode.textContent || '').trim();\n expect(content).to.equal('Component');\n });\n testForLitDevWarnings(\n async () =>\n await fixture<Checkbox>(\n html`\n <sp-checkbox>Not Checked</sp-checkbox>\n `\n )\n );\n\n it('loads default checkbox accessibly', async () => {\n const el = await fixture<Checkbox>(\n html`\n <sp-checkbox>Not Checked</sp-checkbox>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n\n const labelEl = labelForCheckbox(el);\n const inputEl = inputForCheckbox(el);\n\n expect(labelEl.getAttribute('for')).to.equal(inputEl.id);\n expect(inputEl.checked).to.be.false;\n expect(inputEl.indeterminate).to.be.false;\n\n type NamedRoledAndCheckedNode = {\n name: string;\n role: string;\n checked: boolean;\n };\n const snapshot = (await a11ySnapshot(\n {}\n )) as unknown as NamedRoledAndCheckedNode & {\n children: NamedRoledAndCheckedNode[];\n };\n expect(\n findAccessibilityNode<NamedRoledAndCheckedNode>(\n snapshot,\n (node) =>\n node.role === 'checkbox' &&\n !node.checked &&\n node.name === 'Not Checked'\n ),\n 'Has a named and not checked \"checkbox\" element'\n ).to.not.be.null;\n });\n\n it('loads `checked` checkbox accessibly', async () => {\n const el = await fixture<Checkbox>(\n html`\n <sp-checkbox checked>Checked</sp-checkbox>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n\n const labelEl = labelForCheckbox(el);\n const inputEl = inputForCheckbox(el);\n\n expect(labelEl.getAttribute('for')).to.equal(inputEl.id);\n expect(inputEl.checked).to.be.true;\n expect(inputEl.indeterminate).to.be.false;\n\n type NamedRoledAndCheckedNode = {\n name: string;\n role: string;\n checked: boolean;\n };\n const snapshot = (await a11ySnapshot(\n {}\n )) as unknown as NamedRoledAndCheckedNode & {\n children: NamedRoledAndCheckedNode[];\n };\n expect(\n findAccessibilityNode<NamedRoledAndCheckedNode>(\n snapshot,\n (node) =>\n node.role === 'checkbox' &&\n node.checked &&\n node.name === 'Checked'\n ),\n 'Has a named and checked \"checkbox\" element'\n ).to.not.be.null;\n });\n\n it('is `invalid` checkbox accessibly', async () => {\n const el = await fixture<Checkbox>(\n html`\n <sp-checkbox invalid>Invalid Not Checked</sp-checkbox>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n\n const labelEl = labelForCheckbox(el);\n const inputEl = inputForCheckbox(el);\n\n expect(labelEl.getAttribute('for')).to.equal(inputEl.id);\n expect(inputEl).to.have.attribute('aria-invalid', 'true');\n });\n\n it('autofocuses', async () => {\n const autoElement = testFixture.querySelector(\n 'sp-checkbox[autofocus]'\n ) as Checkbox;\n\n expect(autoElement).to.exist;\n await waitUntil(\n () => document.activeElement === autoElement,\n 'Autofocused'\n );\n\n await triggerBlurFor(autoElement);\n\n expect(document.activeElement).to.not.equal(autoElement);\n });\n\n it('`click()`ing host clicks `focusElement`', async () => {\n const el = await fixture<Checkbox>(\n html`\n <sp-checkbox checked autofocus>Checked</sp-checkbox>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.checked, 'checked initially').to.be.true;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked, 'unchecked').to.be.false;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked, 'checked again').to.be.true;\n });\n\n it('respects checked attribute', () => {\n let el = testFixture.querySelector('#checkbox0') as Checkbox;\n expect(el.checked).to.be.false;\n\n el = testFixture.querySelector('#checkbox1') as Checkbox;\n expect(el.checked).to.be.true;\n });\n\n it('has name attribute', () => {\n let el = testFixture.querySelector('#checkbox0') as Checkbox;\n\n el = testFixture.querySelector('#checkbox1') as Checkbox;\n expect(el.hasAttribute('name'));\n expect(el.name).to.be.undefined;\n el.setAttribute('name', 'test');\n expect(el.name).to.be.equal('test');\n });\n\n it('handles click events', async () => {\n const el = testFixture.querySelector('#checkbox1') as Checkbox;\n expect(el.checked).to.be.true;\n\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.false;\n });\n\n it('can have `change` events cancelled', async () => {\n const el = testFixture.querySelector('#checkbox0') as Checkbox;\n await elementUpdated(el);\n expect(el.checked).to.be.false;\n\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n\n el.addEventListener('change', (event: Event) => event.preventDefault());\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n });\n it('should recognize readonly property', async () => {\n const el: Checkbox = await fixture('<sp-checkbox></sp-checkbox>');\n expect(el.readonly).to.not.throw;\n expect(el.readonly).to.be.a('boolean');\n });\n it('maintains its value when [readonly]', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox id=\"checkbox0\" checked readonly>Component</sp-checkbox>\n `);\n expect(el.checked).to.be.true;\n\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n });\n\n it('`indeterminate, checked` becomes `not checked` on click', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox checked .indeterminate=${true}>\n indeterminate, checked\n </sp-checkbox>\n `);\n expect(el.checked).to.be.true;\n expect(el.indeterminate).to.be.true;\n\n const inputEl = inputForCheckbox(el);\n expect(inputEl.checked).to.be.true;\n expect(inputEl.indeterminate).to.be.true;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.false;\n expect(el.indeterminate).to.be.false;\n expect(inputEl.checked).to.be.false;\n expect(inputEl.indeterminate).to.be.false;\n });\n\n it('`indeterminate, not checked` becomes `checked` on click', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox .indeterminate=${true}>\n indeterminate, checked\n </sp-checkbox>\n `);\n expect(el.checked).to.be.false;\n expect(el.indeterminate).to.be.true;\n\n const inputEl = inputForCheckbox(el);\n expect(inputEl.checked).to.be.false;\n expect(inputEl.indeterminate).to.be.true;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n expect(el.indeterminate).to.be.false;\n expect(inputEl.checked).to.be.true;\n expect(inputEl.indeterminate).to.be.false;\n });\n\n it('updates checkmark icons in response to size', async function () {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox checked>sizes checkbox</sp-checkbox>\n `);\n\n const getCheckmarkLocalName = (): string => {\n return (el.shadowRoot.querySelector('#checkmark') as HTMLElement)\n .localName;\n };\n\n expect(el.size).to.equal('m');\n let checkmarkLocalname = getCheckmarkLocalName();\n el.size = 's';\n await elementUpdated(el);\n expect(getCheckmarkLocalName()).to.not.equal(checkmarkLocalname);\n\n checkmarkLocalname = getCheckmarkLocalName();\n el.size = 'l';\n await elementUpdated(el);\n expect(getCheckmarkLocalName()).to.not.equal(checkmarkLocalname);\n\n checkmarkLocalname = getCheckmarkLocalName();\n el.size = 'xl';\n await elementUpdated(el);\n expect(getCheckmarkLocalName()).to.not.equal(checkmarkLocalname);\n });\n\n it('updates partialCheckmark icons in response to size', async function () {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox indeterminate>sizes checkbox</sp-checkbox>\n `);\n\n const getPartialCheckmarkLocalName = (): string => {\n return (\n el.shadowRoot.querySelector('#partialCheckmark') as HTMLElement\n ).localName;\n };\n\n expect(el.size).to.equal('m');\n let partialCheckmarkLocalname = getPartialCheckmarkLocalName();\n el.size = 's';\n await elementUpdated(el);\n expect(getPartialCheckmarkLocalName()).to.not.equal(\n partialCheckmarkLocalname\n );\n\n partialCheckmarkLocalname = getPartialCheckmarkLocalName();\n el.size = 'l';\n await elementUpdated(el);\n expect(getPartialCheckmarkLocalName()).to.not.equal(\n partialCheckmarkLocalname\n );\n\n partialCheckmarkLocalname = getPartialCheckmarkLocalName();\n el.size = 'xl';\n await elementUpdated(el);\n expect(getPartialCheckmarkLocalName()).to.not.equal(\n partialCheckmarkLocalname\n );\n });\n});\n"],
|
|
5
|
-
"mappings": ";AAYA,OAAO;AAEP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,OAAO;AACP,SAAS,6BAA6B;AACtC,SAAS,cAAc,6BAA6B;AAEpD,SAAS,iBAAiB,UAAsC;AAC5D,MAAI,CAAC,SAAS,WAAY,OAAM,IAAI,MAAM,eAAe;AACzD,SAAO,SAAS,WAAW,cAAc,QAAQ;AACrD;AAEA,SAAS,iBAAiB,UAAsC;AAC5D,MAAI,CAAC,SAAS,WAAY,OAAM,IAAI,MAAM,eAAe;AACzD,QAAM,UAAU,SAAS,WAAW,cAAc,OAAO;AACzD,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACxD;AACA,SAAO;AACX;AAEA,SAAS,qBAAqB,UAA0B;AACpD,MAAI,CAAC,SAAS,WAAY,OAAM,IAAI,MAAM,eAAe;AACzD,QAAM,SAAS,SAAS,WAAW,cAAc,MAAM;AACvD,MAAI,CAAC,QAAQ;AACT,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,SAAO,OAAO,cAAc,EAAE,CAAC;AACnC;AACA,SAAS,YAAY,MAAM;AACvB,MAAI;AAEJ,aAAW,YAAY;AACnB,kBAAc,MAAM
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '@spectrum-web-components/checkbox/sp-checkbox.js';\nimport { Checkbox } from '../';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n triggerBlurFor,\n waitUntil,\n} from '@open-wc/testing';\nimport '@spectrum-web-components/shared/src/focus-visible.js';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\nimport { a11ySnapshot, findAccessibilityNode } from '@web/test-runner-commands';\n\nfunction inputForCheckbox(checkbox: Checkbox): HTMLInputElement {\n if (!checkbox.shadowRoot) throw new Error('No shadowRoot');\n return checkbox.shadowRoot.querySelector('#input') as HTMLInputElement;\n}\n\nfunction labelForCheckbox(checkbox: Checkbox): HTMLLabelElement {\n if (!checkbox.shadowRoot) throw new Error('No shadowRoot');\n const labelEl = checkbox.shadowRoot.querySelector('label');\n if (!labelEl) {\n throw new Error('Failed to find label in shadowRoot');\n }\n return labelEl;\n}\n\nfunction labelNodeForCheckbox(checkbox: Checkbox): Node {\n if (!checkbox.shadowRoot) throw new Error('No shadowRoot');\n const slotEl = checkbox.shadowRoot.querySelector('slot');\n if (!slotEl) {\n throw new Error('Failed to find slot in shadowRoot');\n }\n return slotEl.assignedNodes()[0];\n}\ndescribe('Checkbox', () => {\n let testFixture: HTMLDivElement;\n\n beforeEach(async () => {\n testFixture = await fixture<HTMLDivElement>(html`\n <div>\n <div id=\"test-checkbox\">\n <sp-checkbox id=\"checkbox0\" tabindex=\"5\">\n Component\n </sp-checkbox>\n <sp-checkbox id=\"checkbox1\" tabindex=\"2\" checked>\n Check 1\n </sp-checkbox>\n <sp-checkbox id=\"checkbox2\" tabindex=\"3\" disabled>\n Check 2\n </sp-checkbox>\n <sp-checkbox id=\"checkbox3\" tabindex=\"1\" autofocus>\n Check 3\n </sp-checkbox>\n <sp-checkbox id=\"checkbox4\" tabindex=\"0\">\n Check 4\n </sp-checkbox>\n <sp-checkbox id=\"checkbox5\" tabindex=\"-1\">\n Check 5\n </sp-checkbox>\n </div>\n </div>\n `);\n });\n\n it('loads', async () => {\n const el = testFixture.querySelector('sp-checkbox') as Checkbox;\n expect(el).to.not.equal(undefined);\n const textNode = labelNodeForCheckbox(el);\n const content = (textNode.textContent || '').trim();\n expect(content).to.equal('Component');\n });\n testForLitDevWarnings(\n async () =>\n await fixture<Checkbox>(html`\n <sp-checkbox>Not Checked</sp-checkbox>\n `)\n );\n\n it('loads default checkbox accessibly', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox>Not Checked</sp-checkbox>\n `);\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n\n const labelEl = labelForCheckbox(el);\n const inputEl = inputForCheckbox(el);\n\n expect(labelEl.getAttribute('for')).to.equal(inputEl.id);\n expect(inputEl.checked).to.be.false;\n expect(inputEl.indeterminate).to.be.false;\n\n type NamedRoledAndCheckedNode = {\n name: string;\n role: string;\n checked: boolean;\n };\n const snapshot = (await a11ySnapshot(\n {}\n )) as unknown as NamedRoledAndCheckedNode & {\n children: NamedRoledAndCheckedNode[];\n };\n expect(\n findAccessibilityNode<NamedRoledAndCheckedNode>(\n snapshot,\n (node) =>\n node.role === 'checkbox' &&\n !node.checked &&\n node.name === 'Not Checked'\n ),\n 'Has a named and not checked \"checkbox\" element'\n ).to.not.be.null;\n });\n\n it('loads `checked` checkbox accessibly', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox checked>Checked</sp-checkbox>\n `);\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n\n const labelEl = labelForCheckbox(el);\n const inputEl = inputForCheckbox(el);\n\n expect(labelEl.getAttribute('for')).to.equal(inputEl.id);\n expect(inputEl.checked).to.be.true;\n expect(inputEl.indeterminate).to.be.false;\n\n type NamedRoledAndCheckedNode = {\n name: string;\n role: string;\n checked: boolean;\n };\n const snapshot = (await a11ySnapshot(\n {}\n )) as unknown as NamedRoledAndCheckedNode & {\n children: NamedRoledAndCheckedNode[];\n };\n expect(\n findAccessibilityNode<NamedRoledAndCheckedNode>(\n snapshot,\n (node) =>\n node.role === 'checkbox' &&\n node.checked &&\n node.name === 'Checked'\n ),\n 'Has a named and checked \"checkbox\" element'\n ).to.not.be.null;\n });\n\n it('is `invalid` checkbox accessibly', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox invalid>Invalid Not Checked</sp-checkbox>\n `);\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n\n const labelEl = labelForCheckbox(el);\n const inputEl = inputForCheckbox(el);\n\n expect(labelEl.getAttribute('for')).to.equal(inputEl.id);\n expect(inputEl).to.have.attribute('aria-invalid', 'true');\n });\n\n it('autofocuses', async () => {\n const autoElement = testFixture.querySelector(\n 'sp-checkbox[autofocus]'\n ) as Checkbox;\n\n expect(autoElement).to.exist;\n await waitUntil(\n () => document.activeElement === autoElement,\n 'Autofocused'\n );\n\n await triggerBlurFor(autoElement);\n\n expect(document.activeElement).to.not.equal(autoElement);\n });\n\n it('`click()`ing host clicks `focusElement`', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox checked autofocus>Checked</sp-checkbox>\n `);\n\n await elementUpdated(el);\n\n expect(el.checked, 'checked initially').to.be.true;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked, 'unchecked').to.be.false;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked, 'checked again').to.be.true;\n });\n\n it('respects checked attribute', () => {\n let el = testFixture.querySelector('#checkbox0') as Checkbox;\n expect(el.checked).to.be.false;\n\n el = testFixture.querySelector('#checkbox1') as Checkbox;\n expect(el.checked).to.be.true;\n });\n\n it('has name attribute', () => {\n let el = testFixture.querySelector('#checkbox0') as Checkbox;\n\n el = testFixture.querySelector('#checkbox1') as Checkbox;\n expect(el.hasAttribute('name'));\n expect(el.name).to.be.undefined;\n el.setAttribute('name', 'test');\n expect(el.name).to.be.equal('test');\n });\n\n it('handles click events', async () => {\n const el = testFixture.querySelector('#checkbox1') as Checkbox;\n expect(el.checked).to.be.true;\n\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.false;\n });\n\n it('can have `change` events cancelled', async () => {\n const el = testFixture.querySelector('#checkbox0') as Checkbox;\n await elementUpdated(el);\n expect(el.checked).to.be.false;\n\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n\n el.addEventListener('change', (event: Event) => event.preventDefault());\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n });\n it('should recognize readonly property', async () => {\n const el: Checkbox = await fixture('<sp-checkbox></sp-checkbox>');\n expect(el.readonly).to.not.throw;\n expect(el.readonly).to.be.a('boolean');\n });\n it('maintains its value when [readonly]', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox id=\"checkbox0\" checked readonly>Component</sp-checkbox>\n `);\n expect(el.checked).to.be.true;\n\n inputForCheckbox(el).click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n });\n\n it('`indeterminate, checked` becomes `not checked` on click', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox checked .indeterminate=${true}>\n indeterminate, checked\n </sp-checkbox>\n `);\n expect(el.checked).to.be.true;\n expect(el.indeterminate).to.be.true;\n\n const inputEl = inputForCheckbox(el);\n expect(inputEl.checked).to.be.true;\n expect(inputEl.indeterminate).to.be.true;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.false;\n expect(el.indeterminate).to.be.false;\n expect(inputEl.checked).to.be.false;\n expect(inputEl.indeterminate).to.be.false;\n });\n\n it('`indeterminate, not checked` becomes `checked` on click', async () => {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox .indeterminate=${true}>\n indeterminate, checked\n </sp-checkbox>\n `);\n expect(el.checked).to.be.false;\n expect(el.indeterminate).to.be.true;\n\n const inputEl = inputForCheckbox(el);\n expect(inputEl.checked).to.be.false;\n expect(inputEl.indeterminate).to.be.true;\n\n el.click();\n await elementUpdated(el);\n\n expect(el.checked).to.be.true;\n expect(el.indeterminate).to.be.false;\n expect(inputEl.checked).to.be.true;\n expect(inputEl.indeterminate).to.be.false;\n });\n\n it('updates checkmark icons in response to size', async function () {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox checked>sizes checkbox</sp-checkbox>\n `);\n\n const getCheckmarkLocalName = (): string => {\n return (el.shadowRoot.querySelector('#checkmark') as HTMLElement)\n .localName;\n };\n\n expect(el.size).to.equal('m');\n let checkmarkLocalname = getCheckmarkLocalName();\n el.size = 's';\n await elementUpdated(el);\n expect(getCheckmarkLocalName()).to.not.equal(checkmarkLocalname);\n\n checkmarkLocalname = getCheckmarkLocalName();\n el.size = 'l';\n await elementUpdated(el);\n expect(getCheckmarkLocalName()).to.not.equal(checkmarkLocalname);\n\n checkmarkLocalname = getCheckmarkLocalName();\n el.size = 'xl';\n await elementUpdated(el);\n expect(getCheckmarkLocalName()).to.not.equal(checkmarkLocalname);\n });\n\n it('updates partialCheckmark icons in response to size', async function () {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox indeterminate>sizes checkbox</sp-checkbox>\n `);\n\n const getPartialCheckmarkLocalName = (): string => {\n return (\n el.shadowRoot.querySelector('#partialCheckmark') as HTMLElement\n ).localName;\n };\n\n expect(el.size).to.equal('m');\n let partialCheckmarkLocalname = getPartialCheckmarkLocalName();\n el.size = 's';\n await elementUpdated(el);\n expect(getPartialCheckmarkLocalName()).to.not.equal(\n partialCheckmarkLocalname\n );\n\n partialCheckmarkLocalname = getPartialCheckmarkLocalName();\n el.size = 'l';\n await elementUpdated(el);\n expect(getPartialCheckmarkLocalName()).to.not.equal(\n partialCheckmarkLocalname\n );\n\n partialCheckmarkLocalname = getPartialCheckmarkLocalName();\n el.size = 'xl';\n await elementUpdated(el);\n expect(getPartialCheckmarkLocalName()).to.not.equal(\n partialCheckmarkLocalname\n );\n });\n\n it('updates tabindex when no longer disabled', async function () {\n const el = await fixture<Checkbox>(html`\n <sp-checkbox disabled>disabled checkbox</sp-checkbox>\n `);\n el.click();\n await elementUpdated(el);\n expect(el.checked).to.be.false;\n expect(el.tabIndex).to.equal(-1);\n el.removeAttribute('disabled');\n await elementUpdated(el);\n expect(el.tabIndex).to.equal(0);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|