@nvidia-elements/core 2.20.3 → 2.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/accordion/accordion2.js +4 -4
  3. package/dist/alert/alert-group2.js +1 -1
  4. package/dist/alert/alert2.js +1 -1
  5. package/dist/avatar/avatar-group2.js +1 -1
  6. package/dist/avatar/avatar2.js +1 -1
  7. package/dist/badge/badge2.js +1 -1
  8. package/dist/breadcrumb/breadcrumb2.js +1 -1
  9. package/dist/bundles/index.d.ts +2 -2
  10. package/dist/bundles/index.js +11 -11
  11. package/dist/button/button2.js +1 -1
  12. package/dist/button-group/button-group2.js +1 -1
  13. package/dist/card/card2.js +4 -4
  14. package/dist/chat-message/chat-message2.js +1 -1
  15. package/dist/checkbox/checkbox-group2.js +1 -1
  16. package/dist/checkbox/checkbox2.js +1 -1
  17. package/dist/color/color2.js +1 -1
  18. package/dist/combobox/combobox.d.ts +1 -0
  19. package/dist/combobox/combobox2.js +80 -70
  20. package/dist/combobox/combobox2.js.map +1 -1
  21. package/dist/copy-button/copy-button2.js +1 -1
  22. package/dist/custom-elements-jsx.d.ts +1 -1
  23. package/dist/custom-elements-vue.d.ts +1 -1
  24. package/dist/custom-elements.json +3 -3
  25. package/dist/data.html.json +1 -1
  26. package/dist/date/date2.js +1 -1
  27. package/dist/datetime/datetime2.js +1 -1
  28. package/dist/dialog/dialog-footer2.js +1 -1
  29. package/dist/dialog/dialog-header2.js +1 -1
  30. package/dist/dialog/dialog2.js +1 -1
  31. package/dist/divider/divider2.js +1 -1
  32. package/dist/dot/dot2.js +1 -1
  33. package/dist/drag-handle/drag-handle2.js +1 -1
  34. package/dist/drawer/drawer-content2.js +1 -1
  35. package/dist/drawer/drawer-footer2.js +1 -1
  36. package/dist/drawer/drawer-header2.js +1 -1
  37. package/dist/drawer/drawer2.js +1 -1
  38. package/dist/dropdown/dropdown-footer2.js +1 -1
  39. package/dist/dropdown/dropdown-header2.js +1 -1
  40. package/dist/dropdown/dropdown.js +1 -1
  41. package/dist/dropdown/dropdown.js.map +1 -1
  42. package/dist/dropdown/dropdown2.js +2 -2
  43. package/dist/dropdown/dropdown2.js.map +1 -1
  44. package/dist/dropdown-group/dropdown-group.d.ts +1 -1
  45. package/dist/dropdown-group/dropdown-group.examples.js.map +1 -1
  46. package/dist/dropdown-group/dropdown-group.examples.json +11 -0
  47. package/dist/dropdown-group/dropdown-group.js +55 -25
  48. package/dist/dropdown-group/dropdown-group.js.map +1 -1
  49. package/dist/dropzone/dropzone2.js +1 -1
  50. package/dist/file/file2.js +1 -1
  51. package/dist/format-bytes/format-bytes2.js +1 -1
  52. package/dist/format-datetime/format-datetime2.js +1 -1
  53. package/dist/format-number/format-number2.js +1 -1
  54. package/dist/format-relative-time/format-relative-time2.js +1 -1
  55. package/dist/format-truncate/format-truncate2.js +35 -34
  56. package/dist/format-truncate/format-truncate2.js.map +1 -1
  57. package/dist/forms/control/control2.js +1 -1
  58. package/dist/forms/control-group/control-group2.js +1 -1
  59. package/dist/forms/control-message/control-message2.js +1 -1
  60. package/dist/gauge/gauge2.js +1 -1
  61. package/dist/grid/cell/cell2.js +1 -1
  62. package/dist/grid/column/column2.js +1 -1
  63. package/dist/grid/footer/footer2.js +1 -1
  64. package/dist/grid/grid2.js +1 -1
  65. package/dist/grid/header/header2.js +1 -1
  66. package/dist/grid/placeholder/placeholder2.js +1 -1
  67. package/dist/grid/row/row2.js +1 -1
  68. package/dist/icon/icon2.js +2 -2
  69. package/dist/icon-button/icon-button2.js +1 -1
  70. package/dist/iframe/iframe2.js +1 -1
  71. package/dist/index.js +1 -1
  72. package/dist/input/input-group2.js +1 -1
  73. package/dist/input/input2.js +1 -1
  74. package/dist/internal/controllers/type-native-popover.controller.d.ts +0 -1
  75. package/dist/internal/controllers/type-native-popover.controller.js.map +1 -1
  76. package/dist/internal/controllers/type-native-popover.utils.d.ts +0 -1
  77. package/dist/internal/controllers/type-native-popover.utils.js +1 -1
  78. package/dist/internal/controllers/type-native-popover.utils.js.map +1 -1
  79. package/dist/internal/index.js +23 -23
  80. package/dist/internal/styles/popover.js +1 -1
  81. package/dist/internal/styles/popover.js.map +1 -1
  82. package/dist/internal/styles/popover2.js +3 -10
  83. package/dist/internal/styles/popover2.js.map +1 -1
  84. package/dist/internal/utils/dom.js.map +1 -1
  85. package/dist/joystick/joystick2.js +1 -1
  86. package/dist/logo/logo2.js +1 -1
  87. package/dist/menu/menu-group2.js +1 -1
  88. package/dist/menu/menu-item2.js +1 -1
  89. package/dist/menu/menu2.js +1 -1
  90. package/dist/month/month2.js +1 -1
  91. package/dist/notification/notification-group2.js +1 -1
  92. package/dist/notification/notification2.js +1 -1
  93. package/dist/page/page-panel/page-panel-content2.js +1 -1
  94. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  95. package/dist/page/page-panel/page-panel-header2.js +1 -1
  96. package/dist/page/page-panel/page-panel2.js +1 -1
  97. package/dist/page/page2.js +1 -1
  98. package/dist/page-header/page-header2.js +1 -1
  99. package/dist/page-loader/page-loader2.js +1 -1
  100. package/dist/pagination/pagination2.js +1 -1
  101. package/dist/panel/panel2.js +4 -4
  102. package/dist/password/password2.js +1 -1
  103. package/dist/preferences-input/preferences-input2.js +1 -1
  104. package/dist/progress-bar/progress-bar2.js +1 -1
  105. package/dist/progress-dot/progress-dot2.js +1 -1
  106. package/dist/progress-ring/progress-ring2.js +1 -1
  107. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  108. package/dist/pulse/pulse2.js +1 -1
  109. package/dist/radio/radio-group2.js +1 -1
  110. package/dist/radio/radio2.js +1 -1
  111. package/dist/range/range2.js +1 -1
  112. package/dist/resize-handle/resize-handle2.js +1 -1
  113. package/dist/search/search2.js +1 -1
  114. package/dist/select/select2.js +45 -32
  115. package/dist/select/select2.js.map +1 -1
  116. package/dist/skeleton/skeleton2.js +1 -1
  117. package/dist/sort-button/sort-button2.js +1 -1
  118. package/dist/sparkline/sparkline2.js +1 -1
  119. package/dist/star-rating/star-rating2.js +1 -1
  120. package/dist/steps/steps2.js +2 -2
  121. package/dist/switch/switch-group2.js +1 -1
  122. package/dist/switch/switch2.js +1 -1
  123. package/dist/tabs/tabs-group2.js +1 -1
  124. package/dist/tabs/tabs-item-group2.js +1 -1
  125. package/dist/tabs/tabs2.js +2 -2
  126. package/dist/tag/tag2.js +1 -1
  127. package/dist/textarea/textarea2.js +1 -1
  128. package/dist/time/time2.js +1 -1
  129. package/dist/toast/toast2.js +1 -1
  130. package/dist/toggletip/toggletip-footer2.js +1 -1
  131. package/dist/toggletip/toggletip-header2.js +1 -1
  132. package/dist/toggletip/toggletip.js +1 -1
  133. package/dist/toggletip/toggletip.js.map +1 -1
  134. package/dist/toggletip/toggletip2.js +1 -1
  135. package/dist/toolbar/toolbar2.js +1 -1
  136. package/dist/tooltip/tooltip2.js +1 -1
  137. package/dist/tree/tree-node2.js +1 -1
  138. package/dist/tree/tree2.js +1 -1
  139. package/dist/week/week2.js +1 -1
  140. package/package.json +44 -9
@@ -11620,7 +11620,7 @@
11620
11620
  "declarations": [
11621
11621
  {
11622
11622
  "kind": "class",
11623
- "description": "A Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience",
11623
+ "description": "A dropdown group coordinates linked dropdowns and cascading submenus.",
11624
11624
  "name": "DropdownGroup",
11625
11625
  "cssProperties": [
11626
11626
  {
@@ -11673,7 +11673,7 @@
11673
11673
  "since": "1.30.1",
11674
11674
  "status": "stable",
11675
11675
  "behavior": "navigation",
11676
- "markdown": "## nve-dropdown-group\n\nA Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience\n\n### Example\n\n```html\n<nve-button popovertarget=\"menu-1\">menu</nve-button>\n<nve-dropdown-group>\n <nve-dropdown id=\"menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"menu-2\"> item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon> </nve-menu-item>\n <nve-menu-item>item 1-2</nve-menu-item>\n <nve-menu-item>item 1-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 2-1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-3\"> item 2-2 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon> </nve-menu-item>\n <nve-menu-item>item 2-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 3-1</nve-menu-item>\n <nve-menu-item>item 3-2</nve-menu-item>\n <nve-menu-item>item 3-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n</nve-dropdown-group>\n```\n\n### Import\n\n```javascript\nimport '@nvidia-elements/core/dropdown-group/define.js';\n```\n\n### Slots\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| (default) | `string` | default slot for dropdown content |\n\n### Events\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| close | `CustomEvent` | Dispatched when a dropdown in the group closes |\n| open | `CustomEvent` | Dispatched when a dropdown in the group opens |\n\n### Methods\n\n| method | signatures | description |\n| ------ | ---------- | ----------- |\n| close | `close(): unknown` | Closes every descendant dropdown in the group. |\n\n### CSS Properties\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| --arrow-transform | `string` | Transform applied to the popover arrow |"
11676
+ "markdown": "## nve-dropdown-group\n\nA dropdown group coordinates linked dropdowns and cascading submenus.\n\n### Example\n\n```html\n<nve-button popovertarget=\"menu-1\">menu</nve-button>\n<nve-dropdown-group>\n <nve-dropdown id=\"menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"menu-2\"> item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon> </nve-menu-item>\n <nve-menu-item>item 1-2</nve-menu-item>\n <nve-menu-item>item 1-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 2-1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-3\"> item 2-2 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon> </nve-menu-item>\n <nve-menu-item>item 2-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 3-1</nve-menu-item>\n <nve-menu-item>item 3-2</nve-menu-item>\n <nve-menu-item>item 3-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n</nve-dropdown-group>\n```\n\n### Import\n\n```javascript\nimport '@nvidia-elements/core/dropdown-group/define.js';\n```\n\n### Slots\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| (default) | `string` | default slot for dropdown content |\n\n### Events\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| close | `CustomEvent` | Dispatched when a dropdown in the group closes |\n| open | `CustomEvent` | Dispatched when a dropdown in the group opens |\n\n### Methods\n\n| method | signatures | description |\n| ------ | ---------- | ----------- |\n| close | `close(): unknown` | Closes every descendant dropdown in the group. |\n\n### CSS Properties\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| --arrow-transform | `string` | Transform applied to the popover arrow |"
11677
11677
  }
11678
11678
  }
11679
11679
  ],
@@ -27912,7 +27912,7 @@
27912
27912
  {
27913
27913
  "name": "host",
27914
27914
  "type": {
27915
- "text": "HTMLElement & { anchor?: HTMLElement | string; _activeTrigger?: HTMLElement }",
27915
+ "text": "HTMLElement & { anchor?: HTMLElement | string }",
27916
27916
  "_sourceAliases": []
27917
27917
  }
27918
27918
  }
@@ -1461,7 +1461,7 @@
1461
1461
  },
1462
1462
  {
1463
1463
  "name": "nve-dropdown-group",
1464
- "description": "A Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience\n---\n\n\n### **Events:**\n - **open** - Dispatched when a dropdown in the group opens\n- **close** - Dispatched when a dropdown in the group closes\n\n### **Methods:**\n - **close()** - Closes every descendant dropdown in the group.\n\n### **Slots:**\n - _default_ - default slot for dropdown content\n\n### **CSS Properties:**\n - **--arrow-transform** - Transform applied to the popover arrow _(default: undefined)_",
1464
+ "description": "A dropdown group coordinates linked dropdowns and cascading submenus.\n---\n\n\n### **Events:**\n - **open** - Dispatched when a dropdown in the group opens\n- **close** - Dispatched when a dropdown in the group closes\n\n### **Methods:**\n - **close()** - Closes every descendant dropdown in the group.\n\n### **Slots:**\n - _default_ - default slot for dropdown content\n\n### **CSS Properties:**\n - **--arrow-transform** - Transform applied to the popover arrow _(default: undefined)_",
1465
1465
  "attributes": [],
1466
1466
  "references": [
1467
1467
  {
@@ -22,7 +22,7 @@ var l = { expand: "expand" }, u = class extends r {
22
22
  static {
23
23
  this.metadata = {
24
24
  tag: "nve-date",
25
- version: "2.20.3"
25
+ version: "2.21.1"
26
26
  };
27
27
  }
28
28
  static {
@@ -22,7 +22,7 @@ var l = { expand: "expand" }, u = class extends r {
22
22
  static {
23
23
  this.metadata = {
24
24
  tag: "nve-datetime",
25
- version: "2.20.3"
25
+ version: "2.21.1"
26
26
  };
27
27
  }
28
28
  static {
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-dialog-footer",
12
- version: "2.20.3",
12
+ version: "2.21.1",
13
13
  parents: ["nve-dialog"]
14
14
  };
15
15
  }
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-dialog-header",
12
- version: "2.20.3",
12
+ version: "2.21.1",
13
13
  parents: ["nve-dialog"]
14
14
  };
15
15
  }
@@ -30,7 +30,7 @@ var h = { close: "close" }, g = class extends d {
30
30
  static {
31
31
  this.metadata = {
32
32
  tag: "nve-dialog",
33
- version: "2.20.3"
33
+ version: "2.21.1"
34
34
  };
35
35
  }
36
36
  static {
@@ -15,7 +15,7 @@ var s = class extends i {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-divider",
18
- version: "2.20.3"
18
+ version: "2.21.1"
19
19
  };
20
20
  }
21
21
  render() {
package/dist/dot/dot2.js CHANGED
@@ -16,7 +16,7 @@ var l = class extends o {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-dot",
19
- version: "2.20.3"
19
+ version: "2.21.1"
20
20
  };
21
21
  }
22
22
  render() {
@@ -13,7 +13,7 @@ var c = class extends s(a) {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-drag-handle",
16
- version: "2.20.3"
16
+ version: "2.21.1"
17
17
  };
18
18
  }
19
19
  static {
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-drawer-content",
12
- version: "2.20.3",
12
+ version: "2.21.1",
13
13
  parents: ["nve-drawer"]
14
14
  };
15
15
  }
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-drawer-footer",
12
- version: "2.20.3",
12
+ version: "2.21.1",
13
13
  parents: ["nve-drawer"]
14
14
  };
15
15
  }
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-drawer-header",
12
- version: "2.20.3",
12
+ version: "2.21.1",
13
13
  parents: ["nve-drawer"]
14
14
  };
15
15
  }
@@ -30,7 +30,7 @@ var p = { close: "close" }, m = class extends l {
30
30
  static {
31
31
  this.metadata = {
32
32
  tag: "nve-drawer",
33
- version: "2.20.3"
33
+ version: "2.21.1"
34
34
  };
35
35
  }
36
36
  static {
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-dropdown-footer",
12
- version: "2.20.3",
12
+ version: "2.21.1",
13
13
  parents: ["nve-dropdown"]
14
14
  };
15
15
  }
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-dropdown-header",
12
- version: "2.20.3",
12
+ version: "2.21.1",
13
13
  parents: ["nve-dropdown"]
14
14
  };
15
15
  }
@@ -1,5 +1,5 @@
1
1
  // src/dropdown/dropdown.css?inline
2
- var e = ":host{--nve-sys-interaction-background: var(--nve-sys-interaction-background-300);--nve-sys-interaction-field-background: var(--nve-sys-interaction-background-300);--nve-sys-layer-popover-arrow-padding: 0px;--nve-sys-layer-popover-arrow-offset: 0px;--nve-sys-layer-popover-offset: 0px;--arrow-transform: translate(0, -2px) rotate(-45deg);--border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);--border-radius: var(--nve-ref-border-radius-md);--background: var(--nve-sys-layer-overlay-background);--color: var(--nve-sys-layer-overlay-color);--padding: var(--nve-ref-size-400);--box-shadow: var(--nve-ref-shadow-400);--width: fit-content;--min-width: fit-content;--gap: var(--nve-ref-space-sm);--_divider-padding: var(--padding)}[internal-host]{padding:var(--padding);border-radius:var(--border-radius);border:var(--border);background:var(--background);color:var(--color);box-shadow:var(--box-shadow);gap:var(--nve-ref-space-sm);width:var(--width);min-width:var(--min-width);outline:0}[internal-host]::backdrop{background:transparent}.header{display:flex;gap:var(--gap)}.header:has(nve-icon-button){min-height:var(--nve-ref-size-300)}nve-icon-button{position:absolute;top:var(--nve-ref-size-200);right:var(--nve-ref-size-200);z-index:99}.arrow{width:var(--nve-ref-size-400);height:var(--nve-ref-size-400);background:var(--background);transform:var(--arrow-transform);border-top-left-radius:var(--nve-ref-border-radius-xs);position:absolute;border-left:var(--border);border-top:var(--border)}:host([position*=\"top\"]){--arrow-transform: translate(0, -2px) rotate(-45deg)}:host([position*=\"right\"]){--arrow-transform: translate(2px, 0) rotate(45deg)}:host([position*=\"bottom\"]){--arrow-transform: translate(0, -1px) rotate(45deg)}:host([position*=\"left\"]){--arrow-transform: translate(-2px, 0) rotate(45deg)}::slotted(nve-menu){--width: 100%}::slotted(nve-divider){margin:0 calc(-1 * var(--_divider-padding))}";
2
+ var e = ":host{--nve-sys-interaction-background: var(--nve-sys-interaction-background-300);--nve-sys-interaction-field-background: var(--nve-sys-interaction-background-300);--nve-sys-layer-popover-arrow-padding: 0px;--nve-sys-layer-popover-arrow-offset: 0px;--nve-sys-layer-popover-offset: 0px;--arrow-transform: translate(0, -2px) rotate(225deg);--border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);--border-radius: var(--nve-ref-border-radius-md);--background: var(--nve-sys-layer-overlay-background);--color: var(--nve-sys-layer-overlay-color);--padding: var(--nve-ref-size-400);--box-shadow: var(--nve-ref-shadow-400);--width: fit-content;--min-width: fit-content;--gap: var(--nve-ref-space-sm);--_divider-padding: var(--padding)}[internal-host]{padding:var(--padding);border-radius:var(--border-radius);border:var(--border);background:var(--background);color:var(--color);box-shadow:var(--box-shadow);gap:var(--nve-ref-space-sm);width:var(--width);min-width:var(--min-width);outline:0}[internal-host]::backdrop{background:transparent}.header{display:flex;gap:var(--gap)}.header:has(nve-icon-button){min-height:var(--nve-ref-size-300)}nve-icon-button{position:absolute;top:var(--nve-ref-size-200);right:var(--nve-ref-size-200);z-index:99}.arrow{width:var(--nve-ref-size-400);height:var(--nve-ref-size-400);background:var(--background);transform:var(--arrow-transform);border-top-left-radius:var(--nve-ref-border-radius-xs);z-index:10000;clip-path:polygon(0 0,100% 0,0 100%);position:absolute;border-left:var(--border);border-top:var(--border)}:host([position*=\"top\"]){--arrow-transform: translate(0, -2px) rotate(225deg)}:host([position*=\"right\"]){--arrow-transform: translate(2px, 0) rotate(-45deg)}:host([position*=\"bottom\"]){--arrow-transform: translate(0, 2px) rotate(45deg)}:host([position*=\"left\"]){--arrow-transform: translate(-2px, 0) rotate(135deg)}::slotted(nve-menu){--width: 100%}::slotted(nve-divider){margin:0 calc(-1 * var(--_divider-padding))}";
3
3
  export { e as default };
4
4
 
5
5
  //# sourceMappingURL=dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","names":["dropdown_default"],"sources":["../../src/dropdown/dropdown.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --nve-sys-interaction-background: var(--nve-sys-interaction-background-300);\n --nve-sys-interaction-field-background: var(--nve-sys-interaction-background-300);\n --nve-sys-layer-popover-arrow-padding: 0px;\n --nve-sys-layer-popover-arrow-offset: 0px;\n --nve-sys-layer-popover-offset: 0px;\n --arrow-transform: translate(0, -2px) rotate(-45deg);\n --border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --border-radius: var(--nve-ref-border-radius-md);\n --background: var(--nve-sys-layer-overlay-background);\n --color: var(--nve-sys-layer-overlay-color);\n --padding: var(--nve-ref-size-400);\n --box-shadow: var(--nve-ref-shadow-400);\n --width: fit-content;\n --min-width: fit-content;\n --gap: var(--nve-ref-space-sm);\n --_divider-padding: var(--padding);\n}\n\n[internal-host] {\n padding: var(--padding);\n border-radius: var(--border-radius);\n border: var(--border);\n background: var(--background);\n color: var(--color);\n box-shadow: var(--box-shadow);\n gap: var(--nve-ref-space-sm);\n width: var(--width);\n min-width: var(--min-width);\n outline: 0;\n}\n\n[internal-host]::backdrop {\n background: transparent;\n}\n\n.header {\n display: flex;\n gap: var(--gap);\n}\n\n.header:has(nve-icon-button) {\n min-height: var(--nve-ref-size-300);\n}\n\nnve-icon-button {\n position: absolute;\n top: var(--nve-ref-size-200);\n right: var(--nve-ref-size-200);\n z-index: 99;\n}\n\n.arrow {\n width: var(--nve-ref-size-400);\n height: var(--nve-ref-size-400);\n background: var(--background);\n transform: var(--arrow-transform);\n border-top-left-radius: var(--nve-ref-border-radius-xs);\n position: absolute;\n border-left: var(--border);\n border-top: var(--border);\n}\n\n:host([position*='top']) {\n --arrow-transform: translate(0, -2px) rotate(-45deg);\n}\n\n:host([position*='right']) {\n --arrow-transform: translate(2px, 0) rotate(45deg);\n}\n\n:host([position*='bottom']) {\n --arrow-transform: translate(0, -1px) rotate(45deg);\n}\n\n:host([position*='left']) {\n --arrow-transform: translate(-2px, 0) rotate(45deg);\n}\n\n::slotted(nve-menu) {\n --width: 100%;\n}\n\n::slotted(nve-divider) {\n margin: 0 calc(-1 * var(--_divider-padding));\n}\n"],"mappings":""}
1
+ {"version":3,"file":"dropdown.js","names":["dropdown_default"],"sources":["../../src/dropdown/dropdown.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --nve-sys-interaction-background: var(--nve-sys-interaction-background-300);\n --nve-sys-interaction-field-background: var(--nve-sys-interaction-background-300);\n --nve-sys-layer-popover-arrow-padding: 0px;\n --nve-sys-layer-popover-arrow-offset: 0px;\n --nve-sys-layer-popover-offset: 0px;\n --arrow-transform: translate(0, -2px) rotate(225deg);\n --border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --border-radius: var(--nve-ref-border-radius-md);\n --background: var(--nve-sys-layer-overlay-background);\n --color: var(--nve-sys-layer-overlay-color);\n --padding: var(--nve-ref-size-400);\n --box-shadow: var(--nve-ref-shadow-400);\n --width: fit-content;\n --min-width: fit-content;\n --gap: var(--nve-ref-space-sm);\n --_divider-padding: var(--padding);\n}\n\n[internal-host] {\n padding: var(--padding);\n border-radius: var(--border-radius);\n border: var(--border);\n background: var(--background);\n color: var(--color);\n box-shadow: var(--box-shadow);\n gap: var(--nve-ref-space-sm);\n width: var(--width);\n min-width: var(--min-width);\n outline: 0;\n}\n\n[internal-host]::backdrop {\n background: transparent;\n}\n\n.header {\n display: flex;\n gap: var(--gap);\n}\n\n.header:has(nve-icon-button) {\n min-height: var(--nve-ref-size-300);\n}\n\nnve-icon-button {\n position: absolute;\n top: var(--nve-ref-size-200);\n right: var(--nve-ref-size-200);\n z-index: 99;\n}\n\n.arrow {\n width: var(--nve-ref-size-400);\n height: var(--nve-ref-size-400);\n background: var(--background);\n transform: var(--arrow-transform);\n border-top-left-radius: var(--nve-ref-border-radius-xs);\n /* Cover the panel shadow without painting the unused half over its content. */\n z-index: 10000;\n clip-path: polygon(0 0, 100% 0, 0 100%);\n position: absolute;\n border-left: var(--border);\n border-top: var(--border);\n}\n\n:host([position*='top']) {\n --arrow-transform: translate(0, -2px) rotate(225deg);\n}\n\n:host([position*='right']) {\n --arrow-transform: translate(2px, 0) rotate(-45deg);\n}\n\n:host([position*='bottom']) {\n --arrow-transform: translate(0, 2px) rotate(45deg);\n}\n\n:host([position*='left']) {\n --arrow-transform: translate(-2px, 0) rotate(135deg);\n}\n\n::slotted(nve-menu) {\n --width: 100%;\n}\n\n::slotted(nve-divider) {\n margin: 0 calc(-1 * var(--_divider-padding));\n}\n"],"mappings":""}
@@ -21,7 +21,7 @@ var p = { close: "close" }, m = class extends c {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-dropdown",
24
- version: "2.20.3"
24
+ version: "2.21.1"
25
25
  };
26
26
  }
27
27
  static {
@@ -32,7 +32,7 @@ var p = { close: "close" }, m = class extends c {
32
32
  return this.modal;
33
33
  }
34
34
  render() {
35
- return l`<div internal-host><slot name="header"></slot>${this.closable ? l`<nve-icon-button part="icon-button" exportparts="icon:icon-button-icon" @click="${this.hidePopover}" icon-name="cancel" container="flat" size="sm" .ariaLabel="${this.i18n.close}"></nve-icon-button>` : ""}<slot></slot><slot name="footer"></slot>${this.arrow ? l`<div class="arrow"></div>` : ""}</div>`;
35
+ return l`<div internal-host><slot name="header"></slot>${this.closable ? l`<nve-icon-button part="icon-button" exportparts="icon:icon-button-icon" @click="${this.hidePopover}" icon-name="cancel" container="flat" size="sm" .ariaLabel="${this.i18n.close}"></nve-icon-button>` : ""}<slot></slot><slot name="footer"></slot></div>${this.arrow ? l`<div class="arrow"></div>` : ""}`;
36
36
  }
37
37
  };
38
38
  a([u({ type: String })], m.prototype, "anchor", void 0), a([u({ type: String })], m.prototype, "trigger", void 0), a([u({
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown2.js","names":["styles","_decorate","__decorate","dropdown_default","i18nDefaults","Dropdown","LitElement","_args","#i18nController","I18nController","TypeNativePopoverController","useStyles","popoverStyles","IconButton","property","query","audit","scopedRegistry"],"sources":["../../src/dropdown/dropdown.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport type { PopoverAlign, PopoverPosition, PopoverType } from '@nvidia-elements/core/internal';\nimport {\n audit,\n excessiveInstanceLimit,\n popoverStyles,\n scopedRegistry,\n TypeNativePopoverController,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { I18nController, type I18nDefaults } from '@nvidia-elements/foundations/internal/i18n';\nimport styles from './dropdown.css?inline';\n\nconst i18nDefaults = {\n close: 'close'\n} satisfies I18nDefaults;\n\n/**\n * @element nve-dropdown\n * @description Generic dropdown element for rendering a variety of different content such as interactive navigation or form controls.\n * @documentation https://nvidia.github.io/elements/docs/elements/dropdown/\n * @since 0.6.0\n * @entrypoint \\@nvidia-elements/core/dropdown\n * @event beforetoggle - Dispatched on a popover just before showing or hiding.\n * @event toggle - Dispatched on a popover element just after showing or hiding.\n * @event open - Dispatched when the dropdown opens.\n * @event close - Dispatched when the dropdown closes.\n * @slot - default slot for dropdown content\n * @cssprop --border\n * @cssprop --border-radius\n * @cssprop --background\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --box-shadow\n * @cssprop --width\n * @cssprop --min-width\n * @cssprop --gap\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @cssprop --animation-duration - Duration of dropdown open/close animations\n * @csspart icon-button - The close icon button element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit({ excessiveInstanceLimit })\n@scopedRegistry()\nexport class Dropdown extends LitElement {\n static styles = useStyles([popoverStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-dropdown',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [IconButton.metadata.tag]: IconButton\n };\n\n /**\n * (optional) By default the popover will automatically anchor itself relative to the trigger element.\n * Pass an optional custom anchor element as an idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) anchor: string | HTMLElement;\n\n /**\n * @deprecated Use the popover API instead.\n * The trigger defines what element triggers an `open` interaction event.\n * A trigger can accept a idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) trigger: string | HTMLElement;\n\n /**\n * Sets the side position of the popover relative to the provided anchor element.\n */\n @property({ type: String, reflect: true }) position: PopoverPosition = 'bottom';\n\n /**\n * Sets the alignment of the popover relative to the provided anchor element.\n * If an arrow exists the alginment will be relative to the arrow against the anchor.\n */\n @property({ type: String, reflect: true }) alignment: PopoverAlign = 'start';\n\n /**\n * @deprecated Use the popover API instead.\n * Determines if popover visibility behavior should be automatically controlled by the trigger.\n */\n @property({ type: Boolean, reflect: true, attribute: 'behavior-trigger' }) behaviorTrigger: boolean;\n\n /**\n * Determines if a close button should render within dropdown. Non-closable\n * dropdowns suit menu or selection patterns.\n */\n @property({ type: Boolean }) closable = false;\n\n /**\n * Determines if an arrow renders.\n */\n @property({ type: Boolean }) arrow = false;\n\n /** @private */\n @property({ type: Boolean, reflect: true }) modal = true;\n\n /** @private */\n @property({ type: String, attribute: 'popover-type' }) popoverType: PopoverType = 'auto';\n\n /** @private */\n @query('.arrow') popoverArrow: HTMLElement;\n\n #i18nController: I18nController<this> = new I18nController<this>(this, i18nDefaults);\n\n protected typeNativePopoverController = new TypeNativePopoverController<Dropdown>(this);\n\n /** @private */\n get popoverDismissible() {\n return this.modal;\n }\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n render() {\n return html`\n <div internal-host>\n <slot name=\"header\"></slot>\n ${this.closable ? html`<nve-icon-button part=\"icon-button\" exportparts=\"icon:icon-button-icon\" @click=${this.hidePopover} icon-name=\"cancel\" container=\"flat\" size=\"sm\" .ariaLabel=${this.i18n.close}></nve-icon-button>` : ''}\n <slot></slot>\n <slot name=\"footer\"></slot>\n ${this.arrow ? html`<div class=\"arrow\"></div>` : ''}\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAmBA,IAAMI,IAAe,EACnB,OAAO,QACT,GA6BaC,IAAN,cAAuBC,EAAW;;EA0EJ,A,aA9CoC,KAAA,WAAA,UAMF,KAAA,YAAA,SAY7B,KAAA,WAAA,IAKH,KAAA,QAAA,IAGe,KAAA,QAAA,IAG8B,KAAA,cAAA,QAK1C,KAAAE,KAAA,IAAIC,EAAqB,MAAML,CAAY,GAE3C,KAAA,8BAAA,IAAIM,EAAsC,IAAI,GAUnD,KAAA,OAAA,KAAKF,GAAgB;;;EAzExC,KAAA,SAAAG,EAAU,CAACC,GAAeZ,CAAM,CAAC;;;EAEtB,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;;EAE4B,KAAA,qBAAA,GACzBa,EAAW,SAAS,MAAMA,EAC7B;;CAoDA;CAKA,IAAI,qBAAqB;EACvB,OAAO,KAAK;CACd;CAOA,SAAS;EACP,OAAO,CAAI,iDAGP,KAAK,WAAW,CAAI,mFAAkF,KAAK,YAAY,8DAA4D,KAAK,KAAK,MAAM,wBAAuB,GAAG,0CAG7N,KAAK,QAAQ,CAAI,8BAA8B,GAAG;CAGxD;AACF;AAvEGZ,EAAA,CAAAa,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAT,EAAA,WAAA,UAAA,KAAA,CAAA,GAOzBJ,EAAA,CAAAa,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAT,EAAA,WAAA,WAAA,KAAA,CAAA,GAKzBJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,YAAA,KAAA,CAAA,GAMxCJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,aAAA,KAAA,CAAA,GAMxCJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;AAAmB,CAAC,CAAA,GAAAT,EAAA,WAAA,mBAAA,KAAA,CAAA,GAMxEJ,EAAA,CAAAa,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAAT,EAAA,WAAA,YAAA,KAAA,CAAA,GAK1BJ,EAAA,CAAAa,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAAT,EAAA,WAAA,SAAA,KAAA,CAAA,GAG1BJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,SAAA,KAAA,CAAA,GAGzCJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAQ,WAAW;AAAe,CAAC,CAAA,GAAAT,EAAA,WAAA,eAAA,KAAA,CAAA,GAGpDJ,EAAA,CAAAc,EAAM,QAAQ,CAAA,GAAAV,EAAA,WAAA,gBAAA,KAAA,CAAA,GAcdJ,EAAA,CAAAa,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAT,EAAA,WAAA,QAAA,KAAA,CAAA,GA5E3B,IAAAJ,EAAA,CAAAe,EAAM,EAAE,wBAAA,GAAuB,CAAC,GAChCC,EAAe,CAAA,GAAAZ,CAAA"}
1
+ {"version":3,"file":"dropdown2.js","names":["styles","_decorate","__decorate","dropdown_default","i18nDefaults","Dropdown","LitElement","_args","#i18nController","I18nController","TypeNativePopoverController","useStyles","popoverStyles","IconButton","property","query","audit","scopedRegistry"],"sources":["../../src/dropdown/dropdown.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport type { PopoverAlign, PopoverPosition, PopoverType } from '@nvidia-elements/core/internal';\nimport {\n audit,\n excessiveInstanceLimit,\n popoverStyles,\n scopedRegistry,\n TypeNativePopoverController,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { I18nController, type I18nDefaults } from '@nvidia-elements/foundations/internal/i18n';\nimport styles from './dropdown.css?inline';\n\nconst i18nDefaults = {\n close: 'close'\n} satisfies I18nDefaults;\n\n/**\n * @element nve-dropdown\n * @description Generic dropdown element for rendering a variety of different content such as interactive navigation or form controls.\n * @documentation https://nvidia.github.io/elements/docs/elements/dropdown/\n * @since 0.6.0\n * @entrypoint \\@nvidia-elements/core/dropdown\n * @event beforetoggle - Dispatched on a popover just before showing or hiding.\n * @event toggle - Dispatched on a popover element just after showing or hiding.\n * @event open - Dispatched when the dropdown opens.\n * @event close - Dispatched when the dropdown closes.\n * @slot - default slot for dropdown content\n * @cssprop --border\n * @cssprop --border-radius\n * @cssprop --background\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --box-shadow\n * @cssprop --width\n * @cssprop --min-width\n * @cssprop --gap\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @cssprop --animation-duration - Duration of dropdown open/close animations\n * @csspart icon-button - The close icon button element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit({ excessiveInstanceLimit })\n@scopedRegistry()\nexport class Dropdown extends LitElement {\n static styles = useStyles([popoverStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-dropdown',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [IconButton.metadata.tag]: IconButton\n };\n\n /**\n * (optional) By default the popover will automatically anchor itself relative to the trigger element.\n * Pass an optional custom anchor element as an idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) anchor: string | HTMLElement;\n\n /**\n * @deprecated Use the popover API instead.\n * The trigger defines what element triggers an `open` interaction event.\n * A trigger can accept a idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) trigger: string | HTMLElement;\n\n /**\n * Sets the side position of the popover relative to the provided anchor element.\n */\n @property({ type: String, reflect: true }) position: PopoverPosition = 'bottom';\n\n /**\n * Sets the alignment of the popover relative to the provided anchor element.\n * If an arrow exists the alginment will be relative to the arrow against the anchor.\n */\n @property({ type: String, reflect: true }) alignment: PopoverAlign = 'start';\n\n /**\n * @deprecated Use the popover API instead.\n * Determines if popover visibility behavior should be automatically controlled by the trigger.\n */\n @property({ type: Boolean, reflect: true, attribute: 'behavior-trigger' }) behaviorTrigger: boolean;\n\n /**\n * Determines if a close button should render within dropdown. Non-closable\n * dropdowns suit menu or selection patterns.\n */\n @property({ type: Boolean }) closable = false;\n\n /**\n * Determines if an arrow renders.\n */\n @property({ type: Boolean }) arrow = false;\n\n /** @private */\n @property({ type: Boolean, reflect: true }) modal = true;\n\n /** @private */\n @property({ type: String, attribute: 'popover-type' }) popoverType: PopoverType = 'auto';\n\n /** @private */\n @query('.arrow') popoverArrow: HTMLElement;\n\n #i18nController: I18nController<this> = new I18nController<this>(this, i18nDefaults);\n\n protected typeNativePopoverController = new TypeNativePopoverController<Dropdown>(this);\n\n /** @private */\n get popoverDismissible() {\n return this.modal;\n }\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n render() {\n return html`\n <div internal-host>\n <slot name=\"header\"></slot>\n ${this.closable ? html`<nve-icon-button part=\"icon-button\" exportparts=\"icon:icon-button-icon\" @click=${this.hidePopover} icon-name=\"cancel\" container=\"flat\" size=\"sm\" .ariaLabel=${this.i18n.close}></nve-icon-button>` : ''}\n <slot></slot>\n <slot name=\"footer\"></slot>\n </div>\n ${this.arrow ? html`<div class=\"arrow\"></div>` : ''}\n `;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAmBA,IAAMI,IAAe,EACnB,OAAO,QACT,GA6BaC,IAAN,cAAuBC,EAAW;;EA0EJ,A,aA9CoC,KAAA,WAAA,UAMF,KAAA,YAAA,SAY7B,KAAA,WAAA,IAKH,KAAA,QAAA,IAGe,KAAA,QAAA,IAG8B,KAAA,cAAA,QAK1C,KAAAE,KAAA,IAAIC,EAAqB,MAAML,CAAY,GAE3C,KAAA,8BAAA,IAAIM,EAAsC,IAAI,GAUnD,KAAA,OAAA,KAAKF,GAAgB;;;EAzExC,KAAA,SAAAG,EAAU,CAACC,GAAeZ,CAAM,CAAC;;;EAEtB,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;;EAE4B,KAAA,qBAAA,GACzBa,EAAW,SAAS,MAAMA,EAC7B;;CAoDA;CAKA,IAAI,qBAAqB;EACvB,OAAO,KAAK;CACd;CAOA,SAAS;EACP,OAAO,CAAI,iDAGP,KAAK,WAAW,CAAI,mFAAkF,KAAK,YAAY,8DAA4D,KAAK,KAAK,MAAM,wBAAuB,GAAG,gDAI/N,KAAK,QAAQ,CAAI,8BAA8B;CAEnD;AACF;AAvEGZ,EAAA,CAAAa,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAT,EAAA,WAAA,UAAA,KAAA,CAAA,GAOzBJ,EAAA,CAAAa,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAT,EAAA,WAAA,WAAA,KAAA,CAAA,GAKzBJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,YAAA,KAAA,CAAA,GAMxCJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,aAAA,KAAA,CAAA,GAMxCJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;AAAmB,CAAC,CAAA,GAAAT,EAAA,WAAA,mBAAA,KAAA,CAAA,GAMxEJ,EAAA,CAAAa,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAAT,EAAA,WAAA,YAAA,KAAA,CAAA,GAK1BJ,EAAA,CAAAa,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAAT,EAAA,WAAA,SAAA,KAAA,CAAA,GAG1BJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,SAAA,KAAA,CAAA,GAGzCJ,EAAA,CAAAa,EAAS;CAAE,MAAM;CAAQ,WAAW;AAAe,CAAC,CAAA,GAAAT,EAAA,WAAA,eAAA,KAAA,CAAA,GAGpDJ,EAAA,CAAAc,EAAM,QAAQ,CAAA,GAAAV,EAAA,WAAA,gBAAA,KAAA,CAAA,GAcdJ,EAAA,CAAAa,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAT,EAAA,WAAA,QAAA,KAAA,CAAA,GA5E3B,IAAAJ,EAAA,CAAAe,EAAM,EAAE,wBAAA,GAAuB,CAAC,GAChCC,EAAe,CAAA,GAAAZ,CAAA"}
@@ -2,7 +2,7 @@ import { LitElement } from 'lit';
2
2
  import type { Dropdown } from '@nvidia-elements/core/dropdown';
3
3
  /**
4
4
  * @element nve-dropdown-group
5
- * @description A Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience
5
+ * @description A dropdown group coordinates linked dropdowns and cascading submenus.
6
6
  * @documentation https://nvidia.github.io/elements/docs/elements/dropdown-group/
7
7
  * @since 1.30.1
8
8
  * @entrypoint \@nvidia-elements/core/dropdown-group
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-group.examples.js","names":["dropdown_group_examples_default"],"sources":["../../src/dropdown-group/dropdown-group.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/dropdown-group/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/icon/define.js';\nimport '@nvidia-elements/core/menu/define.js';\n\nexport default {\n title: 'Elements/Dropdown Group',\n component: 'nve-dropdown-group',\n};\n\n/**\n * @summary Cascading dropdown menu group with nested submenus for hierarchical navigation.\n */\nexport const Default = {\n render: () => html`\n <nve-button popovertarget=\"menu-1\">menu</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"menu-2\">\n item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>item 1-2</nve-menu-item>\n <nve-menu-item>item 1-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 2-1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-3\">\n item 2-2 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>item 2-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 3-1</nve-menu-item>\n <nve-menu-item>item 3-2</nve-menu-item>\n <nve-menu-item>item 3-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};\n\n/**\n * @summary Cascading dropdown menu with disabled menu items in non-interactive states.\n */\nexport const WithDisabledItems = {\n render: () => html`\n <nve-button popovertarget=\"disabled-menu-1\">Disabled Items</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"disabled-menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"disabled-menu-2\">\n item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item disabled>item 1-2</nve-menu-item>\n <nve-menu-item>item 1-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"disabled-menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 2-1</nve-menu-item>\n <nve-menu-item disabled>item 2-2</nve-menu-item>\n <nve-menu-item popovertarget=\"disabled-menu-3\">\n item 2-3 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"disabled-menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 3-1</nve-menu-item>\n <nve-menu-item disabled>item 3-2</nve-menu-item>\n <nve-menu-item>item 3-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};\n\n/**\n * @summary Cascading dropdown menu with leading icons for visual identification of menu item types.\n */\nexport const WithIcons = {\n render: () => html`\n <nve-button popovertarget=\"icon-menu-1\">Icons Menu</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"icon-menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"icon-menu-2\">\n <nve-icon name=\"folder\" size=\"sm\"></nve-icon> item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"image\" size=\"sm\"></nve-icon> item 1-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"video-camera\" size=\"sm\"></nve-icon> item 1-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"icon-menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"document\" size=\"sm\"></nve-icon> item 2-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"document\" size=\"sm\"></nve-icon> item 2-2\n </nve-menu-item>\n <nve-menu-item popovertarget=\"icon-menu-3\">\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 2-3 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"icon-menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 3-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 3-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 3-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};\n\n/**\n * @summary Cascading dropdown menu showcasing extra icon varieties for diverse menu actions.\n */\nexport const WithMoreIcons = {\n render: () => html`\n <nve-button popovertarget=\"more-icon-menu-1\">More Icons</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"more-icon-menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"more-icon-menu-2\">\n <nve-icon name=\"person\" size=\"sm\"></nve-icon> item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"arrow\" direction=\"right\" size=\"sm\"></nve-icon> item 1-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"star\" size=\"sm\"></nve-icon> item 1-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"more-icon-menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"flag\" size=\"sm\"></nve-icon> item 2-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"home\" size=\"sm\"></nve-icon> item 2-2\n </nve-menu-item>\n <nve-menu-item popovertarget=\"more-icon-menu-3\">\n <nve-icon name=\"gear\" size=\"sm\"></nve-icon> item 2-3 <nve-icon name=\"chevron\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"more-icon-menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"dot\" size=\"sm\"></nve-icon> item 3-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"exclamation-mark\" size=\"sm\"></nve-icon> item 3-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"edit\" size=\"sm\"></nve-icon> item 3-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};"],"mappings":";AAGA,IAAAA,IAAS"}
1
+ {"version":3,"file":"dropdown-group.examples.js","names":["dropdown_group_examples_default"],"sources":["../../src/dropdown-group/dropdown-group.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/dropdown-group/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/icon/define.js';\nimport '@nvidia-elements/core/menu/define.js';\n\nexport default {\n title: 'Elements/Dropdown Group',\n component: 'nve-dropdown-group',\n};\n\n/**\n * @summary Cascading dropdown menu group with nested submenus for hierarchical navigation.\n */\nexport const Default = {\n render: () => html`\n <nve-button popovertarget=\"menu-1\">menu</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"menu-2\">\n item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>item 1-2</nve-menu-item>\n <nve-menu-item>item 1-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 2-1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-3\">\n item 2-2 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>item 2-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 3-1</nve-menu-item>\n <nve-menu-item>item 3-2</nve-menu-item>\n <nve-menu-item>item 3-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};\n\n/**\n * @summary Cascading dropdown menu with disabled menu items in non-interactive states.\n */\nexport const WithDisabledItems = {\n render: () => html`\n <nve-button popovertarget=\"disabled-menu-1\">Disabled Items</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"disabled-menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"disabled-menu-2\">\n item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item disabled>item 1-2</nve-menu-item>\n <nve-menu-item>item 1-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"disabled-menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 2-1</nve-menu-item>\n <nve-menu-item disabled>item 2-2</nve-menu-item>\n <nve-menu-item popovertarget=\"disabled-menu-3\">\n item 2-3 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"disabled-menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>item 3-1</nve-menu-item>\n <nve-menu-item disabled>item 3-2</nve-menu-item>\n <nve-menu-item>item 3-3</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};\n\n/**\n * @summary Cascading dropdown menu with leading icons for visual identification of menu item types.\n */\nexport const WithIcons = {\n render: () => html`\n <nve-button popovertarget=\"icon-menu-1\">Icons Menu</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"icon-menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"icon-menu-2\">\n <nve-icon name=\"folder\" size=\"sm\"></nve-icon> item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"image\" size=\"sm\"></nve-icon> item 1-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"video-camera\" size=\"sm\"></nve-icon> item 1-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"icon-menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"document\" size=\"sm\"></nve-icon> item 2-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"document\" size=\"sm\"></nve-icon> item 2-2\n </nve-menu-item>\n <nve-menu-item popovertarget=\"icon-menu-3\">\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 2-3 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"icon-menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 3-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 3-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"terminal\" size=\"sm\"></nve-icon> item 3-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};\n\n/**\n * @summary Cascading dropdown menu showcasing extra icon varieties for diverse menu actions.\n */\nexport const WithMoreIcons = {\n render: () => html`\n <nve-button popovertarget=\"more-icon-menu-1\">More Icons</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"more-icon-menu-1\">\n <nve-menu>\n <nve-menu-item popovertarget=\"more-icon-menu-2\">\n <nve-icon name=\"person\" size=\"sm\"></nve-icon> item 1-1 <nve-icon name=\"caret\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"arrow\" direction=\"right\" size=\"sm\"></nve-icon> item 1-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"star\" size=\"sm\"></nve-icon> item 1-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"more-icon-menu-2\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"flag\" size=\"sm\"></nve-icon> item 2-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"home\" size=\"sm\"></nve-icon> item 2-2\n </nve-menu-item>\n <nve-menu-item popovertarget=\"more-icon-menu-3\">\n <nve-icon name=\"gear\" size=\"sm\"></nve-icon> item 2-3 <nve-icon name=\"chevron\" direction=\"right\" size=\"sm\"></nve-icon>\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"more-icon-menu-3\" position=\"right\">\n <nve-menu>\n <nve-menu-item>\n <nve-icon name=\"dot\" size=\"sm\"></nve-icon> item 3-1\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"exclamation-mark\" size=\"sm\"></nve-icon> item 3-2\n </nve-menu-item>\n <nve-menu-item>\n <nve-icon name=\"edit\" size=\"sm\"></nve-icon> item 3-3\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n `\n};\n\n/**\n * @summary Navigate cascading menus with the keyboard when the document direction is RTL.\n * @description `ArrowLeft` opens the focused item's submenu and focuses its first enabled item.\n * `ArrowRight` closes the current dropdown and returns focus to its opening invoker.\n * Escape closes the group's dropdowns.\n * @tags test-case\n */\nexport const RightToLeft = {\n render: () => html`\n <div dir=\"rtl\">\n <nve-button popovertarget=\"rtl-menu\">Actions</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"rtl-menu\">\n <nve-menu>\n <nve-menu-item popovertarget=\"rtl-submenu\">\n Move <nve-icon name=\"caret\" direction=\"left\" size=\"sm\" slot=\"suffix\"></nve-icon>\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"rtl-submenu\" position=\"left\">\n <nve-menu>\n <nve-menu-item>Archive</nve-menu-item>\n <nve-menu-item>Trash</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n </div>\n `\n};\n"],"mappings":";AAGA,IAAAA,IAAS"}
@@ -37,6 +37,17 @@
37
37
  "description": "",
38
38
  "composition": true,
39
39
  "tags": []
40
+ },
41
+ {
42
+ "id": "dropdown-group-right-to-left",
43
+ "name": "RightToLeft",
44
+ "template": "<div dir=\"rtl\">\n <nve-button popovertarget=\"rtl-menu\">Actions</nve-button>\n <nve-dropdown-group>\n <nve-dropdown id=\"rtl-menu\">\n <nve-menu>\n <nve-menu-item popovertarget=\"rtl-submenu\"> Move <nve-icon name=\"caret\" direction=\"left\" size=\"sm\" slot=\"suffix\"></nve-icon> </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n <nve-dropdown id=\"rtl-submenu\" position=\"left\">\n <nve-menu>\n <nve-menu-item>Archive</nve-menu-item>\n <nve-menu-item>Trash</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n </nve-dropdown-group>\n</div>\n",
45
+ "summary": "Navigate cascading menus with the keyboard when the document direction is RTL.",
46
+ "description": "`ArrowLeft` opens the focused item's submenu and focuses its first enabled item. `ArrowRight` closes the current dropdown and returns focus to its opening invoker. Escape closes the group's dropdowns.",
47
+ "composition": true,
48
+ "tags": [
49
+ "test-case"
50
+ ]
40
51
  }
41
52
  ]
42
53
  }
@@ -1,5 +1,5 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
- import { isSimpleFocusable as t } from "../internal/utils/focus.js";
2
+ import { getActiveElement as t } from "../internal/utils/focus.js";
3
3
  import { appendRootNodeStyle as n, clickOutsideElementBounds as r, getFlattenedFocusableItems as i } from "../internal/utils/dom.js";
4
4
  import { useStyles as a } from "../internal/styles/index.js";
5
5
  import o from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
@@ -14,50 +14,80 @@ var d = class extends c {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-dropdown-group",
17
- version: "2.20.3",
17
+ version: "2.21.1",
18
18
  children: ["nve-dropdown"]
19
19
  };
20
20
  }
21
21
  render() {
22
- return l`<div internal-host><slot @slotchange="${this.#t}"></slot></div>`;
22
+ return l`<div internal-host><slot @slotchange="${this.#n}"></slot></div>`;
23
23
  }
24
- #e = (e) => this.#n(e);
24
+ #e = /* @__PURE__ */ new WeakMap();
25
+ #t;
25
26
  connectedCallback() {
26
- super.connectedCallback(), n(this, s), globalThis.document?.addEventListener("pointerup", this.#e), this.addEventListener("keydown", this.#r), this.addEventListener("open", this.#i), this.addEventListener("close", this.#a);
27
+ super.connectedCallback(), n(this, s), globalThis.document?.addEventListener("pointerup", this.#r), this.addEventListener("keydown", this.#i), this.addEventListener("beforetoggle", this.#u, !0), this.addEventListener("open", this.#l), this.addEventListener("close", this.#d);
27
28
  }
28
29
  disconnectedCallback() {
29
- super.disconnectedCallback(), globalThis.document?.removeEventListener("pointerup", this.#e), this.removeEventListener("keydown", this.#r), this.removeEventListener("open", this.#i), this.removeEventListener("close", this.#a);
30
+ super.disconnectedCallback(), globalThis.document?.removeEventListener("pointerup", this.#r), this.removeEventListener("keydown", this.#i), this.removeEventListener("beforetoggle", this.#u, !0), this.removeEventListener("open", this.#l), this.removeEventListener("close", this.#d);
30
31
  }
31
- #t() {
32
+ #n() {
32
33
  this.dropdowns.forEach((e) => {
33
34
  e.popoverType = "manual";
34
35
  });
35
36
  }
36
- #n(e) {
37
- let t = this.dropdowns.some((e) => e.matches(":popover-open")), n = this.dropdowns.every((t) => r(e, t));
38
- t && n && this.close();
39
- }
40
- #r(e) {
41
- let n = e.target;
42
- if (e.code === "Escape" && this.close(), e.code === "ArrowRight") {
43
- let e = n.getAttribute("popovertarget");
44
- this.dropdowns.find((t) => t.id === e)?.showPopover();
45
- }
46
- e.code === "ArrowLeft" && t(e.target) && n.closest("nve-dropdown")?.hidePopover();
47
- }
37
+ #r = (e) => {
38
+ let t = this.dropdowns.filter((e) => e.matches(":popover-open"));
39
+ t.length && t.every((t) => r(e, t)) && this.close();
40
+ };
48
41
  #i(e) {
49
- let t = e.target;
50
- t.localName === "nve-dropdown" && this.dropdowns.find((e) => e === t) && i(t)[0]?.focus();
42
+ let t = e.code === "Escape" || e.code === "ArrowLeft" || e.code === "ArrowRight";
43
+ if (e.defaultPrevented || !t) return;
44
+ let n = e.composedPath(), r = this.#a(n), i = this.#c(r);
45
+ (i || r === this) && (e.code === "Escape" ? (e.preventDefault(), e.stopPropagation(), this.close()) : i && this.#o(e, n, i));
51
46
  }
52
47
  #a(e) {
53
- let t = e.target;
54
- t.localName === "nve-dropdown" && this.dropdowns.find((e) => e === t) && t._activeTrigger?.focus();
48
+ return e.find((e) => e instanceof HTMLElement && (e.localName === "nve-dropdown" || e.localName === "nve-dropdown-group"));
49
+ }
50
+ #o(e, n, r) {
51
+ let i = t(this.ownerDocument);
52
+ if (!(i instanceof HTMLElement) || !n.includes(i)) return;
53
+ let a = getComputedStyle(this).direction === "rtl", o = a ? "ArrowLeft" : "ArrowRight", s = a ? "ArrowRight" : "ArrowLeft";
54
+ e.code === o ? this.#s(i, e) : e.code === s && i.localName === "nve-menu-item" && (e.preventDefault(), e.stopPropagation(), r.hidePopover());
55
+ }
56
+ #s(e, t) {
57
+ if (e.matches("[disabled]") || !("popoverTargetElement" in e)) return;
58
+ let n = e.popoverTargetElement, r = this.#c(n);
59
+ r && (t.preventDefault(), t.stopPropagation(), r.showPopover({ source: e }));
60
+ }
61
+ #c(e) {
62
+ return this.dropdowns.find((t) => t === e);
63
+ }
64
+ #l(e) {
65
+ let t = this.#c(e.composedPath()[0]);
66
+ t && (this.#t?.matches(":popover-open") || (this.#t = t), this.#e.delete(t), e.detail?.trigger instanceof HTMLElement && this.#e.set(t, e.detail.trigger), i(t)[0]?.focus());
67
+ }
68
+ #u(e) {
69
+ let t = this.#c(e.composedPath()[0]);
70
+ t && e.newState === "closed" && !t.matches(":focus-within") && this.#e.delete(t);
71
+ }
72
+ #d(e) {
73
+ let t = this.#c(e.composedPath()[0]);
74
+ if (t) {
75
+ let e = this.#e.get(t);
76
+ t === this.#t && (this.#t = void 0), this.#e.delete(t);
77
+ let n = this.ownerDocument.activeElement;
78
+ (!n || n === this.ownerDocument.body || t.matches(":focus-within")) && e?.isConnected && e.focus();
79
+ }
55
80
  }
56
81
  close() {
57
- this.querySelectorAll("nve-dropdown").forEach((e) => e.hidePopover());
82
+ let e = this.#t ? this.#e.get(this.#t) : void 0;
83
+ this.#t = void 0, this.#e = /* @__PURE__ */ new WeakMap();
84
+ let t = Array.from(this.querySelectorAll("nve-dropdown"));
85
+ t.forEach((e) => e.hidePopover());
86
+ let n = this.ownerDocument.activeElement;
87
+ (!n || n === this.ownerDocument.body || t.some((e) => e.matches(":focus-within"))) && e?.isConnected && e.focus();
58
88
  }
59
89
  };
60
- o([u()], d.prototype, "dropdowns", void 0), d = o([e()], d);
90
+ o([u({ selector: "nve-dropdown" })], d.prototype, "dropdowns", void 0), d = o([e()], d);
61
91
  export { d as DropdownGroup };
62
92
 
63
93
  //# sourceMappingURL=dropdown-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-group.js","names":["globalStyles","_decorate","__decorate","dropdown_group_global_default","DropdownGroup","LitElement","useStyles","#syncDropdowns","#pointerup","appendRootNodeStyle","#_pointerup","#keydown","#onOpen","#onClose","multipleDropdownsOpen","dropdown","pointerIsOutsideGroup","clickOutsideElementBounds","event","target","targetId","d","isSimpleFocusable","getFlattenedFocusableItems","element","queryAssignedElements","audit"],"sources":["../../src/dropdown-group/dropdown-group.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport {\n clickOutsideElementBounds,\n appendRootNodeStyle,\n getFlattenedFocusableItems,\n isSimpleFocusable,\n useStyles,\n audit\n} from '@nvidia-elements/core/internal';\nimport type { Dropdown } from '@nvidia-elements/core/dropdown';\nimport globalStyles from './dropdown-group.global.css?inline';\n\n/**\n * @element nve-dropdown-group\n * @description A Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience\n * @documentation https://nvidia.github.io/elements/docs/elements/dropdown-group/\n * @since 1.30.1\n * @entrypoint \\@nvidia-elements/core/dropdown-group\n * @slot - default slot for dropdown content\n * @event open - Dispatched when a dropdown in the group opens\n * @event close - Dispatched when a dropdown in the group closes\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\nexport class DropdownGroup extends LitElement {\n static styles = useStyles([]);\n\n static readonly metadata = {\n tag: 'nve-dropdown-group',\n version: '0.0.0',\n children: ['nve-dropdown']\n };\n\n @queryAssignedElements() protected dropdowns!: Dropdown[];\n\n render() {\n return html`\n <div internal-host>\n <slot @slotchange=${this.#syncDropdowns}></slot>\n </div>\n `;\n }\n\n #_pointerup = (e: PointerEvent) => this.#pointerup(e);\n\n connectedCallback() {\n super.connectedCallback();\n appendRootNodeStyle(this, globalStyles);\n globalThis.document?.addEventListener('pointerup', this.#_pointerup);\n this.addEventListener('keydown', this.#keydown);\n this.addEventListener('open', this.#onOpen as EventListener);\n this.addEventListener('close', this.#onClose as EventListener);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n globalThis.document?.removeEventListener('pointerup', this.#_pointerup);\n this.removeEventListener('keydown', this.#keydown);\n this.removeEventListener('open', this.#onOpen as EventListener);\n this.removeEventListener('close', this.#onClose as EventListener);\n }\n\n #syncDropdowns() {\n this.dropdowns.forEach(dropdown => {\n dropdown.popoverType = 'manual';\n });\n }\n\n #pointerup(event: PointerEvent) {\n const multipleDropdownsOpen = this.dropdowns.some(dropdown => dropdown.matches(':popover-open'));\n const pointerIsOutsideGroup = this.dropdowns.every(dropdown => clickOutsideElementBounds(event, dropdown));\n if (multipleDropdownsOpen && pointerIsOutsideGroup) {\n this.close();\n }\n }\n\n #keydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n if (event.code === 'Escape') {\n this.close();\n }\n if (event.code === 'ArrowRight') {\n const targetId = target.getAttribute('popovertarget');\n const dropdown = this.dropdowns.find(d => d.id === targetId);\n dropdown?.showPopover();\n }\n if (event.code === 'ArrowLeft' && isSimpleFocusable(event.target as HTMLElement)) {\n target.closest('nve-dropdown')?.hidePopover();\n }\n }\n\n #onOpen(event: CustomEvent) {\n const dropdown = event.target as HTMLElement;\n const isLocalDropdown = dropdown.localName === 'nve-dropdown' && this.dropdowns.find(d => d === dropdown);\n if (isLocalDropdown) {\n getFlattenedFocusableItems(dropdown)[0]?.focus();\n }\n }\n\n #onClose(event: CustomEvent) {\n const element = event.target as HTMLElement;\n const isLocalDropdown = element.localName === 'nve-dropdown' && this.dropdowns.find(d => d === element);\n if (isLocalDropdown) {\n // _activeTrigger is a popover controller internal API\n const dropdown = element as Dropdown & { _activeTrigger?: HTMLElement };\n dropdown._activeTrigger?.focus();\n }\n }\n\n /** Closes every descendant dropdown in the group. */\n close() {\n this.querySelectorAll('nve-dropdown').forEach(d => d.hidePopover());\n }\n}\n"],"mappings":";;;;;;;;;AA6BO,IAAMI,IAAN,cAA4BC,EAAW;;EAC5B,KAAA,SAAAC,EAAU,CAAC,CAAC;;;EAED,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,cAAc;EAC3B;;CAIA,SAAS;EACP,OAAO,CAAI,yCAEa,KAAKC,GAAe;CAG9C;CAEA,MAAe,MAAoB,KAAKC,GAAW,CAAC;CAEpD,oBAAoB;EAMlB,AALA,MAAM,kBAAkB,GACxBC,EAAoB,MAAMT,CAAY,GACtC,WAAW,UAAU,iBAAiB,aAAa,KAAKU,EAAW,GACnE,KAAK,iBAAiB,WAAW,KAAKC,EAAQ,GAC9C,KAAK,iBAAiB,QAAQ,KAAKC,EAAwB,GAC3D,KAAK,iBAAiB,SAAS,KAAKC,EAAyB;CAC/D;CAEA,uBAAuB;EAKrB,AAJA,MAAM,qBAAqB,GAC3B,WAAW,UAAU,oBAAoB,aAAa,KAAKH,EAAW,GACtE,KAAK,oBAAoB,WAAW,KAAKC,EAAQ,GACjD,KAAK,oBAAoB,QAAQ,KAAKC,EAAwB,GAC9D,KAAK,oBAAoB,SAAS,KAAKC,EAAyB;CAClE;CAEA,KAAiB;EACf,KAAK,UAAU,SAAQ,MAAY;GACjC,EAAS,cAAc;EACzB,CAAC;CACH;CAEA,GAAW,GAAqB;EAC9B,IAAMC,IAAwB,KAAK,UAAU,MAAK,MAAYC,EAAS,QAAQ,eAAe,CAAC,GACzFC,IAAwB,KAAK,UAAU,OAAM,MAAYC,EAA0BC,GAAOH,CAAQ,CAAC;EACzG,AAAID,KAAyBE,KAC3B,KAAK,MAAM;CAEf;CAEA,GAAS,GAAsB;EAC7B,IAAMG,IAASD,EAAM;EAIrB,IAHIA,EAAM,SAAS,YACjB,KAAK,MAAM,GAETA,EAAM,SAAS,cAAc;GAC/B,IAAME,IAAWD,EAAO,aAAa,eAAe;GAEpD,KADsB,UAAU,MAAK,MAAKE,EAAE,OAAOD,CACnD,CAAA,EAAU,YAAY;EACxB;EACA,AAAIF,EAAM,SAAS,eAAeI,EAAkBJ,EAAM,MAAqB,KAC7EC,EAAO,QAAQ,cAAc,CAAC,EAAE,YAAY;CAEhD;CAEA,GAAQ,GAAoB;EAC1B,IAAMJ,IAAWG,EAAM;EAEvB,AADwBH,EAAS,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAKM,MAAMN,CAAQ,KAEtGQ,EAA2BR,CAAQ,CAAC,CAAC,EAAE,EAAE,MAAM;CAEnD;CAEA,GAAS,GAAoB;EAC3B,IAAMS,IAAUN,EAAM;EAEtB,AADwBM,EAAQ,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAKH,MAAMG,CAAO,KAIpGA,EAAS,gBAAgB,MAAM;CAEnC;CAGA,QAAQ;EACN,KAAK,iBAAiB,cAAc,CAAC,CAAC,SAAQ,MAAKH,EAAE,YAAY,CAAC;CACpE;AACF;AAhFGpB,EAAA,CAAAwB,EAAsB,CAAA,GAAArB,EAAA,WAAA,aAAA,KAAA,CAAA,GAVxB,IAAAH,EAAA,CAAAyB,EAAM,CAAA,GAAAtB,CAAA"}
1
+ {"version":3,"file":"dropdown-group.js","names":["globalStyles","_decorate","__decorate","dropdown_group_global_default","DropdownGroup","LitElement","useStyles","#syncDropdowns","appendRootNodeStyle","#pointerup","#keydown","#onBeforeToggle","#onOpen","#onClose","dropdowns","dropdown","clickOutsideElementBounds","event","isNavigationKey","path","boundary","#findDropdownBoundary","#findOwnedDropdown","#navigate","node","target","getActiveElement","rtl","openKey","closeKey","#openSubmenu","trigger","submenu","#rootDropdown","#openingTriggers","getFlattenedFocusableItems","activeElement","item","queryAssignedElements","audit"],"sources":["../../src/dropdown-group/dropdown-group.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport {\n clickOutsideElementBounds,\n appendRootNodeStyle,\n getFlattenedFocusableItems,\n getActiveElement,\n useStyles,\n audit\n} from '@nvidia-elements/core/internal';\nimport type { Dropdown } from '@nvidia-elements/core/dropdown';\nimport globalStyles from './dropdown-group.global.css?inline';\n\n/**\n * @element nve-dropdown-group\n * @description A dropdown group coordinates linked dropdowns and cascading submenus.\n * @documentation https://nvidia.github.io/elements/docs/elements/dropdown-group/\n * @since 1.30.1\n * @entrypoint \\@nvidia-elements/core/dropdown-group\n * @slot - default slot for dropdown content\n * @event open - Dispatched when a dropdown in the group opens\n * @event close - Dispatched when a dropdown in the group closes\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\nexport class DropdownGroup extends LitElement {\n static styles = useStyles([]);\n\n static readonly metadata = {\n tag: 'nve-dropdown-group',\n version: '0.0.0',\n children: ['nve-dropdown']\n };\n\n @queryAssignedElements({ selector: 'nve-dropdown' }) protected dropdowns!: Dropdown[];\n\n render() {\n return html`\n <div internal-host>\n <slot @slotchange=${this.#syncDropdowns}></slot>\n </div>\n `;\n }\n\n #openingTriggers = new WeakMap<Dropdown, HTMLElement>();\n #rootDropdown?: Dropdown;\n\n connectedCallback() {\n super.connectedCallback();\n appendRootNodeStyle(this, globalStyles);\n globalThis.document?.addEventListener('pointerup', this.#pointerup);\n this.addEventListener('keydown', this.#keydown);\n this.addEventListener('beforetoggle', this.#onBeforeToggle, true);\n this.addEventListener('open', this.#onOpen as EventListener);\n this.addEventListener('close', this.#onClose as EventListener);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n globalThis.document?.removeEventListener('pointerup', this.#pointerup);\n this.removeEventListener('keydown', this.#keydown);\n this.removeEventListener('beforetoggle', this.#onBeforeToggle, true);\n this.removeEventListener('open', this.#onOpen as EventListener);\n this.removeEventListener('close', this.#onClose as EventListener);\n }\n\n #syncDropdowns() {\n this.dropdowns.forEach(dropdown => {\n dropdown.popoverType = 'manual';\n });\n }\n\n #pointerup = (event: PointerEvent) => {\n const dropdowns = this.dropdowns.filter(dropdown => dropdown.matches(':popover-open'));\n if (dropdowns.length && dropdowns.every(dropdown => clickOutsideElementBounds(event, dropdown))) {\n this.close();\n }\n };\n\n #keydown(event: KeyboardEvent) {\n const isNavigationKey = event.code === 'Escape' || event.code === 'ArrowLeft' || event.code === 'ArrowRight';\n if (event.defaultPrevented || !isNavigationKey) return;\n const path = event.composedPath();\n const boundary = this.#findDropdownBoundary(path);\n const dropdown = this.#findOwnedDropdown(boundary);\n if (!dropdown && boundary !== this) return;\n\n if (event.code === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n this.close();\n return;\n }\n if (dropdown) this.#navigate(event, path, dropdown);\n }\n\n #findDropdownBoundary(path: EventTarget[]) {\n return path.find(\n node =>\n node instanceof HTMLElement && (node.localName === 'nve-dropdown' || node.localName === 'nve-dropdown-group')\n );\n }\n\n #navigate(event: KeyboardEvent, path: EventTarget[], dropdown: Dropdown) {\n const target = getActiveElement(this.ownerDocument);\n if (!(target instanceof HTMLElement) || !path.includes(target)) return;\n const rtl = getComputedStyle(this).direction === 'rtl';\n const openKey = rtl ? 'ArrowLeft' : 'ArrowRight';\n const closeKey = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.code === openKey) {\n this.#openSubmenu(target, event);\n return;\n }\n\n if (event.code === closeKey && target.localName === 'nve-menu-item') {\n event.preventDefault();\n event.stopPropagation();\n dropdown.hidePopover();\n }\n }\n\n #openSubmenu(trigger: HTMLElement, event: KeyboardEvent) {\n if (trigger.matches('[disabled]') || !('popoverTargetElement' in trigger)) return;\n const target = trigger.popoverTargetElement;\n const submenu = this.#findOwnedDropdown(target);\n if (!submenu) return;\n event.preventDefault();\n event.stopPropagation();\n submenu.showPopover({ source: trigger });\n }\n\n #findOwnedDropdown(target: unknown): Dropdown | undefined {\n return this.dropdowns.find(dropdown => dropdown === target);\n }\n\n #onOpen(event: CustomEvent<{ trigger?: HTMLElement }>) {\n const dropdown = this.#findOwnedDropdown(event.composedPath()[0]);\n if (dropdown) {\n if (!this.#rootDropdown?.matches(':popover-open')) {\n this.#rootDropdown = dropdown;\n }\n this.#openingTriggers.delete(dropdown);\n if (event.detail?.trigger instanceof HTMLElement) {\n this.#openingTriggers.set(dropdown, event.detail.trigger);\n }\n getFlattenedFocusableItems(dropdown)[0]?.focus();\n }\n }\n\n #onBeforeToggle(event: ToggleEvent) {\n const dropdown = this.#findOwnedDropdown(event.composedPath()[0]);\n if (dropdown && event.newState === 'closed' && !dropdown.matches(':focus-within')) {\n this.#openingTriggers.delete(dropdown);\n }\n }\n\n #onClose(event: CustomEvent) {\n const dropdown = this.#findOwnedDropdown(event.composedPath()[0]);\n if (dropdown) {\n const trigger = this.#openingTriggers.get(dropdown);\n if (dropdown === this.#rootDropdown) {\n this.#rootDropdown = undefined;\n }\n this.#openingTriggers.delete(dropdown);\n const activeElement = this.ownerDocument.activeElement;\n const focusLost = !activeElement || activeElement === this.ownerDocument.body;\n const restoreFocus = focusLost || dropdown.matches(':focus-within');\n if (restoreFocus && trigger?.isConnected) {\n trigger.focus();\n }\n }\n }\n\n /** Closes every descendant dropdown in the group. */\n close() {\n const trigger = this.#rootDropdown ? this.#openingTriggers.get(this.#rootDropdown) : undefined;\n this.#rootDropdown = undefined;\n this.#openingTriggers = new WeakMap();\n const dropdowns = Array.from(this.querySelectorAll('nve-dropdown'));\n dropdowns.forEach(dropdown => dropdown.hidePopover());\n const activeElement = this.ownerDocument.activeElement;\n const focusLost = !activeElement || activeElement === this.ownerDocument.body;\n const restoreFocus = focusLost || dropdowns.some(item => item.matches(':focus-within'));\n if (restoreFocus && trigger?.isConnected) {\n trigger.focus();\n }\n }\n}\n"],"mappings":"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"}
@@ -26,7 +26,7 @@ var g = {
26
26
  static {
27
27
  this.metadata = {
28
28
  tag: "nve-dropzone",
29
- version: "2.20.3",
29
+ version: "2.21.1",
30
30
  validators: [c, s],
31
31
  valueSchema: {
32
32
  type: "array",
@@ -11,7 +11,7 @@ var a = class extends n {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-file",
14
- version: "2.20.3"
14
+ version: "2.21.1"
15
15
  };
16
16
  }
17
17
  connectedCallback() {
@@ -94,7 +94,7 @@ var h = class extends i {
94
94
  static {
95
95
  this.metadata = {
96
96
  tag: "nve-format-bytes",
97
- version: "2.20.3"
97
+ version: "2.21.1"
98
98
  };
99
99
  }
100
100
  get #e() {
@@ -12,7 +12,7 @@ var s = class extends i {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-format-datetime",
15
- version: "2.20.3"
15
+ version: "2.21.1"
16
16
  };
17
17
  }
18
18
  get #e() {
@@ -28,7 +28,7 @@ var s = [
28
28
  static {
29
29
  this.metadata = {
30
30
  tag: "nve-format-number",
31
- version: "2.20.3"
31
+ version: "2.21.1"
32
32
  };
33
33
  }
34
34
  get #e() {
@@ -52,7 +52,7 @@ var s = {
52
52
  static {
53
53
  this.metadata = {
54
54
  tag: "nve-format-relative-time",
55
- version: "2.20.3"
55
+ version: "2.21.1"
56
56
  };
57
57
  }
58
58
  #e;