@carbon/web-components 2.54.0 → 2.55.0-rc.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 (417) hide show
  1. package/custom-elements.json +198 -157
  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-skeleton/ai-skeleton.scss.js +1 -1
  5. package/es/components/badge-indicator/badge-indicator.scss.js +1 -1
  6. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  7. package/es/components/button/button.d.ts +1 -1
  8. package/es/components/button/button.js +1 -1
  9. package/es/components/button/button.js.map +1 -1
  10. package/es/components/button/button.scss.js +1 -1
  11. package/es/components/checkbox/checkbox.scss.js +1 -1
  12. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  13. package/es/components/combo-box/combo-box.scss.js +1 -1
  14. package/es/components/combo-button/combo-button.scss.js +1 -1
  15. package/es/components/contained-list/contained-list.scss.js +1 -1
  16. package/es/components/content-switcher/content-switcher.scss.js +1 -1
  17. package/es/components/copy-button/copy-button.scss.js +1 -1
  18. package/es/components/data-table/data-table.scss.js +1 -1
  19. package/es/components/date-picker/date-picker.scss.js +1 -1
  20. package/es/components/date-picker/date-picker.scss.js.map +1 -1
  21. package/es/components/dialog/dialog-body.js +1 -1
  22. package/es/components/dialog/dialog-close-button.js +1 -1
  23. package/es/components/dialog/dialog-footer.js +1 -1
  24. package/es/components/dialog/dialog-subtitle.js +1 -1
  25. package/es/components/dialog/dialog-title.js +1 -1
  26. package/es/components/dialog/dialog.d.ts +18 -7
  27. package/es/components/dialog/dialog.d.ts.map +1 -1
  28. package/es/components/dialog/dialog.js +51 -17
  29. package/es/components/dialog/dialog.js.map +1 -1
  30. package/es/components/dialog/dialog.scss.js +1 -1
  31. package/es/components/dialog/dialog.scss.js.map +1 -1
  32. package/es/components/dropdown/dropdown.scss.js +1 -1
  33. package/es/components/feature-flags/index.d.ts.map +1 -1
  34. package/es/components/feature-flags/index.js +8 -3
  35. package/es/components/feature-flags/index.js.map +1 -1
  36. package/es/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  37. package/es/components/file-uploader/file-uploader-button.js +3 -2
  38. package/es/components/file-uploader/file-uploader-button.js.map +1 -1
  39. package/es/components/file-uploader/file-uploader-drop-container.d.ts +1 -1
  40. package/es/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  41. package/es/components/file-uploader/file-uploader-drop-container.js +3 -2
  42. package/es/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  43. package/es/components/file-uploader/file-uploader-item.d.ts +4 -0
  44. package/es/components/file-uploader/file-uploader-item.d.ts.map +1 -1
  45. package/es/components/file-uploader/file-uploader-item.js +6 -0
  46. package/es/components/file-uploader/file-uploader-item.js.map +1 -1
  47. package/es/components/file-uploader/file-uploader.scss.js +1 -1
  48. package/es/components/file-uploader/file-uploader.scss.js.map +1 -1
  49. package/es/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  50. package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  51. package/es/components/fluid-form/fluid-form.scss.js +1 -1
  52. package/es/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  53. package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  54. package/es/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  55. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  56. package/es/components/fluid-select/fluid-select.scss.js +1 -1
  57. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  58. package/es/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  59. package/es/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  60. package/es/components/form/form-item.scss.js +1 -1
  61. package/es/components/form/form.scss.js +1 -1
  62. package/es/components/form-group/form-group.scss.js +1 -1
  63. package/es/components/heading/heading.scss.js +1 -1
  64. package/es/components/icon-button/icon-button.scss.js +1 -1
  65. package/es/components/icon-indicator/icon-indicator.scss.js +1 -1
  66. package/es/components/inline-loading/inline-loading.scss.js +1 -1
  67. package/es/components/link/link.d.ts +1 -1
  68. package/es/components/link/link.d.ts.map +1 -1
  69. package/es/components/link/link.js.map +1 -1
  70. package/es/components/link/link.scss.js +1 -1
  71. package/es/components/list/list.scss.js +1 -1
  72. package/es/components/loading/loading.scss.js +1 -1
  73. package/es/components/menu/menu-item.scss.js +1 -1
  74. package/es/components/menu/menu.scss.js +1 -1
  75. package/es/components/menu-button/menu-button.scss.js +1 -1
  76. package/es/components/modal/modal-base.d.ts +144 -0
  77. package/es/components/modal/modal-base.d.ts.map +1 -0
  78. package/es/components/modal/modal-base.js +229 -0
  79. package/es/components/modal/modal-base.js.map +1 -0
  80. package/es/components/modal/modal.d.ts +15 -89
  81. package/es/components/modal/modal.d.ts.map +1 -1
  82. package/es/components/modal/modal.js +66 -169
  83. package/es/components/modal/modal.js.map +1 -1
  84. package/es/components/modal/modal.scss.js +1 -1
  85. package/es/components/modal/modal.scss.js.map +1 -1
  86. package/es/components/multi-select/multi-select.scss.js +1 -1
  87. package/es/components/notification/actionable-notification.scss.js +1 -1
  88. package/es/components/notification/inline-notification.scss.js +1 -1
  89. package/es/components/notification/toast-notification.scss.js +1 -1
  90. package/es/components/number-input/number-input.scss.js +1 -1
  91. package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
  92. package/es/components/page-header/index.d.ts +4 -0
  93. package/es/components/page-header/index.d.ts.map +1 -1
  94. package/es/components/page-header/page-header-breadcrumb.d.ts +7 -0
  95. package/es/components/page-header/page-header-breadcrumb.d.ts.map +1 -1
  96. package/es/components/page-header/page-header-breadcrumb.js +7 -0
  97. package/es/components/page-header/page-header-breadcrumb.js.map +1 -1
  98. package/es/components/page-header/page-header-content-text.d.ts +7 -0
  99. package/es/components/page-header/page-header-content-text.d.ts.map +1 -1
  100. package/es/components/page-header/page-header-content-text.js +7 -0
  101. package/es/components/page-header/page-header-content-text.js.map +1 -1
  102. package/es/components/page-header/page-header-content.d.ts +7 -0
  103. package/es/components/page-header/page-header-content.d.ts.map +1 -1
  104. package/es/components/page-header/page-header-content.js +7 -0
  105. package/es/components/page-header/page-header-content.js.map +1 -1
  106. package/es/components/page-header/page-header-hero-image.d.ts +7 -0
  107. package/es/components/page-header/page-header-hero-image.d.ts.map +1 -1
  108. package/es/components/page-header/page-header-hero-image.js +7 -0
  109. package/es/components/page-header/page-header-hero-image.js.map +1 -1
  110. package/es/components/page-header/page-header-tabs.d.ts +7 -0
  111. package/es/components/page-header/page-header-tabs.d.ts.map +1 -1
  112. package/es/components/page-header/page-header-tabs.js +7 -0
  113. package/es/components/page-header/page-header-tabs.js.map +1 -1
  114. package/es/components/page-header/page-header.d.ts +7 -0
  115. package/es/components/page-header/page-header.d.ts.map +1 -1
  116. package/es/components/page-header/page-header.js +7 -0
  117. package/es/components/page-header/page-header.js.map +1 -1
  118. package/es/components/page-header/page-header.scss.js +1 -1
  119. package/es/components/page-header/page-header.scss.js.map +1 -1
  120. package/es/components/pagination/pagination.scss.js +1 -1
  121. package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
  122. package/es/components/password-input/password-input.scss.js +1 -1
  123. package/es/components/popover/popover.scss.js +1 -1
  124. package/es/components/progress-bar/progress-bar.scss.js +1 -1
  125. package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
  126. package/es/components/radio-button/radio-button.scss.js +1 -1
  127. package/es/components/search/search.d.ts +4 -0
  128. package/es/components/search/search.d.ts.map +1 -1
  129. package/es/components/search/search.js +4 -1
  130. package/es/components/search/search.js.map +1 -1
  131. package/es/components/search/search.scss.js +1 -1
  132. package/es/components/select/select.scss.js +1 -1
  133. package/es/components/shape-indicator/shape-indicator.scss.js +1 -1
  134. package/es/components/side-panel/side-panel.d.ts +1 -1
  135. package/es/components/side-panel/side-panel.js +1 -1
  136. package/es/components/side-panel/side-panel.js.map +1 -1
  137. package/es/components/skeleton-icon/skeleton-icon.scss.js +1 -1
  138. package/es/components/skeleton-placeholder/skeleton-placeholder.scss.js +1 -1
  139. package/es/components/skeleton-text/skeleton-text.scss.js +1 -1
  140. package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
  141. package/es/components/slider/slider.scss.js +1 -1
  142. package/es/components/slug/slug.scss.js +1 -1
  143. package/es/components/stack/stack.scss.js +1 -1
  144. package/es/components/structured-list/structured-list.scss.js +1 -1
  145. package/es/components/tabs/stories/tabs-wrapper.d.ts +4 -0
  146. package/es/components/tabs/stories/tabs-wrapper.d.ts.map +1 -1
  147. package/es/components/tabs/stories/tabs-wrapper.js +22 -10
  148. package/es/components/tabs/stories/tabs-wrapper.js.map +1 -1
  149. package/es/components/tabs/tab.d.ts +34 -1
  150. package/es/components/tabs/tab.d.ts.map +1 -1
  151. package/es/components/tabs/tab.js +36 -3
  152. package/es/components/tabs/tab.js.map +1 -1
  153. package/es/components/tabs/tabs.d.ts +12 -0
  154. package/es/components/tabs/tabs.d.ts.map +1 -1
  155. package/es/components/tabs/tabs.js +36 -10
  156. package/es/components/tabs/tabs.js.map +1 -1
  157. package/es/components/tabs/tabs.scss.js +1 -1
  158. package/es/components/tabs/tabs.scss.js.map +1 -1
  159. package/es/components/tag/tag.scss.js +1 -1
  160. package/es/components/tearsheet/tearsheet.d.ts +1 -1
  161. package/es/components/tearsheet/tearsheet.js +1 -1
  162. package/es/components/tearsheet/tearsheet.js.map +1 -1
  163. package/es/components/text-input/text-input.scss.js +1 -1
  164. package/es/components/textarea/textarea.scss.js +1 -1
  165. package/es/components/tile/clickable-tile.d.ts +1 -1
  166. package/es/components/tile/clickable-tile.d.ts.map +1 -1
  167. package/es/components/tile/clickable-tile.js +6 -1
  168. package/es/components/tile/clickable-tile.js.map +1 -1
  169. package/es/components/tile/radio-tile.d.ts +4 -1
  170. package/es/components/tile/radio-tile.d.ts.map +1 -1
  171. package/es/components/tile/radio-tile.js +23 -6
  172. package/es/components/tile/radio-tile.js.map +1 -1
  173. package/es/components/tile/tile.scss.js +1 -1
  174. package/es/components/tile/tile.scss.js.map +1 -1
  175. package/es/components/time-picker/time-picker.scss.js +1 -1
  176. package/es/components/toggle/toggle.scss.js +1 -1
  177. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  178. package/es/components/tooltip/tooltip.scss.js +1 -1
  179. package/es/components/tree-view/tree-view.scss.js +1 -1
  180. package/es/components/ui-shell/header.scss.js +1 -1
  181. package/es/components/ui-shell/side-nav.scss.js +1 -1
  182. package/es/globals/decorators/carbon-element.js.map +1 -1
  183. package/es/index.js +1 -1
  184. package/es-custom/components/accordion/accordion.scss.js +1 -1
  185. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  186. package/es-custom/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  187. package/es-custom/components/badge-indicator/badge-indicator.scss.js +1 -1
  188. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  189. package/es-custom/components/button/button.d.ts +1 -1
  190. package/es-custom/components/button/button.js +1 -1
  191. package/es-custom/components/button/button.js.map +1 -1
  192. package/es-custom/components/button/button.scss.js +1 -1
  193. package/es-custom/components/checkbox/checkbox.scss.js +1 -1
  194. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  195. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  196. package/es-custom/components/combo-button/combo-button.scss.js +1 -1
  197. package/es-custom/components/contained-list/contained-list.scss.js +1 -1
  198. package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
  199. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  200. package/es-custom/components/data-table/data-table.scss.js +1 -1
  201. package/es-custom/components/date-picker/date-picker.scss.js +1 -1
  202. package/es-custom/components/date-picker/date-picker.scss.js.map +1 -1
  203. package/es-custom/components/dialog/dialog-body.js +1 -1
  204. package/es-custom/components/dialog/dialog-close-button.js +1 -1
  205. package/es-custom/components/dialog/dialog-footer.js +1 -1
  206. package/es-custom/components/dialog/dialog-subtitle.js +1 -1
  207. package/es-custom/components/dialog/dialog-title.js +1 -1
  208. package/es-custom/components/dialog/dialog.d.ts +18 -7
  209. package/es-custom/components/dialog/dialog.d.ts.map +1 -1
  210. package/es-custom/components/dialog/dialog.js +51 -17
  211. package/es-custom/components/dialog/dialog.js.map +1 -1
  212. package/es-custom/components/dialog/dialog.scss.js +1 -1
  213. package/es-custom/components/dialog/dialog.scss.js.map +1 -1
  214. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  215. package/es-custom/components/feature-flags/index.d.ts.map +1 -1
  216. package/es-custom/components/feature-flags/index.js +8 -3
  217. package/es-custom/components/feature-flags/index.js.map +1 -1
  218. package/es-custom/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  219. package/es-custom/components/file-uploader/file-uploader-button.js +3 -2
  220. package/es-custom/components/file-uploader/file-uploader-button.js.map +1 -1
  221. package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts +1 -1
  222. package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  223. package/es-custom/components/file-uploader/file-uploader-drop-container.js +3 -2
  224. package/es-custom/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  225. package/es-custom/components/file-uploader/file-uploader-item.d.ts +4 -0
  226. package/es-custom/components/file-uploader/file-uploader-item.d.ts.map +1 -1
  227. package/es-custom/components/file-uploader/file-uploader-item.js +6 -0
  228. package/es-custom/components/file-uploader/file-uploader-item.js.map +1 -1
  229. package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
  230. package/es-custom/components/file-uploader/file-uploader.scss.js.map +1 -1
  231. package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  232. package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  233. package/es-custom/components/fluid-form/fluid-form.scss.js +1 -1
  234. package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  235. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  236. package/es-custom/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  237. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  238. package/es-custom/components/fluid-select/fluid-select.scss.js +1 -1
  239. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  240. package/es-custom/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  241. package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  242. package/es-custom/components/form/form-item.scss.js +1 -1
  243. package/es-custom/components/form/form.scss.js +1 -1
  244. package/es-custom/components/form-group/form-group.scss.js +1 -1
  245. package/es-custom/components/heading/heading.scss.js +1 -1
  246. package/es-custom/components/icon-button/icon-button.scss.js +1 -1
  247. package/es-custom/components/icon-indicator/icon-indicator.scss.js +1 -1
  248. package/es-custom/components/inline-loading/inline-loading.scss.js +1 -1
  249. package/es-custom/components/link/link.d.ts +1 -1
  250. package/es-custom/components/link/link.d.ts.map +1 -1
  251. package/es-custom/components/link/link.js.map +1 -1
  252. package/es-custom/components/link/link.scss.js +1 -1
  253. package/es-custom/components/list/list.scss.js +1 -1
  254. package/es-custom/components/loading/loading.scss.js +1 -1
  255. package/es-custom/components/menu/menu-item.scss.js +1 -1
  256. package/es-custom/components/menu/menu.scss.js +1 -1
  257. package/es-custom/components/menu-button/menu-button.scss.js +1 -1
  258. package/es-custom/components/modal/modal-base.d.ts +144 -0
  259. package/es-custom/components/modal/modal-base.d.ts.map +1 -0
  260. package/es-custom/components/modal/modal-base.js +229 -0
  261. package/es-custom/components/modal/modal-base.js.map +1 -0
  262. package/es-custom/components/modal/modal.d.ts +15 -89
  263. package/es-custom/components/modal/modal.d.ts.map +1 -1
  264. package/es-custom/components/modal/modal.js +66 -169
  265. package/es-custom/components/modal/modal.js.map +1 -1
  266. package/es-custom/components/modal/modal.scss.js +1 -1
  267. package/es-custom/components/modal/modal.scss.js.map +1 -1
  268. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  269. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  270. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  271. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  272. package/es-custom/components/number-input/number-input.scss.js +1 -1
  273. package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
  274. package/es-custom/components/page-header/index.d.ts +4 -0
  275. package/es-custom/components/page-header/index.d.ts.map +1 -1
  276. package/es-custom/components/page-header/page-header-breadcrumb.d.ts +7 -0
  277. package/es-custom/components/page-header/page-header-breadcrumb.d.ts.map +1 -1
  278. package/es-custom/components/page-header/page-header-breadcrumb.js +7 -0
  279. package/es-custom/components/page-header/page-header-breadcrumb.js.map +1 -1
  280. package/es-custom/components/page-header/page-header-content-text.d.ts +7 -0
  281. package/es-custom/components/page-header/page-header-content-text.d.ts.map +1 -1
  282. package/es-custom/components/page-header/page-header-content-text.js +7 -0
  283. package/es-custom/components/page-header/page-header-content-text.js.map +1 -1
  284. package/es-custom/components/page-header/page-header-content.d.ts +7 -0
  285. package/es-custom/components/page-header/page-header-content.d.ts.map +1 -1
  286. package/es-custom/components/page-header/page-header-content.js +7 -0
  287. package/es-custom/components/page-header/page-header-content.js.map +1 -1
  288. package/es-custom/components/page-header/page-header-hero-image.d.ts +7 -0
  289. package/es-custom/components/page-header/page-header-hero-image.d.ts.map +1 -1
  290. package/es-custom/components/page-header/page-header-hero-image.js +7 -0
  291. package/es-custom/components/page-header/page-header-hero-image.js.map +1 -1
  292. package/es-custom/components/page-header/page-header-tabs.d.ts +7 -0
  293. package/es-custom/components/page-header/page-header-tabs.d.ts.map +1 -1
  294. package/es-custom/components/page-header/page-header-tabs.js +7 -0
  295. package/es-custom/components/page-header/page-header-tabs.js.map +1 -1
  296. package/es-custom/components/page-header/page-header.d.ts +7 -0
  297. package/es-custom/components/page-header/page-header.d.ts.map +1 -1
  298. package/es-custom/components/page-header/page-header.js +7 -0
  299. package/es-custom/components/page-header/page-header.js.map +1 -1
  300. package/es-custom/components/page-header/page-header.scss.js +1 -1
  301. package/es-custom/components/page-header/page-header.scss.js.map +1 -1
  302. package/es-custom/components/pagination/pagination.scss.js +1 -1
  303. package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
  304. package/es-custom/components/password-input/password-input.scss.js +1 -1
  305. package/es-custom/components/popover/popover.scss.js +1 -1
  306. package/es-custom/components/progress-bar/progress-bar.scss.js +1 -1
  307. package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
  308. package/es-custom/components/radio-button/radio-button.scss.js +1 -1
  309. package/es-custom/components/search/search.d.ts +4 -0
  310. package/es-custom/components/search/search.d.ts.map +1 -1
  311. package/es-custom/components/search/search.js +4 -1
  312. package/es-custom/components/search/search.js.map +1 -1
  313. package/es-custom/components/search/search.scss.js +1 -1
  314. package/es-custom/components/select/select.scss.js +1 -1
  315. package/es-custom/components/shape-indicator/shape-indicator.scss.js +1 -1
  316. package/es-custom/components/side-panel/side-panel.d.ts +1 -1
  317. package/es-custom/components/side-panel/side-panel.js +1 -1
  318. package/es-custom/components/side-panel/side-panel.js.map +1 -1
  319. package/es-custom/components/skeleton-icon/skeleton-icon.scss.js +1 -1
  320. package/es-custom/components/skeleton-placeholder/skeleton-placeholder.scss.js +1 -1
  321. package/es-custom/components/skeleton-text/skeleton-text.scss.js +1 -1
  322. package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
  323. package/es-custom/components/slider/slider.scss.js +1 -1
  324. package/es-custom/components/slug/slug.scss.js +1 -1
  325. package/es-custom/components/stack/stack.scss.js +1 -1
  326. package/es-custom/components/structured-list/structured-list.scss.js +1 -1
  327. package/es-custom/components/tabs/stories/tabs-wrapper.d.ts +4 -0
  328. package/es-custom/components/tabs/stories/tabs-wrapper.d.ts.map +1 -1
  329. package/es-custom/components/tabs/stories/tabs-wrapper.js +22 -10
  330. package/es-custom/components/tabs/stories/tabs-wrapper.js.map +1 -1
  331. package/es-custom/components/tabs/tab.d.ts +34 -1
  332. package/es-custom/components/tabs/tab.d.ts.map +1 -1
  333. package/es-custom/components/tabs/tab.js +36 -3
  334. package/es-custom/components/tabs/tab.js.map +1 -1
  335. package/es-custom/components/tabs/tabs.d.ts +12 -0
  336. package/es-custom/components/tabs/tabs.d.ts.map +1 -1
  337. package/es-custom/components/tabs/tabs.js +36 -10
  338. package/es-custom/components/tabs/tabs.js.map +1 -1
  339. package/es-custom/components/tabs/tabs.scss.js +1 -1
  340. package/es-custom/components/tabs/tabs.scss.js.map +1 -1
  341. package/es-custom/components/tag/tag.scss.js +1 -1
  342. package/es-custom/components/tearsheet/tearsheet.d.ts +1 -1
  343. package/es-custom/components/tearsheet/tearsheet.js +1 -1
  344. package/es-custom/components/tearsheet/tearsheet.js.map +1 -1
  345. package/es-custom/components/text-input/text-input.scss.js +1 -1
  346. package/es-custom/components/textarea/textarea.scss.js +1 -1
  347. package/es-custom/components/tile/clickable-tile.d.ts +1 -1
  348. package/es-custom/components/tile/clickable-tile.d.ts.map +1 -1
  349. package/es-custom/components/tile/clickable-tile.js +6 -1
  350. package/es-custom/components/tile/clickable-tile.js.map +1 -1
  351. package/es-custom/components/tile/radio-tile.d.ts +4 -1
  352. package/es-custom/components/tile/radio-tile.d.ts.map +1 -1
  353. package/es-custom/components/tile/radio-tile.js +23 -6
  354. package/es-custom/components/tile/radio-tile.js.map +1 -1
  355. package/es-custom/components/tile/tile.scss.js +1 -1
  356. package/es-custom/components/tile/tile.scss.js.map +1 -1
  357. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  358. package/es-custom/components/toggle/toggle.scss.js +1 -1
  359. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  360. package/es-custom/components/tooltip/tooltip.scss.js +1 -1
  361. package/es-custom/components/tree-view/tree-view.scss.js +1 -1
  362. package/es-custom/components/ui-shell/header.scss.js +1 -1
  363. package/es-custom/components/ui-shell/side-nav.scss.js +1 -1
  364. package/es-custom/globals/decorators/carbon-element.js.map +1 -1
  365. package/es-custom/index.js +1 -1
  366. package/lib/components/button/button.d.ts +1 -1
  367. package/lib/components/dialog/dialog.d.ts +18 -7
  368. package/lib/components/dialog/dialog.d.ts.map +1 -1
  369. package/lib/components/feature-flags/index.d.ts.map +1 -1
  370. package/lib/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  371. package/lib/components/file-uploader/file-uploader-drop-container.d.ts +1 -1
  372. package/lib/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  373. package/lib/components/file-uploader/file-uploader-item.d.ts +4 -0
  374. package/lib/components/file-uploader/file-uploader-item.d.ts.map +1 -1
  375. package/lib/components/link/link.d.ts +1 -1
  376. package/lib/components/link/link.d.ts.map +1 -1
  377. package/lib/components/modal/modal-base.d.ts +144 -0
  378. package/lib/components/modal/modal-base.d.ts.map +1 -0
  379. package/lib/components/modal/modal.d.ts +15 -89
  380. package/lib/components/modal/modal.d.ts.map +1 -1
  381. package/lib/components/page-header/index.d.ts +4 -0
  382. package/lib/components/page-header/index.d.ts.map +1 -1
  383. package/lib/components/page-header/page-header-breadcrumb.d.ts +7 -0
  384. package/lib/components/page-header/page-header-breadcrumb.d.ts.map +1 -1
  385. package/lib/components/page-header/page-header-content-text.d.ts +7 -0
  386. package/lib/components/page-header/page-header-content-text.d.ts.map +1 -1
  387. package/lib/components/page-header/page-header-content.d.ts +7 -0
  388. package/lib/components/page-header/page-header-content.d.ts.map +1 -1
  389. package/lib/components/page-header/page-header-hero-image.d.ts +7 -0
  390. package/lib/components/page-header/page-header-hero-image.d.ts.map +1 -1
  391. package/lib/components/page-header/page-header-tabs.d.ts +7 -0
  392. package/lib/components/page-header/page-header-tabs.d.ts.map +1 -1
  393. package/lib/components/page-header/page-header.d.ts +7 -0
  394. package/lib/components/page-header/page-header.d.ts.map +1 -1
  395. package/lib/components/search/search.d.ts +4 -0
  396. package/lib/components/search/search.d.ts.map +1 -1
  397. package/lib/components/side-panel/side-panel.d.ts +1 -1
  398. package/lib/components/tabs/stories/tabs-wrapper.d.ts +4 -0
  399. package/lib/components/tabs/stories/tabs-wrapper.d.ts.map +1 -1
  400. package/lib/components/tabs/tab.d.ts +34 -1
  401. package/lib/components/tabs/tab.d.ts.map +1 -1
  402. package/lib/components/tabs/tabs.d.ts +12 -0
  403. package/lib/components/tabs/tabs.d.ts.map +1 -1
  404. package/lib/components/tearsheet/tearsheet.d.ts +1 -1
  405. package/lib/components/tile/clickable-tile.d.ts +1 -1
  406. package/lib/components/tile/clickable-tile.d.ts.map +1 -1
  407. package/lib/components/tile/radio-tile.d.ts +4 -1
  408. package/lib/components/tile/radio-tile.d.ts.map +1 -1
  409. package/package.json +9 -9
  410. package/scss/components/date-picker/date-picker.scss +2 -1
  411. package/scss/components/dialog/dialog.scss +10 -4
  412. package/scss/components/file-uploader/file-uploader.scss +4 -0
  413. package/scss/components/modal/modal.scss +28 -1
  414. package/scss/components/page-header/page-header.scss +2 -0
  415. package/scss/components/tabs/tabs.scss +121 -1
  416. package/scss/components/tile/tile.scss +67 -1
  417. package/telemetry.yml +10 -6
@@ -43,13 +43,13 @@ let FeatureFlagsElement = class FeatureFlagsElement extends LitElement {
43
43
  }
44
44
  static {
45
45
  this.flagComponentMap = {
46
- "enable-v12-tile-default-icons": "CDS-TILE",
46
+ "enable-v12-tile-default-icons": "CDS-CLICKABLE-TILE",
47
47
  "enable-v12-tile-radio-icons": "CDS-TILE",
48
48
  "enable-v12-overflowmenu": "CDS-OVERFLOW-MENU",
49
49
  "enable-treeview-controllable": "CDS-TREEVIEW",
50
50
  "enable-experimental-focus-wrap-without-sentinels": "CDS-FOCUS-WRAP",
51
51
  "enable-focus-wrap-without-sentinels": "CDS-FOCUS-WRAP",
52
- "enable-dialog-element": "CDS-DIALOG",
52
+ "enable-dialog-element": "CDS-MODAL",
53
53
  "enable-v12-dynamic-floating-styles": "CDS-FLOATING",
54
54
  "enable-v12-toggle-reduced-label-spacing": "CDS-TOGGLE"
55
55
  };
@@ -68,7 +68,7 @@ let FeatureFlagsElement = class FeatureFlagsElement extends LitElement {
68
68
  this.updateScope();
69
69
  }
70
70
  attributeChangedCallback(name, _oldVal, newVal) {
71
- const value = newVal === "true";
71
+ const value = newVal !== null && newVal !== "false";
72
72
  this.flags[name] = value;
73
73
  const relatedComponent = hasOwn(_FeatureFlagsElement.flagComponentMap, name) ? _FeatureFlagsElement.flagComponentMap[name] : "unknown";
74
74
  if (this.firstElementChild?.tagName === relatedComponent) this.firstElementChild.setAttribute(name, "");
@@ -92,6 +92,7 @@ let FeatureFlagsElement = class FeatureFlagsElement extends LitElement {
92
92
  return html` <slot></slot> `;
93
93
  }
94
94
  isFeatureFlagEnabled(flag) {
95
+ if (Object.prototype.hasOwnProperty.call(this.flags, flag)) return this.flags[flag];
95
96
  return this.scope.enabled(flag);
96
97
  }
97
98
  getScope() {
@@ -103,6 +104,10 @@ var feature_flags_default = FeatureFlagsElement;
103
104
  function findParentFeatureFlags(el) {
104
105
  let parent = el.parentNode;
105
106
  while (parent) {
107
+ if (parent instanceof ShadowRoot) {
108
+ parent = parent.host;
109
+ continue;
110
+ }
106
111
  if (parent instanceof FeatureFlagsElement) return parent;
107
112
  parent = parent.parentNode;
108
113
  }
@@ -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-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-DIALOG',\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 === 'true';\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 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 = el.parentNode;\n while (parent) {\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,IAAI;AAEhD,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;GAC5C;;CAED,WAAW,qBAAqB;AAC9B,SAAO,OAAO,KAAA,qBAAyB,iBAAiB;;CAG1D,cAAc;AACZ,SAAO;eAvBOA;eACc,EAAE;AAuB9B,OAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;;CAGrC,oBAAoB;AAClB,QAAM,mBAAmB;AACzB,OAAK,aAAa;;CAGpB,yBACE,MACA,SACA,QACA;EACA,MAAM,QAAQ,WAAW;AACzB,OAAK,MAAM,QAAQ;EAGnB,MAAM,mBAAmB,OAAA,qBAA2B,kBAAkB,KAAK,GAAA,qBACnD,iBAAiB,QACrC;AACJ,MAAI,KAAK,mBAAmB,YAAY,iBACtC,MAAK,kBAAkB,aAAa,MAAM,GAAG;AAG/C,OAAK,aAAa;;CAGpB,iBAAyB;EACvB,IAAI,SAAS,KAAK;AAClB,SAAO,QAAQ;AACb,OAAI,kBAAA,qBACF,QAAO,OAAO,UAAU;AAE1B,YAAS,OAAO;;AAElB,SAAO;;CAGT,cAAsB;EACpB,MAAM,WAAW,YAAY,KAAK,MAAM;EACxC,MAAM,cAAc,KAAK,gBAAgB,IAAIA;AAC7C,MAAI,YACF,UAAS,eAAe,YAAY;AAEtC,OAAK,QAAQ;;CAGf,SAAS;AACP,SAAO,IAAI;;CAGb,qBAA4B,MAAc;AACxC,SAAO,KAAK,MAAM,QAAQ,KAAK;;CAGjC,WAAmB;AACjB,SAAO,KAAK;;;yDAlFfC,cAAc,gBAAgB,CAAA,EAAA,oBAAA;AAsF/B,IAAA,wBAAe;AAKf,SAAgB,uBACd,IAC4B;CAC5B,IAAI,SAAS,GAAG;AAChB,QAAO,QAAQ;AACb,MAAI,kBAAkB,oBACpB,QAAO;AAET,WAAU,OAAuB;;AAEnC,QAAO;;AAIT,SAAgB,qBACd,MACA,SACS;AAET,QADiB,uBAAuB,QAAQ,EAC/B,qBAAqB,KAAK,IAAI"}
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,IAAI;AAEhD,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;GAC5C;;CAED,WAAW,qBAAqB;AAC9B,SAAO,OAAO,KAAA,qBAAyB,iBAAiB;;CAG1D,cAAc;AACZ,SAAO;eAvBOA;eACc,EAAE;AAuB9B,OAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;;CAGrC,oBAAoB;AAClB,QAAM,mBAAmB;AACzB,OAAK,aAAa;;CAGpB,yBACE,MACA,SACA,QACA;EACA,MAAM,QAAQ,WAAW,QAAQ,WAAW;AAC5C,OAAK,MAAM,QAAQ;EAGnB,MAAM,mBAAmB,OAAA,qBAA2B,kBAAkB,KAAK,GAAA,qBACnD,iBAAiB,QACrC;AACJ,MAAI,KAAK,mBAAmB,YAAY,iBACtC,MAAK,kBAAkB,aAAa,MAAM,GAAG;AAG/C,OAAK,aAAa;;CAGpB,iBAAyB;EACvB,IAAI,SAAS,KAAK;AAClB,SAAO,QAAQ;AACb,OAAI,kBAAA,qBACF,QAAO,OAAO,UAAU;AAE1B,YAAS,OAAO;;AAElB,SAAO;;CAGT,cAAsB;EACpB,MAAM,WAAW,YAAY,KAAK,MAAM;EACxC,MAAM,cAAc,KAAK,gBAAgB,IAAIA;AAC7C,MAAI,YACF,UAAS,eAAe,YAAY;AAEtC,OAAK,QAAQ;;CAGf,SAAS;AACP,SAAO,IAAI;;CAGb,qBAA4B,MAAc;AACxC,MAAI,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,KAAK,CACxD,QAAO,KAAK,MAAM;AAEpB,SAAO,KAAK,MAAM,QAAQ,KAAK;;CAGjC,WAAmB;AACjB,SAAO,KAAK;;;yDArFfC,cAAc,gBAAgB,CAAA,EAAA,oBAAA;AAyF/B,IAAA,wBAAe;AAKf,SAAgB,uBACd,IAC4B;CAC5B,IAAI,SAAsB,GAAG;AAC7B,QAAO,QAAQ;AACb,MAAI,kBAAkB,YAAY;AAChC,YAAS,OAAO;AAChB;;AAEF,MAAI,kBAAkB,oBACpB,QAAO;AAET,WAAU,OAAuB;;AAEnC,QAAO;;AAIT,SAAgB,qBACd,MACA,SACS;AAET,QADiB,uBAAuB,QAAQ,EAC/B,qBAAqB,KAAK,IAAI"}
@@ -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;IA4CN;;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;;;;;;;;;;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"}
@@ -83,7 +83,7 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
83
83
  const { files } = (event.type === "drop" ? event.dataTransfer : event.target) ?? {};
84
84
  const { accept } = this;
85
85
  if (!accept || !/^(change|drop)$/.test(event.type)) return Array.from(files ?? []);
86
- const acceptedTypes = new Set(accept.split(" "));
86
+ const acceptedTypes = new Set(accept.split(/[\s,]+/).filter(Boolean));
87
87
  return Array.prototype.filter.call(files, ({ name, type: mimeType = "" }) => {
88
88
  const fileExtensionRegExp = /\.[^.]+$/;
89
89
  const [fileExtension] = !fileExtensionRegExp.test(name) ? [void 0] : fileExtensionRegExp.exec(name) ?? [];
@@ -92,6 +92,7 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
92
92
  }
93
93
  render() {
94
94
  const { accept, disabled, multiple, name, buttonKind, size, _handleChange: handleChange } = this;
95
+ const acceptForInput = accept ? accept.split(/[\s,]+/).filter(Boolean).join(",") : "";
95
96
  const labelClasses = classMap({
96
97
  [`cds--file-browse-btn`]: true,
97
98
  [`cds--file-browse-btn--disabled`]: disabled
@@ -116,7 +117,7 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
116
117
  type="file"
117
118
  class="${"cds"}--file-input"
118
119
  tabindex="-1"
119
- accept="${if_non_empty_default(accept)}"
120
+ accept="${if_non_empty_default(acceptForInput)}"
120
121
  ?disabled="${disabled}"
121
122
  ?multiple="${multiple}"
122
123
  name="${if_non_empty_default(name)}"
@@ -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(' '));\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\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(accept)}\"\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 } 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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"}
@@ -49,7 +49,7 @@ declare class CDSFileUploaderDropContainer extends CDSFileUploaderDropContainer_
49
49
  */
50
50
  private _getFiles;
51
51
  /**
52
- * The file types the file input should accept, separated by space.
52
+ * The file types the file input should accept, separated by spaces and/or commas.
53
53
  */
54
54
  accept: string;
55
55
  /**
@@ -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;IAoCN;;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;;;;;;;;;;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"}
@@ -85,7 +85,7 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
85
85
  _getFiles(event, files) {
86
86
  const { accept } = this;
87
87
  if (!accept || !/^(change|drop)$/.test(event.type)) return Array.from(files ?? []);
88
- const acceptedTypes = new Set(accept.split(" "));
88
+ const acceptedTypes = new Set(accept.split(/[\s,]+/).filter(Boolean));
89
89
  return Array.prototype.filter.call(files, ({ name, type: mimeType = "" }) => {
90
90
  const fileExtensionRegExp = /\.[^.]+$/;
91
91
  const [fileExtension] = !fileExtensionRegExp.test(name) ? [void 0] : fileExtensionRegExp.exec(name) ?? [];
@@ -94,6 +94,7 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
94
94
  }
95
95
  render() {
96
96
  const { accept, disabled, multiple, name, _active: active, _handleChange: handleChange } = this;
97
+ const acceptForInput = accept ? accept.split(/[\s,]+/).filter(Boolean).join(",") : "";
97
98
  return html`
98
99
  <label class="${classMap({
99
100
  [`cds--file-browse-btn`]: true,
@@ -110,7 +111,7 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
110
111
  name="${if_non_empty_default(name)}"
111
112
  class="${"cds"}--file-input"
112
113
  tabindex="-1"
113
- accept="${if_non_empty_default(accept)}"
114
+ accept="${if_non_empty_default(acceptForInput)}"
114
115
  ?disabled="${disabled}"
115
116
  ?multiple="${multiple}"
116
117
  @change="${handleChange}" />
@@ -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(' '));\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 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 _active: active,\n _handleChange: handleChange,\n } = this;\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(accept)}\"\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,cAAc;CAClB,UAAU;CACV,WAAW;CACZ;;;;;;;AAQD,IAAA,+BAAA,MACM,qCAAqC,kBAAkB,WAAW,CAAC;;;iBAIrD;gBA0FT;kBAME;kBAOA;cAMJ;cAMA;;;;;;;CA5GP,cAAsB,OAA0B;EAC9C,MAAM,EAAE,aAAa,kBAAkB,KACpC;EACH,MAAM,EAAE,WACL,MAAM,SAAS,SACX,MAAoB,eACpB,MAAM,WAAgC,EAAE;EAC/C,MAAM,aAAa,KAAK,UAAU,OAAO,MAAM;AAE/C,OAAK,cACH,IAAI,YAAY,aAAa;GAC3B,SAAS;GACT,UAAU;GACV,QAAQ,EACN,YACD;GACF,CAAC,CACH;EAED,MAAM,YAAY,MAAM,YAAY,cAAc,cAAc;AAChE,MAAI,UACD,WAA+B,QAAQ;;;;;;;CAS5C,YAKoB,OAAkB;AACpC,QAAM,gBAAgB;AACtB,MAAI,KAAK,SACP;EAEF,MAAM,EAAE,cAAc,SAAS;EAC/B,MAAM,aAAa,YAAY;AAC/B,MAAI,gBAAgB,WAClB,cAAa,aAAa;AAE5B,OAAK,UAAU,SAAS;AACxB,MAAI,SAAS,OACX,MAAK,cAAc,MAAM;AAE3B,OAAK,eAAe;;;;;;CAOtB,UAAkB,OAAO,OAAO;EAC9B,MAAM,EAAE,WAAW;AACnB,MAAI,CAAC,UAAU,CAAC,kBAAkB,KAAK,MAAM,KAAK,CAChD,QAAO,MAAM,KAAK,SAAS,EAAE,CAAC;EAEhC,MAAM,gBAAgB,IAAI,IAAI,OAAO,MAAM,IAAI,CAAC;AAChD,SAAO,MAAM,UAAU,OAAO,KAC5B,QACC,EAAE,MAAM,MAAM,WAAW,SAAS;GACjC,MAAM,sBAAsB;GAE5B,MAAM,CAAC,iBAAiB,CADC,oBAAoB,KAAK,KAAK,GAEnD,CAAC,KAAA,EAAU,GACV,oBAAoB,KAAK,KAAK,IAAI,EAAE;AAEzC,UACE,cAAc,IAAI,SAAS,IAC1B,iBAAiB,cAAc,IAAI,cAAc;IAGvD;;CAkCH,SAAS;EACP,MAAM,EACJ,QACA,UACA,UACA,MACA,SAAS,QACT,eAAe,iBACb;AASJ,SAAO,IAAI;sBARU,SAAS;IAC3B,yBAA+B;IAC/B,mCAAyC;GAC3C,CAAC,CAM6B;sBALP,SAAS;IAC9B,8BAAoC;IACpC,yCAA+C;GACjD,CAAC,CAGgC;;;;;oBAKlBA,qBAAW,KAAK,CAAC;2BACT;;sBAENA,qBAAW,OAAO,CAAC;yBAChB,SAAS;yBACT,SAAS;uBACX,aAAa;;;;;;;;CASlC,WAAW,cAAc;AACvB,SAAO;;;;;CAMT,WAAW,gBAAgB;AACzB,SAAO;;;gBAGOC;;;;CAlIf,aAAa,WAAW;CACxB,aAAa,YAAY;CACzB,aAAa,OAAO;;YAkDpB,UAAU,CAAA,EAAA,6BAAA,WAAA,UAAA,KAAA,EAAA;YAMV,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,YAAA,KAAA,EAAA;YAO1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,YAAA,KAAA,EAAA;YAM1C,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,QAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,QAAA,KAAA,EAAA;2CAvH7BC,cAAc,mCAAyC,CAAA,EAAA,6BAAA;AA+KxD,IAAA,uCAAe"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,cAAc;CAClB,UAAU;CACV,WAAW;CACZ;;;;;;;AAQD,IAAA,+BAAA,MACM,qCAAqC,kBAAkB,WAAW,CAAC;;;iBAIrD;gBA0FT;kBAME;kBAOA;cAMJ;cAMA;;;;;;;CA5GP,cAAsB,OAA0B;EAC9C,MAAM,EAAE,aAAa,kBAAkB,KACpC;EACH,MAAM,EAAE,WACL,MAAM,SAAS,SACX,MAAoB,eACpB,MAAM,WAAgC,EAAE;EAC/C,MAAM,aAAa,KAAK,UAAU,OAAO,MAAM;AAE/C,OAAK,cACH,IAAI,YAAY,aAAa;GAC3B,SAAS;GACT,UAAU;GACV,QAAQ,EACN,YACD;GACF,CAAC,CACH;EAED,MAAM,YAAY,MAAM,YAAY,cAAc,cAAc;AAChE,MAAI,UACD,WAA+B,QAAQ;;;;;;;CAS5C,YAKoB,OAAkB;AACpC,QAAM,gBAAgB;AACtB,MAAI,KAAK,SACP;EAEF,MAAM,EAAE,cAAc,SAAS;EAC/B,MAAM,aAAa,YAAY;AAC/B,MAAI,gBAAgB,WAClB,cAAa,aAAa;AAE5B,OAAK,UAAU,SAAS;AACxB,MAAI,SAAS,OACX,MAAK,cAAc,MAAM;AAE3B,OAAK,eAAe;;;;;;CAOtB,UAAkB,OAAO,OAAO;EAC9B,MAAM,EAAE,WAAW;AACnB,MAAI,CAAC,UAAU,CAAC,kBAAkB,KAAK,MAAM,KAAK,CAChD,QAAO,MAAM,KAAK,SAAS,EAAE,CAAC;EAEhC,MAAM,gBAAgB,IAAI,IAAI,OAAO,MAAM,SAAS,CAAC,OAAO,QAAQ,CAAC;AACrE,SAAO,MAAM,UAAU,OAAO,KAC5B,QACC,EAAE,MAAM,MAAM,WAAW,SAAS;GACjC,MAAM,sBAAsB;GAE5B,MAAM,CAAC,iBAAiB,CADC,oBAAoB,KAAK,KAAK,GAEnD,CAAC,KAAA,EAAU,GACV,oBAAoB,KAAK,KAAK,IAAI,EAAE;AAEzC,UACE,cAAc,IAAI,SAAS,IAC1B,iBAAiB,cAAc,IAAI,cAAc;IAGvD;;CAkCH,SAAS;EACP,MAAM,EACJ,QACA,UACA,UACA,MACA,SAAS,QACT,eAAe,iBACb;EACJ,MAAM,iBAAiB,SACnB,OACG,MAAM,SAAS,CACf,OAAO,QAAQ,CACf,KAAK,IAAI,GACZ;AASJ,SAAO,IAAI;sBARU,SAAS;IAC3B,yBAA+B;IAC/B,mCAAyC;GAC3C,CAAC,CAM6B;sBALP,SAAS;IAC9B,8BAAoC;IACpC,yCAA+C;GACjD,CAAC,CAGgC;;;;;oBAKlBA,qBAAW,KAAK,CAAC;2BACT;;sBAENA,qBAAW,eAAe,CAAC;yBACxB,SAAS;yBACT,SAAS;uBACX,aAAa;;;;;;;;CASlC,WAAW,cAAc;AACvB,SAAO;;;;;CAMT,WAAW,gBAAgB;AACzB,SAAO;;;gBAGOC;;;;CAxIf,aAAa,WAAW;CACxB,aAAa,YAAY;CACzB,aAAa,OAAO;;YAkDpB,UAAU,CAAA,EAAA,6BAAA,WAAA,UAAA,KAAA,EAAA;YAMV,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,YAAA,KAAA,EAAA;YAO1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,YAAA,KAAA,EAAA;YAM1C,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,QAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,6BAAA,WAAA,QAAA,KAAA,EAAA;2CAvH7BC,cAAc,mCAAyC,CAAA,EAAA,6BAAA;AAqLxD,IAAA,uCAAe"}
@@ -47,6 +47,10 @@ declare class CDSFileUploaderItem extends LitElement {
47
47
  * Controls the invalid state and visibility of the `validityMessage`.
48
48
  */
49
49
  invalid: boolean;
50
+ /**
51
+ * Controls the disabled state of this file uploader item.
52
+ */
53
+ disabled: boolean;
50
54
  /**
51
55
  * The size of this file uploader item.
52
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-item.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAQvC,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAI3E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,cACM,mBAAoB,SAAQ,UAAU;IAC1C;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IAEH,eAAe,SAAsB;IAErC;;OAEG;IAEH,OAAO,UAAS;IAEhB;;OAEG;IAEH,IAAI,0BAAkC;IAEtC;;OAEG;IAEH,KAAK,2BAAsC;IAE3C;;OAEG;IAEH,YAAY,SAAM;IAElB;;OAEG;IAEH,SAAS,SAAM;IAEf,MAAM;IAkBN;;;OAGG;IACH,MAAM,KAAK,iBAAiB,WAE3B;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"file-uploader-item.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAQvC,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAI3E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,cACM,mBAAoB,SAAQ,UAAU;IAC1C;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IAEH,eAAe,SAAsB;IAErC;;OAEG;IAEH,OAAO,UAAS;IAEhB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,0BAAkC;IAEtC;;OAEG;IAEH,KAAK,2BAAsC;IAE3C;;OAEG;IAEH,YAAY,SAAM;IAElB;;OAEG;IAEH,SAAS,SAAM;IAEf,MAAM;IAkBN;;;OAGG;IACH,MAAM,KAAK,iBAAiB,WAE3B;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,mBAAmB,CAAC"}
@@ -41,6 +41,7 @@ let CDSFileUploaderItem = class CDSFileUploaderItem extends LitElement {
41
41
  super(..._args);
42
42
  this.iconDescription = "Delete this file";
43
43
  this.invalid = false;
44
+ this.disabled = false;
44
45
  this.size = "md";
45
46
  this.state = "uploading";
46
47
  this.errorSubject = "";
@@ -67,6 +68,7 @@ let CDSFileUploaderItem = class CDSFileUploaderItem extends LitElement {
67
68
  ${!invalid ? void 0 : iconLoader(WarningFilled16, { class: `cds--file-invalid` })}
68
69
  <button
69
70
  type="button"
71
+ ?disabled=${this.disabled}
70
72
  aria-label="${iconDescription}"
71
73
  class="${"cds"}--file-close"
72
74
  @click="${handleClickDeleteButton}">
@@ -146,6 +148,10 @@ __decorate([property({
146
148
  type: Boolean,
147
149
  reflect: true
148
150
  })], CDSFileUploaderItem.prototype, "invalid", void 0);
151
+ __decorate([property({
152
+ type: Boolean,
153
+ reflect: true
154
+ })], CDSFileUploaderItem.prototype, "disabled", void 0);
149
155
  __decorate([property({ reflect: true })], CDSFileUploaderItem.prototype, "size", void 0);
150
156
  __decorate([property({ reflect: true })], CDSFileUploaderItem.prototype, "state", void 0);
151
157
  __decorate([property({ attribute: "error-subject" })], CDSFileUploaderItem.prototype, "errorSubject", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-item.js","names":["styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 2023\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 } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport WarningFilled16 from '@carbon/icons/es/warning--filled/16.js';\nimport Close16 from '@carbon/icons/es/close/16.js';\nimport CheckmarkFilled16 from '@carbon/icons/es/checkmark--filled/16.js';\nimport { LOADING_TYPE } from '../loading/loading';\nimport { FILE_UPLOADER_ITEM_SIZE, FILE_UPLOADER_ITEM_STATE } from './defs';\nimport styles from './file-uploader.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { FILE_UPLOADER_ITEM_SIZE, FILE_UPLOADER_ITEM_STATE };\n\n/**\n * File uploader item.\n *\n * @element cds-file-uploader-item\n * @slot validity-message The validity message.\n * @slot validity-message-supplement The supplemental validity message.\n * @fires cds-file-uploader-item-beingdeleted\n * The custom event fired before this file uploader item is being deleted upon a user gesture.\n * Cancellation of this event stops the user-initiated action of deleting this file uploader item.\n * @fires cds-file-uploader-item-deleted - The custom event fired after this file uploader item is deleted upon a user gesture.\n */\n@customElement(`${prefix}-file-uploader-item`)\nclass CDSFileUploaderItem extends LitElement {\n /**\n * Handles `click` event on the delete button.\n */\n private _handleClickDeleteButton() {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n const { eventBeforeDelete, eventDelete } = this\n .constructor as typeof CDSFileUploaderItem;\n if (this.dispatchEvent(new CustomEvent(eventBeforeDelete, init))) {\n this.dispatchEvent(new CustomEvent(eventDelete, init));\n }\n }\n\n /**\n * @returns The content showing the editing UI of this file uploader item.\n */\n private _renderEditing() {\n const {\n iconDescription,\n invalid,\n _handleClickDeleteButton: handleClickDeleteButton,\n } = this;\n return html`\n ${!invalid\n ? undefined\n : iconLoader(WarningFilled16, { class: `${prefix}--file-invalid` })}\n <button\n type=\"button\"\n aria-label=\"${iconDescription}\"\n class=\"${prefix}--file-close\"\n @click=\"${handleClickDeleteButton}\">\n ${iconLoader(Close16)}\n </button>\n `;\n }\n\n /**\n * @returns The content showing this file uploader's file uploading status as in progress.\n */\n private _renderUploading() {\n const { iconDescription } = this;\n return html`\n <cds-loading\n assistive-text=\"${iconDescription}\"\n type=\"${LOADING_TYPE.SMALL}\"></cds-loading>\n `;\n }\n\n /**\n * @returns The content showing this file uploader's file uploading status as complete.\n */\n private _renderUploaded() {\n const { iconDescription } = this;\n return iconLoader(CheckmarkFilled16, {\n class: `${prefix}--file-complete`,\n 'aria-label': iconDescription,\n });\n }\n\n /**\n * @returns The content showing this file uploader's status.\n */\n private _renderStatus() {\n const { state } = this;\n switch (state) {\n case FILE_UPLOADER_ITEM_STATE.EDIT:\n return this._renderEditing();\n case FILE_UPLOADER_ITEM_STATE.UPLOADING:\n return this._renderUploading();\n case FILE_UPLOADER_ITEM_STATE.COMPLETE:\n return this._renderUploaded();\n default:\n return undefined;\n }\n }\n\n /**\n * The `aria-label` attribute for the icon to delete this file uploader item.\n */\n @property({ attribute: 'icon-description' })\n iconDescription = 'Delete this file';\n\n /**\n * Controls the invalid state and visibility of the `validityMessage`.\n */\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n /**\n * The size of this file uploader item.\n */\n @property({ reflect: true })\n size = FILE_UPLOADER_ITEM_SIZE.MEDIUM;\n\n /**\n * The state of this file uploader item.\n */\n @property({ reflect: true })\n state = FILE_UPLOADER_ITEM_STATE.UPLOADING;\n\n /**\n * The error subject text.\n */\n @property({ attribute: 'error-subject' })\n errorSubject = '';\n\n /**\n * The error body text\n */\n @property({ attribute: 'error-body' })\n errorBody = '';\n\n render() {\n const { invalid, errorSubject, errorBody } = this;\n return html` <p class=\"${prefix}--file-filename\"><slot></slot></p>\n <span class=\"${prefix}--file__state-container\"\n >${this._renderStatus()}</span\n >\n <div\n class=\"${prefix}--form-requirement\"\n ?hidden=\"${!invalid && !errorSubject}\">\n <div class=\"${prefix}--form-requirement__title\">${errorSubject}</div>\n <p\n class=\"${prefix}--form-requirement__supplement\"\n ?hidden=\"${!errorBody}\">\n ${errorBody}\n </p>\n </div>`;\n }\n\n /**\n * The name of the custom event fired before this file uplodaer item is being deleted upon a user gesture.\n * Cancellation of this event stops the user-initiated action of deleting this file uploader item.\n */\n static get eventBeforeDelete() {\n return `${prefix}-file-uploader-item-beingdeleted`;\n }\n\n /**\n * The name of the custom event fired after this file uplodaer item is deleted upon a user gesture.\n */\n static get eventDelete() {\n return `${prefix}-file-uploader-item-deleted`;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderItem;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAA,sBAAA,MACM,4BAA4B,WAAW;;;yBAoFzB;iBAMR;;;sBAkBK;mBAMH;;;;;CA9GZ,2BAAmC;EACjC,MAAM,OAAO;GACX,SAAS;GACT,YAAY;GACZ,UAAU;GACX;EACD,MAAM,EAAE,mBAAmB,gBAAgB,KACxC;AACH,MAAI,KAAK,cAAc,IAAI,YAAY,mBAAmB,KAAK,CAAC,CAC9D,MAAK,cAAc,IAAI,YAAY,aAAa,KAAK,CAAC;;;;;CAO1D,iBAAyB;EACvB,MAAM,EACJ,iBACA,SACA,0BAA0B,4BACxB;AACJ,SAAO,IAAI;QACP,CAAC,UACC,KAAA,IACA,WAAW,iBAAiB,EAAE,OAAO,qBAA2B,CAAC,CAAC;;;sBAGtD,gBAAgB;uBACd;kBACN,wBAAwB;UAChC,WAAW,QAAQ,CAAC;;;;;;;CAQ5B,mBAA2B;EACzB,MAAM,EAAE,oBAAoB;AAC5B,SAAO,IAAI;;0BAEW,gBAAgB;wBACP;;;;;;CAOjC,kBAA0B;EACxB,MAAM,EAAE,oBAAoB;AAC5B,SAAO,WAAW,mBAAmB;GACnC,OAAO;GACP,cAAc;GACf,CAAC;;;;;CAMJ,gBAAwB;EACtB,MAAM,EAAE,UAAU;AAClB,UAAQ,OAAR;GACE,KAAA,OACE,QAAO,KAAK,gBAAgB;GAC9B,KAAA,YACE,QAAO,KAAK,kBAAkB;GAChC,KAAA,WACE,QAAO,KAAK,iBAAiB;GAC/B,QACE;;;CAwCN,SAAS;EACP,MAAM,EAAE,SAAS,cAAc,cAAc;AAC7C,SAAO,IAAI,cAAA,MAAqB;2BACR;WACjB,KAAK,eAAe,CAAC;;;uBAGR;mBACL,CAAC,WAAW,CAAC,aAAa;4BAChB,6BAA6B,aAAa;;yBAE7C;qBACL,CAAC,UAAU;YACpB,UAAU;;;;;;;;CASpB,WAAW,oBAAoB;AAC7B,SAAO;;;;;CAMT,WAAW,cAAc;AACvB,SAAO;;;gBAGOA;;;YAlEf,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,oBAAA,WAAA,mBAAA,KAAA,EAAA;YAM3C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,oBAAA,WAAA,WAAA,KAAA,EAAA;YAM1C,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,oBAAA,WAAA,QAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,oBAAA,WAAA,SAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,oBAAA,WAAA,gBAAA,KAAA,EAAA;YAMxC,SAAS,EAAE,WAAW,cAAc,CAAC,CAAA,EAAA,oBAAA,WAAA,aAAA,KAAA,EAAA;kCAlHvCC,cAAc,yBAA+B,CAAA,EAAA,oBAAA;AAyJ9C,IAAA,6BAAe"}
1
+ {"version":3,"file":"file-uploader-item.js","names":["styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 2023\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 } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport WarningFilled16 from '@carbon/icons/es/warning--filled/16.js';\nimport Close16 from '@carbon/icons/es/close/16.js';\nimport CheckmarkFilled16 from '@carbon/icons/es/checkmark--filled/16.js';\nimport { LOADING_TYPE } from '../loading/loading';\nimport { FILE_UPLOADER_ITEM_SIZE, FILE_UPLOADER_ITEM_STATE } from './defs';\nimport styles from './file-uploader.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { FILE_UPLOADER_ITEM_SIZE, FILE_UPLOADER_ITEM_STATE };\n\n/**\n * File uploader item.\n *\n * @element cds-file-uploader-item\n * @slot validity-message The validity message.\n * @slot validity-message-supplement The supplemental validity message.\n * @fires cds-file-uploader-item-beingdeleted\n * The custom event fired before this file uploader item is being deleted upon a user gesture.\n * Cancellation of this event stops the user-initiated action of deleting this file uploader item.\n * @fires cds-file-uploader-item-deleted - The custom event fired after this file uploader item is deleted upon a user gesture.\n */\n@customElement(`${prefix}-file-uploader-item`)\nclass CDSFileUploaderItem extends LitElement {\n /**\n * Handles `click` event on the delete button.\n */\n private _handleClickDeleteButton() {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n const { eventBeforeDelete, eventDelete } = this\n .constructor as typeof CDSFileUploaderItem;\n if (this.dispatchEvent(new CustomEvent(eventBeforeDelete, init))) {\n this.dispatchEvent(new CustomEvent(eventDelete, init));\n }\n }\n\n /**\n * @returns The content showing the editing UI of this file uploader item.\n */\n private _renderEditing() {\n const {\n iconDescription,\n invalid,\n _handleClickDeleteButton: handleClickDeleteButton,\n } = this;\n return html`\n ${!invalid\n ? undefined\n : iconLoader(WarningFilled16, { class: `${prefix}--file-invalid` })}\n <button\n type=\"button\"\n ?disabled=${this.disabled}\n aria-label=\"${iconDescription}\"\n class=\"${prefix}--file-close\"\n @click=\"${handleClickDeleteButton}\">\n ${iconLoader(Close16)}\n </button>\n `;\n }\n\n /**\n * @returns The content showing this file uploader's file uploading status as in progress.\n */\n private _renderUploading() {\n const { iconDescription } = this;\n return html`\n <cds-loading\n assistive-text=\"${iconDescription}\"\n type=\"${LOADING_TYPE.SMALL}\"></cds-loading>\n `;\n }\n\n /**\n * @returns The content showing this file uploader's file uploading status as complete.\n */\n private _renderUploaded() {\n const { iconDescription } = this;\n return iconLoader(CheckmarkFilled16, {\n class: `${prefix}--file-complete`,\n 'aria-label': iconDescription,\n });\n }\n\n /**\n * @returns The content showing this file uploader's status.\n */\n private _renderStatus() {\n const { state } = this;\n switch (state) {\n case FILE_UPLOADER_ITEM_STATE.EDIT:\n return this._renderEditing();\n case FILE_UPLOADER_ITEM_STATE.UPLOADING:\n return this._renderUploading();\n case FILE_UPLOADER_ITEM_STATE.COMPLETE:\n return this._renderUploaded();\n default:\n return undefined;\n }\n }\n\n /**\n * The `aria-label` attribute for the icon to delete this file uploader item.\n */\n @property({ attribute: 'icon-description' })\n iconDescription = 'Delete this file';\n\n /**\n * Controls the invalid state and visibility of the `validityMessage`.\n */\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n /**\n * Controls the disabled state of this file uploader item.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * The size of this file uploader item.\n */\n @property({ reflect: true })\n size = FILE_UPLOADER_ITEM_SIZE.MEDIUM;\n\n /**\n * The state of this file uploader item.\n */\n @property({ reflect: true })\n state = FILE_UPLOADER_ITEM_STATE.UPLOADING;\n\n /**\n * The error subject text.\n */\n @property({ attribute: 'error-subject' })\n errorSubject = '';\n\n /**\n * The error body text\n */\n @property({ attribute: 'error-body' })\n errorBody = '';\n\n render() {\n const { invalid, errorSubject, errorBody } = this;\n return html` <p class=\"${prefix}--file-filename\"><slot></slot></p>\n <span class=\"${prefix}--file__state-container\"\n >${this._renderStatus()}</span\n >\n <div\n class=\"${prefix}--form-requirement\"\n ?hidden=\"${!invalid && !errorSubject}\">\n <div class=\"${prefix}--form-requirement__title\">${errorSubject}</div>\n <p\n class=\"${prefix}--form-requirement__supplement\"\n ?hidden=\"${!errorBody}\">\n ${errorBody}\n </p>\n </div>`;\n }\n\n /**\n * The name of the custom event fired before this file uplodaer item is being deleted upon a user gesture.\n * Cancellation of this event stops the user-initiated action of deleting this file uploader item.\n */\n static get eventBeforeDelete() {\n return `${prefix}-file-uploader-item-beingdeleted`;\n }\n\n /**\n * The name of the custom event fired after this file uplodaer item is deleted upon a user gesture.\n */\n static get eventDelete() {\n return `${prefix}-file-uploader-item-deleted`;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderItem;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAA,sBAAA,MACM,4BAA4B,WAAW;;;yBAqFzB;iBAMR;kBAMC;;;sBAkBI;mBAMH;;;;;CArHZ,2BAAmC;EACjC,MAAM,OAAO;GACX,SAAS;GACT,YAAY;GACZ,UAAU;GACX;EACD,MAAM,EAAE,mBAAmB,gBAAgB,KACxC;AACH,MAAI,KAAK,cAAc,IAAI,YAAY,mBAAmB,KAAK,CAAC,CAC9D,MAAK,cAAc,IAAI,YAAY,aAAa,KAAK,CAAC;;;;;CAO1D,iBAAyB;EACvB,MAAM,EACJ,iBACA,SACA,0BAA0B,4BACxB;AACJ,SAAO,IAAI;QACP,CAAC,UACC,KAAA,IACA,WAAW,iBAAiB,EAAE,OAAO,qBAA2B,CAAC,CAAC;;;oBAGxD,KAAK,SAAS;sBACZ,gBAAgB;uBACd;kBACN,wBAAwB;UAChC,WAAW,QAAQ,CAAC;;;;;;;CAQ5B,mBAA2B;EACzB,MAAM,EAAE,oBAAoB;AAC5B,SAAO,IAAI;;0BAEW,gBAAgB;wBACP;;;;;;CAOjC,kBAA0B;EACxB,MAAM,EAAE,oBAAoB;AAC5B,SAAO,WAAW,mBAAmB;GACnC,OAAO;GACP,cAAc;GACf,CAAC;;;;;CAMJ,gBAAwB;EACtB,MAAM,EAAE,UAAU;AAClB,UAAQ,OAAR;GACE,KAAA,OACE,QAAO,KAAK,gBAAgB;GAC9B,KAAA,YACE,QAAO,KAAK,kBAAkB;GAChC,KAAA,WACE,QAAO,KAAK,iBAAiB;GAC/B,QACE;;;CA8CN,SAAS;EACP,MAAM,EAAE,SAAS,cAAc,cAAc;AAC7C,SAAO,IAAI,cAAA,MAAqB;2BACR;WACjB,KAAK,eAAe,CAAC;;;uBAGR;mBACL,CAAC,WAAW,CAAC,aAAa;4BAChB,6BAA6B,aAAa;;yBAE7C;qBACL,CAAC,UAAU;YACpB,UAAU;;;;;;;;CASpB,WAAW,oBAAoB;AAC7B,SAAO;;;;;CAMT,WAAW,cAAc;AACvB,SAAO;;;gBAGOA;;;YAxEf,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,oBAAA,WAAA,mBAAA,KAAA,EAAA;YAM3C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,oBAAA,WAAA,WAAA,KAAA,EAAA;YAM1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,oBAAA,WAAA,YAAA,KAAA,EAAA;YAM1C,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,oBAAA,WAAA,QAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,oBAAA,WAAA,SAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,oBAAA,WAAA,gBAAA,KAAA,EAAA;YAMxC,SAAS,EAAE,WAAW,cAAc,CAAC,CAAA,EAAA,oBAAA,WAAA,aAAA,KAAA,EAAA;kCAzHvCC,cAAc,yBAA+B,CAAA,EAAA,oBAAA;AAgK9C,IAAA,6BAAe"}