@spectrum-web-components/sidenav 0.12.15-devmode.0 → 0.13.0-devmode.0

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.
@@ -4,7 +4,7 @@
4
4
  "modules": [
5
5
  {
6
6
  "kind": "javascript-module",
7
- "path": "sp-sidenav-heading.ts",
7
+ "path": "sp-sidenav-heading.js",
8
8
  "declarations": [],
9
9
  "exports": [
10
10
  {
@@ -19,7 +19,7 @@
19
19
  },
20
20
  {
21
21
  "kind": "javascript-module",
22
- "path": "sp-sidenav-item.ts",
22
+ "path": "sp-sidenav-item.js",
23
23
  "declarations": [],
24
24
  "exports": [
25
25
  {
@@ -34,7 +34,7 @@
34
34
  },
35
35
  {
36
36
  "kind": "javascript-module",
37
- "path": "sp-sidenav.ts",
37
+ "path": "sp-sidenav.js",
38
38
  "declarations": [],
39
39
  "exports": [
40
40
  {
@@ -49,7 +49,7 @@
49
49
  },
50
50
  {
51
51
  "kind": "javascript-module",
52
- "path": "src/Sidenav.ts",
52
+ "path": "src/Sidenav.js",
53
53
  "declarations": [
54
54
  {
55
55
  "kind": "class",
@@ -260,14 +260,14 @@
260
260
  "name": "SideNav",
261
261
  "declaration": {
262
262
  "name": "SideNav",
263
- "module": "src/Sidenav.ts"
263
+ "module": "src/Sidenav.js"
264
264
  }
265
265
  }
266
266
  ]
267
267
  },
268
268
  {
269
269
  "kind": "javascript-module",
270
- "path": "src/SidenavHeading.ts",
270
+ "path": "src/SidenavHeading.js",
271
271
  "declarations": [
272
272
  {
273
273
  "kind": "class",
@@ -316,14 +316,14 @@
316
316
  "name": "SideNavHeading",
317
317
  "declaration": {
318
318
  "name": "SideNavHeading",
319
- "module": "src/SidenavHeading.ts"
319
+ "module": "src/SidenavHeading.js"
320
320
  }
321
321
  }
322
322
  ]
323
323
  },
324
324
  {
325
325
  "kind": "javascript-module",
326
- "path": "src/SidenavItem.ts",
326
+ "path": "src/SidenavItem.js",
327
327
  "declarations": [
328
328
  {
329
329
  "kind": "class",
@@ -543,7 +543,7 @@
543
543
  "name": "SideNavItem",
544
544
  "declaration": {
545
545
  "name": "SideNavItem",
546
- "module": "src/SidenavItem.ts"
546
+ "module": "src/SidenavItem.js"
547
547
  }
548
548
  }
549
549
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/sidenav",
3
- "version": "0.12.15-devmode.0+07474d44f",
3
+ "version": "0.13.0-devmode.0+7b0ea531e",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -75,9 +75,9 @@
75
75
  "lit-html"
76
76
  ],
77
77
  "dependencies": {
78
- "@spectrum-web-components/base": "^0.5.9-devmode.24+07474d44f",
79
- "@spectrum-web-components/reactive-controllers": "^0.2.5-devmode.79+07474d44f",
80
- "@spectrum-web-components/shared": "^0.14.5-devmode.0+07474d44f",
78
+ "@spectrum-web-components/base": "^0.6.0",
79
+ "@spectrum-web-components/reactive-controllers": "^0.2.5",
80
+ "@spectrum-web-components/shared": "^0.15.0-devmode.0+7b0ea531e",
81
81
  "tslib": "^2.0.0"
82
82
  },
83
83
  "devDependencies": {
@@ -86,7 +86,8 @@
86
86
  "types": "./src/index.d.ts",
87
87
  "customElements": "custom-elements.json",
88
88
  "sideEffects": [
89
- "./sp-*.js"
89
+ "./sp-*.js",
90
+ "./**/*.dev.js"
90
91
  ],
91
- "gitHead": "07474d44f6cee1db241b9ccf3dc812514ffbe7fa"
92
+ "gitHead": "7b0ea531e9c7225c8964c5429bc5fd005618b80e"
92
93
  }
@@ -62,9 +62,7 @@ export const Multilevel = ({
62
62
  </sp-sidenav>
63
63
  `;
64
64
  };
65
- Multilevel.story = {
66
- name: "Multi-level"
67
- };
65
+ Multilevel.storyName = "Multi-level";
68
66
  export const levelsAndDisabled = () => {
69
67
  return html`
70
68
  <sp-sidenav>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["sidenav.stories.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*/\nimport { html, TemplateResult } from '@spectrum-web-components/base';\n\nimport '@spectrum-web-components/sidenav/sp-sidenav.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-item.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-heading.js';\n\nexport default {\n component: 'sp-sidenav',\n title: 'Sidenav',\n argTypes: {\n onChange: { action: 'change' },\n },\n};\n\nexport const Default = ({\n onChange,\n}: {\n onChange: () => void;\n}): TemplateResult => {\n return html`\n <sp-sidenav @change=${onChange} value=\"Section 2\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n selected\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 3\"\n label=\"Section 3\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 4\"\n label=\"Section 4\"\n ></sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n\nexport const Multilevel = ({\n onChange,\n}: {\n onChange: () => void;\n}): TemplateResult => {\n return html`\n <sp-sidenav variant=\"multilevel\" value=\"2.3.1\" @change=${onChange}>\n <sp-sidenav-item value=\"foo\" label=\"foo\"></sp-sidenav-item>\n <sp-sidenav-item value=\"baz\" label=\"baz\" expanded>\n <sp-sidenav-item value=\"2.1\" label=\"2.1\"></sp-sidenav-item>\n <sp-sidenav-item value=\"2.2\" label=\"2.2\"></sp-sidenav-item>\n <sp-sidenav-item value=\"2.3\" label=\"2.3\" expanded>\n <sp-sidenav-item\n value=\"2.3.1\"\n label=\"2.3.1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n disabled\n value=\"2.3.2\"\n label=\"2.3.2\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-item>\n <sp-sidenav-item value=\"test\" label=\"test\"></sp-sidenav-item>\n <sp-sidenav-item value=\"hi\" label=\"hi\"></sp-sidenav-item>\n </sp-sidenav>\n `;\n};\n\nMultilevel.story = {\n name: 'Multi-level',\n};\n\nexport const levelsAndDisabled = (): TemplateResult => {\n return html`\n <sp-sidenav>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item value=\"Section 1\">Section 1</sp-sidenav-item>\n <sp-sidenav-item value=\"Section 2\" disabled>\n Section 2\n </sp-sidenav-item>\n <sp-sidenav-item value=\"Section 3\" expanded>\n Section 3\n <sp-sidenav-item value=\"Section 3a\">\n Section 3a\n </sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n\nexport const manageTabIndex = (): TemplateResult => {\n return html`\n <sp-sidenav manage-tab-index>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 0\"\n label=\"Section 0\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n selected\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n disabled\n ></sp-sidenav-item>\n <sp-sidenav-item value=\"Section 3\" label=\"Section 3\">\n <sp-sidenav-item\n value=\"Section 3a\"\n label=\"Section 3a\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n\nexport const Hrefs = ({\n onChange,\n}: {\n onChange: () => void;\n}): TemplateResult => {\n return html`\n <sp-sidenav @change=${onChange} value=\"current\">\n <sp-sidenav-heading label=\"GITHUB\">\n <sp-sidenav-item\n href=${window.location.href}\n label=\"Current\"\n value=\"current\"\n selected\n ></sp-sidenav-item>\n <sp-sidenav-item\n href=\"https://github.com/adobe/spectrum-web-components\"\n label=\"Code\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n href=\"https://github.com/adobe/spectrum-web-components/issues\"\n label=\"Issues\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n href=\"https://github.com/adobe/spectrum-web-components/pulls\"\n label=\"Pull Requests\"\n ></sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n"],
5
- "mappings": "AAWA;AAEA;AACA;AACA;AAEA,eAAe;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,IACN,UAAU,EAAE,QAAQ,SAAS;AAAA,EACjC;AACJ;AAEO,aAAM,UAAU,CAAC;AAAA,EACpB;AAAA,MAGkB;AAClB,SAAO;AAAA,8BACmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsB9B;AAEO,aAAM,aAAa,CAAC;AAAA,EACvB;AAAA,MAGkB;AAClB,SAAO;AAAA,iEACsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBjE;AAEA,WAAW,QAAQ;AAAA,EACf,MAAM;AACV;AAEO,aAAM,oBAAoB,MAAsB;AACnD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBX;AAEO,aAAM,iBAAiB,MAAsB;AAChD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BX;AAEO,aAAM,QAAQ,CAAC;AAAA,EAClB;AAAA,MAGkB;AAClB,SAAO;AAAA,8BACmB;AAAA;AAAA;AAAA,2BAGH,OAAO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoB3C;",
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*/\nimport { html, TemplateResult } from '@spectrum-web-components/base';\n\nimport '@spectrum-web-components/sidenav/sp-sidenav.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-item.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-heading.js';\n\nexport default {\n component: 'sp-sidenav',\n title: 'Sidenav',\n argTypes: {\n onChange: { action: 'change' },\n },\n};\n\nexport const Default = ({\n onChange,\n}: {\n onChange: () => void;\n}): TemplateResult => {\n return html`\n <sp-sidenav @change=${onChange} value=\"Section 2\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n selected\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 3\"\n label=\"Section 3\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 4\"\n label=\"Section 4\"\n ></sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n\nexport const Multilevel = ({\n onChange,\n}: {\n onChange: () => void;\n}): TemplateResult => {\n return html`\n <sp-sidenav variant=\"multilevel\" value=\"2.3.1\" @change=${onChange}>\n <sp-sidenav-item value=\"foo\" label=\"foo\"></sp-sidenav-item>\n <sp-sidenav-item value=\"baz\" label=\"baz\" expanded>\n <sp-sidenav-item value=\"2.1\" label=\"2.1\"></sp-sidenav-item>\n <sp-sidenav-item value=\"2.2\" label=\"2.2\"></sp-sidenav-item>\n <sp-sidenav-item value=\"2.3\" label=\"2.3\" expanded>\n <sp-sidenav-item\n value=\"2.3.1\"\n label=\"2.3.1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n disabled\n value=\"2.3.2\"\n label=\"2.3.2\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-item>\n <sp-sidenav-item value=\"test\" label=\"test\"></sp-sidenav-item>\n <sp-sidenav-item value=\"hi\" label=\"hi\"></sp-sidenav-item>\n </sp-sidenav>\n `;\n};\n\nMultilevel.storyName = 'Multi-level';\n\nexport const levelsAndDisabled = (): TemplateResult => {\n return html`\n <sp-sidenav>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item value=\"Section 1\">Section 1</sp-sidenav-item>\n <sp-sidenav-item value=\"Section 2\" disabled>\n Section 2\n </sp-sidenav-item>\n <sp-sidenav-item value=\"Section 3\" expanded>\n Section 3\n <sp-sidenav-item value=\"Section 3a\">\n Section 3a\n </sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n\nexport const manageTabIndex = (): TemplateResult => {\n return html`\n <sp-sidenav manage-tab-index>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 0\"\n label=\"Section 0\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n selected\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n disabled\n ></sp-sidenav-item>\n <sp-sidenav-item value=\"Section 3\" label=\"Section 3\">\n <sp-sidenav-item\n value=\"Section 3a\"\n label=\"Section 3a\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n\nexport const Hrefs = ({\n onChange,\n}: {\n onChange: () => void;\n}): TemplateResult => {\n return html`\n <sp-sidenav @change=${onChange} value=\"current\">\n <sp-sidenav-heading label=\"GITHUB\">\n <sp-sidenav-item\n href=${window.location.href}\n label=\"Current\"\n value=\"current\"\n selected\n ></sp-sidenav-item>\n <sp-sidenav-item\n href=\"https://github.com/adobe/spectrum-web-components\"\n label=\"Code\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n href=\"https://github.com/adobe/spectrum-web-components/issues\"\n label=\"Issues\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n href=\"https://github.com/adobe/spectrum-web-components/pulls\"\n label=\"Pull Requests\"\n ></sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `;\n};\n"],
5
+ "mappings": "AAWA;AAEA;AACA;AACA;AAEA,eAAe;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,IACN,UAAU,EAAE,QAAQ,SAAS;AAAA,EACjC;AACJ;AAEO,aAAM,UAAU,CAAC;AAAA,EACpB;AAAA,MAGkB;AAClB,SAAO;AAAA,8BACmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsB9B;AAEO,aAAM,aAAa,CAAC;AAAA,EACvB;AAAA,MAGkB;AAClB,SAAO;AAAA,iEACsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBjE;AAEA,WAAW,YAAY;AAEhB,aAAM,oBAAoB,MAAsB;AACnD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBX;AAEO,aAAM,iBAAiB,MAAsB;AAChD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BX;AAEO,aAAM,QAAQ,CAAC;AAAA,EAClB;AAAA,MAGkB;AAClB,SAAO;AAAA,8BACmB;AAAA;AAAA;AAAA,2BAGH,OAAO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoB3C;",
6
6
  "names": []
7
7
  }
@@ -18,7 +18,22 @@ import {
18
18
  import { LitElement } from "@spectrum-web-components/base";
19
19
  import { spy } from "sinon";
20
20
  import { sendMouse } from "../../../test/plugins/browser.js";
21
+ import { testForLitDevWarnings } from "../../../test/testing-helpers.js";
21
22
  describe("Sidenav", () => {
23
+ testForLitDevWarnings(async () => await fixture(html`
24
+ <sp-sidenav>
25
+ <sp-sidenav-heading label="CATEGORY 1">
26
+ <sp-sidenav-item
27
+ value="Section 1"
28
+ label="Section 1"
29
+ ></sp-sidenav-item>
30
+ <sp-sidenav-item
31
+ value="Section 2"
32
+ label="Section 2"
33
+ ></sp-sidenav-item>
34
+ </sp-sidenav-heading>
35
+ </sp-sidenav>
36
+ `));
22
37
  it("loads", async () => {
23
38
  const el = await fixture(html`
24
39
  <sp-sidenav>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["sidenav.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/sidenav/sp-sidenav.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-item.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-heading.js';\nimport { SideNav, SideNavItem } from '@spectrum-web-components/sidenav';\nimport { manageTabIndex } from '../stories/sidenav.stories.js';\nimport {\n arrowDownEvent,\n arrowUpEvent,\n shiftTabEvent,\n} from '../../../test/testing-helpers.js';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n waitUntil,\n} from '@open-wc/testing';\nimport { LitElement, TemplateResult } from '@spectrum-web-components/base';\nimport { spy } from 'sinon';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Sidenav', () => {\n it('loads', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('does not accept focus/click/blur when empty', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav></sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.focus();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.blur();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.click();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n });\n it('does not accept keyboard events when items are not present', async () => {\n const errorSpy = spy();\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n const item = el.querySelector('sp-sidenav-item') as SideNavItem;\n window.addEventListener('error', () => errorSpy());\n\n el.dispatchEvent(new FocusEvent('focusin'));\n item.remove();\n\n await elementUpdated(el);\n el.dispatchEvent(\n new KeyboardEvent('keydown', {\n code: 'ArrowDown',\n })\n );\n\n expect(errorSpy.callCount).to.equal(0);\n });\n it('does not accept focus when all children [disabled]', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-item\n disabled\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n disabled\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.focus();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n expect(el.matches(':focus-within')).to.be.false;\n });\n it('sets manageTabIndex on new children', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n expect(el.manageTabIndex).to.be.false;\n\n const item1 = el.querySelector('sp-sidenav-item') as SideNavItem;\n expect(item1.tabIndex).to.equal(0);\n\n const newItem = document.createElement('sp-sidenav-item');\n newItem.value = 'Section 3';\n newItem.label = 'Section 3';\n el.appendChild(newItem);\n\n await elementUpdated(newItem);\n\n expect(newItem.tabIndex).to.equal(0);\n\n el.focus();\n const focused = document.activeElement as SideNavItem;\n focused.click();\n expect(focused.selected).to.be.true;\n\n el.dispatchEvent(shiftTabEvent());\n const outsideFocused = document.activeElement as HTMLElement;\n\n expect(typeof outsideFocused).not.to.equal(SideNavItem);\n });\n it('handles select', async () => {\n const changeSpy = spy();\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav @change=${() => changeSpy()}>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item value=\"Section 2\" label=\"Section 2\">\n <sp-sidenav-item\n value=\"Section 2a\"\n label=\"Section 2a\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.be.undefined;\n\n const sidenavItem = el.querySelector(\n '[value=\"Section 2\"]'\n ) as SideNavItem;\n sidenavItem.dispatchEvent(\n new CustomEvent('sidenav-select', {\n bubbles: true,\n detail: {\n value: 'Section 2',\n },\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 2');\n expect(changeSpy.callCount).to.equal(1);\n\n sidenavItem.click();\n\n await elementUpdated(sidenavItem);\n\n const sidenavItemChild = el.querySelector(\n '[value=\"Section 2a\"]'\n ) as SideNavItem;\n sidenavItemChild.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 2a');\n expect(changeSpy.callCount).to.equal(2);\n });\n it('prevents selection', async () => {\n const changeSpy = spy();\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav\n @change=${(event: Event) => {\n event.preventDefault();\n changeSpy();\n }}\n >\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n opened\n >\n <sp-sidenav-item\n value=\"Section 2a\"\n label=\"Section 2a\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.be.undefined;\n\n el.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.be.undefined;\n expect(changeSpy.callCount).to.equal(1);\n });\n it('prevents [tabindex=0] while `focusin`', async () => {\n const el = await fixture<SideNav>(manageTabIndex());\n const selected = el.querySelector('[value=\"Section 1\"]') as SideNavItem;\n const toBeSelected = el.querySelector(\n '[value=\"Section 0\"]'\n ) as SideNavItem;\n\n await elementUpdated(el);\n await waitUntil(() => el.value === 'Section 1', 'wait for selection');\n\n expect(el.value).to.equal('Section 1');\n expect(selected.tabIndex, 'initially 0').to.equal(0);\n expect(toBeSelected.tabIndex, 'initially -1').to.equal(-1);\n\n el.focus();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 1');\n expect(selected.tabIndex, '-1 when focusin').to.equal(-1);\n\n el.blur();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 1');\n expect(selected.tabIndex, '0 when blur').to.equal(0);\n\n const bindingRect = toBeSelected.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n bindingRect.x + bindingRect.width / 2,\n bindingRect.y + bindingRect.height / 2,\n ],\n },\n ],\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 0');\n expect(toBeSelected.tabIndex, 'will be new focusable child').to.equal(\n -1\n );\n expect(selected.tabIndex, 'no longer selected').to.equal(-1);\n });\n it('manage tab index', async () => {\n const el = await fixture<SideNav>(manageTabIndex());\n\n await elementUpdated(el);\n expect(el.value).to.equal('Section 1');\n\n el.focus();\n el.dispatchEvent(arrowUpEvent());\n let focused = document.activeElement as SideNavItem;\n focused.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 0');\n\n el.focus();\n el.dispatchEvent(arrowDownEvent());\n el.dispatchEvent(arrowDownEvent());\n focused = document.activeElement as SideNavItem;\n expect(focused.expanded, 'not expanded').to.be.false;\n focused.click();\n\n await elementUpdated(el);\n\n expect(focused.expanded, 'expanded').to.be.true;\n\n el.dispatchEvent(arrowDownEvent());\n await elementUpdated(el);\n focused = document.activeElement as SideNavItem;\n focused.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 3a');\n\n document.body.focus();\n\n el.focus();\n focused = document.activeElement as SideNavItem;\n expect(focused.selected, 'selected').to.be.true;\n\n el.dispatchEvent(shiftTabEvent());\n const outsideFocused = document.activeElement as HTMLElement;\n\n expect(typeof outsideFocused).not.to.equal(SideNavItem);\n });\n it('focuses the child anchor not the root when [tabindex=-1]', async () => {\n const el = await fixture<SideNav>(manageTabIndex());\n\n await elementUpdated(el);\n const firstItem = el.querySelector(\n '[value=\"Section 0\"]'\n ) as SideNavItem;\n const selected = el.querySelector('[selected]') as SideNavItem;\n expect(selected.tabIndex).to.equal(0);\n expect(firstItem.tabIndex).to.equal(-1);\n\n const firstRect = firstItem.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [firstRect.x + 2, firstRect.y + 2],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(firstItem.focusElement.matches(':focus')).to.be.true;\n });\n it('manage tab index through shadow DOM', async () => {\n class SideNavTestEl extends LitElement {\n protected override render(): TemplateResult {\n return manageTabIndex();\n }\n }\n customElements.define('sidenav-test-el', SideNavTestEl);\n const el = await fixture<SideNav>(html`\n <sidenav-test-el></sidenav-test-el>\n `);\n\n await elementUpdated(el);\n const rootNode = el.shadowRoot as ShadowRoot;\n const sidenavEl = rootNode.querySelector('sp-sidenav') as SideNav;\n\n await elementUpdated(sidenavEl);\n expect(sidenavEl.value).to.equal('Section 1');\n\n sidenavEl.focus();\n sidenavEl.dispatchEvent(arrowUpEvent());\n let focused = rootNode.activeElement as SideNavItem;\n focused.focusElement.click();\n\n await elementUpdated(sidenavEl);\n\n expect(sidenavEl.value).to.equal('Section 0');\n\n sidenavEl.focus();\n sidenavEl.dispatchEvent(arrowDownEvent());\n sidenavEl.dispatchEvent(arrowDownEvent());\n focused = rootNode.activeElement as SideNavItem;\n expect(focused.expanded).to.be.false;\n focused.focusElement.click();\n\n await elementUpdated(sidenavEl);\n\n expect(focused.expanded).to.be.true;\n\n sidenavEl.dispatchEvent(arrowDownEvent());\n await elementUpdated(sidenavEl);\n focused = rootNode.activeElement as SideNavItem;\n focused.focusElement.click();\n\n await elementUpdated(sidenavEl);\n\n expect(sidenavEl.value).to.equal('Section 3a');\n\n document.body.focus();\n\n sidenavEl.focus();\n focused = rootNode.activeElement as SideNavItem;\n expect(focused.selected).to.be.true;\n\n sidenavEl.dispatchEvent(shiftTabEvent());\n const outsideFocused = rootNode.activeElement as HTMLElement;\n\n expect(typeof outsideFocused).not.to.equal(SideNavItem);\n });\n it('manage tab index for late added items', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav manage-tab-index>\n <sp-sidenav-item\n value=\"Section 0\"\n label=\"Section 0\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n expect(el.manageTabIndex).to.be.true;\n\n const item1 = el.querySelector('sp-sidenav-item') as SideNavItem;\n const item2 = el.querySelector(\n 'sp-sidenav-item:nth-child(2)'\n ) as SideNavItem;\n\n await elementUpdated(item1);\n await elementUpdated(item2);\n expect(item1.tabIndex, 'first item tabindex').to.equal(0);\n expect(item2.tabIndex, 'second item tabindex').to.equal(-1);\n\n const item3 = document.createElement('sp-sidenav-item');\n item3.value = 'Section 2';\n item3.label = 'Section 2';\n\n await elementUpdated(el);\n\n el.appendChild(item3);\n\n await elementUpdated(item3);\n await elementUpdated(el);\n\n await waitUntil(() => item3.tabIndex === -1, 'after');\n });\n});\n"],
5
- "mappings": "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",
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/sidenav/sp-sidenav.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-item.js';\nimport '@spectrum-web-components/sidenav/sp-sidenav-heading.js';\nimport { SideNav, SideNavItem } from '@spectrum-web-components/sidenav';\nimport { manageTabIndex } from '../stories/sidenav.stories.js';\nimport {\n arrowDownEvent,\n arrowUpEvent,\n shiftTabEvent,\n} from '../../../test/testing-helpers.js';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n waitUntil,\n} from '@open-wc/testing';\nimport { LitElement, TemplateResult } from '@spectrum-web-components/base';\nimport { spy } from 'sinon';\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\n\ndescribe('Sidenav', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `\n )\n );\n it('loads', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('does not accept focus/click/blur when empty', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav></sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.focus();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.blur();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.click();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n });\n it('does not accept keyboard events when items are not present', async () => {\n const errorSpy = spy();\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n const item = el.querySelector('sp-sidenav-item') as SideNavItem;\n window.addEventListener('error', () => errorSpy());\n\n el.dispatchEvent(new FocusEvent('focusin'));\n item.remove();\n\n await elementUpdated(el);\n el.dispatchEvent(\n new KeyboardEvent('keydown', {\n code: 'ArrowDown',\n })\n );\n\n expect(errorSpy.callCount).to.equal(0);\n });\n it('does not accept focus when all children [disabled]', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-item\n disabled\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n disabled\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n\n el.focus();\n await elementUpdated(el);\n\n expect(document.activeElement === el).to.be.false;\n expect(el.matches(':focus-within')).to.be.false;\n });\n it('sets manageTabIndex on new children', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n expect(el.manageTabIndex).to.be.false;\n\n const item1 = el.querySelector('sp-sidenav-item') as SideNavItem;\n expect(item1.tabIndex).to.equal(0);\n\n const newItem = document.createElement('sp-sidenav-item');\n newItem.value = 'Section 3';\n newItem.label = 'Section 3';\n el.appendChild(newItem);\n\n await elementUpdated(newItem);\n\n expect(newItem.tabIndex).to.equal(0);\n\n el.focus();\n const focused = document.activeElement as SideNavItem;\n focused.click();\n expect(focused.selected).to.be.true;\n\n el.dispatchEvent(shiftTabEvent());\n const outsideFocused = document.activeElement as HTMLElement;\n\n expect(typeof outsideFocused).not.to.equal(SideNavItem);\n });\n it('handles select', async () => {\n const changeSpy = spy();\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav @change=${() => changeSpy()}>\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item value=\"Section 2\" label=\"Section 2\">\n <sp-sidenav-item\n value=\"Section 2a\"\n label=\"Section 2a\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.be.undefined;\n\n const sidenavItem = el.querySelector(\n '[value=\"Section 2\"]'\n ) as SideNavItem;\n sidenavItem.dispatchEvent(\n new CustomEvent('sidenav-select', {\n bubbles: true,\n detail: {\n value: 'Section 2',\n },\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 2');\n expect(changeSpy.callCount).to.equal(1);\n\n sidenavItem.click();\n\n await elementUpdated(sidenavItem);\n\n const sidenavItemChild = el.querySelector(\n '[value=\"Section 2a\"]'\n ) as SideNavItem;\n sidenavItemChild.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 2a');\n expect(changeSpy.callCount).to.equal(2);\n });\n it('prevents selection', async () => {\n const changeSpy = spy();\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav\n @change=${(event: Event) => {\n event.preventDefault();\n changeSpy();\n }}\n >\n <sp-sidenav-heading label=\"CATEGORY 1\">\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 2\"\n label=\"Section 2\"\n opened\n >\n <sp-sidenav-item\n value=\"Section 2a\"\n label=\"Section 2a\"\n ></sp-sidenav-item>\n </sp-sidenav-item>\n </sp-sidenav-heading>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.be.undefined;\n\n el.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.be.undefined;\n expect(changeSpy.callCount).to.equal(1);\n });\n it('prevents [tabindex=0] while `focusin`', async () => {\n const el = await fixture<SideNav>(manageTabIndex());\n const selected = el.querySelector('[value=\"Section 1\"]') as SideNavItem;\n const toBeSelected = el.querySelector(\n '[value=\"Section 0\"]'\n ) as SideNavItem;\n\n await elementUpdated(el);\n await waitUntil(() => el.value === 'Section 1', 'wait for selection');\n\n expect(el.value).to.equal('Section 1');\n expect(selected.tabIndex, 'initially 0').to.equal(0);\n expect(toBeSelected.tabIndex, 'initially -1').to.equal(-1);\n\n el.focus();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 1');\n expect(selected.tabIndex, '-1 when focusin').to.equal(-1);\n\n el.blur();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 1');\n expect(selected.tabIndex, '0 when blur').to.equal(0);\n\n const bindingRect = toBeSelected.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'click',\n position: [\n bindingRect.x + bindingRect.width / 2,\n bindingRect.y + bindingRect.height / 2,\n ],\n },\n ],\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 0');\n expect(toBeSelected.tabIndex, 'will be new focusable child').to.equal(\n -1\n );\n expect(selected.tabIndex, 'no longer selected').to.equal(-1);\n });\n it('manage tab index', async () => {\n const el = await fixture<SideNav>(manageTabIndex());\n\n await elementUpdated(el);\n expect(el.value).to.equal('Section 1');\n\n el.focus();\n el.dispatchEvent(arrowUpEvent());\n let focused = document.activeElement as SideNavItem;\n focused.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 0');\n\n el.focus();\n el.dispatchEvent(arrowDownEvent());\n el.dispatchEvent(arrowDownEvent());\n focused = document.activeElement as SideNavItem;\n expect(focused.expanded, 'not expanded').to.be.false;\n focused.click();\n\n await elementUpdated(el);\n\n expect(focused.expanded, 'expanded').to.be.true;\n\n el.dispatchEvent(arrowDownEvent());\n await elementUpdated(el);\n focused = document.activeElement as SideNavItem;\n focused.click();\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('Section 3a');\n\n document.body.focus();\n\n el.focus();\n focused = document.activeElement as SideNavItem;\n expect(focused.selected, 'selected').to.be.true;\n\n el.dispatchEvent(shiftTabEvent());\n const outsideFocused = document.activeElement as HTMLElement;\n\n expect(typeof outsideFocused).not.to.equal(SideNavItem);\n });\n it('focuses the child anchor not the root when [tabindex=-1]', async () => {\n const el = await fixture<SideNav>(manageTabIndex());\n\n await elementUpdated(el);\n const firstItem = el.querySelector(\n '[value=\"Section 0\"]'\n ) as SideNavItem;\n const selected = el.querySelector('[selected]') as SideNavItem;\n expect(selected.tabIndex).to.equal(0);\n expect(firstItem.tabIndex).to.equal(-1);\n\n const firstRect = firstItem.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [firstRect.x + 2, firstRect.y + 2],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(firstItem.focusElement.matches(':focus')).to.be.true;\n });\n it('manage tab index through shadow DOM', async () => {\n class SideNavTestEl extends LitElement {\n protected override render(): TemplateResult {\n return manageTabIndex();\n }\n }\n customElements.define('sidenav-test-el', SideNavTestEl);\n const el = await fixture<SideNav>(html`\n <sidenav-test-el></sidenav-test-el>\n `);\n\n await elementUpdated(el);\n const rootNode = el.shadowRoot as ShadowRoot;\n const sidenavEl = rootNode.querySelector('sp-sidenav') as SideNav;\n\n await elementUpdated(sidenavEl);\n expect(sidenavEl.value).to.equal('Section 1');\n\n sidenavEl.focus();\n sidenavEl.dispatchEvent(arrowUpEvent());\n let focused = rootNode.activeElement as SideNavItem;\n focused.focusElement.click();\n\n await elementUpdated(sidenavEl);\n\n expect(sidenavEl.value).to.equal('Section 0');\n\n sidenavEl.focus();\n sidenavEl.dispatchEvent(arrowDownEvent());\n sidenavEl.dispatchEvent(arrowDownEvent());\n focused = rootNode.activeElement as SideNavItem;\n expect(focused.expanded).to.be.false;\n focused.focusElement.click();\n\n await elementUpdated(sidenavEl);\n\n expect(focused.expanded).to.be.true;\n\n sidenavEl.dispatchEvent(arrowDownEvent());\n await elementUpdated(sidenavEl);\n focused = rootNode.activeElement as SideNavItem;\n focused.focusElement.click();\n\n await elementUpdated(sidenavEl);\n\n expect(sidenavEl.value).to.equal('Section 3a');\n\n document.body.focus();\n\n sidenavEl.focus();\n focused = rootNode.activeElement as SideNavItem;\n expect(focused.selected).to.be.true;\n\n sidenavEl.dispatchEvent(shiftTabEvent());\n const outsideFocused = rootNode.activeElement as HTMLElement;\n\n expect(typeof outsideFocused).not.to.equal(SideNavItem);\n });\n it('manage tab index for late added items', async () => {\n const el = await fixture<SideNav>(\n html`\n <sp-sidenav manage-tab-index>\n <sp-sidenav-item\n value=\"Section 0\"\n label=\"Section 0\"\n ></sp-sidenav-item>\n <sp-sidenav-item\n value=\"Section 1\"\n label=\"Section 1\"\n ></sp-sidenav-item>\n </sp-sidenav>\n `\n );\n\n await elementUpdated(el);\n expect(el.manageTabIndex).to.be.true;\n\n const item1 = el.querySelector('sp-sidenav-item') as SideNavItem;\n const item2 = el.querySelector(\n 'sp-sidenav-item:nth-child(2)'\n ) as SideNavItem;\n\n await elementUpdated(item1);\n await elementUpdated(item2);\n expect(item1.tabIndex, 'first item tabindex').to.equal(0);\n expect(item2.tabIndex, 'second item tabindex').to.equal(-1);\n\n const item3 = document.createElement('sp-sidenav-item');\n item3.value = 'Section 2';\n item3.label = 'Section 2';\n\n await elementUpdated(el);\n\n el.appendChild(item3);\n\n await elementUpdated(item3);\n await elementUpdated(el);\n\n await waitUntil(() => item3.tabIndex === -1, 'after');\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }