@pine-ds/core 4.3.0 → 4.4.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 (526) hide show
  1. package/components/closest.js +1 -1
  2. package/components/floating-ui.dom.js +1 -1
  3. package/components/i18n-format.js +1 -1
  4. package/components/index.d.ts +2 -0
  5. package/components/index.js +1 -1
  6. package/components/index2.js +1 -1
  7. package/components/mock-pds-modal.js +1 -1
  8. package/components/pds-button2.js +1 -1
  9. package/components/pds-checkbox2.js +1 -1
  10. package/components/pds-chip2.js +1 -1
  11. package/components/pds-combobox.js +2 -2
  12. package/components/pds-container.js +1 -1
  13. package/components/pds-copytext.js +1 -1
  14. package/components/pds-datepicker.d.ts +11 -0
  15. package/components/pds-datepicker.js +1 -0
  16. package/components/pds-divider.js +1 -1
  17. package/components/pds-drawer-content.js +1 -1
  18. package/components/pds-drawer-footer.js +1 -1
  19. package/components/pds-drawer-header.js +1 -1
  20. package/components/pds-drawer.js +1 -1
  21. package/components/pds-dropdown-menu-item.js +1 -1
  22. package/components/pds-dropdown-menu-separator.js +1 -1
  23. package/components/pds-dropdown-menu.js +1 -1
  24. package/components/pds-filter.js +1 -1
  25. package/components/pds-filters.js +1 -1
  26. package/components/pds-image.js +1 -1
  27. package/components/pds-input.js +1 -1
  28. package/components/pds-input2.js +1 -0
  29. package/components/pds-link2.js +1 -1
  30. package/components/pds-loader2.js +1 -1
  31. package/components/pds-modal-content.js +1 -1
  32. package/components/pds-modal-footer.js +1 -1
  33. package/components/pds-modal-header.js +1 -1
  34. package/components/pds-modal2.js +1 -1
  35. package/components/pds-multiselect.js +1 -1
  36. package/components/pds-popover.js +1 -1
  37. package/components/pds-progress.js +1 -1
  38. package/components/pds-property.js +1 -1
  39. package/components/pds-radio-group.js +1 -1
  40. package/components/pds-radio.js +1 -1
  41. package/components/pds-row.js +1 -1
  42. package/components/pds-select.js +1 -1
  43. package/components/pds-sortable-item.js +1 -1
  44. package/components/pds-sortable.js +2 -2
  45. package/components/pds-switch.js +1 -1
  46. package/components/pds-table-body.js +1 -1
  47. package/components/pds-table-cell2.js +1 -1
  48. package/components/pds-table-head-cell2.js +1 -1
  49. package/components/pds-table-head.js +1 -1
  50. package/components/pds-table-row.js +1 -1
  51. package/components/pds-tabpanel.js +1 -1
  52. package/components/pds-tabs.js +1 -1
  53. package/components/pds-text2.js +1 -1
  54. package/components/pds-textarea.js +1 -1
  55. package/components/pds-toast.js +1 -1
  56. package/components/pds-tooltip.js +1 -1
  57. package/components/utils.js +1 -1
  58. package/dist/cjs/closest-D0qyYtJ3.js +20 -0
  59. package/dist/cjs/{floating-ui.dom-BZk7Blsu.js → floating-ui.dom-Dc8Anyel.js} +79 -0
  60. package/dist/cjs/{i18n-format-CrpIhahc.js → i18n-format-BD0PmYzT.js} +1 -0
  61. package/dist/cjs/{index-CaLa1zy9.js → index-Bl5KnQay.js} +4 -1
  62. package/dist/cjs/{index-DYvijwA6.js → index-D-QQKB0y.js} +8 -0
  63. package/dist/cjs/loader.cjs.js +2 -2
  64. package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -3
  65. package/dist/cjs/pds-accordion.cjs.entry.js +2 -2
  66. package/dist/cjs/pds-alert.cjs.entry.js +1 -1
  67. package/dist/cjs/pds-avatar.cjs.entry.js +2 -2
  68. package/dist/cjs/pds-box.cjs.entry.js +2 -2
  69. package/dist/cjs/pds-button.cjs.entry.js +53 -4
  70. package/dist/cjs/pds-checkbox.cjs.entry.js +14 -6
  71. package/dist/cjs/pds-chip.cjs.entry.js +6 -6
  72. package/dist/cjs/pds-combobox.cjs.entry.js +1225 -117
  73. package/dist/cjs/pds-container.cjs.entry.js +2 -2
  74. package/dist/cjs/pds-copytext.cjs.entry.js +5 -5
  75. package/dist/cjs/pds-datepicker.cjs.entry.js +1962 -0
  76. package/dist/cjs/pds-divider.cjs.entry.js +2 -2
  77. package/dist/cjs/pds-drawer-content.cjs.entry.js +2 -2
  78. package/dist/cjs/pds-drawer-footer.cjs.entry.js +2 -2
  79. package/dist/cjs/pds-drawer-header.cjs.entry.js +2 -2
  80. package/dist/cjs/pds-drawer.cjs.entry.js +11 -4
  81. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +2 -2
  82. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
  83. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +11 -4
  84. package/dist/cjs/pds-filter.cjs.entry.js +3 -3
  85. package/dist/cjs/pds-filters.cjs.entry.js +2 -2
  86. package/dist/cjs/pds-icon.cjs.entry.js +1 -1
  87. package/dist/cjs/pds-image.cjs.entry.js +3 -3
  88. package/dist/cjs/pds-input.cjs.entry.js +8 -5
  89. package/dist/cjs/pds-link.cjs.entry.js +5 -5
  90. package/dist/cjs/pds-loader.cjs.entry.js +2 -2
  91. package/dist/cjs/pds-modal-content.cjs.entry.js +3 -3
  92. package/dist/cjs/pds-modal-footer.cjs.entry.js +2 -2
  93. package/dist/cjs/pds-modal-header.cjs.entry.js +2 -2
  94. package/dist/cjs/pds-modal.cjs.entry.js +12 -6
  95. package/dist/cjs/pds-multiselect.cjs.entry.js +264 -51
  96. package/dist/cjs/pds-popover.cjs.entry.js +30 -12
  97. package/dist/cjs/pds-progress.cjs.entry.js +3 -3
  98. package/dist/cjs/pds-property.cjs.entry.js +2 -2
  99. package/dist/cjs/pds-radio-group.cjs.entry.js +5 -5
  100. package/dist/cjs/pds-radio.cjs.entry.js +5 -5
  101. package/dist/cjs/pds-row.cjs.entry.js +2 -2
  102. package/dist/cjs/pds-select.cjs.entry.js +3 -3
  103. package/dist/cjs/pds-sortable-item.cjs.entry.js +3 -3
  104. package/dist/cjs/pds-sortable.cjs.entry.js +2 -2
  105. package/dist/cjs/pds-switch.cjs.entry.js +14 -6
  106. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  107. package/dist/cjs/pds-table-body.cjs.entry.js +2 -2
  108. package/dist/cjs/pds-table-cell.cjs.entry.js +5 -5
  109. package/dist/cjs/pds-table-head-cell.cjs.entry.js +4 -4
  110. package/dist/cjs/pds-table-head.cjs.entry.js +3 -3
  111. package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
  112. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  113. package/dist/cjs/pds-tabpanel.cjs.entry.js +2 -2
  114. package/dist/cjs/pds-tabs.cjs.entry.js +2 -2
  115. package/dist/cjs/pds-text.cjs.entry.js +5 -5
  116. package/dist/cjs/pds-textarea.cjs.entry.js +14 -9
  117. package/dist/cjs/pds-toast.cjs.entry.js +4 -4
  118. package/dist/cjs/pds-tooltip.cjs.entry.js +4 -4
  119. package/dist/cjs/pine-core.cjs.js +2 -2
  120. package/dist/cjs/{truncation-tooltip-Bps7_rUy.js → truncation-tooltip-CYgQfBLt.js} +1 -1
  121. package/dist/cjs/{utils-KWALOgy9.js → utils-BhRmyxT8.js} +35 -4
  122. package/dist/collection/collection-manifest.json +1 -0
  123. package/dist/collection/components/pds-button/pds-button.js +53 -2
  124. package/dist/collection/components/pds-checkbox/pds-checkbox.css +7 -0
  125. package/dist/collection/components/pds-checkbox/pds-checkbox.js +19 -3
  126. package/dist/collection/components/pds-chip/pds-chip.js +1 -1
  127. package/dist/collection/components/pds-combobox/grouped-options-panel.js +262 -0
  128. package/dist/collection/components/pds-combobox/pds-combobox.css +242 -13
  129. package/dist/collection/components/pds-combobox/pds-combobox.js +1128 -114
  130. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +240 -0
  131. package/dist/collection/components/pds-container/pds-container.js +1 -1
  132. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  133. package/dist/collection/components/pds-datepicker/calendar-portal.js +136 -0
  134. package/dist/collection/components/pds-datepicker/date-utils.js +132 -0
  135. package/dist/collection/components/pds-datepicker/datepicker-interface.js +1 -0
  136. package/dist/collection/components/pds-datepicker/pds-datepicker.css +545 -0
  137. package/dist/collection/components/pds-datepicker/pds-datepicker.js +2406 -0
  138. package/dist/collection/components/pds-datepicker/presets.js +96 -0
  139. package/dist/collection/components/pds-datepicker/stories/pds-datepicker.stories.js +195 -0
  140. package/dist/collection/components/pds-datepicker/value.js +238 -0
  141. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  142. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +1 -1
  143. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +1 -1
  144. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +1 -1
  145. package/dist/collection/components/pds-drawer/pds-drawer.css +4 -0
  146. package/dist/collection/components/pds-drawer/pds-drawer.js +9 -2
  147. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  148. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  149. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +9 -2
  150. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  151. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  152. package/dist/collection/components/pds-image/pds-image.js +2 -2
  153. package/dist/collection/components/pds-input/pds-input.js +6 -3
  154. package/dist/collection/components/pds-link/pds-link.js +2 -2
  155. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  156. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  157. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  158. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  159. package/dist/collection/components/pds-modal/pds-modal.css +16 -0
  160. package/dist/collection/components/pds-modal/pds-modal.js +10 -4
  161. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  162. package/dist/collection/components/pds-multiselect/pds-multiselect.css +19 -1
  163. package/dist/collection/components/pds-multiselect/pds-multiselect.js +390 -47
  164. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +136 -1
  165. package/dist/collection/components/pds-popover/pds-popover.js +29 -11
  166. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  167. package/dist/collection/components/pds-property/pds-property.js +1 -1
  168. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  169. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  170. package/dist/collection/components/pds-row/pds-row.js +1 -1
  171. package/dist/collection/components/pds-select/pds-select.js +1 -1
  172. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  173. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  174. package/dist/collection/components/pds-switch/pds-switch.css +3 -0
  175. package/dist/collection/components/pds-switch/pds-switch.js +20 -4
  176. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  177. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  178. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  179. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  180. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  181. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  182. package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
  183. package/dist/collection/components/pds-text/pds-text.js +1 -1
  184. package/dist/collection/components/pds-textarea/pds-textarea.js +11 -6
  185. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  186. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  187. package/dist/collection/utils/closest.js +8 -0
  188. package/dist/collection/utils/utils.js +33 -4
  189. package/dist/docs.json +1933 -59
  190. package/dist/esm/closest-DHPzKMVS.js +17 -0
  191. package/dist/esm/{floating-ui.dom-DDtwbwIl.js → floating-ui.dom-BPqJgIq6.js} +79 -1
  192. package/dist/esm/{i18n-format-BKsJZTyn.js → i18n-format-BJgZHCWe.js} +1 -1
  193. package/dist/esm/{index-DcT8--Dn.js → index-CB8Yh0Nt.js} +4 -1
  194. package/dist/esm/{index-BU1hN5Vy.js → index-DxI-61GK.js} +5 -1
  195. package/dist/esm/loader.js +3 -3
  196. package/dist/esm/mock-pds-modal.entry.js +3 -3
  197. package/dist/esm/pds-accordion.entry.js +2 -2
  198. package/dist/esm/pds-alert.entry.js +1 -1
  199. package/dist/esm/pds-avatar.entry.js +2 -2
  200. package/dist/esm/pds-box.entry.js +2 -2
  201. package/dist/esm/pds-button.entry.js +53 -4
  202. package/dist/esm/pds-checkbox.entry.js +14 -6
  203. package/dist/esm/pds-chip.entry.js +6 -6
  204. package/dist/esm/pds-combobox.entry.js +1225 -117
  205. package/dist/esm/pds-container.entry.js +2 -2
  206. package/dist/esm/pds-copytext.entry.js +5 -5
  207. package/dist/esm/pds-datepicker.entry.js +1960 -0
  208. package/dist/esm/pds-divider.entry.js +2 -2
  209. package/dist/esm/pds-drawer-content.entry.js +2 -2
  210. package/dist/esm/pds-drawer-footer.entry.js +2 -2
  211. package/dist/esm/pds-drawer-header.entry.js +2 -2
  212. package/dist/esm/pds-drawer.entry.js +11 -4
  213. package/dist/esm/pds-dropdown-menu-item.entry.js +2 -2
  214. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  215. package/dist/esm/pds-dropdown-menu.entry.js +11 -4
  216. package/dist/esm/pds-filter.entry.js +3 -3
  217. package/dist/esm/pds-filters.entry.js +2 -2
  218. package/dist/esm/pds-icon.entry.js +1 -1
  219. package/dist/esm/pds-image.entry.js +3 -3
  220. package/dist/esm/pds-input.entry.js +8 -5
  221. package/dist/esm/pds-link.entry.js +5 -5
  222. package/dist/esm/pds-loader.entry.js +2 -2
  223. package/dist/esm/pds-modal-content.entry.js +3 -3
  224. package/dist/esm/pds-modal-footer.entry.js +2 -2
  225. package/dist/esm/pds-modal-header.entry.js +2 -2
  226. package/dist/esm/pds-modal.entry.js +12 -6
  227. package/dist/esm/pds-multiselect.entry.js +264 -51
  228. package/dist/esm/pds-popover.entry.js +30 -12
  229. package/dist/esm/pds-progress.entry.js +3 -3
  230. package/dist/esm/pds-property.entry.js +2 -2
  231. package/dist/esm/pds-radio-group.entry.js +5 -5
  232. package/dist/esm/pds-radio.entry.js +5 -5
  233. package/dist/esm/pds-row.entry.js +2 -2
  234. package/dist/esm/pds-select.entry.js +3 -3
  235. package/dist/esm/pds-sortable-item.entry.js +3 -3
  236. package/dist/esm/pds-sortable.entry.js +2 -2
  237. package/dist/esm/pds-switch.entry.js +14 -6
  238. package/dist/esm/pds-tab.entry.js +1 -1
  239. package/dist/esm/pds-table-body.entry.js +2 -2
  240. package/dist/esm/pds-table-cell.entry.js +5 -5
  241. package/dist/esm/pds-table-head-cell.entry.js +4 -4
  242. package/dist/esm/pds-table-head.entry.js +3 -3
  243. package/dist/esm/pds-table-row.entry.js +3 -3
  244. package/dist/esm/pds-table.entry.js +1 -1
  245. package/dist/esm/pds-tabpanel.entry.js +2 -2
  246. package/dist/esm/pds-tabs.entry.js +2 -2
  247. package/dist/esm/pds-text.entry.js +5 -5
  248. package/dist/esm/pds-textarea.entry.js +14 -9
  249. package/dist/esm/pds-toast.entry.js +4 -4
  250. package/dist/esm/pds-tooltip.entry.js +4 -4
  251. package/dist/esm/pine-core.js +3 -3
  252. package/dist/esm/{truncation-tooltip-CdtEBn_5.js → truncation-tooltip-_902ENWC.js} +1 -1
  253. package/dist/esm/{utils-u_0lxWnH.js → utils-OYK5-nwe.js} +34 -5
  254. package/dist/esm-es5/closest-DHPzKMVS.js +1 -0
  255. package/dist/esm-es5/floating-ui.dom-BPqJgIq6.js +1 -0
  256. package/dist/esm-es5/{i18n-format-BKsJZTyn.js → i18n-format-BJgZHCWe.js} +1 -1
  257. package/dist/esm-es5/index-CB8Yh0Nt.js +2 -0
  258. package/dist/esm-es5/index-DxI-61GK.js +1 -0
  259. package/dist/esm-es5/loader.js +1 -1
  260. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  261. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  262. package/dist/esm-es5/pds-alert.entry.js +1 -1
  263. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  264. package/dist/esm-es5/pds-box.entry.js +1 -1
  265. package/dist/esm-es5/pds-button.entry.js +1 -1
  266. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  267. package/dist/esm-es5/pds-chip.entry.js +1 -1
  268. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  269. package/dist/esm-es5/pds-container.entry.js +1 -1
  270. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  271. package/dist/esm-es5/pds-datepicker.entry.js +1 -0
  272. package/dist/esm-es5/pds-divider.entry.js +1 -1
  273. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  274. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  275. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  276. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  277. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  278. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  279. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  280. package/dist/esm-es5/pds-filter.entry.js +1 -1
  281. package/dist/esm-es5/pds-filters.entry.js +1 -1
  282. package/dist/esm-es5/pds-icon.entry.js +1 -1
  283. package/dist/esm-es5/pds-image.entry.js +1 -1
  284. package/dist/esm-es5/pds-input.entry.js +1 -1
  285. package/dist/esm-es5/pds-link.entry.js +1 -1
  286. package/dist/esm-es5/pds-loader.entry.js +1 -1
  287. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  288. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  289. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  290. package/dist/esm-es5/pds-modal.entry.js +1 -1
  291. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  292. package/dist/esm-es5/pds-popover.entry.js +1 -1
  293. package/dist/esm-es5/pds-progress.entry.js +1 -1
  294. package/dist/esm-es5/pds-property.entry.js +1 -1
  295. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  296. package/dist/esm-es5/pds-radio.entry.js +1 -1
  297. package/dist/esm-es5/pds-row.entry.js +1 -1
  298. package/dist/esm-es5/pds-select.entry.js +1 -1
  299. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  300. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  301. package/dist/esm-es5/pds-switch.entry.js +1 -1
  302. package/dist/esm-es5/pds-tab.entry.js +1 -1
  303. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  304. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  305. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  306. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  307. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  308. package/dist/esm-es5/pds-table.entry.js +1 -1
  309. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  310. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  311. package/dist/esm-es5/pds-text.entry.js +1 -1
  312. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  313. package/dist/esm-es5/pds-toast.entry.js +1 -1
  314. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  315. package/dist/esm-es5/pine-core.js +1 -1
  316. package/dist/esm-es5/{truncation-tooltip-CdtEBn_5.js → truncation-tooltip-_902ENWC.js} +1 -1
  317. package/dist/esm-es5/utils-OYK5-nwe.js +1 -0
  318. package/dist/pine-core/p-0414092a.system.entry.js +1 -0
  319. package/dist/pine-core/p-04807201.entry.js +1 -0
  320. package/dist/pine-core/{p-cfcb89d1.system.entry.js → p-07f0d168.system.entry.js} +1 -1
  321. package/dist/pine-core/p-08f5d19c.entry.js +1 -0
  322. package/dist/pine-core/{p-d70aa0c7.system.entry.js → p-0aaf8faa.system.entry.js} +1 -1
  323. package/dist/pine-core/p-0bad5955.entry.js +1 -0
  324. package/dist/pine-core/{p-99f300ef.system.entry.js → p-0c3bf377.system.entry.js} +1 -1
  325. package/dist/pine-core/p-0ce79cd0.entry.js +1 -0
  326. package/dist/pine-core/{p-f682f08a.system.entry.js → p-1057b8c3.system.entry.js} +1 -1
  327. package/dist/pine-core/{p-089606b8.system.entry.js → p-108c910a.system.entry.js} +1 -1
  328. package/dist/pine-core/{p-ea986474.system.entry.js → p-166f61a6.system.entry.js} +1 -1
  329. package/dist/pine-core/{p-95defb53.entry.js → p-16c8f5e3.entry.js} +1 -1
  330. package/dist/pine-core/p-16e258d1.entry.js +1 -0
  331. package/dist/pine-core/{p-a8f1a48d.entry.js → p-1be33c95.entry.js} +1 -1
  332. package/dist/pine-core/{p-70fb83d4.entry.js → p-1e3a31da.entry.js} +1 -1
  333. package/dist/pine-core/{p-12941e0d.entry.js → p-1f228db9.entry.js} +1 -1
  334. package/dist/pine-core/p-257c6ef9.entry.js +1 -0
  335. package/dist/pine-core/p-26415245.system.entry.js +1 -0
  336. package/dist/pine-core/p-26e1e5bb.entry.js +1 -0
  337. package/dist/pine-core/p-27c06bf8.entry.js +2 -0
  338. package/dist/pine-core/p-31aee437.entry.js +1 -0
  339. package/dist/pine-core/p-330a76f6.system.entry.js +1 -0
  340. package/dist/pine-core/{p-4ebdb90b.system.entry.js → p-33c63be6.system.entry.js} +1 -1
  341. package/dist/pine-core/{p-c5b6b545.entry.js → p-344609f9.entry.js} +2 -2
  342. package/dist/pine-core/{p-2dbc90ba.entry.js → p-3a1711c1.entry.js} +1 -1
  343. package/dist/pine-core/p-3a9c58bd.system.entry.js +1 -0
  344. package/dist/pine-core/{p-32fc82c2.entry.js → p-3ebd543f.entry.js} +1 -1
  345. package/dist/pine-core/p-3fbcb0c8.system.entry.js +1 -0
  346. package/dist/pine-core/{p-e08e4ca7.entry.js → p-427b4aeb.entry.js} +1 -1
  347. package/dist/pine-core/{p-f5cf98be.system.entry.js → p-42bd87ea.system.entry.js} +1 -1
  348. package/dist/pine-core/{p-8d1e7b3c.system.entry.js → p-43c691bf.system.entry.js} +1 -1
  349. package/dist/pine-core/p-4566d659.system.entry.js +1 -0
  350. package/dist/pine-core/{p-b9a857fc.system.entry.js → p-4b8cf04a.system.entry.js} +1 -1
  351. package/dist/pine-core/p-4d6f471c.entry.js +1 -0
  352. package/dist/pine-core/{p-ec04d4c3.entry.js → p-4e7580c4.entry.js} +1 -1
  353. package/dist/pine-core/{p-fbb72e66.system.entry.js → p-4f4a2d2a.system.entry.js} +1 -1
  354. package/dist/pine-core/{p-b8a5597d.entry.js → p-5211aba7.entry.js} +1 -1
  355. package/dist/pine-core/{p-7e4729e0.entry.js → p-524b7d3f.entry.js} +1 -1
  356. package/dist/pine-core/{p-c08b1697.entry.js → p-5613c64c.entry.js} +1 -1
  357. package/dist/pine-core/{p-5a8345e2.entry.js → p-5bb24cb4.entry.js} +1 -1
  358. package/dist/pine-core/{p-73c3a73f.entry.js → p-5bb80b3c.entry.js} +1 -1
  359. package/dist/pine-core/{p-e039ebb6.system.entry.js → p-5c6e0a26.system.entry.js} +1 -1
  360. package/dist/pine-core/{p-b53d9620.system.entry.js → p-5db57551.system.entry.js} +1 -1
  361. package/dist/pine-core/{p-6b260a97.entry.js → p-5eb00ba5.entry.js} +1 -1
  362. package/dist/pine-core/p-61756414.system.entry.js +1 -0
  363. package/dist/pine-core/{p-08196d6c.entry.js → p-682e9e8f.entry.js} +1 -1
  364. package/dist/pine-core/p-6965db1d.entry.js +1 -0
  365. package/dist/pine-core/{p-317337e4.entry.js → p-6b180ee2.entry.js} +1 -1
  366. package/dist/pine-core/{p-d33d65f6.entry.js → p-6c53962f.entry.js} +1 -1
  367. package/dist/pine-core/p-6da6520b.system.entry.js +3 -0
  368. package/dist/pine-core/{p-bd9b2931.system.entry.js → p-6e3bf862.system.entry.js} +1 -1
  369. package/dist/pine-core/{p-9d77f2f8.system.entry.js → p-71c9f866.system.entry.js} +1 -1
  370. package/dist/pine-core/{p-a616385b.system.entry.js → p-7265b94c.system.entry.js} +1 -1
  371. package/dist/pine-core/{p-55532d56.system.entry.js → p-74229b5e.system.entry.js} +1 -1
  372. package/dist/pine-core/p-7512c2d4.system.entry.js +1 -0
  373. package/dist/pine-core/p-76db406d.system.entry.js +1 -0
  374. package/dist/pine-core/{p-3b555f06.system.entry.js → p-79aa5f43.system.entry.js} +1 -1
  375. package/dist/pine-core/{p-77082557.system.entry.js → p-7bbcda0f.system.entry.js} +1 -1
  376. package/dist/pine-core/p-7c8946e6.entry.js +1 -0
  377. package/dist/pine-core/p-7c98c90a.system.entry.js +1 -0
  378. package/dist/pine-core/p-81292c03.system.entry.js +1 -0
  379. package/dist/pine-core/p-81300046.system.entry.js +1 -0
  380. package/dist/pine-core/{p-93c52e2b.system.entry.js → p-8252cd84.system.entry.js} +1 -1
  381. package/dist/pine-core/p-84ba0e6a.system.entry.js +1 -0
  382. package/dist/pine-core/{p-45d55983.entry.js → p-86fc0bfa.entry.js} +1 -1
  383. package/dist/pine-core/p-90692bb6.entry.js +1 -0
  384. package/dist/pine-core/{p-67fc26e5.system.entry.js → p-90ea812c.system.entry.js} +1 -1
  385. package/dist/pine-core/p-948826db.entry.js +1 -0
  386. package/dist/pine-core/{p-35edd8b0.entry.js → p-9b66642d.entry.js} +1 -1
  387. package/dist/pine-core/p-BJgZHCWe.js +1 -0
  388. package/dist/pine-core/p-BPqJgIq6.js +1 -0
  389. package/dist/pine-core/p-BSRFZB4I.system.js +1 -0
  390. package/dist/pine-core/p-BZsj6eAn.system.js +1 -0
  391. package/dist/pine-core/p-CB8Yh0Nt.js +2 -0
  392. package/dist/pine-core/{p-B2qvvB3q.system.js → p-CBu9UrXr.system.js} +1 -1
  393. package/dist/pine-core/p-COtCa1Md.system.js +1 -0
  394. package/dist/pine-core/p-CTQZ2fkv.system.js +1 -0
  395. package/dist/pine-core/{p-B2nn1gSd.js → p-CnM3cCof.js} +1 -1
  396. package/dist/pine-core/p-CnO10OxH.system.js +1 -0
  397. package/dist/pine-core/p-D-akEPIU.system.js +2 -0
  398. package/dist/pine-core/p-DHPzKMVS.js +1 -0
  399. package/dist/pine-core/p-Dx8tEj0U.system.js +1 -0
  400. package/dist/pine-core/p-DxI-61GK.js +1 -0
  401. package/dist/pine-core/p-OYK5-nwe.js +1 -0
  402. package/dist/pine-core/p-a10af84b.system.entry.js +1 -0
  403. package/dist/pine-core/p-a21b530a.system.entry.js +1 -0
  404. package/dist/pine-core/{p-b0becff3.system.entry.js → p-a85535a4.system.entry.js} +1 -1
  405. package/dist/pine-core/p-abc0fe2f.system.entry.js +1 -0
  406. package/dist/pine-core/p-ac6a5bf0.entry.js +1 -0
  407. package/dist/pine-core/{p-5f5339ab.entry.js → p-b0526f98.entry.js} +1 -1
  408. package/dist/pine-core/p-b130b716.entry.js +1 -0
  409. package/dist/pine-core/{p-4cbb691f.entry.js → p-b195d345.entry.js} +1 -1
  410. package/dist/pine-core/{p-5c5bd609.entry.js → p-b4923acf.entry.js} +1 -1
  411. package/dist/pine-core/{p-15a0fa0a.system.entry.js → p-b4e440e3.system.entry.js} +1 -1
  412. package/dist/pine-core/p-b8693a87.entry.js +1 -0
  413. package/dist/pine-core/{p-bf025e38.entry.js → p-b8ada1eb.entry.js} +1 -1
  414. package/dist/pine-core/{p-a6a269da.system.entry.js → p-bb85bbb5.system.entry.js} +1 -1
  415. package/dist/pine-core/{p-fa8d3155.system.entry.js → p-bbc539bc.system.entry.js} +2 -2
  416. package/dist/pine-core/{p-f26dcbc2.system.entry.js → p-bf833976.system.entry.js} +1 -1
  417. package/dist/pine-core/{p-e055c543.entry.js → p-c23097af.entry.js} +1 -1
  418. package/dist/pine-core/p-c2dd84bd.system.entry.js +1 -0
  419. package/dist/pine-core/{p-441682f4.system.entry.js → p-c4520b04.system.entry.js} +1 -1
  420. package/dist/pine-core/{p-f1365550.entry.js → p-c4f68dfc.entry.js} +1 -1
  421. package/dist/pine-core/{p-fa2a786d.system.entry.js → p-c6fa6744.system.entry.js} +1 -1
  422. package/dist/pine-core/p-c7dba815.entry.js +1 -0
  423. package/dist/pine-core/p-cb6f55ff.entry.js +1 -0
  424. package/dist/pine-core/p-cfb8fa7c.system.entry.js +1 -0
  425. package/dist/pine-core/{p-2bb101c2.entry.js → p-d0d7d1d4.entry.js} +1 -1
  426. package/dist/pine-core/{p-4f5aacd9.entry.js → p-d1112c8a.entry.js} +1 -1
  427. package/dist/pine-core/{p-5f3d0c86.system.entry.js → p-d4e91ad9.system.entry.js} +1 -1
  428. package/dist/pine-core/{p-44222439.entry.js → p-da018dcb.entry.js} +1 -1
  429. package/dist/pine-core/{p-57784f2f.system.entry.js → p-dc27abe6.system.entry.js} +1 -1
  430. package/dist/pine-core/{p-f9f7101e.entry.js → p-dc343b6d.entry.js} +1 -1
  431. package/dist/pine-core/{p-fb774f89.system.entry.js → p-dde753e7.system.entry.js} +1 -1
  432. package/dist/pine-core/{p-558ac401.entry.js → p-dea3a582.entry.js} +1 -1
  433. package/dist/pine-core/p-df29fd41.entry.js +1 -0
  434. package/dist/pine-core/{p-c6426e16.system.entry.js → p-e4e2eae2.system.entry.js} +1 -1
  435. package/dist/pine-core/{p-1abae35f.entry.js → p-e8668178.entry.js} +1 -1
  436. package/dist/pine-core/{p-20753e42.system.entry.js → p-eb28d21d.system.entry.js} +1 -1
  437. package/dist/pine-core/p-eb71a82d.system.entry.js +1 -0
  438. package/dist/pine-core/{p-13bb89ff.entry.js → p-ed63873c.entry.js} +1 -1
  439. package/dist/pine-core/{p-5d2f95bd.entry.js → p-f4f6dc36.entry.js} +1 -1
  440. package/dist/pine-core/{p-6b3d8c2b.system.entry.js → p-f67a0ca8.system.entry.js} +1 -1
  441. package/dist/pine-core/{p-003df3b3.entry.js → p-fc455968.entry.js} +1 -1
  442. package/dist/pine-core/{p-02452806.system.entry.js → p-fe3e2ebd.system.entry.js} +1 -1
  443. package/dist/pine-core/pine-core.css +1 -1
  444. package/dist/pine-core/pine-core.esm.js +1 -1
  445. package/dist/pine-core/pine-core.js +1 -1
  446. package/dist/types/components/pds-button/pds-button.d.ts +10 -0
  447. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +5 -0
  448. package/dist/types/components/pds-combobox/combobox-interface.d.ts +17 -0
  449. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +105 -0
  450. package/dist/types/components/pds-combobox/pds-combobox.d.ts +235 -3
  451. package/dist/types/components/pds-datepicker/calendar-portal.d.ts +43 -0
  452. package/dist/types/components/pds-datepicker/date-utils.d.ts +48 -0
  453. package/dist/types/components/pds-datepicker/datepicker-interface.d.ts +30 -0
  454. package/dist/types/components/pds-datepicker/pds-datepicker.d.ts +489 -0
  455. package/dist/types/components/pds-datepicker/presets.d.ts +23 -0
  456. package/dist/types/components/pds-datepicker/value.d.ts +47 -0
  457. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +1 -0
  458. package/dist/types/components/pds-multiselect/multiselect-interface.d.ts +19 -0
  459. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +56 -1
  460. package/dist/types/components/pds-popover/pds-popover.d.ts +1 -0
  461. package/dist/types/components/pds-switch/pds-switch.d.ts +5 -0
  462. package/dist/types/components.d.ts +677 -4
  463. package/dist/types/utils/closest.d.ts +2 -0
  464. package/dist/types/utils/utils.d.ts +9 -1
  465. package/dist/vscode.html-data.json +467 -3
  466. package/hydrate/index.js +3973 -362
  467. package/hydrate/index.mjs +3973 -362
  468. package/package.json +2 -2
  469. package/dist/cjs/closest-BZXvuB_Y.js +0 -11
  470. package/dist/esm/closest-DnUJodVd.js +0 -9
  471. package/dist/esm-es5/closest-DnUJodVd.js +0 -1
  472. package/dist/esm-es5/floating-ui.dom-DDtwbwIl.js +0 -1
  473. package/dist/esm-es5/index-BU1hN5Vy.js +0 -1
  474. package/dist/esm-es5/index-DcT8--Dn.js +0 -2
  475. package/dist/esm-es5/utils-u_0lxWnH.js +0 -1
  476. package/dist/pine-core/p-026ee6de.entry.js +0 -1
  477. package/dist/pine-core/p-03f3fc92.system.entry.js +0 -1
  478. package/dist/pine-core/p-06375326.system.entry.js +0 -1
  479. package/dist/pine-core/p-1df5e088.entry.js +0 -1
  480. package/dist/pine-core/p-24214ab9.system.entry.js +0 -1
  481. package/dist/pine-core/p-250011ba.entry.js +0 -1
  482. package/dist/pine-core/p-2b420257.entry.js +0 -1
  483. package/dist/pine-core/p-375eb7f4.entry.js +0 -1
  484. package/dist/pine-core/p-3b796898.entry.js +0 -1
  485. package/dist/pine-core/p-3c5489ce.entry.js +0 -1
  486. package/dist/pine-core/p-3e868906.system.entry.js +0 -1
  487. package/dist/pine-core/p-464f23e6.entry.js +0 -1
  488. package/dist/pine-core/p-49c6112a.entry.js +0 -1
  489. package/dist/pine-core/p-4bd57896.system.entry.js +0 -1
  490. package/dist/pine-core/p-6a6a767b.system.entry.js +0 -1
  491. package/dist/pine-core/p-6dabeebc.system.entry.js +0 -3
  492. package/dist/pine-core/p-70891202.entry.js +0 -1
  493. package/dist/pine-core/p-73fa955a.system.entry.js +0 -1
  494. package/dist/pine-core/p-755e0b3c.system.entry.js +0 -1
  495. package/dist/pine-core/p-8b051229.entry.js +0 -1
  496. package/dist/pine-core/p-8d8a8550.system.entry.js +0 -1
  497. package/dist/pine-core/p-93486f2e.entry.js +0 -1
  498. package/dist/pine-core/p-93ae562d.entry.js +0 -1
  499. package/dist/pine-core/p-95b8bece.system.entry.js +0 -1
  500. package/dist/pine-core/p-9d902000.system.entry.js +0 -1
  501. package/dist/pine-core/p-9ef355b7.entry.js +0 -1
  502. package/dist/pine-core/p-BI7Ml0VF.system.js +0 -1
  503. package/dist/pine-core/p-BKsJZTyn.js +0 -1
  504. package/dist/pine-core/p-BU1hN5Vy.js +0 -1
  505. package/dist/pine-core/p-BrLs99ML.system.js +0 -1
  506. package/dist/pine-core/p-CJ8t3EBJ.system.js +0 -2
  507. package/dist/pine-core/p-Cr7-rJtJ.system.js +0 -1
  508. package/dist/pine-core/p-DDtwbwIl.js +0 -1
  509. package/dist/pine-core/p-D_I-k33A.system.js +0 -1
  510. package/dist/pine-core/p-DcT8--Dn.js +0 -2
  511. package/dist/pine-core/p-DnUJodVd.js +0 -1
  512. package/dist/pine-core/p-a009ab10.system.entry.js +0 -1
  513. package/dist/pine-core/p-a8cd2ab5.entry.js +0 -1
  514. package/dist/pine-core/p-b45b8f8b.system.entry.js +0 -1
  515. package/dist/pine-core/p-b85bb61d.system.entry.js +0 -1
  516. package/dist/pine-core/p-bdded57a.system.entry.js +0 -1
  517. package/dist/pine-core/p-c1a65082.entry.js +0 -1
  518. package/dist/pine-core/p-c1d1befb.system.entry.js +0 -1
  519. package/dist/pine-core/p-ctdGub9B.system.js +0 -1
  520. package/dist/pine-core/p-d9c1ee36.system.entry.js +0 -1
  521. package/dist/pine-core/p-df285ece.system.entry.js +0 -1
  522. package/dist/pine-core/p-ee114aef.entry.js +0 -1
  523. package/dist/pine-core/p-ee997fbf.entry.js +0 -2
  524. package/dist/pine-core/p-f89197c9.entry.js +0 -1
  525. package/dist/pine-core/p-kYMYDfJY.system.js +0 -1
  526. package/dist/pine-core/p-u_0lxWnH.js +0 -1
@@ -1,12 +1,15 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-DcT8--Dn.js';
2
- import { a as autoUpdate, c as computePosition, o as offset, f as flip, s as shift, b as size } from './floating-ui.dom-DDtwbwIl.js';
3
- import { d as debounceEvent } from './utils-u_0lxWnH.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-CB8Yh0Nt.js';
2
+ import { a as autoUpdate, c as computePosition, o as offset, f as flip, s as shift, b as size } from './floating-ui.dom-BPqJgIq6.js';
3
+ import { c as cancelDebouncedEvent, d as debounceEvent, f as flushDebouncedEvent } from './utils-OYK5-nwe.js';
4
4
  import { i as isSpecTest, a as assignDescription, m as messageId } from './form-BuRbS7Hp.js';
5
- import { e as enlarge, b as danger } from './index-BU1hN5Vy.js';
6
- import { f as formatMessage, p as pluralize } from './i18n-format-BKsJZTyn.js';
5
+ import { e as enlarge, b as danger } from './index-DxI-61GK.js';
6
+ import { f as formatMessage, p as pluralize } from './i18n-format-BJgZHCWe.js';
7
7
 
8
- const pdsMultiselectCss = () => `:host{display:block}:host([aria-disabled=true]) .pds-multiselect__trigger{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}:host([aria-disabled=true]) .pds-multiselect__icon{color:var(--pine-color-text-disabled)}.pds-multiselect{position:relative}.pds-multiselect__label{color:var(--pine-color-text-label);display:block;font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-multiselect__wrapper{position:relative}.pds-multiselect__trigger{-ms-flex-align:center;align-items:center;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-dimension-125);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;letter-spacing:var(--pine-letter-spacing);min-height:var(--pine-dimension-450);padding:var(--pine-dimension-xs) var(--pine-dimension-sm);position:relative;text-align:start;-webkit-transition:border-color var(--pine-motion-duration-base) ease, -webkit-box-shadow var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease, -webkit-box-shadow var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease, box-shadow var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease, box-shadow var(--pine-motion-duration-base) ease, -webkit-box-shadow var(--pine-motion-duration-base) ease;width:100%}.pds-multiselect__trigger:hover:not(.pds-multiselect__trigger--disabled){border-color:var(--pine-color-border-hover)}.pds-multiselect__trigger:focus:not(.pds-multiselect__trigger--disabled){border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-multiselect__trigger.pds-multiselect__trigger--open{border-color:var(--pine-color-border-active)}.pds-multiselect__trigger.pds-multiselect__trigger--invalid{background-color:var(--pine-color-red-050);border-color:var(--pine-color-border-danger)}.pds-multiselect__trigger.pds-multiselect__trigger--invalid:focus{outline-color:var(--pine-color-focus-ring-danger)}.pds-multiselect__trigger.pds-multiselect__trigger--disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-multiselect__trigger-text{color:var(--pine-color-text-strong);-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pds-multiselect__trigger-text.pds-multiselect__trigger-text--placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__trigger--disabled .pds-multiselect__trigger-text{color:var(--pine-color-text-disabled)}.pds-multiselect__icon{color:var(--pine-color-icon);-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none)}.pds-multiselect__pill-list{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-2xs)}.pds-multiselect__pill-list--inline{-ms-flex:1;flex:1;min-width:0}.pds-multiselect__pill-list--below{-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-multiselect__pill-overflow{color:var(--pine-color-text-muted);font:var(--pine-typography-body-sm-medium);white-space:nowrap}.pds-multiselect__trigger--pill-inline{-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-2xs);min-height:var(--pine-dimension-450);padding:var(--pine-dimension-2xs) var(--pine-dimension-sm)}.pds-multiselect__trigger--pill-inline.pds-multiselect__trigger--open{border-color:var(--pine-color-border-active)}.pds-multiselect__trigger--pill-inline:focus-within:not(.pds-multiselect__trigger--disabled){border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-multiselect__trigger--pill-inline.pds-multiselect__trigger--invalid:focus-within{outline-color:var(--pine-color-focus-ring-danger)}.pds-multiselect__pill-toggle{-ms-flex-align:center;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border-width:0;cursor:pointer;display:-ms-flexbox;display:flex;padding:0}.pds-multiselect__pill-toggle:focus{outline:3px solid transparent}.pds-multiselect__trigger--disabled .pds-multiselect__pill-toggle{cursor:not-allowed;pointer-events:none}.pds-multiselect__panel{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-125);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);-webkit-box-sizing:border-box;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:absolute;z-index:var(--pine-z-index-raised)}.pds-multiselect__search{-ms-flex-align:center;align-items:center;-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-multiselect__search pds-icon{color:var(--pine-color-text-muted);-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none)}.pds-multiselect__search-input{background:transparent;border:var(--pine-dimension-none);color:var(--pine-color-text-strong);-ms-flex:1;flex:1;font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);min-width:var(--pine-dimension-none);outline:none}.pds-multiselect__search-input::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input::placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__selected-section{-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);padding:var(--pine-dimension-xs)}.pds-multiselect__selected-list{list-style:none;margin:var(--pine-dimension-none);padding:var(--pine-dimension-none)}.pds-multiselect__selected-item{color:var(--pine-color-text-strong);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);overflow:hidden;padding:var(--pine-dimension-2xs) var(--pine-dimension-xs);text-overflow:ellipsis;white-space:nowrap}.pds-multiselect__listbox{background:transparent;border:var(--pine-dimension-none);-webkit-box-sizing:border-box;box-sizing:border-box;list-style:none;margin:var(--pine-dimension-none);overflow-y:auto;padding:var(--pine-dimension-xs)}.pds-multiselect__group-header{color:var(--pine-color-text-muted);display:block;font:var(--pine-typography-body-sm-medium);letter-spacing:var(--pine-letter-spacing);padding:var(--pine-dimension-sm) var(--pine-dimension-xs) var(--pine-dimension-2xs);text-transform:uppercase}.pds-multiselect__listbox>li:first-child>.pds-multiselect__group-header{-webkit-padding-before:var(--pine-dimension-xs);padding-block-start:var(--pine-dimension-xs)}.pds-multiselect__group-list{list-style:none;margin:var(--pine-dimension-none);padding:var(--pine-dimension-none)}.pds-multiselect__option{-ms-flex-align:center;align-items:center;background:transparent;border-radius:var(--pine-dimension-xs);cursor:pointer;display:-ms-flexbox;display:flex;padding:var(--pine-dimension-2xs) var(--pine-dimension-xs);-webkit-transition:background 0.15s;transition:background 0.15s}.pds-multiselect__option pds-checkbox{pointer-events:none;width:100%}.pds-multiselect__option:hover:not(.pds-multiselect__option--disabled),.pds-multiselect__option.pds-multiselect__option--highlighted:not(.pds-multiselect__option--disabled){background:var(--pine-color-background-muted)}.pds-multiselect__option.pds-multiselect__option--disabled{cursor:not-allowed;opacity:0.5}.pds-multiselect__option:focus-visible{outline:var(--pine-dimension-none)}.pds-multiselect__create-option{color:var(--pine-color-text-strong);width:100%}.pds-multiselect__create-option pds-icon{color:var(--pine-color-text-muted);-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none)}.pds-multiselect__empty,.pds-multiselect__loading{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-muted);display:-ms-flexbox;display:flex;font:var(--pine-typography-body);-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-sm)}.pds-multiselect__load-more{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-xs)}.pds-multiselect__helper{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs);-webkit-margin-start:var(--pine-dimension-none);margin-inline-start:var(--pine-dimension-none)}.pds-multiselect__error{-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;font:var(--pine-typography-body-sm-medium);gap:var(--pine-dimension-2xs);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs);-webkit-margin-start:var(--pine-dimension-none);margin-inline-start:var(--pine-dimension-none)}.pds-multiselect__error pds-icon{-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none);-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.visually-hidden{border:var(--pine-dimension-none);clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:var(--pine-dimension-none);position:absolute;white-space:nowrap;width:1px}`;
8
+ const pdsMultiselectCss = () => `:host{display:block}:host([aria-disabled=true]) .pds-multiselect__trigger{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}:host([aria-disabled=true]) .pds-multiselect__icon{color:var(--pine-color-text-disabled)}.pds-multiselect{position:relative}.pds-multiselect__label{color:var(--pine-color-text-label);display:block;font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-multiselect__wrapper{position:relative}.pds-multiselect__trigger{-ms-flex-align:center;align-items:center;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-dimension-125);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;letter-spacing:var(--pine-letter-spacing);min-height:var(--pine-dimension-450);padding:var(--pine-dimension-xs) var(--pine-dimension-sm);position:relative;text-align:start;-webkit-transition:border-color var(--pine-motion-duration-base) ease, -webkit-box-shadow var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease, -webkit-box-shadow var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease, box-shadow var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease, box-shadow var(--pine-motion-duration-base) ease, -webkit-box-shadow var(--pine-motion-duration-base) ease;width:100%}.pds-multiselect__trigger:hover:not(.pds-multiselect__trigger--disabled){border-color:var(--pine-color-border-hover)}.pds-multiselect__trigger:focus:not(.pds-multiselect__trigger--disabled){border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-multiselect__trigger.pds-multiselect__trigger--open{border-color:var(--pine-color-border-active)}.pds-multiselect__trigger.pds-multiselect__trigger--invalid{background-color:var(--pine-color-red-050);border-color:var(--pine-color-border-danger)}.pds-multiselect__trigger.pds-multiselect__trigger--invalid:focus{outline-color:var(--pine-color-focus-ring-danger)}.pds-multiselect__trigger.pds-multiselect__trigger--disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-multiselect__trigger-text{color:var(--pine-color-text-strong);-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pds-multiselect__trigger-text.pds-multiselect__trigger-text--placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__trigger--disabled .pds-multiselect__trigger-text{color:var(--pine-color-text-disabled)}.pds-multiselect__icon{color:var(--pine-color-icon);-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none)}.pds-multiselect__pill-list{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-2xs)}.pds-multiselect__pill-list--inline{-ms-flex:1;flex:1;min-width:0}.pds-multiselect__pill-list--below{-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-multiselect__pill-overflow{color:var(--pine-color-text-muted);font:var(--pine-typography-body-sm-medium);white-space:nowrap}.pds-multiselect__trigger--pill-inline{-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-2xs);min-height:var(--pine-dimension-450);padding:var(--pine-dimension-2xs) var(--pine-dimension-sm)}.pds-multiselect__trigger--pill-inline.pds-multiselect__trigger--open{border-color:var(--pine-color-border-active)}.pds-multiselect__trigger--pill-inline:focus-within:not(.pds-multiselect__trigger--disabled){border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-multiselect__trigger--pill-inline.pds-multiselect__trigger--invalid:focus-within{outline-color:var(--pine-color-focus-ring-danger)}.pds-multiselect__pill-toggle{-ms-flex-align:center;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border-width:0;cursor:pointer;display:-ms-flexbox;display:flex;padding:0}.pds-multiselect__pill-toggle:focus{outline:3px solid transparent}.pds-multiselect__trigger--disabled .pds-multiselect__pill-toggle{cursor:not-allowed;pointer-events:none}.pds-multiselect__panel{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-125);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);-webkit-box-sizing:border-box;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:fixed;z-index:var(--pine-z-index-raised)}.pds-multiselect__search{-ms-flex-align:center;align-items:center;-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-multiselect__search pds-icon{color:var(--pine-color-text-muted);-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none)}.pds-multiselect__search-input{background:transparent;border:var(--pine-dimension-none);color:var(--pine-color-text-strong);-ms-flex:1;flex:1;font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);min-width:var(--pine-dimension-none);outline:none}.pds-multiselect__search-input::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__search-input::placeholder{color:var(--pine-color-text-placeholder)}.pds-multiselect__selected-section{-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);padding:var(--pine-dimension-xs)}.pds-multiselect__selected-list{list-style:none;margin:var(--pine-dimension-none);padding:var(--pine-dimension-none)}.pds-multiselect__selected-item{color:var(--pine-color-text-strong);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);overflow:hidden;padding:var(--pine-dimension-2xs) var(--pine-dimension-xs);text-overflow:ellipsis;white-space:nowrap}.pds-multiselect__listbox{background:transparent;border:var(--pine-dimension-none);-webkit-box-sizing:border-box;box-sizing:border-box;list-style:none;margin:var(--pine-dimension-none);overflow-y:auto;padding:var(--pine-dimension-xs)}.pds-multiselect__group-header{color:var(--pine-color-text-muted);display:block;font:var(--pine-typography-body-sm-medium);letter-spacing:var(--pine-letter-spacing);padding:var(--pine-dimension-sm) var(--pine-dimension-xs) var(--pine-dimension-2xs);text-transform:uppercase}.pds-multiselect__listbox>li:first-child>.pds-multiselect__group-header{-webkit-padding-before:var(--pine-dimension-xs);padding-block-start:var(--pine-dimension-xs)}.pds-multiselect__group-list{list-style:none;margin:var(--pine-dimension-none);padding:var(--pine-dimension-none)}.pds-multiselect__option{-ms-flex-align:center;align-items:center;background:transparent;border-radius:var(--pine-dimension-xs);cursor:pointer;display:-ms-flexbox;display:flex;padding:var(--pine-dimension-2xs) var(--pine-dimension-xs);-webkit-transition:background 0.15s;transition:background 0.15s}.pds-multiselect__option pds-checkbox{pointer-events:none;width:100%}.pds-multiselect__option:hover:not(.pds-multiselect__option--disabled),.pds-multiselect__option.pds-multiselect__option--highlighted:not(.pds-multiselect__option--disabled){background:var(--pine-color-background-muted)}.pds-multiselect__option.pds-multiselect__option--disabled{cursor:not-allowed;opacity:0.5}.pds-multiselect__option:focus-visible{outline:var(--pine-dimension-none)}.pds-multiselect__option-action{-ms-flex-align:center;align-items:center;block-size:var(--pine-dimension-md);color:var(--pine-color-icon);cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;inline-size:var(--pine-dimension-md);-ms-flex-pack:center;justify-content:center;-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}.pds-multiselect__create-option{color:var(--pine-color-text-strong);width:100%}.pds-multiselect__create-option pds-icon{color:var(--pine-color-text-muted);-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none)}.pds-multiselect__empty,.pds-multiselect__loading{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-muted);display:-ms-flexbox;display:flex;font:var(--pine-typography-body);-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-sm)}.pds-multiselect__load-more{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-xs)}.pds-multiselect__footer{-webkit-border-before:var(--pine-border);border-block-start:var(--pine-border);border-block-start-color:var(--pine-color-border-subtle);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-multiselect__helper{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs);-webkit-margin-start:var(--pine-dimension-none);margin-inline-start:var(--pine-dimension-none)}.pds-multiselect__error{-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;font:var(--pine-typography-body-sm-medium);gap:var(--pine-dimension-2xs);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs);-webkit-margin-start:var(--pine-dimension-none);margin-inline-start:var(--pine-dimension-none)}.pds-multiselect__error pds-icon{-ms-flex-negative:var(--pine-dimension-none);flex-shrink:var(--pine-dimension-none);-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.visually-hidden{border:var(--pine-dimension-none);clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:var(--pine-dimension-none);position:absolute;white-space:nowrap;width:1px}`;
9
9
 
10
+ // Names only: pds-icon's `icon` prop also fetches URLs and data: SVGs, unsanitized.
11
+ const PINE_ICON_NAME = /^[a-z0-9-]+$/i;
12
+ const TABBABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
10
13
  const PdsMultiselect = class {
11
14
  constructor(hostRef) {
12
15
  registerInstance(this, hostRef);
@@ -15,6 +18,8 @@ const PdsMultiselect = class {
15
18
  this.pdsMultiselectLoadOptions = createEvent(this, "pdsMultiselectLoadOptions");
16
19
  this.pdsMultiselectCreate = createEvent(this, "pdsMultiselectCreate");
17
20
  this.pdsMultiselectDismiss = createEvent(this, "pdsMultiselectDismiss");
21
+ this.pdsMultiselectOptionAction = createEvent(this, "pdsMultiselectOptionAction");
22
+ this.hasDisabledSlottedTrigger = false;
18
23
  /**
19
24
  * Placeholder text for the input field. Pass a translated string to localize it; defaults to English.
20
25
  * @defaultValue 'Select...'
@@ -140,6 +145,13 @@ const PdsMultiselect = class {
140
145
  * @default 3
141
146
  */
142
147
  this.maxInlinePills = 3;
148
+ /**
149
+ * Display mode for options in the dropdown panel.
150
+ * `'text'` shows each option's text (default). `'chip'` shows each option as a
151
+ * pds-chip, with a dot when the option has a `dotColor`.
152
+ * @defaultValue 'text'
153
+ */
154
+ this.optionDisplay = 'text';
143
155
  /**
144
156
  * If true, the multiselect is required.
145
157
  */
@@ -152,6 +164,21 @@ const PdsMultiselect = class {
152
164
  * CSRF header name for authenticated requests. Defaults to `X-CSRF-Token`.
153
165
  */
154
166
  this.csrfHeaderName = 'X-CSRF-Token';
167
+ /**
168
+ * Shows an action icon on each option that has an `actionIcon`, such as an edit pencil.
169
+ * The icon shows on the hovered or highlighted option; clicking it, or pressing Right Arrow on the highlighted option, emits `pdsMultiselectOptionAction`.
170
+ */
171
+ this.optionActions = false;
172
+ /**
173
+ * Tooltip for an option's action icon when the option has no `actionLabel`. Pass a translated string to localize it; `{text}` is interpolated.
174
+ * @defaultValue 'Edit {text}'
175
+ */
176
+ this.optionActionLabel = 'Edit {text}';
177
+ /**
178
+ * Screen-reader hint on each option that has an action, naming the key that runs it. Pass a translated string to localize it; `{action}` is interpolated with the option's action label.
179
+ * @defaultValue 'Press Right Arrow to {action}'
180
+ */
181
+ this.optionActionDescription = 'Press Right Arrow to {action}';
155
182
  // Internal state
156
183
  this.isOpen = false;
157
184
  this.searchQuery = '';
@@ -175,7 +202,7 @@ const PdsMultiselect = class {
175
202
  return;
176
203
  // In inline-pill mode, ignore clicks that originated inside a pds-chip.
177
204
  // Chip close-button clicks are handled by handlePillRemove; chip body clicks should not toggle the panel.
178
- if (e && this.selectedDisplay === 'pill' && this.pillPosition === 'inline') {
205
+ if (e && !this.slottedTriggerEl && this.selectedDisplay === 'pill' && this.pillPosition === 'inline') {
179
206
  const fromChip = e.composedPath().some(el => { var _a; return ((_a = el.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'pds-chip'; });
180
207
  if (fromChip)
181
208
  return;
@@ -188,9 +215,11 @@ const PdsMultiselect = class {
188
215
  }
189
216
  };
190
217
  this.handleTriggerKeyDown = (e) => {
218
+ if (this.disabled)
219
+ return;
191
220
  // Ignore keydown events that bubbled from child elements (e.g. chip close buttons).
192
221
  // Only handle keys when the trigger itself is the event target.
193
- if (e.target !== this.triggerEl)
222
+ if (e.target !== this.activeTriggerEl)
194
223
  return;
195
224
  switch (e.key) {
196
225
  case 'ArrowDown':
@@ -254,10 +283,43 @@ const PdsMultiselect = class {
254
283
  }
255
284
  }
256
285
  break;
286
+ // Right Arrow still moves the caret through typed text; a plain Right Arrow at the end runs the action.
287
+ case 'ArrowRight': {
288
+ const option = filteredOptions[this.highlightedIndex];
289
+ const isPlainKey = !e.altKey && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.isComposing;
290
+ if (isPlainKey && option && this.hasOptionAction(option) && this.isCaretAtEndOfSearch()) {
291
+ e.preventDefault();
292
+ this.runOptionAction(option);
293
+ }
294
+ break;
295
+ }
257
296
  // Escape is handled by the global @Listen('keydown') handler
258
- case 'Tab':
259
- this.closeDropdown();
297
+ case 'Tab': {
298
+ const firstFooterTabbable = e.shiftKey ? undefined : this.getFooterTabbables()[0];
299
+ firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.focus();
300
+ if (firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.matches(':focus')) {
301
+ // Each option's checkbox is a tab stop, so jump past them to the footer.
302
+ e.preventDefault();
303
+ }
304
+ else {
305
+ this.closeDropdown();
306
+ }
260
307
  break;
308
+ }
309
+ }
310
+ };
311
+ this.handleFooterKeyDown = (e) => {
312
+ var _a;
313
+ if (e.key !== 'Tab')
314
+ return;
315
+ const tabbables = this.getFooterTabbables();
316
+ const focused = e.composedPath()[0];
317
+ if (e.shiftKey && focused === tabbables[0]) {
318
+ e.preventDefault();
319
+ (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
320
+ }
321
+ else if (!e.shiftKey && focused === tabbables[tabbables.length - 1]) {
322
+ this.closeDropdown();
261
323
  }
262
324
  };
263
325
  this.handleContainerFocusOut = () => {
@@ -272,9 +334,9 @@ const PdsMultiselect = class {
272
334
  const activeElement = document.activeElement;
273
335
  // Check if focus is within our component's shadow root
274
336
  const isInShadowRoot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.contains(activeElement);
275
- // Also check if focus is on the host element itself
276
- const isOnHost = activeElement === this.el;
277
- if (!isInShadowRoot && !isOnHost) {
337
+ // Also check the host itself and its light DOM, where slotted trigger and footer content live
338
+ const isInHost = this.el.contains(activeElement);
339
+ if (!isInShadowRoot && !isInHost) {
278
340
  this.pdsMultiselectDismiss.emit();
279
341
  this.closeDropdown();
280
342
  }
@@ -289,6 +351,18 @@ const PdsMultiselect = class {
289
351
  return;
290
352
  this.highlightedIndex = index;
291
353
  };
354
+ this.handleOptionActionMouseDown = (e) => {
355
+ // Stops the row's mousedown from toggling the option, and keeps focus in the search input.
356
+ e.preventDefault();
357
+ e.stopPropagation();
358
+ };
359
+ this.handleOptionActionClick = (option) => () => {
360
+ this.runOptionAction(option);
361
+ };
362
+ // Keeps focus in the search input so the panel stays open until the footer's click lands.
363
+ this.handleFooterMouseDown = (e) => {
364
+ e.preventDefault();
365
+ };
292
366
  this.handleScroll = (e) => {
293
367
  if (!this.asyncUrl || !this.hasMore || this.loading)
294
368
  return;
@@ -310,7 +384,7 @@ const PdsMultiselect = class {
310
384
  const optionId = String(item.id);
311
385
  this.value = this.value.filter(v => v !== optionId);
312
386
  this.syncSelectedItems();
313
- this.pdsMultiselectChange.emit({ values: this.value, items: this.selectedItems });
387
+ this.emitChange({ removed: [optionId] });
314
388
  // Clear first so screen readers re-announce even when the same item is removed twice
315
389
  this.removalAnnouncement = '';
316
390
  queueMicrotask(() => { this.removalAnnouncement = formatMessage(this.itemRemovedLabel, { item: item.text }); });
@@ -319,7 +393,7 @@ const PdsMultiselect = class {
319
393
  (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
320
394
  }
321
395
  else {
322
- (_b = this.triggerEl) === null || _b === void 0 ? void 0 : _b.focus();
396
+ (_b = this.activeTriggerEl) === null || _b === void 0 ? void 0 : _b.focus();
323
397
  }
324
398
  setTimeout(() => { this.isClosingViaSelection = false; }, 0);
325
399
  };
@@ -333,6 +407,7 @@ const PdsMultiselect = class {
333
407
  componentWillLoad() {
334
408
  this.originalSearchEmitter = this.pdsMultiselectSearch;
335
409
  this.syncSelectedItems();
410
+ this.syncSlottedTrigger();
336
411
  }
337
412
  componentDidLoad() {
338
413
  this.setupDebounce();
@@ -366,6 +441,7 @@ const PdsMultiselect = class {
366
441
  }
367
442
  disconnectedCallback() {
368
443
  var _a, _b;
444
+ cancelDebouncedEvent(this.pdsMultiselectSearch);
369
445
  (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
370
446
  (_b = this.cleanupAutoUpdate) === null || _b === void 0 ? void 0 : _b.call(this);
371
447
  this.clearAsyncFetchState();
@@ -375,6 +451,8 @@ const PdsMultiselect = class {
375
451
  this.pdsMultiselectSearch = debounce === undefined
376
452
  ? originalSearchEmitter !== null && originalSearchEmitter !== void 0 ? originalSearchEmitter : pdsMultiselectSearch
377
453
  : debounceEvent(pdsMultiselectSearch, debounce);
454
+ // After the swap, so an emit made while flushing goes to the new emitter, not the old one.
455
+ flushDebouncedEvent(pdsMultiselectSearch);
378
456
  }
379
457
  valueChanged(newValue) {
380
458
  // Handle JSON string values (from HTML attributes)
@@ -420,26 +498,42 @@ const PdsMultiselect = class {
420
498
  // This handles the case where value is set before options are loaded (e.g., from slot)
421
499
  this.syncSelectedItems();
422
500
  }
501
+ isOpenChanged() {
502
+ var _a;
503
+ (_a = this.slottedTriggerEl) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', String(this.isOpen));
504
+ }
505
+ disabledChanged() {
506
+ this.syncSlottedTrigger();
507
+ }
423
508
  /**
424
509
  * Sets focus on the trigger button.
425
510
  */
426
511
  async setFocus() {
427
512
  var _a;
428
- (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.focus();
513
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
429
514
  }
430
515
  /**
431
516
  * Clears all selected values and resets the component.
432
517
  */
433
518
  async clear() {
434
519
  const hadValues = this.value.length > 0 || this.searchQuery !== '';
520
+ const removed = this.ensureValueArray();
435
521
  this.value = [];
436
522
  this.searchQuery = '';
437
523
  this.syncSelectedItems();
438
524
  this.updateFormValue();
439
525
  if (hadValues) {
440
- this.pdsMultiselectChange.emit({ values: [], items: [] });
526
+ this.emitChange({ removed });
441
527
  }
442
528
  }
529
+ /**
530
+ * Refetches the first page of options from `asyncUrl` for the current search, such as after an option is renamed
531
+ * or recolored elsewhere. Selected items in that page pick up the new text and dot color without emitting a change;
532
+ * other selected items keep the text and dot color they were last loaded with. Does nothing without `asyncUrl`.
533
+ */
534
+ async refreshOptions() {
535
+ await this.fetchOptions(this.searchQuery, 1);
536
+ }
443
537
  /**
444
538
  * Handle global keyboard events for accessibility.
445
539
  * Closes dropdown on Escape key press regardless of focus location.
@@ -452,12 +546,70 @@ const PdsMultiselect = class {
452
546
  event.preventDefault();
453
547
  this.pdsMultiselectDismiss.emit();
454
548
  this.closeDropdown();
455
- (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.focus();
549
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
550
+ }
551
+ }
552
+ get activeTriggerEl() {
553
+ var _a;
554
+ return (_a = this.slottedTriggerEl) !== null && _a !== void 0 ? _a : this.triggerEl;
555
+ }
556
+ syncSlottedTrigger() {
557
+ const trigger = Array.from(this.el.children).find(child => child.getAttribute('slot') === 'trigger');
558
+ if (trigger !== this.slottedTriggerEl) {
559
+ const previous = this.slottedTriggerEl;
560
+ if (previous) {
561
+ previous.removeEventListener('click', this.handleTriggerClick);
562
+ previous.removeEventListener('keydown', this.handleTriggerKeyDown);
563
+ previous.removeAttribute('aria-expanded');
564
+ previous.removeAttribute('aria-haspopup');
565
+ previous.removeAttribute('aria-disabled');
566
+ this.setSlottedTriggerDisabled(previous, false);
567
+ }
568
+ trigger === null || trigger === void 0 ? void 0 : trigger.addEventListener('click', this.handleTriggerClick);
569
+ trigger === null || trigger === void 0 ? void 0 : trigger.addEventListener('keydown', this.handleTriggerKeyDown);
570
+ this.slottedTriggerEl = trigger;
571
+ }
572
+ if (!trigger)
573
+ return;
574
+ trigger.setAttribute('aria-haspopup', 'listbox');
575
+ trigger.setAttribute('aria-expanded', String(this.isOpen));
576
+ if (this.disabled) {
577
+ trigger.setAttribute('aria-disabled', 'true');
578
+ }
579
+ else {
580
+ trigger.removeAttribute('aria-disabled');
581
+ }
582
+ this.setSlottedTriggerDisabled(trigger, this.disabled);
583
+ }
584
+ setSlottedTriggerDisabled(trigger, disabled) {
585
+ if (!('disabled' in trigger)) {
586
+ // A custom element gets its `disabled` property once it's defined, which can be after the multiselect loads.
587
+ if (disabled && trigger.localName.includes('-') && customElements.get(trigger.localName) === undefined) {
588
+ customElements.whenDefined(trigger.localName).then(() => this.syncSlottedTrigger());
589
+ }
590
+ return;
591
+ }
592
+ const control = trigger;
593
+ // Only re-enable a trigger the multiselect disabled, so one the consumer disabled stays disabled.
594
+ if (disabled && !control.disabled) {
595
+ control.disabled = true;
596
+ this.hasDisabledSlottedTrigger = true;
597
+ }
598
+ else if (!disabled && this.hasDisabledSlottedTrigger) {
599
+ control.disabled = false;
600
+ this.hasDisabledSlottedTrigger = false;
456
601
  }
457
602
  }
458
603
  setupMutationObserver() {
459
- this.observer = new MutationObserver(() => {
460
- this.updateOptionsFromSlot();
604
+ this.observer = new MutationObserver(records => {
605
+ if (records.some(record => record.target === this.el)) {
606
+ this.syncSlottedTrigger();
607
+ }
608
+ // Changes inside the slotted trigger, like re-rendered chips, can't change the options.
609
+ const trigger = this.slottedTriggerEl;
610
+ if (!trigger || records.some(record => !trigger.contains(record.target))) {
611
+ this.updateOptionsFromSlot();
612
+ }
461
613
  });
462
614
  this.observer.observe(this.el, {
463
615
  childList: true,
@@ -471,18 +623,12 @@ const PdsMultiselect = class {
471
623
  return;
472
624
  const options = [];
473
625
  slot.assignedElements({ flatten: true }).forEach(el => {
474
- var _a;
475
626
  if (el.tagName === 'OPTGROUP') {
476
627
  const optgroup = el;
477
628
  const groupLabel = optgroup.label;
478
629
  const groupDisabled = optgroup.disabled;
479
630
  optgroup.querySelectorAll('option').forEach((opt) => {
480
- var _a;
481
- const option = {
482
- id: opt.value,
483
- text: ((_a = opt.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || opt.value,
484
- disabled: opt.disabled || groupDisabled || undefined,
485
- };
631
+ const option = this.parseSlottedOption(opt, groupDisabled);
486
632
  if (groupLabel) {
487
633
  option.group = groupLabel;
488
634
  }
@@ -490,12 +636,7 @@ const PdsMultiselect = class {
490
636
  });
491
637
  }
492
638
  else if (el.tagName === 'OPTION') {
493
- const opt = el;
494
- options.push({
495
- id: opt.value,
496
- text: ((_a = opt.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || opt.value,
497
- disabled: opt.disabled || undefined,
498
- });
639
+ options.push(this.parseSlottedOption(el, false));
499
640
  }
500
641
  });
501
642
  // Only update if we actually found options AND we're not using async/external options
@@ -504,6 +645,27 @@ const PdsMultiselect = class {
504
645
  this.internalOptions = options;
505
646
  }
506
647
  }
648
+ parseSlottedOption(opt, groupDisabled) {
649
+ var _a;
650
+ const option = {
651
+ id: opt.value,
652
+ text: ((_a = opt.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || opt.value,
653
+ disabled: opt.disabled || groupDisabled || undefined,
654
+ };
655
+ const dotColor = opt.getAttribute('data-dot-color');
656
+ if (dotColor) {
657
+ option.dotColor = dotColor;
658
+ }
659
+ const actionIcon = opt.getAttribute('data-action-icon');
660
+ if (actionIcon) {
661
+ option.actionIcon = actionIcon;
662
+ }
663
+ const actionLabel = opt.getAttribute('data-action-label');
664
+ if (actionLabel) {
665
+ option.actionLabel = actionLabel;
666
+ }
667
+ return option;
668
+ }
507
669
  clearAsyncFetchState() {
508
670
  var _a;
509
671
  if (this.fetchDebounceTimer !== undefined) {
@@ -613,7 +775,7 @@ const PdsMultiselect = class {
613
775
  this.internals.setFormValue(formData);
614
776
  // Update validity state for required validation
615
777
  if (this.required && valueArray.length === 0) {
616
- this.internals.setValidity({ valueMissing: true }, 'Please select at least one option.', this.triggerEl);
778
+ this.internals.setValidity({ valueMissing: true }, 'Please select at least one option.', this.activeTriggerEl);
617
779
  }
618
780
  else {
619
781
  this.internals.setValidity({});
@@ -766,10 +928,7 @@ const PdsMultiselect = class {
766
928
  newOption,
767
929
  });
768
930
  // Emit change event with synced items
769
- this.pdsMultiselectChange.emit({
770
- values: this.value,
771
- items: this.selectedItems,
772
- });
931
+ this.emitChange({ added: [String(newOption.id)] });
773
932
  // Clear search and keep dropdown open
774
933
  this.searchQuery = '';
775
934
  this.highlightedIndex = -1;
@@ -786,6 +945,44 @@ const PdsMultiselect = class {
786
945
  this.creating = false;
787
946
  }
788
947
  }
948
+ getFooterTabbables() {
949
+ const candidates = [];
950
+ Array.from(this.el.children)
951
+ .filter(child => child.getAttribute('slot') === 'footer')
952
+ .forEach(content => candidates.push(content, ...Array.from(content.querySelectorAll('*'))));
953
+ // Browsers without checkVisibility (Safari before 17.4) count every control as visible.
954
+ return candidates
955
+ .map(el => { var _a; return (el.matches(TABBABLE_SELECTOR) ? el : (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(TABBABLE_SELECTOR)); })
956
+ .filter((el) => { var _a, _b; return !!el && ((_b = (_a = el.checkVisibility) === null || _a === void 0 ? void 0 : _a.call(el)) !== null && _b !== void 0 ? _b : true); });
957
+ }
958
+ isCaretAtEndOfSearch() {
959
+ var _a, _b;
960
+ const input = this.searchInputEl;
961
+ if (!input)
962
+ return true;
963
+ const end = input.value.length;
964
+ return ((_a = input.selectionStart) !== null && _a !== void 0 ? _a : end) === end && ((_b = input.selectionEnd) !== null && _b !== void 0 ? _b : end) === end;
965
+ }
966
+ hasOptionAction(option) {
967
+ return (this.optionActions &&
968
+ typeof option.actionIcon === 'string' &&
969
+ PINE_ICON_NAME.test(option.actionIcon) &&
970
+ !option.isCreateOption &&
971
+ !option.disabled);
972
+ }
973
+ // Without hover, revealing the icon would take a tap that also toggles the option, so touch shows every icon.
974
+ get isHoverless() {
975
+ var _a, _b, _c;
976
+ (_a = this.hoverlessQuery) !== null && _a !== void 0 ? _a : (this.hoverlessQuery = (_b = window.matchMedia) === null || _b === void 0 ? void 0 : _b.call(window, '(hover: none)'));
977
+ return !!((_c = this.hoverlessQuery) === null || _c === void 0 ? void 0 : _c.matches);
978
+ }
979
+ runOptionAction(option) {
980
+ var _a;
981
+ this.isClosingViaSelection = true;
982
+ this.closeDropdown();
983
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
984
+ this.pdsMultiselectOptionAction.emit({ option });
985
+ }
789
986
  openDropdown() {
790
987
  if (this.disabled)
791
988
  return;
@@ -830,12 +1027,12 @@ const PdsMultiselect = class {
830
1027
  return;
831
1028
  // In inline pill mode, triggerEl is the small chevron button — use the full-width
832
1029
  // wrapper div as the Floating UI reference so the panel aligns with the whole trigger.
833
- const referenceEl = this.pillInlineTriggerEl || this.triggerEl || this.containerEl;
1030
+ const referenceEl = this.slottedTriggerEl || this.pillInlineTriggerEl || this.triggerEl || this.containerEl;
834
1031
  const { minWidth, panelWidth } = this;
835
1032
  const updatePosition = () => {
836
1033
  computePosition(referenceEl, this.panelEl, {
837
1034
  placement: 'bottom-start',
838
- strategy: 'absolute',
1035
+ strategy: 'fixed',
839
1036
  middleware: [
840
1037
  offset(12),
841
1038
  flip(),
@@ -872,6 +1069,9 @@ const PdsMultiselect = class {
872
1069
  highlighted === null || highlighted === void 0 ? void 0 : highlighted.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
873
1070
  });
874
1071
  }
1072
+ emitChange({ added = [], removed = [] }) {
1073
+ this.pdsMultiselectChange.emit({ values: this.value, items: this.selectedItems, added, removed });
1074
+ }
875
1075
  toggleOption(option) {
876
1076
  var _a, _b;
877
1077
  if (option.disabled)
@@ -900,14 +1100,11 @@ const PdsMultiselect = class {
900
1100
  // Sync selected items to ensure no duplicates and accurate state
901
1101
  this.syncSelectedItems();
902
1102
  // Emit change event with synced items
903
- this.pdsMultiselectChange.emit({
904
- values: this.value,
905
- items: this.selectedItems,
906
- });
1103
+ this.emitChange(isSelected ? { removed: [optionId] } : { added: [optionId] });
907
1104
  if (this.closePanelOnSelect) {
908
1105
  this.isClosingViaSelection = true;
909
1106
  this.closeDropdown();
910
- (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.focus();
1107
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
911
1108
  }
912
1109
  else {
913
1110
  // Keep focus on search input, don't close dropdown
@@ -944,13 +1141,22 @@ const PdsMultiselect = class {
944
1141
  const isHighlighted = index === this.highlightedIndex && !isCreateOption;
945
1142
  const optionId = `${this.componentId}-option-${index}`;
946
1143
  const isCreateDisabled = isCreateOption && this.creating;
1144
+ const hasAction = this.hasOptionAction(option);
947
1145
  return (h("li", { key: String(option.id), id: optionId, class: {
948
1146
  'pds-multiselect__option': true,
949
1147
  'pds-multiselect__option--highlighted': isHighlighted,
950
1148
  'pds-multiselect__option--selected': isSelected,
951
1149
  'pds-multiselect__option--create': isCreateOption,
952
1150
  'pds-multiselect__option--disabled': isDisabled || isCreateDisabled,
953
- }, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": isDisabled || isCreateDisabled ? 'true' : undefined, "aria-label": isCreateOption ? formatMessage(this.createOptionAriaLabel, { text: option.text }) : undefined, "data-index": index, onMouseDown: this.handleOptionMouseDown(option), onMouseEnter: this.handleOptionMouseEnter(index, option) }, isCreateOption ? (h("pds-box", { class: "pds-multiselect__create-option", "align-items": "center", gap: "xs" }, h("pds-icon", { name: "add", size: "small" }), h("pds-text", null, formatMessage(this.createOptionLabel, { text: option.text })))) : (h("pds-checkbox", { componentId: `${this.componentId}-checkbox-${index}`, checked: isSelected, label: option.text, disabled: isDisabled, style: { pointerEvents: 'none' } }))));
1151
+ }, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": isDisabled || isCreateDisabled ? 'true' : undefined, "aria-label": isCreateOption ? formatMessage(this.createOptionAriaLabel, { text: option.text }) : undefined, "aria-describedby": hasAction ? `${optionId}-action-description` : undefined, "data-index": index, onMouseDown: this.handleOptionMouseDown(option), onMouseEnter: this.handleOptionMouseEnter(index, option) }, isCreateOption ? (h("pds-box", { class: "pds-multiselect__create-option", "align-items": "center", gap: "xs" }, h("pds-icon", { name: "add", size: "small" }), h("pds-text", null, formatMessage(this.createOptionLabel, { text: option.text })))) : (h("pds-checkbox", { componentId: `${this.componentId}-checkbox-${index}`, checked: isSelected, label: option.text, disabled: isDisabled, style: { pointerEvents: 'none' } }, this.optionDisplay === 'chip' && (h("pds-chip", { slot: "label", sentiment: "subtle", dot: !!option.dotColor, "dot-color": option.dotColor }, option.text)))), hasAction && this.renderOptionAction(option, optionId, isHighlighted)));
1152
+ }
1153
+ renderOptionAction(option, optionId, isHighlighted) {
1154
+ var _a;
1155
+ const label = formatMessage((_a = option.actionLabel) !== null && _a !== void 0 ? _a : this.optionActionLabel, { text: option.text });
1156
+ return [
1157
+ h("span", { class: "pds-multiselect__option-action", title: label, "aria-hidden": "true", onMouseDown: this.handleOptionActionMouseDown, onClick: this.handleOptionActionClick(option) }, (isHighlighted || this.isHoverless) && h("pds-icon", { name: option.actionIcon })),
1158
+ h("span", { id: `${optionId}-action-description`, hidden: true }, formatMessage(this.optionActionDescription, { action: label })),
1159
+ ];
954
1160
  }
955
1161
  renderSelectedItemsList() {
956
1162
  if (this.hideSelectedItems || this.selectedItems.length === 0)
@@ -964,12 +1170,13 @@ const PdsMultiselect = class {
964
1170
  const valueArray = this.ensureValueArray();
965
1171
  const hasSlottedEmpty = !!this.el.querySelector('[slot="empty"]');
966
1172
  const hasSlottedLoading = !!this.el.querySelector('[slot="loading"]');
1173
+ const hasSlottedFooter = !!this.el.querySelector('[slot="footer"]');
967
1174
  return (h("div", { class: "pds-multiselect__panel", ref: el => (this.panelEl = el), style: { minWidth: this.minWidth } }, h("div", { class: "pds-multiselect__search" }, h("pds-icon", { name: "search", size: "small" }), h("input", { ref: el => (this.searchInputEl = el), type: "text", class: "pds-multiselect__search-input", placeholder: this.searchPlaceholder, value: this.searchQuery, "aria-label": this.searchOptionsLabel, "aria-controls": `${this.componentId}-listbox`, "aria-activedescendant": this.highlightedIndex >= 0 ? `${this.componentId}-option-${this.highlightedIndex}` : undefined, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": "true", "aria-autocomplete": "list", autocomplete: "off", onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchInputKeyDown })), this.renderSelectedItemsList(), h("ul", { class: "pds-multiselect__listbox", role: "listbox", "aria-multiselectable": "true", "aria-label": this.label || this.optionsLabel, id: `${this.componentId}-listbox`, ref: el => (this.listboxEl = el), style: { maxHeight: this.maxHeight }, onScroll: this.handleScroll }, this.loading && (h("li", { class: "pds-multiselect__loading", role: "presentation" }, hasSlottedLoading ? (h("slot", { name: "loading" })) : (h("pds-loader", { size: "small" })))), !this.loading && filteredOptions.length === 0 && (h("li", { class: "pds-multiselect__empty", role: "presentation" }, hasSlottedEmpty ? (h("slot", { name: "empty" })) : (h("span", null, this.noOptionsFoundLabel)))), this.getGroupedRenderItems(filteredOptions).map((item, itemIndex) => {
968
1175
  if (item.type === 'group') {
969
1176
  return (h("li", { key: `group-${itemIndex}`, role: "group", "aria-label": item.group, class: "pds-multiselect__group" }, h("span", { class: "pds-multiselect__group-header", "aria-hidden": "true" }, item.group), h("ul", { class: "pds-multiselect__group-list", role: "presentation" }, item.options.map(({ option, index }) => this.renderOption(option, index, valueArray)))));
970
1177
  }
971
1178
  return this.renderOption(item.option, item.index, valueArray);
972
- }), this.hasMore && !this.loading && (h("li", { class: "pds-multiselect__load-more", role: "presentation" }, h("pds-loader", { size: "small" }))))));
1179
+ }), this.hasMore && !this.loading && (h("li", { class: "pds-multiselect__load-more", role: "presentation" }, h("pds-loader", { size: "small" })))), hasSlottedFooter && (h("div", { class: "pds-multiselect__footer", onMouseDown: this.handleFooterMouseDown, onKeyDown: this.handleFooterKeyDown }, h("slot", { name: "footer" })))));
973
1180
  }
974
1181
  renderInlinePills() {
975
1182
  const hasSelections = this.selectedItems.length > 0;
@@ -1023,17 +1230,17 @@ const PdsMultiselect = class {
1023
1230
  }
1024
1231
  render() {
1025
1232
  const hasSelections = this.selectedItems.length > 0;
1026
- return (h(Host, { key: '5d4de9ca729d5bfb63a8a73f8f40328b9ab48f57', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '2b5e1e01caaa4a6540a67e2638a20072e9f706cb', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: 'f23b840feb4e243d90b3a9913dab1b238e7c497d', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1233
+ return (h(Host, { key: '295354c218d03a512ee87a9f19d2267a59731eb1', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '8696c02fad869239fa85dcec7f92a3efb402c963', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: '2a9cc565c5dbcf78305eb65e94d795669fb0f93b', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1027
1234
  'pds-multiselect__label': true,
1028
1235
  'visually-hidden': this.hideLabel,
1029
- } }, this.label)), h("div", { key: '2e1f89d6f06332e957858c0eea34fca1a9629921', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1236
+ } }, this.label)), h("div", { key: '9358ebffb50e74fe4ceb9ca1c13cf819cc3e96e6', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (h("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1030
1237
  'pds-multiselect__trigger': true,
1031
1238
  'pds-multiselect__trigger--open': this.isOpen,
1032
1239
  'pds-multiselect__trigger--disabled': this.disabled,
1033
1240
  'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
1034
1241
  'pds-multiselect__trigger--has-value': hasSelections,
1035
1242
  'pds-multiselect__trigger--pill-inline': true,
1036
- }, onClick: this.handleTriggerClick }, this.renderInlinePills(), h("button", { ref: el => (this.triggerEl = el), type: "button", id: this.componentId, part: "pill-toggle", class: "pds-multiselect__pill-toggle", disabled: this.disabled, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-labelledby": this.label ? `${this.componentId}-label` : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onKeyDown: this.handleTriggerKeyDown }, h("pds-icon", { class: "pds-multiselect__icon", icon: enlarge })))) : (h("button", { ref: el => (this.triggerEl = el), type: "button", part: "trigger", class: {
1243
+ }, onClick: this.handleTriggerClick }, this.renderInlinePills(), h("button", { ref: el => (this.triggerEl = el), type: "button", id: this.componentId, part: "pill-toggle", class: "pds-multiselect__pill-toggle", disabled: this.disabled, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-labelledby": this.label ? `${this.componentId}-label` : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onKeyDown: this.handleTriggerKeyDown }, h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge })))) : (h("button", { ref: el => (this.triggerEl = el), type: "button", part: "trigger", class: {
1037
1244
  'pds-multiselect__trigger': true,
1038
1245
  'pds-multiselect__trigger--open': this.isOpen,
1039
1246
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -1042,7 +1249,7 @@ const PdsMultiselect = class {
1042
1249
  }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, h("span", { class: {
1043
1250
  'pds-multiselect__trigger-text': true,
1044
1251
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
1045
- } }, this.getTriggerText()), h("pds-icon", { class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: '3d2e201157ce16abbcd12fa9254ced7f2b562a8f', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: '3bbf405df2e72ae730529f28273b003b3332e980', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: 'ef4a27162b00b14c3c9dfcb695f311961f2f56e5', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '99fb12375e2d660018276091bf8014b9bc9a672e', icon: danger, size: "small" }), this.errorMessage)), h("div", { key: '8fc6369015e8d04d1dec582007733eb5db6776f5', style: { display: 'none' } }, h("slot", { key: 'a808ecb0f4b2c00fca478cda5c0054c6aba29a8d' })))));
1252
+ } }, this.getTriggerText()), h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: '722da251199792366dc72b6c7f016e24ae807b30', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: '7b4da9b2e04f53f3e8f245c119135f3b664897ec', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: '95a152f6a350eee2f67dbab2930f19e583ca3b85', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '7b9cded907054757a6f054d0d325811a2199e496', icon: danger, size: "small" }), this.errorMessage)), h("div", { key: '8b07974c8e2d838d76c17c3a52ba4282fb101968', style: { display: 'none' } }, h("slot", { key: '0a34d582bc4dd780072f00ac13bfdce7e297191e' })))));
1046
1253
  }
1047
1254
  static get formAssociated() { return true; }
1048
1255
  get el() { return getElement(this); }
@@ -1058,6 +1265,12 @@ const PdsMultiselect = class {
1058
1265
  }],
1059
1266
  "internalOptions": [{
1060
1267
  "internalOptionsChanged": 0
1268
+ }],
1269
+ "isOpen": [{
1270
+ "isOpenChanged": 0
1271
+ }],
1272
+ "disabled": [{
1273
+ "disabledChanged": 0
1061
1274
  }]
1062
1275
  }; }
1063
1276
  };