@nvidia-elements/core 2.20.2 → 2.20.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +6 -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.js +7 -7
  10. package/dist/button/button2.js +1 -1
  11. package/dist/button-group/button-group2.js +1 -1
  12. package/dist/card/card2.js +4 -4
  13. package/dist/chat-message/chat-message2.js +1 -1
  14. package/dist/checkbox/checkbox-group2.js +1 -1
  15. package/dist/checkbox/checkbox2.js +1 -1
  16. package/dist/color/color2.js +1 -1
  17. package/dist/combobox/combobox2.js +1 -1
  18. package/dist/copy-button/copy-button2.js +1 -1
  19. package/dist/date/date2.js +1 -1
  20. package/dist/datetime/datetime2.js +1 -1
  21. package/dist/dialog/dialog-footer2.js +1 -1
  22. package/dist/dialog/dialog-header2.js +1 -1
  23. package/dist/dialog/dialog2.js +1 -1
  24. package/dist/divider/divider2.js +1 -1
  25. package/dist/dot/dot2.js +1 -1
  26. package/dist/drag-handle/drag-handle2.js +1 -1
  27. package/dist/drawer/drawer-content2.js +1 -1
  28. package/dist/drawer/drawer-footer2.js +1 -1
  29. package/dist/drawer/drawer-header2.js +1 -1
  30. package/dist/drawer/drawer2.js +1 -1
  31. package/dist/dropdown/dropdown-footer2.js +1 -1
  32. package/dist/dropdown/dropdown-header2.js +1 -1
  33. package/dist/dropdown/dropdown2.js +1 -1
  34. package/dist/dropdown-group/dropdown-group.js +1 -1
  35. package/dist/dropzone/dropzone2.js +1 -1
  36. package/dist/file/file2.js +1 -1
  37. package/dist/format-bytes/format-bytes2.js +1 -1
  38. package/dist/format-datetime/format-datetime2.js +1 -1
  39. package/dist/format-number/format-number2.js +1 -1
  40. package/dist/format-relative-time/format-relative-time2.js +1 -1
  41. package/dist/format-truncate/format-truncate2.js +1 -1
  42. package/dist/forms/control/control2.js +1 -1
  43. package/dist/forms/control-group/control-group2.js +1 -1
  44. package/dist/forms/control-message/control-message2.js +1 -1
  45. package/dist/gauge/gauge2.js +1 -1
  46. package/dist/grid/cell/cell2.js +1 -1
  47. package/dist/grid/column/column2.js +1 -1
  48. package/dist/grid/footer/footer2.js +1 -1
  49. package/dist/grid/grid2.js +1 -1
  50. package/dist/grid/header/header2.js +1 -1
  51. package/dist/grid/placeholder/placeholder2.js +1 -1
  52. package/dist/grid/row/row2.js +1 -1
  53. package/dist/icon/icon2.js +2 -2
  54. package/dist/icon-button/icon-button2.js +1 -1
  55. package/dist/iframe/iframe2.js +1 -1
  56. package/dist/index.js +1 -1
  57. package/dist/input/input-group2.js +1 -1
  58. package/dist/input/input2.js +1 -1
  59. package/dist/internal/controllers/keynav-list.controller.js +1 -1
  60. package/dist/internal/controllers/keynav-list.controller.js.map +1 -1
  61. package/dist/joystick/joystick2.js +1 -1
  62. package/dist/logo/logo2.js +1 -1
  63. package/dist/menu/menu-group2.js +1 -1
  64. package/dist/menu/menu-item2.js +1 -1
  65. package/dist/menu/menu2.js +17 -12
  66. package/dist/menu/menu2.js.map +1 -1
  67. package/dist/month/month2.js +1 -1
  68. package/dist/notification/notification-group2.js +1 -1
  69. package/dist/notification/notification2.js +1 -1
  70. package/dist/page/page-panel/page-panel-content2.js +1 -1
  71. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  72. package/dist/page/page-panel/page-panel-header2.js +1 -1
  73. package/dist/page/page-panel/page-panel2.js +1 -1
  74. package/dist/page/page2.js +1 -1
  75. package/dist/page-header/page-header2.js +1 -1
  76. package/dist/page-loader/page-loader2.js +1 -1
  77. package/dist/pagination/pagination2.js +1 -1
  78. package/dist/panel/panel2.js +4 -4
  79. package/dist/password/password2.js +1 -1
  80. package/dist/preferences-input/preferences-input2.js +1 -1
  81. package/dist/progress-bar/progress-bar2.js +1 -1
  82. package/dist/progress-dot/progress-dot2.js +1 -1
  83. package/dist/progress-ring/progress-ring2.js +1 -1
  84. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  85. package/dist/pulse/pulse2.js +1 -1
  86. package/dist/radio/radio-group2.js +1 -1
  87. package/dist/radio/radio2.js +1 -1
  88. package/dist/range/range2.js +1 -1
  89. package/dist/resize-handle/resize-handle2.js +1 -1
  90. package/dist/search/search2.js +1 -1
  91. package/dist/select/select2.js +1 -1
  92. package/dist/skeleton/skeleton2.js +1 -1
  93. package/dist/sort-button/sort-button2.js +1 -1
  94. package/dist/sparkline/sparkline2.js +1 -1
  95. package/dist/star-rating/star-rating2.js +1 -1
  96. package/dist/steps/steps2.js +2 -2
  97. package/dist/switch/switch-group2.js +1 -1
  98. package/dist/switch/switch2.js +1 -1
  99. package/dist/tabs/tabs-group2.js +1 -1
  100. package/dist/tabs/tabs-item-group2.js +1 -1
  101. package/dist/tabs/tabs2.js +2 -2
  102. package/dist/tag/tag2.js +1 -1
  103. package/dist/textarea/textarea2.js +1 -1
  104. package/dist/time/time2.js +1 -1
  105. package/dist/toast/toast2.js +1 -1
  106. package/dist/toggletip/toggletip-footer2.js +1 -1
  107. package/dist/toggletip/toggletip-header2.js +1 -1
  108. package/dist/toggletip/toggletip2.js +1 -1
  109. package/dist/toolbar/toolbar2.js +1 -1
  110. package/dist/tooltip/tooltip2.js +1 -1
  111. package/dist/tree/tree-node2.js +1 -1
  112. package/dist/tree/tree2.js +1 -1
  113. package/dist/week/week2.js +1 -1
  114. package/package.json +1 -1
@@ -12,7 +12,7 @@ var s = class extends o(r) {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-button",
15
- version: "2.20.2"
15
+ version: "2.20.3"
16
16
  };
17
17
  }
18
18
  render() {
@@ -26,7 +26,7 @@ var f = class extends c {
26
26
  static {
27
27
  this.metadata = {
28
28
  tag: "nve-button-group",
29
- version: "2.20.2",
29
+ version: "2.20.3",
30
30
  children: [
31
31
  "nve-button",
32
32
  "nve-icon-button",
@@ -16,7 +16,7 @@ var d = class extends c {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-card",
19
- version: "2.20.2"
19
+ version: "2.20.3"
20
20
  };
21
21
  }
22
22
  render() {
@@ -37,7 +37,7 @@ var f = class extends c {
37
37
  static {
38
38
  this.metadata = {
39
39
  tag: "nve-card-header",
40
- version: "2.20.2",
40
+ version: "2.20.3",
41
41
  parents: ["nve-card"]
42
42
  };
43
43
  }
@@ -53,7 +53,7 @@ var p = class extends c {
53
53
  static {
54
54
  this.metadata = {
55
55
  tag: "nve-card-content",
56
- version: "2.20.2",
56
+ version: "2.20.3",
57
57
  parents: ["nve-card"]
58
58
  };
59
59
  }
@@ -70,7 +70,7 @@ var p = class extends c {
70
70
  static {
71
71
  this.metadata = {
72
72
  tag: "nve-card-footer",
73
- version: "2.20.2",
73
+ version: "2.20.3",
74
74
  parents: ["nve-card"]
75
75
  };
76
76
  }
@@ -13,7 +13,7 @@ var l = class extends o {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-chat-message",
16
- version: "2.20.2"
16
+ version: "2.20.3"
17
17
  };
18
18
  }
19
19
  render() {
@@ -12,7 +12,7 @@ var o = class extends i {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-checkbox-group",
15
- version: "2.20.2",
15
+ version: "2.20.3",
16
16
  children: [
17
17
  "label",
18
18
  "nve-control-message",
@@ -15,7 +15,7 @@ var o = class extends i {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-checkbox",
18
- version: "2.20.2",
18
+ version: "2.20.3",
19
19
  children: [
20
20
  "label",
21
21
  "input",
@@ -24,7 +24,7 @@ var f = { expand: "expand" }, p = class extends a {
24
24
  static {
25
25
  this.metadata = {
26
26
  tag: "nve-color",
27
- version: "2.20.2"
27
+ version: "2.20.3"
28
28
  };
29
29
  }
30
30
  static {
@@ -39,7 +39,7 @@ var S = {
39
39
  static {
40
40
  this.metadata = {
41
41
  tag: "nve-combobox",
42
- version: "2.20.2"
42
+ version: "2.20.3"
43
43
  };
44
44
  }
45
45
  static {
@@ -35,7 +35,7 @@ var p = {
35
35
  static {
36
36
  this.metadata = {
37
37
  tag: "nve-copy-button",
38
- version: "2.20.2"
38
+ version: "2.20.3"
39
39
  };
40
40
  }
41
41
  static {
@@ -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.2"
25
+ version: "2.20.3"
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.2"
25
+ version: "2.20.3"
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.2",
12
+ version: "2.20.3",
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.2",
12
+ version: "2.20.3",
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.2"
33
+ version: "2.20.3"
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.2"
18
+ version: "2.20.3"
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.2"
19
+ version: "2.20.3"
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.2"
16
+ version: "2.20.3"
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.2",
12
+ version: "2.20.3",
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.2",
12
+ version: "2.20.3",
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.2",
12
+ version: "2.20.3",
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.2"
33
+ version: "2.20.3"
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.2",
12
+ version: "2.20.3",
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.2",
12
+ version: "2.20.3",
13
13
  parents: ["nve-dropdown"]
14
14
  };
15
15
  }
@@ -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.2"
24
+ version: "2.20.3"
25
25
  };
26
26
  }
27
27
  static {
@@ -14,7 +14,7 @@ var d = class extends c {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-dropdown-group",
17
- version: "2.20.2",
17
+ version: "2.20.3",
18
18
  children: ["nve-dropdown"]
19
19
  };
20
20
  }
@@ -26,7 +26,7 @@ var g = {
26
26
  static {
27
27
  this.metadata = {
28
28
  tag: "nve-dropzone",
29
- version: "2.20.2",
29
+ version: "2.20.3",
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.2"
14
+ version: "2.20.3"
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.2"
97
+ version: "2.20.3"
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.2"
15
+ version: "2.20.3"
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.2"
31
+ version: "2.20.3"
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.2"
55
+ version: "2.20.3"
56
56
  };
57
57
  }
58
58
  #e;
@@ -19,7 +19,7 @@ var d = class extends c {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-format-truncate",
22
- version: "2.20.2"
22
+ version: "2.20.3"
23
23
  };
24
24
  }
25
25
  #e;
@@ -51,7 +51,7 @@ var C = class extends _ {
51
51
  static {
52
52
  this.metadata = {
53
53
  tag: "nve-control",
54
- version: "2.20.2"
54
+ version: "2.20.3"
55
55
  };
56
56
  }
57
57
  render() {
@@ -24,7 +24,7 @@ var m = class extends d {
24
24
  static {
25
25
  this.metadata = {
26
26
  tag: "nve-control-group",
27
- version: "2.20.2"
27
+ version: "2.20.3"
28
28
  };
29
29
  }
30
30
  render() {
@@ -23,7 +23,7 @@ var l = {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-control-message",
26
- version: "2.20.2"
26
+ version: "2.20.3"
27
27
  };
28
28
  }
29
29
  static {
@@ -45,7 +45,7 @@ var l = {
45
45
  static {
46
46
  this.metadata = {
47
47
  tag: "nve-gauge",
48
- version: "2.20.2"
48
+ version: "2.20.3"
49
49
  };
50
50
  }
51
51
  #e;
@@ -10,7 +10,7 @@ var a = class extends r {
10
10
  static {
11
11
  this.metadata = {
12
12
  tag: "nve-grid-cell",
13
- version: "2.20.2"
13
+ version: "2.20.3"
14
14
  };
15
15
  }
16
16
  render() {
@@ -13,7 +13,7 @@ var c = class r extends a {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-grid-column",
16
- version: "2.20.2"
16
+ version: "2.20.3"
17
17
  };
18
18
  }
19
19
  get #e() {
@@ -15,7 +15,7 @@ var s = class extends a {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-grid-footer",
18
- version: "2.20.2"
18
+ version: "2.20.3"
19
19
  };
20
20
  }
21
21
  static {
@@ -23,7 +23,7 @@ var y = class extends g {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-grid",
26
- version: "2.20.2",
26
+ version: "2.20.3",
27
27
  children: [
28
28
  d.metadata.tag,
29
29
  f.metadata.tag,
@@ -19,7 +19,7 @@ var m = class extends d {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-grid-header",
22
- version: "2.20.2",
22
+ version: "2.20.3",
23
23
  children: [s.metadata.tag]
24
24
  };
25
25
  }
@@ -10,7 +10,7 @@ var a = class extends r {
10
10
  static {
11
11
  this.metadata = {
12
12
  tag: "nve-grid-placeholder",
13
- version: "2.20.2"
13
+ version: "2.20.3"
14
14
  };
15
15
  }
16
16
  render() {
@@ -15,7 +15,7 @@ var u = class extends s {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-grid-row",
18
- version: "2.20.2",
18
+ version: "2.20.3",
19
19
  children: [a.metadata.tag]
20
20
  };
21
21
  }
@@ -16,7 +16,7 @@ var f = class n extends o {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-icon",
19
- version: "2.20.2"
19
+ version: "2.20.3"
20
20
  };
21
21
  }
22
22
  static {
@@ -103,7 +103,7 @@ a([l({
103
103
  })], f.prototype, "name", void 0), a([d()], f.prototype, "svg", void 0);
104
104
  function p(e) {
105
105
  if (typeof globalThis.customElements?.get == "function") {
106
- let t = n(e.metadata.version), i = n("2.20.2");
106
+ let t = n(e.metadata.version), i = n("2.20.3");
107
107
  t.minor <= i.minor && t.major <= i.major && (e._icons = {
108
108
  ...e._icons,
109
109
  ...r
@@ -15,7 +15,7 @@ var l = class extends a {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-icon-button",
18
- version: "2.20.2"
18
+ version: "2.20.3"
19
19
  };
20
20
  }
21
21
  static {
@@ -47,7 +47,7 @@ var a = "\n window.addEventListener('message', event => {\n if (event.so
47
47
  static {
48
48
  this.metadata = {
49
49
  tag: "nve-iframe",
50
- version: "2.20.2"
50
+ version: "2.20.3"
51
51
  };
52
52
  }
53
53
  static get observedAttributes() {
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { getThemeTokens as e } from "./internal/utils/dom.js";
2
2
  import { statusIcons as t } from "./internal/types/index.js";
3
3
  import { internal_exports as n } from "./internal/index.js";
4
4
  // src/index.ts
5
- var r = "2.20.2", i = "@nvidia-elements", a = n.I18nService;
5
+ var r = "2.20.3", i = "@nvidia-elements", a = n.I18nService;
6
6
  export { a as I18nService, i as SCOPE, r as VERSION, e as getThemeTokens, t as statusIcons };
7
7
 
8
8
  //# sourceMappingURL=index.js.map
@@ -11,7 +11,7 @@ var a = class extends n {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-input-group",
14
- version: "2.20.2"
14
+ version: "2.20.3"
15
15
  };
16
16
  }
17
17
  async connectedCallback() {
@@ -14,7 +14,7 @@ var a = r, o = class extends n {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-input",
17
- version: "2.20.2"
17
+ version: "2.20.3"
18
18
  };
19
19
  }
20
20
  };
@@ -31,7 +31,7 @@ var s = class {
31
31
  refreshItems(e) {
32
32
  let { manageFocus: t, manageTabindex: n, items: r, initialItem: i } = this.#e;
33
33
  if (!t || !n || this.#t) return;
34
- let a = r.find((t) => e.includes(t) && t.tabIndex === 0) ?? (i && r.includes(i) ? i : r[0]);
34
+ let a = r.find((e) => e.matches(":focus-within")) ?? r.find((t) => e.includes(t) && t.tabIndex === 0) ?? (i && r.includes(i) ? i : r[0]);
35
35
  Array.from(this.host.keynavListConfig.items).forEach((e) => {
36
36
  e.tabIndex = e === a ? 0 : -1;
37
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"keynav-list.controller.js","names":["keyNavigationList","target","KeyNavigationListController","instance","#config","i","host","#keynavDisabled","#initializeTabIndex","#onPointerUp","#onKeyDown","manageFocus","manageTabindex","activeItem","items","previousItems","item","initialItem","initializeKeyListItems","setActiveKeyListItem","#getPointerActiveItem","#setActiveItem","validKeyNavigationCode","#getKeyboardActiveItem","getNextKeyListItem","next","previous","path","itemIndex","descendant","isFocusable","focusElement","e","detail","#clickItem","#focusItem","resolveArrowDirection","config","start","dir","KeynavCode","end","layout","code","resolveSpecialKey","navigateWithLoop","options","current","step","limit","loop","itemCount"],"sources":["../../../src/internal/controllers/keynav-list.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { focusElement, initializeKeyListItems, isFocusable, setActiveKeyListItem } from '../utils/focus.js';\nimport { KeynavCode, validKeyNavigationCode } from '../utils/dom.js';\n\nexport interface KeynavListConfig {\n items: NodeListOf<HTMLElement> | HTMLElement[];\n initialItem?: HTMLElement;\n layout?: 'both' | 'horizontal' | 'vertical';\n manageFocus?: boolean;\n manageTabindex?: boolean;\n loop?: boolean;\n dir?: string | null;\n}\n\nexport interface KeynavListElement {\n keynavListConfig: KeynavListConfig;\n}\n\n/** https://webaim.org/techniques/keyboard/ */\nexport function keyNavigationList<T extends ReactiveElement & KeynavListElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationListController(instance));\n}\n\nexport class KeyNavigationListController<T extends ReactiveElement & KeynavListElement> implements ReactiveController {\n get #config(): KeynavListConfig & { items: HTMLElement[] } {\n return {\n layout: 'horizontal',\n manageFocus: true,\n manageTabindex: true,\n loop: false,\n dir: this.host.getAttribute('rtl'),\n ...this.host.keynavListConfig,\n items: Array.from(this.host.keynavListConfig.items).filter(\n (i: HTMLElement & { disabled?: boolean }) => !i.disabled\n )\n };\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n /** @private attr nve-keynav-disabled is an internal API for advanced use cases only */\n get #keynavDisabled() {\n return this.host.hasAttribute('nve-keynav-disabled');\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n this.#initializeTabIndex();\n this.host.addEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('keydown', this.#onKeyDown);\n }\n\n hostDisconnected() {\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.removeEventListener('keydown', this.#onKeyDown);\n }\n\n /** Updates the focus order after configured items change without moving focus. */\n refreshItems(previousItems: readonly HTMLElement[]) {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (!manageFocus || !manageTabindex || this.#keynavDisabled) return;\n\n const activeItem =\n items.find(item => previousItems.includes(item) && item.tabIndex === 0) ??\n (initialItem && items.includes(initialItem) ? initialItem : items[0]);\n Array.from(this.host.keynavListConfig.items).forEach(item => {\n item.tabIndex = item === activeItem ? 0 : -1;\n });\n }\n\n #initializeTabIndex() {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (manageFocus && manageTabindex && !this.#keynavDisabled) {\n initializeKeyListItems(items);\n if (initialItem && items.includes(initialItem)) {\n setActiveKeyListItem(items, initialItem);\n }\n }\n }\n\n #clickItem(e: PointerEvent) {\n const item = this.#getPointerActiveItem(e, this.#config.items);\n if (item) {\n this.#setActiveItem(e, item);\n }\n }\n\n #focusItem(e: KeyboardEvent) {\n if (validKeyNavigationCode(e) && !this.#keynavDisabled) {\n const { loop, layout, dir, items } = this.#config;\n const activeItem = this.#getKeyboardActiveItem(e, items);\n if (activeItem) {\n const { next, previous } = getNextKeyListItem(activeItem, Array.from(items), {\n loop,\n layout,\n dir,\n code: e.code\n });\n\n if (next !== previous) {\n this.#setActiveItem(e, items[next]!, items[previous]);\n }\n }\n }\n }\n\n #getKeyboardActiveItem(e: KeyboardEvent, items: HTMLElement[]) {\n const target = e.composedPath()[0];\n return target instanceof HTMLElement && items.includes(target) ? target : null;\n }\n\n #getPointerActiveItem(e: PointerEvent, items: HTMLElement[]) {\n const path = e.composedPath();\n const itemIndex = path.findIndex(item => item instanceof HTMLElement && items.includes(item));\n const item = path[itemIndex];\n\n if (!(item instanceof HTMLElement)) return null;\n\n const hasFocusableDescendant = path\n .slice(0, itemIndex)\n .some(descendant => descendant instanceof Element && isFocusable(descendant));\n return hasFocusableDescendant ? null : item;\n }\n\n #setActiveItem(e: KeyboardEvent | PointerEvent, activeItem: HTMLElement, previousItem?: HTMLElement) {\n const { manageFocus, manageTabindex, items } = this.#config;\n if (manageFocus) {\n if (manageTabindex) {\n setActiveKeyListItem(items, activeItem);\n }\n\n focusElement(activeItem);\n e.preventDefault();\n }\n\n const detail = {\n activeItem,\n previousItem,\n code: e instanceof KeyboardEvent ? e.code : null,\n metaKey: e.ctrlKey || e.metaKey,\n items\n };\n activeItem.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onPointerUp = (e: PointerEvent) => this.#clickItem(e);\n\n #onKeyDown = (e: KeyboardEvent) => this.#focusItem(e);\n}\n\ninterface KeyListConfig {\n code: KeynavCode;\n loop?: boolean;\n layout?: 'horizontal' | 'vertical' | 'both';\n dir: string | null | undefined;\n}\n\nfunction resolveArrowDirection(config: KeyListConfig): 'backward' | 'forward' | null {\n const { code, layout, dir } = config;\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (layout !== 'horizontal') {\n if (code === KeynavCode.ArrowUp) return 'backward';\n if (code === KeynavCode.ArrowDown) return 'forward';\n }\n\n if (layout !== 'vertical') {\n if (code === start) return 'backward';\n if (code === end) return 'forward';\n }\n\n return null;\n}\n\nfunction resolveSpecialKey(code: KeynavCode): 'home' | 'end' | 'pageup' | 'pagedown' | null {\n if (code === KeynavCode.End) return 'end';\n if (code === KeynavCode.Home) return 'home';\n if (code === KeynavCode.PageUp) return 'pageup';\n if (code === KeynavCode.PageDown) return 'pagedown';\n return null;\n}\n\nfunction navigateWithLoop(current: number, step: number, options: { limit: number; loop: boolean | undefined }) {\n const { limit, loop } = options;\n const next = current + step;\n if (next >= 0 && next <= limit) return next;\n return loop ? (step < 0 ? limit : 0) : current;\n}\n\nexport function getNextKeyListItem(item: HTMLElement, items: HTMLElement[], config: KeyListConfig) {\n let next = items.indexOf(item);\n const previous = next;\n const itemCount = items.length - 1;\n const direction = resolveArrowDirection(config);\n\n switch (direction ?? resolveSpecialKey(config.code)) {\n case 'backward':\n next = navigateWithLoop(next, -1, { limit: itemCount, loop: config.loop });\n break;\n case 'forward':\n next = navigateWithLoop(next, 1, { limit: itemCount, loop: config.loop });\n break;\n case 'end':\n next = itemCount;\n break;\n case 'home':\n next = 0;\n break;\n case 'pageup':\n next = Math.max(0, next - 4);\n break;\n case 'pagedown':\n next = Math.min(itemCount, next + 4);\n break;\n case null:\n break;\n }\n\n return { next, previous };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"keynav-list.controller.js","names":["keyNavigationList","target","KeyNavigationListController","instance","#config","i","host","#keynavDisabled","#initializeTabIndex","#onPointerUp","#onKeyDown","manageFocus","manageTabindex","activeItem","items","item","previousItems","initialItem","initializeKeyListItems","setActiveKeyListItem","#getPointerActiveItem","#setActiveItem","validKeyNavigationCode","#getKeyboardActiveItem","getNextKeyListItem","next","previous","path","itemIndex","descendant","isFocusable","focusElement","e","detail","#clickItem","#focusItem","resolveArrowDirection","config","start","dir","KeynavCode","end","layout","code","resolveSpecialKey","navigateWithLoop","options","current","step","limit","loop","itemCount"],"sources":["../../../src/internal/controllers/keynav-list.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { focusElement, initializeKeyListItems, isFocusable, setActiveKeyListItem } from '../utils/focus.js';\nimport { KeynavCode, validKeyNavigationCode } from '../utils/dom.js';\n\nexport interface KeynavListConfig {\n items: NodeListOf<HTMLElement> | HTMLElement[];\n initialItem?: HTMLElement;\n layout?: 'both' | 'horizontal' | 'vertical';\n manageFocus?: boolean;\n manageTabindex?: boolean;\n loop?: boolean;\n dir?: string | null;\n}\n\nexport interface KeynavListElement {\n keynavListConfig: KeynavListConfig;\n}\n\n/** https://webaim.org/techniques/keyboard/ */\nexport function keyNavigationList<T extends ReactiveElement & KeynavListElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationListController(instance));\n}\n\nexport class KeyNavigationListController<T extends ReactiveElement & KeynavListElement> implements ReactiveController {\n get #config(): KeynavListConfig & { items: HTMLElement[] } {\n return {\n layout: 'horizontal',\n manageFocus: true,\n manageTabindex: true,\n loop: false,\n dir: this.host.getAttribute('rtl'),\n ...this.host.keynavListConfig,\n items: Array.from(this.host.keynavListConfig.items).filter(\n (i: HTMLElement & { disabled?: boolean }) => !i.disabled\n )\n };\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n /** @private attr nve-keynav-disabled is an internal API for advanced use cases only */\n get #keynavDisabled() {\n return this.host.hasAttribute('nve-keynav-disabled');\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n this.#initializeTabIndex();\n this.host.addEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('keydown', this.#onKeyDown);\n }\n\n hostDisconnected() {\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.removeEventListener('keydown', this.#onKeyDown);\n }\n\n /** Updates the focus order after configured items change without moving focus. */\n refreshItems(previousItems: readonly HTMLElement[]) {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (!manageFocus || !manageTabindex || this.#keynavDisabled) return;\n\n const activeItem =\n items.find(item => item.matches(':focus-within')) ??\n items.find(item => previousItems.includes(item) && item.tabIndex === 0) ??\n (initialItem && items.includes(initialItem) ? initialItem : items[0]);\n Array.from(this.host.keynavListConfig.items).forEach(item => {\n item.tabIndex = item === activeItem ? 0 : -1;\n });\n }\n\n #initializeTabIndex() {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (manageFocus && manageTabindex && !this.#keynavDisabled) {\n initializeKeyListItems(items);\n if (initialItem && items.includes(initialItem)) {\n setActiveKeyListItem(items, initialItem);\n }\n }\n }\n\n #clickItem(e: PointerEvent) {\n const item = this.#getPointerActiveItem(e, this.#config.items);\n if (item) {\n this.#setActiveItem(e, item);\n }\n }\n\n #focusItem(e: KeyboardEvent) {\n if (validKeyNavigationCode(e) && !this.#keynavDisabled) {\n const { loop, layout, dir, items } = this.#config;\n const activeItem = this.#getKeyboardActiveItem(e, items);\n if (activeItem) {\n const { next, previous } = getNextKeyListItem(activeItem, Array.from(items), {\n loop,\n layout,\n dir,\n code: e.code\n });\n\n if (next !== previous) {\n this.#setActiveItem(e, items[next]!, items[previous]);\n }\n }\n }\n }\n\n #getKeyboardActiveItem(e: KeyboardEvent, items: HTMLElement[]) {\n const target = e.composedPath()[0];\n return target instanceof HTMLElement && items.includes(target) ? target : null;\n }\n\n #getPointerActiveItem(e: PointerEvent, items: HTMLElement[]) {\n const path = e.composedPath();\n const itemIndex = path.findIndex(item => item instanceof HTMLElement && items.includes(item));\n const item = path[itemIndex];\n\n if (!(item instanceof HTMLElement)) return null;\n\n const hasFocusableDescendant = path\n .slice(0, itemIndex)\n .some(descendant => descendant instanceof Element && isFocusable(descendant));\n return hasFocusableDescendant ? null : item;\n }\n\n #setActiveItem(e: KeyboardEvent | PointerEvent, activeItem: HTMLElement, previousItem?: HTMLElement) {\n const { manageFocus, manageTabindex, items } = this.#config;\n if (manageFocus) {\n if (manageTabindex) {\n setActiveKeyListItem(items, activeItem);\n }\n\n focusElement(activeItem);\n e.preventDefault();\n }\n\n const detail = {\n activeItem,\n previousItem,\n code: e instanceof KeyboardEvent ? e.code : null,\n metaKey: e.ctrlKey || e.metaKey,\n items\n };\n activeItem.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onPointerUp = (e: PointerEvent) => this.#clickItem(e);\n\n #onKeyDown = (e: KeyboardEvent) => this.#focusItem(e);\n}\n\ninterface KeyListConfig {\n code: KeynavCode;\n loop?: boolean;\n layout?: 'horizontal' | 'vertical' | 'both';\n dir: string | null | undefined;\n}\n\nfunction resolveArrowDirection(config: KeyListConfig): 'backward' | 'forward' | null {\n const { code, layout, dir } = config;\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (layout !== 'horizontal') {\n if (code === KeynavCode.ArrowUp) return 'backward';\n if (code === KeynavCode.ArrowDown) return 'forward';\n }\n\n if (layout !== 'vertical') {\n if (code === start) return 'backward';\n if (code === end) return 'forward';\n }\n\n return null;\n}\n\nfunction resolveSpecialKey(code: KeynavCode): 'home' | 'end' | 'pageup' | 'pagedown' | null {\n if (code === KeynavCode.End) return 'end';\n if (code === KeynavCode.Home) return 'home';\n if (code === KeynavCode.PageUp) return 'pageup';\n if (code === KeynavCode.PageDown) return 'pagedown';\n return null;\n}\n\nfunction navigateWithLoop(current: number, step: number, options: { limit: number; loop: boolean | undefined }) {\n const { limit, loop } = options;\n const next = current + step;\n if (next >= 0 && next <= limit) return next;\n return loop ? (step < 0 ? limit : 0) : current;\n}\n\nexport function getNextKeyListItem(item: HTMLElement, items: HTMLElement[], config: KeyListConfig) {\n let next = items.indexOf(item);\n const previous = next;\n const itemCount = items.length - 1;\n const direction = resolveArrowDirection(config);\n\n switch (direction ?? resolveSpecialKey(config.code)) {\n case 'backward':\n next = navigateWithLoop(next, -1, { limit: itemCount, loop: config.loop });\n break;\n case 'forward':\n next = navigateWithLoop(next, 1, { limit: itemCount, loop: config.loop });\n break;\n case 'end':\n next = itemCount;\n break;\n case 'home':\n next = 0;\n break;\n case 'pageup':\n next = Math.max(0, next - 4);\n break;\n case 'pagedown':\n next = Math.min(itemCount, next + 4);\n break;\n case null:\n break;\n }\n\n return { next, previous };\n}\n"],"mappings":"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"}
@@ -38,7 +38,7 @@ var d = {
38
38
  static {
39
39
  this.metadata = {
40
40
  tag: "nve-joystick",
41
- version: "2.20.2",
41
+ version: "2.20.3",
42
42
  valueSchema: {
43
43
  type: "object",
44
44
  properties: {
@@ -12,7 +12,7 @@ var c = class extends a {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-logo",
15
- version: "2.20.2"
15
+ version: "2.20.3"
16
16
  };
17
17
  }
18
18
  render() {
@@ -21,7 +21,7 @@ var d = class extends c {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-menu-group",
24
- version: "2.20.2",
24
+ version: "2.20.3",
25
25
  children: ["nve-menu"]
26
26
  };
27
27
  }