@carbon/web-components 1.26.0-rc.2 → 1.26.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 (623) hide show
  1. package/dist/accordion.min.js +2 -2
  2. package/dist/accordion.rtl.min.js +2 -2
  3. package/dist/breadcrumb.min.js +1 -1
  4. package/dist/breadcrumb.rtl.min.js +1 -1
  5. package/dist/{button-0eeac278.js → button-c71594fa.js} +2 -2
  6. package/dist/{button-4b4837f0.js → button-e31ba29e.js} +2 -2
  7. package/dist/button.min.js +1 -1
  8. package/dist/button.rtl.min.js +1 -1
  9. package/dist/{decorators-0a905d41.js → carbon-element-18175602.js} +9 -1
  10. package/dist/checkbox-3fc0ced9.js +65 -0
  11. package/dist/checkbox-a740039c.js +65 -0
  12. package/dist/checkbox.min.js +1 -1
  13. package/dist/checkbox.rtl.min.js +1 -1
  14. package/dist/code-snippet.min.js +2 -2
  15. package/dist/code-snippet.rtl.min.js +2 -2
  16. package/dist/combo-box.min.js +1 -1
  17. package/dist/combo-box.rtl.min.js +1 -1
  18. package/dist/{content-switcher-item-d37071b9.js → content-switcher-item-77b690a9.js} +2 -2
  19. package/dist/{content-switcher-item-db96b7e3.js → content-switcher-item-96395561.js} +2 -2
  20. package/dist/content-switcher.min.js +1 -1
  21. package/dist/content-switcher.rtl.min.js +1 -1
  22. package/dist/copy-button-50221d0f.js +65 -0
  23. package/dist/copy-button-9cb9a0c6.js +65 -0
  24. package/dist/copy-button.min.js +1 -1
  25. package/dist/copy-button.rtl.min.js +1 -1
  26. package/dist/data-table.min.js +2 -2
  27. package/dist/data-table.rtl.min.js +2 -2
  28. package/dist/date-picker.min.js +3 -3
  29. package/dist/date-picker.rtl.min.js +3 -3
  30. package/dist/decorators-56213c84.js +78 -0
  31. package/dist/{dropdown-item-1630cdb0.js → dropdown-item-62abeaa7.js} +2 -2
  32. package/dist/{dropdown-item-8c9136d9.js → dropdown-item-97eb5366.js} +2 -2
  33. package/dist/dropdown.min.js +1 -1
  34. package/dist/dropdown.rtl.min.js +1 -1
  35. package/dist/file-uploader.min.js +2 -2
  36. package/dist/file-uploader.rtl.min.js +2 -2
  37. package/dist/form.min.js +1 -1
  38. package/dist/form.rtl.min.js +1 -1
  39. package/dist/inline-loading.min.js +2 -2
  40. package/dist/inline-loading.rtl.min.js +2 -2
  41. package/dist/{input-1583283e.js → input-254c34ac.js} +2 -2
  42. package/dist/{input-b817aa3d.js → input-bb75e577.js} +2 -2
  43. package/dist/input.min.js +1 -1
  44. package/dist/input.rtl.min.js +1 -1
  45. package/dist/link-3c734b06.js +65 -0
  46. package/dist/link-aecb4d2a.js +65 -0
  47. package/dist/link.min.js +1 -1
  48. package/dist/link.rtl.min.js +1 -1
  49. package/dist/list.min.js +1 -1
  50. package/dist/list.rtl.min.js +1 -1
  51. package/dist/loading-9ce928f0.js +65 -0
  52. package/dist/loading-c77e0b8d.js +65 -0
  53. package/dist/loading.min.js +1 -1
  54. package/dist/loading.rtl.min.js +1 -1
  55. package/dist/modal.min.js +2 -2
  56. package/dist/modal.rtl.min.js +2 -2
  57. package/dist/multi-select.min.js +1 -1
  58. package/dist/multi-select.rtl.min.js +1 -1
  59. package/dist/notification.min.js +2 -2
  60. package/dist/notification.rtl.min.js +2 -2
  61. package/dist/number-input.min.js +2 -2
  62. package/dist/number-input.rtl.min.js +2 -2
  63. package/dist/overflow-menu.min.js +2 -2
  64. package/dist/overflow-menu.rtl.min.js +2 -2
  65. package/dist/pagination.min.js +1 -1
  66. package/dist/pagination.rtl.min.js +1 -1
  67. package/dist/progress-indicator.min.js +2 -2
  68. package/dist/progress-indicator.rtl.min.js +2 -2
  69. package/dist/radio-button.min.js +2 -2
  70. package/dist/radio-button.rtl.min.js +2 -2
  71. package/dist/search-99e65bb6.js +65 -0
  72. package/dist/search-dfddc65c.js +65 -0
  73. package/dist/search.min.js +1 -1
  74. package/dist/search.rtl.min.js +1 -1
  75. package/dist/select.min.js +1 -1
  76. package/dist/select.rtl.min.js +1 -1
  77. package/dist/skeleton-placeholder.min.js +1 -1
  78. package/dist/skeleton-placeholder.rtl.min.js +1 -1
  79. package/dist/skeleton-text.min.js +2 -2
  80. package/dist/skeleton-text.rtl.min.js +2 -2
  81. package/dist/skip-to-content.min.js +1 -1
  82. package/dist/skip-to-content.rtl.min.js +1 -1
  83. package/dist/slider.min.js +1 -1
  84. package/dist/slider.rtl.min.js +1 -1
  85. package/dist/structured-list.min.js +1 -1
  86. package/dist/structured-list.rtl.min.js +1 -1
  87. package/dist/tabs.min.js +2 -2
  88. package/dist/tabs.rtl.min.js +2 -2
  89. package/dist/tag.min.js +2 -2
  90. package/dist/tag.rtl.min.js +2 -2
  91. package/dist/textarea.min.js +1 -1
  92. package/dist/textarea.rtl.min.js +1 -1
  93. package/dist/tile.min.js +1 -1
  94. package/dist/tile.rtl.min.js +1 -1
  95. package/dist/toggle.min.js +2 -2
  96. package/dist/toggle.rtl.min.js +2 -2
  97. package/dist/tooltip.min.js +2 -2
  98. package/dist/tooltip.rtl.min.js +2 -2
  99. package/dist/ui-shell.min.js +2 -2
  100. package/dist/ui-shell.rtl.min.js +2 -2
  101. package/es/components/accordion/accordion-item.d.ts +1 -1
  102. package/es/components/accordion/accordion-item.d.ts.map +1 -1
  103. package/es/components/accordion/accordion-item.js +4 -3
  104. package/es/components/accordion/accordion-item.js.map +1 -1
  105. package/es/components/accordion/accordion.d.ts +1 -1
  106. package/es/components/accordion/accordion.d.ts.map +1 -1
  107. package/es/components/accordion/accordion.js +3 -2
  108. package/es/components/accordion/accordion.js.map +1 -1
  109. package/es/components/breadcrumb/breadcrumb-item.d.ts +1 -1
  110. package/es/components/breadcrumb/breadcrumb-item.d.ts.map +1 -1
  111. package/es/components/breadcrumb/breadcrumb-item.js +3 -2
  112. package/es/components/breadcrumb/breadcrumb-item.js.map +1 -1
  113. package/es/components/breadcrumb/breadcrumb-link.d.ts +1 -1
  114. package/es/components/breadcrumb/breadcrumb-link.d.ts.map +1 -1
  115. package/es/components/breadcrumb/breadcrumb-link.js +2 -2
  116. package/es/components/breadcrumb/breadcrumb-link.js.map +1 -1
  117. package/es/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
  118. package/es/components/breadcrumb/breadcrumb-overflow-menu.d.ts.map +1 -1
  119. package/es/components/breadcrumb/breadcrumb-overflow-menu.js +3 -2
  120. package/es/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
  121. package/es/components/breadcrumb/breadcrumb.d.ts +1 -1
  122. package/es/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  123. package/es/components/breadcrumb/breadcrumb.js +3 -2
  124. package/es/components/breadcrumb/breadcrumb.js.map +1 -1
  125. package/es/components/button/button-skeleton.d.ts +1 -1
  126. package/es/components/button/button-skeleton.d.ts.map +1 -1
  127. package/es/components/button/button-skeleton.js +3 -2
  128. package/es/components/button/button-skeleton.js.map +1 -1
  129. package/es/components/button/button.d.ts +1 -1
  130. package/es/components/button/button.d.ts.map +1 -1
  131. package/es/components/button/button.js +3 -2
  132. package/es/components/button/button.js.map +1 -1
  133. package/es/components/checkbox/checkbox.d.ts +1 -1
  134. package/es/components/checkbox/checkbox.d.ts.map +1 -1
  135. package/es/components/checkbox/checkbox.js +3 -2
  136. package/es/components/checkbox/checkbox.js.map +1 -1
  137. package/es/components/code-snippet/code-snippet-skeleton.d.ts +1 -1
  138. package/es/components/code-snippet/code-snippet-skeleton.d.ts.map +1 -1
  139. package/es/components/code-snippet/code-snippet-skeleton.js +3 -2
  140. package/es/components/code-snippet/code-snippet-skeleton.js.map +1 -1
  141. package/es/components/code-snippet/code-snippet.d.ts +1 -1
  142. package/es/components/code-snippet/code-snippet.d.ts.map +1 -1
  143. package/es/components/code-snippet/code-snippet.js +3 -2
  144. package/es/components/code-snippet/code-snippet.js.map +1 -1
  145. package/es/components/combo-box/combo-box-item.d.ts +1 -1
  146. package/es/components/combo-box/combo-box-item.d.ts.map +1 -1
  147. package/es/components/combo-box/combo-box-item.js +2 -2
  148. package/es/components/combo-box/combo-box-item.js.map +1 -1
  149. package/es/components/combo-box/combo-box.d.ts +1 -1
  150. package/es/components/combo-box/combo-box.d.ts.map +1 -1
  151. package/es/components/combo-box/combo-box.js +3 -2
  152. package/es/components/combo-box/combo-box.js.map +1 -1
  153. package/es/components/content-switcher/content-switcher-item.d.ts +1 -1
  154. package/es/components/content-switcher/content-switcher-item.d.ts.map +1 -1
  155. package/es/components/content-switcher/content-switcher-item.js +3 -2
  156. package/es/components/content-switcher/content-switcher-item.js.map +1 -1
  157. package/es/components/content-switcher/content-switcher.d.ts +1 -1
  158. package/es/components/content-switcher/content-switcher.d.ts.map +1 -1
  159. package/es/components/content-switcher/content-switcher.js +3 -2
  160. package/es/components/content-switcher/content-switcher.js.map +1 -1
  161. package/es/components/copy-button/copy-button.d.ts +1 -1
  162. package/es/components/copy-button/copy-button.d.ts.map +1 -1
  163. package/es/components/copy-button/copy-button.js +3 -2
  164. package/es/components/copy-button/copy-button.js.map +1 -1
  165. package/es/components/data-table/table-batch-actions.d.ts +1 -1
  166. package/es/components/data-table/table-batch-actions.d.ts.map +1 -1
  167. package/es/components/data-table/table-batch-actions.js +3 -2
  168. package/es/components/data-table/table-batch-actions.js.map +1 -1
  169. package/es/components/data-table/table-body.d.ts +1 -1
  170. package/es/components/data-table/table-body.d.ts.map +1 -1
  171. package/es/components/data-table/table-body.js +3 -2
  172. package/es/components/data-table/table-body.js.map +1 -1
  173. package/es/components/data-table/table-cell-skeleton.d.ts +1 -1
  174. package/es/components/data-table/table-cell-skeleton.d.ts.map +1 -1
  175. package/es/components/data-table/table-cell-skeleton.js +3 -2
  176. package/es/components/data-table/table-cell-skeleton.js.map +1 -1
  177. package/es/components/data-table/table-cell.d.ts +1 -1
  178. package/es/components/data-table/table-cell.d.ts.map +1 -1
  179. package/es/components/data-table/table-cell.js +3 -2
  180. package/es/components/data-table/table-cell.js.map +1 -1
  181. package/es/components/data-table/table-expand-row.d.ts +1 -1
  182. package/es/components/data-table/table-expand-row.d.ts.map +1 -1
  183. package/es/components/data-table/table-expand-row.js +3 -2
  184. package/es/components/data-table/table-expand-row.js.map +1 -1
  185. package/es/components/data-table/table-expanded-row.d.ts +1 -1
  186. package/es/components/data-table/table-expanded-row.d.ts.map +1 -1
  187. package/es/components/data-table/table-expanded-row.js +3 -2
  188. package/es/components/data-table/table-expanded-row.js.map +1 -1
  189. package/es/components/data-table/table-head.d.ts +1 -1
  190. package/es/components/data-table/table-head.d.ts.map +1 -1
  191. package/es/components/data-table/table-head.js +3 -2
  192. package/es/components/data-table/table-head.js.map +1 -1
  193. package/es/components/data-table/table-header-cell-skeleton.d.ts +1 -1
  194. package/es/components/data-table/table-header-cell-skeleton.d.ts.map +1 -1
  195. package/es/components/data-table/table-header-cell-skeleton.js +2 -2
  196. package/es/components/data-table/table-header-cell-skeleton.js.map +1 -1
  197. package/es/components/data-table/table-header-cell.d.ts +1 -1
  198. package/es/components/data-table/table-header-cell.d.ts.map +1 -1
  199. package/es/components/data-table/table-header-cell.js +3 -2
  200. package/es/components/data-table/table-header-cell.js.map +1 -1
  201. package/es/components/data-table/table-header-expand-row.d.ts +1 -1
  202. package/es/components/data-table/table-header-expand-row.d.ts.map +1 -1
  203. package/es/components/data-table/table-header-expand-row.js +2 -2
  204. package/es/components/data-table/table-header-expand-row.js.map +1 -1
  205. package/es/components/data-table/table-header-row.d.ts +1 -1
  206. package/es/components/data-table/table-header-row.d.ts.map +1 -1
  207. package/es/components/data-table/table-header-row.js +2 -2
  208. package/es/components/data-table/table-header-row.js.map +1 -1
  209. package/es/components/data-table/table-row.d.ts +1 -1
  210. package/es/components/data-table/table-row.d.ts.map +1 -1
  211. package/es/components/data-table/table-row.js +3 -2
  212. package/es/components/data-table/table-row.js.map +1 -1
  213. package/es/components/data-table/table-toolbar-content.d.ts +1 -1
  214. package/es/components/data-table/table-toolbar-content.d.ts.map +1 -1
  215. package/es/components/data-table/table-toolbar-content.js +3 -2
  216. package/es/components/data-table/table-toolbar-content.js.map +1 -1
  217. package/es/components/data-table/table-toolbar-search.d.ts +1 -1
  218. package/es/components/data-table/table-toolbar-search.d.ts.map +1 -1
  219. package/es/components/data-table/table-toolbar-search.js +3 -2
  220. package/es/components/data-table/table-toolbar-search.js.map +1 -1
  221. package/es/components/data-table/table-toolbar.d.ts +1 -1
  222. package/es/components/data-table/table-toolbar.d.ts.map +1 -1
  223. package/es/components/data-table/table-toolbar.js +3 -2
  224. package/es/components/data-table/table-toolbar.js.map +1 -1
  225. package/es/components/data-table/table.d.ts +1 -1
  226. package/es/components/data-table/table.d.ts.map +1 -1
  227. package/es/components/data-table/table.js +3 -2
  228. package/es/components/data-table/table.js.map +1 -1
  229. package/es/components/date-picker/date-picker-input-skeleton.d.ts +1 -1
  230. package/es/components/date-picker/date-picker-input-skeleton.d.ts.map +1 -1
  231. package/es/components/date-picker/date-picker-input-skeleton.js +3 -2
  232. package/es/components/date-picker/date-picker-input-skeleton.js.map +1 -1
  233. package/es/components/date-picker/date-picker-input.d.ts +3 -7
  234. package/es/components/date-picker/date-picker-input.d.ts.map +1 -1
  235. package/es/components/date-picker/date-picker-input.js +3 -2
  236. package/es/components/date-picker/date-picker-input.js.map +1 -1
  237. package/es/components/date-picker/date-picker.d.ts +2 -4
  238. package/es/components/date-picker/date-picker.d.ts.map +1 -1
  239. package/es/components/date-picker/date-picker.js +3 -2
  240. package/es/components/date-picker/date-picker.js.map +1 -1
  241. package/es/components/dropdown/dropdown-item.d.ts +1 -1
  242. package/es/components/dropdown/dropdown-item.d.ts.map +1 -1
  243. package/es/components/dropdown/dropdown-item.js +3 -2
  244. package/es/components/dropdown/dropdown-item.js.map +1 -1
  245. package/es/components/dropdown/dropdown-skeleton.d.ts +1 -1
  246. package/es/components/dropdown/dropdown-skeleton.d.ts.map +1 -1
  247. package/es/components/dropdown/dropdown-skeleton.js +3 -2
  248. package/es/components/dropdown/dropdown-skeleton.js.map +1 -1
  249. package/es/components/dropdown/dropdown.d.ts.map +1 -1
  250. package/es/components/dropdown/dropdown.js +2 -1
  251. package/es/components/dropdown/dropdown.js.map +1 -1
  252. package/es/components/file-uploader/drop-container.d.ts +4 -1
  253. package/es/components/file-uploader/drop-container.d.ts.map +1 -1
  254. package/es/components/file-uploader/drop-container.js +3 -2
  255. package/es/components/file-uploader/drop-container.js.map +1 -1
  256. package/es/components/file-uploader/file-uploader-item.d.ts +1 -1
  257. package/es/components/file-uploader/file-uploader-item.d.ts.map +1 -1
  258. package/es/components/file-uploader/file-uploader-item.js +3 -2
  259. package/es/components/file-uploader/file-uploader-item.js.map +1 -1
  260. package/es/components/file-uploader/file-uploader.d.ts +1 -1
  261. package/es/components/file-uploader/file-uploader.d.ts.map +1 -1
  262. package/es/components/file-uploader/file-uploader.js +3 -2
  263. package/es/components/file-uploader/file-uploader.js.map +1 -1
  264. package/es/components/form/form-item.d.ts +1 -1
  265. package/es/components/form/form-item.d.ts.map +1 -1
  266. package/es/components/form/form-item.js +3 -2
  267. package/es/components/form/form-item.js.map +1 -1
  268. package/es/components/inline-loading/inline-loading.d.ts +1 -1
  269. package/es/components/inline-loading/inline-loading.d.ts.map +1 -1
  270. package/es/components/inline-loading/inline-loading.js +3 -2
  271. package/es/components/inline-loading/inline-loading.js.map +1 -1
  272. package/es/components/input/input.d.ts +1 -4
  273. package/es/components/input/input.d.ts.map +1 -1
  274. package/es/components/input/input.js +3 -2
  275. package/es/components/input/input.js.map +1 -1
  276. package/es/components/link/link.d.ts +1 -1
  277. package/es/components/link/link.d.ts.map +1 -1
  278. package/es/components/link/link.js +3 -2
  279. package/es/components/link/link.js.map +1 -1
  280. package/es/components/list/list-item.d.ts +1 -1
  281. package/es/components/list/list-item.d.ts.map +1 -1
  282. package/es/components/list/list-item.js +3 -2
  283. package/es/components/list/list-item.js.map +1 -1
  284. package/es/components/list/ordered-list.d.ts +1 -1
  285. package/es/components/list/ordered-list.d.ts.map +1 -1
  286. package/es/components/list/ordered-list.js +3 -2
  287. package/es/components/list/ordered-list.js.map +1 -1
  288. package/es/components/list/unordered-list.d.ts +1 -1
  289. package/es/components/list/unordered-list.d.ts.map +1 -1
  290. package/es/components/list/unordered-list.js +3 -2
  291. package/es/components/list/unordered-list.js.map +1 -1
  292. package/es/components/loading/loading.d.ts +1 -1
  293. package/es/components/loading/loading.d.ts.map +1 -1
  294. package/es/components/loading/loading.js +3 -2
  295. package/es/components/loading/loading.js.map +1 -1
  296. package/es/components/modal/modal-body.d.ts +1 -1
  297. package/es/components/modal/modal-body.d.ts.map +1 -1
  298. package/es/components/modal/modal-body.js +3 -2
  299. package/es/components/modal/modal-body.js.map +1 -1
  300. package/es/components/modal/modal-close-button.d.ts +1 -1
  301. package/es/components/modal/modal-close-button.d.ts.map +1 -1
  302. package/es/components/modal/modal-close-button.js +3 -2
  303. package/es/components/modal/modal-close-button.js.map +1 -1
  304. package/es/components/modal/modal-footer-button.d.ts +1 -1
  305. package/es/components/modal/modal-footer-button.d.ts.map +1 -1
  306. package/es/components/modal/modal-footer-button.js +2 -2
  307. package/es/components/modal/modal-footer-button.js.map +1 -1
  308. package/es/components/modal/modal-footer.d.ts +1 -1
  309. package/es/components/modal/modal-footer.d.ts.map +1 -1
  310. package/es/components/modal/modal-footer.js +3 -2
  311. package/es/components/modal/modal-footer.js.map +1 -1
  312. package/es/components/modal/modal-header.d.ts +1 -1
  313. package/es/components/modal/modal-header.d.ts.map +1 -1
  314. package/es/components/modal/modal-header.js +3 -2
  315. package/es/components/modal/modal-header.js.map +1 -1
  316. package/es/components/modal/modal-heading.d.ts +1 -1
  317. package/es/components/modal/modal-heading.d.ts.map +1 -1
  318. package/es/components/modal/modal-heading.js +3 -2
  319. package/es/components/modal/modal-heading.js.map +1 -1
  320. package/es/components/modal/modal-label.d.ts +1 -1
  321. package/es/components/modal/modal-label.d.ts.map +1 -1
  322. package/es/components/modal/modal-label.js +3 -2
  323. package/es/components/modal/modal-label.js.map +1 -1
  324. package/es/components/modal/modal.d.ts +1 -1
  325. package/es/components/modal/modal.d.ts.map +1 -1
  326. package/es/components/modal/modal.js +3 -2
  327. package/es/components/modal/modal.js.map +1 -1
  328. package/es/components/multi-select/multi-select-item.d.ts +1 -1
  329. package/es/components/multi-select/multi-select-item.d.ts.map +1 -1
  330. package/es/components/multi-select/multi-select-item.js +3 -2
  331. package/es/components/multi-select/multi-select-item.js.map +1 -1
  332. package/es/components/multi-select/multi-select.d.ts +1 -1
  333. package/es/components/multi-select/multi-select.d.ts.map +1 -1
  334. package/es/components/multi-select/multi-select.js +3 -2
  335. package/es/components/multi-select/multi-select.js.map +1 -1
  336. package/es/components/notification/inline-notification.d.ts +1 -1
  337. package/es/components/notification/inline-notification.d.ts.map +1 -1
  338. package/es/components/notification/inline-notification.js +4 -3
  339. package/es/components/notification/inline-notification.js.map +1 -1
  340. package/es/components/notification/toast-notification.d.ts +1 -1
  341. package/es/components/notification/toast-notification.d.ts.map +1 -1
  342. package/es/components/notification/toast-notification.js +3 -2
  343. package/es/components/notification/toast-notification.js.map +1 -1
  344. package/es/components/number-input/number-input-skeleton.d.ts +1 -1
  345. package/es/components/number-input/number-input-skeleton.d.ts.map +1 -1
  346. package/es/components/number-input/number-input-skeleton.js +3 -2
  347. package/es/components/number-input/number-input-skeleton.js.map +1 -1
  348. package/es/components/number-input/number-input.d.ts +1 -1
  349. package/es/components/number-input/number-input.d.ts.map +1 -1
  350. package/es/components/number-input/number-input.js +3 -2
  351. package/es/components/number-input/number-input.js.map +1 -1
  352. package/es/components/overflow-menu/overflow-menu-body.d.ts +1 -1
  353. package/es/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
  354. package/es/components/overflow-menu/overflow-menu-body.js +3 -2
  355. package/es/components/overflow-menu/overflow-menu-body.js.map +1 -1
  356. package/es/components/overflow-menu/overflow-menu-item.d.ts +1 -1
  357. package/es/components/overflow-menu/overflow-menu-item.d.ts.map +1 -1
  358. package/es/components/overflow-menu/overflow-menu-item.js +3 -2
  359. package/es/components/overflow-menu/overflow-menu-item.js.map +1 -1
  360. package/es/components/overflow-menu/overflow-menu.d.ts +4 -1
  361. package/es/components/overflow-menu/overflow-menu.d.ts.map +1 -1
  362. package/es/components/overflow-menu/overflow-menu.js +3 -2
  363. package/es/components/overflow-menu/overflow-menu.js.map +1 -1
  364. package/es/components/pagination/page-sizes-select.d.ts +1 -1
  365. package/es/components/pagination/page-sizes-select.d.ts.map +1 -1
  366. package/es/components/pagination/page-sizes-select.js +3 -2
  367. package/es/components/pagination/page-sizes-select.js.map +1 -1
  368. package/es/components/pagination/pages-select.d.ts +1 -1
  369. package/es/components/pagination/pages-select.d.ts.map +1 -1
  370. package/es/components/pagination/pages-select.js +3 -2
  371. package/es/components/pagination/pages-select.js.map +1 -1
  372. package/es/components/pagination/pagination.d.ts +1 -1
  373. package/es/components/pagination/pagination.d.ts.map +1 -1
  374. package/es/components/pagination/pagination.js +3 -2
  375. package/es/components/pagination/pagination.js.map +1 -1
  376. package/es/components/progress-indicator/progress-indicator-skeleton.d.ts +1 -1
  377. package/es/components/progress-indicator/progress-indicator-skeleton.d.ts.map +1 -1
  378. package/es/components/progress-indicator/progress-indicator-skeleton.js +3 -2
  379. package/es/components/progress-indicator/progress-indicator-skeleton.js.map +1 -1
  380. package/es/components/progress-indicator/progress-indicator.d.ts +1 -1
  381. package/es/components/progress-indicator/progress-indicator.d.ts.map +1 -1
  382. package/es/components/progress-indicator/progress-indicator.js +3 -2
  383. package/es/components/progress-indicator/progress-indicator.js.map +1 -1
  384. package/es/components/progress-indicator/progress-step-skeleton.d.ts +1 -1
  385. package/es/components/progress-indicator/progress-step-skeleton.d.ts.map +1 -1
  386. package/es/components/progress-indicator/progress-step-skeleton.js +3 -2
  387. package/es/components/progress-indicator/progress-step-skeleton.js.map +1 -1
  388. package/es/components/progress-indicator/progress-step.d.ts +1 -1
  389. package/es/components/progress-indicator/progress-step.d.ts.map +1 -1
  390. package/es/components/progress-indicator/progress-step.js +3 -2
  391. package/es/components/progress-indicator/progress-step.js.map +1 -1
  392. package/es/components/radio-button/radio-button-group.d.ts +1 -1
  393. package/es/components/radio-button/radio-button-group.d.ts.map +1 -1
  394. package/es/components/radio-button/radio-button-group.js +3 -2
  395. package/es/components/radio-button/radio-button-group.js.map +1 -1
  396. package/es/components/radio-button/radio-button-skeleton.d.ts +1 -1
  397. package/es/components/radio-button/radio-button-skeleton.d.ts.map +1 -1
  398. package/es/components/radio-button/radio-button-skeleton.js +3 -2
  399. package/es/components/radio-button/radio-button-skeleton.js.map +1 -1
  400. package/es/components/radio-button/radio-button.d.ts +1 -1
  401. package/es/components/radio-button/radio-button.d.ts.map +1 -1
  402. package/es/components/radio-button/radio-button.js +3 -2
  403. package/es/components/radio-button/radio-button.js.map +1 -1
  404. package/es/components/search/search-skeleton.d.ts +1 -1
  405. package/es/components/search/search-skeleton.d.ts.map +1 -1
  406. package/es/components/search/search-skeleton.js +3 -2
  407. package/es/components/search/search-skeleton.js.map +1 -1
  408. package/es/components/search/search.d.ts +1 -1
  409. package/es/components/search/search.d.ts.map +1 -1
  410. package/es/components/search/search.js +3 -2
  411. package/es/components/search/search.js.map +1 -1
  412. package/es/components/select/select-item-group.d.ts +1 -1
  413. package/es/components/select/select-item-group.d.ts.map +1 -1
  414. package/es/components/select/select-item-group.js +3 -2
  415. package/es/components/select/select-item-group.js.map +1 -1
  416. package/es/components/select/select-item.d.ts +1 -1
  417. package/es/components/select/select-item.d.ts.map +1 -1
  418. package/es/components/select/select-item.js +3 -2
  419. package/es/components/select/select-item.js.map +1 -1
  420. package/es/components/select/select.d.ts +6 -2
  421. package/es/components/select/select.d.ts.map +1 -1
  422. package/es/components/select/select.js +3 -2
  423. package/es/components/select/select.js.map +1 -1
  424. package/es/components/skeleton-placeholder/skeleton-placeholder.d.ts +1 -1
  425. package/es/components/skeleton-placeholder/skeleton-placeholder.d.ts.map +1 -1
  426. package/es/components/skeleton-placeholder/skeleton-placeholder.js +3 -2
  427. package/es/components/skeleton-placeholder/skeleton-placeholder.js.map +1 -1
  428. package/es/components/skeleton-text/skeleton-text.d.ts +1 -1
  429. package/es/components/skeleton-text/skeleton-text.d.ts.map +1 -1
  430. package/es/components/skeleton-text/skeleton-text.js +3 -2
  431. package/es/components/skeleton-text/skeleton-text.js.map +1 -1
  432. package/es/components/skip-to-content/skip-to-content.d.ts +1 -1
  433. package/es/components/skip-to-content/skip-to-content.d.ts.map +1 -1
  434. package/es/components/skip-to-content/skip-to-content.js +3 -2
  435. package/es/components/skip-to-content/skip-to-content.js.map +1 -1
  436. package/es/components/slider/slider-input.d.ts +1 -1
  437. package/es/components/slider/slider-input.d.ts.map +1 -1
  438. package/es/components/slider/slider-input.js +3 -2
  439. package/es/components/slider/slider-input.js.map +1 -1
  440. package/es/components/slider/slider-skeleton.d.ts +1 -1
  441. package/es/components/slider/slider-skeleton.d.ts.map +1 -1
  442. package/es/components/slider/slider-skeleton.js +3 -2
  443. package/es/components/slider/slider-skeleton.js.map +1 -1
  444. package/es/components/slider/slider.d.ts +1 -1
  445. package/es/components/slider/slider.d.ts.map +1 -1
  446. package/es/components/slider/slider.js +3 -2
  447. package/es/components/slider/slider.js.map +1 -1
  448. package/es/components/structured-list/structured-list-body.d.ts +1 -1
  449. package/es/components/structured-list/structured-list-body.d.ts.map +1 -1
  450. package/es/components/structured-list/structured-list-body.js +3 -2
  451. package/es/components/structured-list/structured-list-body.js.map +1 -1
  452. package/es/components/structured-list/structured-list-cell.d.ts +1 -1
  453. package/es/components/structured-list/structured-list-cell.d.ts.map +1 -1
  454. package/es/components/structured-list/structured-list-cell.js +3 -2
  455. package/es/components/structured-list/structured-list-cell.js.map +1 -1
  456. package/es/components/structured-list/structured-list-head.d.ts +1 -1
  457. package/es/components/structured-list/structured-list-head.d.ts.map +1 -1
  458. package/es/components/structured-list/structured-list-head.js +3 -2
  459. package/es/components/structured-list/structured-list-head.js.map +1 -1
  460. package/es/components/structured-list/structured-list-header-cell-skeleton.d.ts +1 -1
  461. package/es/components/structured-list/structured-list-header-cell-skeleton.d.ts.map +1 -1
  462. package/es/components/structured-list/structured-list-header-cell-skeleton.js +3 -2
  463. package/es/components/structured-list/structured-list-header-cell-skeleton.js.map +1 -1
  464. package/es/components/structured-list/structured-list-header-cell.d.ts +1 -1
  465. package/es/components/structured-list/structured-list-header-cell.d.ts.map +1 -1
  466. package/es/components/structured-list/structured-list-header-cell.js +3 -2
  467. package/es/components/structured-list/structured-list-header-cell.js.map +1 -1
  468. package/es/components/structured-list/structured-list-header-row.d.ts +1 -1
  469. package/es/components/structured-list/structured-list-header-row.d.ts.map +1 -1
  470. package/es/components/structured-list/structured-list-header-row.js +3 -2
  471. package/es/components/structured-list/structured-list-header-row.js.map +1 -1
  472. package/es/components/structured-list/structured-list-row.d.ts +1 -1
  473. package/es/components/structured-list/structured-list-row.d.ts.map +1 -1
  474. package/es/components/structured-list/structured-list-row.js +3 -2
  475. package/es/components/structured-list/structured-list-row.js.map +1 -1
  476. package/es/components/structured-list/structured-list.d.ts +1 -1
  477. package/es/components/structured-list/structured-list.d.ts.map +1 -1
  478. package/es/components/structured-list/structured-list.js +3 -2
  479. package/es/components/structured-list/structured-list.js.map +1 -1
  480. package/es/components/tabs/tab-skeleton.d.ts +1 -1
  481. package/es/components/tabs/tab-skeleton.d.ts.map +1 -1
  482. package/es/components/tabs/tab-skeleton.js +3 -2
  483. package/es/components/tabs/tab-skeleton.js.map +1 -1
  484. package/es/components/tabs/tab.d.ts +1 -1
  485. package/es/components/tabs/tab.d.ts.map +1 -1
  486. package/es/components/tabs/tab.js +3 -2
  487. package/es/components/tabs/tab.js.map +1 -1
  488. package/es/components/tabs/tabs-skeleton.d.ts +1 -1
  489. package/es/components/tabs/tabs-skeleton.d.ts.map +1 -1
  490. package/es/components/tabs/tabs-skeleton.js +3 -2
  491. package/es/components/tabs/tabs-skeleton.js.map +1 -1
  492. package/es/components/tabs/tabs.d.ts +3 -3
  493. package/es/components/tabs/tabs.d.ts.map +1 -1
  494. package/es/components/tabs/tabs.js +5 -4
  495. package/es/components/tabs/tabs.js.map +1 -1
  496. package/es/components/tag/filter-tag.d.ts +5 -2
  497. package/es/components/tag/filter-tag.d.ts.map +1 -1
  498. package/es/components/tag/filter-tag.js +3 -2
  499. package/es/components/tag/filter-tag.js.map +1 -1
  500. package/es/components/tag/tag.d.ts +1 -1
  501. package/es/components/tag/tag.d.ts.map +1 -1
  502. package/es/components/tag/tag.js +3 -2
  503. package/es/components/tag/tag.js.map +1 -1
  504. package/es/components/textarea/textarea-skeleton.d.ts +1 -1
  505. package/es/components/textarea/textarea-skeleton.d.ts.map +1 -1
  506. package/es/components/textarea/textarea-skeleton.js +3 -2
  507. package/es/components/textarea/textarea-skeleton.js.map +1 -1
  508. package/es/components/textarea/textarea.d.ts +1 -1
  509. package/es/components/textarea/textarea.d.ts.map +1 -1
  510. package/es/components/textarea/textarea.js +3 -2
  511. package/es/components/textarea/textarea.js.map +1 -1
  512. package/es/components/tile/clickable-tile.d.ts +1 -1
  513. package/es/components/tile/clickable-tile.d.ts.map +1 -1
  514. package/es/components/tile/clickable-tile.js +3 -2
  515. package/es/components/tile/clickable-tile.js.map +1 -1
  516. package/es/components/tile/expandable-tile.d.ts +1 -1
  517. package/es/components/tile/expandable-tile.d.ts.map +1 -1
  518. package/es/components/tile/expandable-tile.js +3 -2
  519. package/es/components/tile/expandable-tile.js.map +1 -1
  520. package/es/components/tile/radio-tile.d.ts +1 -1
  521. package/es/components/tile/radio-tile.d.ts.map +1 -1
  522. package/es/components/tile/radio-tile.js +2 -2
  523. package/es/components/tile/radio-tile.js.map +1 -1
  524. package/es/components/tile/selectable-tile.d.ts.map +1 -1
  525. package/es/components/tile/selectable-tile.js +2 -1
  526. package/es/components/tile/selectable-tile.js.map +1 -1
  527. package/es/components/tile/tile-group.d.ts +1 -1
  528. package/es/components/tile/tile-group.d.ts.map +1 -1
  529. package/es/components/tile/tile-group.js +3 -2
  530. package/es/components/tile/tile-group.js.map +1 -1
  531. package/es/components/tile/tile.d.ts +1 -1
  532. package/es/components/tile/tile.d.ts.map +1 -1
  533. package/es/components/tile/tile.js +3 -2
  534. package/es/components/tile/tile.js.map +1 -1
  535. package/es/components/toggle/toggle.d.ts +1 -1
  536. package/es/components/toggle/toggle.d.ts.map +1 -1
  537. package/es/components/toggle/toggle.js +3 -2
  538. package/es/components/toggle/toggle.js.map +1 -1
  539. package/es/components/tooltip/tooltip-body.d.ts.map +1 -1
  540. package/es/components/tooltip/tooltip-body.js +2 -1
  541. package/es/components/tooltip/tooltip-body.js.map +1 -1
  542. package/es/components/tooltip/tooltip-definition.d.ts +1 -1
  543. package/es/components/tooltip/tooltip-definition.d.ts.map +1 -1
  544. package/es/components/tooltip/tooltip-definition.js +3 -2
  545. package/es/components/tooltip/tooltip-definition.js.map +1 -1
  546. package/es/components/tooltip/tooltip-footer.d.ts +1 -1
  547. package/es/components/tooltip/tooltip-footer.d.ts.map +1 -1
  548. package/es/components/tooltip/tooltip-footer.js +3 -2
  549. package/es/components/tooltip/tooltip-footer.js.map +1 -1
  550. package/es/components/tooltip/tooltip-icon.d.ts +1 -1
  551. package/es/components/tooltip/tooltip-icon.d.ts.map +1 -1
  552. package/es/components/tooltip/tooltip-icon.js +3 -2
  553. package/es/components/tooltip/tooltip-icon.js.map +1 -1
  554. package/es/components/tooltip/tooltip.d.ts.map +1 -1
  555. package/es/components/tooltip/tooltip.js +2 -1
  556. package/es/components/tooltip/tooltip.js.map +1 -1
  557. package/es/components/ui-shell/header-menu-button.d.ts +1 -1
  558. package/es/components/ui-shell/header-menu-button.d.ts.map +1 -1
  559. package/es/components/ui-shell/header-menu-button.js +3 -2
  560. package/es/components/ui-shell/header-menu-button.js.map +1 -1
  561. package/es/components/ui-shell/header-menu-item.d.ts +1 -1
  562. package/es/components/ui-shell/header-menu-item.d.ts.map +1 -1
  563. package/es/components/ui-shell/header-menu-item.js +2 -2
  564. package/es/components/ui-shell/header-menu-item.js.map +1 -1
  565. package/es/components/ui-shell/header-menu.d.ts +1 -1
  566. package/es/components/ui-shell/header-menu.d.ts.map +1 -1
  567. package/es/components/ui-shell/header-menu.js +3 -2
  568. package/es/components/ui-shell/header-menu.js.map +1 -1
  569. package/es/components/ui-shell/header-name.d.ts +1 -1
  570. package/es/components/ui-shell/header-name.d.ts.map +1 -1
  571. package/es/components/ui-shell/header-name.js +3 -2
  572. package/es/components/ui-shell/header-name.js.map +1 -1
  573. package/es/components/ui-shell/header-nav-item.d.ts +1 -1
  574. package/es/components/ui-shell/header-nav-item.d.ts.map +1 -1
  575. package/es/components/ui-shell/header-nav-item.js +3 -2
  576. package/es/components/ui-shell/header-nav-item.js.map +1 -1
  577. package/es/components/ui-shell/header-nav.d.ts +1 -1
  578. package/es/components/ui-shell/header-nav.d.ts.map +1 -1
  579. package/es/components/ui-shell/header-nav.js +3 -2
  580. package/es/components/ui-shell/header-nav.js.map +1 -1
  581. package/es/components/ui-shell/header.d.ts +1 -1
  582. package/es/components/ui-shell/header.d.ts.map +1 -1
  583. package/es/components/ui-shell/header.js +3 -2
  584. package/es/components/ui-shell/header.js.map +1 -1
  585. package/es/components/ui-shell/side-nav-divider.d.ts +1 -1
  586. package/es/components/ui-shell/side-nav-divider.d.ts.map +1 -1
  587. package/es/components/ui-shell/side-nav-divider.js +3 -2
  588. package/es/components/ui-shell/side-nav-divider.js.map +1 -1
  589. package/es/components/ui-shell/side-nav-items.d.ts +1 -1
  590. package/es/components/ui-shell/side-nav-items.d.ts.map +1 -1
  591. package/es/components/ui-shell/side-nav-items.js +3 -2
  592. package/es/components/ui-shell/side-nav-items.js.map +1 -1
  593. package/es/components/ui-shell/side-nav-link.d.ts +1 -1
  594. package/es/components/ui-shell/side-nav-link.d.ts.map +1 -1
  595. package/es/components/ui-shell/side-nav-link.js +3 -2
  596. package/es/components/ui-shell/side-nav-link.js.map +1 -1
  597. package/es/components/ui-shell/side-nav-menu-item.d.ts +1 -1
  598. package/es/components/ui-shell/side-nav-menu-item.d.ts.map +1 -1
  599. package/es/components/ui-shell/side-nav-menu-item.js +3 -2
  600. package/es/components/ui-shell/side-nav-menu-item.js.map +1 -1
  601. package/es/components/ui-shell/side-nav-menu.d.ts +1 -1
  602. package/es/components/ui-shell/side-nav-menu.d.ts.map +1 -1
  603. package/es/components/ui-shell/side-nav-menu.js +3 -2
  604. package/es/components/ui-shell/side-nav-menu.js.map +1 -1
  605. package/es/components/ui-shell/side-nav.d.ts +1 -1
  606. package/es/components/ui-shell/side-nav.d.ts.map +1 -1
  607. package/es/components/ui-shell/side-nav.js +3 -2
  608. package/es/components/ui-shell/side-nav.js.map +1 -1
  609. package/es/globals/decorators/carbon-element.d.ts +235 -0
  610. package/es/globals/decorators/carbon-element.d.ts.map +1 -0
  611. package/es/globals/decorators/carbon-element.js +429 -0
  612. package/es/globals/decorators/carbon-element.js.map +1 -0
  613. package/package.json +2 -2
  614. package/dist/checkbox-0edcc860.js +0 -65
  615. package/dist/checkbox-155d2e12.js +0 -65
  616. package/dist/copy-button-d50482da.js +0 -65
  617. package/dist/copy-button-e0c0c272.js +0 -65
  618. package/dist/link-5cef0608.js +0 -65
  619. package/dist/link-c666ff67.js +0 -65
  620. package/dist/loading-3754cb83.js +0 -65
  621. package/dist/loading-a86f38a0.js +0 -65
  622. package/dist/search-11f3a241.js +0 -65
  623. package/dist/search-487b4714.js +0 -65
@@ -1 +1 @@
1
- {"version":3,"file":"modal-footer.js","names":["classMap","html","customElement","LitElement","settings","styles","prefix","BXModalFooter","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","_handleSlotChange","event","selectorButtons","_hasMoreThanTwoButtons","target","assignedNodes","filter","node","nodeType","Node","ELEMENT_NODE","matches","length","requestUpdate","render","hasMoreThanTwoButtons","handleSlotChange","classes","_t","_","static"],"sources":["components/modal/modal-footer.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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-html/directives/class-map';\nimport { html, customElement, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\n\nconst { prefix } = settings;\n\n/**\n * Modal footer.\n *\n * @element bx-modal-footer\n */\n@customElement(`${prefix}-modal-footer`)\nclass BXModalFooter extends LitElement {\n /**\n * `true` if this modal footer has more than two buttons.\n */\n private _hasMoreThanTwoButtons = false;\n\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange(event: Event) {\n const { selectorButtons } = this.constructor as typeof BXModalFooter;\n this._hasMoreThanTwoButtons =\n (event.target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).matches(selectorButtons)\n ).length > 2;\n this.requestUpdate();\n }\n\n render() {\n const {\n _hasMoreThanTwoButtons: hasMoreThanTwoButtons,\n _handleSlotChange: handleSlotChange,\n } = this;\n const classes = classMap({\n [`${prefix}--modal-footer`]: true,\n [`${prefix}--modal-footer--three-button`]: hasMoreThanTwoButtons,\n });\n return html`\n <div class=\"${classes}\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n </div>\n `;\n }\n\n /**\n * A selector that selects the child buttons.\n */\n static get selectorButtons() {\n return `${prefix}-btn,${prefix}-modal-footer-button`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalFooter;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,+BAA+B;AACxD,SAASC,IAAI,EAAEC,aAAa,EAAEC,UAAU,QAAQ,aAAa;AAC7D,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AAEjC,MAAM;EAAEC;AAAO,CAAC,GAAGF,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMG,aAAa,GAAAC,SAAA,EADlBN,aAAa,CAAE,GAAEI,MAAO,eAAc,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAxC,MACMH,aAAa,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EA8CvC;EAAC;IAAAI,CAAA,EA9CKN,aAAa;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,MAAA;QAAA,OAIgB,KAAK;MAAA;IAAA;MAAAF,IAAA;MAAAC,GAAA;MAAAC,KAAA;MAHtC;AACF;AACA;;MAGE;AACF;AACA;MACE,SAAAC,kBAA0BC,KAAY,EAAE;QACtC,MAAM;UAAEC;QAAgB,CAAC,GAAG,IAAI,CAACT,WAAmC;QACpE,IAAI,CAACU,sBAAsB,GACxBF,KAAK,CAACG,MAAM,CACVC,aAAa,EAAE,CACfC,MAAM,CACJC,IAAI,IACHA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACC,YAAY,IAClCH,IAAI,CAAaI,OAAO,CAACT,eAAe,CAAC,CAC7C,CAACU,MAAM,GAAG,CAAC;QAChB,IAAI,CAACC,aAAa,EAAE;MACtB;IAAC;MAAAhB,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAED,SAAAe,OAAA,EAAS;QACP,MAAM;UACJX,sBAAsB,EAAEY,qBAAqB;UAC7Cf,iBAAiB,EAAEgB;QACrB,CAAC,GAAG,IAAI;QACR,MAAMC,OAAO,GAAGnC,QAAQ,CAAC;UACvB,CAAE,GAAEM,MAAO,gBAAe,GAAG,IAAI;UACjC,CAAE,GAAEA,MAAO,8BAA6B,GAAG2B;QAC7C,CAAC,CAAC;QACF,OAAOhC,IAAI,CAAAmC,EAAA,KAAAA,EAAA,GAAAC,CAAA,iEACKF,OAAO,EACED,gBAAgB;MAG3C;;MAEA;AACF;AACA;IAFE;MAAAnB,IAAA;MAAAuB,MAAA;MAAAtB,GAAA;MAAAC,KAAA,EAGA,SAAAG,gBAAA,EAA6B;QAC3B,OAAQ,GAAEd,MAAO,QAAOA,MAAO,sBAAqB;MACtD;IAAC;MAAAS,IAAA;MAAAuB,MAAA;MAAAtB,GAAA;MAAAC,MAAA;QAAA,OAEeZ,MAAM;MAAA;IAAA;EAAA;AAAA,GA7CIF,UAAU;AAgDtC,eAAeI,aAAa"}
1
+ {"version":3,"file":"modal-footer.js","names":["classMap","html","LitElement","settings","styles","carbonElement","customElement","prefix","BXModalFooter","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","_handleSlotChange","event","selectorButtons","_hasMoreThanTwoButtons","target","assignedNodes","filter","node","nodeType","Node","ELEMENT_NODE","matches","length","requestUpdate","render","hasMoreThanTwoButtons","handleSlotChange","classes","_t","_","static"],"sources":["components/modal/modal-footer.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 { classMap } from 'lit-html/directives/class-map';\nimport { html, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Modal footer.\n *\n * @element bx-modal-footer\n */\n@customElement(`${prefix}-modal-footer`)\nclass BXModalFooter extends LitElement {\n /**\n * `true` if this modal footer has more than two buttons.\n */\n private _hasMoreThanTwoButtons = false;\n\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange(event: Event) {\n const { selectorButtons } = this.constructor as typeof BXModalFooter;\n this._hasMoreThanTwoButtons =\n (event.target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).matches(selectorButtons)\n ).length > 2;\n this.requestUpdate();\n }\n\n render() {\n const {\n _hasMoreThanTwoButtons: hasMoreThanTwoButtons,\n _handleSlotChange: handleSlotChange,\n } = this;\n const classes = classMap({\n [`${prefix}--modal-footer`]: true,\n [`${prefix}--modal-footer--three-button`]: hasMoreThanTwoButtons,\n });\n return html`\n <div class=\"${classes}\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n </div>\n `;\n }\n\n /**\n * A selector that selects the child buttons.\n */\n static get selectorButtons() {\n return `${prefix}-btn,${prefix}-modal-footer-button`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalFooter;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,+BAA+B;AACxD,SAASC,IAAI,EAAEC,UAAU,QAAQ,aAAa;AAC9C,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AACjC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGJ,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMK,aAAa,GAAAC,SAAA,EADlBH,aAAa,CAAE,GAAEC,MAAO,eAAc,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAxC,MACMH,aAAa,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EA8CvC;EAAC;IAAAI,CAAA,EA9CKN,aAAa;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,MAAA;QAAA,OAIgB,KAAK;MAAA;IAAA;MAAAF,IAAA;MAAAC,GAAA;MAAAC,KAAA;MAHtC;AACF;AACA;;MAGE;AACF;AACA;MACE,SAAAC,kBAA0BC,KAAY,EAAE;QACtC,MAAM;UAAEC;QAAgB,CAAC,GAAG,IAAI,CAACT,WAAmC;QACpE,IAAI,CAACU,sBAAsB,GACxBF,KAAK,CAACG,MAAM,CACVC,aAAa,EAAE,CACfC,MAAM,CACJC,IAAI,IACHA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACC,YAAY,IAClCH,IAAI,CAAaI,OAAO,CAACT,eAAe,CAAC,CAC7C,CAACU,MAAM,GAAG,CAAC;QAChB,IAAI,CAACC,aAAa,EAAE;MACtB;IAAC;MAAAhB,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAED,SAAAe,OAAA,EAAS;QACP,MAAM;UACJX,sBAAsB,EAAEY,qBAAqB;UAC7Cf,iBAAiB,EAAEgB;QACrB,CAAC,GAAG,IAAI;QACR,MAAMC,OAAO,GAAGpC,QAAQ,CAAC;UACvB,CAAE,GAAEO,MAAO,gBAAe,GAAG,IAAI;UACjC,CAAE,GAAEA,MAAO,8BAA6B,GAAG2B;QAC7C,CAAC,CAAC;QACF,OAAOjC,IAAI,CAAAoC,EAAA,KAAAA,EAAA,GAAAC,CAAA,iEACKF,OAAO,EACED,gBAAgB;MAG3C;;MAEA;AACF;AACA;IAFE;MAAAnB,IAAA;MAAAuB,MAAA;MAAAtB,GAAA;MAAAC,KAAA,EAGA,SAAAG,gBAAA,EAA6B;QAC3B,OAAQ,GAAEd,MAAO,QAAOA,MAAO,sBAAqB;MACtD;IAAC;MAAAS,IAAA;MAAAuB,MAAA;MAAAtB,GAAA;MAAAC,MAAA;QAAA,OAEed,MAAM;MAAA;IAAA;EAAA;AAAA,GA7CIF,UAAU;AAgDtC,eAAeM,aAAa"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2019, 2022
4
+ * Copyright IBM Corp. 2019, 2023
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
@@ -1 +1 @@
1
- {"version":3,"sources":["components/modal/modal-header.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAuB,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9D;;;;GAIG;AACH,cACM,aAAc,SAAQ,UAAU;IACpC,MAAM;IAIN,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,aAAa,CAAC","file":"modal-header.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 { html, customElement, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\n\nconst { prefix } = settings;\n\n/**\n * Modal header.\n *\n * @element bx-modal-header\n */\n@customElement(`${prefix}-modal-header`)\nclass BXModalHeader extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeader;\n"]}
1
+ {"version":3,"sources":["components/modal/modal-header.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,UAAU,EAAE,MAAM,aAAa,CAAC;AAO/C;;;;GAIG;AACH,cACM,aAAc,SAAQ,UAAU;IACpC,MAAM;IAIN,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,aAAa,CAAC","file":"modal-header.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 { html, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Modal header.\n *\n * @element bx-modal-header\n */\n@customElement(`${prefix}-modal-header`)\nclass BXModalHeader extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeader;\n"]}
@@ -4,15 +4,16 @@ let _ = t => t,
4
4
  /**
5
5
  * @license
6
6
  *
7
- * Copyright IBM Corp. 2019, 2022
7
+ * Copyright IBM Corp. 2019, 2023
8
8
  *
9
9
  * This source code is licensed under the Apache-2.0 license found in the
10
10
  * LICENSE file in the root directory of this source tree.
11
11
  */
12
12
 
13
- import { html, customElement, LitElement } from 'lit-element';
13
+ import { html, LitElement } from 'lit-element';
14
14
  import settings from 'carbon-components/es/globals/js/settings';
15
15
  import styles from "././modal.css.js";
16
+ import { carbonElement as customElement } from '../../globals/decorators/carbon-element';
16
17
  const {
17
18
  prefix
18
19
  } = settings;
@@ -1 +1 @@
1
- {"version":3,"file":"modal-header.js","names":["html","customElement","LitElement","settings","styles","prefix","BXModalHeader","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","render","_t","_","static"],"sources":["components/modal/modal-header.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 { html, customElement, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\n\nconst { prefix } = settings;\n\n/**\n * Modal header.\n *\n * @element bx-modal-header\n */\n@customElement(`${prefix}-modal-header`)\nclass BXModalHeader extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeader;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,aAAa,EAAEC,UAAU,QAAQ,aAAa;AAC7D,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AAEjC,MAAM;EAAEC;AAAO,CAAC,GAAGF,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMG,aAAa,GAAAC,SAAA,EADlBN,aAAa,CAAE,GAAEI,MAAO,eAAc,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAxC,MACMH,aAAa,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAMvC;EAAC;IAAAI,CAAA,EANKN,aAAa;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,KAAA,EACjB,SAAAC,OAAA,EAAS;QACP,OAAOjB,IAAI,CAAAkB,EAAA,KAAAA,EAAA,GAAAC,CAAA;MACb;IAAC;MAAAL,IAAA;MAAAM,MAAA;MAAAL,GAAA;MAAAC,MAAA;QAAA,OAEeZ,MAAM;MAAA;IAAA;EAAA;AAAA,GALIF,UAAU;AAQtC,eAAeI,aAAa"}
1
+ {"version":3,"file":"modal-header.js","names":["html","LitElement","settings","styles","carbonElement","customElement","prefix","BXModalHeader","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","render","_t","_","static"],"sources":["components/modal/modal-header.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 { html, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Modal header.\n *\n * @element bx-modal-header\n */\n@customElement(`${prefix}-modal-header`)\nclass BXModalHeader extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeader;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,UAAU,QAAQ,aAAa;AAC9C,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AACjC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGJ,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMK,aAAa,GAAAC,SAAA,EADlBH,aAAa,CAAE,GAAEC,MAAO,eAAc,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAxC,MACMH,aAAa,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAMvC;EAAC;IAAAI,CAAA,EANKN,aAAa;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,KAAA,EACjB,SAAAC,OAAA,EAAS;QACP,OAAOlB,IAAI,CAAAmB,EAAA,KAAAA,EAAA,GAAAC,CAAA;MACb;IAAC;MAAAL,IAAA;MAAAM,MAAA;MAAAL,GAAA;MAAAC,MAAA;QAAA,OAEed,MAAM;MAAA;IAAA;EAAA;AAAA,GALIF,UAAU;AAQtC,eAAeM,aAAa"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2019, 2022
4
+ * Copyright IBM Corp. 2019, 2023
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
@@ -1 +1 @@
1
- {"version":3,"sources":["components/modal/modal-heading.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,UAAU,EAAiB,MAAM,aAAa,CAAC;AAM9D;;;;GAIG;AACH,cACM,cAAe,SAAQ,UAAU;IACrC,MAAM;IAIN,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,cAAc,CAAC","file":"modal-heading.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 { html, LitElement, customElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\n\nconst { prefix } = settings;\n\n/**\n * Modal heading.\n *\n * @element bx-modal-heading\n */\n@customElement(`${prefix}-modal-heading`)\nclass BXModalHeading extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeading;\n"]}
1
+ {"version":3,"sources":["components/modal/modal-heading.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,UAAU,EAAE,MAAM,aAAa,CAAC;AAO/C;;;;GAIG;AACH,cACM,cAAe,SAAQ,UAAU;IACrC,MAAM;IAIN,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,cAAc,CAAC","file":"modal-heading.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 { html, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Modal heading.\n *\n * @element bx-modal-heading\n */\n@customElement(`${prefix}-modal-heading`)\nclass BXModalHeading extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeading;\n"]}
@@ -4,15 +4,16 @@ let _ = t => t,
4
4
  /**
5
5
  * @license
6
6
  *
7
- * Copyright IBM Corp. 2019, 2022
7
+ * Copyright IBM Corp. 2019, 2023
8
8
  *
9
9
  * This source code is licensed under the Apache-2.0 license found in the
10
10
  * LICENSE file in the root directory of this source tree.
11
11
  */
12
12
 
13
- import { html, LitElement, customElement } from 'lit-element';
13
+ import { html, LitElement } from 'lit-element';
14
14
  import settings from 'carbon-components/es/globals/js/settings';
15
15
  import styles from "././modal.css.js";
16
+ import { carbonElement as customElement } from '../../globals/decorators/carbon-element';
16
17
  const {
17
18
  prefix
18
19
  } = settings;
@@ -1 +1 @@
1
- {"version":3,"file":"modal-heading.js","names":["html","LitElement","customElement","settings","styles","prefix","BXModalHeading","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","render","_t","_","static"],"sources":["components/modal/modal-heading.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 { html, LitElement, customElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\n\nconst { prefix } = settings;\n\n/**\n * Modal heading.\n *\n * @element bx-modal-heading\n */\n@customElement(`${prefix}-modal-heading`)\nclass BXModalHeading extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeading;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,UAAU,EAAEC,aAAa,QAAQ,aAAa;AAC7D,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AAEjC,MAAM;EAAEC;AAAO,CAAC,GAAGF,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMG,cAAc,GAAAC,SAAA,EADnBL,aAAa,CAAE,GAAEG,MAAO,gBAAe,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAzC,MACMH,cAAc,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAMxC;EAAC;IAAAI,CAAA,EANKN,cAAc;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAClB,SAAAC,OAAA,EAAS;QACP,OAAOjB,IAAI,CAAAkB,EAAA,KAAAA,EAAA,GAAAC,CAAA;MACb;IAAC;MAAAL,IAAA;MAAAM,MAAA;MAAAL,GAAA;MAAAC,MAAA;QAAA,OAEeZ,MAAM;MAAA;IAAA;EAAA;AAAA,GALKH,UAAU;AAQvC,eAAeK,cAAc"}
1
+ {"version":3,"file":"modal-heading.js","names":["html","LitElement","settings","styles","carbonElement","customElement","prefix","BXModalHeading","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","render","_t","_","static"],"sources":["components/modal/modal-heading.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 { html, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Modal heading.\n *\n * @element bx-modal-heading\n */\n@customElement(`${prefix}-modal-heading`)\nclass BXModalHeading extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalHeading;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,UAAU,QAAQ,aAAa;AAC9C,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AACjC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGJ,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMK,cAAc,GAAAC,SAAA,EADnBH,aAAa,CAAE,GAAEC,MAAO,gBAAe,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAzC,MACMH,cAAc,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAMxC;EAAC;IAAAI,CAAA,EANKN,cAAc;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAClB,SAAAC,OAAA,EAAS;QACP,OAAOlB,IAAI,CAAAmB,EAAA,KAAAA,EAAA,GAAAC,CAAA;MACb;IAAC;MAAAL,IAAA;MAAAM,MAAA;MAAAL,GAAA;MAAAC,MAAA;QAAA,OAEed,MAAM;MAAA;IAAA;EAAA;AAAA,GALKF,UAAU;AAQvC,eAAeM,cAAc"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2019, 2022
4
+ * Copyright IBM Corp. 2019, 2023
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
@@ -1 +1 @@
1
- {"version":3,"sources":["components/modal/modal-label.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,UAAU,EAAiB,MAAM,aAAa,CAAC;AAM9D;;;;GAIG;AACH,cACM,YAAa,SAAQ,UAAU;IACnC,MAAM;IAIN,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,YAAY,CAAC","file":"modal-label.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 { html, LitElement, customElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\n\nconst { prefix } = settings;\n\n/**\n * Modal label.\n *\n * @element bx-modal-label\n */\n@customElement(`${prefix}-modal-label`)\nclass BXModalLabel extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalLabel;\n"]}
1
+ {"version":3,"sources":["components/modal/modal-label.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,UAAU,EAAE,MAAM,aAAa,CAAC;AAO/C;;;;GAIG;AACH,cACM,YAAa,SAAQ,UAAU;IACnC,MAAM;IAIN,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,YAAY,CAAC","file":"modal-label.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 { html, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Modal label.\n *\n * @element bx-modal-label\n */\n@customElement(`${prefix}-modal-label`)\nclass BXModalLabel extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalLabel;\n"]}
@@ -4,15 +4,16 @@ let _ = t => t,
4
4
  /**
5
5
  * @license
6
6
  *
7
- * Copyright IBM Corp. 2019, 2022
7
+ * Copyright IBM Corp. 2019, 2023
8
8
  *
9
9
  * This source code is licensed under the Apache-2.0 license found in the
10
10
  * LICENSE file in the root directory of this source tree.
11
11
  */
12
12
 
13
- import { html, LitElement, customElement } from 'lit-element';
13
+ import { html, LitElement } from 'lit-element';
14
14
  import settings from 'carbon-components/es/globals/js/settings';
15
15
  import styles from "././modal.css.js";
16
+ import { carbonElement as customElement } from '../../globals/decorators/carbon-element';
16
17
  const {
17
18
  prefix
18
19
  } = settings;
@@ -1 +1 @@
1
- {"version":3,"file":"modal-label.js","names":["html","LitElement","customElement","settings","styles","prefix","BXModalLabel","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","render","_t","_","static"],"sources":["components/modal/modal-label.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 { html, LitElement, customElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\n\nconst { prefix } = settings;\n\n/**\n * Modal label.\n *\n * @element bx-modal-label\n */\n@customElement(`${prefix}-modal-label`)\nclass BXModalLabel extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalLabel;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,UAAU,EAAEC,aAAa,QAAQ,aAAa;AAC7D,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AAEjC,MAAM;EAAEC;AAAO,CAAC,GAAGF,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMG,YAAY,GAAAC,SAAA,EADjBL,aAAa,CAAE,GAAEG,MAAO,cAAa,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAvC,MACMH,YAAY,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAMtC;EAAC;IAAAI,CAAA,EANKN,YAAY;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAChB,SAAAC,OAAA,EAAS;QACP,OAAOjB,IAAI,CAAAkB,EAAA,KAAAA,EAAA,GAAAC,CAAA;MACb;IAAC;MAAAL,IAAA;MAAAM,MAAA;MAAAL,GAAA;MAAAC,MAAA;QAAA,OAEeZ,MAAM;MAAA;IAAA;EAAA;AAAA,GALGH,UAAU;AAQrC,eAAeK,YAAY"}
1
+ {"version":3,"file":"modal-label.js","names":["html","LitElement","settings","styles","carbonElement","customElement","prefix","BXModalLabel","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","key","value","render","_t","_","static"],"sources":["components/modal/modal-label.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 { html, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './modal.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Modal label.\n *\n * @element bx-modal-label\n */\n@customElement(`${prefix}-modal-label`)\nclass BXModalLabel extends LitElement {\n render() {\n return html` <slot></slot> `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModalLabel;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,UAAU,QAAQ,aAAa;AAC9C,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,kBAAc;AACjC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGJ,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMK,YAAY,GAAAC,SAAA,EADjBH,aAAa,CAAE,GAAEC,MAAO,cAAa,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAvC,MACMH,YAAY,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAMtC;EAAC;IAAAI,CAAA,EANKN,YAAY;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAChB,SAAAC,OAAA,EAAS;QACP,OAAOlB,IAAI,CAAAmB,EAAA,KAAAA,EAAA,GAAAC,CAAA;MACb;IAAC;MAAAL,IAAA;MAAAM,MAAA;MAAAL,GAAA;MAAAC,MAAA;QAAA,OAEed,MAAM;MAAA;IAAA;EAAA;AAAA,GALGF,UAAU;AAQrC,eAAeM,YAAY"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2019, 2022
4
+ * Copyright IBM Corp. 2019, 2023
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
@@ -1 +1 @@
1
- {"version":3,"sources":["components/modal/modal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAwC,UAAU,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIpC,OAAO,EAAE,UAAU,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CtB;;;;;;;;;GASG;AACH,cACM,OAAQ,SAAQ,YAA6B;IACjD;;OAEG;IACH,OAAO,CAAC,SAAS,CAAwB;IAEzC;;OAEG;IAEH,OAAO,CAAC,kBAAkB,CAAqB;IAE/C;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAqB;IAE7C;;;;OAIG;IAGH,OAAO,CAAC,YAAY,CAIlB;IAEF;;;;OAIG;IAGH,OAAO,CAAC,WAAW,CA+CjB;IAIF,OAAO,CAAC,cAAc,CAIpB;IAEF;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA0BjC;;OAEG;IAEH,cAAc,SAAM;IAEpB;;OAEG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,IAAI,aAAsB;IAE1B,MAAM;IAiCA,OAAO,CAAC,iBAAiB,KAAA;IAgC/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;IAMrB;;OAEG;IACH,MAAM,KAAK,mBAAmB,WAE7B;IAED;;OAEG;IACH,MAAM,KAAK,gBAAgB,WAE1B;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;;OAGG;IACH,MAAM,KAAK,gBAAgB,WAE1B;IAED;;OAEG;IACH,MAAM,KAAK,UAAU,WAEpB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,OAAO,CAAC","file":"modal.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 settings from 'carbon-components/es/globals/js/settings';\nimport { classMap } from 'lit-html/directives/class-map';\nimport { html, property, query, customElement, LitElement } from 'lit-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss';\nimport { selectorTabbable } from '../../globals/settings';\n\nexport { MODAL_SIZE };\n\nconst { prefix } = settings;\n\n// eslint-disable-next-line no-bitwise\nconst PRECEDING =\n Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS;\n// eslint-disable-next-line no-bitwise\nconst FOLLOWING =\n Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n/**\n * Tries to focus on the given elements and bails out if one of them is successful.\n *\n * @param elems The elements.\n * @param reverse `true` to go through the list in reverse order.\n * @returns `true` if one of the attempts is successful, `false` otherwise.\n */\nfunction tryFocusElems(\n elems: NodeListOf<HTMLElement>,\n reverse: boolean = false\n) {\n if (!reverse) {\n for (let i = 0; i < elems.length; ++i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n } else {\n for (let i = elems.length - 1; i >= 0; --i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Modal.\n *\n * @element bx-modal\n * @csspart dialog The dialog.\n * @fires bx-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires bx-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass BXModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#start-sentinel')\n private _startSentinelNode!: HTMLAnchorElement;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#end-sentinel')\n private _endSentinelNode!: HTMLAnchorElement;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.shadowRoot!) < 0) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handles `blur` event on this element.\n *\n * @param event The event.\n */\n @HostListener('shadowRoot:focusout')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => {\n const {\n open,\n _startSentinelNode: startSentinelNode,\n _endSentinelNode: endSentinelNode,\n } = this;\n const oldContains = target !== this && this.contains(target as Node);\n const currentContains =\n relatedTarget !== this &&\n (this.contains(relatedTarget as Node) ||\n (this.shadowRoot?.contains(relatedTarget as Node) &&\n relatedTarget !== (endSentinelNode as Node)));\n\n // Performs focus wrapping if _all_ of the following is met:\n // * This modal is open\n // * The viewport still has focus\n // * Modal body used to have focus but no longer has focus\n const { selectorTabbable: selectorTabbableForModal } = this\n .constructor as typeof BXModal;\n if (open && relatedTarget && oldContains && !currentContains) {\n const comparisonResult = (target as Node).compareDocumentPosition(\n relatedTarget as Node\n );\n // eslint-disable-next-line no-bitwise\n if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) {\n await (this.constructor as typeof BXModal)._delay();\n if (\n !tryFocusElems(\n this.querySelectorAll(selectorTabbableForModal),\n true\n ) &&\n relatedTarget !== this\n ) {\n this.focus();\n }\n }\n // eslint-disable-next-line no-bitwise\n else if (\n relatedTarget === endSentinelNode ||\n comparisonResult & FOLLOWING\n ) {\n await (this.constructor as typeof BXModal)._delay();\n if (!tryFocusElems(this.querySelectorAll(selectorTabbableForModal))) {\n this.focus();\n }\n }\n }\n };\n\n @HostListener('document:keydown')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof BXModal).selectorCloseButton\n )\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof BXModal).eventClose, init)\n );\n }\n }\n }\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.REGULAR;\n\n render() {\n const { size } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <a\n id=\"start-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n <div\n part=\"dialog\"\n class=${containerClasses}\n role=\"dialog\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot></slot>\n </div>\n <a\n id=\"end-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof BXModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof BXModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<bx-btn>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<bx-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else if (\n !tryFocusElems(\n this.querySelectorAll(\n (this.constructor as typeof BXModal).selectorTabbable\n ),\n true\n )\n ) {\n this.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms: number = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-btn[kind=\"primary\"]`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModal;\n"]}
1
+ {"version":3,"sources":["components/modal/modal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAyB,UAAU,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAKpC,OAAO,EAAE,UAAU,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CtB;;;;;;;;;GASG;AACH,cACM,OAAQ,SAAQ,YAA6B;IACjD;;OAEG;IACH,OAAO,CAAC,SAAS,CAAwB;IAEzC;;OAEG;IAEH,OAAO,CAAC,kBAAkB,CAAqB;IAE/C;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAqB;IAE7C;;;;OAIG;IAGH,OAAO,CAAC,YAAY,CAIlB;IAEF;;;;OAIG;IAGH,OAAO,CAAC,WAAW,CA+CjB;IAIF,OAAO,CAAC,cAAc,CAIpB;IAEF;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA0BjC;;OAEG;IAEH,cAAc,SAAM;IAEpB;;OAEG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,IAAI,aAAsB;IAE1B,MAAM;IAiCA,OAAO,CAAC,iBAAiB,KAAA;IAgC/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;IAMrB;;OAEG;IACH,MAAM,KAAK,mBAAmB,WAE7B;IAED;;OAEG;IACH,MAAM,KAAK,gBAAgB,WAE1B;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;;OAGG;IACH,MAAM,KAAK,gBAAgB,WAE1B;IAED;;OAEG;IACH,MAAM,KAAK,UAAU,WAEpB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,OAAO,CAAC","file":"modal.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 settings from 'carbon-components/es/globals/js/settings';\nimport { classMap } from 'lit-html/directives/class-map';\nimport { html, property, query, LitElement } from 'lit-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { MODAL_SIZE };\n\nconst { prefix } = settings;\n\n// eslint-disable-next-line no-bitwise\nconst PRECEDING =\n Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS;\n// eslint-disable-next-line no-bitwise\nconst FOLLOWING =\n Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n/**\n * Tries to focus on the given elements and bails out if one of them is successful.\n *\n * @param elems The elements.\n * @param reverse `true` to go through the list in reverse order.\n * @returns `true` if one of the attempts is successful, `false` otherwise.\n */\nfunction tryFocusElems(\n elems: NodeListOf<HTMLElement>,\n reverse: boolean = false\n) {\n if (!reverse) {\n for (let i = 0; i < elems.length; ++i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n } else {\n for (let i = elems.length - 1; i >= 0; --i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Modal.\n *\n * @element bx-modal\n * @csspart dialog The dialog.\n * @fires bx-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires bx-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass BXModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#start-sentinel')\n private _startSentinelNode!: HTMLAnchorElement;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#end-sentinel')\n private _endSentinelNode!: HTMLAnchorElement;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.shadowRoot!) < 0) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handles `blur` event on this element.\n *\n * @param event The event.\n */\n @HostListener('shadowRoot:focusout')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => {\n const {\n open,\n _startSentinelNode: startSentinelNode,\n _endSentinelNode: endSentinelNode,\n } = this;\n const oldContains = target !== this && this.contains(target as Node);\n const currentContains =\n relatedTarget !== this &&\n (this.contains(relatedTarget as Node) ||\n (this.shadowRoot?.contains(relatedTarget as Node) &&\n relatedTarget !== (endSentinelNode as Node)));\n\n // Performs focus wrapping if _all_ of the following is met:\n // * This modal is open\n // * The viewport still has focus\n // * Modal body used to have focus but no longer has focus\n const { selectorTabbable: selectorTabbableForModal } = this\n .constructor as typeof BXModal;\n if (open && relatedTarget && oldContains && !currentContains) {\n const comparisonResult = (target as Node).compareDocumentPosition(\n relatedTarget as Node\n );\n // eslint-disable-next-line no-bitwise\n if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) {\n await (this.constructor as typeof BXModal)._delay();\n if (\n !tryFocusElems(\n this.querySelectorAll(selectorTabbableForModal),\n true\n ) &&\n relatedTarget !== this\n ) {\n this.focus();\n }\n }\n // eslint-disable-next-line no-bitwise\n else if (\n relatedTarget === endSentinelNode ||\n comparisonResult & FOLLOWING\n ) {\n await (this.constructor as typeof BXModal)._delay();\n if (!tryFocusElems(this.querySelectorAll(selectorTabbableForModal))) {\n this.focus();\n }\n }\n }\n };\n\n @HostListener('document:keydown')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof BXModal).selectorCloseButton\n )\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof BXModal).eventClose, init)\n );\n }\n }\n }\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.REGULAR;\n\n render() {\n const { size } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <a\n id=\"start-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n <div\n part=\"dialog\"\n class=${containerClasses}\n role=\"dialog\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot></slot>\n </div>\n <a\n id=\"end-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof BXModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof BXModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<bx-btn>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<bx-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else if (\n !tryFocusElems(\n this.querySelectorAll(\n (this.constructor as typeof BXModal).selectorTabbable\n ),\n true\n )\n ) {\n this.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms: number = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-btn[kind=\"primary\"]`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModal;\n"]}
@@ -5,7 +5,7 @@ let _ = t => t,
5
5
  /**
6
6
  * @license
7
7
  *
8
- * Copyright IBM Corp. 2019, 2022
8
+ * Copyright IBM Corp. 2019, 2023
9
9
  *
10
10
  * This source code is licensed under the Apache-2.0 license found in the
11
11
  * LICENSE file in the root directory of this source tree.
@@ -13,12 +13,13 @@ let _ = t => t,
13
13
 
14
14
  import settings from 'carbon-components/es/globals/js/settings';
15
15
  import { classMap } from 'lit-html/directives/class-map';
16
- import { html, property, query, customElement, LitElement } from 'lit-element';
16
+ import { html, property, query, LitElement } from 'lit-element';
17
17
  import HostListener from '../../globals/decorators/host-listener';
18
18
  import HostListenerMixin from '../../globals/mixins/host-listener';
19
19
  import { MODAL_SIZE } from './defs';
20
20
  import styles from "././modal.css.js";
21
21
  import { selectorTabbable as _selectorTabbable } from '../../globals/settings';
22
+ import { carbonElement as customElement } from '../../globals/decorators/carbon-element';
22
23
  export { MODAL_SIZE };
23
24
  const {
24
25
  prefix
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","names":["settings","classMap","html","property","query","customElement","LitElement","HostListener","HostListenerMixin","MODAL_SIZE","styles","selectorTabbable","prefix","PRECEDING","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","FOLLOWING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINED_BY","tryFocusElems","elems","reverse","i","length","elem","focus","ownerDocument","activeElement","BXModal","_decorate","_initialize","_HostListenerMixin","constructor","args","F","d","kind","key","value","decorators","event","composedPath","indexOf","shadowRoot","_handleUserInitiatedClose","target","relatedTarget","_this$shadowRoot","open","_startSentinelNode","startSentinelNode","_endSentinelNode","endSentinelNode","oldContains","contains","currentContains","selectorTabbableForModal","comparisonResult","compareDocumentPosition","_delay","querySelectorAll","_handleClickContainer","matches","selectorCloseButton","triggeredBy","init","bubbles","cancelable","composed","detail","dispatchEvent","CustomEvent","eventBeforeClose","eventClose","attribute","type","Boolean","reflect","REGULAR","render","size","containerClass","split","filter","reduce","acc","item","_objectSpread","containerClasses","_t","_","updated","changedProperties","has","_launcher","primaryFocusNode","querySelector","selectorPrimaryFocus","static","ms","Promise","resolve","setTimeout"],"sources":["components/modal/modal.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 settings from 'carbon-components/es/globals/js/settings';\nimport { classMap } from 'lit-html/directives/class-map';\nimport { html, property, query, customElement, LitElement } from 'lit-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss';\nimport { selectorTabbable } from '../../globals/settings';\n\nexport { MODAL_SIZE };\n\nconst { prefix } = settings;\n\n// eslint-disable-next-line no-bitwise\nconst PRECEDING =\n Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS;\n// eslint-disable-next-line no-bitwise\nconst FOLLOWING =\n Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n/**\n * Tries to focus on the given elements and bails out if one of them is successful.\n *\n * @param elems The elements.\n * @param reverse `true` to go through the list in reverse order.\n * @returns `true` if one of the attempts is successful, `false` otherwise.\n */\nfunction tryFocusElems(\n elems: NodeListOf<HTMLElement>,\n reverse: boolean = false\n) {\n if (!reverse) {\n for (let i = 0; i < elems.length; ++i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n } else {\n for (let i = elems.length - 1; i >= 0; --i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Modal.\n *\n * @element bx-modal\n * @csspart dialog The dialog.\n * @fires bx-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires bx-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass BXModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#start-sentinel')\n private _startSentinelNode!: HTMLAnchorElement;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#end-sentinel')\n private _endSentinelNode!: HTMLAnchorElement;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.shadowRoot!) < 0) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handles `blur` event on this element.\n *\n * @param event The event.\n */\n @HostListener('shadowRoot:focusout')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => {\n const {\n open,\n _startSentinelNode: startSentinelNode,\n _endSentinelNode: endSentinelNode,\n } = this;\n const oldContains = target !== this && this.contains(target as Node);\n const currentContains =\n relatedTarget !== this &&\n (this.contains(relatedTarget as Node) ||\n (this.shadowRoot?.contains(relatedTarget as Node) &&\n relatedTarget !== (endSentinelNode as Node)));\n\n // Performs focus wrapping if _all_ of the following is met:\n // * This modal is open\n // * The viewport still has focus\n // * Modal body used to have focus but no longer has focus\n const { selectorTabbable: selectorTabbableForModal } = this\n .constructor as typeof BXModal;\n if (open && relatedTarget && oldContains && !currentContains) {\n const comparisonResult = (target as Node).compareDocumentPosition(\n relatedTarget as Node\n );\n // eslint-disable-next-line no-bitwise\n if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) {\n await (this.constructor as typeof BXModal)._delay();\n if (\n !tryFocusElems(\n this.querySelectorAll(selectorTabbableForModal),\n true\n ) &&\n relatedTarget !== this\n ) {\n this.focus();\n }\n }\n // eslint-disable-next-line no-bitwise\n else if (\n relatedTarget === endSentinelNode ||\n comparisonResult & FOLLOWING\n ) {\n await (this.constructor as typeof BXModal)._delay();\n if (!tryFocusElems(this.querySelectorAll(selectorTabbableForModal))) {\n this.focus();\n }\n }\n }\n };\n\n @HostListener('document:keydown')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof BXModal).selectorCloseButton\n )\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof BXModal).eventClose, init)\n );\n }\n }\n }\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.REGULAR;\n\n render() {\n const { size } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <a\n id=\"start-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n <div\n part=\"dialog\"\n class=${containerClasses}\n role=\"dialog\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot></slot>\n </div>\n <a\n id=\"end-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof BXModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof BXModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<bx-btn>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<bx-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else if (\n !tryFocusElems(\n this.querySelectorAll(\n (this.constructor as typeof BXModal).selectorTabbable\n ),\n true\n )\n ) {\n this.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms: number = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-btn[kind=\"primary\"]`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModal;\n"],"mappings":"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"}
1
+ {"version":3,"file":"modal.js","names":["settings","classMap","html","property","query","LitElement","HostListener","HostListenerMixin","MODAL_SIZE","styles","selectorTabbable","carbonElement","customElement","prefix","PRECEDING","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","FOLLOWING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINED_BY","tryFocusElems","elems","reverse","i","length","elem","focus","ownerDocument","activeElement","BXModal","_decorate","_initialize","_HostListenerMixin","constructor","args","F","d","kind","key","value","decorators","event","composedPath","indexOf","shadowRoot","_handleUserInitiatedClose","target","relatedTarget","_this$shadowRoot","open","_startSentinelNode","startSentinelNode","_endSentinelNode","endSentinelNode","oldContains","contains","currentContains","selectorTabbableForModal","comparisonResult","compareDocumentPosition","_delay","querySelectorAll","_handleClickContainer","matches","selectorCloseButton","triggeredBy","init","bubbles","cancelable","composed","detail","dispatchEvent","CustomEvent","eventBeforeClose","eventClose","attribute","type","Boolean","reflect","REGULAR","render","size","containerClass","split","filter","reduce","acc","item","_objectSpread","containerClasses","_t","_","updated","changedProperties","has","_launcher","primaryFocusNode","querySelector","selectorPrimaryFocus","static","ms","Promise","resolve","setTimeout"],"sources":["components/modal/modal.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 settings from 'carbon-components/es/globals/js/settings';\nimport { classMap } from 'lit-html/directives/class-map';\nimport { html, property, query, LitElement } from 'lit-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { MODAL_SIZE };\n\nconst { prefix } = settings;\n\n// eslint-disable-next-line no-bitwise\nconst PRECEDING =\n Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS;\n// eslint-disable-next-line no-bitwise\nconst FOLLOWING =\n Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n/**\n * Tries to focus on the given elements and bails out if one of them is successful.\n *\n * @param elems The elements.\n * @param reverse `true` to go through the list in reverse order.\n * @returns `true` if one of the attempts is successful, `false` otherwise.\n */\nfunction tryFocusElems(\n elems: NodeListOf<HTMLElement>,\n reverse: boolean = false\n) {\n if (!reverse) {\n for (let i = 0; i < elems.length; ++i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n } else {\n for (let i = elems.length - 1; i >= 0; --i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Modal.\n *\n * @element bx-modal\n * @csspart dialog The dialog.\n * @fires bx-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires bx-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass BXModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#start-sentinel')\n private _startSentinelNode!: HTMLAnchorElement;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#end-sentinel')\n private _endSentinelNode!: HTMLAnchorElement;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.shadowRoot!) < 0) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handles `blur` event on this element.\n *\n * @param event The event.\n */\n @HostListener('shadowRoot:focusout')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => {\n const {\n open,\n _startSentinelNode: startSentinelNode,\n _endSentinelNode: endSentinelNode,\n } = this;\n const oldContains = target !== this && this.contains(target as Node);\n const currentContains =\n relatedTarget !== this &&\n (this.contains(relatedTarget as Node) ||\n (this.shadowRoot?.contains(relatedTarget as Node) &&\n relatedTarget !== (endSentinelNode as Node)));\n\n // Performs focus wrapping if _all_ of the following is met:\n // * This modal is open\n // * The viewport still has focus\n // * Modal body used to have focus but no longer has focus\n const { selectorTabbable: selectorTabbableForModal } = this\n .constructor as typeof BXModal;\n if (open && relatedTarget && oldContains && !currentContains) {\n const comparisonResult = (target as Node).compareDocumentPosition(\n relatedTarget as Node\n );\n // eslint-disable-next-line no-bitwise\n if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) {\n await (this.constructor as typeof BXModal)._delay();\n if (\n !tryFocusElems(\n this.querySelectorAll(selectorTabbableForModal),\n true\n ) &&\n relatedTarget !== this\n ) {\n this.focus();\n }\n }\n // eslint-disable-next-line no-bitwise\n else if (\n relatedTarget === endSentinelNode ||\n comparisonResult & FOLLOWING\n ) {\n await (this.constructor as typeof BXModal)._delay();\n if (!tryFocusElems(this.querySelectorAll(selectorTabbableForModal))) {\n this.focus();\n }\n }\n }\n };\n\n @HostListener('document:keydown')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof BXModal).selectorCloseButton\n )\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof BXModal).eventClose, init)\n );\n }\n }\n }\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.REGULAR;\n\n render() {\n const { size } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <a\n id=\"start-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n <div\n part=\"dialog\"\n class=${containerClasses}\n role=\"dialog\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot></slot>\n </div>\n <a\n id=\"end-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof BXModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof BXModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<bx-btn>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<bx-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else if (\n !tryFocusElems(\n this.querySelectorAll(\n (this.constructor as typeof BXModal).selectorTabbable\n ),\n true\n )\n ) {\n this.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms: number = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-btn[kind=\"primary\"]`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModal;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2019, 2022
4
+ * Copyright IBM Corp. 2019, 2023
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
@@ -1 +1 @@
1
- {"version":3,"sources":["components/multi-select/multi-select-item.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,cAAc,MAAM,2BAA2B,CAAC;AAKvD;;;;GAIG;AACH,cACM,iBAAkB,SAAQ,cAAc;IAC5C;;OAEG;IAEH,QAAQ,MAAC;IAET;;OAEG;IAEH,aAAa,SAAM;IAEnB,MAAM;IAuBN;;OAEG;IACH,MAAM,KAAK,YAAY,WAEtB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,iBAAiB,CAAC","file":"multi-select-item.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 settings from 'carbon-components/es/globals/js/settings';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, property, customElement } from 'lit-element';\nimport BXDropdownItem from '../dropdown/dropdown-item';\nimport styles from './multi-select.scss';\n\nconst { prefix } = settings;\n\n/**\n * Multi select item.\n *\n * @element bx-multi-select-item\n */\n@customElement(`${prefix}-multi-select-item`)\nclass BXMultiSelectItem extends BXDropdownItem {\n /**\n * The property to hide when item is filtered from input\n */\n @property({ type: Boolean })\n filtered;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n render() {\n const { disabled, selected, selectionName, value } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\">\n <div class=\"${prefix}--form-item ${prefix}--checkbox-wrapper\">\n <input\n id=\"input\"\n type=\"checkbox\"\n class=\"${prefix}--checkbox\"\n tabindex=\"-1\"\n readonly\n ?disabled=${disabled}\n .checked=${selected}\n name=\"${ifDefined(selectionName || undefined)}\"\n value=\"${value}\" />\n <label for=\"input\" class=\"${prefix}--checkbox-label\">\n <span class=\"${prefix}--checkbox-label-text\"><slot></slot></span>\n </label>\n </div>\n </div>\n `;\n }\n\n /**\n * A selector that will return multi select.\n */\n static get selectorList() {\n return `${prefix}-multi-select`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelectItem;\n"]}
1
+ {"version":3,"sources":["components/multi-select/multi-select-item.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,cAAc,MAAM,2BAA2B,CAAC;AAMvD;;;;GAIG;AACH,cACM,iBAAkB,SAAQ,cAAc;IAC5C;;OAEG;IAEH,QAAQ,MAAC;IAET;;OAEG;IAEH,aAAa,SAAM;IAEnB,MAAM;IAuBN;;OAEG;IACH,MAAM,KAAK,YAAY,WAEtB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,iBAAiB,CAAC","file":"multi-select-item.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 settings from 'carbon-components/es/globals/js/settings';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, property } from 'lit-element';\nimport BXDropdownItem from '../dropdown/dropdown-item';\nimport styles from './multi-select.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Multi select item.\n *\n * @element bx-multi-select-item\n */\n@customElement(`${prefix}-multi-select-item`)\nclass BXMultiSelectItem extends BXDropdownItem {\n /**\n * The property to hide when item is filtered from input\n */\n @property({ type: Boolean })\n filtered;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n render() {\n const { disabled, selected, selectionName, value } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\">\n <div class=\"${prefix}--form-item ${prefix}--checkbox-wrapper\">\n <input\n id=\"input\"\n type=\"checkbox\"\n class=\"${prefix}--checkbox\"\n tabindex=\"-1\"\n readonly\n ?disabled=${disabled}\n .checked=${selected}\n name=\"${ifDefined(selectionName || undefined)}\"\n value=\"${value}\" />\n <label for=\"input\" class=\"${prefix}--checkbox-label\">\n <span class=\"${prefix}--checkbox-label-text\"><slot></slot></span>\n </label>\n </div>\n </div>\n `;\n }\n\n /**\n * A selector that will return multi select.\n */\n static get selectorList() {\n return `${prefix}-multi-select`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelectItem;\n"]}
@@ -4,7 +4,7 @@ let _ = t => t,
4
4
  /**
5
5
  * @license
6
6
  *
7
- * Copyright IBM Corp. 2019, 2022
7
+ * Copyright IBM Corp. 2019, 2023
8
8
  *
9
9
  * This source code is licensed under the Apache-2.0 license found in the
10
10
  * LICENSE file in the root directory of this source tree.
@@ -12,9 +12,10 @@ let _ = t => t,
12
12
 
13
13
  import settings from 'carbon-components/es/globals/js/settings';
14
14
  import { ifDefined } from 'lit-html/directives/if-defined';
15
- import { html, property, customElement } from 'lit-element';
15
+ import { html, property } from 'lit-element';
16
16
  import BXDropdownItem from '../dropdown/dropdown-item';
17
17
  import styles from "././multi-select.css.js";
18
+ import { carbonElement as customElement } from '../../globals/decorators/carbon-element';
18
19
  const {
19
20
  prefix
20
21
  } = settings;
@@ -1 +1 @@
1
- {"version":3,"file":"multi-select-item.js","names":["settings","ifDefined","html","property","customElement","BXDropdownItem","styles","prefix","BXMultiSelectItem","_decorate","_initialize","_BXDropdownItem","constructor","args","F","d","kind","decorators","type","Boolean","key","value","attribute","render","disabled","selected","selectionName","_t","_","undefined","static","selectorList"],"sources":["components/multi-select/multi-select-item.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2022\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 settings from 'carbon-components/es/globals/js/settings';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, property, customElement } from 'lit-element';\nimport BXDropdownItem from '../dropdown/dropdown-item';\nimport styles from './multi-select.scss';\n\nconst { prefix } = settings;\n\n/**\n * Multi select item.\n *\n * @element bx-multi-select-item\n */\n@customElement(`${prefix}-multi-select-item`)\nclass BXMultiSelectItem extends BXDropdownItem {\n /**\n * The property to hide when item is filtered from input\n */\n @property({ type: Boolean })\n filtered;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n render() {\n const { disabled, selected, selectionName, value } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\">\n <div class=\"${prefix}--form-item ${prefix}--checkbox-wrapper\">\n <input\n id=\"input\"\n type=\"checkbox\"\n class=\"${prefix}--checkbox\"\n tabindex=\"-1\"\n readonly\n ?disabled=${disabled}\n .checked=${selected}\n name=\"${ifDefined(selectionName || undefined)}\"\n value=\"${value}\" />\n <label for=\"input\" class=\"${prefix}--checkbox-label\">\n <span class=\"${prefix}--checkbox-label-text\"><slot></slot></span>\n </label>\n </div>\n </div>\n `;\n }\n\n /**\n * A selector that will return multi select.\n */\n static get selectorList() {\n return `${prefix}-multi-select`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelectItem;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,QAAQ,MAAM,0CAA0C;AAC/D,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,IAAI,EAAEC,QAAQ,EAAEC,aAAa,QAAQ,aAAa;AAC3D,OAAOC,cAAc,MAAM,2BAA2B;AACtD,OAAOC,MAAM,MAAM,yBAAqB;AAExC,MAAM;EAAEC;AAAO,CAAC,GAAGP,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMQ,iBAAiB,GAAAC,SAAA,EADtBL,aAAa,CAAE,GAAEG,MAAO,oBAAmB,CAAC,aAAAG,WAAA,EAAAC,eAAA;EAA7C,MACMH,iBAAiB,SAAAG,eAAA,CAAwB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EA4C/C;EAAC;IAAAI,CAAA,EA5CKN,iBAAiB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,UAAA,GAIpBd,QAAQ,CAAC;QAAEe,IAAI,EAAEC;MAAQ,CAAC,CAAC;MAAAC,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAM3Bd,QAAQ,CAAC;QAAEmB,SAAS,EAAE;MAAiB,CAAC,CAAC;MAAAF,GAAA;MAAAC,MAAA;QAAA,OAC1B,EAAE;MAAA;IAAA;MAAAL,IAAA;MAAAI,GAAA;MAAAC,KAAA;MAVlB;AACF;AACA;;MAIE;AACF;AACA;;MAIE,SAAAE,OAAA,EAAS;QACP,MAAM;UAAEC,QAAQ;UAAEC,QAAQ;UAAEC,aAAa;UAAEL;QAAM,CAAC,GAAG,IAAI;QACzD,OAAOnB,IAAI,CAAAyB,EAAA,KAAAA,EAAA,GAAAC,CAAA,sYACKrB,MAAM,EACJA,MAAM,EAAeA,MAAM,EAI5BA,MAAM,EAGHiB,QAAQ,EACTC,QAAQ,EACXxB,SAAS,CAACyB,aAAa,IAAIG,SAAS,CAAC,EACpCR,KAAK,EACYd,MAAM,EACjBA,MAAM;MAK/B;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAc,MAAA;MAAAV,GAAA;MAAAC,KAAA,EAGA,SAAAU,aAAA,EAA0B;QACxB,OAAQ,GAAExB,MAAO,eAAc;MACjC;IAAC;MAAAS,IAAA;MAAAc,MAAA;MAAAV,GAAA;MAAAC,MAAA;QAAA,OAEef,MAAM;MAAA;IAAA;EAAA;AAAA,GA3CQD,cAAc;AA8C9C,eAAeG,iBAAiB"}
1
+ {"version":3,"file":"multi-select-item.js","names":["settings","ifDefined","html","property","BXDropdownItem","styles","carbonElement","customElement","prefix","BXMultiSelectItem","_decorate","_initialize","_BXDropdownItem","constructor","args","F","d","kind","decorators","type","Boolean","key","value","attribute","render","disabled","selected","selectionName","_t","_","undefined","static","selectorList"],"sources":["components/multi-select/multi-select-item.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 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 settings from 'carbon-components/es/globals/js/settings';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, property } from 'lit-element';\nimport BXDropdownItem from '../dropdown/dropdown-item';\nimport styles from './multi-select.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Multi select item.\n *\n * @element bx-multi-select-item\n */\n@customElement(`${prefix}-multi-select-item`)\nclass BXMultiSelectItem extends BXDropdownItem {\n /**\n * The property to hide when item is filtered from input\n */\n @property({ type: Boolean })\n filtered;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n render() {\n const { disabled, selected, selectionName, value } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\">\n <div class=\"${prefix}--form-item ${prefix}--checkbox-wrapper\">\n <input\n id=\"input\"\n type=\"checkbox\"\n class=\"${prefix}--checkbox\"\n tabindex=\"-1\"\n readonly\n ?disabled=${disabled}\n .checked=${selected}\n name=\"${ifDefined(selectionName || undefined)}\"\n value=\"${value}\" />\n <label for=\"input\" class=\"${prefix}--checkbox-label\">\n <span class=\"${prefix}--checkbox-label-text\"><slot></slot></span>\n </label>\n </div>\n </div>\n `;\n }\n\n /**\n * A selector that will return multi select.\n */\n static get selectorList() {\n return `${prefix}-multi-select`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelectItem;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,QAAQ,MAAM,0CAA0C;AAC/D,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,IAAI,EAAEC,QAAQ,QAAQ,aAAa;AAC5C,OAAOC,cAAc,MAAM,2BAA2B;AACtD,OAAOC,MAAM,MAAM,yBAAqB;AACxC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGR,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMS,iBAAiB,GAAAC,SAAA,EADtBH,aAAa,CAAE,GAAEC,MAAO,oBAAmB,CAAC,aAAAG,WAAA,EAAAC,eAAA;EAA7C,MACMH,iBAAiB,SAAAG,eAAA,CAAwB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EA4C/C;EAAC;IAAAI,CAAA,EA5CKN,iBAAiB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,UAAA,GAIpBf,QAAQ,CAAC;QAAEgB,IAAI,EAAEC;MAAQ,CAAC,CAAC;MAAAC,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAM3Bf,QAAQ,CAAC;QAAEoB,SAAS,EAAE;MAAiB,CAAC,CAAC;MAAAF,GAAA;MAAAC,MAAA;QAAA,OAC1B,EAAE;MAAA;IAAA;MAAAL,IAAA;MAAAI,GAAA;MAAAC,KAAA;MAVlB;AACF;AACA;;MAIE;AACF;AACA;;MAIE,SAAAE,OAAA,EAAS;QACP,MAAM;UAAEC,QAAQ;UAAEC,QAAQ;UAAEC,aAAa;UAAEL;QAAM,CAAC,GAAG,IAAI;QACzD,OAAOpB,IAAI,CAAA0B,EAAA,KAAAA,EAAA,GAAAC,CAAA,sYACKrB,MAAM,EACJA,MAAM,EAAeA,MAAM,EAI5BA,MAAM,EAGHiB,QAAQ,EACTC,QAAQ,EACXzB,SAAS,CAAC0B,aAAa,IAAIG,SAAS,CAAC,EACpCR,KAAK,EACYd,MAAM,EACjBA,MAAM;MAK/B;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAc,MAAA;MAAAV,GAAA;MAAAC,KAAA,EAGA,SAAAU,aAAA,EAA0B;QACxB,OAAQ,GAAExB,MAAO,eAAc;MACjC;IAAC;MAAAS,IAAA;MAAAc,MAAA;MAAAV,GAAA;MAAAC,MAAA;QAAA,OAEejB,MAAM;MAAA;IAAA;EAAA;AAAA,GA3CQD,cAAc;AA8C9C,eAAeK,iBAAiB"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  *
4
- * Copyright IBM Corp. 2020, 2022
4
+ * Copyright IBM Corp. 2020, 2023
5
5
  *
6
6
  * This source code is licensed under the Apache-2.0 license found in the
7
7
  * LICENSE file in the root directory of this source tree.
@@ -1 +1 @@
1
- {"version":3,"sources":["components/multi-select/multi-select.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAKL,cAAc,EACf,MAAM,aAAa,CAAC;AAOrB,OAAO,UAAwC,MAAM,sBAAsB,CAAC;AAC5E,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;;;;;;;GAaG;AACH,cACM,aAAc,SAAQ,UAAU;IAEpC,UAAU,MAAC;IAEX;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAK;IAEhC;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAe;IAEvC;;OAEG;IAEH,OAAO,CAAC,oBAAoB,CAAe;IAE3C;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAoB;IAE5C;;OAEG;IAEH,OAAO,CAAC,YAAY,CAAe;IAEnC,SAAS,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,iBAAiB;IAKjE,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,iBAAiB;IA6B9D,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU;IAuB7C;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa;IA0BnD;;;OAGG;IAEH,SAAS,CAAC,6BAA6B,CAAC,KAAK,EAAE,aAAa;IAgC5D,SAAS,CAAC,8BAA8B;IAkBxC;;OAEG;IACH,SAAS,CAAC,qBAAqB,IAAI,cAAc;IAoBjD,SAAS,CAAC,8BAA8B,IAAI,cAAc,GAAG,IAAI;IAkBjE;;OAEG;IACH,SAAS,CAAC,YAAY;IAsBtB;;;;OAIG;IACH,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM;IA0BrC;;OAEG;IACH,SAAS,CAAC,8BAA8B;IAWxC;;OAEG;IAEH,mBAAmB,SAAM;IAEzB;;OAEG;IAEH,2BAA2B,SAAyB;IAEpD;;OAEG;IAEH,0BAA0B,SAA2B;IAErD,YAAY,CAAC,iBAAiB,KAAA;IAwB9B;;;OAGG;IACH,OAAO,CAAC,MAAM,KAAK,wBAAwB,GAE1C;IAED;;OAEG;IACH,MAAM,KAAK,uBAAuB,WAEjC;IAED;;;OAGG;IACH,MAAM,KAAK,YAAY,WAEtB;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;OAEG;IACH,MAAM,KAAK,mBAAmB,WAE7B;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;;OAGG;IACH,MAAM,KAAK,iBAAiB,WAE3B;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;;OAGG;IACH,MAAM,KAAK,iBAAiB,WAE3B;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,aAAa,CAAC","file":"multi-select.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2020, 2022\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 settings from 'carbon-components/es/globals/js/settings';\nimport {\n html,\n property,\n query,\n customElement,\n TemplateResult,\n} from 'lit-element';\nimport Close16 from '@carbon/icons/lib/close/16';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport BXDropdown, { DROPDOWN_KEYBOARD_ACTION } from '../dropdown/dropdown';\nimport BXMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss';\n\nexport {\n DROPDOWN_COLOR_SCHEME,\n DROPDOWN_SIZE,\n DROPDOWN_TYPE,\n} from '../dropdown/dropdown';\n\nconst { prefix } = settings;\n\n/**\n * Multi select.\n *\n * @element bx-multi-select\n * @fires bx-multi-select-beingselected\n * The custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n * @fires bx-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires bx-multi-select-beingtoggled\n * The custom event fired before the open state of this multi select is toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated toggling.\n * @fires bx-multi-select-toggled\n * The custom event fired after the open state of this multi select is toggled upon a user gesture.\n */\n@customElement(`${prefix}-multi-select`)\nclass BXMultiSelect extends BXDropdown {\n @property({ type: Boolean })\n filterable;\n\n /**\n * The count of selected items.\n */\n private _selectedItemsCount = 0;\n\n /**\n * The clear button.\n */\n @query('#clear-button')\n private _clearButtonNode!: HTMLElement;\n\n /**\n * The selection button.\n */\n @query('#selection-button')\n private _selectionButtonNode!: HTMLElement;\n\n /**\n * The `<input>` for filtering.\n */\n @query('input')\n private _filterInputNode!: HTMLInputElement;\n\n /**\n * The trigger button.\n */\n @query(`.${prefix}--list-box__field`)\n private _triggerNode!: HTMLElement;\n\n protected _selectionShouldChange(itemToSelect?: BXMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: BXMultiSelectItem) {\n if (itemToSelect) {\n itemToSelect.selected = !itemToSelect.selected;\n this._assistiveStatusText = itemToSelect.selected\n ? this.selectedItemAssistiveText\n : this.unselectedItemAssistiveText;\n } else {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as BXMultiSelectItem).selected = false;\n }\n );\n this._handleUserInitiatedToggle(false);\n this._assistiveStatusText = this.unselectedAllAssistiveText;\n }\n // Change in `.selected` hasn't been reflected to the corresponding attribute yet\n this.value = filter(\n this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItem\n ),\n (item) => (item as BXMultiSelectItem).selected\n )\n .map((item) => (item as BXMultiSelectItem).value)\n .join(',');\n }\n\n protected _handleClickInner(event: MouseEvent) {\n if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this._clearButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedClearInput();\n } else {\n const shouldIgnoreClickInner = (elem) =>\n elem.closest &&\n elem.closest(\n (this.constructor as typeof BXMultiSelect).selectorIgnoreClickInner\n );\n if (!event.composedPath().some(shouldIgnoreClickInner)) {\n super._handleClickInner(event);\n }\n if (this.filterable) this._filterInputNode.focus();\n }\n }\n\n /**\n * Handler for the `keypress` event, ensures filter still works upon entering space\n */\n protected _handleKeypressInner(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof BXDropdown).getAction(key);\n const { TRIGGERING } = DROPDOWN_KEYBOARD_ACTION;\n\n if (\n this._clearButtonNode?.contains(event.target as Node) &&\n // Space key should be handled by `<input>` unless \"clear selection\" button has focus\n (action === TRIGGERING || key === ' ')\n ) {\n this._handleUserInitiatedClearInput();\n } else if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n this.open = true;\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this.filterable) {\n this._handleKeypressInnerFlterable(event);\n } else {\n super._handleKeypressInner(event);\n }\n }\n\n /**\n * Special andler for the `keypress` event, ensures space selection for filterable\n * variation is disabled\n */\n\n protected _handleKeypressInnerFlterable(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof BXDropdown).getAction(key);\n if (!this.open) {\n switch (action) {\n case DROPDOWN_KEYBOARD_ACTION.TRIGGERING:\n this._handleUserInitiatedToggle(true);\n break;\n default:\n break;\n }\n } else {\n switch (key) {\n case 'Enter':\n {\n const constructor = this.constructor as typeof BXDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as BXMultiSelectItem;\n if (highlightedItem) {\n this._handleUserInitiatedSelectItem(highlightedItem);\n } else {\n this._handleUserInitiatedToggle(false);\n }\n }\n break;\n default:\n break;\n }\n }\n }\n\n protected _renderPrecedingTriggerContent() {\n const { clearSelectionLabel, _selectedItemsCount: selectedItemsCount } =\n this;\n return selectedItemsCount === 0\n ? undefined\n : html`\n <div\n id=\"selection-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection ${prefix}--list-box__selection--multi ${prefix}--tag--filter\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${selectedItemsCount}\n ${Close16({ 'aria-label': clearSelectionLabel })}\n </div>\n `;\n }\n\n /**\n @returns The main content of the trigger button.\n */\n protected _renderTriggerContent(): TemplateResult {\n const { triggerContent, _selectedItemContent: selectedItemContent } = this;\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || triggerContent}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${prefix}--text-input\"\n placeholder=\"${triggerContent}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n protected _renderFollowingTriggerContent(): TemplateResult | void {\n const { clearSelectionLabel, _filterInputNode: filterInputNode } = this;\n return filterInputNode &&\n filterInputNode.value.length > 0 &&\n this.filterable\n ? html`\n <div\n id=\"clear-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${Close16({ 'aria-label': clearSelectionLabel })}\n </div>\n `\n : undefined;\n }\n\n /**\n * Handles `input` event on the `<input>` for filtering.\n */\n protected _handleInput() {\n const items = this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItem\n );\n const inputValue = this._filterInputNode.value.toLocaleLowerCase();\n\n if (!this.open) this.open = true;\n\n forEach(items, (item) => {\n const itemValue = (item as HTMLElement).innerText.toLocaleLowerCase();\n\n if (!itemValue.includes(inputValue)) {\n (item as BXMultiSelectItem).setAttribute('filtered', '');\n (item as BXMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as BXMultiSelectItem).removeAttribute('filtered');\n }\n });\n\n this.requestUpdate();\n }\n\n /**\n * Navigate through dropdown items.\n *\n * @param direction `-1` to navigate backward, `1` to navigate forward.\n */\n protected _navigate(direction: number) {\n if (!this.filterable) {\n this._triggerNode.focus();\n super._navigate(direction);\n } else {\n // only navigate through remaining item\n const constructor = this.constructor as typeof BXMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemResults);\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n );\n const highlightedIndex = indexOf(items, highlightedItem!);\n\n let nextIndex = highlightedIndex + direction;\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n if (nextIndex >= items.length) {\n nextIndex = 0;\n }\n forEach(items, (item, i) => {\n (item as BXMultiSelectItem).highlighted = i === nextIndex;\n });\n }\n }\n\n /**\n * Handles user-initiated clearing the `<input>` for filtering.\n */\n protected _handleUserInitiatedClearInput() {\n const constructor = this.constructor as typeof BXMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemFiltered);\n this._filterInputNode.value = '';\n this.open = true;\n this._filterInputNode.focus();\n forEach(items, (item) => {\n (item as BXMultiSelectItem).removeAttribute('filtered');\n });\n }\n\n /**\n * The `aria-label` attribute for the icon to clear selection.\n */\n @property({ attribute: 'clear-selection-label' })\n clearSelectionLabel = '';\n\n /**\n * An assistive text for screen reader to announce, telling that an item is unselected.\n */\n @property({ attribute: 'unselected-item-assistive-text' })\n unselectedItemAssistiveText = 'Unselected an item.';\n\n /**\n * An assistive text for screen reader to announce, telling that all items are unselected.\n */\n @property({ attribute: 'unselected-all-assistive-text' })\n unselectedAllAssistiveText = 'Unselected all items.';\n\n shouldUpdate(changedProperties) {\n const { selectorItem } = this.constructor as typeof BXMultiSelect;\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as BXMultiSelectItem).size = this.size;\n });\n }\n if (changedProperties.has('value')) {\n const { value } = this;\n const values = !value ? [] : value.split(',');\n // Updates selection beforehand because our rendering logic for `<bx-multi-select>` looks for selected items via `qSA()`\n const items = this.querySelectorAll(selectorItem);\n forEach(items, (elem) => {\n (elem as BXMultiSelectItem).selected =\n values.indexOf((elem as BXMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) => values.indexOf((elem as BXMultiSelectItem).value) >= 0\n ).length;\n }\n return true;\n }\n\n /**\n * A selector to ignore the `click` events from.\n * Primary for the checkbox label where the `click` event will happen from the associated check box.\n */\n private static get selectorIgnoreClickInner() {\n return `.${prefix}--checkbox-label`;\n }\n\n /**\n * A selector that will return highlighted items.\n */\n static get selectorItemHighlighted() {\n return `${prefix}-multi-select-item[highlighted]`;\n }\n\n /**\n * A selector that will return multi select items.\n * We use a separate property from `.itemTagName` due to the nature in difference of tag name vs. selector.\n */\n static get selectorItem() {\n return `${prefix}-multi-select-item`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemFiltered() {\n return `${prefix}-multi-select-item[filtered]`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemResults() {\n return `${prefix}-multi-select-item:not([filtered])`;\n }\n\n /**\n * A selector that will return selected items.\n */\n static get selectorItemSelected() {\n return `${prefix}-multi-select-item[selected]`;\n }\n\n /**\n * The name of the custom event fired before this multi select item is being toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated action of toggling this multi select item.\n */\n static get eventBeforeToggle() {\n return `${prefix}-multi-select-beingtoggled`;\n }\n\n /**\n * The name of the custom event fired after this multi select item is toggled upon a user gesture.\n */\n static get eventToggle() {\n return `${prefix}-multi-select-toggled`;\n }\n\n /**\n * The name of the custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n */\n static get eventBeforeSelect() {\n return `${prefix}-multi-select-beingselected`;\n }\n\n /**\n * The name of the custom event fired after a a multi select item is selected upon a user gesture.\n */\n static get eventSelect() {\n return `${prefix}-multi-select-selected`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelect;\n"]}
1
+ {"version":3,"sources":["components/multi-select/multi-select.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAyB,cAAc,EAAE,MAAM,aAAa,CAAC;AAOpE,OAAO,UAAwC,MAAM,sBAAsB,CAAC;AAC5E,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAIpD,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;;;;;;;GAaG;AACH,cACM,aAAc,SAAQ,UAAU;IAEpC,UAAU,MAAC;IAEX;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAK;IAEhC;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAe;IAEvC;;OAEG;IAEH,OAAO,CAAC,oBAAoB,CAAe;IAE3C;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAoB;IAE5C;;OAEG;IAEH,OAAO,CAAC,YAAY,CAAe;IAEnC,SAAS,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,iBAAiB;IAKjE,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,iBAAiB;IA6B9D,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU;IAuB7C;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa;IA0BnD;;;OAGG;IAEH,SAAS,CAAC,6BAA6B,CAAC,KAAK,EAAE,aAAa;IAgC5D,SAAS,CAAC,8BAA8B;IAkBxC;;OAEG;IACH,SAAS,CAAC,qBAAqB,IAAI,cAAc;IAoBjD,SAAS,CAAC,8BAA8B,IAAI,cAAc,GAAG,IAAI;IAkBjE;;OAEG;IACH,SAAS,CAAC,YAAY;IAsBtB;;;;OAIG;IACH,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM;IA0BrC;;OAEG;IACH,SAAS,CAAC,8BAA8B;IAWxC;;OAEG;IAEH,mBAAmB,SAAM;IAEzB;;OAEG;IAEH,2BAA2B,SAAyB;IAEpD;;OAEG;IAEH,0BAA0B,SAA2B;IAErD,YAAY,CAAC,iBAAiB,KAAA;IAwB9B;;;OAGG;IACH,OAAO,CAAC,MAAM,KAAK,wBAAwB,GAE1C;IAED;;OAEG;IACH,MAAM,KAAK,uBAAuB,WAEjC;IAED;;;OAGG;IACH,MAAM,KAAK,YAAY,WAEtB;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;OAEG;IACH,MAAM,KAAK,mBAAmB,WAE7B;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;;OAGG;IACH,MAAM,KAAK,iBAAiB,WAE3B;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;;OAGG;IACH,MAAM,KAAK,iBAAiB,WAE3B;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,aAAa,CAAC","file":"multi-select.d.ts","sourcesContent":["/**\n * @license\n *\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 settings from 'carbon-components/es/globals/js/settings';\nimport { html, property, query, TemplateResult } from 'lit-element';\nimport Close16 from '@carbon/icons/lib/close/16';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport BXDropdown, { DROPDOWN_KEYBOARD_ACTION } from '../dropdown/dropdown';\nimport BXMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport {\n DROPDOWN_COLOR_SCHEME,\n DROPDOWN_SIZE,\n DROPDOWN_TYPE,\n} from '../dropdown/dropdown';\n\nconst { prefix } = settings;\n\n/**\n * Multi select.\n *\n * @element bx-multi-select\n * @fires bx-multi-select-beingselected\n * The custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n * @fires bx-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires bx-multi-select-beingtoggled\n * The custom event fired before the open state of this multi select is toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated toggling.\n * @fires bx-multi-select-toggled\n * The custom event fired after the open state of this multi select is toggled upon a user gesture.\n */\n@customElement(`${prefix}-multi-select`)\nclass BXMultiSelect extends BXDropdown {\n @property({ type: Boolean })\n filterable;\n\n /**\n * The count of selected items.\n */\n private _selectedItemsCount = 0;\n\n /**\n * The clear button.\n */\n @query('#clear-button')\n private _clearButtonNode!: HTMLElement;\n\n /**\n * The selection button.\n */\n @query('#selection-button')\n private _selectionButtonNode!: HTMLElement;\n\n /**\n * The `<input>` for filtering.\n */\n @query('input')\n private _filterInputNode!: HTMLInputElement;\n\n /**\n * The trigger button.\n */\n @query(`.${prefix}--list-box__field`)\n private _triggerNode!: HTMLElement;\n\n protected _selectionShouldChange(itemToSelect?: BXMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: BXMultiSelectItem) {\n if (itemToSelect) {\n itemToSelect.selected = !itemToSelect.selected;\n this._assistiveStatusText = itemToSelect.selected\n ? this.selectedItemAssistiveText\n : this.unselectedItemAssistiveText;\n } else {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as BXMultiSelectItem).selected = false;\n }\n );\n this._handleUserInitiatedToggle(false);\n this._assistiveStatusText = this.unselectedAllAssistiveText;\n }\n // Change in `.selected` hasn't been reflected to the corresponding attribute yet\n this.value = filter(\n this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItem\n ),\n (item) => (item as BXMultiSelectItem).selected\n )\n .map((item) => (item as BXMultiSelectItem).value)\n .join(',');\n }\n\n protected _handleClickInner(event: MouseEvent) {\n if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this._clearButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedClearInput();\n } else {\n const shouldIgnoreClickInner = (elem) =>\n elem.closest &&\n elem.closest(\n (this.constructor as typeof BXMultiSelect).selectorIgnoreClickInner\n );\n if (!event.composedPath().some(shouldIgnoreClickInner)) {\n super._handleClickInner(event);\n }\n if (this.filterable) this._filterInputNode.focus();\n }\n }\n\n /**\n * Handler for the `keypress` event, ensures filter still works upon entering space\n */\n protected _handleKeypressInner(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof BXDropdown).getAction(key);\n const { TRIGGERING } = DROPDOWN_KEYBOARD_ACTION;\n\n if (\n this._clearButtonNode?.contains(event.target as Node) &&\n // Space key should be handled by `<input>` unless \"clear selection\" button has focus\n (action === TRIGGERING || key === ' ')\n ) {\n this._handleUserInitiatedClearInput();\n } else if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n this.open = true;\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this.filterable) {\n this._handleKeypressInnerFlterable(event);\n } else {\n super._handleKeypressInner(event);\n }\n }\n\n /**\n * Special andler for the `keypress` event, ensures space selection for filterable\n * variation is disabled\n */\n\n protected _handleKeypressInnerFlterable(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof BXDropdown).getAction(key);\n if (!this.open) {\n switch (action) {\n case DROPDOWN_KEYBOARD_ACTION.TRIGGERING:\n this._handleUserInitiatedToggle(true);\n break;\n default:\n break;\n }\n } else {\n switch (key) {\n case 'Enter':\n {\n const constructor = this.constructor as typeof BXDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as BXMultiSelectItem;\n if (highlightedItem) {\n this._handleUserInitiatedSelectItem(highlightedItem);\n } else {\n this._handleUserInitiatedToggle(false);\n }\n }\n break;\n default:\n break;\n }\n }\n }\n\n protected _renderPrecedingTriggerContent() {\n const { clearSelectionLabel, _selectedItemsCount: selectedItemsCount } =\n this;\n return selectedItemsCount === 0\n ? undefined\n : html`\n <div\n id=\"selection-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection ${prefix}--list-box__selection--multi ${prefix}--tag--filter\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${selectedItemsCount}\n ${Close16({ 'aria-label': clearSelectionLabel })}\n </div>\n `;\n }\n\n /**\n @returns The main content of the trigger button.\n */\n protected _renderTriggerContent(): TemplateResult {\n const { triggerContent, _selectedItemContent: selectedItemContent } = this;\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || triggerContent}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${prefix}--text-input\"\n placeholder=\"${triggerContent}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n protected _renderFollowingTriggerContent(): TemplateResult | void {\n const { clearSelectionLabel, _filterInputNode: filterInputNode } = this;\n return filterInputNode &&\n filterInputNode.value.length > 0 &&\n this.filterable\n ? html`\n <div\n id=\"clear-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${Close16({ 'aria-label': clearSelectionLabel })}\n </div>\n `\n : undefined;\n }\n\n /**\n * Handles `input` event on the `<input>` for filtering.\n */\n protected _handleInput() {\n const items = this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItem\n );\n const inputValue = this._filterInputNode.value.toLocaleLowerCase();\n\n if (!this.open) this.open = true;\n\n forEach(items, (item) => {\n const itemValue = (item as HTMLElement).innerText.toLocaleLowerCase();\n\n if (!itemValue.includes(inputValue)) {\n (item as BXMultiSelectItem).setAttribute('filtered', '');\n (item as BXMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as BXMultiSelectItem).removeAttribute('filtered');\n }\n });\n\n this.requestUpdate();\n }\n\n /**\n * Navigate through dropdown items.\n *\n * @param direction `-1` to navigate backward, `1` to navigate forward.\n */\n protected _navigate(direction: number) {\n if (!this.filterable) {\n this._triggerNode.focus();\n super._navigate(direction);\n } else {\n // only navigate through remaining item\n const constructor = this.constructor as typeof BXMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemResults);\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n );\n const highlightedIndex = indexOf(items, highlightedItem!);\n\n let nextIndex = highlightedIndex + direction;\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n if (nextIndex >= items.length) {\n nextIndex = 0;\n }\n forEach(items, (item, i) => {\n (item as BXMultiSelectItem).highlighted = i === nextIndex;\n });\n }\n }\n\n /**\n * Handles user-initiated clearing the `<input>` for filtering.\n */\n protected _handleUserInitiatedClearInput() {\n const constructor = this.constructor as typeof BXMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemFiltered);\n this._filterInputNode.value = '';\n this.open = true;\n this._filterInputNode.focus();\n forEach(items, (item) => {\n (item as BXMultiSelectItem).removeAttribute('filtered');\n });\n }\n\n /**\n * The `aria-label` attribute for the icon to clear selection.\n */\n @property({ attribute: 'clear-selection-label' })\n clearSelectionLabel = '';\n\n /**\n * An assistive text for screen reader to announce, telling that an item is unselected.\n */\n @property({ attribute: 'unselected-item-assistive-text' })\n unselectedItemAssistiveText = 'Unselected an item.';\n\n /**\n * An assistive text for screen reader to announce, telling that all items are unselected.\n */\n @property({ attribute: 'unselected-all-assistive-text' })\n unselectedAllAssistiveText = 'Unselected all items.';\n\n shouldUpdate(changedProperties) {\n const { selectorItem } = this.constructor as typeof BXMultiSelect;\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as BXMultiSelectItem).size = this.size;\n });\n }\n if (changedProperties.has('value')) {\n const { value } = this;\n const values = !value ? [] : value.split(',');\n // Updates selection beforehand because our rendering logic for `<bx-multi-select>` looks for selected items via `qSA()`\n const items = this.querySelectorAll(selectorItem);\n forEach(items, (elem) => {\n (elem as BXMultiSelectItem).selected =\n values.indexOf((elem as BXMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) => values.indexOf((elem as BXMultiSelectItem).value) >= 0\n ).length;\n }\n return true;\n }\n\n /**\n * A selector to ignore the `click` events from.\n * Primary for the checkbox label where the `click` event will happen from the associated check box.\n */\n private static get selectorIgnoreClickInner() {\n return `.${prefix}--checkbox-label`;\n }\n\n /**\n * A selector that will return highlighted items.\n */\n static get selectorItemHighlighted() {\n return `${prefix}-multi-select-item[highlighted]`;\n }\n\n /**\n * A selector that will return multi select items.\n * We use a separate property from `.itemTagName` due to the nature in difference of tag name vs. selector.\n */\n static get selectorItem() {\n return `${prefix}-multi-select-item`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemFiltered() {\n return `${prefix}-multi-select-item[filtered]`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemResults() {\n return `${prefix}-multi-select-item:not([filtered])`;\n }\n\n /**\n * A selector that will return selected items.\n */\n static get selectorItemSelected() {\n return `${prefix}-multi-select-item[selected]`;\n }\n\n /**\n * The name of the custom event fired before this multi select item is being toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated action of toggling this multi select item.\n */\n static get eventBeforeToggle() {\n return `${prefix}-multi-select-beingtoggled`;\n }\n\n /**\n * The name of the custom event fired after this multi select item is toggled upon a user gesture.\n */\n static get eventToggle() {\n return `${prefix}-multi-select-toggled`;\n }\n\n /**\n * The name of the custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n */\n static get eventBeforeSelect() {\n return `${prefix}-multi-select-beingselected`;\n }\n\n /**\n * The name of the custom event fired after a a multi select item is selected upon a user gesture.\n */\n static get eventSelect() {\n return `${prefix}-multi-select-selected`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelect;\n"]}
@@ -9,18 +9,19 @@ let _ = t => t,
9
9
  /**
10
10
  * @license
11
11
  *
12
- * Copyright IBM Corp. 2020, 2022
12
+ * Copyright IBM Corp. 2020, 2023
13
13
  *
14
14
  * This source code is licensed under the Apache-2.0 license found in the
15
15
  * LICENSE file in the root directory of this source tree.
16
16
  */
17
17
 
18
18
  import settings from 'carbon-components/es/globals/js/settings';
19
- import { html, property, query, customElement } from 'lit-element';
19
+ import { html, property, query } from 'lit-element';
20
20
  import Close16 from "../../icons/close/16";
21
21
  import { filter, forEach, indexOf } from '../../globals/internal/collection-helpers';
22
22
  import BXDropdown, { DROPDOWN_KEYBOARD_ACTION } from '../dropdown/dropdown';
23
23
  import styles from "././multi-select.css.js";
24
+ import { carbonElement as customElement } from '../../globals/decorators/carbon-element';
24
25
  export { DROPDOWN_COLOR_SCHEME, DROPDOWN_SIZE, DROPDOWN_TYPE } from '../dropdown/dropdown';
25
26
  const {
26
27
  prefix