@carbon/web-components 2.58.1 → 2.59.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 (568) hide show
  1. package/custom-elements.json +186 -40
  2. package/es/components/accordion/accordion.scss.js +1 -1
  3. package/es/components/ai-label/ai-label.scss.js +1 -1
  4. package/es/components/ai-label/ai-label.scss.js.map +1 -1
  5. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  6. package/es/components/button/button.d.ts +2 -2
  7. package/es/components/button/button.d.ts.map +1 -1
  8. package/es/components/button/button.js +2 -2
  9. package/es/components/button/button.js.map +1 -1
  10. package/es/components/button/button.scss.js +1 -1
  11. package/es/components/button/button.scss.js.map +1 -1
  12. package/es/components/chat-button/chat-button.scss.js +1 -1
  13. package/es/components/chat-button/chat-button.scss.js.map +1 -1
  14. package/es/components/checkbox/checkbox-group.d.ts +1 -1
  15. package/es/components/checkbox/checkbox.d.ts +1 -1
  16. package/es/components/checkbox/checkbox.scss.js +1 -1
  17. package/es/components/code-snippet/code-snippet.d.ts +1 -1
  18. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  19. package/es/components/combo-box/combo-box.scss.js +1 -1
  20. package/es/components/combo-box/combo-box.scss.js.map +1 -1
  21. package/es/components/combo-button/combo-button.scss.js +1 -1
  22. package/es/components/contained-list/contained-list.scss.js +1 -1
  23. package/es/components/contained-list/contained-list.scss.js.map +1 -1
  24. package/es/components/content-switcher/content-switcher-item.d.ts +1 -1
  25. package/es/components/content-switcher/content-switcher.scss.js +1 -1
  26. package/es/components/copy-button/copy-button.scss.js +1 -1
  27. package/es/components/copy-button/copy-button.scss.js.map +1 -1
  28. package/es/components/data-table/data-table.scss.js +1 -1
  29. package/es/components/data-table/table-header-cell.d.ts +1 -1
  30. package/es/components/data-table/table-toolbar-search.d.ts +1 -1
  31. package/es/components/date-picker/date-picker-input.d.ts +1 -1
  32. package/es/components/date-picker/date-picker.scss.js +1 -1
  33. package/es/components/dialog/dialog.scss.js +1 -1
  34. package/es/components/dropdown/dropdown-item.d.ts +2 -1
  35. package/es/components/dropdown/dropdown-item.d.ts.map +1 -1
  36. package/es/components/dropdown/dropdown-item.js +4 -3
  37. package/es/components/dropdown/dropdown-item.js.map +1 -1
  38. package/es/components/dropdown/dropdown.d.ts +1 -1
  39. package/es/components/dropdown/dropdown.scss.js +1 -1
  40. package/es/components/feature-flags/index.d.ts +3 -0
  41. package/es/components/feature-flags/index.d.ts.map +1 -1
  42. package/es/components/feature-flags/index.js +33 -5
  43. package/es/components/feature-flags/index.js.map +1 -1
  44. package/es/components/file-uploader/file-uploader-button.d.ts +1 -0
  45. package/es/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  46. package/es/components/file-uploader/file-uploader-button.js +10 -11
  47. package/es/components/file-uploader/file-uploader-button.js.map +1 -1
  48. package/es/components/file-uploader/file-uploader-drop-container.d.ts +1 -0
  49. package/es/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  50. package/es/components/file-uploader/file-uploader-drop-container.js +6 -5
  51. package/es/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  52. package/es/components/file-uploader/file-uploader.scss.js +1 -1
  53. package/es/components/file-uploader/file-uploader.scss.js.map +1 -1
  54. package/es/components/floating-menu/floating-menu.d.ts +1 -1
  55. package/es/components/floating-menu/floating-menu.js +1 -1
  56. package/es/components/floating-menu/floating-menu.js.map +1 -1
  57. package/es/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  58. package/es/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -1
  59. package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  60. package/es/components/fluid-dropdown/fluid-dropdown.scss.js.map +1 -1
  61. package/es/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  62. package/es/components/fluid-multi-select/fluid-multi-select.scss.js.map +1 -1
  63. package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  64. package/es/components/fluid-number-input/fluid-number-input.scss.js.map +1 -1
  65. package/es/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  66. package/es/components/fluid-password-input/fluid-password-input.scss.js.map +1 -1
  67. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  68. package/es/components/fluid-search/fluid-search.scss.js.map +1 -1
  69. package/es/components/fluid-select/fluid-select.scss.js +1 -1
  70. package/es/components/fluid-select/fluid-select.scss.js.map +1 -1
  71. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  72. package/es/components/fluid-text-input/fluid-text-input.scss.js.map +1 -1
  73. package/es/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  74. package/es/components/fluid-textarea/fluid-textarea.scss.js.map +1 -1
  75. package/es/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  76. package/es/components/fluid-time-picker/fluid-time-picker.scss.js.map +1 -1
  77. package/es/components/icon-button/icon-button.d.ts +1 -1
  78. package/es/components/icon-button/icon-button.d.ts.map +1 -1
  79. package/es/components/icon-button/icon-button.js.map +1 -1
  80. package/es/components/icon-button/icon-button.scss.js +1 -1
  81. package/es/components/icon-button/icon-button.scss.js.map +1 -1
  82. package/es/components/icon-indicator/icon-indicator.d.ts +20 -1
  83. package/es/components/icon-indicator/icon-indicator.d.ts.map +1 -1
  84. package/es/components/icon-indicator/icon-indicator.js +30 -2
  85. package/es/components/icon-indicator/icon-indicator.js.map +1 -1
  86. package/es/components/icon-indicator/icon-indicator.scss.js +1 -1
  87. package/es/components/icon-indicator/icon-indicator.scss.js.map +1 -1
  88. package/es/components/layout/layout.scss.js +1 -1
  89. package/es/components/layout/layout.scss.js.map +1 -1
  90. package/es/components/link/link.d.ts +1 -1
  91. package/es/components/menu/menu-item-selectable.d.ts +1 -1
  92. package/es/components/menu/menu-item.scss.js +1 -1
  93. package/es/components/menu/menu-item.scss.js.map +1 -1
  94. package/es/components/menu/menu.scss.js +1 -1
  95. package/es/components/menu-button/menu-button.scss.js +1 -1
  96. package/es/components/modal/modal-close-button.d.ts +1 -1
  97. package/es/components/modal/modal.scss.js +1 -1
  98. package/es/components/multi-select/multi-select.scss.js +1 -1
  99. package/es/components/notification/actionable-notification.d.ts.map +1 -1
  100. package/es/components/notification/actionable-notification.js +5 -2
  101. package/es/components/notification/actionable-notification.js.map +1 -1
  102. package/es/components/notification/actionable-notification.scss.js +1 -1
  103. package/es/components/notification/actionable-notification.scss.js.map +1 -1
  104. package/es/components/notification/inline-notification.scss.js +1 -1
  105. package/es/components/notification/inline-notification.scss.js.map +1 -1
  106. package/es/components/notification/toast-notification.scss.js +1 -1
  107. package/es/components/notification/toast-notification.scss.js.map +1 -1
  108. package/es/components/number-input/number-input.d.ts +1 -1
  109. package/es/components/number-input/number-input.scss.js +1 -1
  110. package/es/components/overflow-menu/overflow-menu-body.d.ts +1 -1
  111. package/es/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
  112. package/es/components/overflow-menu/overflow-menu-body.js +2 -2
  113. package/es/components/overflow-menu/overflow-menu-body.js.map +1 -1
  114. package/es/components/overflow-menu/overflow-menu-item.d.ts +1 -1
  115. package/es/components/overflow-menu/overflow-menu.d.ts +8 -1
  116. package/es/components/overflow-menu/overflow-menu.d.ts.map +1 -1
  117. package/es/components/overflow-menu/overflow-menu.js +47 -3
  118. package/es/components/overflow-menu/overflow-menu.js.map +1 -1
  119. package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
  120. package/es/components/overflow-menu/overflow-menu.scss.js.map +1 -1
  121. package/es/components/pagination/pagination.d.ts +1 -1
  122. package/es/components/pagination/pagination.scss.js +1 -1
  123. package/es/components/pagination/pagination.scss.js.map +1 -1
  124. package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
  125. package/es/components/pagination-nav/pagination-nav.scss.js.map +1 -1
  126. package/es/components/password-input/password-input.d.ts +1 -1
  127. package/es/components/password-input/password-input.scss.js +1 -1
  128. package/es/components/password-input/password-input.scss.js.map +1 -1
  129. package/es/components/popover/popover.scss.js +1 -1
  130. package/es/components/popover/popover.scss.js.map +1 -1
  131. package/es/components/progress-bar/progress-bar.scss.js +1 -1
  132. package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
  133. package/es/components/progress-indicator/progress-step.d.ts +1 -1
  134. package/es/components/radio-button/radio-button.d.ts +1 -1
  135. package/es/components/radio-button/radio-button.scss.js +1 -1
  136. package/es/components/search/search.d.ts +9 -1
  137. package/es/components/search/search.d.ts.map +1 -1
  138. package/es/components/search/search.js +7 -6
  139. package/es/components/search/search.js.map +1 -1
  140. package/es/components/search/search.scss.js +1 -1
  141. package/es/components/select/select.d.ts +1 -1
  142. package/es/components/select/select.scss.js +1 -1
  143. package/es/components/select/select.scss.js.map +1 -1
  144. package/es/components/shape-indicator/shape-indicator.d.ts +20 -1
  145. package/es/components/shape-indicator/shape-indicator.d.ts.map +1 -1
  146. package/es/components/shape-indicator/shape-indicator.js +32 -4
  147. package/es/components/shape-indicator/shape-indicator.js.map +1 -1
  148. package/es/components/shape-indicator/shape-indicator.scss.js +1 -1
  149. package/es/components/shape-indicator/shape-indicator.scss.js.map +1 -1
  150. package/es/components/skip-to-content/skip-to-content.d.ts +1 -1
  151. package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
  152. package/es/components/slider/slider-input.d.ts +2 -1
  153. package/es/components/slider/slider-input.d.ts.map +1 -1
  154. package/es/components/slider/slider-input.js +2 -1
  155. package/es/components/slider/slider-input.js.map +1 -1
  156. package/es/components/slider/slider.d.ts +2 -1
  157. package/es/components/slider/slider.d.ts.map +1 -1
  158. package/es/components/slider/slider.js +5 -5
  159. package/es/components/slider/slider.js.map +1 -1
  160. package/es/components/slider/slider.scss.js +1 -1
  161. package/es/components/slider/slider.scss.js.map +1 -1
  162. package/es/components/slug/slug.scss.js +1 -1
  163. package/es/components/slug/slug.scss.js.map +1 -1
  164. package/es/components/structured-list/structured-list.d.ts +1 -1
  165. package/es/components/structured-list/structured-list.scss.js +1 -1
  166. package/es/components/tabs/tabs-vertical.d.ts +4 -0
  167. package/es/components/tabs/tabs-vertical.d.ts.map +1 -1
  168. package/es/components/tabs/tabs-vertical.js +3 -2
  169. package/es/components/tabs/tabs-vertical.js.map +1 -1
  170. package/es/components/tabs/tabs.scss.js +1 -1
  171. package/es/components/tabs/tabs.scss.js.map +1 -1
  172. package/es/components/tag/operational-tag.d.ts +1 -1
  173. package/es/components/tag/operational-tag.d.ts.map +1 -1
  174. package/es/components/tag/operational-tag.js +3 -3
  175. package/es/components/tag/operational-tag.js.map +1 -1
  176. package/es/components/tag/selectable-tag.d.ts +1 -1
  177. package/es/components/tag/selectable-tag.d.ts.map +1 -1
  178. package/es/components/tag/selectable-tag.js +3 -3
  179. package/es/components/tag/selectable-tag.js.map +1 -1
  180. package/es/components/tag/tag.d.ts +1 -0
  181. package/es/components/tag/tag.d.ts.map +1 -1
  182. package/es/components/tag/tag.js +3 -3
  183. package/es/components/tag/tag.js.map +1 -1
  184. package/es/components/tag/tag.scss.js +1 -1
  185. package/es/components/text-input/text-input.d.ts +1 -1
  186. package/es/components/text-input/text-input.scss.js +1 -1
  187. package/es/components/text-input/text-input.scss.js.map +1 -1
  188. package/es/components/textarea/textarea.d.ts +1 -1
  189. package/es/components/textarea/textarea.scss.js +1 -1
  190. package/es/components/textarea/textarea.scss.js.map +1 -1
  191. package/es/components/tile/selectable-tile.d.ts +1 -1
  192. package/es/components/tile/tile.scss.js +1 -1
  193. package/es/components/tile/tile.scss.js.map +1 -1
  194. package/es/components/time-picker/time-picker-select.d.ts +1 -1
  195. package/es/components/time-picker/time-picker.d.ts +1 -1
  196. package/es/components/time-picker/time-picker.scss.js +1 -1
  197. package/es/components/time-picker/time-picker.scss.js.map +1 -1
  198. package/es/components/toggle-tip/toggletip.d.ts +13 -1
  199. package/es/components/toggle-tip/toggletip.d.ts.map +1 -1
  200. package/es/components/toggle-tip/toggletip.js +10 -14
  201. package/es/components/toggle-tip/toggletip.js.map +1 -1
  202. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  203. package/es/components/tooltip/definition-tooltip.d.ts +4 -2
  204. package/es/components/tooltip/definition-tooltip.d.ts.map +1 -1
  205. package/es/components/tooltip/definition-tooltip.js +23 -12
  206. package/es/components/tooltip/definition-tooltip.js.map +1 -1
  207. package/es/components/tooltip/tooltip.scss.js +1 -1
  208. package/es/components/tooltip/tooltip.scss.js.map +1 -1
  209. package/es/components/ui-shell/header-global-action.d.ts +2 -2
  210. package/es/components/ui-shell/header-global-action.d.ts.map +1 -1
  211. package/es/components/ui-shell/header-global-action.js +3 -3
  212. package/es/components/ui-shell/header-global-action.js.map +1 -1
  213. package/es/components/ui-shell/header-menu-button.d.ts +1 -1
  214. package/es/components/ui-shell/header-menu.d.ts +1 -1
  215. package/es/components/ui-shell/header-name.d.ts +1 -1
  216. package/es/components/ui-shell/header-nav-item.d.ts +1 -1
  217. package/es/components/ui-shell/header-panel.d.ts +1 -1
  218. package/es/components/ui-shell/header.scss.js +1 -1
  219. package/es/components/ui-shell/side-nav-link.d.ts +1 -1
  220. package/es/components/ui-shell/side-nav-menu-item.d.ts +1 -1
  221. package/es/components/ui-shell/side-nav-menu.d.ts +1 -1
  222. package/es/components/ui-shell/switcher-item.d.ts +1 -1
  223. package/es/components/ui-shell/switcher.d.ts +1 -1
  224. package/es/packages/feature-flags/es/index.js +12 -0
  225. package/es/packages/feature-flags/es/index.js.map +1 -1
  226. package/es-custom/components/accordion/accordion.scss.js +1 -1
  227. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  228. package/es-custom/components/ai-label/ai-label.scss.js.map +1 -1
  229. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  230. package/es-custom/components/button/button.d.ts +2 -2
  231. package/es-custom/components/button/button.d.ts.map +1 -1
  232. package/es-custom/components/button/button.js +2 -2
  233. package/es-custom/components/button/button.js.map +1 -1
  234. package/es-custom/components/button/button.scss.js +1 -1
  235. package/es-custom/components/button/button.scss.js.map +1 -1
  236. package/es-custom/components/chat-button/chat-button.scss.js +1 -1
  237. package/es-custom/components/chat-button/chat-button.scss.js.map +1 -1
  238. package/es-custom/components/checkbox/checkbox-group.d.ts +1 -1
  239. package/es-custom/components/checkbox/checkbox.d.ts +1 -1
  240. package/es-custom/components/checkbox/checkbox.scss.js +1 -1
  241. package/es-custom/components/code-snippet/code-snippet.d.ts +1 -1
  242. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  243. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  244. package/es-custom/components/combo-box/combo-box.scss.js.map +1 -1
  245. package/es-custom/components/combo-button/combo-button.scss.js +1 -1
  246. package/es-custom/components/contained-list/contained-list.scss.js +1 -1
  247. package/es-custom/components/contained-list/contained-list.scss.js.map +1 -1
  248. package/es-custom/components/content-switcher/content-switcher-item.d.ts +1 -1
  249. package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
  250. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  251. package/es-custom/components/copy-button/copy-button.scss.js.map +1 -1
  252. package/es-custom/components/data-table/data-table.scss.js +1 -1
  253. package/es-custom/components/data-table/table-header-cell.d.ts +1 -1
  254. package/es-custom/components/data-table/table-toolbar-search.d.ts +1 -1
  255. package/es-custom/components/date-picker/date-picker-input.d.ts +1 -1
  256. package/es-custom/components/date-picker/date-picker.scss.js +1 -1
  257. package/es-custom/components/dialog/dialog.scss.js +1 -1
  258. package/es-custom/components/dropdown/dropdown-item.d.ts +2 -1
  259. package/es-custom/components/dropdown/dropdown-item.d.ts.map +1 -1
  260. package/es-custom/components/dropdown/dropdown-item.js +4 -3
  261. package/es-custom/components/dropdown/dropdown-item.js.map +1 -1
  262. package/es-custom/components/dropdown/dropdown.d.ts +1 -1
  263. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  264. package/es-custom/components/feature-flags/index.d.ts +3 -0
  265. package/es-custom/components/feature-flags/index.d.ts.map +1 -1
  266. package/es-custom/components/feature-flags/index.js +33 -5
  267. package/es-custom/components/feature-flags/index.js.map +1 -1
  268. package/es-custom/components/file-uploader/file-uploader-button.d.ts +1 -0
  269. package/es-custom/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  270. package/es-custom/components/file-uploader/file-uploader-button.js +10 -11
  271. package/es-custom/components/file-uploader/file-uploader-button.js.map +1 -1
  272. package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts +1 -0
  273. package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  274. package/es-custom/components/file-uploader/file-uploader-drop-container.js +6 -5
  275. package/es-custom/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  276. package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
  277. package/es-custom/components/file-uploader/file-uploader.scss.js.map +1 -1
  278. package/es-custom/components/floating-menu/floating-menu.d.ts +1 -1
  279. package/es-custom/components/floating-menu/floating-menu.js +1 -1
  280. package/es-custom/components/floating-menu/floating-menu.js.map +1 -1
  281. package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  282. package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -1
  283. package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  284. package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js.map +1 -1
  285. package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  286. package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js.map +1 -1
  287. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  288. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js.map +1 -1
  289. package/es-custom/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  290. package/es-custom/components/fluid-password-input/fluid-password-input.scss.js.map +1 -1
  291. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  292. package/es-custom/components/fluid-search/fluid-search.scss.js.map +1 -1
  293. package/es-custom/components/fluid-select/fluid-select.scss.js +1 -1
  294. package/es-custom/components/fluid-select/fluid-select.scss.js.map +1 -1
  295. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  296. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js.map +1 -1
  297. package/es-custom/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  298. package/es-custom/components/fluid-textarea/fluid-textarea.scss.js.map +1 -1
  299. package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  300. package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js.map +1 -1
  301. package/es-custom/components/icon-button/icon-button.d.ts +1 -1
  302. package/es-custom/components/icon-button/icon-button.d.ts.map +1 -1
  303. package/es-custom/components/icon-button/icon-button.js.map +1 -1
  304. package/es-custom/components/icon-button/icon-button.scss.js +1 -1
  305. package/es-custom/components/icon-button/icon-button.scss.js.map +1 -1
  306. package/es-custom/components/icon-indicator/icon-indicator.d.ts +20 -1
  307. package/es-custom/components/icon-indicator/icon-indicator.d.ts.map +1 -1
  308. package/es-custom/components/icon-indicator/icon-indicator.js +30 -2
  309. package/es-custom/components/icon-indicator/icon-indicator.js.map +1 -1
  310. package/es-custom/components/icon-indicator/icon-indicator.scss.js +1 -1
  311. package/es-custom/components/icon-indicator/icon-indicator.scss.js.map +1 -1
  312. package/es-custom/components/layout/layout.scss.js +1 -1
  313. package/es-custom/components/layout/layout.scss.js.map +1 -1
  314. package/es-custom/components/link/link.d.ts +1 -1
  315. package/es-custom/components/menu/menu-item-selectable.d.ts +1 -1
  316. package/es-custom/components/menu/menu-item.scss.js +1 -1
  317. package/es-custom/components/menu/menu-item.scss.js.map +1 -1
  318. package/es-custom/components/menu/menu.scss.js +1 -1
  319. package/es-custom/components/menu-button/menu-button.scss.js +1 -1
  320. package/es-custom/components/modal/modal-close-button.d.ts +1 -1
  321. package/es-custom/components/modal/modal.scss.js +1 -1
  322. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  323. package/es-custom/components/notification/actionable-notification.d.ts.map +1 -1
  324. package/es-custom/components/notification/actionable-notification.js +5 -2
  325. package/es-custom/components/notification/actionable-notification.js.map +1 -1
  326. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  327. package/es-custom/components/notification/actionable-notification.scss.js.map +1 -1
  328. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  329. package/es-custom/components/notification/inline-notification.scss.js.map +1 -1
  330. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  331. package/es-custom/components/notification/toast-notification.scss.js.map +1 -1
  332. package/es-custom/components/number-input/number-input.d.ts +1 -1
  333. package/es-custom/components/number-input/number-input.scss.js +1 -1
  334. package/es-custom/components/overflow-menu/overflow-menu-body.d.ts +1 -1
  335. package/es-custom/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
  336. package/es-custom/components/overflow-menu/overflow-menu-body.js +2 -2
  337. package/es-custom/components/overflow-menu/overflow-menu-body.js.map +1 -1
  338. package/es-custom/components/overflow-menu/overflow-menu-item.d.ts +1 -1
  339. package/es-custom/components/overflow-menu/overflow-menu.d.ts +8 -1
  340. package/es-custom/components/overflow-menu/overflow-menu.d.ts.map +1 -1
  341. package/es-custom/components/overflow-menu/overflow-menu.js +47 -3
  342. package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
  343. package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
  344. package/es-custom/components/overflow-menu/overflow-menu.scss.js.map +1 -1
  345. package/es-custom/components/pagination/pagination.d.ts +1 -1
  346. package/es-custom/components/pagination/pagination.scss.js +1 -1
  347. package/es-custom/components/pagination/pagination.scss.js.map +1 -1
  348. package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
  349. package/es-custom/components/pagination-nav/pagination-nav.scss.js.map +1 -1
  350. package/es-custom/components/password-input/password-input.d.ts +1 -1
  351. package/es-custom/components/password-input/password-input.scss.js +1 -1
  352. package/es-custom/components/password-input/password-input.scss.js.map +1 -1
  353. package/es-custom/components/popover/popover.scss.js +1 -1
  354. package/es-custom/components/popover/popover.scss.js.map +1 -1
  355. package/es-custom/components/progress-bar/progress-bar.scss.js +1 -1
  356. package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
  357. package/es-custom/components/progress-indicator/progress-step.d.ts +1 -1
  358. package/es-custom/components/radio-button/radio-button.d.ts +1 -1
  359. package/es-custom/components/radio-button/radio-button.scss.js +1 -1
  360. package/es-custom/components/search/search.d.ts +9 -1
  361. package/es-custom/components/search/search.d.ts.map +1 -1
  362. package/es-custom/components/search/search.js +7 -6
  363. package/es-custom/components/search/search.js.map +1 -1
  364. package/es-custom/components/search/search.scss.js +1 -1
  365. package/es-custom/components/select/select.d.ts +1 -1
  366. package/es-custom/components/select/select.scss.js +1 -1
  367. package/es-custom/components/select/select.scss.js.map +1 -1
  368. package/es-custom/components/shape-indicator/shape-indicator.d.ts +20 -1
  369. package/es-custom/components/shape-indicator/shape-indicator.d.ts.map +1 -1
  370. package/es-custom/components/shape-indicator/shape-indicator.js +32 -4
  371. package/es-custom/components/shape-indicator/shape-indicator.js.map +1 -1
  372. package/es-custom/components/shape-indicator/shape-indicator.scss.js +1 -1
  373. package/es-custom/components/shape-indicator/shape-indicator.scss.js.map +1 -1
  374. package/es-custom/components/skip-to-content/skip-to-content.d.ts +1 -1
  375. package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
  376. package/es-custom/components/slider/slider-input.d.ts +2 -1
  377. package/es-custom/components/slider/slider-input.d.ts.map +1 -1
  378. package/es-custom/components/slider/slider-input.js +2 -1
  379. package/es-custom/components/slider/slider-input.js.map +1 -1
  380. package/es-custom/components/slider/slider.d.ts +2 -1
  381. package/es-custom/components/slider/slider.d.ts.map +1 -1
  382. package/es-custom/components/slider/slider.js +5 -5
  383. package/es-custom/components/slider/slider.js.map +1 -1
  384. package/es-custom/components/slider/slider.scss.js +1 -1
  385. package/es-custom/components/slider/slider.scss.js.map +1 -1
  386. package/es-custom/components/slug/slug.scss.js +1 -1
  387. package/es-custom/components/slug/slug.scss.js.map +1 -1
  388. package/es-custom/components/structured-list/structured-list.d.ts +1 -1
  389. package/es-custom/components/structured-list/structured-list.scss.js +1 -1
  390. package/es-custom/components/tabs/tabs-vertical.d.ts +4 -0
  391. package/es-custom/components/tabs/tabs-vertical.d.ts.map +1 -1
  392. package/es-custom/components/tabs/tabs-vertical.js +3 -2
  393. package/es-custom/components/tabs/tabs-vertical.js.map +1 -1
  394. package/es-custom/components/tabs/tabs.scss.js +1 -1
  395. package/es-custom/components/tabs/tabs.scss.js.map +1 -1
  396. package/es-custom/components/tag/operational-tag.d.ts +1 -1
  397. package/es-custom/components/tag/operational-tag.d.ts.map +1 -1
  398. package/es-custom/components/tag/operational-tag.js +3 -3
  399. package/es-custom/components/tag/operational-tag.js.map +1 -1
  400. package/es-custom/components/tag/selectable-tag.d.ts +1 -1
  401. package/es-custom/components/tag/selectable-tag.d.ts.map +1 -1
  402. package/es-custom/components/tag/selectable-tag.js +3 -3
  403. package/es-custom/components/tag/selectable-tag.js.map +1 -1
  404. package/es-custom/components/tag/tag.d.ts +1 -0
  405. package/es-custom/components/tag/tag.d.ts.map +1 -1
  406. package/es-custom/components/tag/tag.js +3 -3
  407. package/es-custom/components/tag/tag.js.map +1 -1
  408. package/es-custom/components/tag/tag.scss.js +1 -1
  409. package/es-custom/components/text-input/text-input.d.ts +1 -1
  410. package/es-custom/components/text-input/text-input.scss.js +1 -1
  411. package/es-custom/components/text-input/text-input.scss.js.map +1 -1
  412. package/es-custom/components/textarea/textarea.d.ts +1 -1
  413. package/es-custom/components/textarea/textarea.scss.js +1 -1
  414. package/es-custom/components/textarea/textarea.scss.js.map +1 -1
  415. package/es-custom/components/tile/selectable-tile.d.ts +1 -1
  416. package/es-custom/components/tile/tile.scss.js +1 -1
  417. package/es-custom/components/tile/tile.scss.js.map +1 -1
  418. package/es-custom/components/time-picker/time-picker-select.d.ts +1 -1
  419. package/es-custom/components/time-picker/time-picker.d.ts +1 -1
  420. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  421. package/es-custom/components/time-picker/time-picker.scss.js.map +1 -1
  422. package/es-custom/components/toggle-tip/toggletip.d.ts +13 -1
  423. package/es-custom/components/toggle-tip/toggletip.d.ts.map +1 -1
  424. package/es-custom/components/toggle-tip/toggletip.js +10 -14
  425. package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
  426. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  427. package/es-custom/components/tooltip/definition-tooltip.d.ts +4 -2
  428. package/es-custom/components/tooltip/definition-tooltip.d.ts.map +1 -1
  429. package/es-custom/components/tooltip/definition-tooltip.js +23 -12
  430. package/es-custom/components/tooltip/definition-tooltip.js.map +1 -1
  431. package/es-custom/components/tooltip/tooltip.scss.js +1 -1
  432. package/es-custom/components/tooltip/tooltip.scss.js.map +1 -1
  433. package/es-custom/components/ui-shell/header-global-action.d.ts +2 -2
  434. package/es-custom/components/ui-shell/header-global-action.d.ts.map +1 -1
  435. package/es-custom/components/ui-shell/header-global-action.js +3 -3
  436. package/es-custom/components/ui-shell/header-global-action.js.map +1 -1
  437. package/es-custom/components/ui-shell/header-menu-button.d.ts +1 -1
  438. package/es-custom/components/ui-shell/header-menu.d.ts +1 -1
  439. package/es-custom/components/ui-shell/header-name.d.ts +1 -1
  440. package/es-custom/components/ui-shell/header-nav-item.d.ts +1 -1
  441. package/es-custom/components/ui-shell/header-panel.d.ts +1 -1
  442. package/es-custom/components/ui-shell/header.scss.js +1 -1
  443. package/es-custom/components/ui-shell/side-nav-link.d.ts +1 -1
  444. package/es-custom/components/ui-shell/side-nav-menu-item.d.ts +1 -1
  445. package/es-custom/components/ui-shell/side-nav-menu.d.ts +1 -1
  446. package/es-custom/components/ui-shell/switcher-item.d.ts +1 -1
  447. package/es-custom/components/ui-shell/switcher.d.ts +1 -1
  448. package/es-custom/packages/feature-flags/es/index.js +12 -0
  449. package/es-custom/packages/feature-flags/es/index.js.map +1 -1
  450. package/lib/components/button/button.d.ts +2 -2
  451. package/lib/components/button/button.d.ts.map +1 -1
  452. package/lib/components/checkbox/checkbox-group.d.ts +1 -1
  453. package/lib/components/checkbox/checkbox.d.ts +1 -1
  454. package/lib/components/code-snippet/code-snippet.d.ts +1 -1
  455. package/lib/components/content-switcher/content-switcher-item.d.ts +1 -1
  456. package/lib/components/data-table/table-header-cell.d.ts +1 -1
  457. package/lib/components/data-table/table-toolbar-search.d.ts +1 -1
  458. package/lib/components/date-picker/date-picker-input.d.ts +1 -1
  459. package/lib/components/dropdown/dropdown-item.d.ts +2 -1
  460. package/lib/components/dropdown/dropdown-item.d.ts.map +1 -1
  461. package/lib/components/dropdown/dropdown.d.ts +1 -1
  462. package/lib/components/feature-flags/index.d.ts +3 -0
  463. package/lib/components/feature-flags/index.d.ts.map +1 -1
  464. package/lib/components/file-uploader/file-uploader-button.d.ts +1 -0
  465. package/lib/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  466. package/lib/components/file-uploader/file-uploader-drop-container.d.ts +1 -0
  467. package/lib/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  468. package/lib/components/floating-menu/floating-menu.d.ts +1 -1
  469. package/lib/components/icon-button/icon-button.d.ts +1 -1
  470. package/lib/components/icon-button/icon-button.d.ts.map +1 -1
  471. package/lib/components/icon-indicator/icon-indicator.d.ts +20 -1
  472. package/lib/components/icon-indicator/icon-indicator.d.ts.map +1 -1
  473. package/lib/components/link/link.d.ts +1 -1
  474. package/lib/components/menu/menu-item-selectable.d.ts +1 -1
  475. package/lib/components/modal/modal-close-button.d.ts +1 -1
  476. package/lib/components/notification/actionable-notification.d.ts.map +1 -1
  477. package/lib/components/number-input/number-input.d.ts +1 -1
  478. package/lib/components/overflow-menu/overflow-menu-body.d.ts +1 -1
  479. package/lib/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
  480. package/lib/components/overflow-menu/overflow-menu-item.d.ts +1 -1
  481. package/lib/components/overflow-menu/overflow-menu.d.ts +8 -1
  482. package/lib/components/overflow-menu/overflow-menu.d.ts.map +1 -1
  483. package/lib/components/pagination/pagination.d.ts +1 -1
  484. package/lib/components/password-input/password-input.d.ts +1 -1
  485. package/lib/components/progress-indicator/progress-step.d.ts +1 -1
  486. package/lib/components/radio-button/radio-button.d.ts +1 -1
  487. package/lib/components/search/search.d.ts +9 -1
  488. package/lib/components/search/search.d.ts.map +1 -1
  489. package/lib/components/select/select.d.ts +1 -1
  490. package/lib/components/shape-indicator/shape-indicator.d.ts +20 -1
  491. package/lib/components/shape-indicator/shape-indicator.d.ts.map +1 -1
  492. package/lib/components/skip-to-content/skip-to-content.d.ts +1 -1
  493. package/lib/components/slider/slider-input.d.ts +2 -1
  494. package/lib/components/slider/slider-input.d.ts.map +1 -1
  495. package/lib/components/slider/slider.d.ts +2 -1
  496. package/lib/components/slider/slider.d.ts.map +1 -1
  497. package/lib/components/structured-list/structured-list.d.ts +1 -1
  498. package/lib/components/tabs/tabs-vertical.d.ts +4 -0
  499. package/lib/components/tabs/tabs-vertical.d.ts.map +1 -1
  500. package/lib/components/tag/operational-tag.d.ts +1 -1
  501. package/lib/components/tag/operational-tag.d.ts.map +1 -1
  502. package/lib/components/tag/selectable-tag.d.ts +1 -1
  503. package/lib/components/tag/selectable-tag.d.ts.map +1 -1
  504. package/lib/components/tag/tag.d.ts +1 -0
  505. package/lib/components/tag/tag.d.ts.map +1 -1
  506. package/lib/components/text-input/text-input.d.ts +1 -1
  507. package/lib/components/textarea/textarea.d.ts +1 -1
  508. package/lib/components/tile/selectable-tile.d.ts +1 -1
  509. package/lib/components/time-picker/time-picker-select.d.ts +1 -1
  510. package/lib/components/time-picker/time-picker.d.ts +1 -1
  511. package/lib/components/toggle-tip/toggletip.d.ts +13 -1
  512. package/lib/components/toggle-tip/toggletip.d.ts.map +1 -1
  513. package/lib/components/tooltip/definition-tooltip.d.ts +4 -2
  514. package/lib/components/tooltip/definition-tooltip.d.ts.map +1 -1
  515. package/lib/components/ui-shell/header-global-action.d.ts +2 -2
  516. package/lib/components/ui-shell/header-global-action.d.ts.map +1 -1
  517. package/lib/components/ui-shell/header-menu-button.d.ts +1 -1
  518. package/lib/components/ui-shell/header-menu.d.ts +1 -1
  519. package/lib/components/ui-shell/header-name.d.ts +1 -1
  520. package/lib/components/ui-shell/header-nav-item.d.ts +1 -1
  521. package/lib/components/ui-shell/header-panel.d.ts +1 -1
  522. package/lib/components/ui-shell/side-nav-link.d.ts +1 -1
  523. package/lib/components/ui-shell/side-nav-menu-item.d.ts +1 -1
  524. package/lib/components/ui-shell/side-nav-menu.d.ts +1 -1
  525. package/lib/components/ui-shell/switcher-item.d.ts +1 -1
  526. package/lib/components/ui-shell/switcher.d.ts +1 -1
  527. package/package.json +13 -9
  528. package/scss/components/ai-label/ai-label.scss +1 -1
  529. package/scss/components/button/button.scss +2 -1
  530. package/scss/components/chat-button/chat-button.scss +1 -1
  531. package/scss/components/combo-box/combo-box.scss +1 -1
  532. package/scss/components/contained-list/contained-list.scss +4 -1
  533. package/scss/components/copy-button/copy-button.scss +1 -1
  534. package/scss/components/data-table/_table-action.scss +0 -1
  535. package/scss/components/file-uploader/file-uploader.scss +3 -1
  536. package/scss/components/fluid-combo-box/fluid-combo-box.scss +1 -1
  537. package/scss/components/fluid-dropdown/fluid-dropdown.scss +1 -1
  538. package/scss/components/fluid-multi-select/fluid-multi-select.scss +1 -1
  539. package/scss/components/fluid-number-input/fluid-number-input.scss +1 -1
  540. package/scss/components/fluid-password-input/fluid-password-input.scss +1 -1
  541. package/scss/components/fluid-search/fluid-search.scss +1 -1
  542. package/scss/components/fluid-select/fluid-select.scss +1 -1
  543. package/scss/components/fluid-text-input/fluid-text-input.scss +1 -1
  544. package/scss/components/fluid-textarea/fluid-textarea.scss +1 -1
  545. package/scss/components/fluid-time-picker/fluid-time-picker.scss +1 -1
  546. package/scss/components/icon-button/icon-button.scss +1 -1
  547. package/scss/components/icon-indicator/icon-indicator.scss +19 -1
  548. package/scss/components/layout/layout.scss +1 -1
  549. package/scss/components/menu/menu-item.scss +4 -0
  550. package/scss/components/notification/actionable-notification.scss +1 -1
  551. package/scss/components/notification/inline-notification.scss +1 -1
  552. package/scss/components/notification/toast-notification.scss +1 -1
  553. package/scss/components/overflow-menu/overflow-menu.scss +13 -39
  554. package/scss/components/pagination/pagination.scss +1 -1
  555. package/scss/components/pagination-nav/pagination-nav.scss +3 -1
  556. package/scss/components/password-input/password-input.scss +3 -1
  557. package/scss/components/popover/popover.scss +3 -1
  558. package/scss/components/select/select.scss +1 -1
  559. package/scss/components/shape-indicator/shape-indicator.scss +19 -1
  560. package/scss/components/slider/slider.scss +1 -1
  561. package/scss/components/slug/slug.scss +1 -1
  562. package/scss/components/tabs/tabs.scss +4 -1
  563. package/scss/components/text-input/text-input.scss +3 -1
  564. package/scss/components/textarea/textarea.scss +1 -1
  565. package/scss/components/tile/tile.scss +1 -1
  566. package/scss/components/time-picker/time-picker.scss +1 -1
  567. package/scss/components/tooltip/tooltip.scss +15 -2
  568. package/telemetry.yml +4 -234
@@ -43,6 +43,7 @@ let FeatureFlagsElement = class FeatureFlagsElement extends LitElement {
43
43
  }
44
44
  static {
45
45
  this.flagComponentMap = {
46
+ "enable-v12-release": null,
46
47
  "enable-v12-tile-default-icons": "CDS-CLICKABLE-TILE",
47
48
  "enable-v12-tile-radio-icons": "CDS-TILE",
48
49
  "enable-v12-overflowmenu": "CDS-OVERFLOW-MENU",
@@ -70,29 +71,56 @@ let FeatureFlagsElement = class FeatureFlagsElement extends LitElement {
70
71
  attributeChangedCallback(name, _oldVal, newVal) {
71
72
  const value = newVal !== null && newVal !== "false";
72
73
  this.flags[name] = value;
73
- const relatedComponent = hasOwn(_FeatureFlagsElement.flagComponentMap, name) ? _FeatureFlagsElement.flagComponentMap[name] : "unknown";
74
- if (this.firstElementChild?.tagName === relatedComponent) this.firstElementChild.setAttribute(name, "");
74
+ const relatedComponent = hasOwn(_FeatureFlagsElement.flagComponentMap, name) ? _FeatureFlagsElement.flagComponentMap[name] : null;
75
+ if (relatedComponent && this.firstElementChild?.tagName === relatedComponent) this.firstElementChild.setAttribute(name, "");
75
76
  this.updateScope();
76
77
  }
77
- getParentScope() {
78
+ syncFeatureFlagAttributes() {
79
+ for (const [flag, relatedComponent] of Object.entries(_FeatureFlagsElement.flagComponentMap)) {
80
+ if (!relatedComponent) continue;
81
+ let isEnabled = false;
82
+ try {
83
+ isEnabled = this.scope.enabled(flag);
84
+ } catch {
85
+ isEnabled = false;
86
+ }
87
+ for (const element of this.querySelectorAll(relatedComponent.toLowerCase())) {
88
+ if (findParentFeatureFlags(element) !== this) continue;
89
+ if (isEnabled) element.setAttribute(flag, "");
90
+ else element.removeAttribute(flag);
91
+ }
92
+ }
93
+ }
94
+ getParentFeatureFlagsElement() {
78
95
  let parent = this.parentNode;
79
96
  while (parent) {
80
- if (parent instanceof _FeatureFlagsElement) return parent.getScope();
97
+ if (parent instanceof ShadowRoot) {
98
+ parent = parent.host;
99
+ continue;
100
+ }
101
+ if (parent instanceof _FeatureFlagsElement) return parent;
81
102
  parent = parent.parentNode;
82
103
  }
83
104
  return null;
84
105
  }
106
+ getParentScope() {
107
+ return this.getParentFeatureFlagsElement()?.getScope() ?? null;
108
+ }
109
+ syncChildFeatureFlagScopes() {
110
+ for (const element of this.querySelectorAll("feature-flags")) if (element instanceof _FeatureFlagsElement && element.getParentFeatureFlagsElement() === this) element.updateScope();
111
+ }
85
112
  updateScope() {
86
113
  const newScope = createScope(this.flags);
87
114
  const parentScope = this.getParentScope() || FeatureFlags;
88
115
  if (parentScope) newScope.mergeWithScope(parentScope);
89
116
  this.scope = newScope;
117
+ this.syncFeatureFlagAttributes();
118
+ this.syncChildFeatureFlagScopes();
90
119
  }
91
120
  render() {
92
121
  return html` <slot></slot> `;
93
122
  }
94
123
  isFeatureFlagEnabled(flag) {
95
- if (Object.prototype.hasOwnProperty.call(this.flags, flag)) return this.flags[flag];
96
124
  return this.scope.enabled(flag);
97
125
  }
98
126
  getScope() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["GlobalFeatureFlags","customElement"],"sources":["../../../src/components/feature-flags/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2025, 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/**\n * <feature-flags> provides scoped feature flags to child components.\n *\n * Usage:\n * Wrap any child components inside <feature-flags> to provide scoped feature flags like this:\n * <feature-flags enable-dialog-element=\"true\">\n * <component></component>\n * </feature-flags>\n *\n * Available flags:\n * - enable-dialog-element\n * - enable-treeview-controllable\n * - ... (and others listed in observedAttributes)\n *\n * How to check a Flag in your component:\n * import { isFeatureFlagEnabled } from './feature-flags';\n * isFeatureFlagEnabled('enable-dialog-element', this)\n * Returns true if the flag is enabled in the nearest <feature-flags> ancestor\n */\n\nimport {\n FeatureFlags as GlobalFeatureFlags,\n createScope,\n} from '@carbon/feature-flags';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { LitElement, html } from 'lit';\n\n/**\n * Feature Flags\n *\n * @element feature-flags\n */\ntype FeatureFlags = Record<string, boolean>;\n\nconst hasOwn = <T extends object>(obj: T, key: PropertyKey): key is keyof T =>\n Object.prototype.hasOwnProperty.call(obj, key);\n\n@customElement('feature-flags')\nclass FeatureFlagsElement extends LitElement {\n private scope = GlobalFeatureFlags;\n private flags: FeatureFlags = {};\n\n /**\n * Mapping of feature flag attributes to their related component names.\n */\n private static readonly flagComponentMap = {\n 'enable-v12-tile-default-icons': 'CDS-CLICKABLE-TILE',\n 'enable-v12-tile-radio-icons': 'CDS-TILE',\n 'enable-v12-overflowmenu': 'CDS-OVERFLOW-MENU',\n 'enable-treeview-controllable': 'CDS-TREEVIEW',\n 'enable-experimental-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-dialog-element': 'CDS-MODAL',\n 'enable-v12-dynamic-floating-styles': 'CDS-FLOATING',\n 'enable-v12-toggle-reduced-label-spacing': 'CDS-TOGGLE',\n } as const;\n\n static get observedAttributes() {\n return Object.keys(FeatureFlagsElement.flagComponentMap);\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.updateScope();\n }\n\n attributeChangedCallback(\n name: string,\n _oldVal: string | null,\n newVal: string | null\n ) {\n const value = newVal !== null && newVal !== 'false';\n this.flags[name] = value;\n\n // Set feature flag to top component level\n const relatedComponent = hasOwn(FeatureFlagsElement.flagComponentMap, name)\n ? FeatureFlagsElement.flagComponentMap[name]\n : 'unknown';\n if (this.firstElementChild?.tagName === relatedComponent) {\n this.firstElementChild.setAttribute(name, '');\n }\n\n this.updateScope();\n }\n\n private getParentScope() {\n let parent = this.parentNode;\n while (parent) {\n if (parent instanceof FeatureFlagsElement) {\n return parent.getScope();\n }\n parent = parent.parentNode;\n }\n return null;\n }\n\n private updateScope() {\n const newScope = createScope(this.flags);\n const parentScope = this.getParentScope() || GlobalFeatureFlags;\n if (parentScope) {\n newScope.mergeWithScope(parentScope);\n }\n this.scope = newScope;\n }\n\n render() {\n return html` <slot></slot> `;\n }\n\n public isFeatureFlagEnabled(flag: string) {\n if (Object.prototype.hasOwnProperty.call(this.flags, flag)) {\n return this.flags[flag];\n }\n return this.scope.enabled(flag);\n }\n\n private getScope() {\n return this.scope;\n }\n}\n\nexport default FeatureFlagsElement;\n\n// Utility functions\n\n// Function to find the nearest parent FeatureFlagsElement\nexport function findParentFeatureFlags(\n el: HTMLElement\n): FeatureFlagsElement | null {\n let parent: Node | null = el.parentNode;\n while (parent) {\n if (parent instanceof ShadowRoot) {\n parent = parent.host;\n continue;\n }\n if (parent instanceof FeatureFlagsElement) {\n return parent;\n }\n parent = (parent as HTMLElement).parentNode;\n }\n return null;\n}\n\n// function to check if a feature flag is enabled in components\nexport function isFeatureFlagEnabled(\n flag: string,\n context: HTMLElement\n): boolean {\n const instance = findParentFeatureFlags(context);\n return instance?.isFeatureFlagEnabled(flag) ?? false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAM,UAA4B,KAAQ,QACxC,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;AAE/C,IAAA,sBAAA,MACM,4BAA4B,WAAW;;;;;0BAOA;GACzC,iCAAiC;GACjC,+BAA+B;GAC/B,2BAA2B;GAC3B,gCAAgC;GAChC,oDAAoD;GACpD,uCAAuC;GACvC,yBAAyB;GACzB,sCAAsC;GACtC,2CAA2C;EAC7C;;CAEA,WAAW,qBAAqB;EAC9B,OAAO,OAAO,KAAA,qBAAyB,gBAAgB;CACzD;CAEA,cAAc;EACZ,MAAM;eAvBQA;eACc,CAAC;EAuB7B,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;CACpC;CAEA,oBAAoB;EAClB,MAAM,kBAAkB;EACxB,KAAK,YAAY;CACnB;CAEA,yBACE,MACA,SACA,QACA;EACA,MAAM,QAAQ,WAAW,QAAQ,WAAW;EAC5C,KAAK,MAAM,QAAQ;EAGnB,MAAM,mBAAmB,OAAA,qBAA2B,kBAAkB,IAAI,IAAA,qBAClD,iBAAiB,QACrC;EACJ,IAAI,KAAK,mBAAmB,YAAY,kBACtC,KAAK,kBAAkB,aAAa,MAAM,EAAE;EAG9C,KAAK,YAAY;CACnB;CAEA,iBAAyB;EACvB,IAAI,SAAS,KAAK;EAClB,OAAO,QAAQ;GACb,IAAI,kBAAA,sBACF,OAAO,OAAO,SAAS;GAEzB,SAAS,OAAO;EAClB;EACA,OAAO;CACT;CAEA,cAAsB;EACpB,MAAM,WAAW,YAAY,KAAK,KAAK;EACvC,MAAM,cAAc,KAAK,eAAe,KAAKA;EAC7C,IAAI,aACF,SAAS,eAAe,WAAW;EAErC,KAAK,QAAQ;CACf;CAEA,SAAS;EACP,OAAO,IAAI;CACb;CAEA,qBAA4B,MAAc;EACxC,IAAI,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,IAAI,GACvD,OAAO,KAAK,MAAM;EAEpB,OAAO,KAAK,MAAM,QAAQ,IAAI;CAChC;CAEA,WAAmB;EACjB,OAAO,KAAK;CACd;AACF;yDAvFCC,cAAc,eAAe,CAAA,GAAA,mBAAA;AAyF9B,IAAA,wBAAe;AAKf,SAAgB,uBACd,IAC4B;CAC5B,IAAI,SAAsB,GAAG;CAC7B,OAAO,QAAQ;EACb,IAAI,kBAAkB,YAAY;GAChC,SAAS,OAAO;GAChB;EACF;EACA,IAAI,kBAAkB,qBACpB,OAAO;EAET,SAAU,OAAuB;CACnC;CACA,OAAO;AACT;AAGA,SAAgB,qBACd,MACA,SACS;CAET,OADiB,uBAAuB,OAC1B,CAAC,EAAE,qBAAqB,IAAI,KAAK;AACjD"}
1
+ {"version":3,"file":"index.js","names":["GlobalFeatureFlags","customElement"],"sources":["../../../src/components/feature-flags/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2025, 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/**\n * <feature-flags> provides scoped feature flags to child components.\n *\n * Usage:\n * Wrap any child components inside <feature-flags> to provide scoped feature flags like this:\n * <feature-flags enable-dialog-element=\"true\">\n * <component></component>\n * </feature-flags>\n *\n * Available flags:\n * - enable-dialog-element\n * - enable-treeview-controllable\n * - ... (and others listed in observedAttributes)\n *\n * How to check a Flag in your component:\n * import { isFeatureFlagEnabled } from './feature-flags';\n * isFeatureFlagEnabled('enable-dialog-element', this)\n * Returns true if the flag is enabled in the nearest <feature-flags> ancestor\n */\n\nimport {\n FeatureFlags as GlobalFeatureFlags,\n createScope,\n} from '@carbon/feature-flags';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { LitElement, html } from 'lit';\n\n/**\n * Feature Flags\n *\n * @element feature-flags\n */\ntype FeatureFlags = Record<string, boolean>;\n\nconst hasOwn = <T extends object>(obj: T, key: PropertyKey): key is keyof T =>\n Object.prototype.hasOwnProperty.call(obj, key);\n\n@customElement('feature-flags')\nclass FeatureFlagsElement extends LitElement {\n private scope = GlobalFeatureFlags;\n private flags: FeatureFlags = {};\n\n /**\n * Mapping of feature flag attributes to their related component names.\n */\n private static readonly flagComponentMap = {\n 'enable-v12-release': null,\n 'enable-v12-tile-default-icons': 'CDS-CLICKABLE-TILE',\n 'enable-v12-tile-radio-icons': 'CDS-TILE',\n 'enable-v12-overflowmenu': 'CDS-OVERFLOW-MENU',\n 'enable-treeview-controllable': 'CDS-TREEVIEW',\n 'enable-experimental-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-dialog-element': 'CDS-MODAL',\n 'enable-v12-dynamic-floating-styles': 'CDS-FLOATING',\n 'enable-v12-toggle-reduced-label-spacing': 'CDS-TOGGLE',\n } as const;\n\n static get observedAttributes() {\n return Object.keys(FeatureFlagsElement.flagComponentMap);\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.updateScope();\n }\n\n attributeChangedCallback(\n name: string,\n _oldVal: string | null,\n newVal: string | null\n ) {\n const value = newVal !== null && newVal !== 'false';\n this.flags[name] = value;\n\n // Set feature flag to top component level\n const relatedComponent = hasOwn(FeatureFlagsElement.flagComponentMap, name)\n ? FeatureFlagsElement.flagComponentMap[name]\n : null;\n if (\n relatedComponent &&\n this.firstElementChild?.tagName === relatedComponent\n ) {\n this.firstElementChild.setAttribute(name, '');\n }\n\n this.updateScope();\n }\n\n private syncFeatureFlagAttributes() {\n for (const [flag, relatedComponent] of Object.entries(\n FeatureFlagsElement.flagComponentMap\n )) {\n if (!relatedComponent) {\n continue;\n }\n\n let isEnabled = false;\n try {\n isEnabled = this.scope.enabled(flag);\n } catch {\n isEnabled = false;\n }\n\n for (const element of this.querySelectorAll(\n relatedComponent.toLowerCase()\n )) {\n if (findParentFeatureFlags(element as HTMLElement) !== this) {\n continue;\n }\n\n if (isEnabled) {\n element.setAttribute(flag, '');\n } else {\n element.removeAttribute(flag);\n }\n }\n }\n }\n\n private getParentFeatureFlagsElement() {\n let parent: Node | null = this.parentNode;\n while (parent) {\n if (parent instanceof ShadowRoot) {\n parent = parent.host;\n continue;\n }\n if (parent instanceof FeatureFlagsElement) {\n return parent;\n }\n parent = parent.parentNode;\n }\n return null;\n }\n\n private getParentScope() {\n return this.getParentFeatureFlagsElement()?.getScope() ?? null;\n }\n\n private syncChildFeatureFlagScopes() {\n for (const element of this.querySelectorAll('feature-flags')) {\n if (\n element instanceof FeatureFlagsElement &&\n element.getParentFeatureFlagsElement() === this\n ) {\n element.updateScope();\n }\n }\n }\n\n private updateScope() {\n const newScope = createScope(this.flags);\n const parentScope = this.getParentScope() || GlobalFeatureFlags;\n if (parentScope) {\n newScope.mergeWithScope(parentScope);\n }\n this.scope = newScope;\n this.syncFeatureFlagAttributes();\n this.syncChildFeatureFlagScopes();\n }\n\n render() {\n return html` <slot></slot> `;\n }\n\n public isFeatureFlagEnabled(flag: string) {\n return this.scope.enabled(flag);\n }\n\n private getScope() {\n return this.scope;\n }\n}\n\nexport default FeatureFlagsElement;\n\n// Utility functions\n\n// Function to find the nearest parent FeatureFlagsElement\nexport function findParentFeatureFlags(\n el: HTMLElement\n): FeatureFlagsElement | null {\n let parent: Node | null = el.parentNode;\n while (parent) {\n if (parent instanceof ShadowRoot) {\n parent = parent.host;\n continue;\n }\n if (parent instanceof FeatureFlagsElement) {\n return parent;\n }\n parent = (parent as HTMLElement).parentNode;\n }\n return null;\n}\n\n// function to check if a feature flag is enabled in components\nexport function isFeatureFlagEnabled(\n flag: string,\n context: HTMLElement\n): boolean {\n const instance = findParentFeatureFlags(context);\n return instance?.isFeatureFlagEnabled(flag) ?? false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAM,UAA4B,KAAQ,QACxC,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;AAE/C,IAAA,sBAAA,MACM,4BAA4B,WAAW;;;;;0BAOA;GACzC,sBAAsB;GACtB,iCAAiC;GACjC,+BAA+B;GAC/B,2BAA2B;GAC3B,gCAAgC;GAChC,oDAAoD;GACpD,uCAAuC;GACvC,yBAAyB;GACzB,sCAAsC;GACtC,2CAA2C;EAC7C;;CAEA,WAAW,qBAAqB;EAC9B,OAAO,OAAO,KAAA,qBAAyB,gBAAgB;CACzD;CAEA,cAAc;EACZ,MAAM;eAxBQA;eACc,CAAC;EAwB7B,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;CACpC;CAEA,oBAAoB;EAClB,MAAM,kBAAkB;EACxB,KAAK,YAAY;CACnB;CAEA,yBACE,MACA,SACA,QACA;EACA,MAAM,QAAQ,WAAW,QAAQ,WAAW;EAC5C,KAAK,MAAM,QAAQ;EAGnB,MAAM,mBAAmB,OAAA,qBAA2B,kBAAkB,IAAI,IAAA,qBAClD,iBAAiB,QACrC;EACJ,IACE,oBACA,KAAK,mBAAmB,YAAY,kBAEpC,KAAK,kBAAkB,aAAa,MAAM,EAAE;EAG9C,KAAK,YAAY;CACnB;CAEA,4BAAoC;EAClC,KAAK,MAAM,CAAC,MAAM,qBAAqB,OAAO,QAAA,qBACxB,gBACtB,GAAG;GACD,IAAI,CAAC,kBACH;GAGF,IAAI,YAAY;GAChB,IAAI;IACF,YAAY,KAAK,MAAM,QAAQ,IAAI;GACrC,QAAQ;IACN,YAAY;GACd;GAEA,KAAK,MAAM,WAAW,KAAK,iBACzB,iBAAiB,YAAY,CAC/B,GAAG;IACD,IAAI,uBAAuB,OAAsB,MAAM,MACrD;IAGF,IAAI,WACF,QAAQ,aAAa,MAAM,EAAE;SAE7B,QAAQ,gBAAgB,IAAI;GAEhC;EACF;CACF;CAEA,+BAAuC;EACrC,IAAI,SAAsB,KAAK;EAC/B,OAAO,QAAQ;GACb,IAAI,kBAAkB,YAAY;IAChC,SAAS,OAAO;IAChB;GACF;GACA,IAAI,kBAAA,sBACF,OAAO;GAET,SAAS,OAAO;EAClB;EACA,OAAO;CACT;CAEA,iBAAyB;EACvB,OAAO,KAAK,6BAA6B,CAAC,EAAE,SAAS,KAAK;CAC5D;CAEA,6BAAqC;EACnC,KAAK,MAAM,WAAW,KAAK,iBAAiB,eAAe,GACzD,IACE,mBAAA,wBACA,QAAQ,6BAA6B,MAAM,MAE3C,QAAQ,YAAY;CAG1B;CAEA,cAAsB;EACpB,MAAM,WAAW,YAAY,KAAK,KAAK;EACvC,MAAM,cAAc,KAAK,eAAe,KAAKA;EAC7C,IAAI,aACF,SAAS,eAAe,WAAW;EAErC,KAAK,QAAQ;EACb,KAAK,0BAA0B;EAC/B,KAAK,2BAA2B;CAClC;CAEA,SAAS;EACP,OAAO,IAAI;CACb;CAEA,qBAA4B,MAAc;EACxC,OAAO,KAAK,MAAM,QAAQ,IAAI;CAChC;CAEA,WAAmB;EACjB,OAAO,KAAK;CACd;AACF;yDA5ICC,cAAc,eAAe,CAAA,GAAA,mBAAA;AA8I9B,IAAA,wBAAe;AAKf,SAAgB,uBACd,IAC4B;CAC5B,IAAI,SAAsB,GAAG;CAC7B,OAAO,QAAQ;EACb,IAAI,kBAAkB,YAAY;GAChC,SAAS,OAAO;GAChB;EACF;EACA,IAAI,kBAAkB,qBACpB,OAAO;EAET,SAAU,OAAuB;CACnC;CACA,OAAO;AACT;AAGA,SAAgB,qBACd,MACA,SACS;CAET,OADiB,uBAAuB,OAC1B,CAAC,EAAE,qBAAqB,IAAI,KAAK;AACjD"}
@@ -28,6 +28,7 @@ declare const CDSFileUploaderButton_base: {
28
28
  * @fires cds-file-uploader-button-changed The custom event fired when there is a user gesture to select files to upload.
29
29
  */
30
30
  declare class CDSFileUploaderButton extends CDSFileUploaderButton_base {
31
+ private _fileInput;
31
32
  /**
32
33
  * Handles `click` event on the button.
33
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-button.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAOvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;uBAMpD,CAAC;;;;;AAJzC;;;;;GAKG;AACH,cACM,qBAAsB,SAAQ,0BAA6B;IAC/D;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA2BjB;;OAEG;IAEH,UAAU,cAAuB;IAEjC;;OAEG;IAEH,IAAI,cAAsB;IAE1B;;OAEG;IAEH,MAAM,SAAM;IAEZ;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAoB;IAExB,MAAM;IAkDN;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;OAEG;IACH,MAAM,KAAK,aAAa,WAEvB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"file-uploader-button.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAOvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;uBAOvE,CAAC;;;;;AAHtB;;;;;GAKG;AACH,cACM,qBAAsB,SAAQ,0BAA6B;IAE/D,OAAO,CAAC,UAAU,CAAoB;IAEtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA2BjB;;OAEG;IAEH,UAAU,cAAuB;IAEjC;;OAEG;IAEH,IAAI,cAAsB;IAE1B;;OAEG;IAEH,MAAM,SAAM;IAEZ;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAoB;IAExB,MAAM;IAkDN;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;OAEG;IACH,MAAM,KAAK,aAAa,WAEvB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,qBAAqB,CAAC"}
@@ -14,7 +14,7 @@ import { FORM_ELEMENT_COLOR_SCHEME } from "../../globals/shared-enums.js";
14
14
  import if_non_empty_default from "../../globals/directives/if-non-empty.js";
15
15
  import file_uploader_default from "./file-uploader.scss.js";
16
16
  import { LitElement, html } from "lit";
17
- import { property } from "lit/decorators.js";
17
+ import { property, query } from "lit/decorators.js";
18
18
  import { classMap } from "lit/directives/class-map.js";
19
19
  //#region src/components/file-uploader/file-uploader-button.ts
20
20
  /**
@@ -23,6 +23,7 @@ import { classMap } from "lit/directives/class-map.js";
23
23
  * This source code is licensed under the Apache-2.0 license found in the
24
24
  * LICENSE file in the root directory of this source tree.
25
25
  */
26
+ const selectorInput = `.cds--file-input`;
26
27
  /**
27
28
  * File uploader button .
28
29
  *
@@ -45,18 +46,16 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
45
46
  */
46
47
  _handleClick(event) {
47
48
  event.target.value = null;
48
- const { selectorInput } = this.constructor;
49
- this?.shadowRoot?.querySelector(selectorInput)?.setAttribute("value", "");
50
- (this?.shadowRoot?.querySelector(selectorInput)).click();
49
+ this._fileInput.setAttribute("value", "");
50
+ this._fileInput.click();
51
51
  }
52
52
  /**
53
53
  * Handles `keydown` event on the button.
54
54
  */
55
55
  _handleKeyDown(event) {
56
- const { selectorInput } = this.constructor;
57
56
  if (event.key === "Enter" || event.key === "Space") {
58
- this?.shadowRoot?.querySelector(selectorInput)?.setAttribute("value", "");
59
- (this?.shadowRoot?.querySelector(selectorInput)).click();
57
+ this._fileInput.setAttribute("value", "");
58
+ this._fileInput.click();
60
59
  }
61
60
  }
62
61
  /**
@@ -66,14 +65,13 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
66
65
  */
67
66
  _handleChange(event) {
68
67
  const addedFiles = this._getFiles(event);
69
- const { eventChange, selectorInput } = this.constructor;
68
+ const { eventChange } = this.constructor;
70
69
  this.dispatchEvent(new CustomEvent(eventChange, {
71
70
  bubbles: true,
72
71
  composed: true,
73
72
  detail: { addedFiles }
74
73
  }));
75
- const fileInput = this?.shadowRoot?.querySelector(selectorInput);
76
- if (fileInput) fileInput.value = "";
74
+ this._fileInput.value = "";
77
75
  }
78
76
  /**
79
77
  * @param event The event.
@@ -134,12 +132,13 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
134
132
  * A selector that will return the file `input`.
135
133
  */
136
134
  static get selectorInput() {
137
- return `.cds--file-input`;
135
+ return selectorInput;
138
136
  }
139
137
  static {
140
138
  this.styles = file_uploader_default;
141
139
  }
142
140
  };
141
+ __decorate([query(selectorInput)], CDSFileUploaderButton.prototype, "_fileInput", void 0);
143
142
  __decorate([property({
144
143
  reflect: true,
145
144
  attribute: "button-kind"
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-button.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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 HostListenerMixin from '../../globals/mixins/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { BUTTON_KIND, BUTTON_SIZE } from '../button/defs';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\n/**\n * File uploader button .\n *\n * @element cds-file-uploader-button\n * @fires cds-file-uploader-button-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-button`)\nclass CDSFileUploaderButton extends HostListenerMixin(LitElement) {\n /**\n * Handles `click` event on the button.\n */\n private _handleClick(event) {\n event.target.value = null;\n const { selectorInput } = this.constructor as typeof CDSFileUploaderButton;\n this?.shadowRoot?.querySelector(selectorInput)?.setAttribute('value', '');\n (this?.shadowRoot?.querySelector(selectorInput) as HTMLElement).click();\n }\n\n /**\n * Handles `keydown` event on the button.\n */\n private _handleKeyDown(event) {\n const { selectorInput } = this.constructor as typeof CDSFileUploaderButton;\n if (event.key === 'Enter' || event.key === 'Space') {\n this?.shadowRoot?.querySelector(selectorInput)?.setAttribute('value', '');\n (this?.shadowRoot?.querySelector(selectorInput) as HTMLElement).click();\n }\n }\n\n /**\n * Handles user gesture to select files to upload.\n *\n * @param event The event.\n */\n private _handleChange(event: Event | DragEvent) {\n const addedFiles = this._getFiles(event);\n const { eventChange, selectorInput } = this\n .constructor as typeof CDSFileUploaderButton;\n this.dispatchEvent(\n new CustomEvent(eventChange, {\n bubbles: true,\n composed: true,\n detail: {\n addedFiles,\n },\n })\n );\n\n const fileInput = this?.shadowRoot?.querySelector(selectorInput);\n if (fileInput) {\n (fileInput as HTMLInputElement).value = '';\n }\n }\n\n /**\n * @param event The event.\n * @returns The list of files user chose to upload.\n */\n private _getFiles(event: Event | DragEvent) {\n const { files } =\n (event.type === 'drop'\n ? (event as DragEvent).dataTransfer\n : (event.target as HTMLInputElement)) ?? {};\n const { accept } = this;\n if (!accept || !/^(change|drop)$/.test(event.type)) {\n return Array.from(files ?? []);\n }\n const acceptedTypes = new Set(accept.split(/[\\s,]+/).filter(Boolean));\n return Array.prototype.filter.call(\n files,\n ({ name, type: mimeType = '' }) => {\n const fileExtensionRegExp = /\\.[^.]+$/;\n const hasFileExtension = fileExtensionRegExp.test(name);\n const [fileExtension] = !hasFileExtension\n ? [undefined]\n : (fileExtensionRegExp.exec(name) ?? []);\n\n return (\n acceptedTypes.has(mimeType) ||\n (fileExtension && acceptedTypes.has(fileExtension))\n );\n }\n ) as File[];\n }\n\n /**\n * Button kind.\n */\n @property({ reflect: true, attribute: 'button-kind' })\n buttonKind = BUTTON_KIND.PRIMARY;\n\n /**\n * Button size.\n */\n @property({ reflect: true })\n size = BUTTON_SIZE.MEDIUM;\n\n /**\n * The file types the file input should accept, separated by space.\n */\n @property()\n accept = '';\n\n /**\n * `true` if this drop container should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this drop container should accept more than one files at once.\n * Note that even with `false` set here, user _can_ select multiple files one by one.\n */\n @property({ type: Boolean, reflect: true })\n multiple = false;\n\n /**\n * The name of the input.\n */\n @property({ reflect: true })\n name = '';\n\n /**\n * The shadow DOM slot to put this drop container in.\n */\n @property({ reflect: true })\n slot = 'drop-container';\n\n render() {\n const {\n accept,\n disabled,\n multiple,\n name,\n buttonKind,\n size,\n _handleChange: handleChange,\n } = this;\n const acceptForInput = accept\n ? accept\n .split(/[\\s,]+/)\n .filter(Boolean)\n .join(',')\n : '';\n\n const labelClasses = classMap({\n [`${prefix}--file-browse-btn`]: true,\n [`${prefix}--file-browse-btn--disabled`]: disabled,\n });\n const buttonClasses = classMap({\n [`${prefix}--btn`]: true,\n [`${prefix}--btn--${buttonKind}`]: buttonKind,\n [`${prefix}--layout--size-${size}`]: size,\n [`${prefix}--btn--disabled`]: disabled,\n [`${prefix}--btn--${size}`]: size,\n });\n return html`\n <button\n type=\"button\"\n class=\"${buttonClasses}\"\n @click=\"${this._handleClick}\"\n @keydown=\"${this._handleKeyDown}\">\n <slot></slot>\n </button>\n <label class=\"${labelClasses}\" for=\"file\"> </label>\n <input\n id=\"file\"\n type=\"file\"\n class=\"${prefix}--file-input\"\n tabindex=\"-1\"\n accept=\"${ifNonEmpty(acceptForInput)}\"\n ?disabled=\"${disabled}\"\n ?multiple=\"${multiple}\"\n name=\"${ifNonEmpty(name)}\"\n @change=\"${handleChange}\" />\n `;\n }\n\n /**\n * The name of the custom event fired when there is a user gesture to select files to upload.\n */\n static get eventChange() {\n return `${prefix}-file-uploader-button-changed`;\n }\n\n /**\n * A selector that will return the file `input`.\n */\n static get selectorInput() {\n return `.${prefix}--file-input`;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderButton;\n"],"mappings":"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"}
1
+ {"version":3,"file":"file-uploader-button.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { BUTTON_KIND, BUTTON_SIZE } from '../button/defs';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\nconst selectorInput = `.${prefix}--file-input`;\n\n/**\n * File uploader button .\n *\n * @element cds-file-uploader-button\n * @fires cds-file-uploader-button-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-button`)\nclass CDSFileUploaderButton extends HostListenerMixin(LitElement) {\n @query(selectorInput)\n private _fileInput!: HTMLInputElement;\n\n /**\n * Handles `click` event on the button.\n */\n private _handleClick(event) {\n event.target.value = null;\n this._fileInput.setAttribute('value', '');\n this._fileInput.click();\n }\n\n /**\n * Handles `keydown` event on the button.\n */\n private _handleKeyDown(event) {\n if (event.key === 'Enter' || event.key === 'Space') {\n this._fileInput.setAttribute('value', '');\n this._fileInput.click();\n }\n }\n\n /**\n * Handles user gesture to select files to upload.\n *\n * @param event The event.\n */\n private _handleChange(event: Event | DragEvent) {\n const addedFiles = this._getFiles(event);\n const { eventChange } = this.constructor as typeof CDSFileUploaderButton;\n this.dispatchEvent(\n new CustomEvent(eventChange, {\n bubbles: true,\n composed: true,\n detail: {\n addedFiles,\n },\n })\n );\n\n this._fileInput.value = '';\n }\n\n /**\n * @param event The event.\n * @returns The list of files user chose to upload.\n */\n private _getFiles(event: Event | DragEvent) {\n const { files } =\n (event.type === 'drop'\n ? (event as DragEvent).dataTransfer\n : (event.target as HTMLInputElement)) ?? {};\n const { accept } = this;\n if (!accept || !/^(change|drop)$/.test(event.type)) {\n return Array.from(files ?? []);\n }\n const acceptedTypes = new Set(accept.split(/[\\s,]+/).filter(Boolean));\n return Array.prototype.filter.call(\n files,\n ({ name, type: mimeType = '' }) => {\n const fileExtensionRegExp = /\\.[^.]+$/;\n const hasFileExtension = fileExtensionRegExp.test(name);\n const [fileExtension] = !hasFileExtension\n ? [undefined]\n : (fileExtensionRegExp.exec(name) ?? []);\n\n return (\n acceptedTypes.has(mimeType) ||\n (fileExtension && acceptedTypes.has(fileExtension))\n );\n }\n ) as File[];\n }\n\n /**\n * Button kind.\n */\n @property({ reflect: true, attribute: 'button-kind' })\n buttonKind = BUTTON_KIND.PRIMARY;\n\n /**\n * Button size.\n */\n @property({ reflect: true })\n size = BUTTON_SIZE.MEDIUM;\n\n /**\n * The file types the file input should accept, separated by space.\n */\n @property()\n accept = '';\n\n /**\n * `true` if this drop container should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this drop container should accept more than one files at once.\n * Note that even with `false` set here, user _can_ select multiple files one by one.\n */\n @property({ type: Boolean, reflect: true })\n multiple = false;\n\n /**\n * The name of the input.\n */\n @property({ reflect: true })\n name = '';\n\n /**\n * The shadow DOM slot to put this drop container in.\n */\n @property({ reflect: true })\n slot = 'drop-container';\n\n render() {\n const {\n accept,\n disabled,\n multiple,\n name,\n buttonKind,\n size,\n _handleChange: handleChange,\n } = this;\n const acceptForInput = accept\n ? accept\n .split(/[\\s,]+/)\n .filter(Boolean)\n .join(',')\n : '';\n\n const labelClasses = classMap({\n [`${prefix}--file-browse-btn`]: true,\n [`${prefix}--file-browse-btn--disabled`]: disabled,\n });\n const buttonClasses = classMap({\n [`${prefix}--btn`]: true,\n [`${prefix}--btn--${buttonKind}`]: buttonKind,\n [`${prefix}--layout--size-${size}`]: size,\n [`${prefix}--btn--disabled`]: disabled,\n [`${prefix}--btn--${size}`]: size,\n });\n return html`\n <button\n type=\"button\"\n class=\"${buttonClasses}\"\n @click=\"${this._handleClick}\"\n @keydown=\"${this._handleKeyDown}\">\n <slot></slot>\n </button>\n <label class=\"${labelClasses}\" for=\"file\"> </label>\n <input\n id=\"file\"\n type=\"file\"\n class=\"${prefix}--file-input\"\n tabindex=\"-1\"\n accept=\"${ifNonEmpty(acceptForInput)}\"\n ?disabled=\"${disabled}\"\n ?multiple=\"${multiple}\"\n name=\"${ifNonEmpty(name)}\"\n @change=\"${handleChange}\" />\n `;\n }\n\n /**\n * The name of the custom event fired when there is a user gesture to select files to upload.\n */\n static get eventChange() {\n return `${prefix}-file-uploader-button-changed`;\n }\n\n /**\n * A selector that will return the file `input`.\n */\n static get selectorInput() {\n return selectorInput;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderButton;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,gBAAgB;;;;;;;AAQtB,IAAA,wBAAA,MACM,8BAA8B,kBAAkB,UAAU,CAAC,CAAC;;;;;gBA2FvD;kBAME;kBAOA;cAMJ;cAMA;;;;;CA7GP,aAAqB,OAAO;EAC1B,MAAM,OAAO,QAAQ;EACrB,KAAK,WAAW,aAAa,SAAS,EAAE;EACxC,KAAK,WAAW,MAAM;CACxB;;;;CAKA,eAAuB,OAAO;EAC5B,IAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,SAAS;GAClD,KAAK,WAAW,aAAa,SAAS,EAAE;GACxC,KAAK,WAAW,MAAM;EACxB;CACF;;;;;;CAOA,cAAsB,OAA0B;EAC9C,MAAM,aAAa,KAAK,UAAU,KAAK;EACvC,MAAM,EAAE,gBAAgB,KAAK;EAC7B,KAAK,cACH,IAAI,YAAY,aAAa;GAC3B,SAAS;GACT,UAAU;GACV,QAAQ,EACN,WACF;EACF,CAAC,CACH;EAEA,KAAK,WAAW,QAAQ;CAC1B;;;;;CAMA,UAAkB,OAA0B;EAC1C,MAAM,EAAE,WACL,MAAM,SAAS,SACX,MAAoB,eACpB,MAAM,WAAgC,CAAC;EAC9C,MAAM,EAAE,WAAW;EACnB,IAAI,CAAC,UAAU,CAAC,kBAAkB,KAAK,MAAM,IAAI,GAC/C,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC;EAE/B,MAAM,gBAAgB,IAAI,IAAI,OAAO,MAAM,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC;EACpE,OAAO,MAAM,UAAU,OAAO,KAC5B,QACC,EAAE,MAAM,MAAM,WAAW,SAAS;GACjC,MAAM,sBAAsB;GAE5B,MAAM,CAAC,iBAAiB,CADC,oBAAoB,KAAK,IACV,IACpC,CAAC,KAAA,CAAS,IACT,oBAAoB,KAAK,IAAI,KAAK,CAAC;GAExC,OACE,cAAc,IAAI,QAAQ,KACzB,iBAAiB,cAAc,IAAI,aAAa;EAErD,CACF;CACF;CA6CA,SAAS;EACP,MAAM,EACJ,QACA,UACA,UACA,MACA,YACA,MACA,eAAe,iBACb;EACJ,MAAM,iBAAiB,SACnB,OACG,MAAM,QAAQ,CAAC,CACf,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,IACX;EAEJ,MAAM,eAAe,SAAS;IAC3B,yBAA+B;IAC/B,mCAAyC;EAC5C,CAAC;EAQD,OAAO,IAAI;;;iBAPW,SAAS;IAC5B,aAAmB;IACnB,aAAmB,eAAe;IAClC,qBAA2B,SAAS;IACpC,uBAA6B;IAC7B,aAAmB,SAAS;EAC/B,CAIyB,EAAE;kBACb,KAAK,aAAa;oBAChB,KAAK,eAAe;;;sBAGlB,aAAa;;;;uBAIX;;kBAENA,qBAAW,cAAc,EAAE;qBACxB,SAAS;qBACT,SAAS;gBACdA,qBAAW,IAAI,EAAE;mBACd,aAAa;;CAE9B;;;;CAKA,WAAW,cAAc;EACvB,OAAO;CACT;;;;CAKA,WAAW,gBAAgB;EACzB,OAAO;CACT;;gBAEgBC;;AAClB;YAtLG,MAAM,aAAa,CAAA,GAAA,sBAAA,WAAA,cAAA,KAAA,CAAA;YA6EnB,SAAS;CAAE,SAAS;CAAM,WAAW;AAAc,CAAC,CAAA,GAAA,sBAAA,WAAA,cAAA,KAAA,CAAA;YAMpD,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,sBAAA,WAAA,QAAA,KAAA,CAAA;YAM1B,SAAS,CAAA,GAAA,sBAAA,WAAA,UAAA,KAAA,CAAA;YAMT,SAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,sBAAA,WAAA,YAAA,KAAA,CAAA;YAOzC,SAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,sBAAA,WAAA,YAAA,KAAA,CAAA;YAMzC,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,sBAAA,WAAA,QAAA,KAAA,CAAA;YAM1B,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,sBAAA,WAAA,QAAA,KAAA,CAAA;oCApH5BC,cAAc,0BAAgC,CAAA,GAAA,qBAAA;AA0L/C,IAAA,+BAAe"}
@@ -27,6 +27,7 @@ declare const CDSFileUploaderDropContainer_base: {
27
27
  * @fires cds-file-uploader-drop-container-changed The custom event fired when there is a user gesture to select files to upload.
28
28
  */
29
29
  declare class CDSFileUploaderDropContainer extends CDSFileUploaderDropContainer_base {
30
+ private _fileInput;
30
31
  /**
31
32
  * `true` to show the active state of this UI.
32
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-drop-container.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AASvC,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;uBAK/E,CAAC;;;;;AAKd;;;;;GAKG;AACH,cACM,4BAA6B,SAAQ,iCAA6B;IACtE;;OAEG;IACH,OAAO,CAAC,OAAO,CAAS;IAExB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;;OAIG;IAMH,OAAO,CAAC,WAAW;IAiBnB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAuBjB;;OAEG;IAEH,MAAM,SAAM;IAEZ;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAoB;IAExB,MAAM;IA0CN;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;OAEG;IACH,MAAM,KAAK,aAAa,WAEvB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"file-uploader-drop-container.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AASvC,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;uBAKlD,CAAC;;;;;AAO3C;;;;;GAKG;AACH,cACM,4BAA6B,SAAQ,iCAA6B;IAEtE,OAAO,CAAC,UAAU,CAAoB;IAEtC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAS;IAExB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAsBrB;;;;OAIG;IAMH,OAAO,CAAC,WAAW;IAiBnB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAuBjB;;OAEG;IAEH,MAAM,SAAM;IAEZ;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAoB;IAExB,MAAM;IA0CN;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;OAEG;IACH,MAAM,KAAK,aAAa,WAEvB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,4BAA4B,CAAC"}
@@ -14,7 +14,7 @@ import { FORM_ELEMENT_COLOR_SCHEME } from "../../globals/shared-enums.js";
14
14
  import if_non_empty_default from "../../globals/directives/if-non-empty.js";
15
15
  import file_uploader_default from "./file-uploader.scss.js";
16
16
  import { LitElement, html } from "lit";
17
- import { property } from "lit/decorators.js";
17
+ import { property, query } from "lit/decorators.js";
18
18
  import { classMap } from "lit/directives/class-map.js";
19
19
  //#region src/components/file-uploader/file-uploader-drop-container.ts
20
20
  /**
@@ -23,6 +23,7 @@ import { classMap } from "lit/directives/class-map.js";
23
23
  * This source code is licensed under the Apache-2.0 license found in the
24
24
  * LICENSE file in the root directory of this source tree.
25
25
  */
26
+ const selectorInput = `.cds--file-input`;
26
27
  /**
27
28
  * The value to set to `event.dataTransfer.dropEffect`, keyed by the event nane.
28
29
  */
@@ -52,7 +53,7 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
52
53
  * @param event The event.
53
54
  */
54
55
  _handleChange(event) {
55
- const { eventChange, selectorInput } = this.constructor;
56
+ const { eventChange } = this.constructor;
56
57
  const { files } = (event.type === "drop" ? event.dataTransfer : event.target) ?? {};
57
58
  const addedFiles = this._getFiles(event, files);
58
59
  this.dispatchEvent(new CustomEvent(eventChange, {
@@ -60,8 +61,7 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
60
61
  composed: true,
61
62
  detail: { addedFiles }
62
63
  }));
63
- const fileInput = this?.shadowRoot?.querySelector(selectorInput);
64
- if (fileInput) fileInput.value = "";
64
+ this._fileInput.value = "";
65
65
  }
66
66
  /**
67
67
  * Handles `dragover`, `dragleave` and `drop` events.
@@ -129,12 +129,13 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
129
129
  * A selector that will return the file `input`.
130
130
  */
131
131
  static get selectorInput() {
132
- return `.cds--file-input`;
132
+ return selectorInput;
133
133
  }
134
134
  static {
135
135
  this.styles = file_uploader_default;
136
136
  }
137
137
  };
138
+ __decorate([query(selectorInput)], CDSFileUploaderDropContainer.prototype, "_fileInput", void 0);
138
139
  __decorate([
139
140
  HostListener("dragover"),
140
141
  HostListener("dragleave"),
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-drop-container.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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 { prefix } from '../../globals/settings';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\n/**\n * The value to set to `event.dataTransfer.dropEffect`, keyed by the event nane.\n */\nconst dropEffects = {\n dragover: 'copy',\n dragleave: 'move',\n};\n\n/**\n * File uploader drop container.\n *\n * @element cds-file-uploader-drop-container\n * @fires cds-file-uploader-drop-container-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-drop-container`)\nclass CDSFileUploaderDropContainer extends HostListenerMixin(LitElement) {\n /**\n * `true` to show the active state of this UI.\n */\n private _active = false;\n\n /**\n * Handles user gesture to select files to upload.\n *\n * @param event The event.\n */\n private _handleChange(event: Event | DragEvent) {\n const { eventChange, selectorInput } = this\n .constructor as typeof CDSFileUploaderDropContainer;\n const { files } =\n (event.type === 'drop'\n ? (event as DragEvent).dataTransfer\n : (event.target as HTMLInputElement)) ?? {};\n const addedFiles = this._getFiles(event, files);\n\n this.dispatchEvent(\n new CustomEvent(eventChange, {\n bubbles: true,\n composed: true,\n detail: {\n addedFiles,\n },\n })\n );\n\n const fileInput = this?.shadowRoot?.querySelector(selectorInput);\n if (fileInput) {\n (fileInput as HTMLInputElement).value = ''; // carbon-web-components#904\n }\n }\n\n /**\n * Handles `dragover`, `dragleave` and `drop` events.\n *\n * @param event The event.\n */\n @HostListener('dragover')\n @HostListener('dragleave')\n @HostListener('drop')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleDrag(event: DragEvent) {\n event.preventDefault(); // Prevents page navigation upon dropping\n if (this.disabled) {\n return;\n }\n const { dataTransfer, type } = event;\n const dropEffect = dropEffects[type];\n if (dataTransfer && dropEffect) {\n dataTransfer.dropEffect = dropEffect;\n }\n this._active = type === 'dragover';\n if (type === 'drop') {\n this._handleChange(event);\n }\n this.requestUpdate();\n }\n\n /**\n * @param event The event.\n * @returns The list of files user chose to upload.\n */\n private _getFiles(event, files) {\n const { accept } = this;\n if (!accept || !/^(change|drop)$/.test(event.type)) {\n return Array.from(files ?? []);\n }\n const acceptedTypes = new Set(accept.split(/[\\s,]+/).filter(Boolean));\n return Array.prototype.filter.call(\n files,\n ({ name, type: mimeType = '' }) => {\n const fileExtensionRegExp = /\\.[^.]+$/;\n const hasFileExtension = fileExtensionRegExp.test(name);\n const [fileExtension] = !hasFileExtension\n ? [undefined]\n : (fileExtensionRegExp.exec(name) ?? []);\n\n return (\n acceptedTypes.has(mimeType) ||\n (fileExtension && acceptedTypes.has(fileExtension))\n );\n }\n ) as File[];\n }\n\n /**\n * The file types the file input should accept, separated by spaces and/or commas.\n */\n @property()\n accept = '';\n\n /**\n * `true` if this drop container should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this drop container should accept more than one files at once.\n * Note that even with `false` set here, user _can_ select multiple files one by one.\n */\n @property({ type: Boolean, reflect: true })\n multiple = false;\n\n /**\n * The name of the input.\n */\n @property({ reflect: true })\n name = '';\n\n /**\n * The shadow DOM slot to put this drop container in.\n */\n @property({ reflect: true })\n slot = 'drop-container';\n\n render() {\n const {\n accept,\n disabled,\n multiple,\n name,\n _active: active,\n _handleChange: handleChange,\n } = this;\n const acceptForInput = accept\n ? accept\n .split(/[\\s,]+/)\n .filter(Boolean)\n .join(',')\n : '';\n const labelClasses = classMap({\n [`${prefix}--file-browse-btn`]: true,\n [`${prefix}--file-browse-btn--disabled`]: disabled,\n });\n const dropareaClasses = classMap({\n [`${prefix}--file__drop-container`]: true,\n [`${prefix}--file__drop-container--drag-over`]: active,\n });\n return html`\n <label class=\"${labelClasses}\" for=\"file\" tabindex=\"0\">\n <div class=\"${dropareaClasses}\" role=\"button\">\n <slot></slot>\n <input\n id=\"file\"\n type=\"file\"\n name=\"${ifNonEmpty(name)}\"\n class=\"${prefix}--file-input\"\n tabindex=\"-1\"\n accept=\"${ifNonEmpty(acceptForInput)}\"\n ?disabled=\"${disabled}\"\n ?multiple=\"${multiple}\"\n @change=\"${handleChange}\" />\n </div>\n </label>\n `;\n }\n\n /**\n * The name of the custom event fired when there is a user gesture to select files to upload.\n */\n static get eventChange() {\n return `${prefix}-file-uploader-drop-container-changed`;\n }\n\n /**\n * A selector that will return the file `input`.\n */\n static get selectorInput() {\n return `.${prefix}--file-input`;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderDropContainer;\n"],"mappings":"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"}
1
+ {"version":3,"file":"file-uploader-drop-container.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\nconst selectorInput = `.${prefix}--file-input`;\n\n/**\n * The value to set to `event.dataTransfer.dropEffect`, keyed by the event nane.\n */\nconst dropEffects = {\n dragover: 'copy',\n dragleave: 'move',\n};\n\n/**\n * File uploader drop container.\n *\n * @element cds-file-uploader-drop-container\n * @fires cds-file-uploader-drop-container-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-drop-container`)\nclass CDSFileUploaderDropContainer extends HostListenerMixin(LitElement) {\n @query(selectorInput)\n private _fileInput!: HTMLInputElement;\n\n /**\n * `true` to show the active state of this UI.\n */\n private _active = false;\n\n /**\n * Handles user gesture to select files to upload.\n *\n * @param event The event.\n */\n private _handleChange(event: Event | DragEvent) {\n const { eventChange } = this\n .constructor as typeof CDSFileUploaderDropContainer;\n const { files } =\n (event.type === 'drop'\n ? (event as DragEvent).dataTransfer\n : (event.target as HTMLInputElement)) ?? {};\n const addedFiles = this._getFiles(event, files);\n\n this.dispatchEvent(\n new CustomEvent(eventChange, {\n bubbles: true,\n composed: true,\n detail: {\n addedFiles,\n },\n })\n );\n\n this._fileInput.value = ''; // carbon-web-components#904\n }\n\n /**\n * Handles `dragover`, `dragleave` and `drop` events.\n *\n * @param event The event.\n */\n @HostListener('dragover')\n @HostListener('dragleave')\n @HostListener('drop')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleDrag(event: DragEvent) {\n event.preventDefault(); // Prevents page navigation upon dropping\n if (this.disabled) {\n return;\n }\n const { dataTransfer, type } = event;\n const dropEffect = dropEffects[type];\n if (dataTransfer && dropEffect) {\n dataTransfer.dropEffect = dropEffect;\n }\n this._active = type === 'dragover';\n if (type === 'drop') {\n this._handleChange(event);\n }\n this.requestUpdate();\n }\n\n /**\n * @param event The event.\n * @returns The list of files user chose to upload.\n */\n private _getFiles(event, files) {\n const { accept } = this;\n if (!accept || !/^(change|drop)$/.test(event.type)) {\n return Array.from(files ?? []);\n }\n const acceptedTypes = new Set(accept.split(/[\\s,]+/).filter(Boolean));\n return Array.prototype.filter.call(\n files,\n ({ name, type: mimeType = '' }) => {\n const fileExtensionRegExp = /\\.[^.]+$/;\n const hasFileExtension = fileExtensionRegExp.test(name);\n const [fileExtension] = !hasFileExtension\n ? [undefined]\n : (fileExtensionRegExp.exec(name) ?? []);\n\n return (\n acceptedTypes.has(mimeType) ||\n (fileExtension && acceptedTypes.has(fileExtension))\n );\n }\n ) as File[];\n }\n\n /**\n * The file types the file input should accept, separated by spaces and/or commas.\n */\n @property()\n accept = '';\n\n /**\n * `true` if this drop container should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this drop container should accept more than one files at once.\n * Note that even with `false` set here, user _can_ select multiple files one by one.\n */\n @property({ type: Boolean, reflect: true })\n multiple = false;\n\n /**\n * The name of the input.\n */\n @property({ reflect: true })\n name = '';\n\n /**\n * The shadow DOM slot to put this drop container in.\n */\n @property({ reflect: true })\n slot = 'drop-container';\n\n render() {\n const {\n accept,\n disabled,\n multiple,\n name,\n _active: active,\n _handleChange: handleChange,\n } = this;\n const acceptForInput = accept\n ? accept\n .split(/[\\s,]+/)\n .filter(Boolean)\n .join(',')\n : '';\n const labelClasses = classMap({\n [`${prefix}--file-browse-btn`]: true,\n [`${prefix}--file-browse-btn--disabled`]: disabled,\n });\n const dropareaClasses = classMap({\n [`${prefix}--file__drop-container`]: true,\n [`${prefix}--file__drop-container--drag-over`]: active,\n });\n return html`\n <label class=\"${labelClasses}\" for=\"file\" tabindex=\"0\">\n <div class=\"${dropareaClasses}\" role=\"button\">\n <slot></slot>\n <input\n id=\"file\"\n type=\"file\"\n name=\"${ifNonEmpty(name)}\"\n class=\"${prefix}--file-input\"\n tabindex=\"-1\"\n accept=\"${ifNonEmpty(acceptForInput)}\"\n ?disabled=\"${disabled}\"\n ?multiple=\"${multiple}\"\n @change=\"${handleChange}\" />\n </div>\n </label>\n `;\n }\n\n /**\n * The name of the custom event fired when there is a user gesture to select files to upload.\n */\n static get eventChange() {\n return `${prefix}-file-uploader-drop-container-changed`;\n }\n\n /**\n * A selector that will return the file `input`.\n */\n static get selectorInput() {\n return selectorInput;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderDropContainer;\n"],"mappings":"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"}