@spectrum-web-components/menu 0.40.1 → 0.40.3

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.
Files changed (55) hide show
  1. package/custom-elements.json +2 -2
  2. package/package.json +11 -11
  3. package/src/Menu.d.ts +1 -1
  4. package/src/Menu.dev.js +12 -12
  5. package/src/Menu.dev.js.map +2 -2
  6. package/src/Menu.js +2 -2
  7. package/src/Menu.js.map +3 -3
  8. package/src/menu-divider.css.dev.js +35 -1
  9. package/src/menu-divider.css.dev.js.map +2 -2
  10. package/src/menu-divider.css.js +35 -1
  11. package/src/menu-divider.css.js.map +2 -2
  12. package/src/menu-group.css.dev.js +35 -1
  13. package/src/menu-group.css.dev.js.map +2 -2
  14. package/src/menu-group.css.js +35 -1
  15. package/src/menu-group.css.js.map +2 -2
  16. package/src/menu-item.css.dev.js +75 -33
  17. package/src/menu-item.css.dev.js.map +2 -2
  18. package/src/menu-item.css.js +75 -33
  19. package/src/menu-item.css.js.map +2 -2
  20. package/src/menu.css.dev.js +45 -3
  21. package/src/menu.css.dev.js.map +2 -2
  22. package/src/menu.css.js +45 -3
  23. package/src/menu.css.js.map +2 -2
  24. package/src/spectrum-checkmark.css.dev.js +38 -4
  25. package/src/spectrum-checkmark.css.dev.js.map +2 -2
  26. package/src/spectrum-checkmark.css.js +38 -4
  27. package/src/spectrum-checkmark.css.js.map +2 -2
  28. package/src/spectrum-chevron.css.dev.js +36 -2
  29. package/src/spectrum-chevron.css.dev.js.map +2 -2
  30. package/src/spectrum-chevron.css.js +38 -4
  31. package/src/spectrum-chevron.css.js.map +2 -2
  32. package/src/spectrum-itemLabel.css.dev.js.map +1 -1
  33. package/src/spectrum-itemLabel.css.js.map +1 -1
  34. package/src/spectrum-menu-divider.css.dev.js +35 -1
  35. package/src/spectrum-menu-divider.css.dev.js.map +2 -2
  36. package/src/spectrum-menu-divider.css.js +35 -1
  37. package/src/spectrum-menu-divider.css.js.map +2 -2
  38. package/src/spectrum-menu-item.css.dev.js +59 -31
  39. package/src/spectrum-menu-item.css.dev.js.map +2 -2
  40. package/src/spectrum-menu-item.css.js +61 -33
  41. package/src/spectrum-menu-item.css.js.map +2 -2
  42. package/src/spectrum-menu-sectionHeading.css.dev.js +35 -1
  43. package/src/spectrum-menu-sectionHeading.css.dev.js.map +2 -2
  44. package/src/spectrum-menu-sectionHeading.css.js +35 -1
  45. package/src/spectrum-menu-sectionHeading.css.js.map +2 -2
  46. package/src/spectrum-menu.css.dev.js +45 -3
  47. package/src/spectrum-menu.css.dev.js.map +2 -2
  48. package/src/spectrum-menu.css.js +45 -3
  49. package/src/spectrum-menu.css.js.map +2 -2
  50. package/test/menu-group.test.js +5 -1
  51. package/test/menu-group.test.js.map +2 -2
  52. package/test/menu-selects.test.js +1 -1
  53. package/test/menu-selects.test.js.map +2 -2
  54. package/test/submenu.test.js +28 -18
  55. package/test/submenu.test.js.map +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["spectrum-menu.css.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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 { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-menu-item-min-height:var(--spectrum-component-height-100);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-100);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-100);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-100);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-100\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-100\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-100\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-100\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-100);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-75);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-100);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-100\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-medium\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-medium\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-medium\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-medium\n);--spectrum-menu-item-label-line-height:var(--spectrum-line-height-100);--spectrum-menu-item-label-line-height-cjk:var(\n--spectrum-cjk-line-height-100\n);--spectrum-menu-item-label-to-description-spacing:var(\n--spectrum-menu-item-label-to-description\n);--spectrum-menu-item-focus-indicator-width:var(\n--spectrum-border-width-200\n);--spectrum-menu-item-focus-indicator-color:var(--spectrum-blue-800);--spectrum-menu-item-label-to-value-area-min-spacing:var(\n--spectrum-spacing-100\n);--spectrum-menu-item-label-content-color-default:var(\n--spectrum-neutral-content-color-default\n);--spectrum-menu-item-label-content-color-hover:var(\n--spectrum-neutral-content-color-hover\n);--spectrum-menu-item-label-content-color-down:var(\n--spectrum-neutral-content-color-down\n);--spectrum-menu-item-label-content-color-focus:var(\n--spectrum-neutral-content-color-key-focus\n);--spectrum-menu-item-label-icon-color-default:var(\n--spectrum-neutral-content-color-default\n);--spectrum-menu-item-label-icon-color-hover:var(\n--spectrum-neutral-content-color-hover\n);--spectrum-menu-item-label-icon-color-down:var(\n--spectrum-neutral-content-color-down\n);--spectrum-menu-item-label-icon-color-focus:var(\n--spectrum-neutral-content-color-key-focus\n);--spectrum-menu-item-label-content-color-disabled:var(\n--spectrum-disabled-content-color\n);--spectrum-menu-item-label-icon-color-disabled:var(\n--spectrum-disabled-content-color\n);--spectrum-menu-item-description-line-height:var(\n--spectrum-line-height-100\n);--spectrum-menu-item-description-line-height-cjk:var(\n--spectrum-cjk-line-height-100\n);--spectrum-menu-item-description-color-default:var(\n--spectrum-neutral-subdued-content-color-default\n);--spectrum-menu-item-description-color-hover:var(\n--spectrum-neutral-subdued-content-color-hover\n);--spectrum-menu-item-description-color-down:var(\n--spectrum-neutral-subdued-content-color-down\n);--spectrum-menu-item-description-color-focus:var(\n--spectrum-neutral-subdued-content-color-key-focus\n);--spectrum-menu-item-description-color-disabled:var(\n--spectrum-disabled-content-color\n);--spectrum-menu-section-header-line-height:var(--spectrum-line-height-100);--spectrum-menu-section-header-line-height-cjk:var(\n--spectrum-cjk-line-height-100\n);--spectrum-menu-section-header-font-weight:var(\n--spectrum-bold-font-weight\n);--spectrum-menu-section-header-color:var(--spectrum-gray-900);--spectrum-menu-collapsible-icon-color:var(--spectrum-gray-900);--spectrum-menu-checkmark-icon-color-default:var(\n--spectrum-accent-color-900\n);--spectrum-menu-checkmark-icon-color-hover:var(\n--spectrum-accent-color-1000\n);--spectrum-menu-checkmark-icon-color-down:var(\n--spectrum-accent-color-1100\n);--spectrum-menu-checkmark-icon-color-focus:var(\n--spectrum-accent-color-1000\n);--spectrum-menu-drillin-icon-color-default:var(\n--spectrum-neutral-subdued-content-color-default\n);--spectrum-menu-drillin-icon-color-hover:var(\n--spectrum-neutral-subdued-content-color-hover\n);--spectrum-menu-drillin-icon-color-down:var(\n--spectrum-neutral-subdued-content-color-down\n);--spectrum-menu-drillin-icon-color-focus:var(\n--spectrum-neutral-subdued-content-color-key-focus\n);--spectrum-menu-item-value-color-default:var(\n--spectrum-neutral-subdued-content-color-default\n);--spectrum-menu-item-value-color-hover:var(\n--spectrum-neutral-subdued-content-color-hover\n);--spectrum-menu-item-value-color-down:var(\n--spectrum-neutral-subdued-content-color-down\n);--spectrum-menu-item-value-color-focus:var(\n--spectrum-neutral-subdued-content-color-key-focus\n);--spectrum-menu-checkmark-display-hidden:none;--spectrum-menu-checkmark-display-shown:block;--spectrum-menu-checkmark-display:var(\n--spectrum-menu-checkmark-display-shown\n);--spectrum-menu-item-collapsible-has-icon-submenu-item-padding-x-start:calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-text-to-control) + var(--spectrum-menu-item-icon-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width));--spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start:calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width))}:host([size=s]){--spectrum-menu-item-min-height:var(--spectrum-component-height-75);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-75);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-75);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-75);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-75\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-75\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-75\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-75\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-75);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-50);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-75);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-75\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-small\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-small\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-small\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-small\n)}:host([size=l]){--spectrum-menu-item-min-height:var(--spectrum-component-height-200);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-200);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-200);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-200);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-200\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-200\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-200\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-200\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-200);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-100);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-200);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-200\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-large\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-large\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-large\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-large\n)}:host([size=xl]){--spectrum-menu-item-min-height:var(--spectrum-component-height-300);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-300);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-300);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-300);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-300\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-300\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-300\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-300\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-300);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-200);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-300);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-300\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-extra-large\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-extra-large\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-extra-large\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-extra-large\n)}@media (forced-colors:active){:host{--highcontrast-menu-item-background-color-default:ButtonFace;--highcontrast-menu-item-color-default:ButtonText;--highcontrast-menu-item-background-color-focus:Highlight;--highcontrast-menu-item-color-focus:HighlightText;--highcontrast-menu-checkmark-icon-color-default:Highlight;--highcontrast-menu-item-color-disabled:GrayText;--highcontrast-menu-item-focus-indicator-color:Highlight;--highcontrast-menu-item-selected-background-color:Highlight;--highcontrast-menu-item-selected-color:HighlightText}@supports (color:SelectedItem){:host{--highcontrast-menu-item-selected-background-color:SelectedItem;--highcontrast-menu-item-selected-color:SelectedItemText}}}:host{box-sizing:border-box;display:inline-block;list-style-type:none;margin:0;overflow:auto;padding:0}:host:lang(ja),:host:lang(ko),:host:lang(zh){--spectrum-menu-item-label-line-height:var(\n--mod-menu-item-label-line-height-cjk,var(--spectrum-menu-item-label-line-height-cjk)\n);--spectrum-menu-item-description-line-height:var(\n--mod-menu-item-description-line-height-cjk,var(--spectrum-menu-item-description-line-height-cjk)\n);--spectrum-menu-section-header-line-height:var(\n--mod-menu-section-header-line-height-cjk,var(--spectrum-menu-section-header-line-height-cjk)\n)}:host([selects]) ::slotted(sp-menu-item){--spectrum-menu-checkmark-display:var(\n--spectrum-menu-checkmark-display-hidden\n);padding-inline-start:var(\n--mod-menu-item-selectable-edge-to-text-not-selected,var(--spectrum-menu-item-selectable-edge-to-text-not-selected)\n)}:host([selects]) ::slotted(sp-menu-item[selected]){--spectrum-menu-checkmark-display:var(\n--spectrum-menu-checkmark-display-shown\n);padding-inline-start:var(\n--mod-menu-item-label-inline-edge-to-content,var(--spectrum-menu-item-label-inline-edge-to-content)\n)}li:not(::slotted(sp-menu-item),.menu-divider){box-sizing:border-box;display:block;margin:0;padding:0;position:relative}.spectrum-Menu-sectionHeading{color:var(\n--highcontrast-menu-item-color-default,var(\n--mod-menu-section-header-color,var(--spectrum-menu-section-header-color)\n)\n);display:block;font-size:var(\n--mod-menu-section-header-font-size,var(--spectrum-menu-section-header-font-size)\n);font-weight:var(\n--mod-menu-section-header-font-weight,var(--spectrum-menu-section-header-font-weight)\n);grid-area:sectionHeadingArea/1/sectionHeadingArea/-1;line-height:var(\n--mod-menu-section-header-line-height,var(--spectrum-menu-section-header-line-height)\n);min-inline-size:var(\n--mod-menu-section-header-min-width,var(--spectrum-menu-section-header-min-width)\n);padding-block-end:var(\n--mod-menu-section-header-bottom-edge-to-text,var(\n--mod-menu-item-bottom-edge-to-text,var(--spectrum-menu-item-bottom-edge-to-text)\n)\n);padding-block-start:var(\n--mod-menu-section-header-top-edge-to-text,var(\n--mod-menu-item-top-edge-to-text,var(--spectrum-menu-item-top-edge-to-text)\n)\n);padding-inline:var(\n--mod-menu-item-label-inline-edge-to-content,var(--spectrum-menu-item-label-inline-edge-to-content)\n)}\n`;\nexport default styles;"],
5
- "mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;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;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;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;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuLf,eAAeC",
4
+ "sourcesContent": ["/*\nCopyright 2024 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 { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-menu-item-min-height:var(--spectrum-component-height-100);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-100);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-100);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-100);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-100\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-100\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-100\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-100\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-100);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-75);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-100);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-100\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-medium\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-medium\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-medium\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-medium\n);--spectrum-menu-item-top-to-action:var(--spectrum-spacing-50);--spectrum-menu-item-top-to-checkbox:var(--spectrum-spacing-50);--spectrum-menu-item-label-line-height:var(--spectrum-line-height-100);--spectrum-menu-item-label-line-height-cjk:var(\n--spectrum-cjk-line-height-100\n);--spectrum-menu-item-label-to-description-spacing:var(\n--spectrum-menu-item-label-to-description\n);--spectrum-menu-item-focus-indicator-width:var(\n--spectrum-border-width-200\n);--spectrum-menu-item-focus-indicator-color:var(--spectrum-blue-800);--spectrum-menu-item-label-to-value-area-min-spacing:var(\n--spectrum-spacing-100\n);--spectrum-menu-item-label-content-color-default:var(\n--spectrum-neutral-content-color-default\n);--spectrum-menu-item-label-content-color-hover:var(\n--spectrum-neutral-content-color-hover\n);--spectrum-menu-item-label-content-color-down:var(\n--spectrum-neutral-content-color-down\n);--spectrum-menu-item-label-content-color-focus:var(\n--spectrum-neutral-content-color-key-focus\n);--spectrum-menu-item-label-icon-color-default:var(\n--spectrum-neutral-content-color-default\n);--spectrum-menu-item-label-icon-color-hover:var(\n--spectrum-neutral-content-color-hover\n);--spectrum-menu-item-label-icon-color-down:var(\n--spectrum-neutral-content-color-down\n);--spectrum-menu-item-label-icon-color-focus:var(\n--spectrum-neutral-content-color-key-focus\n);--spectrum-menu-item-label-content-color-disabled:var(\n--spectrum-disabled-content-color\n);--spectrum-menu-item-label-icon-color-disabled:var(\n--spectrum-disabled-content-color\n);--spectrum-menu-item-description-line-height:var(\n--spectrum-line-height-100\n);--spectrum-menu-item-description-line-height-cjk:var(\n--spectrum-cjk-line-height-100\n);--spectrum-menu-item-description-color-default:var(\n--spectrum-neutral-subdued-content-color-default\n);--spectrum-menu-item-description-color-hover:var(\n--spectrum-neutral-subdued-content-color-hover\n);--spectrum-menu-item-description-color-down:var(\n--spectrum-neutral-subdued-content-color-down\n);--spectrum-menu-item-description-color-focus:var(\n--spectrum-neutral-subdued-content-color-key-focus\n);--spectrum-menu-item-description-color-disabled:var(\n--spectrum-disabled-content-color\n);--spectrum-menu-section-header-line-height:var(--spectrum-line-height-100);--spectrum-menu-section-header-line-height-cjk:var(\n--spectrum-cjk-line-height-100\n);--spectrum-menu-section-header-font-weight:var(\n--spectrum-bold-font-weight\n);--spectrum-menu-section-header-color:var(--spectrum-gray-900);--spectrum-menu-collapsible-icon-color:var(--spectrum-gray-900);--spectrum-menu-checkmark-icon-color-default:var(\n--spectrum-accent-color-900\n);--spectrum-menu-checkmark-icon-color-hover:var(\n--spectrum-accent-color-1000\n);--spectrum-menu-checkmark-icon-color-down:var(\n--spectrum-accent-color-1100\n);--spectrum-menu-checkmark-icon-color-focus:var(\n--spectrum-accent-color-1000\n);--spectrum-menu-drillin-icon-color-default:var(\n--spectrum-neutral-subdued-content-color-default\n);--spectrum-menu-drillin-icon-color-hover:var(\n--spectrum-neutral-subdued-content-color-hover\n);--spectrum-menu-drillin-icon-color-down:var(\n--spectrum-neutral-subdued-content-color-down\n);--spectrum-menu-drillin-icon-color-focus:var(\n--spectrum-neutral-subdued-content-color-key-focus\n);--spectrum-menu-item-value-color-default:var(\n--spectrum-neutral-subdued-content-color-default\n);--spectrum-menu-item-value-color-hover:var(\n--spectrum-neutral-subdued-content-color-hover\n);--spectrum-menu-item-value-color-down:var(\n--spectrum-neutral-subdued-content-color-down\n);--spectrum-menu-item-value-color-focus:var(\n--spectrum-neutral-subdued-content-color-key-focus\n);--spectrum-menu-checkmark-display-hidden:none;--spectrum-menu-checkmark-display-shown:block;--spectrum-menu-checkmark-display:var(\n--spectrum-menu-checkmark-display-shown\n);--spectrum-menu-back-icon-margin:var(\n--spectrum-navigational-indicator-top-to-back-icon-medium\n);--spectrum-menu-item-collapsible-has-icon-submenu-item-padding-x-start:calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-text-to-control) + var(--spectrum-menu-item-icon-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width));--spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start:calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width))}:host([size=s]){--spectrum-menu-item-min-height:var(--spectrum-component-height-75);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-75);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-75);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-75);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-75\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-75\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-75\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-75\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-75);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-50);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-75);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-75\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-small\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-small\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-small\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-small\n);--spectrum-menu-back-icon-margin:var(\n--spectrum-navigational-indicator-top-to-back-icon-small\n)}:host([size=l]){--spectrum-menu-item-min-height:var(--spectrum-component-height-200);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-200);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-200);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-200);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-200\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-200\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-200\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-200\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-200);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-100);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-200);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-200\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-large\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-large\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-large\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-large\n);--spectrum-menu-back-icon-margin:var(\n--spectrum-navigational-indicator-top-to-back-icon-large\n)}:host([size=xl]){--spectrum-menu-item-min-height:var(--spectrum-component-height-300);--spectrum-menu-item-icon-height:var(--spectrum-workflow-icon-size-300);--spectrum-menu-item-icon-width:var(--spectrum-workflow-icon-size-300);--spectrum-menu-item-label-font-size:var(--spectrum-font-size-300);--spectrum-menu-item-label-text-to-visual:var(\n--spectrum-text-to-visual-300\n);--spectrum-menu-item-label-inline-edge-to-content:var(\n--spectrum-component-edge-to-text-300\n);--spectrum-menu-item-top-edge-to-text:var(\n--spectrum-component-top-to-text-300\n);--spectrum-menu-item-bottom-edge-to-text:var(\n--spectrum-component-bottom-to-text-300\n);--spectrum-menu-item-text-to-control:var(--spectrum-text-to-control-300);--spectrum-menu-item-description-font-size:var(--spectrum-font-size-200);--spectrum-menu-section-header-font-size:var(--spectrum-font-size-300);--spectrum-menu-section-header-min-width:var(\n--spectrum-component-height-300\n);--spectrum-menu-item-selectable-edge-to-text-not-selected:var(\n--spectrum-menu-item-selectable-edge-to-text-not-selected-extra-large\n);--spectrum-menu-item-checkmark-height:var(\n--spectrum-menu-item-checkmark-height-extra-large\n);--spectrum-menu-item-checkmark-width:var(\n--spectrum-menu-item-checkmark-width-extra-large\n);--spectrum-menu-item-top-to-checkmark:var(\n--spectrum-menu-item-top-to-selected-icon-extra-large\n);--spectrum-menu-back-icon-margin:var(\n--spectrum-navigational-indicator-top-to-back-icon-extra-large\n)}@media (forced-colors:active){:host{--highcontrast-menu-item-background-color-default:ButtonFace;--highcontrast-menu-item-color-default:ButtonText;--highcontrast-menu-item-background-color-focus:Highlight;--highcontrast-menu-item-color-focus:HighlightText;--highcontrast-menu-checkmark-icon-color-default:Highlight;--highcontrast-menu-item-color-disabled:GrayText;--highcontrast-menu-item-focus-indicator-color:Highlight;--highcontrast-menu-item-selected-background-color:Highlight;--highcontrast-menu-item-selected-color:HighlightText}@supports (color:SelectedItem){:host{--highcontrast-menu-item-selected-background-color:SelectedItem;--highcontrast-menu-item-selected-color:SelectedItemText}}}:host{box-sizing:border-box;display:inline-block;inline-size:var(--mod-menu-inline-size,auto);list-style-type:none;margin:0;overflow:auto;padding:0}:host:lang(ja),:host:lang(ko),:host:lang(zh){--spectrum-menu-item-label-line-height:var(\n--mod-menu-item-label-line-height-cjk,var(--spectrum-menu-item-label-line-height-cjk)\n);--spectrum-menu-item-description-line-height:var(\n--mod-menu-item-description-line-height-cjk,var(--spectrum-menu-item-description-line-height-cjk)\n);--spectrum-menu-section-header-line-height:var(\n--mod-menu-section-header-line-height-cjk,var(--spectrum-menu-section-header-line-height-cjk)\n)}:host([selects]) ::slotted(sp-menu-item){--spectrum-menu-checkmark-display:var(\n--spectrum-menu-checkmark-display-hidden\n);padding-inline-start:var(\n--mod-menu-item-selectable-edge-to-text-not-selected,var(--spectrum-menu-item-selectable-edge-to-text-not-selected)\n)}:host([selects]) ::slotted(sp-menu-item[selected]){--spectrum-menu-checkmark-display:var(\n--spectrum-menu-checkmark-display-shown\n);padding-inline-start:var(\n--mod-menu-item-label-inline-edge-to-content,var(--spectrum-menu-item-label-inline-edge-to-content)\n)}li:not(::slotted(sp-menu-item),.menu-divider){box-sizing:border-box;display:block;margin:0;padding:0;position:relative}.spectrum-Menu-back.focus-visible{box-shadow:inset calc(var(\n--mod-menu-item-focus-indicator-width,\nvar(--spectrum-menu-item-focus-indicator-width)\n)*var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(\n--highcontrast-menu-item-focus-indicator-color,var(\n--mod-menu-item-focus-indicator-color,var(--spectrum-menu-item-focus-indicator-color)\n)\n)}.spectrum-Menu-back:focus-visible{box-shadow:inset calc(var(\n--mod-menu-item-focus-indicator-width,\nvar(--spectrum-menu-item-focus-indicator-width)\n)*var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(\n--highcontrast-menu-item-focus-indicator-color,var(\n--mod-menu-item-focus-indicator-color,var(--spectrum-menu-item-focus-indicator-color)\n)\n)}.spectrum-Menu-sectionHeading{color:var(\n--highcontrast-menu-item-color-default,var(\n--mod-menu-section-header-color,var(--spectrum-menu-section-header-color)\n)\n);display:block;font-size:var(\n--mod-menu-section-header-font-size,var(--spectrum-menu-section-header-font-size)\n);font-weight:var(\n--mod-menu-section-header-font-weight,var(--spectrum-menu-section-header-font-weight)\n);grid-area:sectionHeadingArea/1/sectionHeadingArea/-1;line-height:var(\n--mod-menu-section-header-line-height,var(--spectrum-menu-section-header-line-height)\n);min-inline-size:var(\n--mod-menu-section-header-min-width,var(--spectrum-menu-section-header-min-width)\n);padding-block-end:var(\n--mod-menu-section-header-bottom-edge-to-text,var(\n--mod-menu-item-bottom-edge-to-text,var(--spectrum-menu-item-bottom-edge-to-text)\n)\n);padding-block-start:var(\n--mod-menu-section-header-top-edge-to-text,var(\n--mod-menu-item-top-edge-to-text,var(--spectrum-menu-item-top-edge-to-text)\n)\n);padding-inline:var(\n--mod-menu-item-label-inline-edge-to-content,var(--spectrum-menu-item-label-inline-edge-to-content)\n)}.spectrum-Menu-back{align-items:center;display:flex;flex-flow:wrap;padding-block:var(--mod-menu-back-padding-block-start,0) var(--mod-menu-back-padding-block-end,0);padding-inline:var(--mod-menu-back-padding-inline-start,0) var(\n--mod-menu-back-padding-inline-end,var(--spectrum-menu-item-label-inline-edge-to-content)\n)}.spectrum-Menu-back .spectrum-Menu-sectionHeading{padding:0}.spectrum-Menu-backButton{background:none;border:0;cursor:pointer;display:inline-flex;margin:0;padding:0}.spectrum-Menu-backButton.focus-visible{outline:var(--spectrum-focus-indicator-thickness) solid var(--spectrum-focus-indicator-color);outline-offset:calc((var(--spectrum-focus-indicator-thickness) + 1px)*-1)}.spectrum-Menu-backButton:focus-visible{outline:var(--spectrum-focus-indicator-thickness) solid var(--spectrum-focus-indicator-color);outline-offset:calc((var(--spectrum-focus-indicator-thickness) + 1px)*-1)}.spectrum-Menu-backHeading{color:var(\n--highcontrast-menu-item-color-default,var(\n--mod-menu-back-heading-color,var(--spectrum-menu-section-header-color)\n)\n);display:block;font-size:var(\n--mod-menu-section-header-font-size,var(--spectrum-menu-section-header-font-size)\n);font-weight:var(\n--mod-menu-section-header-font-weight,var(--spectrum-menu-section-header-font-weight)\n);line-height:var(\n--mod-menu-section-header-line-height,var(--spectrum-menu-section-header-line-height)\n)}.spectrum-Menu-backIcon{fill:var(\n--highcontrast-menu-item-color-default,var(--mod-menu-back-icon-color-default)\n);color:var(\n--highcontrast-menu-item-color-default,var(--mod-menu-back-icon-color-default)\n);margin-block:var(\n--mod-menu-back-icon-margin-block,var(--spectrum-menu-back-icon-margin)\n);margin-inline:var(\n--mod-menu-back-icon-margin-inline,var(--spectrum-menu-back-icon-margin)\n)}\n`;\nexport default styles;"],
5
+ "mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;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;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;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;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;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiOf,eAAeC",
6
6
  "names": ["css", "styles"]
7
7
  }
@@ -340,12 +340,13 @@ describe("Menu group", () => {
340
340
  expect(subInheritItem1.getAttribute("role")).to.equal("menuitemradio");
341
341
  expect(subInheritItem2.getAttribute("role")).to.equal("menuitemradio");
342
342
  });
343
- it("manages complex slotted menu items", async () => {
343
+ it("manages complex slotted menu items", async function() {
344
344
  const el = await fixture(complexSlotted());
345
345
  await waitUntil(
346
346
  () => focusableItems(el.menu).length == 12,
347
347
  `expected outer menu to manage 12 items, ${el.menu.localName} manages ${focusableItems(el.menu).length}`
348
348
  );
349
+ const menu = el.menu;
349
350
  const items = {};
350
351
  items.i2 = el.querySelector("#i-2");
351
352
  items.i8 = el.querySelector("#i-8");
@@ -390,11 +391,14 @@ describe("Menu group", () => {
390
391
  const count = Object.keys(items).length + 1;
391
392
  while (!items.i9.focused) {
392
393
  i = Math.max(1, (i + 1 + count) % count);
394
+ await elementUpdated(menu);
393
395
  await elementUpdated(items[`i${i}`]);
394
396
  expect(items[`i${i}`].focused, `i${i} should be focused`).to.be.true;
395
397
  await sendKeys({
396
398
  press: "ArrowDown"
397
399
  });
400
+ await elementUpdated(menu);
401
+ await elementUpdated(items[`i${i}`]);
398
402
  }
399
403
  });
400
404
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["menu-group.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*/\nimport '@spectrum-web-components/menu/sp-menu-group.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu-divider.js';\nimport { Menu, MenuGroup, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n oneEvent,\n waitUntil,\n} from '@open-wc/testing';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\nimport { complexSlotted } from '../stories/menu-group.stories.js';\nimport { ComplexSlottedGroup, ComplexSlottedMenu } from '../stories/index.js';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\nconst managedItems = (menu: Menu | MenuGroup): MenuItem[] => {\n return menu.childItems.filter(\n (item: MenuItem) => item.menuData.selectionRoot === menu\n );\n};\n\nconst focusableItems = (menu: Menu | MenuGroup): MenuItem[] => {\n return menu.childItems.filter(\n (item: MenuItem) => item.menuData.focusRoot === menu\n );\n};\n\ndescribe('Menu group', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Action 1</sp-menu-item>\n <sp-menu-item>Action 2</sp-menu-item>\n <sp-menu-item>Action 3</sp-menu-item>\n </sp-menu-group>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Save</sp-menu-item>\n <sp-menu-item disabled>Download</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n )\n );\n it('renders', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Action 1</sp-menu-item>\n <sp-menu-item>Action 2</sp-menu-item>\n <sp-menu-item>Action 3</sp-menu-item>\n </sp-menu-group>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Save</sp-menu-item>\n <sp-menu-item disabled>Download</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n\n await waitUntil(() => {\n return managedItems(el).length === 5;\n }, `expected menu group to manage 5 children, received ${managedItems(el).length} of ${el.childItems.length}`);\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('manages [slot=\"header\"] content', async () => {\n const el = await fixture<MenuGroup>(\n html`\n <sp-menu-group></sp-menu-group>\n `\n );\n await elementUpdated(el);\n const slot = el.shadowRoot.querySelector(\n '[name=\"header\"'\n ) as HTMLSlotElement;\n const header = document.createElement('span');\n header.textContent = 'Header';\n header.slot = 'header';\n expect(header.id).to.equal('');\n let slotchanged = oneEvent(slot, 'slotchange');\n el.append(header);\n await slotchanged;\n expect(header.id).to.equal(\n (el as unknown as { headerId: string }).headerId\n );\n\n slotchanged = oneEvent(slot, 'slotchange');\n header.remove();\n await slotchanged;\n expect(header.id).to.equal('');\n });\n it('handles selects for nested menu groups', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item selected>First</sp-menu-item>\n <!-- 1 -->\n <sp-menu-item>Second</sp-menu-item>\n <!-- 1 -->\n <sp-menu-group id=\"mg-multi\" selects=\"multiple\">\n <sp-menu-item selected>Multi1</sp-menu-item>\n <!-- 2 -->\n <sp-menu-item>Multi2</sp-menu-item>\n <!-- 2 -->\n <sp-menu-group id=\"mg-sub-inherit\" selects=\"inherit\">\n <sp-menu-item>SubInherit1</sp-menu-item>\n <!-- 2 -->\n <sp-menu-item>SubInherit2</sp-menu-item>\n <!-- 2 -->\n </sp-menu-group>\n </sp-menu-group>\n <sp-menu-group id=\"mg-single\" selects=\"single\">\n <sp-menu-item selected>Single1</sp-menu-item>\n <!-- 3 -->\n <sp-menu-item>Single2</sp-menu-item>\n <!-- 3 -->\n </sp-menu-group>\n <sp-menu-group id=\"mg-none\">\n <sp-menu-item>Inherit1</sp-menu-item>\n <!-- - -->\n <sp-menu-item>Inherit2</sp-menu-item>\n <!-- - -->\n </sp-menu-group>\n <sp-menu-group id=\"mg-inherit\" selects=\"inherit\">\n <sp-menu-item>Inherit1</sp-menu-item>\n <!-- 1 -->\n <sp-menu-item>Inherit2</sp-menu-item>\n <!-- 1 -->\n </sp-menu-group>\n </sp-menu>\n `\n );\n\n // 1 & 3 should be menuitemradio\n // 2 shouwl menuitemcheckbox\n\n await waitUntil(\n () => managedItems(el).length === 4,\n `expected outer menu to manage 4 items (2 are inherited), got ${\n managedItems(el).length\n }, with ${el.childItems.length} total`\n );\n await waitUntil(\n () => el.selectedItems.length === 1,\n 'expected 1 selected item'\n );\n await elementUpdated(el);\n\n const firstItem = el.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n\n const secondItem = el.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n const multiGroup = el.querySelector(\n 'sp-menu-group#mg-multi'\n ) as MenuGroup;\n const multiItem1 = multiGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const multiItem2 = multiGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n await waitUntil(\n () => managedItems(multiGroup).length === 4,\n `selects=\"#mg-multi should manage 4 items (2 are inherited), received ${\n managedItems(multiGroup).length\n }`\n );\n\n const singleGroup = el.querySelector(\n 'sp-menu-group#mg-single'\n ) as MenuGroup;\n\n const singleItem1 = singleGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const singleItem2 = singleGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n await waitUntil(\n () => managedItems(singleGroup).length === 2,\n 'selects=\"#mg-none should manage 4 items (2 are inherited)'\n );\n\n const noneGroup = el.querySelector(\n 'sp-menu-group#mg-none'\n ) as MenuGroup;\n const noneItem1 = noneGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const noneItem2 = noneGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n await waitUntil(\n () => managedItems(noneGroup).length === 2,\n `selects=\"#mg-none\" should manage 2 items, received ${\n managedItems(noneGroup).length\n }`\n );\n\n const inheritGroup = el.querySelector(\n 'sp-menu-group#mg-inherit'\n ) as MenuGroup;\n const inheritItem1 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const inheritItem2 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n expect(firstItem.getAttribute('role')).to.equal('menuitemradio');\n expect(secondItem.getAttribute('role')).to.equal('menuitemradio');\n expect(multiItem1.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(multiItem2.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(singleItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(singleItem2.getAttribute('role')).to.equal('menuitemradio');\n expect(noneItem1.getAttribute('role')).to.equal('menuitem');\n expect(noneItem2.getAttribute('role')).to.equal('menuitem');\n expect(inheritItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(inheritItem2.getAttribute('role')).to.equal('menuitemradio');\n\n await elementUpdated(firstItem);\n expect(singleItem1.selected).to.be.true;\n expect(firstItem.selected).to.be.true;\n expect(secondItem.selected, 'second item not selected').to.be.false;\n expect(el.value).to.equal('First');\n expect(el.selectedItems.length).to.equal(1);\n\n expect(firstItem.getAttribute('aria-checked')).to.equal('true');\n expect(secondItem.getAttribute('aria-checked')).to.equal('false');\n\n secondItem.click();\n await elementUpdated(el);\n await elementUpdated(firstItem);\n await elementUpdated(secondItem);\n expect(firstItem.selected, 'first item not selected').to.be.false;\n expect(secondItem.selected).to.be.true;\n expect(firstItem.getAttribute('aria-checked')).to.equal('false');\n expect(secondItem.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Second');\n expect(el.selectedItems.length).to.equal(1);\n\n inheritItem1.click();\n await elementUpdated(el);\n await elementUpdated(inheritItem1);\n await elementUpdated(secondItem);\n expect(secondItem.selected, 'second item not selected again').to.be\n .false;\n expect(inheritItem1.selected).to.be.true;\n expect(secondItem.getAttribute('aria-checked')).to.equal('false');\n expect(inheritItem1.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Inherit1');\n expect(el.selectedItems.length).to.equal(1);\n\n noneItem2.click();\n await elementUpdated(el);\n await elementUpdated(noneGroup);\n await elementUpdated(noneItem2);\n expect(inheritItem1.selected).to.be.true;\n expect(noneItem2.selected, 'none item not selected').to.be.false;\n expect(el.value).to.equal('Inherit1');\n expect(el.selectedItems.length).to.equal(1);\n\n singleItem2.click();\n await elementUpdated(singleGroup);\n await elementUpdated(singleItem1);\n await elementUpdated(singleItem2);\n expect(singleItem2.selected).to.be.true;\n expect(singleItem1.selected, 'first item not selected').to.be.false;\n expect(inheritItem1.selected).to.be.true;\n expect(singleItem1.getAttribute('aria-checked')).to.equal('false');\n expect(singleItem2.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Inherit1');\n expect(el.selectedItems.length).to.equal(1);\n //expect(singleGroup.value).to.equal('Inherit1')\n expect(singleGroup.selectedItems.length).to.equal(1);\n\n multiItem2.click();\n await elementUpdated(el);\n await elementUpdated(multiItem2);\n expect(multiItem1.selected).to.be.true;\n expect(multiItem2.selected).to.be.true;\n expect(inheritItem1.selected).to.be.true;\n expect(multiItem1.getAttribute('aria-checked')).to.equal('true');\n expect(multiItem2.getAttribute('aria-checked')).to.equal('true');\n //expect(multiGroup.value).to.equal('Inherit1')\n expect(multiGroup.selectedItems.length).to.equal(2);\n });\n\n it('handles changing managed items for selects changes', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"multiple\" value-separator=\"--\">\n <sp-menu-item selected>First</sp-menu-item>\n <sp-menu-item>Second</sp-menu-item>\n <sp-menu-group id=\"mg-inherit\" selects=\"inherit\">\n <sp-menu-item>Inherit1</sp-menu-item>\n <sp-menu-item>Inherit2</sp-menu-item>\n <sp-menu-group id=\"mg-sub-inherit\" selects=\"inherit\">\n <sp-menu-item>SubInherit1</sp-menu-item>\n <sp-menu-item selected>SubInherit2</sp-menu-item>\n </sp-menu-group>\n </sp-menu-group>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => managedItems(el).length == 6,\n `expected outer menu to manage 6 items, manages ${\n managedItems(el).length\n }`\n );\n await waitUntil(\n () => el.selectedItems.length == 2,\n 'expected 2 selected item'\n );\n await elementUpdated(el);\n\n const inheritGroup = el.querySelector(\n 'sp-menu-group#mg-inherit'\n ) as MenuGroup;\n const inheritItem1 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const inheritItem2 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n const subInheritGroup = el.querySelector(\n 'sp-menu-group#mg-sub-inherit'\n ) as MenuGroup;\n const subInheritItem1 = subInheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const subInheritItem2 = subInheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n expect(inheritItem1.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(inheritItem2.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(subInheritItem1.getAttribute('role')).to.equal(\n 'menuitemcheckbox'\n );\n expect(subInheritItem2.getAttribute('role')).to.equal(\n 'menuitemcheckbox'\n );\n expect(el.value).to.equal('First--SubInherit2');\n expect(el.selectedItems.length).to.equal(2);\n inheritGroup.setAttribute('selects', 'single');\n\n await elementUpdated(inheritGroup);\n await elementUpdated(el);\n\n await waitUntil(() => {\n return managedItems(inheritGroup).length === 4;\n }, `expected new single sub-group to manage 4 items, received ${managedItems(inheritGroup).length} because \"selects === ${inheritGroup.selects}`);\n\n await waitUntil(\n () => managedItems(el).length === 2,\n `expected outer menu to manage 2 items with none inherited, received ${\n managedItems(el).length\n }`\n );\n expect(inheritGroup.value).to.equal('SubInherit2');\n expect(inheritGroup.selectedItems.length).to.equal(1);\n expect(el.value).to.equal('First');\n expect(inheritItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(inheritItem2.getAttribute('role')).to.equal('menuitemradio');\n expect(subInheritItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(subInheritItem2.getAttribute('role')).to.equal('menuitemradio');\n });\n it('manages complex slotted menu items', async () => {\n const el = await fixture<ComplexSlottedMenu>(complexSlotted());\n\n await waitUntil(\n () => focusableItems(el.menu).length == 12,\n `expected outer menu to manage 12 items, ${\n el.menu.localName\n } manages ${focusableItems(el.menu).length}`\n );\n\n const items: Record<string, MenuItem> = {};\n items.i2 = el.querySelector('#i-2') as MenuItem;\n items.i8 = el.querySelector('#i-8') as MenuItem;\n items.i9 = el.querySelector('#i-9') as MenuItem;\n items.i3 = el.renderRoot.querySelector('#i-3') as MenuItem;\n items.i5 = el.renderRoot.querySelector('#i-5') as MenuItem;\n items.i6 = el.renderRoot.querySelector('#i-6') as MenuItem;\n items.i7 = el.renderRoot.querySelector('#i-7') as MenuItem;\n const group = el.renderRoot.querySelector(\n '#group'\n ) as ComplexSlottedGroup;\n items.i1 = group.renderRoot.querySelector('#i-1') as MenuItem;\n items.i4 = group.renderRoot.querySelector('#i-4') as MenuItem;\n items.i10 = group.renderRoot.querySelector('#i-10') as MenuItem;\n items.i11 = group.renderRoot.querySelector('#i-11') as MenuItem;\n items.i12 = group.renderRoot.querySelector('#i-12') as MenuItem;\n\n const rect = items.i9.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n position: [\n rect.left + rect.width / 2,\n rect.top + rect.height / 2,\n ],\n type: 'click',\n },\n ],\n });\n await elementUpdated(items.i9);\n\n await sendKeys({\n press: 'ArrowDown',\n });\n await sendKeys({\n press: 'ArrowUp',\n });\n await elementUpdated(items.i9);\n expect(items.i9.focused).to.be.true;\n await sendKeys({\n press: 'ArrowDown',\n });\n let i = 9;\n const count = Object.keys(items).length + 1;\n while (!items.i9.focused) {\n i = Math.max(1, (i + 1 + count) % count);\n await elementUpdated(items[`i${i}`]);\n expect(items[`i${i}`].focused, `i${i} should be focused`).to.be\n .true;\n await sendKeys({\n press: 'ArrowDown',\n });\n }\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*/\nimport '@spectrum-web-components/menu/sp-menu-group.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu-divider.js';\nimport { Menu, MenuGroup, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n oneEvent,\n waitUntil,\n} from '@open-wc/testing';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\nimport { complexSlotted } from '../stories/menu-group.stories.js';\nimport { ComplexSlottedGroup, ComplexSlottedMenu } from '../stories/index.js';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\nconst managedItems = (menu: Menu | MenuGroup): MenuItem[] => {\n return menu.childItems.filter(\n (item: MenuItem) => item.menuData.selectionRoot === menu\n );\n};\n\nconst focusableItems = (menu: Menu | MenuGroup): MenuItem[] => {\n return menu.childItems.filter(\n (item: MenuItem) => item.menuData.focusRoot === menu\n );\n};\n\ndescribe('Menu group', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Action 1</sp-menu-item>\n <sp-menu-item>Action 2</sp-menu-item>\n <sp-menu-item>Action 3</sp-menu-item>\n </sp-menu-group>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Save</sp-menu-item>\n <sp-menu-item disabled>Download</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n )\n );\n it('renders', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Action 1</sp-menu-item>\n <sp-menu-item>Action 2</sp-menu-item>\n <sp-menu-item>Action 3</sp-menu-item>\n </sp-menu-group>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-group selects=\"inherit\">\n <span slot=\"header\">Section Heading</span>\n <sp-menu-item>Save</sp-menu-item>\n <sp-menu-item disabled>Download</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n\n await waitUntil(() => {\n return managedItems(el).length === 5;\n }, `expected menu group to manage 5 children, received ${managedItems(el).length} of ${el.childItems.length}`);\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('manages [slot=\"header\"] content', async () => {\n const el = await fixture<MenuGroup>(\n html`\n <sp-menu-group></sp-menu-group>\n `\n );\n await elementUpdated(el);\n const slot = el.shadowRoot.querySelector(\n '[name=\"header\"'\n ) as HTMLSlotElement;\n const header = document.createElement('span');\n header.textContent = 'Header';\n header.slot = 'header';\n expect(header.id).to.equal('');\n let slotchanged = oneEvent(slot, 'slotchange');\n el.append(header);\n await slotchanged;\n expect(header.id).to.equal(\n (el as unknown as { headerId: string }).headerId\n );\n\n slotchanged = oneEvent(slot, 'slotchange');\n header.remove();\n await slotchanged;\n expect(header.id).to.equal('');\n });\n it('handles selects for nested menu groups', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item selected>First</sp-menu-item>\n <!-- 1 -->\n <sp-menu-item>Second</sp-menu-item>\n <!-- 1 -->\n <sp-menu-group id=\"mg-multi\" selects=\"multiple\">\n <sp-menu-item selected>Multi1</sp-menu-item>\n <!-- 2 -->\n <sp-menu-item>Multi2</sp-menu-item>\n <!-- 2 -->\n <sp-menu-group id=\"mg-sub-inherit\" selects=\"inherit\">\n <sp-menu-item>SubInherit1</sp-menu-item>\n <!-- 2 -->\n <sp-menu-item>SubInherit2</sp-menu-item>\n <!-- 2 -->\n </sp-menu-group>\n </sp-menu-group>\n <sp-menu-group id=\"mg-single\" selects=\"single\">\n <sp-menu-item selected>Single1</sp-menu-item>\n <!-- 3 -->\n <sp-menu-item>Single2</sp-menu-item>\n <!-- 3 -->\n </sp-menu-group>\n <sp-menu-group id=\"mg-none\">\n <sp-menu-item>Inherit1</sp-menu-item>\n <!-- - -->\n <sp-menu-item>Inherit2</sp-menu-item>\n <!-- - -->\n </sp-menu-group>\n <sp-menu-group id=\"mg-inherit\" selects=\"inherit\">\n <sp-menu-item>Inherit1</sp-menu-item>\n <!-- 1 -->\n <sp-menu-item>Inherit2</sp-menu-item>\n <!-- 1 -->\n </sp-menu-group>\n </sp-menu>\n `\n );\n\n // 1 & 3 should be menuitemradio\n // 2 shouwl menuitemcheckbox\n\n await waitUntil(\n () => managedItems(el).length === 4,\n `expected outer menu to manage 4 items (2 are inherited), got ${\n managedItems(el).length\n }, with ${el.childItems.length} total`\n );\n await waitUntil(\n () => el.selectedItems.length === 1,\n 'expected 1 selected item'\n );\n await elementUpdated(el);\n\n const firstItem = el.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n\n const secondItem = el.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n const multiGroup = el.querySelector(\n 'sp-menu-group#mg-multi'\n ) as MenuGroup;\n const multiItem1 = multiGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const multiItem2 = multiGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n await waitUntil(\n () => managedItems(multiGroup).length === 4,\n `selects=\"#mg-multi should manage 4 items (2 are inherited), received ${\n managedItems(multiGroup).length\n }`\n );\n\n const singleGroup = el.querySelector(\n 'sp-menu-group#mg-single'\n ) as MenuGroup;\n\n const singleItem1 = singleGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const singleItem2 = singleGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n await waitUntil(\n () => managedItems(singleGroup).length === 2,\n 'selects=\"#mg-none should manage 4 items (2 are inherited)'\n );\n\n const noneGroup = el.querySelector(\n 'sp-menu-group#mg-none'\n ) as MenuGroup;\n const noneItem1 = noneGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const noneItem2 = noneGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n await waitUntil(\n () => managedItems(noneGroup).length === 2,\n `selects=\"#mg-none\" should manage 2 items, received ${\n managedItems(noneGroup).length\n }`\n );\n\n const inheritGroup = el.querySelector(\n 'sp-menu-group#mg-inherit'\n ) as MenuGroup;\n const inheritItem1 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const inheritItem2 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n expect(firstItem.getAttribute('role')).to.equal('menuitemradio');\n expect(secondItem.getAttribute('role')).to.equal('menuitemradio');\n expect(multiItem1.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(multiItem2.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(singleItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(singleItem2.getAttribute('role')).to.equal('menuitemradio');\n expect(noneItem1.getAttribute('role')).to.equal('menuitem');\n expect(noneItem2.getAttribute('role')).to.equal('menuitem');\n expect(inheritItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(inheritItem2.getAttribute('role')).to.equal('menuitemradio');\n\n await elementUpdated(firstItem);\n expect(singleItem1.selected).to.be.true;\n expect(firstItem.selected).to.be.true;\n expect(secondItem.selected, 'second item not selected').to.be.false;\n expect(el.value).to.equal('First');\n expect(el.selectedItems.length).to.equal(1);\n\n expect(firstItem.getAttribute('aria-checked')).to.equal('true');\n expect(secondItem.getAttribute('aria-checked')).to.equal('false');\n\n secondItem.click();\n await elementUpdated(el);\n await elementUpdated(firstItem);\n await elementUpdated(secondItem);\n expect(firstItem.selected, 'first item not selected').to.be.false;\n expect(secondItem.selected).to.be.true;\n expect(firstItem.getAttribute('aria-checked')).to.equal('false');\n expect(secondItem.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Second');\n expect(el.selectedItems.length).to.equal(1);\n\n inheritItem1.click();\n await elementUpdated(el);\n await elementUpdated(inheritItem1);\n await elementUpdated(secondItem);\n expect(secondItem.selected, 'second item not selected again').to.be\n .false;\n expect(inheritItem1.selected).to.be.true;\n expect(secondItem.getAttribute('aria-checked')).to.equal('false');\n expect(inheritItem1.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Inherit1');\n expect(el.selectedItems.length).to.equal(1);\n\n noneItem2.click();\n await elementUpdated(el);\n await elementUpdated(noneGroup);\n await elementUpdated(noneItem2);\n expect(inheritItem1.selected).to.be.true;\n expect(noneItem2.selected, 'none item not selected').to.be.false;\n expect(el.value).to.equal('Inherit1');\n expect(el.selectedItems.length).to.equal(1);\n\n singleItem2.click();\n await elementUpdated(singleGroup);\n await elementUpdated(singleItem1);\n await elementUpdated(singleItem2);\n expect(singleItem2.selected).to.be.true;\n expect(singleItem1.selected, 'first item not selected').to.be.false;\n expect(inheritItem1.selected).to.be.true;\n expect(singleItem1.getAttribute('aria-checked')).to.equal('false');\n expect(singleItem2.getAttribute('aria-checked')).to.equal('true');\n expect(el.value).to.equal('Inherit1');\n expect(el.selectedItems.length).to.equal(1);\n //expect(singleGroup.value).to.equal('Inherit1')\n expect(singleGroup.selectedItems.length).to.equal(1);\n\n multiItem2.click();\n await elementUpdated(el);\n await elementUpdated(multiItem2);\n expect(multiItem1.selected).to.be.true;\n expect(multiItem2.selected).to.be.true;\n expect(inheritItem1.selected).to.be.true;\n expect(multiItem1.getAttribute('aria-checked')).to.equal('true');\n expect(multiItem2.getAttribute('aria-checked')).to.equal('true');\n //expect(multiGroup.value).to.equal('Inherit1')\n expect(multiGroup.selectedItems.length).to.equal(2);\n });\n\n it('handles changing managed items for selects changes', async () => {\n const el = await fixture<Menu>(\n html`\n <sp-menu selects=\"multiple\" value-separator=\"--\">\n <sp-menu-item selected>First</sp-menu-item>\n <sp-menu-item>Second</sp-menu-item>\n <sp-menu-group id=\"mg-inherit\" selects=\"inherit\">\n <sp-menu-item>Inherit1</sp-menu-item>\n <sp-menu-item>Inherit2</sp-menu-item>\n <sp-menu-group id=\"mg-sub-inherit\" selects=\"inherit\">\n <sp-menu-item>SubInherit1</sp-menu-item>\n <sp-menu-item selected>SubInherit2</sp-menu-item>\n </sp-menu-group>\n </sp-menu-group>\n </sp-menu>\n `\n );\n\n await waitUntil(\n () => managedItems(el).length == 6,\n `expected outer menu to manage 6 items, manages ${\n managedItems(el).length\n }`\n );\n await waitUntil(\n () => el.selectedItems.length == 2,\n 'expected 2 selected item'\n );\n await elementUpdated(el);\n\n const inheritGroup = el.querySelector(\n 'sp-menu-group#mg-inherit'\n ) as MenuGroup;\n const inheritItem1 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const inheritItem2 = inheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n const subInheritGroup = el.querySelector(\n 'sp-menu-group#mg-sub-inherit'\n ) as MenuGroup;\n const subInheritItem1 = subInheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(1)'\n ) as MenuItem;\n const subInheritItem2 = subInheritGroup.querySelector(\n 'sp-menu-item:nth-of-type(2)'\n ) as MenuItem;\n\n expect(inheritItem1.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(inheritItem2.getAttribute('role')).to.equal('menuitemcheckbox');\n expect(subInheritItem1.getAttribute('role')).to.equal(\n 'menuitemcheckbox'\n );\n expect(subInheritItem2.getAttribute('role')).to.equal(\n 'menuitemcheckbox'\n );\n expect(el.value).to.equal('First--SubInherit2');\n expect(el.selectedItems.length).to.equal(2);\n inheritGroup.setAttribute('selects', 'single');\n\n await elementUpdated(inheritGroup);\n await elementUpdated(el);\n\n await waitUntil(() => {\n return managedItems(inheritGroup).length === 4;\n }, `expected new single sub-group to manage 4 items, received ${managedItems(inheritGroup).length} because \"selects === ${inheritGroup.selects}`);\n\n await waitUntil(\n () => managedItems(el).length === 2,\n `expected outer menu to manage 2 items with none inherited, received ${\n managedItems(el).length\n }`\n );\n expect(inheritGroup.value).to.equal('SubInherit2');\n expect(inheritGroup.selectedItems.length).to.equal(1);\n expect(el.value).to.equal('First');\n expect(inheritItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(inheritItem2.getAttribute('role')).to.equal('menuitemradio');\n expect(subInheritItem1.getAttribute('role')).to.equal('menuitemradio');\n expect(subInheritItem2.getAttribute('role')).to.equal('menuitemradio');\n });\n it('manages complex slotted menu items', async function () {\n const el = await fixture<ComplexSlottedMenu>(complexSlotted());\n\n await waitUntil(\n () => focusableItems(el.menu).length == 12,\n `expected outer menu to manage 12 items, ${\n el.menu.localName\n } manages ${focusableItems(el.menu).length}`\n );\n\n const menu = el.menu;\n const items: Record<string, MenuItem> = {};\n items.i2 = el.querySelector('#i-2') as MenuItem;\n items.i8 = el.querySelector('#i-8') as MenuItem;\n items.i9 = el.querySelector('#i-9') as MenuItem;\n items.i3 = el.renderRoot.querySelector('#i-3') as MenuItem;\n items.i5 = el.renderRoot.querySelector('#i-5') as MenuItem;\n items.i6 = el.renderRoot.querySelector('#i-6') as MenuItem;\n items.i7 = el.renderRoot.querySelector('#i-7') as MenuItem;\n const group = el.renderRoot.querySelector(\n '#group'\n ) as ComplexSlottedGroup;\n items.i1 = group.renderRoot.querySelector('#i-1') as MenuItem;\n items.i4 = group.renderRoot.querySelector('#i-4') as MenuItem;\n items.i10 = group.renderRoot.querySelector('#i-10') as MenuItem;\n items.i11 = group.renderRoot.querySelector('#i-11') as MenuItem;\n items.i12 = group.renderRoot.querySelector('#i-12') as MenuItem;\n\n const rect = items.i9.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n position: [\n rect.left + rect.width / 2,\n rect.top + rect.height / 2,\n ],\n type: 'click',\n },\n ],\n });\n await elementUpdated(items.i9);\n\n await sendKeys({\n press: 'ArrowDown',\n });\n await sendKeys({\n press: 'ArrowUp',\n });\n await elementUpdated(items.i9);\n expect(items.i9.focused).to.be.true;\n await sendKeys({\n press: 'ArrowDown',\n });\n let i = 9;\n const count = Object.keys(items).length + 1;\n while (!items.i9.focused) {\n i = Math.max(1, (i + 1 + count) % count);\n await elementUpdated(menu);\n await elementUpdated(items[`i${i}`]);\n expect(items[`i${i}`].focused, `i${i} should be focused`).to.be\n .true;\n await sendKeys({\n press: 'ArrowDown',\n });\n await elementUpdated(menu);\n await elementUpdated(items[`i${i}`]);\n }\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -520,7 +520,7 @@ describe("Menu w/ groups [selects]", () => {
520
520
  expect(groupA.value).to.equal("");
521
521
  expect(groupB.value).to.equal("");
522
522
  });
523
- it("manages focus", async () => {
523
+ it("manages focus", async function() {
524
524
  await elementUpdated(groupA);
525
525
  await elementUpdated(groupB);
526
526
  const input = document.createElement("input");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["menu-selects.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*/\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-group.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport { Menu, MenuGroup, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n oneEvent,\n} from '@open-wc/testing';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { spy } from 'sinon';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Menu [selects]', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu>\n `\n );\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu [selects] w/ group', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ group [selects]', () => {\n let el!: Menu;\n let group!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-group selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n group = el.querySelector('sp-menu-group') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(group, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(group.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(group, 'change');\n item1.click();\n await change;\n expect(group.value).to.equal('1');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n group.selects = 'multiple';\n\n await elementUpdated(group);\n\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ groups [selects]', () => {\n let el!: Menu;\n let groupA!: MenuGroup;\n let groupB!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-group selects=\"single\" id=\"group-1\">\n <sp-menu-item value=\"1a\">Option 1a</sp-menu-item>\n <sp-menu-item value=\"2a\">Option 2a</sp-menu-item>\n <sp-menu-item value=\"3a\">Option 3a</sp-menu-item>\n </sp-menu-group>\n <sp-menu-group selects=\"single\" id=\"group-2\">\n <sp-menu-item value=\"1b\">Option 1b</sp-menu-item>\n <sp-menu-item value=\"2b\">Option 2b</sp-menu-item>\n <sp-menu-item value=\"3b\">Option 3b</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n groupA = el.querySelector('sp-menu-group:first-child') as MenuGroup;\n groupB = el.querySelector('sp-menu-group:last-child') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n const boundingRectA = item1a.getBoundingClientRect();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n let change = oneEvent(el, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRectA.x + boundingRectA.width / 2,\n boundingRectA.y + boundingRectA.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n await elementUpdated(item1a);\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n change = oneEvent(el, 'change');\n const boundingRectB = item1b.getBoundingClientRect();\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRectB.x + boundingRectB.width / 2,\n boundingRectB.y + boundingRectB.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n });\n it('on JS clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n let change = oneEvent(el, 'change');\n item1a.click();\n await change;\n expect(groupA.value).to.equal('1a');\n change = oneEvent(el, 'change');\n item1b.click();\n await change;\n expect(groupB.value).to.equal('1b');\n });\n it('can have them `preventDefault()`ed', async () => {\n const preventSpy = spy();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n const item1a = options[0];\n const item1b = options[3];\n groupA.addEventListener('change', (event: Event) => {\n event.preventDefault();\n preventSpy();\n });\n const change = oneEvent(el, 'change');\n item1a.click();\n item1b.click();\n await change;\n expect(preventSpy.callCount).to.equal(1);\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('1b');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('1a');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('2a');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupB.value).to.equal('2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupB.value).to.equal('3b');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n groupA.selects = 'multiple';\n groupB.selects = 'multiple';\n\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n });\n it('manages focus', async () => {\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n const input = document.createElement('input');\n el.insertAdjacentElement('afterend', input);\n input.focus();\n expect(document.activeElement === input).to.be.true;\n await sendKeys({ press: 'Shift+Tab' });\n expect(document.activeElement === groupA).to.be.true;\n await sendKeys({ press: 'ArrowDown' });\n await sendKeys({ press: 'ArrowUp' });\n\n await elementUpdated(el);\n let optionCount = 0;\n for (const option of options) {\n const parentElement = option.parentElement as Menu;\n expect(document.activeElement === parentElement, 'parent focused')\n .to.be.true;\n expect(option.focused, `option ${optionCount} visually focused`).to\n .be.true;\n await sendKeys({ press: 'Space' });\n expect(parentElement.value).to.equal(option.value);\n await sendKeys({ press: 'ArrowDown' });\n optionCount += 1;\n }\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*/\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-group.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport { Menu, MenuGroup, MenuItem } from '@spectrum-web-components/menu';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n oneEvent,\n} from '@open-wc/testing';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { spy } from 'sinon';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Menu [selects]', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu>\n `\n );\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu [selects] w/ group', () => {\n let el!: Menu;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu selects=\"single\">\n <sp-menu-group selects=\"inherit\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(el, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(el.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(el, 'change');\n item1.click();\n await change;\n expect(el.value).to.equal('1');\n });\n });\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(el.value).to.equal('');\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n el.selects = 'multiple';\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(el.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(el.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ group [selects]', () => {\n let el!: Menu;\n let group!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-group selects=\"single\">\n <sp-menu-item value=\"1\">Option 1</sp-menu-item>\n <sp-menu-item value=\"2\">Option 2</sp-menu-item>\n <sp-menu-item value=\"3\">Option 3</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n group = el.querySelector('sp-menu-group') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1 = options[0];\n const boundingRect = item1.getBoundingClientRect();\n const change = oneEvent(group, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(group.value).to.equal('1');\n });\n it('on JS clicks', async () => {\n const item1 = options[0];\n const change = oneEvent(group, 'change');\n item1.click();\n await change;\n expect(group.value).to.equal('1');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n group.selects = 'multiple';\n\n await elementUpdated(group);\n\n expect(group.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(group.value).to.equal('1');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('1,2,3');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(group.value).to.equal('2,3');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('3');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n await elementUpdated(el);\n\n expect(group.value).to.equal('');\n });\n});\n\ndescribe('Menu w/ groups [selects]', () => {\n let el!: Menu;\n let groupA!: MenuGroup;\n let groupB!: MenuGroup;\n let options!: MenuItem[];\n beforeEach(async () => {\n el = await fixture<Menu>(\n html`\n <sp-menu>\n <sp-menu-group selects=\"single\" id=\"group-1\">\n <sp-menu-item value=\"1a\">Option 1a</sp-menu-item>\n <sp-menu-item value=\"2a\">Option 2a</sp-menu-item>\n <sp-menu-item value=\"3a\">Option 3a</sp-menu-item>\n </sp-menu-group>\n <sp-menu-group selects=\"single\" id=\"group-2\">\n <sp-menu-item value=\"1b\">Option 1b</sp-menu-item>\n <sp-menu-item value=\"2b\">Option 2b</sp-menu-item>\n <sp-menu-item value=\"3b\">Option 3b</sp-menu-item>\n </sp-menu-group>\n </sp-menu>\n `\n );\n groupA = el.querySelector('sp-menu-group:first-child') as MenuGroup;\n groupB = el.querySelector('sp-menu-group:last-child') as MenuGroup;\n options = [...el.querySelectorAll('sp-menu-item')] as MenuItem[];\n });\n describe('fires `change` events', async () => {\n it('on browser clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n const boundingRectA = item1a.getBoundingClientRect();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n let change = oneEvent(el, 'change');\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRectA.x + boundingRectA.width / 2,\n boundingRectA.y + boundingRectA.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n await elementUpdated(item1a);\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n change = oneEvent(el, 'change');\n const boundingRectB = item1b.getBoundingClientRect();\n sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRectB.x + boundingRectB.width / 2,\n boundingRectB.y + boundingRectB.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n });\n it('on JS clicks', async () => {\n const item1a = options[0];\n const item1b = options[3];\n let change = oneEvent(el, 'change');\n item1a.click();\n await change;\n expect(groupA.value).to.equal('1a');\n change = oneEvent(el, 'change');\n item1b.click();\n await change;\n expect(groupB.value).to.equal('1b');\n });\n it('can have them `preventDefault()`ed', async () => {\n const preventSpy = spy();\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n const item1a = options[0];\n const item1b = options[3];\n groupA.addEventListener('change', (event: Event) => {\n event.preventDefault();\n preventSpy();\n });\n const change = oneEvent(el, 'change');\n item1a.click();\n item1b.click();\n await change;\n expect(preventSpy.callCount).to.equal(1);\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('1b');\n });\n });\n\n it('manages a single selection when [selects=\"single\"]', async () => {\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('1a');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('2a');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupB.value).to.equal('2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupB.value).to.equal('3b');\n });\n it('manages multiple selections when [selects=\"multiple\"]', async () => {\n groupA.selects = 'multiple';\n groupB.selects = 'multiple';\n\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n\n let change = oneEvent(el, 'change');\n options[0].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n expect(groupA.value).to.equal('1a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('1a,2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[0].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('1b,2b,3b');\n\n change = oneEvent(el, 'change');\n options[3].click();\n await change;\n\n expect(groupA.value).to.equal('2a,3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[1].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('2b,3b');\n\n change = oneEvent(el, 'change');\n options[4].click();\n await change;\n\n expect(groupA.value).to.equal('3a');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[2].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('3b');\n\n change = oneEvent(el, 'change');\n options[5].click();\n await change;\n\n expect(groupA.value).to.equal('');\n expect(groupB.value).to.equal('');\n });\n it('manages focus', async function () {\n await elementUpdated(groupA);\n await elementUpdated(groupB);\n const input = document.createElement('input');\n el.insertAdjacentElement('afterend', input);\n input.focus();\n expect(document.activeElement === input).to.be.true;\n await sendKeys({ press: 'Shift+Tab' });\n expect(document.activeElement === groupA).to.be.true;\n await sendKeys({ press: 'ArrowDown' });\n await sendKeys({ press: 'ArrowUp' });\n\n await elementUpdated(el);\n let optionCount = 0;\n for (const option of options) {\n const parentElement = option.parentElement as Menu;\n expect(document.activeElement === parentElement, 'parent focused')\n .to.be.true;\n expect(option.focused, `option ${optionCount} visually focused`).to\n .be.true;\n await sendKeys({ press: 'Space' });\n expect(parentElement.value).to.equal(option.value);\n await sendKeys({ press: 'ArrowDown' });\n optionCount += 1;\n }\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -17,11 +17,11 @@ import { spy } from "sinon";
17
17
  import { sendKeys } from "@web/test-runner-commands";
18
18
  import "@spectrum-web-components/action-menu/sp-action-menu.js";
19
19
  import "@spectrum-web-components/menu/sp-menu-group.js";
20
+ import "@spectrum-web-components/overlay/sp-overlay.js";
20
21
  import "@spectrum-web-components/icons-workflow/icons/sp-icon-show-menu.js";
21
- import { isWebKit } from "@spectrum-web-components/shared";
22
22
  async function styledFixture(story, dir = "ltr") {
23
23
  const test = await fixture(html`
24
- <sp-theme dir=${dir} scale="medium" color="dark">
24
+ <sp-theme dir=${dir} scale="medium" color="light">
25
25
  ${story}
26
26
  <style>
27
27
  sp-theme {
@@ -130,7 +130,7 @@ describe("Submenu", () => {
130
130
  expect(submenuChanged.withArgs("Two").calledOnce, "submenu changed").to.be.true;
131
131
  expect(rootChanged.withArgs("Has submenu").calledOnce, "root changed").to.be.true;
132
132
  });
133
- it("closes deep tree on selection", async () => {
133
+ it("closes deep tree on selection", async function() {
134
134
  const rootChanged = spy();
135
135
  const submenuChanged = spy();
136
136
  const subSubmenuChanged = spy();
@@ -203,7 +203,7 @@ describe("Submenu", () => {
203
203
  sendMouse({
204
204
  steps: [
205
205
  {
206
- type: "click",
206
+ type: "move",
207
207
  position: [
208
208
  item2BoundingRect.left + item2BoundingRect.width / 2,
209
209
  item2BoundingRect.top + item2BoundingRect.height / 2
@@ -214,7 +214,18 @@ describe("Submenu", () => {
214
214
  await opened;
215
215
  expect(item2.open).to.be.true;
216
216
  const closed = oneEvent(rootItem, "sp-closed");
217
- itemC.click();
217
+ const itemCBoundingRect = itemC.getBoundingClientRect();
218
+ await sendMouse({
219
+ steps: [
220
+ {
221
+ type: "click",
222
+ position: [
223
+ itemCBoundingRect.left + itemCBoundingRect.width / 2,
224
+ itemCBoundingRect.top + itemCBoundingRect.height / 2
225
+ ]
226
+ }
227
+ ]
228
+ });
218
229
  await closed;
219
230
  expect(rootChanged.calledWith("Has submenu"), "root changed").to.be.true;
220
231
  expect(submenuChanged.calledWith("Two"), "submenu changed").to.be.true;
@@ -276,7 +287,7 @@ describe("Submenu", () => {
276
287
  el.focus();
277
288
  await elementUpdated(el);
278
289
  let opened = oneEvent(rootItem, "sp-opened");
279
- sendKeys({
290
+ await sendKeys({
280
291
  press: testData.openKey
281
292
  });
282
293
  await opened;
@@ -286,7 +297,7 @@ describe("Submenu", () => {
286
297
  `${(_a = document.activeElement) == null ? void 0 : _a.id}`
287
298
  ).to.be.true;
288
299
  let closed = oneEvent(rootItem, "sp-closed");
289
- sendKeys({
300
+ await sendKeys({
290
301
  press: testData.closeKey
291
302
  });
292
303
  await closed;
@@ -296,7 +307,7 @@ describe("Submenu", () => {
296
307
  `${(_b = document.activeElement) == null ? void 0 : _b.id}`
297
308
  ).to.be.true;
298
309
  opened = oneEvent(rootItem, "sp-opened");
299
- sendKeys({
310
+ await sendKeys({
300
311
  press: testData.openKey
301
312
  });
302
313
  await opened;
@@ -304,14 +315,13 @@ describe("Submenu", () => {
304
315
  await sendKeys({
305
316
  press: "ArrowDown"
306
317
  });
318
+ await elementUpdated(submenu);
307
319
  await elementUpdated(submenuItem);
308
- await nextFrame();
309
- await nextFrame();
310
320
  expect(submenu.getAttribute("aria-activedescendant")).to.equal(
311
321
  submenuItem.id
312
322
  );
313
323
  closed = oneEvent(rootItem, "sp-closed");
314
- sendKeys({
324
+ await sendKeys({
315
325
  press: "Enter"
316
326
  });
317
327
  await closed;
@@ -452,7 +462,7 @@ describe("Submenu", () => {
452
462
  });
453
463
  await closed;
454
464
  });
455
- it("continues to open when mousing between menu item and submenu", async () => {
465
+ it("continues to open when mousing between menu item and submenu", async function() {
456
466
  const clickSpy = spy();
457
467
  const el = await styledFixture(
458
468
  html`
@@ -496,6 +506,12 @@ describe("Submenu", () => {
496
506
  });
497
507
  await nextFrame();
498
508
  await nextFrame();
509
+ await nextFrame();
510
+ await nextFrame();
511
+ await nextFrame();
512
+ await nextFrame();
513
+ await nextFrame();
514
+ await nextFrame();
499
515
  const subItemBoundingRect = subItem.getBoundingClientRect();
500
516
  await sendMouse({
501
517
  steps: [
@@ -713,9 +729,6 @@ describe("Submenu", () => {
713
729
  await rootMenu2Opened;
714
730
  });
715
731
  it("closes back to the first overlay without a `root` when clicking away", async function() {
716
- if (isWebKit()) {
717
- this.skip();
718
- }
719
732
  const el = await styledFixture(html`
720
733
  <sp-action-menu>
721
734
  <sp-icon-show-menu slot="icon"></sp-icon-show-menu>
@@ -836,9 +849,6 @@ describe("Submenu", () => {
836
849
  await closed;
837
850
  });
838
851
  it("closes decendent menus when Menu Item in ancestor is clicked", async function() {
839
- if (isWebKit()) {
840
- this.skip();
841
- }
842
852
  const el = await styledFixture(html`
843
853
  <sp-action-menu>
844
854
  <sp-icon-show-menu slot="icon"></sp-icon-show-menu>