@carbon/web-components 2.48.0 → 2.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/custom-elements.json +38 -13
  2. package/es/components/ai-label/ai-label.scss.js +1 -1
  3. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  4. package/es/components/button/button-set.js +1 -1
  5. package/es/components/button/button-set.js.map +1 -1
  6. package/es/components/button/button.scss.js +1 -1
  7. package/es/components/checkbox/checkbox.js +1 -1
  8. package/es/components/checkbox/checkbox.js.map +1 -1
  9. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  10. package/es/components/combo-box/combo-box-item.d.ts +3 -4
  11. package/es/components/combo-box/combo-box-item.js +0 -14
  12. package/es/components/combo-box/combo-box-item.js.map +1 -1
  13. package/es/components/combo-box/combo-box.d.ts +7 -0
  14. package/es/components/combo-box/combo-box.js +30 -8
  15. package/es/components/combo-box/combo-box.js.map +1 -1
  16. package/es/components/combo-box/combo-box.scss.js +1 -1
  17. package/es/components/combo-button/combo-button.scss.js +1 -1
  18. package/es/components/contained-list/contained-list.scss.js +1 -1
  19. package/es/components/content-switcher/content-switcher-item.d.ts +1 -1
  20. package/es/components/content-switcher/content-switcher-item.js +2 -2
  21. package/es/components/content-switcher/content-switcher-item.js.map +1 -1
  22. package/es/components/content-switcher/content-switcher.scss.js +1 -1
  23. package/es/components/copy-button/copy-button.scss.js +1 -1
  24. package/es/components/data-table/data-table.scss.js +1 -1
  25. package/es/components/data-table/table-skeleton.d.ts +1 -5
  26. package/es/components/data-table/table-skeleton.js +2 -10
  27. package/es/components/data-table/table-skeleton.js.map +1 -1
  28. package/es/components/dropdown/dropdown-item.d.ts +15 -0
  29. package/es/components/dropdown/dropdown-item.js +52 -0
  30. package/es/components/dropdown/dropdown-item.js.map +1 -1
  31. package/es/components/dropdown/dropdown.js +0 -1
  32. package/es/components/dropdown/dropdown.js.map +1 -1
  33. package/es/components/dropdown/dropdown.scss.js +1 -1
  34. package/es/components/file-uploader/file-uploader.scss.js +1 -1
  35. package/es/components/menu-button/menu-button.scss.js +1 -1
  36. package/es/components/modal/modal.scss.js +1 -1
  37. package/es/components/multi-select/multi-select.js +0 -3
  38. package/es/components/multi-select/multi-select.js.map +1 -1
  39. package/es/components/notification/actionable-notification.scss.js +1 -1
  40. package/es/components/notification/inline-notification.scss.js +1 -1
  41. package/es/components/notification/toast-notification.scss.js +1 -1
  42. package/es/components/overflow-menu/overflow-menu-item.d.ts +5 -1
  43. package/es/components/overflow-menu/overflow-menu-item.js +24 -1
  44. package/es/components/overflow-menu/overflow-menu-item.js.map +1 -1
  45. package/es/components/overflow-menu/overflow-menu.d.ts +1 -1
  46. package/es/components/overflow-menu/overflow-menu.js +3 -3
  47. package/es/components/overflow-menu/overflow-menu.js.map +1 -1
  48. package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
  49. package/es/components/pagination/pagination.scss.js +1 -1
  50. package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
  51. package/es/components/popover/popover.d.ts +12 -2
  52. package/es/components/popover/popover.js +56 -37
  53. package/es/components/popover/popover.js.map +1 -1
  54. package/es/components/popover/popover.scss.js +1 -1
  55. package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
  56. package/es/components/progress-indicator/progress-step.d.ts +1 -1
  57. package/es/components/progress-indicator/progress-step.js +2 -2
  58. package/es/components/progress-indicator/progress-step.js.map +1 -1
  59. package/es/components/radio-button/radio-button.js +1 -1
  60. package/es/components/radio-button/radio-button.js.map +1 -1
  61. package/es/components/select/select.d.ts +1 -1
  62. package/es/components/select/select.js +3 -3
  63. package/es/components/select/select.js.map +1 -1
  64. package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
  65. package/es/components/slug/slug.scss.js +1 -1
  66. package/es/components/tabs/tab.d.ts +1 -1
  67. package/es/components/tabs/tab.js +2 -2
  68. package/es/components/tabs/tab.js.map +1 -1
  69. package/es/components/tabs/tabs.scss.js +1 -1
  70. package/es/components/tag/tag.d.ts +1 -1
  71. package/es/components/tag/tag.js +2 -2
  72. package/es/components/tag/tag.js.map +1 -1
  73. package/es/components/tag/tag.scss.js +1 -1
  74. package/es/components/text-input/text-input.d.ts +2 -0
  75. package/es/components/text-input/text-input.js +26 -14
  76. package/es/components/text-input/text-input.js.map +1 -1
  77. package/es/components/tile/expandable-tile.d.ts +1 -1
  78. package/es/components/tile/expandable-tile.js +2 -2
  79. package/es/components/tile/expandable-tile.js.map +1 -1
  80. package/es/components/time-picker/time-picker-select.d.ts +1 -1
  81. package/es/components/time-picker/time-picker-select.js +2 -2
  82. package/es/components/time-picker/time-picker-select.js.map +1 -1
  83. package/es/components/toggle-tip/toggletip.d.ts +0 -1
  84. package/es/components/toggle-tip/toggletip.js +2 -13
  85. package/es/components/toggle-tip/toggletip.js.map +1 -1
  86. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  87. package/es/components/tooltip/tooltip.scss.js +1 -1
  88. package/es/components/ui-shell/header-menu.d.ts +1 -1
  89. package/es/components/ui-shell/header-menu.js +2 -2
  90. package/es/components/ui-shell/header-menu.js.map +1 -1
  91. package/es/components/ui-shell/header.scss.js +1 -1
  92. package/es/components/ui-shell/side-nav-menu.d.ts +1 -1
  93. package/es/components/ui-shell/side-nav-menu.js +2 -2
  94. package/es/components/ui-shell/side-nav-menu.js.map +1 -1
  95. package/es/globals/controllers/floating-controller.js +6 -2
  96. package/es/globals/controllers/floating-controller.js.map +1 -1
  97. package/es/globals/internal/deep-shadow-contains.d.ts +15 -0
  98. package/es/globals/internal/deep-shadow-contains.js +36 -0
  99. package/es/globals/internal/deep-shadow-contains.js.map +1 -0
  100. package/es/polyfills/toggle-attribute.d.ts +1 -1
  101. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  102. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  103. package/es-custom/components/button/button-set.js +1 -1
  104. package/es-custom/components/button/button-set.js.map +1 -1
  105. package/es-custom/components/button/button.scss.js +1 -1
  106. package/es-custom/components/checkbox/checkbox.js +1 -1
  107. package/es-custom/components/checkbox/checkbox.js.map +1 -1
  108. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  109. package/es-custom/components/combo-box/combo-box-item.d.ts +3 -4
  110. package/es-custom/components/combo-box/combo-box-item.js +0 -14
  111. package/es-custom/components/combo-box/combo-box-item.js.map +1 -1
  112. package/es-custom/components/combo-box/combo-box.d.ts +7 -0
  113. package/es-custom/components/combo-box/combo-box.js +30 -8
  114. package/es-custom/components/combo-box/combo-box.js.map +1 -1
  115. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  116. package/es-custom/components/combo-button/combo-button.scss.js +1 -1
  117. package/es-custom/components/contained-list/contained-list.scss.js +1 -1
  118. package/es-custom/components/content-switcher/content-switcher-item.d.ts +1 -1
  119. package/es-custom/components/content-switcher/content-switcher-item.js +2 -2
  120. package/es-custom/components/content-switcher/content-switcher-item.js.map +1 -1
  121. package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
  122. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  123. package/es-custom/components/data-table/data-table.scss.js +1 -1
  124. package/es-custom/components/data-table/table-skeleton.d.ts +1 -5
  125. package/es-custom/components/data-table/table-skeleton.js +2 -10
  126. package/es-custom/components/data-table/table-skeleton.js.map +1 -1
  127. package/es-custom/components/dropdown/dropdown-item.d.ts +15 -0
  128. package/es-custom/components/dropdown/dropdown-item.js +52 -0
  129. package/es-custom/components/dropdown/dropdown-item.js.map +1 -1
  130. package/es-custom/components/dropdown/dropdown.js +0 -1
  131. package/es-custom/components/dropdown/dropdown.js.map +1 -1
  132. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  133. package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
  134. package/es-custom/components/menu-button/menu-button.scss.js +1 -1
  135. package/es-custom/components/modal/modal.scss.js +1 -1
  136. package/es-custom/components/multi-select/multi-select.js +0 -3
  137. package/es-custom/components/multi-select/multi-select.js.map +1 -1
  138. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  139. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  140. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  141. package/es-custom/components/overflow-menu/overflow-menu-item.d.ts +5 -1
  142. package/es-custom/components/overflow-menu/overflow-menu-item.js +24 -1
  143. package/es-custom/components/overflow-menu/overflow-menu-item.js.map +1 -1
  144. package/es-custom/components/overflow-menu/overflow-menu.d.ts +1 -1
  145. package/es-custom/components/overflow-menu/overflow-menu.js +3 -3
  146. package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
  147. package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
  148. package/es-custom/components/pagination/pagination.scss.js +1 -1
  149. package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
  150. package/es-custom/components/popover/popover.d.ts +12 -2
  151. package/es-custom/components/popover/popover.js +56 -37
  152. package/es-custom/components/popover/popover.js.map +1 -1
  153. package/es-custom/components/popover/popover.scss.js +1 -1
  154. package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
  155. package/es-custom/components/progress-indicator/progress-step.d.ts +1 -1
  156. package/es-custom/components/progress-indicator/progress-step.js +2 -2
  157. package/es-custom/components/progress-indicator/progress-step.js.map +1 -1
  158. package/es-custom/components/radio-button/radio-button.js +1 -1
  159. package/es-custom/components/radio-button/radio-button.js.map +1 -1
  160. package/es-custom/components/select/select.d.ts +1 -1
  161. package/es-custom/components/select/select.js +3 -3
  162. package/es-custom/components/select/select.js.map +1 -1
  163. package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
  164. package/es-custom/components/slug/slug.scss.js +1 -1
  165. package/es-custom/components/tabs/tab.d.ts +1 -1
  166. package/es-custom/components/tabs/tab.js +2 -2
  167. package/es-custom/components/tabs/tab.js.map +1 -1
  168. package/es-custom/components/tabs/tabs.scss.js +1 -1
  169. package/es-custom/components/tag/tag.d.ts +1 -1
  170. package/es-custom/components/tag/tag.js +2 -2
  171. package/es-custom/components/tag/tag.js.map +1 -1
  172. package/es-custom/components/tag/tag.scss.js +1 -1
  173. package/es-custom/components/text-input/text-input.d.ts +2 -0
  174. package/es-custom/components/text-input/text-input.js +26 -14
  175. package/es-custom/components/text-input/text-input.js.map +1 -1
  176. package/es-custom/components/tile/expandable-tile.d.ts +1 -1
  177. package/es-custom/components/tile/expandable-tile.js +2 -2
  178. package/es-custom/components/tile/expandable-tile.js.map +1 -1
  179. package/es-custom/components/time-picker/time-picker-select.d.ts +1 -1
  180. package/es-custom/components/time-picker/time-picker-select.js +2 -2
  181. package/es-custom/components/time-picker/time-picker-select.js.map +1 -1
  182. package/es-custom/components/toggle-tip/toggletip.d.ts +0 -1
  183. package/es-custom/components/toggle-tip/toggletip.js +2 -13
  184. package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
  185. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  186. package/es-custom/components/tooltip/tooltip.scss.js +1 -1
  187. package/es-custom/components/ui-shell/header-menu.d.ts +1 -1
  188. package/es-custom/components/ui-shell/header-menu.js +2 -2
  189. package/es-custom/components/ui-shell/header-menu.js.map +1 -1
  190. package/es-custom/components/ui-shell/header.scss.js +1 -1
  191. package/es-custom/components/ui-shell/side-nav-menu.d.ts +1 -1
  192. package/es-custom/components/ui-shell/side-nav-menu.js +2 -2
  193. package/es-custom/components/ui-shell/side-nav-menu.js.map +1 -1
  194. package/es-custom/globals/controllers/floating-controller.js +6 -2
  195. package/es-custom/globals/controllers/floating-controller.js.map +1 -1
  196. package/es-custom/globals/internal/deep-shadow-contains.d.ts +15 -0
  197. package/es-custom/globals/internal/deep-shadow-contains.js +36 -0
  198. package/es-custom/globals/internal/deep-shadow-contains.js.map +1 -0
  199. package/es-custom/polyfills/toggle-attribute.d.ts +1 -1
  200. package/lib/components/combo-box/combo-box-item.d.ts +3 -4
  201. package/lib/components/combo-box/combo-box.d.ts +7 -0
  202. package/lib/components/content-switcher/content-switcher-item.d.ts +1 -1
  203. package/lib/components/data-table/table-skeleton.d.ts +1 -5
  204. package/lib/components/dropdown/dropdown-item.d.ts +15 -0
  205. package/lib/components/overflow-menu/overflow-menu-item.d.ts +5 -1
  206. package/lib/components/overflow-menu/overflow-menu.d.ts +1 -1
  207. package/lib/components/popover/popover.d.ts +12 -2
  208. package/lib/components/progress-indicator/progress-step.d.ts +1 -1
  209. package/lib/components/select/select.d.ts +1 -1
  210. package/lib/components/tabs/tab.d.ts +1 -1
  211. package/lib/components/tag/tag.d.ts +1 -1
  212. package/lib/components/text-input/text-input.d.ts +2 -0
  213. package/lib/components/tile/expandable-tile.d.ts +1 -1
  214. package/lib/components/time-picker/time-picker-select.d.ts +1 -1
  215. package/lib/components/toggle-tip/toggletip.d.ts +0 -1
  216. package/lib/components/ui-shell/header-menu.d.ts +1 -1
  217. package/lib/components/ui-shell/side-nav-menu.d.ts +1 -1
  218. package/lib/globals/controllers/floating-controller.js +6 -2
  219. package/lib/globals/controllers/floating-controller.js.map +1 -1
  220. package/lib/globals/internal/deep-shadow-contains.d.ts +15 -0
  221. package/lib/polyfills/toggle-attribute.d.ts +1 -1
  222. package/package.json +6 -6
  223. package/scss/components/dropdown/dropdown.scss +5 -0
  224. package/scss/components/overflow-menu/overflow-menu.scss +4 -0
  225. package/scss/components/popover/popover.scss +160 -4
  226. package/telemetry.yml +2 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2019, 2024
2
+ * Copyright IBM Corp. 2019, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -15,10 +15,6 @@ declare class CDSTableSkeleton extends LitElement {
15
15
  * Optionally specify the displayed headers
16
16
  */
17
17
  private headers;
18
- /**
19
- * Optionally specify whether you want the Skeleton to be rendered as a compact DataTable
20
- */
21
- compact: boolean;
22
18
  /**
23
19
  * Specify the number of columns that you want to render in the skeleton state
24
20
  */
@@ -14,7 +14,7 @@ import { prefix } from '../../globals/settings.js';
14
14
  import styles from './data-table.scss.js';
15
15
 
16
16
  /**
17
- * Copyright IBM Corp. 2019, 2024
17
+ * Copyright IBM Corp. 2019, 2026
18
18
  *
19
19
  * This source code is licensed under the Apache-2.0 license found in the
20
20
  * LICENSE file in the root directory of this source tree.
@@ -31,10 +31,6 @@ let CDSTableSkeleton = class CDSTableSkeleton extends LitElement {
31
31
  * Optionally specify the displayed headers
32
32
  */
33
33
  this.headers = [];
34
- /**
35
- * Optionally specify whether you want the Skeleton to be rendered as a compact DataTable
36
- */
37
- this.compact = false;
38
34
  /**
39
35
  * Specify the number of columns that you want to render in the skeleton state
40
36
  */
@@ -103,11 +99,10 @@ let CDSTableSkeleton = class CDSTableSkeleton extends LitElement {
103
99
  }
104
100
  }
105
101
  render() {
106
- const { compact, columnCount, headers, rowCount, zebra } = this;
102
+ const { columnCount, headers, rowCount, zebra } = this;
107
103
  const classes = classMap({
108
104
  [`${prefix}--skeleton`]: true,
109
105
  [`${prefix}--data-table`]: true,
110
- [`${prefix}--data-table--compact`]: compact,
111
106
  [`${prefix}--data-table--zebra`]: zebra,
112
107
  });
113
108
  return html `
@@ -144,9 +139,6 @@ CDSTableSkeleton.styles = styles;
144
139
  __decorate([
145
140
  property()
146
141
  ], CDSTableSkeleton.prototype, "headers", void 0);
147
- __decorate([
148
- property({ type: Boolean, reflect: true })
149
- ], CDSTableSkeleton.prototype, "compact", void 0);
150
142
  __decorate([
151
143
  property({ type: Number, reflect: true, attribute: 'column-count' })
152
144
  ], CDSTableSkeleton.prototype, "columnCount", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"table-skeleton.js","sources":["../../../src/components/data-table/table-skeleton.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './data-table.scss?lit';\n\n/**\n * Data table skeleton\n *\n * @element cds-custom-table-skeleton\n */\n@customElement(`${prefix}-table-skeleton`)\nclass CDSTableSkeleton extends LitElement {\n /**\n * Optionally specify the displayed headers\n */\n @property()\n private headers: string[] = [];\n\n /**\n * Optionally specify whether you want the Skeleton to be rendered as a compact DataTable\n */\n @property({ type: Boolean, reflect: true })\n compact = false;\n\n /**\n * Specify the number of columns that you want to render in the skeleton state\n */\n @property({ type: Number, reflect: true, attribute: 'column-count' })\n columnCount = 5;\n\n /**\n * Specify the number of rows that you want to render in the skeleton state\n */\n @property({ type: Number, reflect: true, attribute: 'row-count' })\n rowCount = 5;\n\n /**\n * Specify if the table header should be rendered as part of the skeleton.\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-header' })\n showHeader = true;\n\n /**\n * Specify if the table toolbar should be rendered as part of the skeleton.\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-toolbar' })\n showToolbar = true;\n\n /**\n * true to add useZebraStyles striping.\n */\n @property({ type: Boolean, reflect: true })\n zebra = false;\n\n /**\n * @returns The header\n */\n protected _renderHeader() {\n const { showHeader } = this;\n return !showHeader\n ? undefined\n : html`\n <div class=\"${prefix}--skeleton ${prefix}--data-table-container\">\n <div class=\"${prefix}--data-table-header\">\n <div class=\"${prefix}--data-table-header__title\"></div>\n <div class=\"${prefix}--data-table-header__description\"></div>\n </div>\n </div>\n `;\n }\n\n /**\n * @returns The header\n */\n protected _renderToolbar() {\n const { showToolbar } = this;\n return !showToolbar\n ? undefined\n : html`\n <section class=\"${prefix}--table-toolbar\">\n <div class=\"${prefix}--toolbar-content\">\n <span\n class=\"${prefix}--skeleton ${prefix}--btn ${prefix}--btn--sm\"></span>\n </div>\n </section>\n `;\n }\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n super.connectedCallback();\n }\n\n updated() {\n if (this.headers.length) {\n this.columnCount = this.headers.length;\n } else {\n this.headers = Array(this.columnCount).fill('');\n }\n }\n\n render() {\n const { compact, columnCount, headers, rowCount, zebra } = this;\n const classes = classMap({\n [`${prefix}--skeleton`]: true,\n [`${prefix}--data-table`]: true,\n [`${prefix}--data-table--compact`]: compact,\n [`${prefix}--data-table--zebra`]: zebra,\n });\n return html`\n ${this._renderHeader()} ${this._renderToolbar()}\n\n <table class=\"${classes}\">\n <thead>\n <tr>\n ${Array.from(new Array(columnCount)).map(\n (_, index) => html`\n <th>\n <div class=\"${prefix}--table-header-label\">\n ${headers[index]}\n </div>\n </th>\n `\n )}\n </tr>\n </thead>\n <tbody>\n ${Array.from(new Array(rowCount)).map(\n () => html`\n <tr>\n ${Array.from(new Array(columnCount)).map(\n () => html`\n <td>\n <span></span>\n </td>\n `\n )}\n </tr>\n `\n )}\n </tbody>\n </table>\n `;\n }\n\n static styles = styles;\n}\n\nexport default CDSTableSkeleton;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"table-skeleton.js","sources":["../../../src/components/data-table/table-skeleton.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './data-table.scss?lit';\n\n/**\n * Data table skeleton\n *\n * @element cds-custom-table-skeleton\n */\n@customElement(`${prefix}-table-skeleton`)\nclass CDSTableSkeleton extends LitElement {\n /**\n * Optionally specify the displayed headers\n */\n @property()\n private headers: string[] = [];\n\n /**\n * Specify the number of columns that you want to render in the skeleton state\n */\n @property({ type: Number, reflect: true, attribute: 'column-count' })\n columnCount = 5;\n\n /**\n * Specify the number of rows that you want to render in the skeleton state\n */\n @property({ type: Number, reflect: true, attribute: 'row-count' })\n rowCount = 5;\n\n /**\n * Specify if the table header should be rendered as part of the skeleton.\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-header' })\n showHeader = true;\n\n /**\n * Specify if the table toolbar should be rendered as part of the skeleton.\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-toolbar' })\n showToolbar = true;\n\n /**\n * true to add useZebraStyles striping.\n */\n @property({ type: Boolean, reflect: true })\n zebra = false;\n\n /**\n * @returns The header\n */\n protected _renderHeader() {\n const { showHeader } = this;\n return !showHeader\n ? undefined\n : html`\n <div class=\"${prefix}--skeleton ${prefix}--data-table-container\">\n <div class=\"${prefix}--data-table-header\">\n <div class=\"${prefix}--data-table-header__title\"></div>\n <div class=\"${prefix}--data-table-header__description\"></div>\n </div>\n </div>\n `;\n }\n\n /**\n * @returns The header\n */\n protected _renderToolbar() {\n const { showToolbar } = this;\n return !showToolbar\n ? undefined\n : html`\n <section class=\"${prefix}--table-toolbar\">\n <div class=\"${prefix}--toolbar-content\">\n <span\n class=\"${prefix}--skeleton ${prefix}--btn ${prefix}--btn--sm\"></span>\n </div>\n </section>\n `;\n }\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n super.connectedCallback();\n }\n\n updated() {\n if (this.headers.length) {\n this.columnCount = this.headers.length;\n } else {\n this.headers = Array(this.columnCount).fill('');\n }\n }\n\n render() {\n const { columnCount, headers, rowCount, zebra } = this;\n const classes = classMap({\n [`${prefix}--skeleton`]: true,\n [`${prefix}--data-table`]: true,\n [`${prefix}--data-table--zebra`]: zebra,\n });\n return html`\n ${this._renderHeader()} ${this._renderToolbar()}\n\n <table class=\"${classes}\">\n <thead>\n <tr>\n ${Array.from(new Array(columnCount)).map(\n (_, index) => html`\n <th>\n <div class=\"${prefix}--table-header-label\">\n ${headers[index]}\n </div>\n </th>\n `\n )}\n </tr>\n </thead>\n <tbody>\n ${Array.from(new Array(rowCount)).map(\n () => html`\n <tr>\n ${Array.from(new Array(columnCount)).map(\n () => html`\n <td>\n <span></span>\n </td>\n `\n )}\n </tr>\n `\n )}\n </tbody>\n </table>\n `;\n }\n\n static styles = styles;\n}\n\nexport default CDSTableSkeleton;\n"],"names":["customElement"],"mappings":"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"}
@@ -42,7 +42,22 @@ declare class CDSDropdownItem extends LitElement {
42
42
  * true if menu item has ellipsis applied
43
43
  */
44
44
  _hasEllipsisApplied: boolean;
45
+ /**
46
+ * Reference to the next sibling element for hover state management.
47
+ */
48
+ protected _nextSiblingRef: Element | null;
49
+ /**
50
+ * Gets the next dropdown/combo-box item sibling.
51
+ */
52
+ protected _getNextItem(): Element | null;
53
+ /**
54
+ * Syncs the hovered-next-sibling attribute with the next item.
55
+ */
56
+ protected _syncNextSibling(attribute: string, shouldSet: boolean): void;
57
+ protected _handleMouseEnter: () => void;
58
+ protected _handleMouseLeave: () => void;
45
59
  connectedCallback(): void;
60
+ disconnectedCallback(): void;
46
61
  /**
47
62
  * Handles `slotchange` event.
48
63
  *
@@ -60,6 +60,50 @@ let CDSDropdownItem = class CDSDropdownItem extends LitElement {
60
60
  * true if menu item has ellipsis applied
61
61
  */
62
62
  this._hasEllipsisApplied = false;
63
+ /**
64
+ * Reference to the next sibling element for hover state management.
65
+ */
66
+ this._nextSiblingRef = null;
67
+ this._handleMouseEnter = () => {
68
+ if (this.hasAttribute('disabled')) {
69
+ return;
70
+ }
71
+ this._syncNextSibling('hovered-next-sibling', true);
72
+ };
73
+ this._handleMouseLeave = () => {
74
+ this._syncNextSibling('hovered-next-sibling', false);
75
+ };
76
+ }
77
+ /**
78
+ * Gets the next dropdown/combo-box item sibling.
79
+ */
80
+ _getNextItem() {
81
+ let next = this.nextElementSibling;
82
+ while (next) {
83
+ if (next instanceof HTMLElement &&
84
+ (next.tagName.toLowerCase() === `${prefix}-dropdown-item` ||
85
+ next.tagName.toLowerCase() === `${prefix}-combo-box-item`)) {
86
+ return next;
87
+ }
88
+ next = next.nextElementSibling;
89
+ }
90
+ return null;
91
+ }
92
+ /**
93
+ * Syncs the hovered-next-sibling attribute with the next item.
94
+ */
95
+ _syncNextSibling(attribute, shouldSet) {
96
+ const currentSibling = this._nextSiblingRef;
97
+ currentSibling === null || currentSibling === void 0 ? void 0 : currentSibling.removeAttribute(attribute);
98
+ if (shouldSet) {
99
+ const next = this._getNextItem();
100
+ if (next) {
101
+ next.setAttribute(attribute, '');
102
+ this._nextSiblingRef = next;
103
+ return;
104
+ }
105
+ }
106
+ this._nextSiblingRef = null;
63
107
  }
64
108
  connectedCallback() {
65
109
  super.connectedCallback();
@@ -71,6 +115,14 @@ let CDSDropdownItem = class CDSDropdownItem extends LitElement {
71
115
  .id++}`);
72
116
  }
73
117
  this.setAttribute('aria-selected', String(this.selected));
118
+ this.addEventListener('mouseenter', this._handleMouseEnter);
119
+ this.addEventListener('mouseleave', this._handleMouseLeave);
120
+ }
121
+ disconnectedCallback() {
122
+ this.removeEventListener('mouseenter', this._handleMouseEnter);
123
+ this.removeEventListener('mouseleave', this._handleMouseLeave);
124
+ this._syncNextSibling('hovered-next-sibling', false);
125
+ super.disconnectedCallback();
74
126
  }
75
127
  /**
76
128
  * Handles `slotchange` event.
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-item.js","sources":["../../../src/components/dropdown/dropdown-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport Checkmark16 from '@carbon/icons/es/checkmark/16.js';\nimport { DROPDOWN_SIZE } from './dropdown';\nimport styles from './dropdown.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Dropdown item.\n *\n * @element cds-custom-dropdown-item\n * @csspart selected-icon The selected icon.\n */\n@customElement(`${prefix}-dropdown-item`)\nclass CDSDropdownItem extends LitElement {\n /**\n * `true` if this dropdown item should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this dropdown item should be highlighted.\n * If `true`, parent `<dropdown>` selects/deselects this dropdown item upon keyboard interaction.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /**\n * `true` if this dropdown item should be selected.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /**\n * Dropdown size.\n */\n @property({ reflect: true })\n size = DROPDOWN_SIZE.MEDIUM;\n\n /**\n * The `value` attribute that is set to the parent `<cds-custom-dropdown>` when this dropdown item is selected.\n */\n @property()\n value = '';\n\n /**\n * true if menu item has ellipsis applied\n */\n @state()\n _hasEllipsisApplied = false;\n\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'option');\n }\n if (!this.hasAttribute('id')) {\n this.setAttribute(\n 'id',\n `${prefix}-dropdown-item-${(this.constructor as typeof CDSDropdownItem)\n .id++}`\n );\n }\n this.setAttribute('aria-selected', String(this.selected));\n }\n\n /**\n * Handles `slotchange` event.\n *\n * Adds the `title` property to its parent element so the native\n * browser tooltip appears for menu items that result in ellipsis\n */\n protected _handleSlotChange({ target }: Event) {\n const text = (target as HTMLSlotElement).assignedNodes().filter(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (node) => node.nodeType !== Node.TEXT_NODE || node!.textContent!.trim()\n );\n\n const textContainer = this.shadowRoot?.querySelector(\n `.${prefix}--list-box__menu-item__option`\n );\n\n if (!textContainer || this._hasEllipsisApplied === true) return;\n\n const observer = new ResizeObserver(() => {\n this._hasEllipsisApplied =\n textContainer.scrollWidth > textContainer.clientWidth;\n\n if (this._hasEllipsisApplied) {\n textContainer.setAttribute('title', text[0].textContent ?? '');\n }\n });\n\n observer.observe(textContainer);\n }\n\n render() {\n const { selected, _handleSlotChange: handleSlotChange } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\" part=\"menu-item\">\n <slot @slotchange=${handleSlotChange}></slot>\n ${!selected\n ? undefined\n : iconLoader(Checkmark16, {\n part: 'selected-icon',\n class: `${prefix}--list-box__menu-item__selected-icon`,\n })}\n </div>\n `;\n }\n\n /**\n * Store an identifier for use in composing this item's id.\n *\n * Auto-increments anytime a new dropdown-item appears.\n */\n static id = 0;\n\n static styles = styles;\n}\n\nexport default CDSDropdownItem;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown-item.js","sources":["../../../src/components/dropdown/dropdown-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport Checkmark16 from '@carbon/icons/es/checkmark/16.js';\nimport { DROPDOWN_SIZE } from './dropdown';\nimport styles from './dropdown.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Dropdown item.\n *\n * @element cds-custom-dropdown-item\n * @csspart selected-icon The selected icon.\n */\n@customElement(`${prefix}-dropdown-item`)\nclass CDSDropdownItem extends LitElement {\n /**\n * `true` if this dropdown item should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this dropdown item should be highlighted.\n * If `true`, parent `<dropdown>` selects/deselects this dropdown item upon keyboard interaction.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /**\n * `true` if this dropdown item should be selected.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /**\n * Dropdown size.\n */\n @property({ reflect: true })\n size = DROPDOWN_SIZE.MEDIUM;\n\n /**\n * The `value` attribute that is set to the parent `<cds-custom-dropdown>` when this dropdown item is selected.\n */\n @property()\n value = '';\n\n /**\n * true if menu item has ellipsis applied\n */\n @state()\n _hasEllipsisApplied = false;\n\n /**\n * Reference to the next sibling element for hover state management.\n */\n protected _nextSiblingRef: Element | null = null;\n\n /**\n * Gets the next dropdown/combo-box item sibling.\n */\n protected _getNextItem(): Element | null {\n let next = this.nextElementSibling;\n while (next) {\n if (\n next instanceof HTMLElement &&\n (next.tagName.toLowerCase() === `${prefix}-dropdown-item` ||\n next.tagName.toLowerCase() === `${prefix}-combo-box-item`)\n ) {\n return next;\n }\n next = next.nextElementSibling;\n }\n return null;\n }\n\n /**\n * Syncs the hovered-next-sibling attribute with the next item.\n */\n protected _syncNextSibling(attribute: string, shouldSet: boolean) {\n const currentSibling = this._nextSiblingRef;\n currentSibling?.removeAttribute(attribute);\n if (shouldSet) {\n const next = this._getNextItem();\n if (next) {\n next.setAttribute(attribute, '');\n this._nextSiblingRef = next;\n return;\n }\n }\n this._nextSiblingRef = null;\n }\n\n protected _handleMouseEnter = () => {\n if (this.hasAttribute('disabled')) {\n return;\n }\n this._syncNextSibling('hovered-next-sibling', true);\n };\n\n protected _handleMouseLeave = () => {\n this._syncNextSibling('hovered-next-sibling', false);\n };\n\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'option');\n }\n if (!this.hasAttribute('id')) {\n this.setAttribute(\n 'id',\n `${prefix}-dropdown-item-${(this.constructor as typeof CDSDropdownItem)\n .id++}`\n );\n }\n this.setAttribute('aria-selected', String(this.selected));\n this.addEventListener('mouseenter', this._handleMouseEnter);\n this.addEventListener('mouseleave', this._handleMouseLeave);\n }\n\n disconnectedCallback() {\n this.removeEventListener('mouseenter', this._handleMouseEnter);\n this.removeEventListener('mouseleave', this._handleMouseLeave);\n this._syncNextSibling('hovered-next-sibling', false);\n super.disconnectedCallback();\n }\n\n /**\n * Handles `slotchange` event.\n *\n * Adds the `title` property to its parent element so the native\n * browser tooltip appears for menu items that result in ellipsis\n */\n protected _handleSlotChange({ target }: Event) {\n const text = (target as HTMLSlotElement).assignedNodes().filter(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (node) => node.nodeType !== Node.TEXT_NODE || node!.textContent!.trim()\n );\n\n const textContainer = this.shadowRoot?.querySelector(\n `.${prefix}--list-box__menu-item__option`\n );\n\n if (!textContainer || this._hasEllipsisApplied === true) return;\n\n const observer = new ResizeObserver(() => {\n this._hasEllipsisApplied =\n textContainer.scrollWidth > textContainer.clientWidth;\n\n if (this._hasEllipsisApplied) {\n textContainer.setAttribute('title', text[0].textContent ?? '');\n }\n });\n\n observer.observe(textContainer);\n }\n\n render() {\n const { selected, _handleSlotChange: handleSlotChange } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\" part=\"menu-item\">\n <slot @slotchange=${handleSlotChange}></slot>\n ${!selected\n ? undefined\n : iconLoader(Checkmark16, {\n part: 'selected-icon',\n class: `${prefix}--list-box__menu-item__selected-icon`,\n })}\n </div>\n `;\n }\n\n /**\n * Store an identifier for use in composing this item's id.\n *\n * Auto-increments anytime a new dropdown-item appears.\n */\n static id = 0;\n\n static styles = styles;\n}\n\nexport default CDSDropdownItem;\n"],"names":["customElement"],"mappings":"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"}
@@ -489,7 +489,6 @@ let CDSDropdown = class CDSDropdown extends ValidityMixin(HostListenerMixin(Form
489
489
  this._clearHighlight();
490
490
  return;
491
491
  }
492
- this._setHighlightedItem(item);
493
492
  }
494
493
  _handleMouseleaveInner(event) {
495
494
  var _a, _b, _c;