@pine-ds/core 3.25.0 → 3.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/components/pds-combobox.js +273 -55
  2. package/components/pds-combobox.js.map +1 -1
  3. package/dist/cjs/{index-Cc_o_7az.js → index-Dlc5O3n_.js} +3 -3
  4. package/dist/cjs/index-Dlc5O3n_.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  7. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  8. package/dist/cjs/pds-alert.cjs.entry.js +1 -1
  9. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/pds-box.cjs.entry.js +1 -1
  11. package/dist/cjs/pds-button.cjs.entry.js +1 -1
  12. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  13. package/dist/cjs/pds-chip.cjs.entry.js +1 -1
  14. package/dist/cjs/pds-combobox.cjs.entry.js +271 -55
  15. package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
  16. package/dist/cjs/pds-container.cjs.entry.js +1 -1
  17. package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
  18. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  19. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
  20. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +1 -1
  21. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  22. package/dist/cjs/pds-filter.cjs.entry.js +1 -1
  23. package/dist/cjs/pds-filters.cjs.entry.js +1 -1
  24. package/dist/cjs/pds-icon.cjs.entry.js +1 -1
  25. package/dist/cjs/pds-image.cjs.entry.js +1 -1
  26. package/dist/cjs/pds-input.cjs.entry.js +1 -1
  27. package/dist/cjs/pds-link.cjs.entry.js +1 -1
  28. package/dist/cjs/pds-loader.cjs.entry.js +1 -1
  29. package/dist/cjs/pds-modal-content.cjs.entry.js +1 -1
  30. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  31. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  32. package/dist/cjs/pds-modal.cjs.entry.js +1 -1
  33. package/dist/cjs/pds-multiselect.cjs.entry.js +1 -1
  34. package/dist/cjs/pds-popover.cjs.entry.js +1 -1
  35. package/dist/cjs/pds-progress.cjs.entry.js +1 -1
  36. package/dist/cjs/pds-property.cjs.entry.js +1 -1
  37. package/dist/cjs/pds-radio-group.cjs.entry.js +1 -1
  38. package/dist/cjs/pds-radio.cjs.entry.js +1 -1
  39. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  40. package/dist/cjs/pds-select.cjs.entry.js +1 -1
  41. package/dist/cjs/pds-sortable-item.cjs.entry.js +1 -1
  42. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  43. package/dist/cjs/pds-switch.cjs.entry.js +1 -1
  44. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  45. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  46. package/dist/cjs/pds-table-cell.cjs.entry.js +1 -1
  47. package/dist/cjs/pds-table-head-cell.cjs.entry.js +1 -1
  48. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  49. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  50. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  51. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  52. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  53. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  54. package/dist/cjs/pds-textarea.cjs.entry.js +1 -1
  55. package/dist/cjs/pds-toast.cjs.entry.js +1 -1
  56. package/dist/cjs/pds-tooltip.cjs.entry.js +1 -1
  57. package/dist/cjs/pine-core.cjs.js +2 -2
  58. package/dist/collection/components/pds-combobox/pds-combobox.css +24 -22
  59. package/dist/collection/components/pds-combobox/pds-combobox.js +297 -57
  60. package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
  61. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +58 -0
  62. package/dist/docs.json +36 -2
  63. package/dist/esm/{index-C_yp7uLt.js → index-CO9kz-Pi.js} +3 -3
  64. package/dist/esm/index-CO9kz-Pi.js.map +1 -0
  65. package/dist/esm/loader.js +3 -3
  66. package/dist/esm/mock-pds-modal.entry.js +1 -1
  67. package/dist/esm/pds-accordion.entry.js +1 -1
  68. package/dist/esm/pds-alert.entry.js +1 -1
  69. package/dist/esm/pds-avatar.entry.js +1 -1
  70. package/dist/esm/pds-box.entry.js +1 -1
  71. package/dist/esm/pds-button.entry.js +1 -1
  72. package/dist/esm/pds-checkbox.entry.js +1 -1
  73. package/dist/esm/pds-chip.entry.js +1 -1
  74. package/dist/esm/pds-combobox.entry.js +272 -56
  75. package/dist/esm/pds-combobox.entry.js.map +1 -1
  76. package/dist/esm/pds-container.entry.js +1 -1
  77. package/dist/esm/pds-copytext.entry.js +1 -1
  78. package/dist/esm/pds-divider.entry.js +1 -1
  79. package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
  80. package/dist/esm/pds-dropdown-menu-separator.entry.js +1 -1
  81. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  82. package/dist/esm/pds-filter.entry.js +1 -1
  83. package/dist/esm/pds-filters.entry.js +1 -1
  84. package/dist/esm/pds-icon.entry.js +1 -1
  85. package/dist/esm/pds-image.entry.js +1 -1
  86. package/dist/esm/pds-input.entry.js +1 -1
  87. package/dist/esm/pds-link.entry.js +1 -1
  88. package/dist/esm/pds-loader.entry.js +1 -1
  89. package/dist/esm/pds-modal-content.entry.js +1 -1
  90. package/dist/esm/pds-modal-footer.entry.js +1 -1
  91. package/dist/esm/pds-modal-header.entry.js +1 -1
  92. package/dist/esm/pds-modal.entry.js +1 -1
  93. package/dist/esm/pds-multiselect.entry.js +1 -1
  94. package/dist/esm/pds-popover.entry.js +1 -1
  95. package/dist/esm/pds-progress.entry.js +1 -1
  96. package/dist/esm/pds-property.entry.js +1 -1
  97. package/dist/esm/pds-radio-group.entry.js +1 -1
  98. package/dist/esm/pds-radio.entry.js +1 -1
  99. package/dist/esm/pds-row.entry.js +1 -1
  100. package/dist/esm/pds-select.entry.js +1 -1
  101. package/dist/esm/pds-sortable-item.entry.js +1 -1
  102. package/dist/esm/pds-sortable.entry.js +1 -1
  103. package/dist/esm/pds-switch.entry.js +1 -1
  104. package/dist/esm/pds-tab.entry.js +1 -1
  105. package/dist/esm/pds-table-body.entry.js +1 -1
  106. package/dist/esm/pds-table-cell.entry.js +1 -1
  107. package/dist/esm/pds-table-head-cell.entry.js +1 -1
  108. package/dist/esm/pds-table-head.entry.js +1 -1
  109. package/dist/esm/pds-table-row.entry.js +1 -1
  110. package/dist/esm/pds-table.entry.js +1 -1
  111. package/dist/esm/pds-tabpanel.entry.js +1 -1
  112. package/dist/esm/pds-tabs.entry.js +1 -1
  113. package/dist/esm/pds-text.entry.js +1 -1
  114. package/dist/esm/pds-textarea.entry.js +1 -1
  115. package/dist/esm/pds-toast.entry.js +1 -1
  116. package/dist/esm/pds-tooltip.entry.js +1 -1
  117. package/dist/esm/pine-core.js +3 -3
  118. package/dist/esm-es5/{index-C_yp7uLt.js → index-CO9kz-Pi.js} +3 -3
  119. package/dist/esm-es5/index-CO9kz-Pi.js.map +1 -0
  120. package/dist/esm-es5/loader.js +1 -1
  121. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  122. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  123. package/dist/esm-es5/pds-alert.entry.js +1 -1
  124. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  125. package/dist/esm-es5/pds-box.entry.js +1 -1
  126. package/dist/esm-es5/pds-button.entry.js +1 -1
  127. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  128. package/dist/esm-es5/pds-chip.entry.js +1 -1
  129. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  130. package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
  131. package/dist/esm-es5/pds-container.entry.js +1 -1
  132. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  133. package/dist/esm-es5/pds-divider.entry.js +1 -1
  134. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  135. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  136. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  137. package/dist/esm-es5/pds-filter.entry.js +1 -1
  138. package/dist/esm-es5/pds-filters.entry.js +1 -1
  139. package/dist/esm-es5/pds-icon.entry.js +1 -1
  140. package/dist/esm-es5/pds-image.entry.js +1 -1
  141. package/dist/esm-es5/pds-input.entry.js +1 -1
  142. package/dist/esm-es5/pds-link.entry.js +1 -1
  143. package/dist/esm-es5/pds-loader.entry.js +1 -1
  144. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  145. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  146. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  147. package/dist/esm-es5/pds-modal.entry.js +1 -1
  148. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  149. package/dist/esm-es5/pds-popover.entry.js +1 -1
  150. package/dist/esm-es5/pds-progress.entry.js +1 -1
  151. package/dist/esm-es5/pds-property.entry.js +1 -1
  152. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  153. package/dist/esm-es5/pds-radio.entry.js +1 -1
  154. package/dist/esm-es5/pds-row.entry.js +1 -1
  155. package/dist/esm-es5/pds-select.entry.js +1 -1
  156. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  157. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  158. package/dist/esm-es5/pds-switch.entry.js +1 -1
  159. package/dist/esm-es5/pds-tab.entry.js +1 -1
  160. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  161. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  162. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  163. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  164. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  165. package/dist/esm-es5/pds-table.entry.js +1 -1
  166. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  167. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  168. package/dist/esm-es5/pds-text.entry.js +1 -1
  169. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  170. package/dist/esm-es5/pds-toast.entry.js +1 -1
  171. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  172. package/dist/esm-es5/pine-core.js +1 -1
  173. package/dist/pine-core/{p-zU_JmyYX.system.js.map → p--fC0IwVR.system.js.map} +1 -1
  174. package/dist/pine-core/{p-64c94251.system.entry.js → p-00e487c4.system.entry.js} +2 -2
  175. package/dist/pine-core/{p-0b370949.entry.js → p-0561744f.entry.js} +2 -2
  176. package/dist/pine-core/{p-5fcdc321.system.entry.js → p-05771ef2.system.entry.js} +2 -2
  177. package/dist/pine-core/{p-f418ab61.entry.js → p-06fbdc35.entry.js} +2 -2
  178. package/dist/pine-core/p-0bf1fee1.entry.js +2 -0
  179. package/dist/pine-core/{p-d20af63e.system.entry.js → p-0d4b2bbc.system.entry.js} +2 -2
  180. package/dist/pine-core/{p-1da31e21.system.entry.js → p-0f037132.system.entry.js} +2 -2
  181. package/dist/pine-core/p-0fefe6ef.entry.js +2 -0
  182. package/dist/pine-core/{p-Dug3XS8i.system.js.map → p-0mArGKTT.system.js.map} +1 -1
  183. package/dist/pine-core/p-127a84bf.entry.js +3 -0
  184. package/dist/pine-core/p-127a84bf.entry.js.map +1 -0
  185. package/dist/pine-core/{p-19fbf372.system.entry.js → p-128a483e.system.entry.js} +2 -2
  186. package/dist/pine-core/{p-5ab1ae44.entry.js → p-13821696.entry.js} +2 -2
  187. package/dist/pine-core/{p-64ee9d79.system.entry.js → p-13a814c0.system.entry.js} +2 -2
  188. package/dist/pine-core/{p-b3a36a0e.entry.js → p-1768ad5e.entry.js} +2 -2
  189. package/dist/pine-core/{p-C3FLsHGa.system.js.map → p-1S7sNRrT.system.js.map} +1 -1
  190. package/dist/pine-core/{p-f8321fa1.system.entry.js → p-1c26a838.system.entry.js} +2 -2
  191. package/dist/pine-core/{p-6f65a129.system.entry.js → p-1fd52c1b.system.entry.js} +2 -2
  192. package/dist/pine-core/{p-dcf0eb78.entry.js → p-205d8c56.entry.js} +2 -2
  193. package/dist/pine-core/{p-ab4e9e84.system.entry.js → p-24f9a03b.system.entry.js} +2 -2
  194. package/dist/pine-core/{p-9280c9d2.system.entry.js → p-253e2bfd.system.entry.js} +2 -2
  195. package/dist/pine-core/{p-175f34e1.entry.js → p-26aa3195.entry.js} +2 -2
  196. package/dist/pine-core/{p-7243f550.system.entry.js → p-2c2d2080.system.entry.js} +2 -2
  197. package/dist/pine-core/{p-b600e6a7.entry.js → p-2c48e33c.entry.js} +2 -2
  198. package/dist/pine-core/{p-0370de3e.system.entry.js → p-2c7f3d5e.system.entry.js} +2 -2
  199. package/dist/pine-core/{p-c19802c2.system.entry.js → p-2ca648d8.system.entry.js} +2 -2
  200. package/dist/pine-core/{p-4542a964.entry.js → p-31b51eae.entry.js} +2 -2
  201. package/dist/pine-core/{p-f9a4836b.system.entry.js → p-3524e30c.system.entry.js} +2 -2
  202. package/dist/pine-core/{p-19c70693.system.entry.js → p-35d9e3c8.system.entry.js} +2 -2
  203. package/dist/pine-core/{p-6b153192.entry.js → p-3c864e3d.entry.js} +2 -2
  204. package/dist/pine-core/{p-00024af8.entry.js → p-42d83b1f.entry.js} +2 -2
  205. package/dist/pine-core/{p-7047497f.entry.js → p-4710c59d.entry.js} +2 -2
  206. package/dist/pine-core/{p-ae97912f.system.entry.js → p-4768b52b.system.entry.js} +2 -2
  207. package/dist/pine-core/{p-5b591069.system.entry.js → p-4993f30e.system.entry.js} +2 -2
  208. package/dist/pine-core/{p-7c23fcf5.entry.js → p-4beb8ae5.entry.js} +2 -2
  209. package/dist/pine-core/{p-9b3a5038.entry.js → p-4cf4558e.entry.js} +2 -2
  210. package/dist/pine-core/{p-ee8748ec.system.entry.js → p-4d3122ff.system.entry.js} +2 -2
  211. package/dist/pine-core/{p-Sf7x15si.system.js.map → p-4d6YziBa.system.js.map} +1 -1
  212. package/dist/pine-core/{p-d26019b2.entry.js → p-519d44b8.entry.js} +2 -2
  213. package/dist/pine-core/{p-feb34c51.entry.js → p-54e967ca.entry.js} +2 -2
  214. package/dist/pine-core/{p-b5e7228a.system.entry.js → p-5552ca6b.system.entry.js} +2 -2
  215. package/dist/pine-core/{p-VGFWbsWb.system.js.map → p-5MZ-y5Ap.system.js.map} +1 -1
  216. package/dist/pine-core/{p-3d057491.entry.js → p-5df670e9.entry.js} +3 -3
  217. package/dist/pine-core/{p-7b1cebb9.entry.js → p-5eb9a3e2.entry.js} +2 -2
  218. package/dist/pine-core/{p-b175be8e.entry.js → p-61674647.entry.js} +2 -2
  219. package/dist/pine-core/{p-c36eabe8.system.entry.js → p-617dc902.system.entry.js} +2 -2
  220. package/dist/pine-core/{p-feb666bb.entry.js → p-61c885c7.entry.js} +2 -2
  221. package/dist/pine-core/{p-b209eccb.system.entry.js → p-63fd14b1.system.entry.js} +2 -2
  222. package/dist/pine-core/{p-41af5414.system.entry.js → p-673dd006.system.entry.js} +2 -2
  223. package/dist/pine-core/{p-893f4679.system.entry.js → p-69221099.system.entry.js} +2 -2
  224. package/dist/pine-core/{p-469e54ee.system.entry.js → p-6acc2e5b.system.entry.js} +2 -2
  225. package/dist/pine-core/{p-8911278b.entry.js → p-6ff1d23e.entry.js} +2 -2
  226. package/dist/pine-core/{p-ed89e732.system.entry.js → p-779c4bd5.system.entry.js} +2 -2
  227. package/dist/pine-core/{p-88ee0c95.system.entry.js → p-7bc34bce.system.entry.js} +2 -2
  228. package/dist/pine-core/{p-b25c2d6b.entry.js → p-7d9f7018.entry.js} +2 -2
  229. package/dist/pine-core/{p-26cdbf99.entry.js → p-8731836c.entry.js} +2 -2
  230. package/dist/pine-core/p-88c2001b.entry.js +2 -0
  231. package/dist/pine-core/{p-4b5a97ad.entry.js → p-8a2433ba.entry.js} +2 -2
  232. package/dist/pine-core/{p-afa702b7.entry.js → p-8b997cb3.entry.js} +2 -2
  233. package/dist/pine-core/{p-f4eec381.entry.js → p-8d0c1f6d.entry.js} +2 -2
  234. package/dist/pine-core/{p-45b5fa65.system.entry.js → p-90126a46.system.entry.js} +3 -3
  235. package/dist/pine-core/{p-78c25934.entry.js → p-932f4860.entry.js} +2 -2
  236. package/dist/pine-core/{p-540cc2b1.entry.js → p-939ae09f.entry.js} +2 -2
  237. package/dist/pine-core/{p-690143be.system.entry.js → p-93b379c2.system.entry.js} +2 -2
  238. package/dist/pine-core/{p-ac2704ac.system.entry.js → p-94fde072.system.entry.js} +2 -2
  239. package/dist/pine-core/{p-134af443.system.entry.js → p-952b41e5.system.entry.js} +2 -2
  240. package/dist/pine-core/{p-f34e1d0b.system.entry.js → p-9d7f17a4.system.entry.js} +2 -2
  241. package/dist/pine-core/{p-5a07cff6.entry.js → p-9e073662.entry.js} +2 -2
  242. package/dist/pine-core/{p-a4255685.system.entry.js → p-9e8b71ed.system.entry.js} +2 -2
  243. package/dist/pine-core/{p-B9WMqbbz.system.js.map → p-A6hgZgB9.system.js.map} +1 -1
  244. package/dist/pine-core/{p-BtSNy3kN.system.js.map → p-AcWjVzMO.system.js.map} +1 -1
  245. package/dist/pine-core/{p-C8uRauPw.system.js → p-B1bh2Wvv.system.js} +3 -3
  246. package/dist/pine-core/p-B1bh2Wvv.system.js.map +1 -0
  247. package/dist/pine-core/{p-VD9N6wlm.system.js.map → p-B2EsHCoA.system.js.map} +1 -1
  248. package/dist/pine-core/{p-DB5uGIa_.system.js.map → p-B7_7oNQG.system.js.map} +1 -1
  249. package/dist/pine-core/{p-DLLxnMGt.system.js.map → p-B8BcpYlQ.system.js.map} +1 -1
  250. package/dist/pine-core/{p-BliJJW1j.system.js.map → p-BD9ysh2r.system.js.map} +1 -1
  251. package/dist/pine-core/{p-CgWQPL_r.system.js.map → p-BFO0Qv1J.system.js.map} +1 -1
  252. package/dist/pine-core/{p-B-E5vUXg.system.js.map → p-BHXH-Irt.system.js.map} +1 -1
  253. package/dist/pine-core/{p-Cmqc3dXq.system.js.map → p-BLil033h.system.js.map} +1 -1
  254. package/dist/pine-core/{p-B1H_HZwJ.system.js.map → p-BYHypIS4.system.js.map} +1 -1
  255. package/dist/pine-core/{p-B9XGJbRZ.system.js.map → p-BjaDq65J.system.js.map} +1 -1
  256. package/dist/pine-core/{p-D-OPCAZp.system.js.map → p-Bm0i20zh.system.js.map} +1 -1
  257. package/dist/pine-core/{p-CqXA936G.system.js.map → p-BtXGBfVh.system.js.map} +1 -1
  258. package/dist/pine-core/{p-BGDY9PLj.system.js.map → p-BuXqrZlE.system.js.map} +1 -1
  259. package/dist/pine-core/{p-U881Jw53.system.js.map → p-BvEsTKJw.system.js.map} +1 -1
  260. package/dist/pine-core/{p-BCjnOrSN.system.js.map → p-BvlpNhcl.system.js.map} +1 -1
  261. package/dist/pine-core/{p-B9BjjBgt.system.js.map → p-BwqSEhik.system.js.map} +1 -1
  262. package/dist/pine-core/{p-Is08Hq3K.system.js.map → p-C08fY97u.system.js.map} +1 -1
  263. package/dist/pine-core/{p-W82-XbRW.system.js.map → p-C1AMzooU.system.js.map} +1 -1
  264. package/dist/pine-core/{p-CgnpUgBl.system.js.map → p-C7zvuvWK.system.js.map} +1 -1
  265. package/dist/pine-core/{p-wAXk8ww_.system.js.map → p-CHUAwdle.system.js.map} +1 -1
  266. package/dist/pine-core/{p-fpT973d4.system.js.map → p-CIRw0SFV.system.js.map} +1 -1
  267. package/dist/pine-core/{p-BT8dqDAs.system.js.map → p-CNgeZOJ8.system.js.map} +1 -1
  268. package/dist/pine-core/{p-C_yp7uLt.js → p-CO9kz-Pi.js} +3 -3
  269. package/dist/pine-core/p-CO9kz-Pi.js.map +1 -0
  270. package/dist/pine-core/{p-BJIYR_AY.system.js.map → p-CeUxuw8r.system.js.map} +1 -1
  271. package/dist/pine-core/{p-B1RhEuhm.system.js.map → p-Cng7Mtub.system.js.map} +1 -1
  272. package/dist/pine-core/{p-BZb-VHul.system.js.map → p-CoxD4Fzc.system.js.map} +1 -1
  273. package/dist/pine-core/{p-bHMH0lWb.system.js.map → p-D0Q8TzYd.system.js.map} +1 -1
  274. package/dist/pine-core/{p-DqLcHuGq.system.js.map → p-D2CTdoEq.system.js.map} +1 -1
  275. package/dist/pine-core/{p-CGu84YSR.system.js.map → p-D4yK_qVB.system.js.map} +1 -1
  276. package/dist/pine-core/{p-DU4ZC8FC.system.js.map → p-D504xCQQ.system.js.map} +1 -1
  277. package/dist/pine-core/{p-kdYEMtne.system.js.map → p-DDgPxucg.system.js.map} +1 -1
  278. package/dist/pine-core/{p-DqpW04yq.system.js.map → p-DFd5KJNr.system.js.map} +1 -1
  279. package/dist/pine-core/{p-BMZZBVr0.system.js.map → p-DMxjKSUq.system.js.map} +1 -1
  280. package/dist/pine-core/{p-eR8WkMT9.system.js.map → p-DUvF_h4G.system.js.map} +1 -1
  281. package/dist/pine-core/{p-BQQNaMkA.system.js.map → p-DWrLi0lj.system.js.map} +1 -1
  282. package/dist/pine-core/{p-DA-RbdlV.system.js → p-Djhe2zUv.system.js} +2 -2
  283. package/dist/pine-core/{p-DA-RbdlV.system.js.map → p-Djhe2zUv.system.js.map} +1 -1
  284. package/dist/pine-core/{p-CSHbB28_.system.js.map → p-DkENjswB.system.js.map} +1 -1
  285. package/dist/pine-core/{p-Bl3RALlE.system.js.map → p-DxU4fApL.system.js.map} +1 -1
  286. package/dist/pine-core/{p-CbV_pmpw.system.js.map → p-IrhpBtZN.system.js.map} +1 -1
  287. package/dist/pine-core/{p-BkfYC3QG.system.js.map → p-M5aqIQje.system.js.map} +1 -1
  288. package/dist/pine-core/{p-B01-GY9x.system.js.map → p-MtzjfzAh.system.js.map} +1 -1
  289. package/dist/pine-core/p-NzmeWArw.system.js.map +1 -0
  290. package/dist/pine-core/{p-CgohfVVy.system.js.map → p-UYm57tw3.system.js.map} +1 -1
  291. package/dist/pine-core/{p-BRDfQlTR.system.js.map → p-VWcPIY1a.system.js.map} +1 -1
  292. package/dist/pine-core/{p-2a7105ce.system.entry.js → p-a12e38aa.system.entry.js} +2 -2
  293. package/dist/pine-core/{p-6742ac53.system.entry.js → p-a713fedd.system.entry.js} +2 -2
  294. package/dist/pine-core/{p-428ca3f6.system.entry.js → p-a76a454f.system.entry.js} +2 -2
  295. package/dist/pine-core/{p-200365ba.system.entry.js → p-aed5cf70.system.entry.js} +2 -2
  296. package/dist/pine-core/{p-c649b996.system.entry.js → p-b117b00a.system.entry.js} +2 -2
  297. package/dist/pine-core/{p-fc9981e2.system.entry.js → p-b272656d.system.entry.js} +2 -2
  298. package/dist/pine-core/{p-ae7f32cd.entry.js → p-b63c7247.entry.js} +2 -2
  299. package/dist/pine-core/{p-3b32b411.entry.js → p-b8ca7bca.entry.js} +2 -2
  300. package/dist/pine-core/{p-b49dfc1f.entry.js → p-bb4bb3a7.entry.js} +2 -2
  301. package/dist/pine-core/{p-a99138df.entry.js → p-bd277581.entry.js} +2 -2
  302. package/dist/pine-core/{p-4f2ff60a.entry.js → p-be76de9e.entry.js} +2 -2
  303. package/dist/pine-core/{p-b2e1b6de.system.entry.js → p-bf1ab568.system.entry.js} +2 -2
  304. package/dist/pine-core/{p-09b3671c.system.entry.js → p-c299c019.system.entry.js} +2 -2
  305. package/dist/pine-core/{p-db8de76a.system.entry.js → p-c424a27a.system.entry.js} +2 -2
  306. package/dist/pine-core/{p-c16dc54e.entry.js → p-c54334bf.entry.js} +2 -2
  307. package/dist/pine-core/p-c5dc1e2d.system.entry.js +2 -0
  308. package/dist/pine-core/{p-5eba0eed.entry.js → p-c5f4d4c0.entry.js} +2 -2
  309. package/dist/pine-core/{p-ee66ed28.system.entry.js → p-c7246fe4.system.entry.js} +2 -2
  310. package/dist/pine-core/{p-6a585d38.system.entry.js → p-c746c9ad.system.entry.js} +2 -2
  311. package/dist/pine-core/{p-8d887560.entry.js → p-c7cab4ca.entry.js} +2 -2
  312. package/dist/pine-core/{p-ce5bba8d.system.entry.js → p-cb733c9c.system.entry.js} +2 -2
  313. package/dist/pine-core/{p-4bcdb26e.system.entry.js → p-cea4bfaa.system.entry.js} +2 -2
  314. package/dist/pine-core/{p-356aea4b.entry.js → p-d90f7fe4.entry.js} +2 -2
  315. package/dist/pine-core/{p-348c17bf.entry.js → p-da50a223.entry.js} +2 -2
  316. package/dist/pine-core/{p-7d46955b.entry.js → p-dc724dee.entry.js} +2 -2
  317. package/dist/pine-core/{p-097a9e35.entry.js → p-dd9888e9.entry.js} +2 -2
  318. package/dist/pine-core/{p-9b71468c.entry.js → p-e0862ab5.entry.js} +2 -2
  319. package/dist/pine-core/{p-d8f68dae.entry.js → p-e7e166f2.entry.js} +2 -2
  320. package/dist/pine-core/p-ea94b002.system.entry.js +4 -0
  321. package/dist/pine-core/p-ea94b002.system.entry.js.map +1 -0
  322. package/dist/pine-core/{p-65000aac.system.entry.js → p-ebf96abc.system.entry.js} +2 -2
  323. package/dist/pine-core/{p-aaba036c.entry.js → p-ec974e1d.entry.js} +2 -2
  324. package/dist/pine-core/{p-e414be23.system.entry.js → p-f30bde36.system.entry.js} +2 -2
  325. package/dist/pine-core/{p-19c80180.system.entry.js → p-f4662c9d.system.entry.js} +2 -2
  326. package/dist/pine-core/{p-8771e85a.entry.js → p-f924994c.entry.js} +2 -2
  327. package/dist/pine-core/{p-53698627.entry.js → p-fbd8a4ac.entry.js} +2 -2
  328. package/dist/pine-core/{p-3e6ca680.entry.js → p-fd6e7155.entry.js} +2 -2
  329. package/dist/pine-core/{p-DXfFlVU2.system.js.map → p-iOyU21aP.system.js.map} +1 -1
  330. package/dist/pine-core/{p-pj5WZS7o.system.js.map → p-sB8ZB68H.system.js.map} +1 -1
  331. package/dist/pine-core/{p-CuDPU9tR.system.js.map → p-xKyEDmi0.system.js.map} +1 -1
  332. package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
  333. package/dist/pine-core/pine-core.css +1 -1
  334. package/dist/pine-core/pine-core.esm.js +1 -1
  335. package/dist/pine-core/pine-core.js +1 -1
  336. package/dist/types/components/pds-combobox/pds-combobox.d.ts +50 -0
  337. package/dist/types/components.d.ts +12 -2
  338. package/dist/vscode.html-data.json +16 -1
  339. package/hydrate/index.js +272 -55
  340. package/hydrate/index.mjs +272 -55
  341. package/package.json +2 -2
  342. package/dist/cjs/index-Cc_o_7az.js.map +0 -1
  343. package/dist/esm/index-C_yp7uLt.js.map +0 -1
  344. package/dist/esm-es5/index-C_yp7uLt.js.map +0 -1
  345. package/dist/pine-core/p-1208f3f4.entry.js +0 -3
  346. package/dist/pine-core/p-1208f3f4.entry.js.map +0 -1
  347. package/dist/pine-core/p-16c99374.entry.js +0 -2
  348. package/dist/pine-core/p-3321448e.system.entry.js +0 -4
  349. package/dist/pine-core/p-3321448e.system.entry.js.map +0 -1
  350. package/dist/pine-core/p-5c7819b2.system.entry.js +0 -2
  351. package/dist/pine-core/p-8ab0fe54.entry.js +0 -2
  352. package/dist/pine-core/p-99343ac6.entry.js +0 -2
  353. package/dist/pine-core/p-C8uRauPw.system.js.map +0 -1
  354. package/dist/pine-core/p-C_yp7uLt.js.map +0 -1
  355. package/dist/pine-core/p-D0ED3Slj.system.js.map +0 -1
  356. /package/dist/pine-core/{p-64c94251.system.entry.js.map → p-00e487c4.system.entry.js.map} +0 -0
  357. /package/dist/pine-core/{p-0b370949.entry.js.map → p-0561744f.entry.js.map} +0 -0
  358. /package/dist/pine-core/{p-5fcdc321.system.entry.js.map → p-05771ef2.system.entry.js.map} +0 -0
  359. /package/dist/pine-core/{p-f418ab61.entry.js.map → p-06fbdc35.entry.js.map} +0 -0
  360. /package/dist/pine-core/{p-8ab0fe54.entry.js.map → p-0bf1fee1.entry.js.map} +0 -0
  361. /package/dist/pine-core/{p-d20af63e.system.entry.js.map → p-0d4b2bbc.system.entry.js.map} +0 -0
  362. /package/dist/pine-core/{p-1da31e21.system.entry.js.map → p-0f037132.system.entry.js.map} +0 -0
  363. /package/dist/pine-core/{p-16c99374.entry.js.map → p-0fefe6ef.entry.js.map} +0 -0
  364. /package/dist/pine-core/{p-19fbf372.system.entry.js.map → p-128a483e.system.entry.js.map} +0 -0
  365. /package/dist/pine-core/{p-5ab1ae44.entry.js.map → p-13821696.entry.js.map} +0 -0
  366. /package/dist/pine-core/{p-64ee9d79.system.entry.js.map → p-13a814c0.system.entry.js.map} +0 -0
  367. /package/dist/pine-core/{p-b3a36a0e.entry.js.map → p-1768ad5e.entry.js.map} +0 -0
  368. /package/dist/pine-core/{p-f8321fa1.system.entry.js.map → p-1c26a838.system.entry.js.map} +0 -0
  369. /package/dist/pine-core/{p-6f65a129.system.entry.js.map → p-1fd52c1b.system.entry.js.map} +0 -0
  370. /package/dist/pine-core/{p-dcf0eb78.entry.js.map → p-205d8c56.entry.js.map} +0 -0
  371. /package/dist/pine-core/{p-ab4e9e84.system.entry.js.map → p-24f9a03b.system.entry.js.map} +0 -0
  372. /package/dist/pine-core/{p-9280c9d2.system.entry.js.map → p-253e2bfd.system.entry.js.map} +0 -0
  373. /package/dist/pine-core/{p-175f34e1.entry.js.map → p-26aa3195.entry.js.map} +0 -0
  374. /package/dist/pine-core/{p-7243f550.system.entry.js.map → p-2c2d2080.system.entry.js.map} +0 -0
  375. /package/dist/pine-core/{p-b600e6a7.entry.js.map → p-2c48e33c.entry.js.map} +0 -0
  376. /package/dist/pine-core/{p-0370de3e.system.entry.js.map → p-2c7f3d5e.system.entry.js.map} +0 -0
  377. /package/dist/pine-core/{p-c19802c2.system.entry.js.map → p-2ca648d8.system.entry.js.map} +0 -0
  378. /package/dist/pine-core/{p-4542a964.entry.js.map → p-31b51eae.entry.js.map} +0 -0
  379. /package/dist/pine-core/{p-f9a4836b.system.entry.js.map → p-3524e30c.system.entry.js.map} +0 -0
  380. /package/dist/pine-core/{p-19c70693.system.entry.js.map → p-35d9e3c8.system.entry.js.map} +0 -0
  381. /package/dist/pine-core/{p-6b153192.entry.js.map → p-3c864e3d.entry.js.map} +0 -0
  382. /package/dist/pine-core/{p-00024af8.entry.js.map → p-42d83b1f.entry.js.map} +0 -0
  383. /package/dist/pine-core/{p-7047497f.entry.js.map → p-4710c59d.entry.js.map} +0 -0
  384. /package/dist/pine-core/{p-ae97912f.system.entry.js.map → p-4768b52b.system.entry.js.map} +0 -0
  385. /package/dist/pine-core/{p-5b591069.system.entry.js.map → p-4993f30e.system.entry.js.map} +0 -0
  386. /package/dist/pine-core/{p-7c23fcf5.entry.js.map → p-4beb8ae5.entry.js.map} +0 -0
  387. /package/dist/pine-core/{p-9b3a5038.entry.js.map → p-4cf4558e.entry.js.map} +0 -0
  388. /package/dist/pine-core/{p-ee8748ec.system.entry.js.map → p-4d3122ff.system.entry.js.map} +0 -0
  389. /package/dist/pine-core/{p-d26019b2.entry.js.map → p-519d44b8.entry.js.map} +0 -0
  390. /package/dist/pine-core/{p-feb34c51.entry.js.map → p-54e967ca.entry.js.map} +0 -0
  391. /package/dist/pine-core/{p-b5e7228a.system.entry.js.map → p-5552ca6b.system.entry.js.map} +0 -0
  392. /package/dist/pine-core/{p-3d057491.entry.js.map → p-5df670e9.entry.js.map} +0 -0
  393. /package/dist/pine-core/{p-7b1cebb9.entry.js.map → p-5eb9a3e2.entry.js.map} +0 -0
  394. /package/dist/pine-core/{p-b175be8e.entry.js.map → p-61674647.entry.js.map} +0 -0
  395. /package/dist/pine-core/{p-c36eabe8.system.entry.js.map → p-617dc902.system.entry.js.map} +0 -0
  396. /package/dist/pine-core/{p-feb666bb.entry.js.map → p-61c885c7.entry.js.map} +0 -0
  397. /package/dist/pine-core/{p-b209eccb.system.entry.js.map → p-63fd14b1.system.entry.js.map} +0 -0
  398. /package/dist/pine-core/{p-41af5414.system.entry.js.map → p-673dd006.system.entry.js.map} +0 -0
  399. /package/dist/pine-core/{p-893f4679.system.entry.js.map → p-69221099.system.entry.js.map} +0 -0
  400. /package/dist/pine-core/{p-469e54ee.system.entry.js.map → p-6acc2e5b.system.entry.js.map} +0 -0
  401. /package/dist/pine-core/{p-8911278b.entry.js.map → p-6ff1d23e.entry.js.map} +0 -0
  402. /package/dist/pine-core/{p-ed89e732.system.entry.js.map → p-779c4bd5.system.entry.js.map} +0 -0
  403. /package/dist/pine-core/{p-88ee0c95.system.entry.js.map → p-7bc34bce.system.entry.js.map} +0 -0
  404. /package/dist/pine-core/{p-b25c2d6b.entry.js.map → p-7d9f7018.entry.js.map} +0 -0
  405. /package/dist/pine-core/{p-26cdbf99.entry.js.map → p-8731836c.entry.js.map} +0 -0
  406. /package/dist/pine-core/{p-99343ac6.entry.js.map → p-88c2001b.entry.js.map} +0 -0
  407. /package/dist/pine-core/{p-4b5a97ad.entry.js.map → p-8a2433ba.entry.js.map} +0 -0
  408. /package/dist/pine-core/{p-afa702b7.entry.js.map → p-8b997cb3.entry.js.map} +0 -0
  409. /package/dist/pine-core/{p-f4eec381.entry.js.map → p-8d0c1f6d.entry.js.map} +0 -0
  410. /package/dist/pine-core/{p-45b5fa65.system.entry.js.map → p-90126a46.system.entry.js.map} +0 -0
  411. /package/dist/pine-core/{p-78c25934.entry.js.map → p-932f4860.entry.js.map} +0 -0
  412. /package/dist/pine-core/{p-540cc2b1.entry.js.map → p-939ae09f.entry.js.map} +0 -0
  413. /package/dist/pine-core/{p-690143be.system.entry.js.map → p-93b379c2.system.entry.js.map} +0 -0
  414. /package/dist/pine-core/{p-ac2704ac.system.entry.js.map → p-94fde072.system.entry.js.map} +0 -0
  415. /package/dist/pine-core/{p-134af443.system.entry.js.map → p-952b41e5.system.entry.js.map} +0 -0
  416. /package/dist/pine-core/{p-f34e1d0b.system.entry.js.map → p-9d7f17a4.system.entry.js.map} +0 -0
  417. /package/dist/pine-core/{p-5a07cff6.entry.js.map → p-9e073662.entry.js.map} +0 -0
  418. /package/dist/pine-core/{p-a4255685.system.entry.js.map → p-9e8b71ed.system.entry.js.map} +0 -0
  419. /package/dist/pine-core/{p-2a7105ce.system.entry.js.map → p-a12e38aa.system.entry.js.map} +0 -0
  420. /package/dist/pine-core/{p-6742ac53.system.entry.js.map → p-a713fedd.system.entry.js.map} +0 -0
  421. /package/dist/pine-core/{p-428ca3f6.system.entry.js.map → p-a76a454f.system.entry.js.map} +0 -0
  422. /package/dist/pine-core/{p-200365ba.system.entry.js.map → p-aed5cf70.system.entry.js.map} +0 -0
  423. /package/dist/pine-core/{p-c649b996.system.entry.js.map → p-b117b00a.system.entry.js.map} +0 -0
  424. /package/dist/pine-core/{p-fc9981e2.system.entry.js.map → p-b272656d.system.entry.js.map} +0 -0
  425. /package/dist/pine-core/{p-ae7f32cd.entry.js.map → p-b63c7247.entry.js.map} +0 -0
  426. /package/dist/pine-core/{p-3b32b411.entry.js.map → p-b8ca7bca.entry.js.map} +0 -0
  427. /package/dist/pine-core/{p-b49dfc1f.entry.js.map → p-bb4bb3a7.entry.js.map} +0 -0
  428. /package/dist/pine-core/{p-a99138df.entry.js.map → p-bd277581.entry.js.map} +0 -0
  429. /package/dist/pine-core/{p-4f2ff60a.entry.js.map → p-be76de9e.entry.js.map} +0 -0
  430. /package/dist/pine-core/{p-b2e1b6de.system.entry.js.map → p-bf1ab568.system.entry.js.map} +0 -0
  431. /package/dist/pine-core/{p-09b3671c.system.entry.js.map → p-c299c019.system.entry.js.map} +0 -0
  432. /package/dist/pine-core/{p-db8de76a.system.entry.js.map → p-c424a27a.system.entry.js.map} +0 -0
  433. /package/dist/pine-core/{p-c16dc54e.entry.js.map → p-c54334bf.entry.js.map} +0 -0
  434. /package/dist/pine-core/{p-5c7819b2.system.entry.js.map → p-c5dc1e2d.system.entry.js.map} +0 -0
  435. /package/dist/pine-core/{p-5eba0eed.entry.js.map → p-c5f4d4c0.entry.js.map} +0 -0
  436. /package/dist/pine-core/{p-ee66ed28.system.entry.js.map → p-c7246fe4.system.entry.js.map} +0 -0
  437. /package/dist/pine-core/{p-6a585d38.system.entry.js.map → p-c746c9ad.system.entry.js.map} +0 -0
  438. /package/dist/pine-core/{p-8d887560.entry.js.map → p-c7cab4ca.entry.js.map} +0 -0
  439. /package/dist/pine-core/{p-ce5bba8d.system.entry.js.map → p-cb733c9c.system.entry.js.map} +0 -0
  440. /package/dist/pine-core/{p-4bcdb26e.system.entry.js.map → p-cea4bfaa.system.entry.js.map} +0 -0
  441. /package/dist/pine-core/{p-356aea4b.entry.js.map → p-d90f7fe4.entry.js.map} +0 -0
  442. /package/dist/pine-core/{p-348c17bf.entry.js.map → p-da50a223.entry.js.map} +0 -0
  443. /package/dist/pine-core/{p-7d46955b.entry.js.map → p-dc724dee.entry.js.map} +0 -0
  444. /package/dist/pine-core/{p-097a9e35.entry.js.map → p-dd9888e9.entry.js.map} +0 -0
  445. /package/dist/pine-core/{p-9b71468c.entry.js.map → p-e0862ab5.entry.js.map} +0 -0
  446. /package/dist/pine-core/{p-d8f68dae.entry.js.map → p-e7e166f2.entry.js.map} +0 -0
  447. /package/dist/pine-core/{p-65000aac.system.entry.js.map → p-ebf96abc.system.entry.js.map} +0 -0
  448. /package/dist/pine-core/{p-aaba036c.entry.js.map → p-ec974e1d.entry.js.map} +0 -0
  449. /package/dist/pine-core/{p-e414be23.system.entry.js.map → p-f30bde36.system.entry.js.map} +0 -0
  450. /package/dist/pine-core/{p-19c80180.system.entry.js.map → p-f4662c9d.system.entry.js.map} +0 -0
  451. /package/dist/pine-core/{p-8771e85a.entry.js.map → p-f924994c.entry.js.map} +0 -0
  452. /package/dist/pine-core/{p-53698627.entry.js.map → p-fbd8a4ac.entry.js.map} +0 -0
  453. /package/dist/pine-core/{p-3e6ca680.entry.js.map → p-fd6e7155.entry.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { h, Host } from "@stencil/core";
2
2
  import { isSpecTest } from "../../utils/form";
3
- import { computePosition, flip, offset, shift } from "@floating-ui/dom";
3
+ import { autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
4
4
  import { debounceEvent } from "../../utils/utils";
5
5
  import DOMPurify from "dompurify";
6
6
  /**
@@ -38,6 +38,18 @@ export class PdsCombobox {
38
38
  * @default '236px'
39
39
  */
40
40
  this.dropdownWidth = '236px';
41
+ /**
42
+ * Where to mount the dropdown listbox (`host` or `body`, sometimes called “append to body”).
43
+ * Use `body` inside scrollable containers (for example modals) so the list is not clipped by
44
+ * `overflow: hidden` ancestors. The portal is appended to the nearest `<dialog>` when present
45
+ * (including `pds-modal` / `showModal()`), using a composed ascent so shadow DOM and slot
46
+ * boundaries do not hide the dialog from discovery; otherwise it is appended to `document.body`.
47
+ * Keyboard focus remains on the trigger via
48
+ * `aria-activedescendant` so modal focus traps continue to work. Custom `empty` and `loading`
49
+ * slots are not supported when `body` is used; the default empty and loading content is shown instead.
50
+ * @default 'host'
51
+ */
52
+ this.dropdownMount = 'host';
41
53
  /**
42
54
  * Visually hides the label text for instances where only the combobox should be displayed.
43
55
  * The visible `<label>` is omitted (same pattern as `pds-select`) so label spacing does not reserve layout;
@@ -46,6 +58,8 @@ export class PdsCombobox {
46
58
  this.hideLabel = false;
47
59
  /**
48
60
  * Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options).
61
+ * In filter mode, reopening the menu while the input still shows the label of the selected option temporarily lists
62
+ * all options until you type (so you can switch to a different choice without clearing the field first).
49
63
  * @default 'filter'
50
64
  */
51
65
  this.mode = 'filter';
@@ -147,9 +161,18 @@ export class PdsCombobox {
147
161
  this.hasMore = false;
148
162
  this.optionEls = [];
149
163
  this.allItems = [];
164
+ this.portalEl = null;
165
+ this.bodyPortalAutoUpdateActive = false;
150
166
  this.isUpdatingFromSelection = false;
167
+ /**
168
+ * In filter mode, after choosing an option the input still shows the label and would
169
+ * otherwise filter the list to matching substrings only. While this flag is true,
170
+ * the list shows every option until the user types (then normal filtering applies).
171
+ */
172
+ this.expandFilterListWhileOpen = false;
151
173
  this.handleInput = (e) => {
152
174
  const target = e.target;
175
+ this.clearExpandFilterList();
153
176
  this.displayText = target.value;
154
177
  this.isOpen = true;
155
178
  this.filterOptions();
@@ -165,19 +188,26 @@ export class PdsCombobox {
165
188
  // Open dropdown when input is clicked (but not when tabbed into)
166
189
  if (!this.isOpen) {
167
190
  this.isOpen = true;
191
+ this.prepareExpandFilterListOnOpen();
168
192
  this.filterOptions();
169
193
  // Trigger initial fetch if async and no options loaded yet
170
194
  if (this.asyncUrl && this.internalOptions.length === 0) {
171
195
  this.debouncedFetchAsyncOptions(this.displayText, 1);
172
196
  }
173
197
  this.setInitialHighlightedIndex();
174
- setTimeout(() => this.openDropdownPositioning(), 0);
198
+ setTimeout(() => {
199
+ this.openDropdownPositioning();
200
+ if (this.trigger === 'input' && this.expandFilterListWhileOpen && this.inputEl) {
201
+ this.inputEl.select();
202
+ }
203
+ }, 0);
175
204
  }
176
205
  };
177
206
  this.handleKeyDown = (e) => {
178
207
  if (!this.isOpen && (e.key === 'ArrowDown' || e.key === 'ArrowUp' || (e.altKey && e.key === 'ArrowDown'))) {
179
208
  e.preventDefault();
180
209
  this.isOpen = true;
210
+ this.prepareExpandFilterListOnOpen();
181
211
  this.filterOptions();
182
212
  // Set highlighted index immediately for testing
183
213
  this.setInitialHighlightedIndex();
@@ -270,6 +300,7 @@ export class PdsCombobox {
270
300
  e.preventDefault();
271
301
  this.isOpen = false;
272
302
  this.highlightedIndex = -1;
303
+ this.clearExpandFilterList();
273
304
  this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
274
305
  this.restoreFocusToTrigger();
275
306
  break;
@@ -277,6 +308,7 @@ export class PdsCombobox {
277
308
  // Allow normal tab behavior to close dropdown and move focus
278
309
  this.isOpen = false;
279
310
  this.highlightedIndex = -1;
311
+ this.clearExpandFilterList();
280
312
  this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
281
313
  break;
282
314
  }
@@ -308,6 +340,7 @@ export class PdsCombobox {
308
340
  this.onButtonTriggerClick = () => {
309
341
  this.isOpen = !this.isOpen;
310
342
  if (this.isOpen) {
343
+ this.prepareExpandFilterListOnOpen();
311
344
  this.filterOptions();
312
345
  // Trigger initial fetch if async and no options loaded yet
313
346
  if (this.asyncUrl && this.internalOptions.length === 0) {
@@ -321,6 +354,7 @@ export class PdsCombobox {
321
354
  }
322
355
  else {
323
356
  // Reset navigation mode when closing
357
+ this.clearExpandFilterList();
324
358
  this.isArrowKeyNavigationMode = false;
325
359
  }
326
360
  };
@@ -330,6 +364,7 @@ export class PdsCombobox {
330
364
  e.preventDefault();
331
365
  e.stopPropagation(); // Prevent the event from bubbling and triggering click
332
366
  this.isOpen = true;
367
+ this.prepareExpandFilterListOnOpen();
333
368
  this.filterOptions();
334
369
  // Set highlighted index immediately
335
370
  this.setInitialHighlightedIndex();
@@ -344,6 +379,7 @@ export class PdsCombobox {
344
379
  if (this.isOpen) {
345
380
  this.isOpen = false;
346
381
  this.highlightedIndex = -1;
382
+ this.clearExpandFilterList();
347
383
  this.updateAriaActiveDescendant(); // Clear aria-activedescendant
348
384
  this.restoreFocusToTrigger();
349
385
  }
@@ -362,15 +398,16 @@ export class PdsCombobox {
362
398
  };
363
399
  // Close dropdown when focus leaves the combobox
364
400
  this.onComboboxFocusOut = (event) => {
365
- var _a;
401
+ var _a, _b;
366
402
  const relatedTarget = event.relatedTarget;
367
- // Check if the related target is within our shadow DOM (listbox options)
368
- const isRelatedTargetInListbox = relatedTarget && ((_a = this.listboxEl) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget));
403
+ const isRelatedTargetInListbox = relatedTarget &&
404
+ (((_a = this.listboxEl) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget)) || ((_b = this.portalEl) === null || _b === void 0 ? void 0 : _b.contains(relatedTarget)));
369
405
  const isRelatedTargetInCombobox = this.el.contains(relatedTarget);
370
406
  // Don't close if focus is moving to an option in the listbox or staying within the combobox
371
407
  if (!isRelatedTargetInCombobox && !isRelatedTargetInListbox) {
372
408
  this.isOpen = false;
373
409
  this.highlightedIndex = -1;
410
+ this.clearExpandFilterList();
374
411
  this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
375
412
  this.updateAriaActiveDescendant(); // Clear aria-activedescendant
376
413
  // If there's a selected option but the display text doesn't match, restore the selected option's display text
@@ -424,8 +461,57 @@ export class PdsCombobox {
424
461
  }
425
462
  disconnectedCallback() {
426
463
  var _a;
464
+ if (this.deferredPortalTeardownId !== undefined) {
465
+ clearTimeout(this.deferredPortalTeardownId);
466
+ this.deferredPortalTeardownId = undefined;
467
+ }
427
468
  (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
428
469
  this.clearAsyncFetchState();
470
+ this.removeBodyPortal();
471
+ }
472
+ componentDidRender() {
473
+ if (this.usesBodyPortal && this.isOpen) {
474
+ this.syncBodyPortal();
475
+ }
476
+ }
477
+ isOpenChanged(isOpen) {
478
+ if (isOpen && this.deferredPortalTeardownId !== undefined) {
479
+ clearTimeout(this.deferredPortalTeardownId);
480
+ this.deferredPortalTeardownId = undefined;
481
+ }
482
+ if (isOpen && this.usesBodyPortal) {
483
+ // Rapid reopen can cancel deferred teardown while the portal still holds the previous
484
+ // listbox node; clear portal state before the next render attaches the new listbox, and
485
+ // reset Floating UI autoUpdate bookkeeping.
486
+ this.removeBodyPortal();
487
+ }
488
+ if (!isOpen && this.usesBodyPortal) {
489
+ if (this.deferredPortalTeardownId !== undefined) {
490
+ clearTimeout(this.deferredPortalTeardownId);
491
+ }
492
+ this.deferredPortalTeardownId = setTimeout(() => {
493
+ this.deferredPortalTeardownId = undefined;
494
+ if (!this.el.isConnected) {
495
+ return;
496
+ }
497
+ if (!this.isOpen) {
498
+ this.removeBodyPortal();
499
+ }
500
+ }, 0);
501
+ return;
502
+ }
503
+ if (!isOpen) {
504
+ this.removeBodyPortal();
505
+ }
506
+ }
507
+ get usesBodyPortal() {
508
+ return this.dropdownMount === 'body';
509
+ }
510
+ get listboxId() {
511
+ return `${this.componentId}-listbox`;
512
+ }
513
+ optionDomId(optionIndex) {
514
+ return `${this.componentId}-option-${optionIndex}`;
429
515
  }
430
516
  setupDebounce() {
431
517
  const { pdsComboboxSearch, debounce, originalSearchEmitter } = this;
@@ -768,7 +854,7 @@ export class PdsCombobox {
768
854
  if (this.allItems.length === 0 && this.optionEls.length > 0) {
769
855
  this.allItems = [...this.optionEls];
770
856
  }
771
- if (this.mode === 'select-only') {
857
+ if (this.mode === 'select-only' || this.expandFilterListWhileOpen) {
772
858
  this.filteredItems = [...this.allItems];
773
859
  }
774
860
  else {
@@ -809,28 +895,153 @@ export class PdsCombobox {
809
895
  }
810
896
  this.highlightedIndex = -1;
811
897
  }
812
- openDropdownPositioning() {
813
- if (this.triggerEl && this.listboxEl) {
814
- // Apply width and max-height BEFORE positioning calculations
815
- this.listboxEl.style.width = this.dropdownWidth;
816
- if (this.maxHeight) {
817
- this.listboxEl.style.maxHeight = this.maxHeight;
818
- this.listboxEl.style.overflowY = 'auto';
898
+ clearExpandFilterList() {
899
+ this.expandFilterListWhileOpen = false;
900
+ }
901
+ /**
902
+ * When reopening the dropdown in filter mode with the input still showing the
903
+ * committed selection label, show the full option list until the user edits the query.
904
+ */
905
+ prepareExpandFilterListOnOpen() {
906
+ if (this.mode === 'filter' &&
907
+ this.selectedOption &&
908
+ this.displayText === this.getOptionLabel(this.selectedOption)) {
909
+ this.expandFilterListWhileOpen = true;
910
+ }
911
+ else {
912
+ this.expandFilterListWhileOpen = false;
913
+ }
914
+ }
915
+ positionDropdown() {
916
+ if (!this.triggerEl || !this.listboxEl) {
917
+ return;
918
+ }
919
+ const strategy = this.usesBodyPortal ? 'fixed' : 'absolute';
920
+ const zIndex = this.usesBodyPortal
921
+ ? 'var(--pine-z-index-priority)'
922
+ : 'var(--pine-z-index-raised)';
923
+ this.listboxEl.style.width = this.dropdownWidth;
924
+ if (this.maxHeight) {
925
+ this.listboxEl.style.maxHeight = this.maxHeight;
926
+ this.listboxEl.style.overflowY = 'auto';
927
+ }
928
+ this.listboxEl.offsetHeight;
929
+ return computePosition(this.triggerEl, this.listboxEl, {
930
+ placement: this.dropdownPlacement,
931
+ strategy,
932
+ middleware: [offset(12), flip(), shift({ padding: 5 })],
933
+ }).then(({ x, y }) => {
934
+ if (!this.listboxEl) {
935
+ return;
819
936
  }
820
- // Force a reflow to ensure dimensions are calculated
821
- this.listboxEl.offsetHeight;
822
- computePosition(this.triggerEl, this.listboxEl, {
823
- placement: this.dropdownPlacement,
824
- strategy: 'absolute',
825
- middleware: [offset(12), flip(), shift({ padding: 5 })],
826
- }).then(({ x, y }) => {
827
- Object.assign(this.listboxEl.style, {
828
- left: `${x}px`,
829
- top: `${y}px`,
830
- position: 'absolute',
831
- zIndex: 'var(--pine-z-index-raised)',
832
- });
937
+ Object.assign(this.listboxEl.style, {
938
+ left: `${x}px`,
939
+ top: `${y}px`,
940
+ position: strategy,
941
+ zIndex,
833
942
  });
943
+ });
944
+ }
945
+ openDropdownPositioning() {
946
+ if (!this.triggerEl || !this.listboxEl) {
947
+ return;
948
+ }
949
+ void this.positionDropdown();
950
+ }
951
+ startBodyPortalAutoUpdate() {
952
+ if (this.bodyPortalAutoUpdateActive || !this.triggerEl || !this.listboxEl) {
953
+ return;
954
+ }
955
+ this.cleanupPositionAutoUpdate = autoUpdate(this.triggerEl, this.listboxEl, () => {
956
+ void this.positionDropdown();
957
+ });
958
+ this.bodyPortalAutoUpdateActive = true;
959
+ }
960
+ stopBodyPortalAutoUpdate() {
961
+ var _a;
962
+ (_a = this.cleanupPositionAutoUpdate) === null || _a === void 0 ? void 0 : _a.call(this);
963
+ this.cleanupPositionAutoUpdate = undefined;
964
+ this.bodyPortalAutoUpdateActive = false;
965
+ }
966
+ getPortalMountRoot() {
967
+ var _a;
968
+ return (_a = this.findNearestDialogForPortal(this.el)) !== null && _a !== void 0 ? _a : document.body;
969
+ }
970
+ /**
971
+ * Resolves the native `<dialog>` to host the portaled listbox so it stays in the same top layer
972
+ * as `showModal()`. `Element.closest('dialog')` stops at shadow boundaries and can miss a
973
+ * dialog that only wraps slotted content; this walks assigned slots and shadow hosts, and
974
+ * falls back to `pds-modal`'s dialog when the combobox lives inside that subtree.
975
+ */
976
+ findNearestDialogForPortal(from) {
977
+ const seen = new Set();
978
+ let current = from;
979
+ while (current && !seen.has(current)) {
980
+ seen.add(current);
981
+ if (current.nodeType === Node.ELEMENT_NODE && current.localName === 'dialog') {
982
+ return current;
983
+ }
984
+ if (current.nodeType === Node.ELEMENT_NODE) {
985
+ const assigned = current.assignedSlot;
986
+ if (assigned) {
987
+ current = assigned;
988
+ continue;
989
+ }
990
+ }
991
+ const parent = current.parentNode;
992
+ if (parent) {
993
+ current = parent instanceof ShadowRoot ? parent.host : parent;
994
+ continue;
995
+ }
996
+ break;
997
+ }
998
+ const pineModal = from.closest('pds-modal');
999
+ if (pineModal) {
1000
+ const pineDialog = pineModal.querySelector('dialog');
1001
+ if (pineDialog) {
1002
+ return pineDialog;
1003
+ }
1004
+ }
1005
+ return null;
1006
+ }
1007
+ ensureBodyPortal() {
1008
+ if (this.portalEl !== null) {
1009
+ const target = this.getPortalMountRoot();
1010
+ if (this.portalEl.parentElement !== target) {
1011
+ target.appendChild(this.portalEl);
1012
+ }
1013
+ return this.portalEl;
1014
+ }
1015
+ this.portalEl = document.createElement('div');
1016
+ this.portalEl.className = 'pds-combobox-dropdown-portal';
1017
+ this.getPortalMountRoot().appendChild(this.portalEl);
1018
+ return this.portalEl;
1019
+ }
1020
+ syncBodyPortal() {
1021
+ if (!this.listboxEl) {
1022
+ return;
1023
+ }
1024
+ const portal = this.ensureBodyPortal();
1025
+ for (const stale of Array.from(portal.children)) {
1026
+ if (stale !== this.listboxEl) {
1027
+ stale.remove();
1028
+ }
1029
+ }
1030
+ if (this.listboxEl.parentElement !== portal) {
1031
+ portal.appendChild(this.listboxEl);
1032
+ void this.positionDropdown();
1033
+ this.startBodyPortalAutoUpdate();
1034
+ }
1035
+ }
1036
+ removeBodyPortal() {
1037
+ var _a;
1038
+ this.stopBodyPortalAutoUpdate();
1039
+ if ((_a = this.portalEl) === null || _a === void 0 ? void 0 : _a.parentNode) {
1040
+ this.portalEl.parentNode.removeChild(this.portalEl);
1041
+ }
1042
+ this.portalEl = null;
1043
+ if (this.listboxEl && !this.listboxEl.isConnected) {
1044
+ this.listboxEl = undefined;
834
1045
  }
835
1046
  }
836
1047
  /**
@@ -887,30 +1098,32 @@ export class PdsCombobox {
887
1098
  * Focus management helper - actually focuses the first option when opened via arrow keys
888
1099
  */
889
1100
  focusFirstOptionForArrowKeys() {
890
- if (this.isOpen) {
891
- // Set arrow-key navigation mode
1101
+ if (!this.isOpen) {
1102
+ return;
1103
+ }
1104
+ // Body-mounted listboxes stay outside modal focus traps; keep focus on the trigger.
1105
+ if (this.usesBodyPortal) {
892
1106
  this.isArrowKeyNavigationMode = true;
893
- const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
894
- if (selectableOptions.length > 0) {
895
- this.setInitialHighlightedIndex();
896
- // For arrow key navigation, actually focus the highlighted option
897
- if (this.listboxEl) {
898
- const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
899
- const highlightedOption = optionElements[this.highlightedIndex];
900
- if (highlightedOption) {
901
- // Remove tabindex from all options first
902
- optionElements.forEach(option => {
903
- option.setAttribute('tabindex', '-1');
904
- });
905
- // Set tabindex and focus on highlighted option
906
- highlightedOption.setAttribute('tabindex', '0');
907
- highlightedOption.focus();
908
- highlightedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
909
- }
1107
+ this.focusFirstOption();
1108
+ return;
1109
+ }
1110
+ this.isArrowKeyNavigationMode = true;
1111
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
1112
+ if (selectableOptions.length > 0) {
1113
+ this.setInitialHighlightedIndex();
1114
+ if (this.listboxEl) {
1115
+ const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
1116
+ const highlightedOption = optionElements[this.highlightedIndex];
1117
+ if (highlightedOption) {
1118
+ optionElements.forEach(option => {
1119
+ option.setAttribute('tabindex', '-1');
1120
+ });
1121
+ highlightedOption.setAttribute('tabindex', '0');
1122
+ highlightedOption.focus();
1123
+ highlightedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
910
1124
  }
911
- // Update aria-activedescendant on trigger
912
- this.updateAriaActiveDescendant();
913
1125
  }
1126
+ this.updateAriaActiveDescendant();
914
1127
  }
915
1128
  }
916
1129
  /**
@@ -925,8 +1138,8 @@ export class PdsCombobox {
925
1138
  if (currentOption) {
926
1139
  // Check if any option currently has focus OR if we're in arrow-key navigation mode
927
1140
  const hasOptionFocus = Array.from(optionElements).some(el => el === document.activeElement);
928
- if (hasOptionFocus || this.isArrowKeyNavigationMode) {
929
- // We're in arrow-key navigation mode, so actually move focus between options
1141
+ const shouldFocusOption = !this.usesBodyPortal && (hasOptionFocus || this.isArrowKeyNavigationMode);
1142
+ if (shouldFocusOption) {
930
1143
  optionElements.forEach(option => {
931
1144
  option.setAttribute('tabindex', '-1');
932
1145
  });
@@ -944,7 +1157,7 @@ export class PdsCombobox {
944
1157
  */
945
1158
  updateAriaActiveDescendant() {
946
1159
  if (this.triggerEl && this.highlightedIndex >= 0) {
947
- this.triggerEl.setAttribute('aria-activedescendant', `pds-combobox-option-${this.highlightedIndex}`);
1160
+ this.triggerEl.setAttribute('aria-activedescendant', this.optionDomId(this.highlightedIndex));
948
1161
  }
949
1162
  else if (this.triggerEl) {
950
1163
  this.triggerEl.removeAttribute('aria-activedescendant');
@@ -1086,17 +1299,18 @@ export class PdsCombobox {
1086
1299
  // The @Watch('selectedOption') will handle displayText, value, and form internals
1087
1300
  this.setSelectedOption(option);
1088
1301
  this.isOpen = false;
1302
+ this.clearExpandFilterList();
1089
1303
  this.pdsComboboxChange.emit({ value: option.value });
1090
1304
  }
1091
1305
  renderDropdown() {
1092
1306
  if (!this.isOpen) {
1093
1307
  return null;
1094
1308
  }
1095
- const hasSlottedEmpty = !!this.el.querySelector('[slot="empty"]');
1096
- const hasSlottedLoading = !!this.el.querySelector('[slot="loading"]');
1309
+ const hasSlottedEmpty = !this.usesBodyPortal && !!this.el.querySelector('[slot="empty"]');
1310
+ const hasSlottedLoading = !this.usesBodyPortal && !!this.el.querySelector('[slot="loading"]');
1097
1311
  let optionIndex = 0;
1098
1312
  const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
1099
- return (h("ul", { class: "pds-combobox__listbox", role: "listbox", id: "pds-combobox-listbox", "aria-label": this.label || 'Options', "aria-multiselectable": "false", ref: el => (this.listboxEl = el), onScroll: this.handleScroll }, this.loading && (h("li", { class: "pds-combobox__loading", role: "presentation" }, hasSlottedLoading ? (h("slot", { name: "loading" })) : (h("pds-loader", { size: "small" })))), !this.loading && this.filteredItems.length === 0 && (h("li", { class: "pds-combobox__empty", role: "presentation" }, hasSlottedEmpty ? (h("slot", { name: "empty" })) : (h("span", null, "No options found")))), this.filteredItems.map((item, itemIdx) => {
1313
+ return (h("ul", { class: "pds-combobox__listbox", role: "listbox", id: this.listboxId, "aria-label": this.label || 'Options', "aria-multiselectable": "false", ref: el => (this.listboxEl = el), onScroll: this.handleScroll }, this.loading && (h("li", { class: "pds-combobox__loading", role: "presentation" }, hasSlottedLoading ? (h("slot", { name: "loading" })) : (h("pds-loader", { size: "small" })))), !this.loading && this.filteredItems.length === 0 && (h("li", { class: "pds-combobox__empty", role: "presentation" }, hasSlottedEmpty ? (h("slot", { name: "empty" })) : (h("span", null, "No options found")))), this.filteredItems.map((item, itemIdx) => {
1100
1314
  if (item.tagName === 'OPTGROUP') {
1101
1315
  const optgroup = item;
1102
1316
  return (h("li", { key: `optgroup-${itemIdx}`, class: "pds-combobox__group-label", role: "presentation", "aria-label": optgroup.label }, optgroup.label));
@@ -1112,7 +1326,7 @@ export class PdsCombobox {
1112
1326
  const isLayout = this.isOptionLayout(option);
1113
1327
  const isChip = this.isOptionChip(option);
1114
1328
  const currentOptionIndex = optionIndex++;
1115
- return (h("li", { key: option.value, id: `pds-combobox-option-${currentOptionIndex}`, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-setsize": selectableOptions.length, "aria-posinset": currentOptionIndex + 1, "aria-label": isLayout || isChip ? option.getAttribute('aria-label') || this.getOptionLabel(option) : undefined, tabindex: isHighlighted ? '0' : '-1', class: {
1329
+ return (h("li", { key: option.value, id: this.optionDomId(currentOptionIndex), role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-setsize": selectableOptions.length, "aria-posinset": currentOptionIndex + 1, "aria-label": isLayout || isChip ? option.getAttribute('aria-label') || this.getOptionLabel(option) : undefined, tabindex: this.usesBodyPortal ? '-1' : isHighlighted ? '0' : '-1', class: {
1116
1330
  'pds-combobox__option': true,
1117
1331
  'pds-combobox__option--highlighted': isHighlighted,
1118
1332
  'pds-combobox__option--layout': isLayout,
@@ -1244,10 +1458,10 @@ export class PdsCombobox {
1244
1458
  ]
1245
1459
  .filter(Boolean)
1246
1460
  .join(' ');
1247
- return (h(Host, { key: '6a8f372c89a896d2d7e67661e84053c4c95b93c9' }, h("div", { key: '7b4747885bfa9aaa6e698bf13b6cdf9d4e77b3b1', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.label && !this.hideLabel && (h("label", { key: '46acd60080458de682516becc6144b38675a3f2d', htmlFor: this.componentId, class: "pds-combobox__label" }, this.label)), this.trigger === 'input' ? (h("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, h("input", { ref: el => {
1461
+ return (h(Host, { key: '3bb3331a7400bd505b900c1179e27239ca5286f0' }, h("div", { key: '645c6dee13177adb126f26288d0c3030e2d3d25f', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.label && !this.hideLabel && (h("label", { key: '6b84ecb6b542a30a3b78345f3aff2ca167b118ad', htmlFor: this.componentId, class: "pds-combobox__label" }, this.label)), this.trigger === 'input' ? (h("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, h("input", { ref: el => {
1248
1462
  this.inputEl = el;
1249
1463
  this.triggerEl = el;
1250
- }, class: "pds-combobox__input", type: "text", role: "combobox", "aria-autocomplete": "list", "aria-controls": "pds-combobox-listbox", "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? `pds-combobox-option-${this.highlightedIndex}` : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), h("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (h("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": "pds-combobox-listbox", "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? `pds-combobox-option-${this.highlightedIndex}` : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (h("div", { class: triggerClass, style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": "pds-combobox-listbox", "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? `pds-combobox-option-${this.highlightedIndex}` : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), h("div", { key: '4e4bd7cb7139416f3f59b1c9736a1fad85c09c24', style: { display: 'none' } }, h("slot", { key: '79e4c181d161a56acba68e1f7ca932369e938e10', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
1464
+ }, class: "pds-combobox__input", type: "text", role: "combobox", "aria-autocomplete": "list", "aria-controls": this.listboxId, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), h("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (h("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": this.listboxId, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (h("div", { class: triggerClass, style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": this.listboxId, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), h("div", { key: '8562c78172749eb3d77e0dfc3c87d7a8eabeb12f', style: { display: 'none' } }, h("slot", { key: '3004f1014cd050fdeeb06274bb5c36bb6c8bbbed', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
1251
1465
  }
1252
1466
  static get is() { return "pds-combobox"; }
1253
1467
  static get encapsulation() { return "shadow"; }
@@ -1414,6 +1628,29 @@ export class PdsCombobox {
1414
1628
  "attribute": "dropdown-width",
1415
1629
  "defaultValue": "'236px'"
1416
1630
  },
1631
+ "dropdownMount": {
1632
+ "type": "string",
1633
+ "mutable": false,
1634
+ "complexType": {
1635
+ "original": "'host' | 'body'",
1636
+ "resolved": "\"body\" | \"host\"",
1637
+ "references": {}
1638
+ },
1639
+ "required": false,
1640
+ "optional": false,
1641
+ "docs": {
1642
+ "tags": [{
1643
+ "name": "default",
1644
+ "text": "'host'"
1645
+ }],
1646
+ "text": "Where to mount the dropdown listbox (`host` or `body`, sometimes called \u201Cappend to body\u201D).\nUse `body` inside scrollable containers (for example modals) so the list is not clipped by\n`overflow: hidden` ancestors. The portal is appended to the nearest `<dialog>` when present\n(including `pds-modal` / `showModal()`), using a composed ascent so shadow DOM and slot\nboundaries do not hide the dialog from discovery; otherwise it is appended to `document.body`.\nKeyboard focus remains on the trigger via\n`aria-activedescendant` so modal focus traps continue to work. Custom `empty` and `loading`\nslots are not supported when `body` is used; the default empty and loading content is shown instead."
1647
+ },
1648
+ "getter": false,
1649
+ "setter": false,
1650
+ "reflect": false,
1651
+ "attribute": "dropdown-mount",
1652
+ "defaultValue": "'host'"
1653
+ },
1417
1654
  "hideLabel": {
1418
1655
  "type": "boolean",
1419
1656
  "mutable": false,
@@ -1487,7 +1724,7 @@ export class PdsCombobox {
1487
1724
  "name": "default",
1488
1725
  "text": "'filter'"
1489
1726
  }],
1490
- "text": "Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options)."
1727
+ "text": "Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options).\nIn filter mode, reopening the menu while the input still shows the label of the selected option temporarily lists\nall options until you type (so you can switch to a different choice without clearing the field first)."
1491
1728
  },
1492
1729
  "getter": false,
1493
1730
  "setter": false,
@@ -1982,6 +2219,9 @@ export class PdsCombobox {
1982
2219
  static get elementRef() { return "el"; }
1983
2220
  static get watchers() {
1984
2221
  return [{
2222
+ "propName": "isOpen",
2223
+ "methodName": "isOpenChanged"
2224
+ }, {
1985
2225
  "propName": "debounce",
1986
2226
  "methodName": "setupDebounce"
1987
2227
  }, {