@nvidia-elements/core 0.0.5 → 0.0.7

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 (144) hide show
  1. package/CHANGELOG.md +16 -16
  2. package/NOTICE.md +222 -47
  3. package/dist/accordion/accordion.d.ts +1 -0
  4. package/dist/accordion/accordion2.js +14 -10
  5. package/dist/accordion/accordion2.js.map +1 -1
  6. package/dist/alert/alert-group2.js +1 -1
  7. package/dist/alert/alert2.js +1 -1
  8. package/dist/avatar/avatar-group2.js +1 -1
  9. package/dist/avatar/avatar2.js +1 -1
  10. package/dist/badge/badge2.js +1 -1
  11. package/dist/breadcrumb/breadcrumb2.js +1 -1
  12. package/dist/bundles/index.d.ts +18 -7
  13. package/dist/bundles/index.js +4 -4
  14. package/dist/button/button2.js +1 -1
  15. package/dist/button-group/button-group.d.ts +1 -0
  16. package/dist/button-group/button-group2.js +10 -6
  17. package/dist/button-group/button-group2.js.map +1 -1
  18. package/dist/card/card2.js +4 -4
  19. package/dist/chat-message/chat-message2.js +1 -1
  20. package/dist/checkbox/checkbox-group2.js +1 -1
  21. package/dist/checkbox/checkbox2.js +1 -1
  22. package/dist/color/color2.js +1 -1
  23. package/dist/combobox/combobox2.js +1 -1
  24. package/dist/copy-button/copy-button.d.ts +2 -1
  25. package/dist/copy-button/copy-button2.js +15 -9
  26. package/dist/copy-button/copy-button2.js.map +1 -1
  27. package/dist/custom-elements-jsx.d.ts +1 -2
  28. package/dist/custom-elements-vue.d.ts +1 -2
  29. package/dist/custom-elements.json +5 -12
  30. package/dist/data.html.json +3 -3
  31. package/dist/data.snippets.json +42 -42
  32. package/dist/date/date2.js +1 -1
  33. package/dist/datetime/datetime2.js +1 -1
  34. package/dist/dialog/dialog-footer2.js +1 -1
  35. package/dist/dialog/dialog-header2.js +1 -1
  36. package/dist/dialog/dialog2.js +1 -1
  37. package/dist/divider/divider2.js +1 -1
  38. package/dist/dot/dot2.js +1 -1
  39. package/dist/drawer/drawer-content2.js +1 -1
  40. package/dist/drawer/drawer-footer2.js +1 -1
  41. package/dist/drawer/drawer-header2.js +1 -1
  42. package/dist/drawer/drawer.d.ts +1 -0
  43. package/dist/drawer/drawer2.js +8 -4
  44. package/dist/drawer/drawer2.js.map +1 -1
  45. package/dist/dropdown/dropdown-footer2.js +1 -1
  46. package/dist/dropdown/dropdown-header2.js +1 -1
  47. package/dist/dropdown/dropdown2.js +1 -1
  48. package/dist/dropdown-group/dropdown-group.js +2 -2
  49. package/dist/dropdown-group/dropdown-group.js.map +1 -1
  50. package/dist/dropzone/dropzone.d.ts +2 -1
  51. package/dist/dropzone/dropzone2.js +1 -1
  52. package/dist/file/file2.js +1 -1
  53. package/dist/format-datetime/format-datetime2.js +1 -1
  54. package/dist/format-relative-time/format-relative-time2.js +1 -1
  55. package/dist/forms/control/control.d.ts +1 -1
  56. package/dist/forms/control/control2.js +22 -17
  57. package/dist/forms/control/control2.js.map +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/grid/cell/cell2.js +1 -1
  61. package/dist/grid/column/column.d.ts +1 -0
  62. package/dist/grid/column/column2.js +18 -12
  63. package/dist/grid/column/column2.js.map +1 -1
  64. package/dist/grid/footer/footer2.js +1 -1
  65. package/dist/grid/grid2.js +1 -1
  66. package/dist/grid/header/header.d.ts +1 -0
  67. package/dist/grid/header/header2.js +13 -8
  68. package/dist/grid/header/header2.js.map +1 -1
  69. package/dist/grid/placeholder/placeholder2.js +1 -1
  70. package/dist/grid/row/row2.js +1 -1
  71. package/dist/icon/icon2.js +2 -2
  72. package/dist/icon/icons.d.ts +2 -0
  73. package/dist/icon/icons.js.map +1 -1
  74. package/dist/icon-button/icon-button2.js +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/input/input-group2.js +1 -1
  77. package/dist/input/input2.js +1 -1
  78. package/dist/internal/services/global.service.js +1 -1
  79. package/dist/logo/logo2.js +1 -1
  80. package/dist/menu/menu-item2.js +1 -1
  81. package/dist/menu/menu2.js +1 -1
  82. package/dist/month/month2.js +1 -1
  83. package/dist/notification/notification-group2.js +1 -1
  84. package/dist/notification/notification2.js +1 -1
  85. package/dist/page/page-panel/page-panel-content2.js +1 -1
  86. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  87. package/dist/page/page-panel/page-panel-header2.js +1 -1
  88. package/dist/page/page-panel/page-panel2.js +1 -1
  89. package/dist/page/page2.js +1 -1
  90. package/dist/page-header/page-header.examples.js.map +1 -1
  91. package/dist/page-header/page-header.examples.json +8 -8
  92. package/dist/page-header/page-header.js +1 -1
  93. package/dist/page-header/page-header.js.map +1 -1
  94. package/dist/page-header/page-header2.js +1 -1
  95. package/dist/page-loader/page-loader2.js +1 -1
  96. package/dist/pagination/pagination.d.ts +2 -1
  97. package/dist/pagination/pagination2.js +1 -1
  98. package/dist/panel/panel2.js +4 -4
  99. package/dist/password/password2.js +1 -1
  100. package/dist/preferences-input/preferences-input.d.ts +2 -1
  101. package/dist/preferences-input/preferences-input2.js +1 -1
  102. package/dist/progress-bar/progress-bar2.js +1 -1
  103. package/dist/progress-ring/progress-ring2.js +1 -1
  104. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  105. package/dist/pulse/pulse2.js +1 -1
  106. package/dist/radio/radio-group2.js +1 -1
  107. package/dist/radio/radio2.js +1 -1
  108. package/dist/range/range2.js +1 -1
  109. package/dist/resize-handle/resize-handle.d.ts +2 -1
  110. package/dist/resize-handle/resize-handle2.js +1 -1
  111. package/dist/search/search2.js +1 -1
  112. package/dist/select/select2.js +1 -1
  113. package/dist/skeleton/skeleton2.js +1 -1
  114. package/dist/sort-button/sort-button.d.ts +1 -0
  115. package/dist/sort-button/sort-button2.js +15 -11
  116. package/dist/sort-button/sort-button2.js.map +1 -1
  117. package/dist/sparkline/sparkline2.js +1 -1
  118. package/dist/star-rating/star-rating2.js +1 -1
  119. package/dist/steps/steps-item.js +1 -1
  120. package/dist/steps/steps-item.js.map +1 -1
  121. package/dist/steps/steps.d.ts +1 -2
  122. package/dist/steps/steps2.js +17 -14
  123. package/dist/steps/steps2.js.map +1 -1
  124. package/dist/switch/switch-group2.js +1 -1
  125. package/dist/switch/switch2.js +1 -1
  126. package/dist/tabs/tabs-group2.js +1 -1
  127. package/dist/tabs/tabs.d.ts +1 -0
  128. package/dist/tabs/tabs2.js +9 -3
  129. package/dist/tabs/tabs2.js.map +1 -1
  130. package/dist/tag/tag2.js +1 -1
  131. package/dist/textarea/textarea2.js +1 -1
  132. package/dist/time/time2.js +1 -1
  133. package/dist/toast/toast2.js +1 -1
  134. package/dist/toggletip/toggletip-footer2.js +1 -1
  135. package/dist/toggletip/toggletip-header2.js +1 -1
  136. package/dist/toggletip/toggletip2.js +1 -1
  137. package/dist/toolbar/toolbar2.js +1 -1
  138. package/dist/tooltip/tooltip2.js +1 -1
  139. package/dist/tree/tree-node.d.ts +1 -0
  140. package/dist/tree/tree-node2.js +8 -7
  141. package/dist/tree/tree-node2.js.map +1 -1
  142. package/dist/tree/tree2.js +1 -1
  143. package/dist/week/week2.js +1 -1
  144. package/package.json +5 -5
@@ -188,33 +188,6 @@
188
188
  "description": "Dialog is a component that appears above main content. A modal dialog is used to display critical information that requires users attention.",
189
189
  "body": "<nve-dialog size=\"${6:md}\" closable>\n <nve-dialog-header>\n <h3 nve-text=\"heading semibold\">${1:Title}</h3>\n </nve-dialog-header>\n <p nve-text=\"body\">${2:Content}</p>\n <nve-dialog-footer>\n <nve-button>${3:Cancel}</nve-button>\n <nve-button interaction=\"${4:emphasis}\">${5:OK}</nve-button>\n </nve-dialog-footer>\n</nve-dialog>\n$0\n"
190
190
  },
191
- "Card": {
192
- "srcFile": "card.snippets.html",
193
- "prefix": [
194
- "card"
195
- ],
196
- "type": "pattern",
197
- "description": "Basic Card with header and footer",
198
- "body": "<nve-card>\n <nve-card-header>\n <div slot=\"title\">${1:Title}</div>\n <div slot=\"subtitle\">${2:Sub Title}</div>\n </nve-card-header>\n <nve-card-content>\n ${3:\n <p>card content</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <nve-button style=\"margin-left: auto\">Action</nve-button>\n </nve-card-footer>\n</nve-card>\n"
199
- },
200
- "Media Card": {
201
- "srcFile": "card.snippets.html",
202
- "prefix": [
203
- "media-card"
204
- ],
205
- "type": "pattern",
206
- "description": "Basic media Card with card content and card footer",
207
- "body": "<nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${1:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${2:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${3:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n</nve-card>\n"
208
- },
209
- "Media Card Grid": {
210
- "srcFile": "card.snippets.html",
211
- "prefix": [
212
- "media-card-grid"
213
- ],
214
- "type": "pattern",
215
- "description": "Grid layout with 3 media cards",
216
- "body": "<section nve-layout=\"grid span-items:4 gap:md\">\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 1\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${1:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${2:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${3:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 2\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${4:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${5:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${6:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 3\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${7:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${8:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${9:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n</section>\n"
217
- },
218
191
  "Button Group": {
219
192
  "srcFile": "button-group.snippets.html",
220
193
  "prefix": [
@@ -251,32 +224,32 @@
251
224
  "description": "Simple vertical button group with three icon buttons.",
252
225
  "body": "<nve-button-group orientation=\"vertical\">\n <nve-icon-button icon-name=\"${1:copy}\"></nve-icon-button>\n <nve-icon-button icon-name=\"${2:add-comment}\"></nve-icon-button>\n <nve-icon-button icon-name=\"${3:download}\"></nve-icon-button>\n</nve-button-group>\n"
253
226
  },
254
- "Alert Group": {
255
- "srcFile": "alert.snippets.html",
227
+ "Card": {
228
+ "srcFile": "card.snippets.html",
256
229
  "prefix": [
257
- "alert-group"
230
+ "card"
258
231
  ],
259
232
  "type": "pattern",
260
- "description": "Alert group with two alerts.",
261
- "body": "<nve-alert-group status=\"${1:accent}\" container=\"${2:flat}\" prominence=\"emphasis\">\n <nve-alert closable>${3:Alert Text}</nve-alert>\n <nve-alert closable>${4:Alert Text}</nve-alert>\n</nve-alert-group>\n$0\n"
233
+ "description": "Basic Card with header and footer",
234
+ "body": "<nve-card>\n <nve-card-header>\n <div slot=\"title\">${1:Title}</div>\n <div slot=\"subtitle\">${2:Sub Title}</div>\n </nve-card-header>\n <nve-card-content>\n ${3:\n <p>card content</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <nve-button style=\"margin-left: auto\">Action</nve-button>\n </nve-card-footer>\n</nve-card>\n"
262
235
  },
263
- "Alert with Action": {
264
- "srcFile": "alert.snippets.html",
236
+ "Media Card": {
237
+ "srcFile": "card.snippets.html",
265
238
  "prefix": [
266
- "alert-action"
239
+ "media-card"
267
240
  ],
268
241
  "type": "pattern",
269
- "description": "Alert with action button.",
270
- "body": "<nve-alert-group status=\"${1:accent}\" container=\"${2:flat}\" prominence=\"emphasis\">\n <nve-alert> ${3:Alert Text} <nve-button slot=\"actions\" container=\"flat\">${4:OK!}</nve-button> </nve-alert>\n</nve-alert-group>\n$0\n"
242
+ "description": "Basic media Card with card content and card footer",
243
+ "body": "<nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${1:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${2:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${3:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n</nve-card>\n"
271
244
  },
272
- "Multiline Alert ": {
273
- "srcFile": "alert.snippets.html",
245
+ "Media Card Grid": {
246
+ "srcFile": "card.snippets.html",
274
247
  "prefix": [
275
- "multiline-alert"
248
+ "media-card-grid"
276
249
  ],
277
250
  "type": "pattern",
278
- "description": "Alert text and preformatted code output.",
279
- "body": "<nve-alert-group status=\"danger\">\n <nve-alert>\n Session Paused:\n <div slot=\"content\" nve-layout=\"column gap:sm align:stretch\">\n <p nve-text=\"body sm\">Failed to verify drives. <a href=\"#\" nve-text=\"link\">Check Status</a></p>\n <nve-divider style=\"--color: var(--nve-sys-text-muted-color)\"></nve-divider>\n <pre nve-text=\"code sm\" style=\"background: transparent !important; margin: 0;\">10:06:01 AM [verify] update /virtual:/verify/\n10:06:11 AM [build] update /virtual:/build/\n10:06:22 AM [error] update /virtual:/error/ - failed to connect to remote\n </pre>\n </div>\n </nve-alert>\n</nve-alert-group>\n$0\n"
251
+ "description": "Grid layout with 3 media cards",
252
+ "body": "<section nve-layout=\"grid span-items:4 gap:md\">\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 1\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${1:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${2:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${3:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 2\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${4:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${5:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${6:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 3\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${7:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${8:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${9:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n</section>\n"
280
253
  },
281
254
  "Accordion": {
282
255
  "srcFile": "accordion.snippets.html",
@@ -304,5 +277,32 @@
304
277
  "type": "pattern",
305
278
  "description": "Accordion group with two accordion children.",
306
279
  "body": "<nve-accordion-group behavior-expand-single container=\"${1:flat}\">\n <nve-accordion>\n <nve-accordion-header>\n <div slot=\"title\">${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div slot=\"title\">${4:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div slot=\"title\">${6:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${7:Content} </nve-accordion-content>\n </nve-accordion>\n</nve-accordion-group>\n$0\n"
280
+ },
281
+ "Alert Group": {
282
+ "srcFile": "alert.snippets.html",
283
+ "prefix": [
284
+ "alert-group"
285
+ ],
286
+ "type": "pattern",
287
+ "description": "Alert group with two alerts.",
288
+ "body": "<nve-alert-group status=\"${1:accent}\" container=\"${2:flat}\" prominence=\"emphasis\">\n <nve-alert closable>${3:Alert Text}</nve-alert>\n <nve-alert closable>${4:Alert Text}</nve-alert>\n</nve-alert-group>\n$0\n"
289
+ },
290
+ "Alert with Action": {
291
+ "srcFile": "alert.snippets.html",
292
+ "prefix": [
293
+ "alert-action"
294
+ ],
295
+ "type": "pattern",
296
+ "description": "Alert with action button.",
297
+ "body": "<nve-alert-group status=\"${1:accent}\" container=\"${2:flat}\" prominence=\"emphasis\">\n <nve-alert> ${3:Alert Text} <nve-button slot=\"actions\" container=\"flat\">${4:OK!}</nve-button> </nve-alert>\n</nve-alert-group>\n$0\n"
298
+ },
299
+ "Multiline Alert ": {
300
+ "srcFile": "alert.snippets.html",
301
+ "prefix": [
302
+ "multiline-alert"
303
+ ],
304
+ "type": "pattern",
305
+ "description": "Alert text and preformatted code output.",
306
+ "body": "<nve-alert-group status=\"danger\">\n <nve-alert>\n Session Paused:\n <div slot=\"content\" nve-layout=\"column gap:sm align:stretch\">\n <p nve-text=\"body sm\">Failed to verify drives. <a href=\"#\" nve-text=\"link\">Check Status</a></p>\n <nve-divider style=\"--color: var(--nve-sys-text-muted-color)\"></nve-divider>\n <pre nve-text=\"code sm\" style=\"background: transparent !important; margin: 0;\">10:06:01 AM [verify] update /virtual:/verify/\n10:06:11 AM [build] update /virtual:/build/\n10:06:22 AM [error] update /virtual:/error/ - failed to connect to remote\n </pre>\n </div>\n </nve-alert>\n</nve-alert-group>\n$0\n"
307
307
  }
308
308
  }
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-date",
22
- version: "0.0.5"
22
+ version: "0.0.7"
23
23
  };
24
24
  }
25
25
  static {
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-datetime",
22
- version: "0.0.5"
22
+ version: "0.0.7"
23
23
  };
24
24
  }
25
25
  static {
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dialog-footer",
14
- version: "0.0.5",
14
+ version: "0.0.7",
15
15
  parents: ["nve-dialog"]
16
16
  };
17
17
  }
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dialog-header",
14
- version: "0.0.5",
14
+ version: "0.0.7",
15
15
  parents: ["nve-dialog"]
16
16
  };
17
17
  }
@@ -30,7 +30,7 @@ var h = class extends f {
30
30
  static {
31
31
  this.metadata = {
32
32
  tag: "nve-dialog",
33
- version: "0.0.5"
33
+ version: "0.0.7"
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: "0.0.5"
18
+ version: "0.0.7"
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: "0.0.5"
19
+ version: "0.0.7"
20
20
  };
21
21
  }
22
22
  render() {
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-drawer-content",
14
- version: "0.0.5",
14
+ version: "0.0.7",
15
15
  parents: ["nve-drawer"]
16
16
  };
17
17
  }
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-drawer-footer",
14
- version: "0.0.5",
14
+ version: "0.0.7",
15
15
  parents: ["nve-drawer"]
16
16
  };
17
17
  }
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-drawer-header",
14
- version: "0.0.5",
14
+ version: "0.0.7",
15
15
  parents: ["nve-drawer"]
16
16
  };
17
17
  }
@@ -86,4 +86,5 @@ export declare class Drawer extends LitElement {
86
86
  };
87
87
  render(): import('lit-html').TemplateResult<1>;
88
88
  connectedCallback(): void;
89
+ disconnectedCallback(): void;
89
90
  }
@@ -28,7 +28,7 @@ var p = class extends u {
28
28
  static {
29
29
  this.metadata = {
30
30
  tag: "nve-drawer",
31
- version: "0.0.5"
31
+ version: "0.0.7"
32
32
  };
33
33
  }
34
34
  static {
@@ -39,10 +39,14 @@ var p = class extends u {
39
39
  }
40
40
  #t;
41
41
  connectedCallback() {
42
- super.connectedCallback(), this.addEventListener("toggle", (t) => {
43
- this.inline && (this.#t && t.newState === "closed" ? this.#t.remove() : (this.#t = e(this), this.after(this.#t)));
44
- });
42
+ super.connectedCallback(), this.addEventListener("toggle", this.#n);
45
43
  }
44
+ disconnectedCallback() {
45
+ super.disconnectedCallback(), this.removeEventListener("toggle", this.#n), this.#t?.remove(), this.#t = void 0;
46
+ }
47
+ #n = (t) => {
48
+ this.inline && (this.#t && t.newState === "closed" ? this.#t.remove() : (this.#t = e(this), this.after(this.#t)));
49
+ };
46
50
  };
47
51
  t([f({
48
52
  type: String,
@@ -1 +1 @@
1
- {"version":3,"file":"drawer2.js","names":["#i18nController","#inlineElement"],"sources":["../../src/drawer/drawer.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 type { PopoverType, Size } from '@nvidia-elements/core/internal';\nimport {\n createGhostElement,\n I18nController,\n popoverStyles,\n scopedRegistry,\n TypeNativePopoverController,\n typeSSR,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport styles from './drawer.css?inline';\n\n/**\n * @element nve-drawer\n * @description Drawer are to display content that is out of context of the rest of the page (notifications, navigation, settings). Or use [Panel](./docs/elements/panel/) inline as its content couples with or closely relates to the content on the page (details, extra actions/options). [MDN Popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API)\n * @since 0.16.0\n * @entrypoint \\@nvidia-elements/core/drawer\n * @event beforetoggle - Dispatched on a popover just before showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/beforetoggle_event)\n * @event toggle - Dispatched on a popover element just after showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/toggle_event)\n * @event open - Dispatched when the drawer opens.\n * @event close - Dispatched when the drawer closes.\n * @slot - default content slot\n * @cssprop --border\n * @cssprop --background\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --box-shadow\n * @cssprop --gap\n * @cssprop --top\n * @cssprop --max-width\n * @cssprop --width\n * @cssprop --animation-duration - Duration of drawer open/close animations\n * @csspart icon-button - The close icon button element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/\n */\n@typeSSR()\n@scopedRegistry()\nexport class Drawer extends LitElement {\n /**\n * Sets the side position of the popover relative to the provided anchor element.\n * For drawer the anchor defaults to the document body.\n */\n @property({ type: String, reflect: true }) position: 'left' | 'right' | 'bottom' | 'top' = 'left';\n\n /**\n * Sets the max size of the drawer.\n */\n @property({ type: String, reflect: true }) size?: Size;\n\n /**\n * Determines if a close button should render within drawer. Non-closable\n * drawers suit drawers that require user confirmation steps.\n */\n @property({ type: Boolean }) closable: boolean;\n\n /**\n * Determines if a drawer should have a modal backdrop that visually overlays the UI.\n */\n @property({ type: Boolean, reflect: true }) modal: boolean;\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 = globalThis.document?.body;\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 * Create a inline layout effect while retaining the a11y characteristics and top layer behavior (light dismiss, focus trap, non interactive background)\n * https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/\n */\n @property({ type: Boolean, reflect: true }) inline: boolean;\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 #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n /** @private */\n get popoverType(): PopoverType {\n return this.modal ? 'auto' : 'manual';\n }\n\n /** @private */\n get popoverDismissible() {\n return !!this.closable;\n }\n\n protected typeNativePopoverController = new TypeNativePopoverController<Drawer>(this);\n\n static styles = useStyles([popoverStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-drawer',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [IconButton.metadata.tag]: IconButton\n };\n\n render() {\n return html`\n <div internal-host>\n <div class=\"header\">\n <nve-icon-button part=\"icon-button\" exportparts=\"icon:icon-button-icon\" .hidden=${!this.closable} @click=${this.hidePopover} icon-name=\"cancel\" .ariaLabel=${this.i18n.close} container=\"flat\"></nve-icon-button>\n <slot name=\"header\"></slot>\n </div>\n <div class=\"content\">\n <slot></slot>\n </div>\n <div>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n `;\n }\n\n #inlineElement: HTMLElement;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('toggle', (e: ToggleEvent) => {\n if (this.inline) {\n if (this.#inlineElement && e.newState === 'closed') {\n this.#inlineElement.remove();\n } else {\n this.#inlineElement = createGhostElement(this);\n this.after(this.#inlineElement);\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AA2CO,IAAA,IAAA,cAAqB,EAAW;;+BAKsD,sBAsBhC,WAAW,UAAU,kBA0B7C,MAAA,EAAqB,yCAYhB,IAAI,EAAoC,KAAK;;CAjBrF,KAAwC,IAAI,EAAqB,KAAK;CAQtE,IAAI,cAA2B;AAC7B,SAAO,KAAK,QAAQ,SAAS;;CAI/B,IAAI,qBAAqB;AACvB,SAAO,CAAC,CAAC,KAAK;;;gBAKA,EAAU,CAAC,GAAe,EAAO,CAAC;;;kBAEvB;GACzB,KAAK;GACL,SAAS;GACV;;;4BAE2B,GACzB,EAAW,SAAS,MAAM,GAC5B;;CAED,SAAS;AACP,SAAO,CAAI,2HAG2E,CAAC,KAAK,SAAS,YAAU,KAAK,YAAY,mCAAiC,KAAK,KAAK,MAAM;;CAanL;CAEA,oBAA0B;AAExB,EADA,MAAM,mBAAmB,EACzB,KAAK,iBAAiB,WAAW,MAAmB;AAClD,GAAI,KAAK,WACH,MAAA,KAAuB,EAAE,aAAa,WACxC,MAAA,EAAoB,QAAQ,IAE5B,MAAA,IAAsB,EAAmB,KAAK,EAC9C,KAAK,MAAM,MAAA,EAAoB;IAGnC;;;GAvGH,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAKzC,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,KAMzC,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAK3B,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,SAAA,KAAA,EAAA,KAM1C,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,UAAA,KAAA,EAAA,KAO1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,WAAA,KAAA,EAAA,KAM1B,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,UAAA,KAAA,EAAA,KAM1C,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;CAAoB,CAAC,CAAA,EAAA,EAAA,WAAA,mBAAA,KAAA,EAAA,KAOzE,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,SAvD5B,GAAS,EACT,GAAgB,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"drawer2.js","names":["#i18nController","#onToggle","#inlineElement"],"sources":["../../src/drawer/drawer.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 type { PopoverType, Size } from '@nvidia-elements/core/internal';\nimport {\n createGhostElement,\n I18nController,\n popoverStyles,\n scopedRegistry,\n TypeNativePopoverController,\n typeSSR,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport styles from './drawer.css?inline';\n\n/**\n * @element nve-drawer\n * @description Drawer are to display content that is out of context of the rest of the page (notifications, navigation, settings). Or use [Panel](./docs/elements/panel/) inline as its content couples with or closely relates to the content on the page (details, extra actions/options). [MDN Popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API)\n * @since 0.16.0\n * @entrypoint \\@nvidia-elements/core/drawer\n * @event beforetoggle - Dispatched on a popover just before showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/beforetoggle_event)\n * @event toggle - Dispatched on a popover element just after showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/toggle_event)\n * @event open - Dispatched when the drawer opens.\n * @event close - Dispatched when the drawer closes.\n * @slot - default content slot\n * @cssprop --border\n * @cssprop --background\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --box-shadow\n * @cssprop --gap\n * @cssprop --top\n * @cssprop --max-width\n * @cssprop --width\n * @cssprop --animation-duration - Duration of drawer open/close animations\n * @csspart icon-button - The close icon button element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/\n */\n@typeSSR()\n@scopedRegistry()\nexport class Drawer extends LitElement {\n /**\n * Sets the side position of the popover relative to the provided anchor element.\n * For drawer the anchor defaults to the document body.\n */\n @property({ type: String, reflect: true }) position: 'left' | 'right' | 'bottom' | 'top' = 'left';\n\n /**\n * Sets the max size of the drawer.\n */\n @property({ type: String, reflect: true }) size?: Size;\n\n /**\n * Determines if a close button should render within drawer. Non-closable\n * drawers suit drawers that require user confirmation steps.\n */\n @property({ type: Boolean }) closable: boolean;\n\n /**\n * Determines if a drawer should have a modal backdrop that visually overlays the UI.\n */\n @property({ type: Boolean, reflect: true }) modal: boolean;\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 = globalThis.document?.body;\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 * Create a inline layout effect while retaining the a11y characteristics and top layer behavior (light dismiss, focus trap, non interactive background)\n * https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/\n */\n @property({ type: Boolean, reflect: true }) inline: boolean;\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 #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n /** @private */\n get popoverType(): PopoverType {\n return this.modal ? 'auto' : 'manual';\n }\n\n /** @private */\n get popoverDismissible() {\n return !!this.closable;\n }\n\n protected typeNativePopoverController = new TypeNativePopoverController<Drawer>(this);\n\n static styles = useStyles([popoverStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-drawer',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [IconButton.metadata.tag]: IconButton\n };\n\n render() {\n return html`\n <div internal-host>\n <div class=\"header\">\n <nve-icon-button part=\"icon-button\" exportparts=\"icon:icon-button-icon\" .hidden=${!this.closable} @click=${this.hidePopover} icon-name=\"cancel\" .ariaLabel=${this.i18n.close} container=\"flat\"></nve-icon-button>\n <slot name=\"header\"></slot>\n </div>\n <div class=\"content\">\n <slot></slot>\n </div>\n <div>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n `;\n }\n\n #inlineElement?: HTMLElement;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('toggle', this.#onToggle);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('toggle', this.#onToggle);\n this.#inlineElement?.remove();\n this.#inlineElement = undefined;\n }\n\n #onToggle = (toggleEvent: ToggleEvent) => {\n if (this.inline) {\n if (this.#inlineElement && toggleEvent.newState === 'closed') {\n this.#inlineElement.remove();\n } else {\n this.#inlineElement = createGhostElement(this);\n this.after(this.#inlineElement);\n }\n }\n };\n}\n"],"mappings":";;;;;;;;;;;;;AA2CO,IAAA,IAAA,cAAqB,EAAW;;+BAKsD,sBAsBhC,WAAW,UAAU,kBA0B7C,MAAA,EAAqB,yCAYhB,IAAI,EAAoC,KAAK;;CAjBrF,KAAwC,IAAI,EAAqB,KAAK;CAQtE,IAAI,cAA2B;AAC7B,SAAO,KAAK,QAAQ,SAAS;;CAI/B,IAAI,qBAAqB;AACvB,SAAO,CAAC,CAAC,KAAK;;;gBAKA,EAAU,CAAC,GAAe,EAAO,CAAC;;;kBAEvB;GACzB,KAAK;GACL,SAAS;GACV;;;4BAE2B,GACzB,EAAW,SAAS,MAAM,GAC5B;;CAED,SAAS;AACP,SAAO,CAAI,2HAG2E,CAAC,KAAK,SAAS,YAAU,KAAK,YAAY,mCAAiC,KAAK,KAAK,MAAM;;CAanL;CAEA,oBAA0B;AAExB,EADA,MAAM,mBAAmB,EACzB,KAAK,iBAAiB,UAAU,MAAA,EAAe;;CAGjD,uBAA6B;AAI3B,EAHA,MAAM,sBAAsB,EAC5B,KAAK,oBAAoB,UAAU,MAAA,EAAe,EAClD,MAAA,GAAqB,QAAQ,EAC7B,MAAA,IAAsB,KAAA;;CAGxB,MAAa,MAA6B;AACxC,EAAI,KAAK,WACH,MAAA,KAAuB,EAAY,aAAa,WAClD,MAAA,EAAoB,QAAQ,IAE5B,MAAA,IAAsB,EAAmB,KAAK,EAC9C,KAAK,MAAM,MAAA,EAAoB;;;GA9GpC,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAKzC,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,KAMzC,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAK3B,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,SAAA,KAAA,EAAA,KAM1C,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,UAAA,KAAA,EAAA,KAO1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,WAAA,KAAA,EAAA,KAM1B,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,UAAA,KAAA,EAAA,KAM1C,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;CAAoB,CAAC,CAAA,EAAA,EAAA,WAAA,mBAAA,KAAA,EAAA,KAOzE,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,SAvD5B,GAAS,EACT,GAAgB,CAAA,EAAA,EAAA"}
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dropdown-footer",
14
- version: "0.0.5",
14
+ version: "0.0.7",
15
15
  parents: ["nve-dropdown"]
16
16
  };
17
17
  }
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dropdown-header",
14
- version: "0.0.5",
14
+ version: "0.0.7",
15
15
  parents: ["nve-dropdown"]
16
16
  };
17
17
  }
@@ -21,7 +21,7 @@ var p = class extends l {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-dropdown",
24
- version: "0.0.5"
24
+ version: "0.0.7"
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: "0.0.5",
17
+ version: "0.0.7",
18
18
  children: ["nve-dropdown"]
19
19
  };
20
20
  }
@@ -26,7 +26,7 @@ var d = class extends c {
26
26
  super.connectedCallback(), t(this, s), globalThis.document?.addEventListener("pointerup", this.#e), this.addEventListener("keydown", this.#r), this.addEventListener("open", this.#i), this.addEventListener("close", this.#a);
27
27
  }
28
28
  disconnectedCallback() {
29
- super.disconnectedCallback(), globalThis.document?.removeEventListener("pointerup", this.#e);
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
30
  }
31
31
  #t() {
32
32
  this.dropdowns.forEach((e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-group.js","names":["#syncDropdowns","#pointerup","#_pointerup","#keydown","#onOpen","#onClose"],"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 * @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 --nve-dropdown-group-spacing\n * @cssprop --nve-dropdown-group-transition\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n * @stable false\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 }\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(dropdown => dropdown.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 close() {\n this.querySelectorAll('nve-dropdown').forEach(d => d.hidePopover());\n }\n}\n"],"mappings":";;;;;;;;;AA+BO,IAAA,IAAA,cAA4B,EAAW;;gBAC5B,EAAU,EAAE,CAAC;;;kBAEF;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,eAAA;GACZ;;CAID,SAAS;AACP,SAAO,CAAI,yCAEa,MAAA,EAAoB;;CAK9C,MAAe,MAAoB,MAAA,EAAgB,EAAE;CAErD,oBAAoB;AAMlB,EALA,MAAM,mBAAmB,EACzB,EAAoB,MAAM,EAAa,EACvC,WAAW,UAAU,iBAAiB,aAAa,MAAA,EAAiB,EACpE,KAAK,iBAAiB,WAAW,MAAA,EAAc,EAC/C,KAAK,iBAAiB,QAAQ,MAAA,EAA8B,EAC5D,KAAK,iBAAiB,SAAS,MAAA,EAA+B;;CAGhE,uBAAuB;AAErB,EADA,MAAM,sBAAsB,EAC5B,WAAW,UAAU,oBAAoB,aAAa,MAAA,EAAiB;;CAGzE,KAAiB;AACf,OAAK,UAAU,SAAQ,MAAY;AACjC,KAAS,cAAc;IACvB;;CAGJ,GAAW,GAAqB;EAC9B,IAAM,IAAwB,KAAK,UAAU,MAAK,MAAY,EAAS,QAAQ,gBAAgB,CAAC,EAC1F,IAAwB,KAAK,UAAU,OAAM,MAAY,EAA0B,GAAO,EAAS,CAAC;AAC1G,EAAI,KAAyB,KAC3B,KAAK,OAAO;;CAIhB,GAAS,GAAsB;EAC7B,IAAM,IAAS,EAAM;AAIrB,MAHI,EAAM,SAAS,YACjB,KAAK,OAAO,EAEV,EAAM,SAAS,cAAc;GAC/B,IAAM,IAAW,EAAO,aAAa,gBAAgB;AACpC,QAAK,UAAU,MAAK,MAAY,EAAS,OAAO,EAAS,EAChE,aAAa;;AAEzB,EAAI,EAAM,SAAS,eAAe,EAAkB,EAAM,OAAsB,IAC9E,EAAO,QAAQ,eAAe,EAAE,aAAa;;CAIjD,GAAQ,GAAoB;EAC1B,IAAM,IAAW,EAAM;AAEvB,EADwB,EAAS,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,EAAS,IAEvG,EAA2B,EAAS,CAAC,IAAI,OAAO;;CAIpD,GAAS,GAAoB;EAC3B,IAAM,IAAU,EAAM;AAEtB,EADwB,EAAQ,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,EAAQ,IAGpF,EACR,gBAAgB,OAAO;;CAIpC,QAAQ;AACN,OAAK,iBAAiB,eAAe,CAAC,SAAQ,MAAK,EAAE,aAAa,CAAC;;;GA1EpE,GAAuB,CAAA,EAAA,EAAA,WAAA,aAAA,KAAA,EAAA,SAVzB,GAAO,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"dropdown-group.js","names":["#syncDropdowns","#pointerup","#_pointerup","#keydown","#onOpen","#onClose"],"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 * @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 --nve-dropdown-group-spacing\n * @cssprop --nve-dropdown-group-transition\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n * @stable false\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(dropdown => dropdown.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 close() {\n this.querySelectorAll('nve-dropdown').forEach(d => d.hidePopover());\n }\n}\n"],"mappings":";;;;;;;;;AA+BO,IAAA,IAAA,cAA4B,EAAW;;gBAC5B,EAAU,EAAE,CAAC;;;kBAEF;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,eAAA;GACZ;;CAID,SAAS;AACP,SAAO,CAAI,yCAEa,MAAA,EAAoB;;CAK9C,MAAe,MAAoB,MAAA,EAAgB,EAAE;CAErD,oBAAoB;AAMlB,EALA,MAAM,mBAAmB,EACzB,EAAoB,MAAM,EAAa,EACvC,WAAW,UAAU,iBAAiB,aAAa,MAAA,EAAiB,EACpE,KAAK,iBAAiB,WAAW,MAAA,EAAc,EAC/C,KAAK,iBAAiB,QAAQ,MAAA,EAA8B,EAC5D,KAAK,iBAAiB,SAAS,MAAA,EAA+B;;CAGhE,uBAAuB;AAKrB,EAJA,MAAM,sBAAsB,EAC5B,WAAW,UAAU,oBAAoB,aAAa,MAAA,EAAiB,EACvE,KAAK,oBAAoB,WAAW,MAAA,EAAc,EAClD,KAAK,oBAAoB,QAAQ,MAAA,EAA8B,EAC/D,KAAK,oBAAoB,SAAS,MAAA,EAA+B;;CAGnE,KAAiB;AACf,OAAK,UAAU,SAAQ,MAAY;AACjC,KAAS,cAAc;IACvB;;CAGJ,GAAW,GAAqB;EAC9B,IAAM,IAAwB,KAAK,UAAU,MAAK,MAAY,EAAS,QAAQ,gBAAgB,CAAC,EAC1F,IAAwB,KAAK,UAAU,OAAM,MAAY,EAA0B,GAAO,EAAS,CAAC;AAC1G,EAAI,KAAyB,KAC3B,KAAK,OAAO;;CAIhB,GAAS,GAAsB;EAC7B,IAAM,IAAS,EAAM;AAIrB,MAHI,EAAM,SAAS,YACjB,KAAK,OAAO,EAEV,EAAM,SAAS,cAAc;GAC/B,IAAM,IAAW,EAAO,aAAa,gBAAgB;AACpC,QAAK,UAAU,MAAK,MAAY,EAAS,OAAO,EAAS,EAChE,aAAa;;AAEzB,EAAI,EAAM,SAAS,eAAe,EAAkB,EAAM,OAAsB,IAC9E,EAAO,QAAQ,eAAe,EAAE,aAAa;;CAIjD,GAAQ,GAAoB;EAC1B,IAAM,IAAW,EAAM;AAEvB,EADwB,EAAS,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,EAAS,IAEvG,EAA2B,EAAS,CAAC,IAAI,OAAO;;CAIpD,GAAS,GAAoB;EAC3B,IAAM,IAAU,EAAM;AAEtB,EADwB,EAAQ,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,EAAQ,IAGpF,EACR,gBAAgB,OAAO;;CAIpC,QAAQ;AACN,OAAK,iBAAiB,eAAe,CAAC,SAAQ,MAAK,EAAE,aAAa,CAAC;;;GA7EpE,GAAuB,CAAA,EAAA,EAAA,WAAA,aAAA,KAAA,EAAA,SAVzB,GAAO,CAAA,EAAA,EAAA"}
@@ -29,6 +29,8 @@ declare const Dropzone_base: {
29
29
  readonly _validators: import('@nvidia-elements/forms').Validator[];
30
30
  readonly _internals: ElementInternals;
31
31
  connectedCallback(): void;
32
+ disconnectedCallback(): void;
33
+ _stopInternalPropagation: (event: Event) => void;
32
34
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
33
35
  _handleAttributeChange(name: string, newValue: string): void;
34
36
  formResetCallback(): void;
@@ -397,7 +399,6 @@ declare const Dropzone_base: {
397
399
  tabIndex: number;
398
400
  blur(): void;
399
401
  focus(options?: FocusOptions): void;
400
- disconnectedCallback?(): void;
401
402
  requestUpdate?(name?: string, oldValue?: unknown): void;
402
403
  };
403
404
  formAssociated: boolean;
@@ -20,7 +20,7 @@ var g = class extends h(d) {
20
20
  static {
21
21
  this.metadata = {
22
22
  tag: "nve-dropzone",
23
- version: "0.0.5",
23
+ version: "0.0.7",
24
24
  validators: [l, c],
25
25
  valueSchema: {
26
26
  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: "0.0.5"
14
+ version: "0.0.7"
15
15
  };
16
16
  }
17
17
  connectedCallback() {
@@ -13,7 +13,7 @@ var c = class extends a {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-format-datetime",
16
- version: "0.0.5"
16
+ version: "0.0.7"
17
17
  };
18
18
  }
19
19
  get #e() {
@@ -16,7 +16,7 @@ var c = class extends a {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-format-relative-time",
19
- version: "0.0.5"
19
+ version: "0.0.7"
20
20
  };
21
21
  }
22
22
  #e;
@@ -21,7 +21,7 @@ import { TemplateResult, LitElement, nothing } from 'lit';
21
21
  */
22
22
  export declare class Control extends LitElement {
23
23
  #private;
24
- /** Set current visaul state for control. This overrides any validation states active. */
24
+ /** Set current visual state for control. This overrides any validation states active. */
25
25
  status: 'warning' | 'error' | 'success' | 'disabled';
26
26
  /** Set current control + label + control message layout. Layouts will collapse based on available container space. */
27
27
  layout: 'vertical' | 'vertical-inline' | 'horizontal' | 'horizontal-inline';
@@ -40,50 +40,55 @@ var C = class extends v {
40
40
  static {
41
41
  this.metadata = {
42
42
  tag: "nve-control",
43
- version: "0.0.5"
43
+ version: "0.0.7"
44
44
  };
45
45
  }
46
46
  render() {
47
47
  return this.nveControl === "inline" ? y`<div internal-host part="_internal-host"><div input part="_input"><slot interaction-state></slot></div><slot name="label" part="_label"></slot><slot name="messages" part="_messages"></slot></div>` : y`<div internal-host part="_internal-host"><slot name="label" part="_label"></slot><div input part="_input">${this.prefixContent}<slot></slot>${this.suffixContent}</div><slot name="messages" part="_messages"></slot></div>`;
48
48
  }
49
49
  connectedCallback() {
50
- super.connectedCallback(), a(this), e(this, g), this.shadowRoot.addEventListener("slotchange", () => {
51
- this.#l(), this.input && this.#i.length === 0 && (this.#a(), this.#o());
52
- });
50
+ super.connectedCallback(), a(this), e(this, g), this.shadowRoot.addEventListener("slotchange", this.#a);
53
51
  }
54
52
  disconnectedCallback() {
55
- super.disconnectedCallback(), this.#i.forEach((e) => e.disconnect());
53
+ super.disconnectedCallback(), this.shadowRoot.removeEventListener("slotchange", this.#a), this.shadowRoot.removeEventListener("slotchange", this.#s), this.fitText && this.input && (this.input.removeEventListener("input", this.#l), this.input.removeEventListener("change", this.#l)), this.#i.forEach((e) => e.disconnect()), this.#i.length = 0;
56
54
  }
55
+ #a = () => {
56
+ this.#f(), this.input && this.#i.length === 0 && (this.#o(), this.#c());
57
+ };
57
58
  reset() {
58
59
  this.input.value = this.input.getAttribute("value") ?? "", this.requestUpdate(), this.dispatchEvent(new CustomEvent("reset", {
59
60
  bubbles: !0,
60
61
  composed: !0
61
62
  }));
62
63
  }
63
- #a() {
64
- m(this, this.#n), this.#i.push(...f(this), ...p(this, this.#n), h(this), t(this, ["hidden", "status"], () => this.#l())), this.#c(), this.#u(), this.shadowRoot.addEventListener("slotchange", () => {
65
- this.#l(), this.#u();
66
- });
67
- }
68
64
  #o() {
69
- this.fitText && (this.#s(), this.input.addEventListener("input", () => this.#s()), this.input.addEventListener("change", () => this.#s()));
65
+ m(this, this.#n), this.#i.push(...f(this), ...p(this, this.#n), h(this), t(this, ["hidden", "status"], () => this.#f())), this.#d(), this.#p(), this.shadowRoot.addEventListener("slotchange", this.#s);
66
+ }
67
+ #s = () => {
68
+ this.#f(), this.#p();
69
+ };
70
+ #c() {
71
+ this.fitText && (this.#u(), this.input.addEventListener("input", this.#l), this.input.addEventListener("change", this.#l));
70
72
  }
71
- #s() {
73
+ #l = () => {
74
+ this.#u();
75
+ };
76
+ #u() {
72
77
  if (this.input.tagName === "INPUT") {
73
78
  let e = this.input.type === "text" ? 0 : 4;
74
79
  this.style.setProperty("--control-width", `${this.input.value.length + e}ch`), this.input.style.setProperty("max-width", `${this.input.value.length + 2}ch`, "important");
75
80
  } else this.input.tagName === "SELECT" && this.style.setProperty("--control-width", `${this.input.options[this.input.selectedIndex].textContent.length + 4}ch`);
76
81
  }
77
- #c() {
82
+ #d() {
78
83
  this.input.showPicker || (this.input.showPicker = () => this.input.focus());
79
84
  }
80
- #l() {
85
+ #f() {
81
86
  this.input && (this.toggleAttribute("multiple", this.input?.multiple), this.input?.hasAttribute("size") ? this.setAttribute("size", "") : this.removeAttribute("size"));
82
87
  }
83
- #u() {
84
- this.#d(), i(this.#t, this.input), n(Array.from(this.#n), this.input), this._associateDatalist && r(this.querySelector("datalist"), this.input);
88
+ #p() {
89
+ this.#m(), i(this.#t, this.input), n(Array.from(this.#n), this.input), this._associateDatalist && r(this.querySelector("datalist"), this.input);
85
90
  }
86
- #d() {
91
+ #m() {
87
92
  let e = this.querySelector("label") || this.shadowRoot.querySelector("slot").assignedNodes({ flatten: !0 }).find((e) => e.tagName === "LABEL");
88
93
  e && (e.slot = "label");
89
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"control2.js","names":["#i18nController","#label","#messages","#input","#updateStyleStates","#observers","#setupInput","#setupFitText","#polyfillShowPicker","#updateAssociations","#getCharacterWidth","#assignLabel"],"sources":["../../../src/forms/control/control.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TemplateResult } from 'lit';\nimport { LitElement, html, nothing, isServer } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport {\n attachInternals,\n useStyles,\n associateLabel,\n associateAriaDescribedBy,\n associateDataList,\n appendRootNodeStyle,\n getAttributeListChanges,\n I18nController,\n hostAttr,\n typeSSR\n} from '@nvidia-elements/core/internal';\nimport type { ControlMessage } from '../control-message/control-message.js';\nimport {\n setupControlValidationStates,\n setupControlStates,\n setupControlStatusStates,\n inputQuery\n} from '../utils/states.js';\nimport { setupControlLayoutStates } from '../utils/layout.js';\nimport globalStyles from './control.global.css?inline';\nimport styles from './control.css?inline';\n\n/**\n * @element nve-control\n * @description Wraps a form input with its associated label and validation messages, managing layout and accessibility associations.\n * @since 0.3.0\n * @entrypoint \\@nvidia-elements/core/forms\n * @slot - Control input element\n * @slot label - Label element\n * @cssprop --cursor\n * @cssprop --accent-color\n * @cssprop --color\n * @cssprop --label-color\n * @cssprop --label-width\n * @cssprop --label-font-weight\n * @cssprop --label-font-size\n * @cssprop --control-width\n * @cssprop --control-height\n\n * @aria https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals\n * @package true\n */\n@typeSSR()\nexport class Control extends LitElement {\n /** Set current visaul state for control. This overrides any validation states active. */\n @property({ type: String }) status: 'warning' | 'error' | 'success' | 'disabled';\n\n /** Set current control + label + control message layout. Layouts will collapse based on available container space. */\n @property({ type: String, reflect: true }) layout:\n | 'vertical'\n | 'vertical-inline'\n | 'horizontal'\n | 'horizontal-inline';\n\n /** Sets the input to match the width of the active text content of the control value. Only applicable to vertical input box type controls (input, select) */\n @property({ type: Boolean, reflect: true, attribute: 'fit-text' }) fitText = false;\n\n /** Sets the input to match native default content block */\n @property({ type: Boolean, reflect: true, attribute: 'fit-content' }) fitContent = false;\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /** Enables internal string values to update for internationalization. */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n /** Set the visual prominence of the control */\n @property({ type: String, reflect: true }) prominence: 'muted';\n\n get #label() {\n return this.shadowRoot\n ?.querySelector<HTMLSlotElement>('slot[name=\"label\"]')\n ?.assignedElements({ flatten: true })?.[0] as HTMLLabelElement;\n }\n\n get #messages() {\n return (this.shadowRoot\n ?.querySelector<HTMLSlotElement>('slot[name=\"messages\"]')\n ?.assignedElements({ flatten: true }) ?? []) as ControlMessage[];\n }\n\n #input: HTMLInputElement;\n\n /** @private */\n get input(): HTMLInputElement {\n if (!isServer && !this.#input) {\n const slotted =\n this.querySelector('slot')\n ?.assignedElements()\n ?.find(i => i.matches(inputQuery)) ??\n Array.from(this.shadowRoot!.querySelector('slot')?.assignedElements({ flatten: true }) ?? []).find(i =>\n i.matches(inputQuery)\n );\n this.#input = (slotted ? slotted : this.querySelector(inputQuery)) as HTMLInputElement;\n }\n\n return this.#input;\n }\n\n /** @private */\n protected get prefixContent(): typeof nothing | TemplateResult {\n return nothing;\n }\n\n /** @private */\n protected get suffixContent(): typeof nothing | TemplateResult {\n return nothing;\n }\n\n @hostAttr({ attribute: 'nve-control' }) protected nveControl = '';\n\n /** @private */\n declare _internals: ElementInternals;\n\n #observers: (MutationObserver | ResizeObserver)[] = [];\n\n protected _associateDatalist = true;\n\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-control',\n version: '0.0.0'\n };\n\n render() {\n return this.nveControl !== 'inline'\n ? html`\n <div internal-host part=\"_internal-host\">\n <slot name=\"label\" part=\"_label\"></slot>\n <div input part=\"_input\">\n ${this.prefixContent}\n <slot></slot>\n ${this.suffixContent}\n </div>\n <slot name=\"messages\" part=\"_messages\"></slot>\n </div>\n `\n : html`\n <div internal-host part=\"_internal-host\">\n <div input part=\"_input\"><slot interaction-state></slot></div>\n <slot name=\"label\" part=\"_label\"></slot>\n <slot name=\"messages\" part=\"_messages\"></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n appendRootNodeStyle(this, globalStyles);\n\n this.shadowRoot!.addEventListener('slotchange', () => {\n this.#updateStyleStates();\n\n if (this.input && this.#observers.length === 0) {\n this.#setupInput();\n this.#setupFitText();\n }\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#observers.forEach(observer => observer.disconnect());\n }\n\n /** Resets control value to initial attribute value and clears any active validation rules. */\n reset() {\n this.input.value = this.input.getAttribute('value') ?? '';\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('reset', { bubbles: true, composed: true }));\n }\n\n #setupInput() {\n setupControlValidationStates(this, this.#messages);\n\n this.#observers.push(\n ...setupControlStates(this),\n ...setupControlStatusStates(this, this.#messages),\n setupControlLayoutStates(this),\n getAttributeListChanges(this, ['hidden', 'status'], () => this.#updateStyleStates())\n );\n\n this.#polyfillShowPicker();\n this.#updateAssociations();\n this.shadowRoot!.addEventListener('slotchange', () => {\n this.#updateStyleStates();\n this.#updateAssociations();\n });\n }\n\n #setupFitText() {\n if (this.fitText) {\n this.#getCharacterWidth();\n this.input.addEventListener('input', () => this.#getCharacterWidth());\n this.input.addEventListener('change', () => this.#getCharacterWidth());\n }\n }\n\n #getCharacterWidth() {\n if (this.input.tagName === 'INPUT') {\n const offset = this.input.type !== 'text' ? 4 : 0;\n this.style.setProperty('--control-width', `${this.input.value.length + offset}ch`);\n this.input.style.setProperty('max-width', `${this.input.value.length + 2}ch`, 'important');\n } else if (this.input.tagName === 'SELECT') {\n this.style.setProperty(\n '--control-width',\n `${(this.input as unknown as HTMLSelectElement).options[(this.input as unknown as HTMLSelectElement).selectedIndex]!.textContent!.length + 4}ch`\n );\n }\n }\n\n #polyfillShowPicker() {\n if (!this.input.showPicker) {\n this.input.showPicker = () => this.input.focus();\n }\n }\n\n #updateStyleStates() {\n if (this.input) {\n this.toggleAttribute('multiple', this.input?.multiple);\n this.input?.hasAttribute('size') ? this.setAttribute('size', '') : this.removeAttribute('size');\n }\n }\n\n #updateAssociations() {\n this.#assignLabel();\n associateLabel(this.#label, this.input);\n associateAriaDescribedBy(Array.from(this.#messages), this.input);\n\n if (this._associateDatalist) {\n associateDataList(this.querySelector<HTMLDataListElement>('datalist')!, this.input);\n }\n }\n\n #assignLabel() {\n const label =\n this.querySelector('label') ||\n (this.shadowRoot!.querySelector('slot')!\n .assignedNodes({ flatten: true })\n .find((i: Node) => (i as HTMLElement).tagName === 'LABEL') as HTMLLabelElement);\n if (label) {\n label.slot = 'label';\n }\n }\n\n protected showPicker() {\n try {\n this.input.showPicker();\n } catch {\n //\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"control2.js","names":["#i18nController","#label","#messages","#input","#onRootSlotchange","#onInputSlotchange","#onFitTextUpdate","#observers","#updateStyleStates","#setupInput","#setupFitText","#polyfillShowPicker","#updateAssociations","#getCharacterWidth","#assignLabel"],"sources":["../../../src/forms/control/control.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TemplateResult } from 'lit';\nimport { LitElement, html, nothing, isServer } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport {\n attachInternals,\n useStyles,\n associateLabel,\n associateAriaDescribedBy,\n associateDataList,\n appendRootNodeStyle,\n getAttributeListChanges,\n I18nController,\n hostAttr,\n typeSSR\n} from '@nvidia-elements/core/internal';\nimport type { ControlMessage } from '../control-message/control-message.js';\nimport {\n setupControlValidationStates,\n setupControlStates,\n setupControlStatusStates,\n inputQuery\n} from '../utils/states.js';\nimport { setupControlLayoutStates } from '../utils/layout.js';\nimport globalStyles from './control.global.css?inline';\nimport styles from './control.css?inline';\n\n/**\n * @element nve-control\n * @description Wraps a form input with its associated label and validation messages, managing layout and accessibility associations.\n * @since 0.3.0\n * @entrypoint \\@nvidia-elements/core/forms\n * @slot - Control input element\n * @slot label - Label element\n * @cssprop --cursor\n * @cssprop --accent-color\n * @cssprop --color\n * @cssprop --label-color\n * @cssprop --label-width\n * @cssprop --label-font-weight\n * @cssprop --label-font-size\n * @cssprop --control-width\n * @cssprop --control-height\n\n * @aria https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals\n * @package true\n */\n@typeSSR()\nexport class Control extends LitElement {\n /** Set current visual state for control. This overrides any validation states active. */\n @property({ type: String }) status: 'warning' | 'error' | 'success' | 'disabled';\n\n /** Set current control + label + control message layout. Layouts will collapse based on available container space. */\n @property({ type: String, reflect: true }) layout:\n | 'vertical'\n | 'vertical-inline'\n | 'horizontal'\n | 'horizontal-inline';\n\n /** Sets the input to match the width of the active text content of the control value. Only applicable to vertical input box type controls (input, select) */\n @property({ type: Boolean, reflect: true, attribute: 'fit-text' }) fitText = false;\n\n /** Sets the input to match native default content block */\n @property({ type: Boolean, reflect: true, attribute: 'fit-content' }) fitContent = false;\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /** Enables internal string values to update for internationalization. */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n /** Set the visual prominence of the control */\n @property({ type: String, reflect: true }) prominence: 'muted';\n\n get #label() {\n return this.shadowRoot\n ?.querySelector<HTMLSlotElement>('slot[name=\"label\"]')\n ?.assignedElements({ flatten: true })?.[0] as HTMLLabelElement;\n }\n\n get #messages() {\n return (this.shadowRoot\n ?.querySelector<HTMLSlotElement>('slot[name=\"messages\"]')\n ?.assignedElements({ flatten: true }) ?? []) as ControlMessage[];\n }\n\n #input: HTMLInputElement;\n\n /** @private */\n get input(): HTMLInputElement {\n if (!isServer && !this.#input) {\n const slotted =\n this.querySelector('slot')\n ?.assignedElements()\n ?.find(i => i.matches(inputQuery)) ??\n Array.from(this.shadowRoot!.querySelector('slot')?.assignedElements({ flatten: true }) ?? []).find(i =>\n i.matches(inputQuery)\n );\n this.#input = (slotted ? slotted : this.querySelector(inputQuery)) as HTMLInputElement;\n }\n\n return this.#input;\n }\n\n /** @private */\n protected get prefixContent(): typeof nothing | TemplateResult {\n return nothing;\n }\n\n /** @private */\n protected get suffixContent(): typeof nothing | TemplateResult {\n return nothing;\n }\n\n @hostAttr({ attribute: 'nve-control' }) protected nveControl = '';\n\n /** @private */\n declare _internals: ElementInternals;\n\n #observers: (MutationObserver | ResizeObserver)[] = [];\n\n protected _associateDatalist = true;\n\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-control',\n version: '0.0.0'\n };\n\n render() {\n return this.nveControl !== 'inline'\n ? html`\n <div internal-host part=\"_internal-host\">\n <slot name=\"label\" part=\"_label\"></slot>\n <div input part=\"_input\">\n ${this.prefixContent}\n <slot></slot>\n ${this.suffixContent}\n </div>\n <slot name=\"messages\" part=\"_messages\"></slot>\n </div>\n `\n : html`\n <div internal-host part=\"_internal-host\">\n <div input part=\"_input\"><slot interaction-state></slot></div>\n <slot name=\"label\" part=\"_label\"></slot>\n <slot name=\"messages\" part=\"_messages\"></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n appendRootNodeStyle(this, globalStyles);\n this.shadowRoot!.addEventListener('slotchange', this.#onRootSlotchange);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.shadowRoot!.removeEventListener('slotchange', this.#onRootSlotchange);\n this.shadowRoot!.removeEventListener('slotchange', this.#onInputSlotchange);\n if (this.fitText && this.input) {\n this.input.removeEventListener('input', this.#onFitTextUpdate);\n this.input.removeEventListener('change', this.#onFitTextUpdate);\n }\n this.#observers.forEach(observer => observer.disconnect());\n this.#observers.length = 0;\n }\n\n #onRootSlotchange = () => {\n this.#updateStyleStates();\n\n if (this.input && this.#observers.length === 0) {\n this.#setupInput();\n this.#setupFitText();\n }\n };\n\n /** Resets control value to initial attribute value and clears any active validation rules. */\n reset() {\n this.input.value = this.input.getAttribute('value') ?? '';\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('reset', { bubbles: true, composed: true }));\n }\n\n #setupInput() {\n setupControlValidationStates(this, this.#messages);\n\n this.#observers.push(\n ...setupControlStates(this),\n ...setupControlStatusStates(this, this.#messages),\n setupControlLayoutStates(this),\n getAttributeListChanges(this, ['hidden', 'status'], () => this.#updateStyleStates())\n );\n\n this.#polyfillShowPicker();\n this.#updateAssociations();\n this.shadowRoot!.addEventListener('slotchange', this.#onInputSlotchange);\n }\n\n #onInputSlotchange = () => {\n this.#updateStyleStates();\n this.#updateAssociations();\n };\n\n #setupFitText() {\n if (this.fitText) {\n this.#getCharacterWidth();\n this.input.addEventListener('input', this.#onFitTextUpdate);\n this.input.addEventListener('change', this.#onFitTextUpdate);\n }\n }\n\n #onFitTextUpdate = () => {\n this.#getCharacterWidth();\n };\n\n #getCharacterWidth() {\n if (this.input.tagName === 'INPUT') {\n const offset = this.input.type !== 'text' ? 4 : 0;\n this.style.setProperty('--control-width', `${this.input.value.length + offset}ch`);\n this.input.style.setProperty('max-width', `${this.input.value.length + 2}ch`, 'important');\n } else if (this.input.tagName === 'SELECT') {\n this.style.setProperty(\n '--control-width',\n `${(this.input as unknown as HTMLSelectElement).options[(this.input as unknown as HTMLSelectElement).selectedIndex]!.textContent!.length + 4}ch`\n );\n }\n }\n\n #polyfillShowPicker() {\n if (!this.input.showPicker) {\n this.input.showPicker = () => this.input.focus();\n }\n }\n\n #updateStyleStates() {\n if (this.input) {\n this.toggleAttribute('multiple', this.input?.multiple);\n this.input?.hasAttribute('size') ? this.setAttribute('size', '') : this.removeAttribute('size');\n }\n }\n\n #updateAssociations() {\n this.#assignLabel();\n associateLabel(this.#label, this.input);\n associateAriaDescribedBy(Array.from(this.#messages), this.input);\n\n if (this._associateDatalist) {\n associateDataList(this.querySelector<HTMLDataListElement>('datalist')!, this.input);\n }\n }\n\n #assignLabel() {\n const label =\n this.querySelector('label') ||\n (this.shadowRoot!.querySelector('slot')!\n .assignedNodes({ flatten: true })\n .find((i: Node) => (i as HTMLElement).tagName === 'LABEL') as HTMLLabelElement);\n if (label) {\n label.slot = 'label';\n }\n }\n\n protected showPicker() {\n try {\n this.input.showPicker();\n } catch {\n //\n }\n }\n}\n"],"mappings":"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"}
@@ -25,7 +25,7 @@ var h = class extends f {
25
25
  static {
26
26
  this.metadata = {
27
27
  tag: "nve-control-group",
28
- version: "0.0.5"
28
+ version: "0.0.7"
29
29
  };
30
30
  }
31
31
  render() {