@carbon/web-components 2.0.0-beta.3 → 2.0.0-beta.4

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 (615) hide show
  1. package/README.md +9 -9
  2. package/custom-elements.json +4026 -1801
  3. package/es/components/breadcrumb/breadcrumb.css.js +1 -1
  4. package/es/components/breadcrumb/breadcrumb.rtl.css.js +1 -1
  5. package/es/components/button/button.css.js +1 -1
  6. package/es/components/button/button.d.ts +12 -4
  7. package/es/components/button/button.d.ts.map +1 -1
  8. package/es/components/button/button.js +57 -19
  9. package/es/components/button/button.js.map +1 -1
  10. package/es/components/button/button.rtl.css.js +1 -1
  11. package/es/components/checkbox/checkbox.css.js +1 -1
  12. package/es/components/checkbox/checkbox.d.ts +9 -0
  13. package/es/components/checkbox/checkbox.d.ts.map +1 -1
  14. package/es/components/checkbox/checkbox.js +32 -1
  15. package/es/components/checkbox/checkbox.js.map +1 -1
  16. package/es/components/checkbox/checkbox.rtl.css.js +1 -1
  17. package/es/components/code-snippet/code-snippet-skeleton.d.ts +2 -2
  18. package/es/components/code-snippet/code-snippet-skeleton.d.ts.map +1 -1
  19. package/es/components/code-snippet/code-snippet-skeleton.js +4 -4
  20. package/es/components/code-snippet/code-snippet-skeleton.js.map +1 -1
  21. package/es/components/code-snippet/code-snippet.css.js +1 -1
  22. package/es/components/code-snippet/code-snippet.d.ts +75 -29
  23. package/es/components/code-snippet/code-snippet.d.ts.map +1 -1
  24. package/es/components/code-snippet/code-snippet.js +370 -164
  25. package/es/components/code-snippet/code-snippet.js.map +1 -1
  26. package/es/components/code-snippet/code-snippet.rtl.css.js +1 -1
  27. package/es/components/copy/copy.d.ts +1 -2
  28. package/es/components/copy/copy.d.ts.map +1 -1
  29. package/es/components/copy/copy.js +6 -13
  30. package/es/components/copy/copy.js.map +1 -1
  31. package/es/components/copy-button/copy-button.css.js +1 -1
  32. package/es/components/copy-button/copy-button.d.ts +8 -0
  33. package/es/components/copy-button/copy-button.d.ts.map +1 -1
  34. package/es/components/copy-button/copy-button.js +38 -2
  35. package/es/components/copy-button/copy-button.js.map +1 -1
  36. package/es/components/copy-button/copy-button.rtl.css.js +1 -1
  37. package/es/components/data-table/data-table.css.js +1 -1
  38. package/es/components/data-table/data-table.rtl.css.js +1 -1
  39. package/es/components/data-table/defs.d.ts +0 -13
  40. package/es/components/data-table/defs.d.ts.map +1 -1
  41. package/es/components/data-table/defs.js +0 -9
  42. package/es/components/data-table/defs.js.map +1 -1
  43. package/es/components/data-table/index.d.ts +6 -5
  44. package/es/components/data-table/index.d.ts.map +1 -1
  45. package/es/components/data-table/index.js +6 -5
  46. package/es/components/data-table/index.js.map +1 -1
  47. package/es/components/data-table/table-batch-actions.d.ts +7 -2
  48. package/es/components/data-table/table-batch-actions.d.ts.map +1 -1
  49. package/es/components/data-table/table-batch-actions.js +25 -6
  50. package/es/components/data-table/table-batch-actions.js.map +1 -1
  51. package/es/components/data-table/table-body.d.ts +8 -4
  52. package/es/components/data-table/table-body.d.ts.map +1 -1
  53. package/es/components/data-table/table-body.js +21 -14
  54. package/es/components/data-table/table-body.js.map +1 -1
  55. package/es/components/data-table/table-cell-content.d.ts +21 -0
  56. package/es/components/data-table/table-cell-content.d.ts.map +1 -0
  57. package/es/components/data-table/table-cell-content.js +53 -0
  58. package/es/components/data-table/table-cell-content.js.map +1 -0
  59. package/es/components/data-table/table-cell.d.ts +15 -2
  60. package/es/components/data-table/table-cell.d.ts.map +1 -1
  61. package/es/components/data-table/table-cell.js +43 -8
  62. package/es/components/data-table/table-cell.js.map +1 -1
  63. package/es/components/data-table/table-expanded-row.d.ts +336 -2
  64. package/es/components/data-table/table-expanded-row.d.ts.map +1 -1
  65. package/es/components/data-table/table-expanded-row.js +69 -16
  66. package/es/components/data-table/table-expanded-row.js.map +1 -1
  67. package/es/components/data-table/table-head.d.ts +7 -2
  68. package/es/components/data-table/table-head.d.ts.map +1 -1
  69. package/es/components/data-table/table-head.js +15 -6
  70. package/es/components/data-table/table-head.js.map +1 -1
  71. package/es/components/data-table/table-header-cell.d.ts +21 -3
  72. package/es/components/data-table/table-header-cell.d.ts.map +1 -1
  73. package/es/components/data-table/table-header-cell.js +67 -10
  74. package/es/components/data-table/table-header-cell.js.map +1 -1
  75. package/es/components/data-table/table-header-description.d.ts +21 -0
  76. package/es/components/data-table/table-header-description.d.ts.map +1 -0
  77. package/es/components/data-table/table-header-description.js +53 -0
  78. package/es/components/data-table/table-header-description.js.map +1 -0
  79. package/es/components/data-table/table-header-row.d.ts +3 -3
  80. package/es/components/data-table/table-header-row.d.ts.map +1 -1
  81. package/es/components/data-table/table-header-row.js +6 -6
  82. package/es/components/data-table/table-header-row.js.map +1 -1
  83. package/es/components/data-table/table-header-title.d.ts +21 -0
  84. package/es/components/data-table/table-header-title.d.ts.map +1 -0
  85. package/es/components/data-table/table-header-title.js +53 -0
  86. package/es/components/data-table/table-header-title.js.map +1 -0
  87. package/es/components/data-table/table-row.d.ts +413 -5
  88. package/es/components/data-table/table-row.d.ts.map +1 -1
  89. package/es/components/data-table/table-row.js +386 -45
  90. package/es/components/data-table/table-row.js.map +1 -1
  91. package/es/components/data-table/table-skeleton.d.ts +59 -0
  92. package/es/components/data-table/table-skeleton.d.ts.map +1 -0
  93. package/es/components/data-table/table-skeleton.js +259 -0
  94. package/es/components/data-table/table-skeleton.js.map +1 -0
  95. package/es/components/data-table/table-toolbar-content.d.ts +6 -2
  96. package/es/components/data-table/table-toolbar-content.d.ts.map +1 -1
  97. package/es/components/data-table/table-toolbar-content.js +21 -4
  98. package/es/components/data-table/table-toolbar-content.js.map +1 -1
  99. package/es/components/data-table/table-toolbar-search.d.ts +7 -3
  100. package/es/components/data-table/table-toolbar-search.d.ts.map +1 -1
  101. package/es/components/data-table/table-toolbar-search.js +25 -8
  102. package/es/components/data-table/table-toolbar-search.js.map +1 -1
  103. package/es/components/data-table/table-toolbar.d.ts +19 -2
  104. package/es/components/data-table/table-toolbar.d.ts.map +1 -1
  105. package/es/components/data-table/table-toolbar.js +68 -13
  106. package/es/components/data-table/table-toolbar.js.map +1 -1
  107. package/es/components/data-table/table.d.ts +556 -6
  108. package/es/components/data-table/table.d.ts.map +1 -1
  109. package/es/components/data-table/table.js +1012 -15
  110. package/es/components/data-table/table.js.map +1 -1
  111. package/es/components/dropdown/defs.d.ts +6 -6
  112. package/es/components/dropdown/defs.d.ts.map +1 -1
  113. package/es/components/dropdown/defs.js +2 -2
  114. package/es/components/dropdown/defs.js.map +1 -1
  115. package/es/components/dropdown/dropdown-item.d.ts.map +1 -1
  116. package/es/components/dropdown/dropdown-item.js +1 -1
  117. package/es/components/dropdown/dropdown-item.js.map +1 -1
  118. package/es/components/dropdown/dropdown.d.ts +9 -2
  119. package/es/components/dropdown/dropdown.d.ts.map +1 -1
  120. package/es/components/dropdown/dropdown.js +83 -62
  121. package/es/components/dropdown/dropdown.js.map +1 -1
  122. package/es/components/file-uploader/demo-file-uploader.d.ts +1 -1
  123. package/es/components/file-uploader/demo-file-uploader.d.ts.map +1 -1
  124. package/es/components/file-uploader/demo-file-uploader.js +38 -4
  125. package/es/components/file-uploader/demo-file-uploader.js.map +1 -1
  126. package/es/components/floating-menu/defs.d.ts +1 -39
  127. package/es/components/floating-menu/defs.d.ts.map +1 -1
  128. package/es/components/floating-menu/defs.js +2 -23
  129. package/es/components/floating-menu/defs.js.map +1 -1
  130. package/es/components/floating-menu/floating-menu-trigger.d.ts +3 -3
  131. package/es/components/floating-menu/floating-menu-trigger.d.ts.map +1 -1
  132. package/es/components/floating-menu/floating-menu.d.ts +11 -13
  133. package/es/components/floating-menu/floating-menu.d.ts.map +1 -1
  134. package/es/components/floating-menu/floating-menu.js +44 -54
  135. package/es/components/floating-menu/floating-menu.js.map +1 -1
  136. package/es/components/form/form-item.d.ts +2 -2
  137. package/es/components/form/form-item.d.ts.map +1 -1
  138. package/es/components/form/form-item.js +4 -4
  139. package/es/components/form/form-item.js.map +1 -1
  140. package/es/components/form-group/form-group.css.js +12 -0
  141. package/es/components/form-group/form-group.d.ts +44 -0
  142. package/es/components/form-group/form-group.d.ts.map +1 -0
  143. package/es/components/form-group/form-group.js +141 -0
  144. package/es/components/form-group/form-group.js.map +1 -0
  145. package/es/components/form-group/form-group.rtl.css.js +12 -0
  146. package/es/components/form-group/index.d.ts +11 -0
  147. package/es/components/form-group/index.d.ts.map +1 -0
  148. package/es/components/form-group/index.js +11 -0
  149. package/es/components/form-group/index.js.map +1 -0
  150. package/es/components/icon-button/icon-button.css.js +1 -1
  151. package/es/components/icon-button/icon-button.d.ts +1 -1
  152. package/es/components/icon-button/icon-button.d.ts.map +1 -1
  153. package/es/components/icon-button/icon-button.js +5 -3
  154. package/es/components/icon-button/icon-button.js.map +1 -1
  155. package/es/components/icon-button/icon-button.rtl.css.js +1 -1
  156. package/es/components/list/list.css.js +1 -1
  157. package/es/components/list/list.rtl.css.js +1 -1
  158. package/es/components/modal/defs.d.ts +3 -3
  159. package/es/components/modal/defs.d.ts.map +1 -1
  160. package/es/components/modal/defs.js +2 -2
  161. package/es/components/modal/defs.js.map +1 -1
  162. package/es/components/modal/index.d.ts +2 -1
  163. package/es/components/modal/index.d.ts.map +1 -1
  164. package/es/components/modal/index.js +2 -1
  165. package/es/components/modal/index.js.map +1 -1
  166. package/es/components/modal/modal-body-content.d.ts +21 -0
  167. package/es/components/modal/modal-body-content.d.ts.map +1 -0
  168. package/es/components/modal/modal-body-content.js +53 -0
  169. package/es/components/modal/modal-body-content.js.map +1 -0
  170. package/es/components/modal/modal-body.d.ts +2 -2
  171. package/es/components/modal/modal-body.d.ts.map +1 -1
  172. package/es/components/modal/modal-body.js +4 -4
  173. package/es/components/modal/modal-body.js.map +1 -1
  174. package/es/components/modal/modal-close-button.d.ts +5 -5
  175. package/es/components/modal/modal-close-button.d.ts.map +1 -1
  176. package/es/components/modal/modal-close-button.js +9 -9
  177. package/es/components/modal/modal-close-button.js.map +1 -1
  178. package/es/components/modal/modal-footer.d.ts +3 -3
  179. package/es/components/modal/modal-footer.d.ts.map +1 -1
  180. package/es/components/modal/modal-footer.js +13 -21
  181. package/es/components/modal/modal-footer.js.map +1 -1
  182. package/es/components/modal/modal-header.d.ts +2 -2
  183. package/es/components/modal/modal-header.d.ts.map +1 -1
  184. package/es/components/modal/modal-header.js +4 -4
  185. package/es/components/modal/modal-header.js.map +1 -1
  186. package/es/components/modal/modal-heading.d.ts +2 -2
  187. package/es/components/modal/modal-heading.d.ts.map +1 -1
  188. package/es/components/modal/modal-heading.js +4 -4
  189. package/es/components/modal/modal-heading.js.map +1 -1
  190. package/es/components/modal/modal-label.d.ts +2 -2
  191. package/es/components/modal/modal-label.d.ts.map +1 -1
  192. package/es/components/modal/modal-label.js +4 -4
  193. package/es/components/modal/modal-label.js.map +1 -1
  194. package/es/components/modal/modal.css.js +1 -1
  195. package/es/components/modal/modal.d.ts +33 -3
  196. package/es/components/modal/modal.d.ts.map +1 -1
  197. package/es/components/modal/modal.js +121 -14
  198. package/es/components/modal/modal.js.map +1 -1
  199. package/es/components/modal/modal.rtl.css.js +1 -1
  200. package/es/components/multi-select/defs.d.ts +27 -0
  201. package/es/components/multi-select/defs.d.ts.map +1 -0
  202. package/es/components/multi-select/defs.js +19 -0
  203. package/es/components/multi-select/defs.js.map +1 -0
  204. package/es/components/multi-select/multi-select-item.d.ts.map +1 -1
  205. package/es/components/multi-select/multi-select-item.js +9 -14
  206. package/es/components/multi-select/multi-select-item.js.map +1 -1
  207. package/es/components/multi-select/multi-select.css.js +1 -1
  208. package/es/components/multi-select/multi-select.d.ts +44 -5
  209. package/es/components/multi-select/multi-select.d.ts.map +1 -1
  210. package/es/components/multi-select/multi-select.js +250 -32
  211. package/es/components/multi-select/multi-select.js.map +1 -1
  212. package/es/components/multi-select/multi-select.rtl.css.js +1 -1
  213. package/es/components/number-input/number-input.css.js +1 -1
  214. package/es/components/number-input/number-input.d.ts.map +1 -1
  215. package/es/components/number-input/number-input.js +1 -1
  216. package/es/components/number-input/number-input.js.map +1 -1
  217. package/es/components/number-input/number-input.rtl.css.js +1 -1
  218. package/es/components/overflow-menu/defs.d.ts +4 -9
  219. package/es/components/overflow-menu/defs.d.ts.map +1 -1
  220. package/es/components/overflow-menu/defs.js +1 -4
  221. package/es/components/overflow-menu/defs.js.map +1 -1
  222. package/es/components/overflow-menu/overflow-menu-body.d.ts +16 -15
  223. package/es/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
  224. package/es/components/overflow-menu/overflow-menu-body.js +49 -28
  225. package/es/components/overflow-menu/overflow-menu-body.js.map +1 -1
  226. package/es/components/overflow-menu/overflow-menu-item.d.ts +12 -3
  227. package/es/components/overflow-menu/overflow-menu-item.d.ts.map +1 -1
  228. package/es/components/overflow-menu/overflow-menu-item.js +44 -12
  229. package/es/components/overflow-menu/overflow-menu-item.js.map +1 -1
  230. package/es/components/overflow-menu/overflow-menu.css.js +1 -1
  231. package/es/components/overflow-menu/overflow-menu.d.ts +22 -10
  232. package/es/components/overflow-menu/overflow-menu.d.ts.map +1 -1
  233. package/es/components/overflow-menu/overflow-menu.js +89 -40
  234. package/es/components/overflow-menu/overflow-menu.js.map +1 -1
  235. package/es/components/overflow-menu/overflow-menu.rtl.css.js +1 -1
  236. package/es/components/pagination/defs.d.ts +27 -0
  237. package/es/components/pagination/defs.d.ts.map +1 -0
  238. package/es/components/pagination/defs.js +19 -0
  239. package/es/components/pagination/defs.js.map +1 -0
  240. package/es/components/pagination/index.d.ts +1 -3
  241. package/es/components/pagination/index.d.ts.map +1 -1
  242. package/es/components/pagination/index.js +1 -3
  243. package/es/components/pagination/index.js.map +1 -1
  244. package/es/components/pagination/pagination.css.js +1 -1
  245. package/es/components/pagination/pagination.d.ts +55 -20
  246. package/es/components/pagination/pagination.d.ts.map +1 -1
  247. package/es/components/pagination/pagination.js +303 -123
  248. package/es/components/pagination/pagination.js.map +1 -1
  249. package/es/components/pagination/pagination.rtl.css.js +1 -1
  250. package/es/components/progress-indicator/progress-indicator-skeleton.d.ts +1 -2
  251. package/es/components/progress-indicator/progress-indicator-skeleton.d.ts.map +1 -1
  252. package/es/components/progress-indicator/progress-indicator-skeleton.js +5 -5
  253. package/es/components/progress-indicator/progress-indicator-skeleton.js.map +1 -1
  254. package/es/components/progress-indicator/progress-indicator.css.js +1 -1
  255. package/es/components/progress-indicator/progress-indicator.d.ts +8 -3
  256. package/es/components/progress-indicator/progress-indicator.d.ts.map +1 -1
  257. package/es/components/progress-indicator/progress-indicator.js +35 -8
  258. package/es/components/progress-indicator/progress-indicator.js.map +1 -1
  259. package/es/components/progress-indicator/progress-indicator.rtl.css.js +1 -1
  260. package/es/components/progress-indicator/progress-step-skeleton.d.ts +2 -2
  261. package/es/components/progress-indicator/progress-step-skeleton.d.ts.map +1 -1
  262. package/es/components/progress-indicator/progress-step-skeleton.js +12 -12
  263. package/es/components/progress-indicator/progress-step-skeleton.js.map +1 -1
  264. package/es/components/progress-indicator/progress-step.d.ts +11 -3
  265. package/es/components/progress-indicator/progress-step.d.ts.map +1 -1
  266. package/es/components/progress-indicator/progress-step.js +65 -24
  267. package/es/components/progress-indicator/progress-step.js.map +1 -1
  268. package/es/components/radio-button/radio-button.css.js +1 -1
  269. package/es/components/radio-button/radio-button.d.ts +4 -0
  270. package/es/components/radio-button/radio-button.d.ts.map +1 -1
  271. package/es/components/radio-button/radio-button.js +22 -0
  272. package/es/components/radio-button/radio-button.js.map +1 -1
  273. package/es/components/radio-button/radio-button.rtl.css.js +1 -1
  274. package/es/components/select/select.css.js +1 -1
  275. package/es/components/select/select.d.ts.map +1 -1
  276. package/es/components/select/select.js +3 -1
  277. package/es/components/select/select.js.map +1 -1
  278. package/es/components/select/select.rtl.css.js +1 -1
  279. package/es/components/slider/slider.css.js +1 -1
  280. package/es/components/slider/slider.rtl.css.js +1 -1
  281. package/es/components/stack/defs.d.ts +29 -0
  282. package/es/components/stack/defs.d.ts.map +1 -0
  283. package/es/components/stack/defs.js +31 -0
  284. package/es/components/stack/defs.js.map +1 -0
  285. package/es/components/stack/index.d.ts +11 -0
  286. package/es/components/stack/index.d.ts.map +1 -0
  287. package/es/components/stack/index.js +11 -0
  288. package/es/components/stack/index.js.map +1 -0
  289. package/es/components/stack/stack.css.js +12 -0
  290. package/es/components/stack/stack.d.ts +46 -0
  291. package/es/components/stack/stack.d.ts.map +1 -0
  292. package/es/components/stack/stack.js +116 -0
  293. package/es/components/stack/stack.js.map +1 -0
  294. package/es/components/stack/stack.rtl.css.js +12 -0
  295. package/es/components/structured-list/structured-list.css.js +1 -1
  296. package/es/components/structured-list/structured-list.d.ts +9 -0
  297. package/es/components/structured-list/structured-list.d.ts.map +1 -1
  298. package/es/components/structured-list/structured-list.js +47 -1
  299. package/es/components/structured-list/structured-list.js.map +1 -1
  300. package/es/components/structured-list/structured-list.rtl.css.js +1 -1
  301. package/es/components/tabs/tabs.css.js +1 -1
  302. package/es/components/tabs/tabs.rtl.css.js +1 -1
  303. package/es/components/text-input/defs.d.ts +38 -0
  304. package/es/components/text-input/defs.d.ts.map +1 -1
  305. package/es/components/text-input/defs.js +24 -3
  306. package/es/components/text-input/defs.js.map +1 -1
  307. package/es/components/text-input/text-input.d.ts +4 -5
  308. package/es/components/text-input/text-input.d.ts.map +1 -1
  309. package/es/components/text-input/text-input.js +5 -6
  310. package/es/components/text-input/text-input.js.map +1 -1
  311. package/es/components/textarea/textarea.d.ts.map +1 -1
  312. package/es/components/textarea/textarea.js +1 -1
  313. package/es/components/textarea/textarea.js.map +1 -1
  314. package/es/components/tile/expandable-tile.d.ts +1 -3
  315. package/es/components/tile/expandable-tile.d.ts.map +1 -1
  316. package/es/components/tile/expandable-tile.js +1 -1
  317. package/es/components/tile/expandable-tile.js.map +1 -1
  318. package/es/components/tile/radio-tile.d.ts.map +1 -1
  319. package/es/components/tile/radio-tile.js +2 -2
  320. package/es/components/tile/radio-tile.js.map +1 -1
  321. package/es/components/toggle-tip/toggletip.d.ts +1 -1
  322. package/es/components/toggle-tip/toggletip.d.ts.map +1 -1
  323. package/es/components/toggle-tip/toggletip.js +28 -3
  324. package/es/components/toggle-tip/toggletip.js.map +1 -1
  325. package/es/components/tooltip/tooltip.css.js +1 -1
  326. package/es/components/tooltip/tooltip.d.ts +12 -1
  327. package/es/components/tooltip/tooltip.d.ts.map +1 -1
  328. package/es/components/tooltip/tooltip.js +47 -1
  329. package/es/components/tooltip/tooltip.js.map +1 -1
  330. package/es/components/tooltip/tooltip.rtl.css.js +1 -1
  331. package/es/components/ui-shell/header-global-action.d.ts +31 -0
  332. package/es/components/ui-shell/header-global-action.d.ts.map +1 -0
  333. package/es/components/ui-shell/header-global-action.js +88 -0
  334. package/es/components/ui-shell/header-global-action.js.map +1 -0
  335. package/es/components/ui-shell/header-menu-button.d.ts +6 -6
  336. package/es/components/ui-shell/header-menu-button.d.ts.map +1 -1
  337. package/es/components/ui-shell/header-menu-button.js +10 -10
  338. package/es/components/ui-shell/header-menu-button.js.map +1 -1
  339. package/es/components/ui-shell/header-menu-item.d.ts +3 -3
  340. package/es/components/ui-shell/header-menu-item.d.ts.map +1 -1
  341. package/es/components/ui-shell/header-menu-item.js +6 -6
  342. package/es/components/ui-shell/header-menu-item.js.map +1 -1
  343. package/es/components/ui-shell/header-menu.d.ts +11 -3
  344. package/es/components/ui-shell/header-menu.d.ts.map +1 -1
  345. package/es/components/ui-shell/header-menu.js +47 -7
  346. package/es/components/ui-shell/header-menu.js.map +1 -1
  347. package/es/components/ui-shell/header-name.d.ts +3 -3
  348. package/es/components/ui-shell/header-name.d.ts.map +1 -1
  349. package/es/components/ui-shell/header-name.js +4 -4
  350. package/es/components/ui-shell/header-name.js.map +1 -1
  351. package/es/components/ui-shell/header-nav-item.d.ts +11 -3
  352. package/es/components/ui-shell/header-nav-item.d.ts.map +1 -1
  353. package/es/components/ui-shell/header-nav-item.js +39 -6
  354. package/es/components/ui-shell/header-nav-item.js.map +1 -1
  355. package/es/components/ui-shell/header-nav.d.ts +2 -2
  356. package/es/components/ui-shell/header-nav.d.ts.map +1 -1
  357. package/es/components/ui-shell/header-nav.js +5 -5
  358. package/es/components/ui-shell/header-nav.js.map +1 -1
  359. package/es/components/ui-shell/header-panel.d.ts +30 -0
  360. package/es/components/ui-shell/header-panel.d.ts.map +1 -0
  361. package/es/components/ui-shell/header-panel.js +72 -0
  362. package/es/components/ui-shell/header-panel.js.map +1 -0
  363. package/es/components/ui-shell/header-side-nav-items.d.ts +27 -0
  364. package/es/components/ui-shell/header-side-nav-items.d.ts.map +1 -0
  365. package/es/components/ui-shell/header-side-nav-items.js +80 -0
  366. package/es/components/ui-shell/header-side-nav-items.js.map +1 -0
  367. package/es/components/ui-shell/header.css.js +1 -1
  368. package/es/components/ui-shell/header.d.ts +2 -2
  369. package/es/components/ui-shell/header.d.ts.map +1 -1
  370. package/es/components/ui-shell/header.js +5 -5
  371. package/es/components/ui-shell/header.js.map +1 -1
  372. package/es/components/ui-shell/header.rtl.css.js +1 -1
  373. package/es/components/ui-shell/index.d.ts +5 -0
  374. package/es/components/ui-shell/index.d.ts.map +1 -1
  375. package/es/components/ui-shell/index.js +5 -0
  376. package/es/components/ui-shell/index.js.map +1 -1
  377. package/es/components/ui-shell/side-nav-divider.d.ts +2 -2
  378. package/es/components/ui-shell/side-nav-divider.d.ts.map +1 -1
  379. package/es/components/ui-shell/side-nav-divider.js +5 -5
  380. package/es/components/ui-shell/side-nav-divider.js.map +1 -1
  381. package/es/components/ui-shell/side-nav-items.d.ts +2 -2
  382. package/es/components/ui-shell/side-nav-items.d.ts.map +1 -1
  383. package/es/components/ui-shell/side-nav-items.js +6 -6
  384. package/es/components/ui-shell/side-nav-items.js.map +1 -1
  385. package/es/components/ui-shell/side-nav-link.d.ts +7 -3
  386. package/es/components/ui-shell/side-nav-link.d.ts.map +1 -1
  387. package/es/components/ui-shell/side-nav-link.js +18 -5
  388. package/es/components/ui-shell/side-nav-link.js.map +1 -1
  389. package/es/components/ui-shell/side-nav-menu-item.d.ts +3 -3
  390. package/es/components/ui-shell/side-nav-menu-item.d.ts.map +1 -1
  391. package/es/components/ui-shell/side-nav-menu-item.js +4 -4
  392. package/es/components/ui-shell/side-nav-menu-item.js.map +1 -1
  393. package/es/components/ui-shell/side-nav-menu.d.ts +7 -3
  394. package/es/components/ui-shell/side-nav-menu.d.ts.map +1 -1
  395. package/es/components/ui-shell/side-nav-menu.js +18 -5
  396. package/es/components/ui-shell/side-nav-menu.js.map +1 -1
  397. package/es/components/ui-shell/side-nav.css.js +1 -1
  398. package/es/components/ui-shell/side-nav.d.ts +35 -13
  399. package/es/components/ui-shell/side-nav.d.ts.map +1 -1
  400. package/es/components/ui-shell/side-nav.js +142 -48
  401. package/es/components/ui-shell/side-nav.js.map +1 -1
  402. package/es/components/ui-shell/side-nav.rtl.css.js +1 -1
  403. package/es/components/ui-shell/switcher-divider.d.ts +21 -0
  404. package/es/components/ui-shell/switcher-divider.d.ts.map +1 -0
  405. package/es/components/ui-shell/switcher-divider.js +56 -0
  406. package/es/components/ui-shell/switcher-divider.js.map +1 -0
  407. package/es/components/{pagination/page-sizes-select.d.ts → ui-shell/switcher-item.d.ts} +18 -22
  408. package/es/components/ui-shell/switcher-item.d.ts.map +1 -0
  409. package/es/components/ui-shell/switcher-item.js +162 -0
  410. package/es/components/ui-shell/switcher-item.js.map +1 -0
  411. package/es/components/ui-shell/switcher.d.ts +35 -0
  412. package/es/components/ui-shell/switcher.d.ts.map +1 -0
  413. package/es/components/ui-shell/switcher.js +95 -0
  414. package/es/components/ui-shell/switcher.js.map +1 -0
  415. package/es/components-react/code-snippet/code-snippet-skeleton.d.ts +2 -2
  416. package/es/components-react/code-snippet/code-snippet.d.ts +2 -2
  417. package/es/components-react/data-table/table-batch-actions.d.ts +2 -2
  418. package/es/components-react/data-table/table-body.d.ts +2 -2
  419. package/es/components-react/{pagination/pages-select.d.ts → data-table/table-cell-content.d.ts} +2 -6
  420. package/es/components-react/{pagination/pages-select.js → data-table/table-cell-content.js} +4 -10
  421. package/es/components-react/data-table/table-cell.d.ts +2 -2
  422. package/es/components-react/data-table/table-expanded-row.d.ts +2 -2
  423. package/es/components-react/data-table/table-head.d.ts +2 -2
  424. package/es/components-react/data-table/table-header-cell.d.ts +2 -2
  425. package/es/components-react/{pagination/page-sizes-select.d.ts → data-table/table-header-description.d.ts} +2 -6
  426. package/es/components-react/{pagination/page-sizes-select.js → data-table/table-header-description.js} +4 -10
  427. package/es/components-react/data-table/table-header-row.d.ts +2 -2
  428. package/es/components-react/data-table/table-header-title.d.ts +15 -0
  429. package/es/components-react/data-table/{table-header-cell-skeleton.js → table-header-title.js} +4 -6
  430. package/es/components-react/data-table/table-row.d.ts +19 -2
  431. package/es/components-react/data-table/table-row.js +16 -0
  432. package/es/components-react/data-table/table-skeleton.d.ts +15 -0
  433. package/es/components-react/data-table/table-skeleton.js +21 -0
  434. package/es/components-react/data-table/table-toolbar-content.d.ts +2 -2
  435. package/es/components-react/data-table/table-toolbar-search.d.ts +2 -2
  436. package/es/components-react/data-table/table-toolbar.d.ts +2 -2
  437. package/es/components-react/data-table/table.d.ts +44 -2
  438. package/es/components-react/data-table/table.js +45 -3
  439. package/es/components-react/file-uploader/demo-file-uploader.d.ts +0 -49
  440. package/es/components-react/file-uploader/demo-file-uploader.js +3 -51
  441. package/es/components-react/floating-menu/floating-menu.d.ts +2 -2
  442. package/es/components-react/floating-menu/floating-menu.js +0 -2
  443. package/es/components-react/form/form-item.d.ts +2 -2
  444. package/es/components-react/form-group/form-group.d.ts +15 -0
  445. package/es/components-react/form-group/form-group.js +21 -0
  446. package/es/components-react/form-group/index.d.ts +14 -0
  447. package/es/components-react/form-group/index.js +8 -0
  448. package/es/components-react/modal/modal-body-content.d.ts +15 -0
  449. package/es/components-react/modal/modal-body-content.js +21 -0
  450. package/es/components-react/modal/modal-body.d.ts +2 -2
  451. package/es/components-react/modal/modal-close-button.d.ts +2 -2
  452. package/es/components-react/modal/modal-footer.d.ts +2 -2
  453. package/es/components-react/modal/modal-header.d.ts +2 -2
  454. package/es/components-react/modal/modal-heading.d.ts +2 -2
  455. package/es/components-react/modal/modal-label.d.ts +2 -2
  456. package/es/components-react/modal/modal.d.ts +2 -2
  457. package/es/components-react/multi-select/defs.d.ts +14 -0
  458. package/es/components-react/multi-select/defs.js +9 -0
  459. package/es/components-react/multi-select/multi-select.js +6 -1
  460. package/es/components-react/overflow-menu/overflow-menu-body.d.ts +2 -2
  461. package/es/components-react/overflow-menu/overflow-menu-item.d.ts +2 -2
  462. package/es/components-react/overflow-menu/overflow-menu.d.ts +4 -5
  463. package/es/components-react/overflow-menu/overflow-menu.js +5 -3
  464. package/es/components-react/pagination/defs.d.ts +14 -0
  465. package/es/components-react/pagination/defs.js +9 -0
  466. package/es/components-react/pagination/pagination.d.ts +3 -7
  467. package/es/components-react/pagination/pagination.js +3 -7
  468. package/es/components-react/progress-indicator/progress-indicator-skeleton.d.ts +2 -3
  469. package/es/components-react/progress-indicator/progress-indicator.d.ts +2 -3
  470. package/es/components-react/progress-indicator/progress-step-skeleton.d.ts +2 -3
  471. package/es/components-react/progress-indicator/progress-step.d.ts +2 -3
  472. package/es/components-react/stack/defs.d.ts +14 -0
  473. package/es/components-react/stack/defs.js +9 -0
  474. package/es/components-react/stack/index.d.ts +14 -0
  475. package/es/components-react/stack/index.js +8 -0
  476. package/es/components-react/stack/stack.d.ts +15 -0
  477. package/es/components-react/stack/stack.js +22 -0
  478. package/es/components-react/text-input/text-input.js +7 -1
  479. package/es/components-react/toggle-tip/toggletip.d.ts +0 -5
  480. package/es/components-react/toggle-tip/toggletip.js +3 -13
  481. package/es/components-react/{data-table/table-cell-skeleton.d.ts → ui-shell/header-global-action.d.ts} +3 -3
  482. package/es/components-react/{data-table/table-cell-skeleton.js → ui-shell/header-global-action.js} +4 -4
  483. package/es/components-react/ui-shell/header-menu-button.d.ts +2 -2
  484. package/es/components-react/ui-shell/header-menu-item.d.ts +2 -2
  485. package/es/components-react/ui-shell/header-menu.d.ts +2 -2
  486. package/es/components-react/ui-shell/header-name.d.ts +2 -2
  487. package/es/components-react/ui-shell/header-nav-item.d.ts +2 -2
  488. package/es/components-react/ui-shell/header-nav.d.ts +2 -2
  489. package/es/components-react/ui-shell/header-panel.d.ts +15 -0
  490. package/es/components-react/ui-shell/header-panel.js +21 -0
  491. package/es/components-react/ui-shell/header-side-nav-items.d.ts +15 -0
  492. package/es/components-react/ui-shell/header-side-nav-items.js +21 -0
  493. package/es/components-react/ui-shell/header.d.ts +2 -2
  494. package/es/components-react/ui-shell/side-nav-divider.d.ts +2 -2
  495. package/es/components-react/ui-shell/side-nav-items.d.ts +2 -2
  496. package/es/components-react/ui-shell/side-nav-link.d.ts +2 -2
  497. package/es/components-react/ui-shell/side-nav-menu-item.d.ts +2 -2
  498. package/es/components-react/ui-shell/side-nav-menu.d.ts +2 -2
  499. package/es/components-react/ui-shell/side-nav.d.ts +2 -2
  500. package/es/components-react/ui-shell/switcher-divider.d.ts +15 -0
  501. package/es/components-react/ui-shell/switcher-divider.js +21 -0
  502. package/es/components-react/ui-shell/switcher-item.d.ts +15 -0
  503. package/es/components-react/ui-shell/switcher-item.js +21 -0
  504. package/es/components-react/ui-shell/switcher.d.ts +15 -0
  505. package/es/components-react/ui-shell/switcher.js +21 -0
  506. package/es/icons/arrow--down/16.js +1 -1
  507. package/es/icons/arrow--down/32.js +1 -1
  508. package/es/icons/arrows--vertical/16.js +1 -1
  509. package/es/icons/arrows--vertical/32.js +1 -1
  510. package/es/icons/overflow-menu--vertical/16.js +1 -1
  511. package/es/index.d.ts +12 -2
  512. package/es/index.d.ts.map +1 -1
  513. package/es/index.js +12 -2
  514. package/es/index.js.map +1 -1
  515. package/lib/components/data-table/defs.js +1 -10
  516. package/lib/components/data-table/defs.js.map +1 -1
  517. package/lib/components/dropdown/defs.js +2 -2
  518. package/lib/components/dropdown/defs.js.map +1 -1
  519. package/lib/components/floating-menu/defs.js +3 -24
  520. package/lib/components/floating-menu/defs.js.map +1 -1
  521. package/lib/components/modal/defs.js +2 -2
  522. package/lib/components/modal/defs.js.map +1 -1
  523. package/lib/components/multi-select/defs.js +25 -0
  524. package/lib/components/multi-select/defs.js.map +1 -0
  525. package/lib/components/overflow-menu/defs.js +2 -11
  526. package/lib/components/overflow-menu/defs.js.map +1 -1
  527. package/lib/components/pagination/defs.js +25 -0
  528. package/lib/components/pagination/defs.js.map +1 -0
  529. package/lib/components/stack/defs.js +36 -0
  530. package/lib/components/stack/defs.js.map +1 -0
  531. package/lib/components/text-input/defs.js +25 -4
  532. package/lib/components/text-input/defs.js.map +1 -1
  533. package/lib/components-react-node/{pagination/pages-select.js → data-table/table-cell-content.js} +3 -9
  534. package/lib/components-react-node/{pagination/page-sizes-select.js → data-table/table-header-description.js} +3 -9
  535. package/lib/components-react-node/data-table/{table-cell-skeleton.js → table-header-title.js} +3 -4
  536. package/lib/components-react-node/data-table/table-row.js +16 -0
  537. package/lib/components-react-node/data-table/{table-header-cell-skeleton.js → table-skeleton.js} +3 -4
  538. package/lib/components-react-node/data-table/table.js +44 -8
  539. package/lib/components-react-node/file-uploader/demo-file-uploader.js +3 -89
  540. package/lib/components-react-node/floating-menu/floating-menu.js +0 -12
  541. package/lib/components-react-node/form-group/form-group.js +36 -0
  542. package/lib/components-react-node/form-group/index.js +9 -0
  543. package/lib/components-react-node/modal/modal-body-content.js +36 -0
  544. package/lib/components-react-node/multi-select/defs.js +24 -0
  545. package/lib/components-react-node/multi-select/multi-select.js +13 -0
  546. package/lib/components-react-node/overflow-menu/overflow-menu.js +3 -8
  547. package/lib/components-react-node/pagination/defs.js +24 -0
  548. package/lib/components-react-node/pagination/pagination.js +3 -7
  549. package/lib/components-react-node/stack/defs.js +24 -0
  550. package/lib/components-react-node/stack/index.js +9 -0
  551. package/lib/components-react-node/stack/stack.js +49 -0
  552. package/lib/components-react-node/text-input/text-input.js +12 -0
  553. package/lib/components-react-node/toggle-tip/toggletip.js +3 -51
  554. package/lib/components-react-node/ui-shell/header-global-action.js +37 -0
  555. package/lib/components-react-node/ui-shell/header-panel.js +36 -0
  556. package/lib/components-react-node/ui-shell/header-side-nav-items.js +36 -0
  557. package/lib/components-react-node/ui-shell/switcher-divider.js +36 -0
  558. package/lib/components-react-node/ui-shell/switcher-item.js +36 -0
  559. package/lib/components-react-node/ui-shell/switcher.js +36 -0
  560. package/package.json +6 -7
  561. package/scss/components/button/button.scss +48 -1
  562. package/scss/components/checkbox/checkbox.scss +16 -0
  563. package/scss/components/code-snippet/code-snippet.scss +82 -101
  564. package/scss/components/copy-button/copy-button.scss +17 -0
  565. package/scss/components/data-table/_table-action.scss +50 -32
  566. package/scss/components/data-table/_table-core.scss +253 -29
  567. package/scss/components/data-table/_table-expandable.scss +25 -32
  568. package/scss/components/data-table/_table-selection.scss +36 -20
  569. package/scss/components/data-table/_table-sizes.scss +162 -20
  570. package/scss/components/data-table/_table-sort.scss +5 -21
  571. package/scss/components/data-table/data-table.scss +4 -3
  572. package/scss/components/form-group/form-group.scss +23 -0
  573. package/scss/components/modal/modal.scss +61 -87
  574. package/scss/components/multi-select/multi-select.scss +54 -19
  575. package/scss/components/overflow-menu/overflow-menu.scss +21 -9
  576. package/scss/components/pagination/pagination.scss +0 -66
  577. package/scss/components/progress-indicator/progress-indicator.scss +11 -10
  578. package/scss/components/radio-button/radio-button.scss +11 -1
  579. package/scss/components/select/select.scss +28 -1
  580. package/scss/components/stack/stack.scss +33 -0
  581. package/scss/components/structured-list/structured-list.scss +90 -20
  582. package/scss/components/tooltip/tooltip.scss +26 -0
  583. package/scss/components/ui-shell/header.scss +69 -0
  584. package/scss/components/ui-shell/side-nav.scss +27 -49
  585. package/es/components/data-table/table-cell-skeleton.d.ts +0 -20
  586. package/es/components/data-table/table-cell-skeleton.d.ts.map +0 -1
  587. package/es/components/data-table/table-cell-skeleton.js +0 -42
  588. package/es/components/data-table/table-cell-skeleton.js.map +0 -1
  589. package/es/components/data-table/table-expand-row.d.ts +0 -371
  590. package/es/components/data-table/table-expand-row.d.ts.map +0 -1
  591. package/es/components/data-table/table-expand-row.js +0 -192
  592. package/es/components/data-table/table-expand-row.js.map +0 -1
  593. package/es/components/data-table/table-header-cell-skeleton.d.ts +0 -19
  594. package/es/components/data-table/table-header-cell-skeleton.d.ts.map +0 -1
  595. package/es/components/data-table/table-header-cell-skeleton.js +0 -33
  596. package/es/components/data-table/table-header-cell-skeleton.js.map +0 -1
  597. package/es/components/data-table/table-header-expand-row.d.ts +0 -33
  598. package/es/components/data-table/table-header-expand-row.d.ts.map +0 -1
  599. package/es/components/data-table/table-header-expand-row.js +0 -68
  600. package/es/components/data-table/table-header-expand-row.js.map +0 -1
  601. package/es/components/pagination/page-sizes-select.d.ts.map +0 -1
  602. package/es/components/pagination/page-sizes-select.js +0 -172
  603. package/es/components/pagination/page-sizes-select.js.map +0 -1
  604. package/es/components/pagination/pages-select.d.ts +0 -362
  605. package/es/components/pagination/pages-select.d.ts.map +0 -1
  606. package/es/components/pagination/pages-select.js +0 -185
  607. package/es/components/pagination/pages-select.js.map +0 -1
  608. package/es/components-react/data-table/table-expand-row.d.ts +0 -24
  609. package/es/components-react/data-table/table-expand-row.js +0 -33
  610. package/es/components-react/data-table/table-header-cell-skeleton.d.ts +0 -14
  611. package/es/components-react/data-table/table-header-expand-row.d.ts +0 -29
  612. package/es/components-react/data-table/table-header-expand-row.js +0 -37
  613. package/lib/components-react-node/data-table/table-expand-row.js +0 -47
  614. package/lib/components-react-node/data-table/table-header-expand-row.js +0 -51
  615. package/scss/components/data-table/_table-skeleton.scss +0 -27
@@ -5,7 +5,9 @@ let _ = t => t,
5
5
  _t,
6
6
  _t2,
7
7
  _t3,
8
- _t4;
8
+ _t4,
9
+ _t5,
10
+ _t6;
9
11
  /**
10
12
  * @license
11
13
  *
@@ -17,12 +19,15 @@ let _ = t => t,
17
19
 
18
20
  import { html } from 'lit';
19
21
  import { property, customElement, query } from 'lit/decorators.js';
22
+ import { classMap } from 'lit/directives/class-map.js';
20
23
  import Close16 from "../../icons/close/16";
21
24
  import { prefix } from '../../globals/settings';
22
25
  import { filter, forEach, indexOf } from '../../globals/internal/collection-helpers';
23
- import CDSDropdown, { DROPDOWN_KEYBOARD_ACTION } from '../dropdown/dropdown';
26
+ import CDSDropdown, { DROPDOWN_KEYBOARD_ACTION, DROPDOWN_TYPE } from '../dropdown/dropdown';
27
+ import { SELECTION_FEEDBACK_OPTION } from './defs';
24
28
  import styles from "././multi-select.css.js";
25
- export { DROPDOWN_SIZE, DROPDOWN_TYPE } from '../dropdown/dropdown';
29
+ export { DROPDOWN_SIZE, DROPDOWN_TYPE, DROPDOWN_DIRECTION } from '../dropdown/dropdown';
30
+ export { SELECTION_FEEDBACK_OPTION };
26
31
 
27
32
  /**
28
33
  * Multi select.
@@ -70,6 +75,11 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
70
75
  decorators: [query('#selection-button')],
71
76
  key: "_selectionButtonNode",
72
77
  value: void 0
78
+ }, {
79
+ kind: "field",
80
+ decorators: [query('#menu-body')],
81
+ key: "_menuBodyNode",
82
+ value: void 0
73
83
  }, {
74
84
  kind: "field",
75
85
  decorators: [query('input')],
@@ -96,6 +106,10 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
96
106
  * The selection button.
97
107
  */
98
108
 
109
+ /**
110
+ * The menu body.
111
+ */
112
+
99
113
  /**
100
114
  * The `<input>` for filtering.
101
115
  */
@@ -130,7 +144,7 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
130
144
  key: "_handleClickInner",
131
145
  value: function _handleClickInner(event) {
132
146
  var _this$_selectionButto, _this$_clearButtonNod;
133
- if ((_this$_selectionButto = this._selectionButtonNode) !== null && _this$_selectionButto !== void 0 && _this$_selectionButto.contains(event.target)) {
147
+ if ((_this$_selectionButto = this._selectionButtonNode) !== null && _this$_selectionButto !== void 0 && _this$_selectionButto.contains(event.target) && !this.readOnly) {
134
148
  this._handleUserInitiatedSelectItem();
135
149
  if (this.filterable) {
136
150
  this._filterInputNode.focus();
@@ -140,10 +154,7 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
140
154
  } else if ((_this$_clearButtonNod = this._clearButtonNode) !== null && _this$_clearButtonNod !== void 0 && _this$_clearButtonNod.contains(event.target)) {
141
155
  this._handleUserInitiatedClearInput();
142
156
  } else {
143
- const shouldIgnoreClickInner = elem => elem.closest && elem.closest(this.constructor.selectorIgnoreClickInner);
144
- if (!event.composedPath().some(shouldIgnoreClickInner)) {
145
- _get(_getPrototypeOf(CDSMultiSelect.prototype), "_handleClickInner", this).call(this, event);
146
- }
157
+ _get(_getPrototypeOf(CDSMultiSelect.prototype), "_handleClickInner", this).call(this, event);
147
158
  if (this.filterable) this._filterInputNode.focus();
148
159
  }
149
160
  }
@@ -222,24 +233,73 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
222
233
  }
223
234
  }, {
224
235
  kind: "method",
225
- key: "_renderPrecedingTriggerContent",
226
- value: function _renderPrecedingTriggerContent() {
236
+ key: "_renderTitleLabel",
237
+ value: function _renderTitleLabel() {
227
238
  const {
239
+ clearSelectionDescription,
240
+ clearSelectionText,
241
+ disabled,
242
+ hideLabel,
243
+ titleText,
244
+ _selectedItemsCount: selectedItemsCount,
245
+ _slotTitleTextNode: slotTitleTextNode,
246
+ _handleSlotchangeLabelText: handleSlotchangeLabelText
247
+ } = this;
248
+ const labelClasses = classMap({
249
+ [`${prefix}--label`]: true,
250
+ [`${prefix}--label--disabled`]: disabled,
251
+ [`${prefix}--visually-hidden`]: hideLabel
252
+ });
253
+ const hasTitleText = titleText || slotTitleTextNode && slotTitleTextNode.assignedNodes().length > 0;
254
+ return html(_t || (_t = _`
255
+ <label
256
+ part="title-text"
257
+ class="${0}"
258
+ ?hidden="${0}">
259
+ <slot name="title-text" @slotchange="${0}"
260
+ >${0}</slot
261
+ >
262
+ ${0}
263
+ </label>
264
+ `), labelClasses, !hasTitleText, handleSlotchangeLabelText, titleText, selectedItemsCount > 0 ? html(_t2 || (_t2 = _`
265
+ <span class="${0}--visually-hidden">
266
+ ${0} ${0},
267
+ ${0}
268
+ </span>
269
+ `), prefix, clearSelectionDescription, selectedItemsCount, clearSelectionText) : null);
270
+ }
271
+ }, {
272
+ kind: "method",
273
+ key: "_renderPrecedingLabel",
274
+ value: function _renderPrecedingLabel() {
275
+ const {
276
+ disabled,
277
+ readOnly,
228
278
  clearSelectionLabel,
229
279
  _selectedItemsCount: selectedItemsCount
230
280
  } = this;
231
- return selectedItemsCount === 0 ? undefined : html(_t || (_t = _`
281
+ const selectionButtonClasses = classMap({
282
+ [`${prefix}--list-box__selection`]: true,
283
+ [`${prefix}--list-box__selection--multi`]: true,
284
+ [`${prefix}--tag`]: true,
285
+ [`${prefix}--tag--filter`]: true,
286
+ [`${prefix}--tag--high-contrast`]: true,
287
+ [`${prefix}--tag--disabled`]: disabled
288
+ });
289
+ return selectedItemsCount === 0 ? undefined : html(_t3 || (_t3 = _`
232
290
  <div
233
291
  id="selection-button"
234
292
  role="button"
235
- class="${0}--list-box__selection ${0}--list-box__selection--multi ${0}--tag--filter"
236
- tabindex="0"
293
+ class="${0}"
294
+ tabindex="-1"
295
+ aria-disabled=${0}
237
296
  title="${0}">
238
297
  ${0}
239
298
  ${0}
240
299
  </div>
241
- `), prefix, prefix, prefix, clearSelectionLabel, selectedItemsCount, Close16({
242
- 'aria-label': clearSelectionLabel
300
+ `), selectionButtonClasses, readOnly, clearSelectionLabel, selectedItemsCount, Close16({
301
+ 'aria-label': clearSelectionLabel,
302
+ class: `${prefix}--tag__close-icon`
243
303
  }));
244
304
  }
245
305
 
@@ -254,11 +314,11 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
254
314
  label,
255
315
  _selectedItemContent: selectedItemContent
256
316
  } = this;
257
- return !this.filterable ? html(_t2 || (_t2 = _`
317
+ return !this.filterable ? html(_t4 || (_t4 = _`
258
318
  <span id="trigger-label" class="${0}--list-box__label"
259
319
  >${0}</span
260
320
  >
261
- `), prefix, selectedItemContent || label) : html(_t3 || (_t3 = _`
321
+ `), prefix, selectedItemContent || label) : html(_t5 || (_t5 = _`
262
322
  <input
263
323
  id="trigger-label"
264
324
  class="${0}--text-input"
@@ -277,7 +337,7 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
277
337
  clearSelectionLabel,
278
338
  _filterInputNode: filterInputNode
279
339
  } = this;
280
- return filterInputNode && filterInputNode.value.length > 0 && this.filterable ? html(_t4 || (_t4 = _`
340
+ return filterInputNode && filterInputNode.value.length > 0 && this.filterable ? html(_t6 || (_t6 = _`
281
341
  <div
282
342
  id="clear-button"
283
343
  role="button"
@@ -323,7 +383,6 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
323
383
  key: "_navigate",
324
384
  value: function _navigate(direction) {
325
385
  if (!this.filterable) {
326
- this._triggerNode.focus();
327
386
  _get(_getPrototypeOf(CDSMultiSelect.prototype), "_navigate", this).call(this, direction);
328
387
  } else {
329
388
  // only navigate through remaining item
@@ -373,6 +432,31 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
373
432
  value() {
374
433
  return '';
375
434
  }
435
+ }, {
436
+ kind: "field",
437
+ decorators: [property({
438
+ attribute: 'clear-selection-description'
439
+ })],
440
+ key: "clearSelectionDescription",
441
+ value() {
442
+ return 'Total items selected: ';
443
+ }
444
+ }, {
445
+ kind: "field",
446
+ decorators: [property({
447
+ attribute: 'clear-selection-text'
448
+ })],
449
+ key: "clearSelectionText",
450
+ value() {
451
+ return 'To clear selection, press Delete or Backspace.';
452
+ }
453
+ }, {
454
+ kind: "field",
455
+ decorators: [property()],
456
+ key: "locale",
457
+ value() {
458
+ return 'en';
459
+ }
376
460
  }, {
377
461
  kind: "field",
378
462
  decorators: [property({
@@ -392,49 +476,183 @@ let CDSMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functi
392
476
  return 'Unselected all items.';
393
477
  }
394
478
  }, {
395
- kind: "method",
396
- key: "shouldUpdate",
479
+ kind: "field",
480
+ decorators: [property({
481
+ attribute: 'selection-feedback'
482
+ })],
483
+ key: "selectionFeedback",
484
+ value() {
485
+ return SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN;
486
+ }
487
+ }, {
488
+ kind: "get",
489
+ key: "_classes",
397
490
  value:
491
+ /**
492
+ * Specify the text that should be read for screen readers that describes total items selected
493
+ */
494
+ /**
495
+ * Specify the text that should be read for screen readers to clear selection.
496
+ */
497
+ /**
498
+ * Specify the locale of the control. Used for the default compareItems used for sorting the list of items in the control.
499
+ */
398
500
  /**
399
501
  * An assistive text for screen reader to announce, telling that an item is unselected.
400
502
  */
401
503
  /**
402
504
  * An assistive text for screen reader to announce, telling that all items are unselected.
403
505
  */
404
- function shouldUpdate(changedProperties) {
506
+ /**
507
+ * Specify feedback (mode) of the selection.
508
+ * `top`: selected item jumps to top
509
+ * `fixed`: selected item stays at it's position
510
+ * `top-after-reopen`: selected item jump to top after reopen dropdown
511
+ */
512
+ /**
513
+ * The CSS class list for multi-select listbox
514
+ */
515
+ function _classes() {
516
+ const {
517
+ disabled,
518
+ size,
519
+ type,
520
+ invalid,
521
+ readOnly,
522
+ open,
523
+ warn,
524
+ _selectedItemsCount: selectedItemsCount
525
+ } = this;
526
+ const inline = type === DROPDOWN_TYPE.INLINE;
527
+ return classMap({
528
+ [`${prefix}--multi-select`]: true,
529
+ [`${prefix}--list-box`]: true,
530
+ [`${prefix}--list-box--disabled`]: disabled,
531
+ [`${prefix}--list-box--inline`]: inline,
532
+ [`${prefix}--list-box--expanded`]: open,
533
+ [`${prefix}--list-box--${size}`]: size,
534
+ [`${prefix}--multi-select--invalid`]: invalid,
535
+ [`${prefix}--multi-select--warn`]: warn,
536
+ [`${prefix}--multi-select--inline`]: inline,
537
+ [`${prefix}--list-box--inline`]: inline,
538
+ [`${prefix}--multi-select--readonly`]: readOnly,
539
+ [`${prefix}--multi-select--selected`]: selectedItemsCount > 0
540
+ });
541
+ }
542
+ }, {
543
+ kind: "field",
544
+ key: "compareItems",
545
+ value() {
546
+ return (itemA, itemB, {
547
+ locale
548
+ }) => {
549
+ itemA.localeCompare(itemB, locale, {
550
+ numeric: true
551
+ });
552
+ };
553
+ }
554
+ }, {
555
+ kind: "field",
556
+ key: "sortItems",
557
+ value() {
558
+ return (menuItems, {
559
+ values,
560
+ compareItems,
561
+ locale: _locale = 'en'
562
+ }) => {
563
+ const menuItemsArray = Array.from(menuItems);
564
+ const sortedArray = menuItemsArray.sort((itemA, itemB) => {
565
+ const hasItemA = values.includes(itemA.value);
566
+ const hasItemB = values.includes(itemB.value);
567
+
568
+ // Prefer whichever item is in the `value` array first
569
+ if (hasItemA && !hasItemB) {
570
+ return -1;
571
+ }
572
+ if (hasItemB && !hasItemA) {
573
+ return 1;
574
+ }
575
+ return compareItems(itemA.value, itemB.value, {
576
+ locale: _locale
577
+ });
578
+ });
579
+ return sortedArray;
580
+ };
581
+ }
582
+ }, {
583
+ kind: "method",
584
+ key: "shouldUpdate",
585
+ value: function shouldUpdate(changedProperties) {
405
586
  const {
406
587
  selectorItem
407
588
  } = this.constructor;
589
+ const items = this.querySelectorAll(selectorItem);
590
+ const {
591
+ value,
592
+ locale
593
+ } = this;
594
+ const values = !value ? [] : value.split(',');
408
595
  if (changedProperties.has('size')) {
409
596
  forEach(this.querySelectorAll(selectorItem), elem => {
410
597
  elem.size = this.size;
411
598
  });
412
599
  }
413
600
  if (changedProperties.has('value')) {
414
- const {
415
- value
416
- } = this;
417
- const values = !value ? [] : value.split(',');
418
601
  // Updates selection beforehand because our rendering logic for `<cds-multi-select>` looks for selected items via `qSA()`
419
- const items = this.querySelectorAll(selectorItem);
420
602
  forEach(items, elem => {
421
603
  elem.selected = values.indexOf(elem.value) >= 0;
422
604
  });
423
605
  this._selectedItemsCount = filter(items, elem => values.indexOf(elem.value) >= 0).length;
606
+ if (this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP) {
607
+ const sortedMenuItems = this.sortItems(items, {
608
+ values,
609
+ compareItems: this.compareItems,
610
+ locale
611
+ });
612
+ this.replaceChildren(...sortedMenuItems);
613
+ }
614
+ }
615
+ if (changedProperties.has('open')) {
616
+ if (this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN) {
617
+ const sortedMenuItems = this.sortItems(items, {
618
+ values,
619
+ compareItems: this.compareItems,
620
+ locale
621
+ });
622
+ this.replaceChildren(...sortedMenuItems);
623
+ }
424
624
  }
425
625
  return true;
426
626
  }
627
+ }, {
628
+ kind: "method",
629
+ key: "updated",
630
+ value: function updated(changedProperties) {
631
+ if (changedProperties.has('open') && this.open && !this.filterable) {
632
+ // move focus to menu body when open for non-filterable mulit-select
633
+ this._menuBodyNode.focus();
634
+ }
635
+ }
636
+ }, {
637
+ kind: "method",
638
+ key: "connectedCallback",
639
+ value: function connectedCallback() {
640
+ _get(_getPrototypeOf(CDSMultiSelect.prototype), "connectedCallback", this).call(this);
641
+ /**
642
+ * Detect if multi-select already has initially selected items
643
+ */
644
+ this.value = filter(this.querySelectorAll(this.constructor.selectorItem), item => item.selected).map(item => item.value).join(',');
645
+ }
427
646
 
428
647
  /**
429
- * A selector to ignore the `click` events from.
430
- * Primary for the checkbox label where the `click` event will happen from the associated check box.
648
+ * A selector that will return menu body.
431
649
  */
432
650
  }, {
433
651
  kind: "get",
434
652
  static: true,
435
- key: "selectorIgnoreClickInner",
436
- value: function selectorIgnoreClickInner() {
437
- return `.${prefix}--checkbox-label`;
653
+ key: "selectorMenuBody",
654
+ value: function selectorMenuBody() {
655
+ return `div[part="menu-body"]`;
438
656
  }
439
657
 
440
658
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"multi-select.js","names":["html","property","customElement","query","Close16","prefix","filter","forEach","indexOf","CDSDropdown","DROPDOWN_KEYBOARD_ACTION","styles","DROPDOWN_SIZE","DROPDOWN_TYPE","CDSMultiSelect","_decorate","_initialize","_CDSDropdown","constructor","args","F","d","kind","decorators","type","Boolean","key","value","_selectionShouldChange","itemToSelect","_selectionDidChange","selected","_assistiveStatusText","selectedItemAssistiveText","unselectedItemAssistiveText","querySelectorAll","selectorItemSelected","item","_handleUserInitiatedToggle","unselectedAllAssistiveText","selectorItem","map","join","_handleClickInner","event","_this$_selectionButto","_this$_clearButtonNod","_selectionButtonNode","contains","target","_handleUserInitiatedSelectItem","filterable","_filterInputNode","focus","_triggerNode","_clearButtonNode","_handleUserInitiatedClearInput","shouldIgnoreClickInner","elem","closest","selectorIgnoreClickInner","composedPath","some","_get","_getPrototypeOf","prototype","call","_handleKeypressInner","_this$_clearButtonNod2","_this$_selectionButto2","action","getAction","TRIGGERING","open","_handleKeypressInnerFlterable","highlightedItem","querySelector","selectorItemHighlighted","_renderPrecedingTriggerContent","clearSelectionLabel","_selectedItemsCount","selectedItemsCount","undefined","_t","_","_renderLabel","label","_selectedItemContent","selectedItemContent","_t2","_t3","_handleInput","_renderFollowingLabel","filterInputNode","length","_t4","items","inputValue","toLocaleLowerCase","itemValue","innerText","includes","setAttribute","removeAttribute","requestUpdate","_navigate","direction","selectorItemResults","highlightedIndex","nextIndex","i","highlighted","selectorItemFiltered","attribute","shouldUpdate","changedProperties","has","size","values","split","static","eventBeforeToggle","eventToggle","eventBeforeSelect","eventSelect"],"sources":["components/multi-select/multi-select.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 { html, TemplateResult } from 'lit';\nimport { property, customElement, query } from 'lit/decorators.js';\nimport Close16 from '@carbon/icons/lib/close/16';\nimport { prefix } from '../../globals/settings';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport CDSDropdown, { DROPDOWN_KEYBOARD_ACTION } from '../dropdown/dropdown';\nimport CDSMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss';\n\nexport { DROPDOWN_SIZE, DROPDOWN_TYPE } from '../dropdown/dropdown';\n\n/**\n * Multi select.\n *\n * @element cds-multi-select\n * @fires cds-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 cds-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires cds-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 cds-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 CDSMultiSelect extends CDSDropdown {\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?: CDSMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: CDSMultiSelectItem) {\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 CDSMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as CDSMultiSelectItem).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 CDSMultiSelect).selectorItem\n ),\n (item) => (item as CDSMultiSelectItem).selected\n )\n .map((item) => (item as CDSMultiSelectItem).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 CDSMultiSelect).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 CDSDropdown).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 CDSDropdown).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 CDSDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as CDSMultiSelectItem;\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 _renderLabel(): TemplateResult {\n const { label, _selectedItemContent: selectedItemContent } = this;\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || label}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${prefix}--text-input\"\n placeholder=\"${label}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n protected _renderFollowingLabel(): 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 CDSMultiSelect).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 CDSMultiSelectItem).setAttribute('filtered', '');\n (item as CDSMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as CDSMultiSelectItem).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 CDSMultiSelect;\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 CDSMultiSelectItem).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 CDSMultiSelect;\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 CDSMultiSelectItem).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 CDSMultiSelect;\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as CDSMultiSelectItem).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 `<cds-multi-select>` looks for selected items via `qSA()`\n const items = this.querySelectorAll(selectorItem);\n forEach(items, (elem) => {\n (elem as CDSMultiSelectItem).selected =\n values.indexOf((elem as CDSMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) => values.indexOf((elem as CDSMultiSelectItem).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 CDSMultiSelect;\n"],"mappings":"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"}
1
+ {"version":3,"file":"multi-select.js","names":["html","property","customElement","query","classMap","Close16","prefix","filter","forEach","indexOf","CDSDropdown","DROPDOWN_KEYBOARD_ACTION","DROPDOWN_TYPE","SELECTION_FEEDBACK_OPTION","styles","DROPDOWN_SIZE","DROPDOWN_DIRECTION","CDSMultiSelect","_decorate","_initialize","_CDSDropdown","constructor","args","F","d","kind","decorators","type","Boolean","key","value","_selectionShouldChange","itemToSelect","_selectionDidChange","selected","_assistiveStatusText","selectedItemAssistiveText","unselectedItemAssistiveText","querySelectorAll","selectorItemSelected","item","_handleUserInitiatedToggle","unselectedAllAssistiveText","selectorItem","map","join","_handleClickInner","event","_this$_selectionButto","_this$_clearButtonNod","_selectionButtonNode","contains","target","readOnly","_handleUserInitiatedSelectItem","filterable","_filterInputNode","focus","_triggerNode","_clearButtonNode","_handleUserInitiatedClearInput","_get","_getPrototypeOf","prototype","call","_handleKeypressInner","_this$_clearButtonNod2","_this$_selectionButto2","action","getAction","TRIGGERING","open","_handleKeypressInnerFlterable","highlightedItem","querySelector","selectorItemHighlighted","_renderTitleLabel","clearSelectionDescription","clearSelectionText","disabled","hideLabel","titleText","_selectedItemsCount","selectedItemsCount","_slotTitleTextNode","slotTitleTextNode","_handleSlotchangeLabelText","handleSlotchangeLabelText","labelClasses","hasTitleText","assignedNodes","length","_t","_","_t2","_renderPrecedingLabel","clearSelectionLabel","selectionButtonClasses","undefined","_t3","class","_renderLabel","label","_selectedItemContent","selectedItemContent","_t4","_t5","_handleInput","_renderFollowingLabel","filterInputNode","_t6","items","inputValue","toLocaleLowerCase","itemValue","innerText","includes","setAttribute","removeAttribute","requestUpdate","_navigate","direction","selectorItemResults","highlightedIndex","nextIndex","i","highlighted","selectorItemFiltered","attribute","TOP_AFTER_REOPEN","_classes","size","invalid","warn","inline","INLINE","itemA","itemB","locale","localeCompare","numeric","menuItems","values","compareItems","menuItemsArray","Array","from","sortedArray","sort","hasItemA","hasItemB","shouldUpdate","changedProperties","split","has","elem","selectionFeedback","TOP","sortedMenuItems","sortItems","replaceChildren","updated","_menuBodyNode","connectedCallback","static","selectorMenuBody","eventBeforeToggle","eventToggle","eventBeforeSelect","eventSelect"],"sources":["components/multi-select/multi-select.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 { html, TemplateResult } from 'lit';\nimport { property, customElement, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport Close16 from '@carbon/icons/lib/close/16';\nimport { prefix } from '../../globals/settings';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport CDSDropdown, {\n DROPDOWN_KEYBOARD_ACTION,\n DROPDOWN_TYPE,\n} from '../dropdown/dropdown';\nimport { SELECTION_FEEDBACK_OPTION } from './defs';\nimport CDSMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss';\n\nexport {\n DROPDOWN_SIZE,\n DROPDOWN_TYPE,\n DROPDOWN_DIRECTION,\n} from '../dropdown/dropdown';\n\nexport { SELECTION_FEEDBACK_OPTION };\n\n/**\n * Multi select.\n *\n * @element cds-multi-select\n * @fires cds-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 cds-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires cds-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 cds-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 CDSMultiSelect extends CDSDropdown {\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 menu body.\n */\n @query('#menu-body')\n private _menuBodyNode!: 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?: CDSMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: CDSMultiSelectItem) {\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 CDSMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as CDSMultiSelectItem).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 CDSMultiSelect).selectorItem\n ),\n (item) => (item as CDSMultiSelectItem).selected\n )\n .map((item) => (item as CDSMultiSelectItem).value)\n .join(',');\n }\n\n protected _handleClickInner(event: MouseEvent) {\n if (\n this._selectionButtonNode?.contains(event.target as Node) &&\n !this.readOnly\n ) {\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 super._handleClickInner(event);\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 CDSDropdown).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 CDSDropdown).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 CDSDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as CDSMultiSelectItem;\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 _renderTitleLabel() {\n const {\n clearSelectionDescription,\n clearSelectionText,\n disabled,\n hideLabel,\n titleText,\n _selectedItemsCount: selectedItemsCount,\n _slotTitleTextNode: slotTitleTextNode,\n _handleSlotchangeLabelText: handleSlotchangeLabelText,\n } = this;\n\n const labelClasses = classMap({\n [`${prefix}--label`]: true,\n [`${prefix}--label--disabled`]: disabled,\n [`${prefix}--visually-hidden`]: hideLabel,\n });\n\n const hasTitleText =\n titleText ||\n (slotTitleTextNode && slotTitleTextNode.assignedNodes().length > 0);\n\n return html`\n <label\n part=\"title-text\"\n class=\"${labelClasses}\"\n ?hidden=\"${!hasTitleText}\">\n <slot name=\"title-text\" @slotchange=\"${handleSlotchangeLabelText}\"\n >${titleText}</slot\n >\n ${selectedItemsCount > 0\n ? html`\n <span class=\"${prefix}--visually-hidden\">\n ${clearSelectionDescription} ${selectedItemsCount},\n ${clearSelectionText}\n </span>\n `\n : null}\n </label>\n `;\n }\n\n protected _renderPrecedingLabel() {\n const {\n disabled,\n readOnly,\n clearSelectionLabel,\n _selectedItemsCount: selectedItemsCount,\n } = this;\n\n const selectionButtonClasses = classMap({\n [`${prefix}--list-box__selection`]: true,\n [`${prefix}--list-box__selection--multi`]: true,\n [`${prefix}--tag`]: true,\n [`${prefix}--tag--filter`]: true,\n [`${prefix}--tag--high-contrast`]: true,\n [`${prefix}--tag--disabled`]: disabled,\n });\n return selectedItemsCount === 0\n ? undefined\n : html`\n <div\n id=\"selection-button\"\n role=\"button\"\n class=\"${selectionButtonClasses}\"\n tabindex=\"-1\"\n aria-disabled=${readOnly}\n title=\"${clearSelectionLabel}\">\n ${selectedItemsCount}\n ${Close16({\n 'aria-label': clearSelectionLabel,\n class: `${prefix}--tag__close-icon`,\n })}\n </div>\n `;\n }\n\n /**\n @returns The main content of the trigger button.\n */\n protected _renderLabel(): TemplateResult {\n const { label, _selectedItemContent: selectedItemContent } = this;\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || label}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${prefix}--text-input\"\n placeholder=\"${label}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n protected _renderFollowingLabel(): 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 CDSMultiSelect).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 CDSMultiSelectItem).setAttribute('filtered', '');\n (item as CDSMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as CDSMultiSelectItem).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 super._navigate(direction);\n } else {\n // only navigate through remaining item\n const constructor = this.constructor as typeof CDSMultiSelect;\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 CDSMultiSelectItem).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 CDSMultiSelect;\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 CDSMultiSelectItem).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 * Specify the text that should be read for screen readers that describes total items selected\n */\n @property({ attribute: 'clear-selection-description' })\n clearSelectionDescription = 'Total items selected: ';\n\n /**\n * Specify the text that should be read for screen readers to clear selection.\n */\n @property({ attribute: 'clear-selection-text' })\n clearSelectionText = 'To clear selection, press Delete or Backspace.';\n\n /**\n * Specify the locale of the control. Used for the default compareItems used for sorting the list of items in the control.\n */\n @property()\n locale = 'en';\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 /**\n * Specify feedback (mode) of the selection.\n * `top`: selected item jumps to top\n * `fixed`: selected item stays at it's position\n * `top-after-reopen`: selected item jump to top after reopen dropdown\n */\n @property({ attribute: 'selection-feedback' })\n selectionFeedback = SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN;\n\n /**\n * The CSS class list for multi-select listbox\n */\n protected get _classes() {\n const {\n disabled,\n size,\n type,\n invalid,\n readOnly,\n open,\n warn,\n _selectedItemsCount: selectedItemsCount,\n } = this;\n const inline = type === DROPDOWN_TYPE.INLINE;\n\n return classMap({\n [`${prefix}--multi-select`]: true,\n [`${prefix}--list-box`]: true,\n [`${prefix}--list-box--disabled`]: disabled,\n [`${prefix}--list-box--inline`]: inline,\n [`${prefix}--list-box--expanded`]: open,\n [`${prefix}--list-box--${size}`]: size,\n [`${prefix}--multi-select--invalid`]: invalid,\n [`${prefix}--multi-select--warn`]: warn,\n [`${prefix}--multi-select--inline`]: inline,\n [`${prefix}--list-box--inline`]: inline,\n [`${prefix}--multi-select--readonly`]: readOnly,\n [`${prefix}--multi-select--selected`]: selectedItemsCount > 0,\n });\n }\n\n protected compareItems = (itemA, itemB, { locale }) => {\n itemA.localeCompare(itemB, locale, { numeric: true });\n };\n\n protected sortItems = (\n menuItems: NodeList,\n { values, compareItems, locale = 'en' }\n ) => {\n const menuItemsArray = Array.from(menuItems);\n\n const sortedArray = menuItemsArray.sort((itemA, itemB) => {\n const hasItemA = values.includes((itemA as HTMLInputElement).value);\n const hasItemB = values.includes((itemB as HTMLInputElement).value);\n\n // Prefer whichever item is in the `value` array first\n if (hasItemA && !hasItemB) {\n return -1;\n }\n\n if (hasItemB && !hasItemA) {\n return 1;\n }\n\n return compareItems(\n (itemA as HTMLInputElement).value,\n (itemB as HTMLInputElement).value,\n {\n locale,\n }\n );\n });\n\n return sortedArray;\n };\n\n shouldUpdate(changedProperties) {\n const { selectorItem } = this.constructor as typeof CDSMultiSelect;\n const items = this.querySelectorAll(selectorItem);\n\n const { value, locale } = this;\n const values = !value ? [] : value.split(',');\n\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as CDSMultiSelectItem).size = this.size;\n });\n }\n if (changedProperties.has('value')) {\n // Updates selection beforehand because our rendering logic for `<cds-multi-select>` looks for selected items via `qSA()`\n forEach(items, (elem) => {\n (elem as CDSMultiSelectItem).selected =\n values.indexOf((elem as CDSMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) => values.indexOf((elem as CDSMultiSelectItem).value) >= 0\n ).length;\n\n if (this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP) {\n const sortedMenuItems = this.sortItems(items, {\n values,\n compareItems: this.compareItems,\n locale,\n });\n\n this.replaceChildren(...sortedMenuItems);\n }\n }\n if (changedProperties.has('open')) {\n if (\n this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN\n ) {\n const sortedMenuItems = this.sortItems(items, {\n values,\n compareItems: this.compareItems,\n locale,\n });\n\n this.replaceChildren(...sortedMenuItems);\n }\n }\n return true;\n }\n\n updated(changedProperties) {\n if (changedProperties.has('open') && this.open && !this.filterable) {\n // move focus to menu body when open for non-filterable mulit-select\n this._menuBodyNode.focus();\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n /**\n * Detect if multi-select already has initially selected items\n */\n this.value = filter(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n ),\n (item) => (item as CDSMultiSelectItem).selected\n )\n .map((item) => (item as CDSMultiSelectItem).value)\n .join(',');\n }\n\n /**\n * A selector that will return menu body.\n */\n static get selectorMenuBody() {\n return `div[part=\"menu-body\"]`;\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 CDSMultiSelect;\n"],"mappings":"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"}