@spectrum-web-components/menu 0.36.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/custom-elements.json +459 -159
  2. package/package.json +9 -9
  3. package/src/Menu.d.ts +16 -6
  4. package/src/Menu.dev.js +179 -65
  5. package/src/Menu.dev.js.map +2 -2
  6. package/src/Menu.js +7 -3
  7. package/src/Menu.js.map +3 -3
  8. package/src/MenuGroup.d.ts +0 -2
  9. package/src/MenuGroup.dev.js +8 -12
  10. package/src/MenuGroup.dev.js.map +2 -2
  11. package/src/MenuGroup.js +3 -5
  12. package/src/MenuGroup.js.map +3 -3
  13. package/src/MenuItem.d.ts +30 -23
  14. package/src/MenuItem.dev.js +209 -215
  15. package/src/MenuItem.dev.js.map +3 -3
  16. package/src/MenuItem.js +36 -18
  17. package/src/MenuItem.js.map +3 -3
  18. package/src/menu-item.css.dev.js +9 -9
  19. package/src/menu-item.css.dev.js.map +1 -1
  20. package/src/menu-item.css.js +9 -9
  21. package/src/menu-item.css.js.map +1 -1
  22. package/src/menu.css.dev.js +1 -1
  23. package/src/menu.css.dev.js.map +1 -1
  24. package/src/menu.css.js +1 -1
  25. package/src/menu.css.js.map +1 -1
  26. package/src/spectrum-config.js +27 -1
  27. package/src/spectrum-menu-item.css.dev.js +8 -8
  28. package/src/spectrum-menu-item.css.dev.js.map +1 -1
  29. package/src/spectrum-menu-item.css.js +8 -8
  30. package/src/spectrum-menu-item.css.js.map +1 -1
  31. package/stories/index.js +4 -0
  32. package/stories/index.js.map +2 -2
  33. package/stories/menu-item.stories.js +10 -0
  34. package/stories/menu-item.stories.js.map +2 -2
  35. package/stories/menu.stories.js +47 -0
  36. package/stories/menu.stories.js.map +2 -2
  37. package/stories/submenu.stories.js +117 -104
  38. package/stories/submenu.stories.js.map +3 -3
  39. package/test/menu-group.test.js +14 -1
  40. package/test/menu-group.test.js.map +2 -2
  41. package/test/menu-item.test.js +36 -0
  42. package/test/menu-item.test.js.map +2 -2
  43. package/test/menu-selects.test.js +3 -1
  44. package/test/menu-selects.test.js.map +2 -2
  45. package/test/menu.test.js +9 -1
  46. package/test/menu.test.js.map +2 -2
  47. package/test/submenu.test.js +208 -84
  48. package/test/submenu.test.js.map +2 -2
@@ -83,8 +83,8 @@
83
83
  "type": {
84
84
  "text": "boolean"
85
85
  },
86
- "privacy": "public",
87
- "default": "false"
86
+ "privacy": "private",
87
+ "readonly": true
88
88
  },
89
89
  {
90
90
  "kind": "field",
@@ -267,7 +267,7 @@
267
267
  }
268
268
  }
269
269
  ],
270
- "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the capture phase the first\nMenu based element that the event encounters will manage the focus state of the\ndispatching `<sp-menu-item>` element."
270
+ "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the CAPTURE phase the first\nMenu based element that the event encounters will manage the focus state of the\ndispatching `<sp-menu-item>` element."
271
271
  },
272
272
  {
273
273
  "kind": "method",
@@ -286,7 +286,7 @@
286
286
  }
287
287
  }
288
288
  ],
289
- "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the bubble phase the first\nMenu based element that the event encounters that does not inherit selection will\nmanage the selection state of the dispatching `<sp-menu-item>` element."
289
+ "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the BUBBLE phase the first\nMenu based element that the event encounters that does not inherit selection will\nmanage the selection state of the dispatching `<sp-menu-item>` element."
290
290
  },
291
291
  {
292
292
  "kind": "method",
@@ -317,9 +317,9 @@
317
317
  },
318
318
  "parameters": [
319
319
  {
320
- "name": "event",
320
+ "name": "item",
321
321
  "type": {
322
- "text": "MenuItemRemovedEvent"
322
+ "text": "MenuItem"
323
323
  }
324
324
  }
325
325
  ]
@@ -345,7 +345,7 @@
345
345
  },
346
346
  {
347
347
  "kind": "method",
348
- "name": "onClick",
348
+ "name": "handleClick",
349
349
  "privacy": "private",
350
350
  "return": {
351
351
  "type": {
@@ -417,6 +417,58 @@
417
417
  }
418
418
  }
419
419
  },
420
+ {
421
+ "kind": "field",
422
+ "name": "descendentOverlays",
423
+ "privacy": "private",
424
+ "default": "new Map<Overlay, Overlay>()"
425
+ },
426
+ {
427
+ "kind": "method",
428
+ "name": "handleDescendentOverlayOpened",
429
+ "privacy": "protected",
430
+ "return": {
431
+ "type": {
432
+ "text": "void"
433
+ }
434
+ },
435
+ "parameters": [
436
+ {
437
+ "name": "event",
438
+ "type": {
439
+ "text": "Event"
440
+ }
441
+ }
442
+ ]
443
+ },
444
+ {
445
+ "kind": "method",
446
+ "name": "handleDescendentOverlayClosed",
447
+ "privacy": "protected",
448
+ "return": {
449
+ "type": {
450
+ "text": "void"
451
+ }
452
+ },
453
+ "parameters": [
454
+ {
455
+ "name": "event",
456
+ "type": {
457
+ "text": "Event"
458
+ }
459
+ }
460
+ ]
461
+ },
462
+ {
463
+ "kind": "field",
464
+ "name": "handleSubmenuClosed",
465
+ "privacy": "public"
466
+ },
467
+ {
468
+ "kind": "field",
469
+ "name": "handleSubmenuOpened",
470
+ "privacy": "public"
471
+ },
420
472
  {
421
473
  "kind": "method",
422
474
  "name": "selectOrToggleItem",
@@ -464,9 +516,9 @@
464
516
  },
465
517
  "parameters": [
466
518
  {
467
- "name": "code",
519
+ "name": "event",
468
520
  "type": {
469
- "text": "string"
521
+ "text": "KeyboardEvent"
470
522
  }
471
523
  }
472
524
  ]
@@ -517,6 +569,15 @@
517
569
  }
518
570
  }
519
571
  },
572
+ {
573
+ "kind": "field",
574
+ "name": "_hasUpdatedSelectedItemIndex",
575
+ "type": {
576
+ "text": "boolean"
577
+ },
578
+ "privacy": "private",
579
+ "default": "false"
580
+ },
520
581
  {
521
582
  "kind": "method",
522
583
  "name": "updateSelectedItemIndex",
@@ -546,6 +607,16 @@
546
607
  }
547
608
  }
548
609
  },
610
+ {
611
+ "kind": "method",
612
+ "name": "updateCache",
613
+ "privacy": "private",
614
+ "return": {
615
+ "type": {
616
+ "text": "Promise<void>"
617
+ }
618
+ }
619
+ },
549
620
  {
550
621
  "kind": "method",
551
622
  "name": "updateItemFocus",
@@ -556,6 +627,16 @@
556
627
  }
557
628
  }
558
629
  },
630
+ {
631
+ "kind": "method",
632
+ "name": "closeDescendentOverlays",
633
+ "privacy": "public",
634
+ "return": {
635
+ "type": {
636
+ "text": "void"
637
+ }
638
+ }
639
+ },
559
640
  {
560
641
  "kind": "method",
561
642
  "name": "forwardFocusVisibleToItem",
@@ -575,13 +656,32 @@
575
656
  ]
576
657
  },
577
658
  {
578
- "kind": "field",
579
- "name": "_notFirstUpdated",
580
- "type": {
581
- "text": "boolean"
582
- },
659
+ "kind": "method",
660
+ "name": "handleSlotchange",
583
661
  "privacy": "private",
584
- "default": "false"
662
+ "return": {
663
+ "type": {
664
+ "text": "void"
665
+ }
666
+ },
667
+ "parameters": [
668
+ {
669
+ "name": "{\n target,\n }",
670
+ "type": {
671
+ "text": "Event & { target: HTMLSlotElement }"
672
+ }
673
+ }
674
+ ]
675
+ },
676
+ {
677
+ "kind": "method",
678
+ "name": "renderMenuItemSlot",
679
+ "privacy": "protected",
680
+ "return": {
681
+ "type": {
682
+ "text": "TemplateResult"
683
+ }
684
+ }
585
685
  },
586
686
  {
587
687
  "kind": "method",
@@ -606,6 +706,11 @@
606
706
  "name": "cacheUpdated",
607
707
  "privacy": "protected"
608
708
  },
709
+ {
710
+ "kind": "field",
711
+ "name": "resolveCacheUpdated",
712
+ "privacy": "protected"
713
+ },
609
714
  {
610
715
  "kind": "method",
611
716
  "name": "getUpdateComplete",
@@ -752,16 +857,6 @@
752
857
  }
753
858
  ],
754
859
  "members": [
755
- {
756
- "kind": "field",
757
- "name": "instances",
758
- "type": {
759
- "text": "number"
760
- },
761
- "privacy": "private",
762
- "static": true,
763
- "default": "1"
764
- },
765
860
  {
766
861
  "kind": "field",
767
862
  "name": "headerId",
@@ -769,7 +864,7 @@
769
864
  "text": "string"
770
865
  },
771
866
  "privacy": "private",
772
- "default": "`sp-menu-group-label-${MenuGroup.instances}`"
867
+ "default": "''"
773
868
  },
774
869
  {
775
870
  "kind": "field",
@@ -816,8 +911,8 @@
816
911
  "type": {
817
912
  "text": "boolean"
818
913
  },
819
- "privacy": "public",
820
- "default": "false",
914
+ "privacy": "private",
915
+ "readonly": true,
821
916
  "inheritedFrom": {
822
917
  "name": "Menu",
823
918
  "module": "src/Menu.js"
@@ -1067,7 +1162,7 @@
1067
1162
  }
1068
1163
  }
1069
1164
  ],
1070
- "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the capture phase the first\nMenu based element that the event encounters will manage the focus state of the\ndispatching `<sp-menu-item>` element.",
1165
+ "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the CAPTURE phase the first\nMenu based element that the event encounters will manage the focus state of the\ndispatching `<sp-menu-item>` element.",
1071
1166
  "inheritedFrom": {
1072
1167
  "name": "Menu",
1073
1168
  "module": "src/Menu.js"
@@ -1090,7 +1185,7 @@
1090
1185
  }
1091
1186
  }
1092
1187
  ],
1093
- "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the bubble phase the first\nMenu based element that the event encounters that does not inherit selection will\nmanage the selection state of the dispatching `<sp-menu-item>` element.",
1188
+ "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the BUBBLE phase the first\nMenu based element that the event encounters that does not inherit selection will\nmanage the selection state of the dispatching `<sp-menu-item>` element.",
1094
1189
  "inheritedFrom": {
1095
1190
  "name": "Menu",
1096
1191
  "module": "src/Menu.js"
@@ -1129,9 +1224,9 @@
1129
1224
  },
1130
1225
  "parameters": [
1131
1226
  {
1132
- "name": "event",
1227
+ "name": "item",
1133
1228
  "type": {
1134
- "text": "MenuItemRemovedEvent"
1229
+ "text": "MenuItem"
1135
1230
  }
1136
1231
  }
1137
1232
  ],
@@ -1165,7 +1260,7 @@
1165
1260
  },
1166
1261
  {
1167
1262
  "kind": "method",
1168
- "name": "onClick",
1263
+ "name": "handleClick",
1169
1264
  "privacy": "private",
1170
1265
  "return": {
1171
1266
  "type": {
@@ -1257,6 +1352,78 @@
1257
1352
  "module": "src/Menu.js"
1258
1353
  }
1259
1354
  },
1355
+ {
1356
+ "kind": "field",
1357
+ "name": "descendentOverlays",
1358
+ "privacy": "private",
1359
+ "default": "new Map<Overlay, Overlay>()",
1360
+ "inheritedFrom": {
1361
+ "name": "Menu",
1362
+ "module": "src/Menu.js"
1363
+ }
1364
+ },
1365
+ {
1366
+ "kind": "method",
1367
+ "name": "handleDescendentOverlayOpened",
1368
+ "privacy": "protected",
1369
+ "return": {
1370
+ "type": {
1371
+ "text": "void"
1372
+ }
1373
+ },
1374
+ "parameters": [
1375
+ {
1376
+ "name": "event",
1377
+ "type": {
1378
+ "text": "Event"
1379
+ }
1380
+ }
1381
+ ],
1382
+ "inheritedFrom": {
1383
+ "name": "Menu",
1384
+ "module": "src/Menu.js"
1385
+ }
1386
+ },
1387
+ {
1388
+ "kind": "method",
1389
+ "name": "handleDescendentOverlayClosed",
1390
+ "privacy": "protected",
1391
+ "return": {
1392
+ "type": {
1393
+ "text": "void"
1394
+ }
1395
+ },
1396
+ "parameters": [
1397
+ {
1398
+ "name": "event",
1399
+ "type": {
1400
+ "text": "Event"
1401
+ }
1402
+ }
1403
+ ],
1404
+ "inheritedFrom": {
1405
+ "name": "Menu",
1406
+ "module": "src/Menu.js"
1407
+ }
1408
+ },
1409
+ {
1410
+ "kind": "field",
1411
+ "name": "handleSubmenuClosed",
1412
+ "privacy": "public",
1413
+ "inheritedFrom": {
1414
+ "name": "Menu",
1415
+ "module": "src/Menu.js"
1416
+ }
1417
+ },
1418
+ {
1419
+ "kind": "field",
1420
+ "name": "handleSubmenuOpened",
1421
+ "privacy": "public",
1422
+ "inheritedFrom": {
1423
+ "name": "Menu",
1424
+ "module": "src/Menu.js"
1425
+ }
1426
+ },
1260
1427
  {
1261
1428
  "kind": "method",
1262
1429
  "name": "selectOrToggleItem",
@@ -1312,9 +1479,9 @@
1312
1479
  },
1313
1480
  "parameters": [
1314
1481
  {
1315
- "name": "code",
1482
+ "name": "event",
1316
1483
  "type": {
1317
- "text": "string"
1484
+ "text": "KeyboardEvent"
1318
1485
  }
1319
1486
  }
1320
1487
  ],
@@ -1381,6 +1548,19 @@
1381
1548
  "module": "src/Menu.js"
1382
1549
  }
1383
1550
  },
1551
+ {
1552
+ "kind": "field",
1553
+ "name": "_hasUpdatedSelectedItemIndex",
1554
+ "type": {
1555
+ "text": "boolean"
1556
+ },
1557
+ "privacy": "private",
1558
+ "default": "false",
1559
+ "inheritedFrom": {
1560
+ "name": "Menu",
1561
+ "module": "src/Menu.js"
1562
+ }
1563
+ },
1384
1564
  {
1385
1565
  "kind": "method",
1386
1566
  "name": "updateSelectedItemIndex",
@@ -1422,6 +1602,20 @@
1422
1602
  "module": "src/Menu.js"
1423
1603
  }
1424
1604
  },
1605
+ {
1606
+ "kind": "method",
1607
+ "name": "updateCache",
1608
+ "privacy": "private",
1609
+ "return": {
1610
+ "type": {
1611
+ "text": "Promise<void>"
1612
+ }
1613
+ },
1614
+ "inheritedFrom": {
1615
+ "name": "Menu",
1616
+ "module": "src/Menu.js"
1617
+ }
1618
+ },
1425
1619
  {
1426
1620
  "kind": "method",
1427
1621
  "name": "updateItemFocus",
@@ -1436,6 +1630,20 @@
1436
1630
  "module": "src/Menu.js"
1437
1631
  }
1438
1632
  },
1633
+ {
1634
+ "kind": "method",
1635
+ "name": "closeDescendentOverlays",
1636
+ "privacy": "public",
1637
+ "return": {
1638
+ "type": {
1639
+ "text": "void"
1640
+ }
1641
+ },
1642
+ "inheritedFrom": {
1643
+ "name": "Menu",
1644
+ "module": "src/Menu.js"
1645
+ }
1646
+ },
1439
1647
  {
1440
1648
  "kind": "method",
1441
1649
  "name": "forwardFocusVisibleToItem",
@@ -1459,13 +1667,22 @@
1459
1667
  }
1460
1668
  },
1461
1669
  {
1462
- "kind": "field",
1463
- "name": "_notFirstUpdated",
1464
- "type": {
1465
- "text": "boolean"
1466
- },
1670
+ "kind": "method",
1671
+ "name": "handleSlotchange",
1467
1672
  "privacy": "private",
1468
- "default": "false",
1673
+ "return": {
1674
+ "type": {
1675
+ "text": "void"
1676
+ }
1677
+ },
1678
+ "parameters": [
1679
+ {
1680
+ "name": "{\n target,\n }",
1681
+ "type": {
1682
+ "text": "Event & { target: HTMLSlotElement }"
1683
+ }
1684
+ }
1685
+ ],
1469
1686
  "inheritedFrom": {
1470
1687
  "name": "Menu",
1471
1688
  "module": "src/Menu.js"
@@ -1473,11 +1690,11 @@
1473
1690
  },
1474
1691
  {
1475
1692
  "kind": "method",
1476
- "name": "selectsChanged",
1693
+ "name": "renderMenuItemSlot",
1477
1694
  "privacy": "protected",
1478
1695
  "return": {
1479
1696
  "type": {
1480
- "text": "void"
1697
+ "text": "TemplateResult"
1481
1698
  }
1482
1699
  },
1483
1700
  "inheritedFrom": {
@@ -1486,8 +1703,22 @@
1486
1703
  }
1487
1704
  },
1488
1705
  {
1489
- "kind": "field",
1490
- "name": "childItemsUpdated",
1706
+ "kind": "method",
1707
+ "name": "selectsChanged",
1708
+ "privacy": "protected",
1709
+ "return": {
1710
+ "type": {
1711
+ "text": "void"
1712
+ }
1713
+ },
1714
+ "inheritedFrom": {
1715
+ "name": "Menu",
1716
+ "module": "src/Menu.js"
1717
+ }
1718
+ },
1719
+ {
1720
+ "kind": "field",
1721
+ "name": "childItemsUpdated",
1491
1722
  "type": {
1492
1723
  "text": "Promise<unknown[]>"
1493
1724
  },
@@ -1506,6 +1737,15 @@
1506
1737
  "module": "src/Menu.js"
1507
1738
  }
1508
1739
  },
1740
+ {
1741
+ "kind": "field",
1742
+ "name": "resolveCacheUpdated",
1743
+ "privacy": "protected",
1744
+ "inheritedFrom": {
1745
+ "name": "Menu",
1746
+ "module": "src/Menu.js"
1747
+ }
1748
+ },
1509
1749
  {
1510
1750
  "kind": "method",
1511
1751
  "name": "getUpdateComplete",
@@ -1632,34 +1872,11 @@
1632
1872
  {
1633
1873
  "kind": "class",
1634
1874
  "description": "",
1635
- "name": "MenuItemRemovedEvent",
1875
+ "name": "MenuItemAddedOrUpdatedEvent",
1636
1876
  "members": [
1637
- {
1638
- "kind": "field",
1639
- "name": "item",
1640
- "type": {
1641
- "text": "MenuItem"
1642
- },
1643
- "readonly": true
1644
- },
1645
- {
1646
- "kind": "field",
1647
- "name": "_item",
1648
- "type": {
1649
- "text": "MenuItem"
1650
- }
1651
- },
1652
- {
1653
- "kind": "field",
1654
- "name": "focused",
1655
- "type": {
1656
- "text": "boolean"
1657
- },
1658
- "default": "false"
1659
- },
1660
1877
  {
1661
1878
  "kind": "method",
1662
- "name": "reset",
1879
+ "name": "clear",
1663
1880
  "return": {
1664
1881
  "type": {
1665
1882
  "text": "void"
@@ -1673,25 +1890,11 @@
1673
1890
  }
1674
1891
  }
1675
1892
  ]
1676
- }
1677
- ],
1678
- "superclass": {
1679
- "name": "Event",
1680
- "module": "src/MenuItem.ts"
1681
- }
1682
- },
1683
- {
1684
- "kind": "class",
1685
- "description": "",
1686
- "name": "MenuItemAddedOrUpdatedEvent",
1687
- "members": [
1688
- {
1689
- "kind": "field",
1690
- "name": "focusRoot"
1691
1893
  },
1692
1894
  {
1693
1895
  "kind": "field",
1694
- "name": "selectionRoot"
1896
+ "name": "menuCascade",
1897
+ "default": "new WeakMap<HTMLElement, MenuCascadeItem>()"
1695
1898
  },
1696
1899
  {
1697
1900
  "kind": "field",
@@ -1706,7 +1909,8 @@
1706
1909
  "name": "_item",
1707
1910
  "type": {
1708
1911
  "text": "MenuItem"
1709
- }
1912
+ },
1913
+ "privacy": "private"
1710
1914
  },
1711
1915
  {
1712
1916
  "kind": "field",
@@ -1714,30 +1918,6 @@
1714
1918
  "type": {
1715
1919
  "text": "Menu | undefined"
1716
1920
  }
1717
- },
1718
- {
1719
- "kind": "field",
1720
- "name": "_currentAncestorWithSelects",
1721
- "type": {
1722
- "text": "Menu | undefined"
1723
- }
1724
- },
1725
- {
1726
- "kind": "method",
1727
- "name": "reset",
1728
- "return": {
1729
- "type": {
1730
- "text": "void"
1731
- }
1732
- },
1733
- "parameters": [
1734
- {
1735
- "name": "item",
1736
- "type": {
1737
- "text": "MenuItem"
1738
- }
1739
- }
1740
- ]
1741
1921
  }
1742
1922
  ],
1743
1923
  "superclass": {
@@ -1754,6 +1934,10 @@
1754
1934
  "description": "text content to display within the Menu Item",
1755
1935
  "name": ""
1756
1936
  },
1937
+ {
1938
+ "description": "description to be placed below the label of the Menu Item",
1939
+ "name": "description"
1940
+ },
1757
1941
  {
1758
1942
  "description": "icon element to be placed at the start of the Menu Item",
1759
1943
  "name": "icon"
@@ -1770,21 +1954,17 @@
1770
1954
  "members": [
1771
1955
  {
1772
1956
  "kind": "field",
1773
- "name": "instanceCount",
1957
+ "name": "abortControllerPointer",
1774
1958
  "type": {
1775
- "text": "number"
1776
- },
1777
- "static": true,
1778
- "default": "0"
1959
+ "text": "AbortController"
1960
+ }
1779
1961
  },
1780
1962
  {
1781
1963
  "kind": "field",
1782
- "name": "isInSubmenu",
1964
+ "name": "abortControllerSubmenu",
1783
1965
  "type": {
1784
- "text": "boolean"
1785
- },
1786
- "privacy": "private",
1787
- "default": "false"
1966
+ "text": "AbortController"
1967
+ }
1788
1968
  },
1789
1969
  {
1790
1970
  "kind": "field",
@@ -1857,6 +2037,20 @@
1857
2037
  "attribute": "has-submenu",
1858
2038
  "reflects": true
1859
2039
  },
2040
+ {
2041
+ "kind": "field",
2042
+ "name": "contentSlot",
2043
+ "type": {
2044
+ "text": "HTMLSlotElement"
2045
+ }
2046
+ },
2047
+ {
2048
+ "kind": "field",
2049
+ "name": "iconSlot",
2050
+ "type": {
2051
+ "text": "HTMLSlotElement"
2052
+ }
2053
+ },
1860
2054
  {
1861
2055
  "kind": "field",
1862
2056
  "name": "noWrap",
@@ -1876,6 +2070,14 @@
1876
2070
  },
1877
2071
  "privacy": "private"
1878
2072
  },
2073
+ {
2074
+ "kind": "field",
2075
+ "name": "overlayElement",
2076
+ "type": {
2077
+ "text": "Overlay"
2078
+ },
2079
+ "privacy": "public"
2080
+ },
1879
2081
  {
1880
2082
  "kind": "field",
1881
2083
  "name": "focusElement",
@@ -1919,7 +2121,8 @@
1919
2121
  },
1920
2122
  "privacy": "public",
1921
2123
  "default": "false",
1922
- "attribute": "open"
2124
+ "attribute": "open",
2125
+ "reflects": true
1923
2126
  },
1924
2127
  {
1925
2128
  "kind": "method",
@@ -1950,14 +2153,9 @@
1950
2153
  ]
1951
2154
  },
1952
2155
  {
1953
- "kind": "method",
2156
+ "kind": "field",
1954
2157
  "name": "proxyFocus",
1955
- "privacy": "private",
1956
- "return": {
1957
- "type": {
1958
- "text": "void"
1959
- }
1960
- }
2158
+ "privacy": "private"
1961
2159
  },
1962
2160
  {
1963
2161
  "kind": "method",
@@ -1979,6 +2177,16 @@
1979
2177
  }
1980
2178
  }
1981
2179
  },
2180
+ {
2181
+ "kind": "method",
2182
+ "name": "renderSubmenu",
2183
+ "privacy": "protected",
2184
+ "return": {
2185
+ "type": {
2186
+ "text": "TemplateResult"
2187
+ }
2188
+ }
2189
+ },
1982
2190
  {
1983
2191
  "kind": "method",
1984
2192
  "name": "manageSubmenu",
@@ -2001,6 +2209,16 @@
2001
2209
  "kind": "method",
2002
2210
  "name": "handleRemoveActive",
2003
2211
  "privacy": "private",
2212
+ "return": {
2213
+ "type": {
2214
+ "text": "void"
2215
+ }
2216
+ }
2217
+ },
2218
+ {
2219
+ "kind": "method",
2220
+ "name": "handlePointerdown",
2221
+ "privacy": "private",
2004
2222
  "return": {
2005
2223
  "type": {
2006
2224
  "text": "void"
@@ -2010,15 +2228,15 @@
2010
2228
  {
2011
2229
  "name": "event",
2012
2230
  "type": {
2013
- "text": "Event"
2231
+ "text": "PointerEvent"
2014
2232
  }
2015
2233
  }
2016
2234
  ]
2017
2235
  },
2018
2236
  {
2019
2237
  "kind": "method",
2020
- "name": "handlePointerdown",
2021
- "privacy": "private",
2238
+ "name": "closeOverlaysForRoot",
2239
+ "privacy": "protected",
2022
2240
  "return": {
2023
2241
  "type": {
2024
2242
  "text": "void"
@@ -2027,25 +2245,25 @@
2027
2245
  },
2028
2246
  {
2029
2247
  "kind": "method",
2030
- "name": "closeOverlaysForRoot",
2248
+ "name": "handleSubmenuClick",
2031
2249
  "privacy": "protected",
2032
2250
  "return": {
2033
2251
  "type": {
2034
2252
  "text": "void"
2035
2253
  }
2036
- }
2037
- },
2038
- {
2039
- "kind": "field",
2040
- "name": "closeOverlay",
2041
- "type": {
2042
- "text": "() => Promise<void> | undefined"
2043
2254
  },
2044
- "privacy": "public"
2255
+ "parameters": [
2256
+ {
2257
+ "name": "event",
2258
+ "type": {
2259
+ "text": "Event"
2260
+ }
2261
+ }
2262
+ ]
2045
2263
  },
2046
2264
  {
2047
2265
  "kind": "method",
2048
- "name": "handleSubmenuClick",
2266
+ "name": "handleSubmenuFocus",
2049
2267
  "privacy": "protected",
2050
2268
  "return": {
2051
2269
  "type": {
@@ -2053,6 +2271,11 @@
2053
2271
  }
2054
2272
  }
2055
2273
  },
2274
+ {
2275
+ "kind": "field",
2276
+ "name": "handleBeforetoggle",
2277
+ "privacy": "protected"
2278
+ },
2056
2279
  {
2057
2280
  "kind": "method",
2058
2281
  "name": "handlePointerenter",
@@ -2071,6 +2294,15 @@
2071
2294
  },
2072
2295
  "privacy": "protected"
2073
2296
  },
2297
+ {
2298
+ "kind": "field",
2299
+ "name": "recentlyLeftChild",
2300
+ "type": {
2301
+ "text": "boolean"
2302
+ },
2303
+ "privacy": "protected",
2304
+ "default": "false"
2305
+ },
2074
2306
  {
2075
2307
  "kind": "method",
2076
2308
  "name": "handlePointerleave",
@@ -2082,15 +2314,71 @@
2082
2314
  }
2083
2315
  },
2084
2316
  {
2085
- "kind": "field",
2317
+ "kind": "method",
2086
2318
  "name": "handleSubmenuChange",
2087
2319
  "privacy": "protected",
2320
+ "return": {
2321
+ "type": {
2322
+ "text": "void"
2323
+ }
2324
+ },
2325
+ "parameters": [
2326
+ {
2327
+ "name": "event",
2328
+ "type": {
2329
+ "text": "Event"
2330
+ }
2331
+ }
2332
+ ],
2088
2333
  "description": "When there is a `change` event in the submenu for this item\nthen we \"click\" this item to cascade the selection up the\nmenu tree allowing all submenus between the initial selection\nand the root of the tree to have their selection changes and\nbe closed."
2089
2334
  },
2090
2335
  {
2091
- "kind": "field",
2336
+ "kind": "method",
2092
2337
  "name": "handleSubmenuPointerenter",
2093
- "privacy": "protected"
2338
+ "privacy": "protected",
2339
+ "return": {
2340
+ "type": {
2341
+ "text": "void"
2342
+ }
2343
+ }
2344
+ },
2345
+ {
2346
+ "kind": "method",
2347
+ "name": "handleSubmenuPointerleave",
2348
+ "privacy": "protected",
2349
+ "return": {
2350
+ "type": {
2351
+ "text": "Promise<void>"
2352
+ }
2353
+ }
2354
+ },
2355
+ {
2356
+ "kind": "method",
2357
+ "name": "handleSubmenuOpen",
2358
+ "privacy": "protected",
2359
+ "return": {
2360
+ "type": {
2361
+ "text": "void"
2362
+ }
2363
+ },
2364
+ "parameters": [
2365
+ {
2366
+ "name": "event",
2367
+ "type": {
2368
+ "text": "Event"
2369
+ }
2370
+ }
2371
+ ]
2372
+ },
2373
+ {
2374
+ "kind": "method",
2375
+ "name": "cleanup",
2376
+ "privacy": "protected",
2377
+ "return": {
2378
+ "type": {
2379
+ "text": "void"
2380
+ }
2381
+ }
2094
2382
  },
2095
2383
  {
2096
2384
  "kind": "method",
@@ -2136,6 +2424,15 @@
2136
2424
  "text": "HTMLElement"
2137
2425
  }
2138
2426
  },
2427
+ {
2428
+ "kind": "field",
2429
+ "name": "willDispatchUpdate",
2430
+ "type": {
2431
+ "text": "boolean"
2432
+ },
2433
+ "privacy": "private",
2434
+ "default": "false"
2435
+ },
2139
2436
  {
2140
2437
  "kind": "method",
2141
2438
  "name": "triggerUpdate",
@@ -2146,24 +2443,35 @@
2146
2443
  }
2147
2444
  }
2148
2445
  },
2446
+ {
2447
+ "kind": "method",
2448
+ "name": "dispatchUpdate",
2449
+ "privacy": "public",
2450
+ "return": {
2451
+ "type": {
2452
+ "text": "void"
2453
+ }
2454
+ }
2455
+ },
2149
2456
  {
2150
2457
  "kind": "field",
2151
2458
  "name": "menuData",
2152
2459
  "type": {
2153
- "text": "{\n focusRoot?: Menu;\n selectionRoot?: Menu;\n }"
2460
+ "text": "{\n focusRoot?: Menu;\n parentMenu?: Menu;\n selectionRoot?: Menu;\n cleanupSteps: ((item: MenuItem) => void)[];\n }"
2154
2461
  },
2155
2462
  "privacy": "public",
2156
- "default": "{\n focusRoot: undefined,\n selectionRoot: undefined,\n }"
2463
+ "default": "{\n focusRoot: undefined,\n parentMenu: undefined,\n selectionRoot: undefined,\n cleanupSteps: [],\n }"
2157
2464
  }
2158
2465
  ],
2159
2466
  "events": [
2160
2467
  {
2161
- "description": "announces the item has been added so a parent menu can take ownerships",
2162
- "name": "sp-menu-item-added"
2468
+ "type": {
2469
+ "text": "MenuItemAddedOrUpdatedEvent"
2470
+ }
2163
2471
  },
2164
2472
  {
2165
- "description": "announces when removed from the DOM so the parent menu can remove ownership and update selected state",
2166
- "name": "sp-menu-item-removed"
2473
+ "description": "announces the item has been added so a parent menu can take ownerships",
2474
+ "name": "sp-menu-item-added"
2167
2475
  }
2168
2476
  ],
2169
2477
  "attributes": [
@@ -2246,14 +2554,6 @@
2246
2554
  }
2247
2555
  ],
2248
2556
  "exports": [
2249
- {
2250
- "kind": "js",
2251
- "name": "MenuItemRemovedEvent",
2252
- "declaration": {
2253
- "name": "MenuItemRemovedEvent",
2254
- "module": "src/MenuItem.js"
2255
- }
2256
- },
2257
2557
  {
2258
2558
  "kind": "js",
2259
2559
  "name": "MenuItemAddedOrUpdatedEvent",