@pine-ds/core 3.7.0 → 3.8.1

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 (604) hide show
  1. package/components/form.js +16 -1
  2. package/components/form.js.map +1 -1
  3. package/components/index2.js +1 -1
  4. package/components/index2.js.map +1 -1
  5. package/components/mock-pds-modal.js +1 -1
  6. package/components/mock-pds-modal.js.map +1 -1
  7. package/components/pds-button2.js +1 -1
  8. package/components/pds-button2.js.map +1 -1
  9. package/components/pds-checkbox2.js +7 -4
  10. package/components/pds-checkbox2.js.map +1 -1
  11. package/components/pds-chip.js +1 -100
  12. package/components/pds-chip.js.map +1 -1
  13. package/components/pds-chip2.js +105 -0
  14. package/components/pds-chip2.js.map +1 -0
  15. package/components/pds-combobox.js +414 -43
  16. package/components/pds-combobox.js.map +1 -1
  17. package/components/pds-copytext.js +3 -3
  18. package/components/pds-copytext.js.map +1 -1
  19. package/components/pds-dropdown-menu.js +1 -1
  20. package/components/pds-dropdown-menu.js.map +1 -1
  21. package/components/pds-filter.js +3 -3
  22. package/components/pds-filter.js.map +1 -1
  23. package/components/pds-input.js +1 -1
  24. package/components/pds-input.js.map +1 -1
  25. package/components/pds-modal.js +1 -1
  26. package/components/pds-modal.js.map +1 -1
  27. package/components/pds-popover.js +123 -15
  28. package/components/pds-popover.js.map +1 -1
  29. package/components/pds-radio.js +10 -4
  30. package/components/pds-radio.js.map +1 -1
  31. package/components/pds-select.js +21 -5
  32. package/components/pds-select.js.map +1 -1
  33. package/components/pds-switch.js +7 -4
  34. package/components/pds-switch.js.map +1 -1
  35. package/components/pds-tab.js +1 -1
  36. package/components/pds-tab.js.map +1 -1
  37. package/components/pds-table-cell2.js +1 -1
  38. package/components/pds-table-cell2.js.map +1 -1
  39. package/components/pds-table-head-cell2.js +1 -1
  40. package/components/pds-table-head-cell2.js.map +1 -1
  41. package/components/pds-table-head.js +1 -1
  42. package/components/pds-table-head.js.map +1 -1
  43. package/components/pds-table-row.js +1 -1
  44. package/components/pds-table-row.js.map +1 -1
  45. package/components/pds-table.js +1 -1
  46. package/components/pds-table.js.map +1 -1
  47. package/components/pds-tabs.js +14 -4
  48. package/components/pds-tabs.js.map +1 -1
  49. package/components/pds-textarea.js +9 -6
  50. package/components/pds-textarea.js.map +1 -1
  51. package/components/pds-tooltip.js +4 -4
  52. package/components/pds-tooltip.js.map +1 -1
  53. package/dist/cjs/{form-Bx4nzJBo.js → form-hmpgbT1I.js} +18 -2
  54. package/dist/cjs/form-hmpgbT1I.js.map +1 -0
  55. package/dist/cjs/{index-CTirFLR-.js → index-DtnvzYhe.js} +3 -3
  56. package/dist/cjs/index-DtnvzYhe.js.map +1 -0
  57. package/dist/cjs/loader.cjs.js +1 -1
  58. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  59. package/dist/cjs/mock-pds-modal.cjs.entry.js.map +1 -1
  60. package/dist/cjs/mock-pds-modal.entry.cjs.js.map +1 -1
  61. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  62. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  63. package/dist/cjs/pds-button.cjs.entry.js +2 -2
  64. package/dist/cjs/pds-button.cjs.entry.js.map +1 -1
  65. package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
  66. package/dist/cjs/pds-checkbox.cjs.entry.js +8 -5
  67. package/dist/cjs/pds-checkbox.cjs.entry.js.map +1 -1
  68. package/dist/cjs/pds-checkbox.entry.cjs.js.map +1 -1
  69. package/dist/cjs/pds-chip.cjs.entry.js +3 -3
  70. package/dist/cjs/pds-chip.cjs.entry.js.map +1 -1
  71. package/dist/cjs/pds-chip.entry.cjs.js.map +1 -1
  72. package/dist/cjs/pds-combobox.cjs.entry.js +398 -40
  73. package/dist/cjs/pds-combobox.cjs.entry.js.map +1 -1
  74. package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
  75. package/dist/cjs/pds-copytext.cjs.entry.js +4 -4
  76. package/dist/cjs/pds-copytext.cjs.entry.js.map +1 -1
  77. package/dist/cjs/pds-copytext.entry.cjs.js.map +1 -1
  78. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  79. package/dist/cjs/pds-dropdown-menu.cjs.entry.js.map +1 -1
  80. package/dist/cjs/pds-dropdown-menu.entry.cjs.js.map +1 -1
  81. package/dist/cjs/pds-filter.cjs.entry.js +4 -4
  82. package/dist/cjs/pds-filter.cjs.entry.js.map +1 -1
  83. package/dist/cjs/pds-filter.entry.cjs.js.map +1 -1
  84. package/dist/cjs/pds-input.cjs.entry.js +3 -3
  85. package/dist/cjs/pds-input.cjs.entry.js.map +1 -1
  86. package/dist/cjs/pds-input.entry.cjs.js.map +1 -1
  87. package/dist/cjs/pds-link.cjs.entry.js +1 -1
  88. package/dist/cjs/pds-modal.cjs.entry.js +1 -1
  89. package/dist/cjs/pds-modal.cjs.entry.js.map +1 -1
  90. package/dist/cjs/pds-modal.entry.cjs.js.map +1 -1
  91. package/dist/cjs/pds-popover.cjs.entry.js +117 -12
  92. package/dist/cjs/pds-popover.cjs.entry.js.map +1 -1
  93. package/dist/cjs/pds-popover.entry.cjs.js.map +1 -1
  94. package/dist/cjs/pds-radio.cjs.entry.js +11 -5
  95. package/dist/cjs/pds-radio.cjs.entry.js.map +1 -1
  96. package/dist/cjs/pds-radio.entry.cjs.js.map +1 -1
  97. package/dist/cjs/pds-select.cjs.entry.js +20 -5
  98. package/dist/cjs/pds-select.cjs.entry.js.map +1 -1
  99. package/dist/cjs/pds-select.entry.cjs.js.map +1 -1
  100. package/dist/cjs/pds-sortable-item.cjs.entry.js +1 -1
  101. package/dist/cjs/pds-switch.cjs.entry.js +8 -5
  102. package/dist/cjs/pds-switch.cjs.entry.js.map +1 -1
  103. package/dist/cjs/pds-switch.entry.cjs.js.map +1 -1
  104. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  105. package/dist/cjs/pds-tab.cjs.entry.js.map +1 -1
  106. package/dist/cjs/pds-tab.entry.cjs.js.map +1 -1
  107. package/dist/cjs/pds-table-cell.cjs.entry.js +1 -1
  108. package/dist/cjs/pds-table-cell.cjs.entry.js.map +1 -1
  109. package/dist/cjs/pds-table-cell.entry.cjs.js.map +1 -1
  110. package/dist/cjs/pds-table-head-cell.cjs.entry.js +2 -2
  111. package/dist/cjs/pds-table-head-cell.cjs.entry.js.map +1 -1
  112. package/dist/cjs/pds-table-head-cell.entry.cjs.js.map +1 -1
  113. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  114. package/dist/cjs/pds-table-head.cjs.entry.js.map +1 -1
  115. package/dist/cjs/pds-table-head.entry.cjs.js.map +1 -1
  116. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  117. package/dist/cjs/pds-table-row.cjs.entry.js.map +1 -1
  118. package/dist/cjs/pds-table-row.entry.cjs.js.map +1 -1
  119. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  120. package/dist/cjs/pds-table.cjs.entry.js.map +1 -1
  121. package/dist/cjs/pds-table.entry.cjs.js.map +1 -1
  122. package/dist/cjs/pds-tabs.cjs.entry.js +14 -4
  123. package/dist/cjs/pds-tabs.cjs.entry.js.map +1 -1
  124. package/dist/cjs/pds-tabs.entry.cjs.js.map +1 -1
  125. package/dist/cjs/pds-textarea.cjs.entry.js +10 -7
  126. package/dist/cjs/pds-textarea.cjs.entry.js.map +1 -1
  127. package/dist/cjs/pds-textarea.entry.cjs.js.map +1 -1
  128. package/dist/cjs/pds-tooltip.cjs.entry.js +4 -4
  129. package/dist/cjs/pds-tooltip.cjs.entry.js.map +1 -1
  130. package/dist/cjs/pds-tooltip.entry.cjs.js.map +1 -1
  131. package/dist/cjs/pine-core.cjs.js +1 -1
  132. package/dist/collection/components/pds-button/pds-button.css +6 -3
  133. package/dist/collection/components/pds-checkbox/pds-checkbox.js +7 -4
  134. package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +1 -1
  135. package/dist/collection/components/pds-chip/pds-chip.css +2 -2
  136. package/dist/collection/components/pds-chip/pds-chip.js +17 -5
  137. package/dist/collection/components/pds-chip/pds-chip.js.map +1 -1
  138. package/dist/collection/components/pds-combobox/pds-combobox.css +175 -4
  139. package/dist/collection/components/pds-combobox/pds-combobox.js +516 -43
  140. package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
  141. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +79 -2
  142. package/dist/collection/components/pds-copytext/pds-copytext.css +6 -3
  143. package/dist/collection/components/pds-copytext/pds-copytext.js +2 -2
  144. package/dist/collection/components/pds-copytext/pds-copytext.js.map +1 -1
  145. package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +1 -1
  146. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +1 -1
  147. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +1 -1
  148. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +2 -2
  149. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js.map +1 -1
  150. package/dist/collection/components/pds-input/pds-input.css +18 -3
  151. package/dist/collection/components/pds-input/stories/pds-input.stories.js +42 -0
  152. package/dist/collection/components/pds-modal/pds-modal.css +2 -2
  153. package/dist/collection/components/pds-popover/pds-popover.css +3 -0
  154. package/dist/collection/components/pds-popover/pds-popover.js +226 -17
  155. package/dist/collection/components/pds-popover/pds-popover.js.map +1 -1
  156. package/dist/collection/components/pds-popover/popover-interface.js +2 -0
  157. package/dist/collection/components/pds-popover/popover-interface.js.map +1 -0
  158. package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +1 -1
  159. package/dist/collection/components/pds-radio/pds-radio.js +10 -4
  160. package/dist/collection/components/pds-radio/pds-radio.js.map +1 -1
  161. package/dist/collection/components/pds-select/pds-select.css +1 -1
  162. package/dist/collection/components/pds-select/pds-select.js +19 -2
  163. package/dist/collection/components/pds-select/pds-select.js.map +1 -1
  164. package/dist/collection/components/pds-switch/pds-switch.js +7 -4
  165. package/dist/collection/components/pds-switch/pds-switch.js.map +1 -1
  166. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +1 -1
  167. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.css +1 -1
  168. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +1 -1
  169. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.css +1 -1
  170. package/dist/collection/components/pds-table/pds-table.css +1 -1
  171. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +1 -2
  172. package/dist/collection/components/pds-tabs/pds-tabs.js +14 -4
  173. package/dist/collection/components/pds-tabs/pds-tabs.js.map +1 -1
  174. package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +1 -1
  175. package/dist/collection/components/pds-textarea/pds-textarea.css +1 -1
  176. package/dist/collection/components/pds-textarea/pds-textarea.js +8 -5
  177. package/dist/collection/components/pds-textarea/pds-textarea.js.map +1 -1
  178. package/dist/collection/components/pds-tooltip/pds-tooltip.css +1 -1
  179. package/dist/collection/components/pds-tooltip/pds-tooltip.js +3 -3
  180. package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +1 -1
  181. package/dist/collection/utils/form.js +15 -0
  182. package/dist/collection/utils/form.js.map +1 -1
  183. package/dist/collection/utils/types.js.map +1 -1
  184. package/dist/docs.json +341 -17
  185. package/dist/esm/form-DwjNklzi.js +47 -0
  186. package/dist/esm/form-DwjNklzi.js.map +1 -0
  187. package/dist/esm/{index-D4MkIUXU.js → index-D4zJBIgl.js} +3 -3
  188. package/dist/esm/index-D4zJBIgl.js.map +1 -0
  189. package/dist/esm/loader.js +1 -1
  190. package/dist/esm/mock-pds-modal.entry.js +1 -1
  191. package/dist/esm/mock-pds-modal.entry.js.map +1 -1
  192. package/dist/esm/pds-accordion.entry.js +1 -1
  193. package/dist/esm/pds-avatar.entry.js +1 -1
  194. package/dist/esm/pds-button.entry.js +2 -2
  195. package/dist/esm/pds-button.entry.js.map +1 -1
  196. package/dist/esm/pds-checkbox.entry.js +8 -5
  197. package/dist/esm/pds-checkbox.entry.js.map +1 -1
  198. package/dist/esm/pds-chip.entry.js +3 -3
  199. package/dist/esm/pds-chip.entry.js.map +1 -1
  200. package/dist/esm/pds-combobox.entry.js +398 -40
  201. package/dist/esm/pds-combobox.entry.js.map +1 -1
  202. package/dist/esm/pds-copytext.entry.js +4 -4
  203. package/dist/esm/pds-copytext.entry.js.map +1 -1
  204. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  205. package/dist/esm/pds-dropdown-menu.entry.js.map +1 -1
  206. package/dist/esm/pds-filter.entry.js +4 -4
  207. package/dist/esm/pds-filter.entry.js.map +1 -1
  208. package/dist/esm/pds-input.entry.js +3 -3
  209. package/dist/esm/pds-input.entry.js.map +1 -1
  210. package/dist/esm/pds-link.entry.js +1 -1
  211. package/dist/esm/pds-modal.entry.js +1 -1
  212. package/dist/esm/pds-modal.entry.js.map +1 -1
  213. package/dist/esm/pds-popover.entry.js +118 -13
  214. package/dist/esm/pds-popover.entry.js.map +1 -1
  215. package/dist/esm/pds-radio.entry.js +12 -6
  216. package/dist/esm/pds-radio.entry.js.map +1 -1
  217. package/dist/esm/pds-select.entry.js +20 -5
  218. package/dist/esm/pds-select.entry.js.map +1 -1
  219. package/dist/esm/pds-sortable-item.entry.js +1 -1
  220. package/dist/esm/pds-switch.entry.js +8 -5
  221. package/dist/esm/pds-switch.entry.js.map +1 -1
  222. package/dist/esm/pds-tab.entry.js +1 -1
  223. package/dist/esm/pds-tab.entry.js.map +1 -1
  224. package/dist/esm/pds-table-cell.entry.js +1 -1
  225. package/dist/esm/pds-table-cell.entry.js.map +1 -1
  226. package/dist/esm/pds-table-head-cell.entry.js +2 -2
  227. package/dist/esm/pds-table-head-cell.entry.js.map +1 -1
  228. package/dist/esm/pds-table-head.entry.js +1 -1
  229. package/dist/esm/pds-table-head.entry.js.map +1 -1
  230. package/dist/esm/pds-table-row.entry.js +1 -1
  231. package/dist/esm/pds-table-row.entry.js.map +1 -1
  232. package/dist/esm/pds-table.entry.js +1 -1
  233. package/dist/esm/pds-table.entry.js.map +1 -1
  234. package/dist/esm/pds-tabs.entry.js +14 -4
  235. package/dist/esm/pds-tabs.entry.js.map +1 -1
  236. package/dist/esm/pds-textarea.entry.js +10 -7
  237. package/dist/esm/pds-textarea.entry.js.map +1 -1
  238. package/dist/esm/pds-tooltip.entry.js +4 -4
  239. package/dist/esm/pds-tooltip.entry.js.map +1 -1
  240. package/dist/esm/pine-core.js +1 -1
  241. package/dist/esm-es5/form-DwjNklzi.js +2 -0
  242. package/dist/esm-es5/form-DwjNklzi.js.map +1 -0
  243. package/dist/esm-es5/{index-D4MkIUXU.js → index-D4zJBIgl.js} +1 -1
  244. package/dist/esm-es5/index-D4zJBIgl.js.map +1 -0
  245. package/dist/esm-es5/loader.js +1 -1
  246. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  247. package/dist/esm-es5/mock-pds-modal.entry.js.map +1 -1
  248. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  249. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  250. package/dist/esm-es5/pds-button.entry.js +1 -1
  251. package/dist/esm-es5/pds-button.entry.js.map +1 -1
  252. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  253. package/dist/esm-es5/pds-checkbox.entry.js.map +1 -1
  254. package/dist/esm-es5/pds-chip.entry.js +1 -1
  255. package/dist/esm-es5/pds-chip.entry.js.map +1 -1
  256. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  257. package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
  258. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  259. package/dist/esm-es5/pds-copytext.entry.js.map +1 -1
  260. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  261. package/dist/esm-es5/pds-dropdown-menu.entry.js.map +1 -1
  262. package/dist/esm-es5/pds-filter.entry.js +1 -1
  263. package/dist/esm-es5/pds-filter.entry.js.map +1 -1
  264. package/dist/esm-es5/pds-input.entry.js +1 -1
  265. package/dist/esm-es5/pds-input.entry.js.map +1 -1
  266. package/dist/esm-es5/pds-link.entry.js +1 -1
  267. package/dist/esm-es5/pds-modal.entry.js +1 -1
  268. package/dist/esm-es5/pds-modal.entry.js.map +1 -1
  269. package/dist/esm-es5/pds-popover.entry.js +1 -1
  270. package/dist/esm-es5/pds-popover.entry.js.map +1 -1
  271. package/dist/esm-es5/pds-radio.entry.js +1 -1
  272. package/dist/esm-es5/pds-radio.entry.js.map +1 -1
  273. package/dist/esm-es5/pds-select.entry.js +1 -1
  274. package/dist/esm-es5/pds-select.entry.js.map +1 -1
  275. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  276. package/dist/esm-es5/pds-switch.entry.js +1 -1
  277. package/dist/esm-es5/pds-switch.entry.js.map +1 -1
  278. package/dist/esm-es5/pds-tab.entry.js +1 -1
  279. package/dist/esm-es5/pds-tab.entry.js.map +1 -1
  280. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  281. package/dist/esm-es5/pds-table-cell.entry.js.map +1 -1
  282. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-head-cell.entry.js.map +1 -1
  284. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  285. package/dist/esm-es5/pds-table-head.entry.js.map +1 -1
  286. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  287. package/dist/esm-es5/pds-table-row.entry.js.map +1 -1
  288. package/dist/esm-es5/pds-table.entry.js +1 -1
  289. package/dist/esm-es5/pds-table.entry.js.map +1 -1
  290. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  291. package/dist/esm-es5/pds-tabs.entry.js.map +1 -1
  292. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  293. package/dist/esm-es5/pds-textarea.entry.js.map +1 -1
  294. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  295. package/dist/esm-es5/pds-tooltip.entry.js.map +1 -1
  296. package/dist/esm-es5/pine-core.js +1 -1
  297. package/dist/pine-core/mock-pds-modal.entry.esm.js.map +1 -1
  298. package/dist/pine-core/p-00346c62.system.entry.js +2 -0
  299. package/dist/pine-core/p-00346c62.system.entry.js.map +1 -0
  300. package/dist/pine-core/{p-8ded79aa.system.entry.js → p-0486ecc6.system.entry.js} +2 -2
  301. package/dist/pine-core/{p-8ded79aa.system.entry.js.map → p-0486ecc6.system.entry.js.map} +1 -1
  302. package/dist/pine-core/{p-af56cb57.entry.js → p-100de2b7.entry.js} +2 -2
  303. package/dist/pine-core/p-1b932ee3.entry.js +2 -0
  304. package/dist/pine-core/p-1b932ee3.entry.js.map +1 -0
  305. package/dist/pine-core/p-20466115.entry.js +2 -0
  306. package/dist/pine-core/p-20466115.entry.js.map +1 -0
  307. package/dist/pine-core/{p-72d87dc6.system.entry.js → p-2054b5cb.system.entry.js} +2 -2
  308. package/dist/pine-core/{p-c0601420.system.entry.js → p-2aab28b1.system.entry.js} +2 -2
  309. package/dist/pine-core/p-3dce3bc0.system.entry.js +2 -0
  310. package/dist/pine-core/p-3dce3bc0.system.entry.js.map +1 -0
  311. package/dist/pine-core/p-45d574f1.system.entry.js +2 -0
  312. package/dist/pine-core/p-45d574f1.system.entry.js.map +1 -0
  313. package/dist/pine-core/p-465e3418.system.entry.js +2 -0
  314. package/dist/pine-core/p-465e3418.system.entry.js.map +1 -0
  315. package/dist/pine-core/p-4xv5UVkx.system.js.map +1 -0
  316. package/dist/pine-core/p-538b3902.system.entry.js +2 -0
  317. package/dist/pine-core/p-538b3902.system.entry.js.map +1 -0
  318. package/dist/pine-core/p-61a25ab2.entry.js +2 -0
  319. package/dist/pine-core/p-61a25ab2.entry.js.map +1 -0
  320. package/dist/pine-core/p-6381a811.system.entry.js +4 -0
  321. package/dist/pine-core/p-6381a811.system.entry.js.map +1 -0
  322. package/dist/pine-core/p-6c36cab6.entry.js +2 -0
  323. package/dist/pine-core/p-6c36cab6.entry.js.map +1 -0
  324. package/dist/pine-core/p-6ed297cb.entry.js +2 -0
  325. package/dist/pine-core/p-6ed297cb.entry.js.map +1 -0
  326. package/dist/pine-core/p-708e963c.system.entry.js +2 -0
  327. package/dist/pine-core/p-708e963c.system.entry.js.map +1 -0
  328. package/dist/pine-core/{p-896e2f1b.entry.js → p-725c350c.entry.js} +2 -2
  329. package/dist/pine-core/{p-896e2f1b.entry.js.map → p-725c350c.entry.js.map} +1 -1
  330. package/dist/pine-core/p-75187352.system.entry.js +2 -0
  331. package/dist/pine-core/p-75187352.system.entry.js.map +1 -0
  332. package/dist/pine-core/p-79422986.entry.js +2 -0
  333. package/dist/pine-core/p-79422986.entry.js.map +1 -0
  334. package/dist/pine-core/p-81bc089e.entry.js +2 -0
  335. package/dist/pine-core/p-81bc089e.entry.js.map +1 -0
  336. package/dist/pine-core/p-85c41629.entry.js +2 -0
  337. package/dist/pine-core/p-85c41629.entry.js.map +1 -0
  338. package/dist/pine-core/p-86263a62.entry.js +2 -0
  339. package/dist/pine-core/p-86263a62.entry.js.map +1 -0
  340. package/dist/pine-core/p-87ed43d5.entry.js +2 -0
  341. package/dist/pine-core/p-87ed43d5.entry.js.map +1 -0
  342. package/dist/pine-core/{p-a54d6a53.entry.js → p-88773b86.entry.js} +2 -2
  343. package/dist/pine-core/p-8b5fc4b4.system.entry.js +2 -0
  344. package/dist/pine-core/p-8b5fc4b4.system.entry.js.map +1 -0
  345. package/dist/pine-core/p-94183716.entry.js +2 -0
  346. package/dist/pine-core/p-94183716.entry.js.map +1 -0
  347. package/dist/pine-core/p-9766923f.entry.js +2 -0
  348. package/dist/pine-core/p-9766923f.entry.js.map +1 -0
  349. package/dist/pine-core/p-9b335a9f.entry.js +2 -0
  350. package/dist/pine-core/p-9b335a9f.entry.js.map +1 -0
  351. package/dist/pine-core/p-9c579956.system.entry.js +2 -0
  352. package/dist/pine-core/p-9c579956.system.entry.js.map +1 -0
  353. package/dist/pine-core/p-9cf2b7a6.entry.js +2 -0
  354. package/dist/pine-core/p-9cf2b7a6.entry.js.map +1 -0
  355. package/dist/pine-core/{p-COwpA8ab.system.js.map → p-B-Doh1Wu.system.js.map} +1 -1
  356. package/dist/pine-core/{p-BSkbMuB5.system.js → p-BG99uNIQ.system.js} +1 -1
  357. package/dist/pine-core/p-BG99uNIQ.system.js.map +1 -0
  358. package/dist/pine-core/p-BHavepTY.system.js +2 -0
  359. package/dist/pine-core/p-BHavepTY.system.js.map +1 -0
  360. package/dist/pine-core/p-BLC5kuro.system.js.map +1 -0
  361. package/dist/pine-core/p-BPjnTOEL.system.js +1 -1
  362. package/dist/pine-core/{p-X5M4eshC.system.js.map → p-BRIdBthP.system.js.map} +1 -1
  363. package/dist/pine-core/p-BVDuy7iI.system.js.map +1 -0
  364. package/dist/pine-core/{p-B57Bybw-.system.js.map → p-BkPtASB1.system.js.map} +1 -1
  365. package/dist/pine-core/p-Bkfqi7zE.system.js.map +1 -0
  366. package/dist/pine-core/p-C1KChp5Q.system.js.map +1 -0
  367. package/dist/pine-core/p-C2W-sHx5.system.js.map +1 -0
  368. package/dist/pine-core/p-CIBXMJd-.system.js.map +1 -0
  369. package/dist/pine-core/p-CJNB_wrl.system.js.map +1 -0
  370. package/dist/pine-core/p-CSa_b_JX.system.js.map +1 -0
  371. package/dist/pine-core/p-Cid662up.system.js.map +1 -0
  372. package/dist/pine-core/p-Cqzmj3D8.system.js.map +1 -0
  373. package/dist/pine-core/p-Cxlv_2hD.system.js.map +1 -0
  374. package/dist/pine-core/p-D0foS5EP.system.js.map +1 -0
  375. package/dist/pine-core/{p-D4MkIUXU.js → p-D4zJBIgl.js} +1 -1
  376. package/dist/pine-core/p-D4zJBIgl.js.map +1 -0
  377. package/dist/pine-core/p-DCjZr2HA.system.js.map +1 -0
  378. package/dist/pine-core/p-DN3VK2yy.system.js.map +1 -0
  379. package/dist/pine-core/{p-DgE9ds9o.system.js.map → p-DOqVoXeA.system.js.map} +1 -1
  380. package/dist/pine-core/p-DW3lkDNz.system.js.map +1 -0
  381. package/dist/pine-core/p-DfrSuf6X.system.js.map +1 -0
  382. package/dist/pine-core/p-DpemOPFJ.system.js.map +1 -0
  383. package/dist/pine-core/p-DpzRSULT.system.js.map +1 -0
  384. package/dist/pine-core/p-DtdXdmNp.system.js.map +1 -0
  385. package/dist/pine-core/p-DwjNklzi.js +2 -0
  386. package/dist/pine-core/p-DwjNklzi.js.map +1 -0
  387. package/dist/pine-core/p-GrmqKqN8.system.js.map +1 -0
  388. package/dist/pine-core/p-HHZU8rBT.system.js.map +1 -0
  389. package/dist/pine-core/p-a2708028.entry.js +2 -0
  390. package/dist/pine-core/p-a2708028.entry.js.map +1 -0
  391. package/dist/pine-core/{p-46820152.entry.js → p-a3785977.entry.js} +2 -2
  392. package/dist/pine-core/p-a707a7da.system.entry.js +2 -0
  393. package/dist/pine-core/p-a707a7da.system.entry.js.map +1 -0
  394. package/dist/pine-core/p-acd87a10.entry.js +2 -0
  395. package/dist/pine-core/p-acd87a10.entry.js.map +1 -0
  396. package/dist/pine-core/p-ae4ec5cf.system.entry.js +2 -0
  397. package/dist/pine-core/p-ae4ec5cf.system.entry.js.map +1 -0
  398. package/dist/pine-core/p-b23dd01c.entry.js +2 -0
  399. package/dist/pine-core/p-b23dd01c.entry.js.map +1 -0
  400. package/dist/pine-core/p-b9aafec7.system.entry.js +2 -0
  401. package/dist/pine-core/p-b9aafec7.system.entry.js.map +1 -0
  402. package/dist/pine-core/p-bac9fcfa.entry.js +2 -0
  403. package/dist/pine-core/p-bac9fcfa.entry.js.map +1 -0
  404. package/dist/pine-core/p-c3579585.system.entry.js +2 -0
  405. package/dist/pine-core/p-c3579585.system.entry.js.map +1 -0
  406. package/dist/pine-core/p-cffc98ae.entry.js +3 -0
  407. package/dist/pine-core/p-cffc98ae.entry.js.map +1 -0
  408. package/dist/pine-core/{p-559b4ebc.entry.js → p-d1b27fa4.entry.js} +2 -2
  409. package/dist/pine-core/p-d2b15290.system.entry.js +2 -0
  410. package/dist/pine-core/p-d2b15290.system.entry.js.map +1 -0
  411. package/dist/pine-core/p-d4d22aee.entry.js +2 -0
  412. package/dist/pine-core/p-d4d22aee.entry.js.map +1 -0
  413. package/dist/pine-core/p-d69f0f51.system.entry.js +2 -0
  414. package/dist/pine-core/p-d69f0f51.system.entry.js.map +1 -0
  415. package/dist/pine-core/{p-c63e7909.system.entry.js → p-dace69e7.system.entry.js} +2 -2
  416. package/dist/pine-core/p-e34c1224.system.entry.js +2 -0
  417. package/dist/pine-core/p-e34c1224.system.entry.js.map +1 -0
  418. package/dist/pine-core/p-e5adbf74.system.entry.js +2 -0
  419. package/dist/pine-core/p-e5adbf74.system.entry.js.map +1 -0
  420. package/dist/pine-core/p-e6085566.system.entry.js +2 -0
  421. package/dist/pine-core/p-e6085566.system.entry.js.map +1 -0
  422. package/dist/pine-core/p-e683e197.system.entry.js +2 -0
  423. package/dist/pine-core/p-e683e197.system.entry.js.map +1 -0
  424. package/dist/pine-core/p-e6b051e8.system.entry.js +2 -0
  425. package/dist/pine-core/p-e6b051e8.system.entry.js.map +1 -0
  426. package/dist/pine-core/{p-ab4307c7.system.entry.js → p-e702a8dc.system.entry.js} +2 -2
  427. package/dist/pine-core/p-f15cd180.entry.js +2 -0
  428. package/dist/pine-core/p-f15cd180.entry.js.map +1 -0
  429. package/dist/pine-core/p-f6d0bd39.entry.js +2 -0
  430. package/dist/pine-core/p-f6d0bd39.entry.js.map +1 -0
  431. package/dist/pine-core/p-f92d7570.system.entry.js +2 -0
  432. package/dist/pine-core/p-f92d7570.system.entry.js.map +1 -0
  433. package/dist/pine-core/{p-d325287b.entry.js.map → p-ozqEY4Zc.system.js.map} +1 -1
  434. package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
  435. package/dist/pine-core/pds-checkbox.entry.esm.js.map +1 -1
  436. package/dist/pine-core/pds-chip.entry.esm.js.map +1 -1
  437. package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
  438. package/dist/pine-core/pds-copytext.entry.esm.js.map +1 -1
  439. package/dist/pine-core/pds-dropdown-menu.entry.esm.js.map +1 -1
  440. package/dist/pine-core/pds-filter.entry.esm.js.map +1 -1
  441. package/dist/pine-core/pds-input.entry.esm.js.map +1 -1
  442. package/dist/pine-core/pds-modal.entry.esm.js.map +1 -1
  443. package/dist/pine-core/pds-popover.entry.esm.js.map +1 -1
  444. package/dist/pine-core/pds-radio.entry.esm.js.map +1 -1
  445. package/dist/pine-core/pds-select.entry.esm.js.map +1 -1
  446. package/dist/pine-core/pds-switch.entry.esm.js.map +1 -1
  447. package/dist/pine-core/pds-tab.entry.esm.js.map +1 -1
  448. package/dist/pine-core/pds-table-cell.entry.esm.js.map +1 -1
  449. package/dist/pine-core/pds-table-head-cell.entry.esm.js.map +1 -1
  450. package/dist/pine-core/pds-table-head.entry.esm.js.map +1 -1
  451. package/dist/pine-core/pds-table-row.entry.esm.js.map +1 -1
  452. package/dist/pine-core/pds-table.entry.esm.js.map +1 -1
  453. package/dist/pine-core/pds-tabs.entry.esm.js.map +1 -1
  454. package/dist/pine-core/pds-textarea.entry.esm.js.map +1 -1
  455. package/dist/pine-core/pds-tooltip.entry.esm.js.map +1 -1
  456. package/dist/pine-core/pine-core.css +1 -1
  457. package/dist/pine-core/pine-core.esm.js +1 -1
  458. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +1 -0
  459. package/dist/types/components/pds-chip/pds-chip.d.ts +3 -2
  460. package/dist/types/components/pds-combobox/pds-combobox.d.ts +56 -2
  461. package/dist/types/components/pds-popover/pds-popover.d.ts +33 -2
  462. package/dist/types/components/pds-popover/popover-interface.d.ts +8 -0
  463. package/dist/types/components/pds-radio/pds-radio.d.ts +3 -0
  464. package/dist/types/components/pds-select/pds-select.d.ts +6 -0
  465. package/dist/types/components/pds-switch/pds-switch.d.ts +1 -0
  466. package/dist/types/components/pds-textarea/pds-textarea.d.ts +1 -0
  467. package/dist/types/components.d.ts +94 -10
  468. package/dist/types/utils/form.d.ts +9 -0
  469. package/dist/types/utils/types.d.ts +2 -0
  470. package/hydrate/index.js +629 -101
  471. package/hydrate/index.mjs +629 -101
  472. package/package.json +2 -2
  473. package/dist/cjs/form-Bx4nzJBo.js.map +0 -1
  474. package/dist/cjs/index-CTirFLR-.js.map +0 -1
  475. package/dist/esm/form-DTL_39D_.js +0 -32
  476. package/dist/esm/form-DTL_39D_.js.map +0 -1
  477. package/dist/esm/index-D4MkIUXU.js.map +0 -1
  478. package/dist/esm-es5/form-DTL_39D_.js +0 -2
  479. package/dist/esm-es5/form-DTL_39D_.js.map +0 -1
  480. package/dist/esm-es5/index-D4MkIUXU.js.map +0 -1
  481. package/dist/pine-core/p-0075bbbe.system.entry.js +0 -2
  482. package/dist/pine-core/p-0075bbbe.system.entry.js.map +0 -1
  483. package/dist/pine-core/p-0975b749.system.entry.js +0 -2
  484. package/dist/pine-core/p-0975b749.system.entry.js.map +0 -1
  485. package/dist/pine-core/p-0befa8f0.entry.js +0 -2
  486. package/dist/pine-core/p-0befa8f0.entry.js.map +0 -1
  487. package/dist/pine-core/p-0d18171c.system.entry.js +0 -2
  488. package/dist/pine-core/p-0d18171c.system.entry.js.map +0 -1
  489. package/dist/pine-core/p-1773aeac.system.entry.js +0 -2
  490. package/dist/pine-core/p-1773aeac.system.entry.js.map +0 -1
  491. package/dist/pine-core/p-265372d3.entry.js +0 -2
  492. package/dist/pine-core/p-265372d3.entry.js.map +0 -1
  493. package/dist/pine-core/p-29b2af94.entry.js +0 -2
  494. package/dist/pine-core/p-29b2af94.entry.js.map +0 -1
  495. package/dist/pine-core/p-2b452883.system.entry.js +0 -2
  496. package/dist/pine-core/p-2b452883.system.entry.js.map +0 -1
  497. package/dist/pine-core/p-30e8c3ea.entry.js +0 -2
  498. package/dist/pine-core/p-30e8c3ea.entry.js.map +0 -1
  499. package/dist/pine-core/p-31f6fcc1.entry.js +0 -2
  500. package/dist/pine-core/p-31f6fcc1.entry.js.map +0 -1
  501. package/dist/pine-core/p-3b20aa93.system.entry.js +0 -2
  502. package/dist/pine-core/p-3b20aa93.system.entry.js.map +0 -1
  503. package/dist/pine-core/p-3e7933bf.entry.js +0 -2
  504. package/dist/pine-core/p-3e7933bf.entry.js.map +0 -1
  505. package/dist/pine-core/p-4534e8cc.system.entry.js +0 -2
  506. package/dist/pine-core/p-4534e8cc.system.entry.js.map +0 -1
  507. package/dist/pine-core/p-4b3a8cab.entry.js +0 -2
  508. package/dist/pine-core/p-4b3a8cab.entry.js.map +0 -1
  509. package/dist/pine-core/p-4c8bebd8.system.entry.js +0 -2
  510. package/dist/pine-core/p-4c8bebd8.system.entry.js.map +0 -1
  511. package/dist/pine-core/p-4dda1edf.entry.js +0 -2
  512. package/dist/pine-core/p-4dda1edf.entry.js.map +0 -1
  513. package/dist/pine-core/p-4e55730d.entry.js +0 -2
  514. package/dist/pine-core/p-4e55730d.entry.js.map +0 -1
  515. package/dist/pine-core/p-56f6f106.entry.js +0 -2
  516. package/dist/pine-core/p-56f6f106.entry.js.map +0 -1
  517. package/dist/pine-core/p-5cc0244d.system.entry.js +0 -2
  518. package/dist/pine-core/p-5cc0244d.system.entry.js.map +0 -1
  519. package/dist/pine-core/p-74f03e75.entry.js +0 -2
  520. package/dist/pine-core/p-74f03e75.entry.js.map +0 -1
  521. package/dist/pine-core/p-7b0517e5.system.entry.js +0 -2
  522. package/dist/pine-core/p-7b0517e5.system.entry.js.map +0 -1
  523. package/dist/pine-core/p-7b66bc50.entry.js +0 -3
  524. package/dist/pine-core/p-7b66bc50.entry.js.map +0 -1
  525. package/dist/pine-core/p-7eb22880.entry.js +0 -2
  526. package/dist/pine-core/p-7eb22880.entry.js.map +0 -1
  527. package/dist/pine-core/p-8501429f.entry.js +0 -2
  528. package/dist/pine-core/p-8501429f.entry.js.map +0 -1
  529. package/dist/pine-core/p-94fe15b0.system.entry.js +0 -2
  530. package/dist/pine-core/p-94fe15b0.system.entry.js.map +0 -1
  531. package/dist/pine-core/p-95aee0b1.entry.js +0 -2
  532. package/dist/pine-core/p-95aee0b1.entry.js.map +0 -1
  533. package/dist/pine-core/p-B02VgXkx.system.js.map +0 -1
  534. package/dist/pine-core/p-BFiM1S8V.system.js.map +0 -1
  535. package/dist/pine-core/p-BG7_qxVr.system.js +0 -2
  536. package/dist/pine-core/p-BG7_qxVr.system.js.map +0 -1
  537. package/dist/pine-core/p-BJhtHwq5.system.js.map +0 -1
  538. package/dist/pine-core/p-BQFgzIQT.system.js.map +0 -1
  539. package/dist/pine-core/p-BSkbMuB5.system.js.map +0 -1
  540. package/dist/pine-core/p-BigOVPun.system.js.map +0 -1
  541. package/dist/pine-core/p-BmFGXXkm.system.js.map +0 -1
  542. package/dist/pine-core/p-CHVzHNgU.system.js.map +0 -1
  543. package/dist/pine-core/p-CV0Lw9gs.system.js.map +0 -1
  544. package/dist/pine-core/p-CZqgW7e3.system.js.map +0 -1
  545. package/dist/pine-core/p-Cc1q-FuD.system.js.map +0 -1
  546. package/dist/pine-core/p-D3SrjYeb.system.js.map +0 -1
  547. package/dist/pine-core/p-D4MkIUXU.js.map +0 -1
  548. package/dist/pine-core/p-D9veIL-g.system.js.map +0 -1
  549. package/dist/pine-core/p-DGFR-x7P.system.js.map +0 -1
  550. package/dist/pine-core/p-DTL_39D_.js +0 -2
  551. package/dist/pine-core/p-DTL_39D_.js.map +0 -1
  552. package/dist/pine-core/p-DeR0sSWy.system.js.map +0 -1
  553. package/dist/pine-core/p-Df597YUK.system.js.map +0 -1
  554. package/dist/pine-core/p-Ek6vvXfI.system.js.map +0 -1
  555. package/dist/pine-core/p-WO5h6NYA.system.js.map +0 -1
  556. package/dist/pine-core/p-Z5rOSkoA.system.js.map +0 -1
  557. package/dist/pine-core/p-a5cf0088.system.entry.js +0 -2
  558. package/dist/pine-core/p-a5cf0088.system.entry.js.map +0 -1
  559. package/dist/pine-core/p-aa2782b9.system.entry.js +0 -2
  560. package/dist/pine-core/p-aa2782b9.system.entry.js.map +0 -1
  561. package/dist/pine-core/p-b32d34d0.entry.js +0 -2
  562. package/dist/pine-core/p-b32d34d0.entry.js.map +0 -1
  563. package/dist/pine-core/p-b378ca03.entry.js +0 -2
  564. package/dist/pine-core/p-b378ca03.entry.js.map +0 -1
  565. package/dist/pine-core/p-b699a14f.system.entry.js +0 -2
  566. package/dist/pine-core/p-b699a14f.system.entry.js.map +0 -1
  567. package/dist/pine-core/p-c2d2fe64.system.entry.js +0 -2
  568. package/dist/pine-core/p-c2d2fe64.system.entry.js.map +0 -1
  569. package/dist/pine-core/p-d325287b.entry.js +0 -2
  570. package/dist/pine-core/p-d52d96b5.system.entry.js +0 -4
  571. package/dist/pine-core/p-d52d96b5.system.entry.js.map +0 -1
  572. package/dist/pine-core/p-d5c63517.system.entry.js +0 -2
  573. package/dist/pine-core/p-d5c63517.system.entry.js.map +0 -1
  574. package/dist/pine-core/p-d65d252d.entry.js +0 -2
  575. package/dist/pine-core/p-d65d252d.entry.js.map +0 -1
  576. package/dist/pine-core/p-dbe41087.system.entry.js +0 -2
  577. package/dist/pine-core/p-dbe41087.system.entry.js.map +0 -1
  578. package/dist/pine-core/p-e03b7f4a.system.entry.js +0 -2
  579. package/dist/pine-core/p-e03b7f4a.system.entry.js.map +0 -1
  580. package/dist/pine-core/p-f6b269ac.entry.js +0 -2
  581. package/dist/pine-core/p-f6b269ac.entry.js.map +0 -1
  582. package/dist/pine-core/p-f70aef6e.system.entry.js +0 -2
  583. package/dist/pine-core/p-f70aef6e.system.entry.js.map +0 -1
  584. package/dist/pine-core/p-fd3d548f.entry.js +0 -2
  585. package/dist/pine-core/p-fd3d548f.entry.js.map +0 -1
  586. package/dist/pine-core/p-fddf82f8.entry.js +0 -2
  587. package/dist/pine-core/p-fddf82f8.entry.js.map +0 -1
  588. package/dist/pine-core/p-fdf22be1.system.entry.js +0 -2
  589. package/dist/pine-core/p-fdf22be1.system.entry.js.map +0 -1
  590. package/dist/pine-core/p-fe7ece91.system.entry.js +0 -2
  591. package/dist/pine-core/p-fe7ece91.system.entry.js.map +0 -1
  592. package/dist/pine-core/p-iM8w34Dq.system.js.map +0 -1
  593. package/dist/pine-core/p-kbAzjMDU.system.js.map +0 -1
  594. package/dist/pine-core/p-nawkAoxk.system.js.map +0 -1
  595. package/dist/pine-core/p-oDk-2Jyq.system.js.map +0 -1
  596. package/dist/pine-core/p-wlxYjeBe.system.js.map +0 -1
  597. /package/dist/pine-core/{p-af56cb57.entry.js.map → p-100de2b7.entry.js.map} +0 -0
  598. /package/dist/pine-core/{p-72d87dc6.system.entry.js.map → p-2054b5cb.system.entry.js.map} +0 -0
  599. /package/dist/pine-core/{p-c0601420.system.entry.js.map → p-2aab28b1.system.entry.js.map} +0 -0
  600. /package/dist/pine-core/{p-a54d6a53.entry.js.map → p-88773b86.entry.js.map} +0 -0
  601. /package/dist/pine-core/{p-46820152.entry.js.map → p-a3785977.entry.js.map} +0 -0
  602. /package/dist/pine-core/{p-559b4ebc.entry.js.map → p-d1b27fa4.entry.js.map} +0 -0
  603. /package/dist/pine-core/{p-c63e7909.system.entry.js.map → p-dace69e7.system.entry.js.map} +0 -0
  604. /package/dist/pine-core/{p-ab4307c7.system.entry.js.map → p-e702a8dc.system.entry.js.map} +0 -0
@@ -45,7 +45,7 @@ export class PdsCombobox {
45
45
  */
46
46
  this.mode = 'filter';
47
47
  /**
48
- * Determines the combobox trigger: 'input' (editable input) or 'button' (button-like, non-editable).
48
+ * Determines the combobox trigger: 'input' (editable input), 'button' (button-like, non-editable), or 'chip' (chip-like, non-editable).
49
49
  * @default 'input'
50
50
  */
51
51
  this.trigger = 'input';
@@ -59,10 +59,29 @@ export class PdsCombobox {
59
59
  * @default 'secondary'
60
60
  */
61
61
  this.triggerVariant = 'secondary';
62
+ /**
63
+ * The sentiment for the chip trigger. Matches Pine chip sentiments.
64
+ * @default 'neutral'
65
+ */
66
+ this.chipSentiment = 'neutral';
67
+ /**
68
+ * Whether the chip trigger should be displayed in a larger size.
69
+ * @default false
70
+ */
71
+ this.chipLarge = false;
72
+ /**
73
+ * Whether a dot should be displayed on the chip trigger.
74
+ * @default false
75
+ */
76
+ this.chipDot = false;
62
77
  /**
63
78
  * The value of the combobox input.
64
79
  */
65
80
  this.value = '';
81
+ /**
82
+ * Internal state for the display text shown in the input/trigger
83
+ */
84
+ this.displayText = '';
66
85
  /**
67
86
  * Internal state for filtered options and group labels
68
87
  */
@@ -83,11 +102,16 @@ export class PdsCombobox {
83
102
  * Internal state for the sanitized layout content of the selected option
84
103
  */
85
104
  this.selectedOptionLayoutContent = '';
105
+ /**
106
+ * Internal state to track chip properties for automatic rendering
107
+ */
108
+ this.selectedOptionChipProps = null;
86
109
  this.optionEls = [];
87
110
  this.allItems = [];
111
+ this.isUpdatingFromSelection = false;
88
112
  this.handleInput = (e) => {
89
113
  const target = e.target;
90
- this.value = target.value;
114
+ this.displayText = target.value;
91
115
  this.isOpen = true;
92
116
  this.filterOptions();
93
117
  setTimeout(() => this.openDropdownPositioning(), 0);
@@ -97,6 +121,7 @@ export class PdsCombobox {
97
121
  if (!this.isOpen) {
98
122
  this.isOpen = true;
99
123
  this.filterOptions();
124
+ this.setInitialHighlightedIndex();
100
125
  setTimeout(() => this.openDropdownPositioning(), 0);
101
126
  }
102
127
  };
@@ -106,10 +131,7 @@ export class PdsCombobox {
106
131
  this.isOpen = true;
107
132
  this.filterOptions();
108
133
  // Set highlighted index immediately for testing
109
- const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
110
- if (selectableOptions.length > 0) {
111
- this.highlightedIndex = 0;
112
- }
134
+ this.setInitialHighlightedIndex();
113
135
  setTimeout(() => {
114
136
  this.openDropdownPositioning();
115
137
  // For input trigger, keep focus on input and use aria-activedescendant
@@ -188,6 +210,13 @@ export class PdsCombobox {
188
210
  this.restoreFocusToTrigger();
189
211
  }
190
212
  break;
213
+ case ' ':
214
+ e.preventDefault();
215
+ if (this.highlightedIndex >= 0 && this.highlightedIndex < selectableOptions.length) {
216
+ this.handleOptionClick(selectableOptions[this.highlightedIndex]);
217
+ this.restoreFocusToTrigger();
218
+ }
219
+ break;
191
220
  case 'Escape':
192
221
  e.preventDefault();
193
222
  this.isOpen = false;
@@ -232,12 +261,9 @@ export class PdsCombobox {
232
261
  if (this.isOpen) {
233
262
  this.filterOptions();
234
263
  // Set highlighted index and prepare for keyboard navigation
235
- const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
236
- if (selectableOptions.length > 0) {
237
- this.highlightedIndex = 0;
238
- // For button trigger, prepare for arrow-key navigation mode
239
- this.isArrowKeyNavigationMode = true;
240
- }
264
+ this.setInitialHighlightedIndex();
265
+ // For button trigger, prepare for arrow-key navigation mode
266
+ this.isArrowKeyNavigationMode = true;
241
267
  setTimeout(() => this.openDropdownPositioning(), 0);
242
268
  }
243
269
  else {
@@ -253,10 +279,7 @@ export class PdsCombobox {
253
279
  this.isOpen = true;
254
280
  this.filterOptions();
255
281
  // Set highlighted index immediately
256
- const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
257
- if (selectableOptions.length > 0) {
258
- this.highlightedIndex = 0;
259
- }
282
+ this.setInitialHighlightedIndex();
260
283
  setTimeout(() => {
261
284
  this.openDropdownPositioning();
262
285
  // For all button trigger keyboard opening, focus the first option so subsequent navigation works
@@ -297,24 +320,110 @@ export class PdsCombobox {
297
320
  this.highlightedIndex = -1;
298
321
  this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
299
322
  this.updateAriaActiveDescendant(); // Clear aria-activedescendant
300
- // If there's a selected option but the input value doesn't match, restore the selected option's value
301
- if (this.selectedOption && this.value !== this.getOptionLabel(this.selectedOption)) {
302
- this.value = this.getOptionLabel(this.selectedOption);
323
+ // If there's a selected option but the display text doesn't match, restore the selected option's display text
324
+ if (this.selectedOption && this.displayText !== this.getOptionLabel(this.selectedOption)) {
325
+ this.displayText = this.getOptionLabel(this.selectedOption);
326
+ // The @Watch('selectedOption') will handle value and form internals if needed
303
327
  }
304
328
  }
305
329
  };
306
330
  }
331
+ connectedCallback() {
332
+ // Initialize ElementInternals for form association
333
+ if (this.el.attachInternals) {
334
+ this.internals = this.el.attachInternals();
335
+ }
336
+ }
307
337
  componentWillLoad() {
308
338
  this.updateOptions();
309
339
  }
340
+ componentDidLoad() {
341
+ var _a, _b, _c;
342
+ // Check for value-based preselection if no option is selected yet
343
+ if (!this.selectedOption && this.value && this.optionEls.length > 0) {
344
+ const matchingOption = this.optionEls.find(opt => opt.value === this.value);
345
+ if (matchingOption) {
346
+ this.setSelectedOption(matchingOption);
347
+ // Update the display text to show the option's text content
348
+ this.displayText = this.getOptionLabel(matchingOption);
349
+ // Keep this.value as the actual option value
350
+ // this.value remains unchanged (already matches matchingOption.value)
351
+ }
352
+ }
353
+ // Initialize form value with current value
354
+ if (this.internals) {
355
+ try {
356
+ this.internals.setFormValue((_c = (_b = (_a = this.selectedOption) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : this.value) !== null && _c !== void 0 ? _c : '');
357
+ }
358
+ catch (e) {
359
+ // ElementInternals.setFormValue not available in unit tests
360
+ }
361
+ }
362
+ }
310
363
  handleValueChange() {
311
364
  this.filterOptions();
365
+ // Sync with form internals for form association
366
+ if (this.internals) {
367
+ try {
368
+ this.internals.setFormValue(this.value);
369
+ }
370
+ catch (e) {
371
+ // ElementInternals.setFormValue not available in unit tests
372
+ }
373
+ }
374
+ // Find and select option that matches the value (for external value changes)
375
+ // Only do this if we're not already updating from a selection
376
+ if (!this.isUpdatingFromSelection && this.value && this.optionEls.length > 0) {
377
+ const currentSelectedValue = this.selectedOption ? this.selectedOption.value : null;
378
+ // If the value doesn't match the currently selected option's value, we need to update
379
+ if (this.value !== currentSelectedValue) {
380
+ const matchingOption = this.optionEls.find(opt => opt.value === this.value);
381
+ if (matchingOption) {
382
+ this.isUpdatingFromSelection = true;
383
+ this.setSelectedOption(matchingOption);
384
+ // Update the display text to show the option's text content
385
+ this.displayText = this.getOptionLabel(matchingOption);
386
+ // Keep this.value as the actual option value (already correct)
387
+ this.isUpdatingFromSelection = false;
388
+ }
389
+ }
390
+ }
312
391
  }
313
392
  handleSelectedOptionChange() {
314
393
  // Update the layout content when selected option changes
315
394
  this.selectedOptionLayoutContent = this.selectedOption && this.isOptionLayout(this.selectedOption)
316
395
  ? this.getOptionLayoutContent(this.selectedOption)
317
396
  : '';
397
+ // Update chip properties for automatic rendering when selected option changes
398
+ this.selectedOptionChipProps = this.selectedOption && this.isOptionChip(this.selectedOption)
399
+ ? this.getOptionChipProps(this.selectedOption)
400
+ : null;
401
+ // Update display text when selected option changes
402
+ if (this.selectedOption) {
403
+ this.displayText = this.getOptionLabel(this.selectedOption);
404
+ this.value = this.selectedOption.value;
405
+ // Update form internals with the actual option value
406
+ if (this.internals) {
407
+ try {
408
+ this.internals.setFormValue(this.selectedOption.value);
409
+ }
410
+ catch (e) {
411
+ // ElementInternals.setFormValue not available in unit tests
412
+ }
413
+ }
414
+ }
415
+ else {
416
+ this.displayText = '';
417
+ this.value = '';
418
+ if (this.internals) {
419
+ try {
420
+ this.internals.setFormValue('');
421
+ }
422
+ catch (e) {
423
+ // ElementInternals.setFormValue not available in unit tests
424
+ }
425
+ }
426
+ }
318
427
  }
319
428
  updateOptions() {
320
429
  var _a;
@@ -345,9 +454,29 @@ export class PdsCombobox {
345
454
  this.allItems.push(el);
346
455
  }
347
456
  });
348
- // Set initial selected option if one exists (only check DOM on initialization)
349
- if (!this.selectedOption) {
350
- const initialSelected = this.optionEls.find(opt => opt.hasAttribute('selected')) || null;
457
+ // Set initial selected option based on value property
458
+ let initialSelected = null;
459
+ // Check if value property matches any option
460
+ if (this.value) {
461
+ initialSelected = this.optionEls.find(opt => opt.value === this.value) || null;
462
+ if (initialSelected) {
463
+ // Update the display text to show the option's text content
464
+ this.displayText = this.getOptionLabel(initialSelected);
465
+ // Keep this.value as the actual option value (already correct)
466
+ }
467
+ }
468
+ // For chip triggers, ensure we always have a selected option
469
+ if (!initialSelected && this.trigger === 'chip' && this.optionEls.length > 0) {
470
+ initialSelected = this.optionEls[0]; // Select first option as default
471
+ this.value = initialSelected.value;
472
+ this.displayText = this.getOptionLabel(initialSelected);
473
+ console.warn('PDS Combobox: Chip triggers should always have a selected option. Automatically selected the first option.');
474
+ }
475
+ // Update selection if we found a different selected option or if we don't have one
476
+ if (initialSelected && initialSelected !== this.selectedOption) {
477
+ this.setSelectedOption(initialSelected);
478
+ }
479
+ else if (!this.selectedOption && initialSelected) {
351
480
  this.setSelectedOption(initialSelected);
352
481
  }
353
482
  this.filterOptions();
@@ -397,6 +526,22 @@ export class PdsCombobox {
397
526
  isOptionLayout(option) {
398
527
  return this.customOptionLayouts && option.hasAttribute('data-layout');
399
528
  }
529
+ // Helper method to check if option has chip attributes (new automatic approach)
530
+ isOptionChip(option) {
531
+ return option.hasAttribute('chip-sentiment') ||
532
+ option.hasAttribute('chip-large') ||
533
+ option.hasAttribute('chip-icon') ||
534
+ option.hasAttribute('chip-dot');
535
+ }
536
+ // Helper method to get chip properties from option attributes
537
+ getOptionChipProps(option) {
538
+ return {
539
+ sentiment: option.getAttribute('chip-sentiment') || 'neutral',
540
+ large: option.hasAttribute('chip-large'),
541
+ icon: option.getAttribute('chip-icon') || undefined,
542
+ dot: option.hasAttribute('chip-dot')
543
+ };
544
+ }
400
545
  // Helper method to check if option is selected (single source of truth)
401
546
  isOptionSelected(option) {
402
547
  return this.selectedOption === option;
@@ -404,6 +549,13 @@ export class PdsCombobox {
404
549
  // Helper method to set selected option (centralized state management)
405
550
  setSelectedOption(option) {
406
551
  this.selectedOption = option;
552
+ // Immediately update chip properties for automatic rendering to ensure reactivity
553
+ if (option && this.isOptionChip(option)) {
554
+ this.selectedOptionChipProps = this.getOptionChipProps(option);
555
+ }
556
+ else {
557
+ this.selectedOptionChipProps = null;
558
+ }
407
559
  }
408
560
  filterOptions() {
409
561
  // Ensure allItems includes optionEls if not already populated (for edge cases)
@@ -414,7 +566,7 @@ export class PdsCombobox {
414
566
  this.filteredItems = [...this.allItems];
415
567
  }
416
568
  else {
417
- const val = this.value.toLowerCase();
569
+ const val = this.displayText.toLowerCase();
418
570
  const filteredOptions = this.optionEls.filter(option => {
419
571
  // For layout options, search both text content and data-search-text attribute
420
572
  if (this.isOptionLayout(option)) {
@@ -470,7 +622,7 @@ export class PdsCombobox {
470
622
  left: `${x}px`,
471
623
  top: `${y}px`,
472
624
  position: 'absolute',
473
- zIndex: 1000,
625
+ zIndex: 'var(--pine-z-index-raised)',
474
626
  });
475
627
  });
476
628
  }
@@ -487,6 +639,27 @@ export class PdsCombobox {
487
639
  (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.focus();
488
640
  }
489
641
  }
642
+ /**
643
+ * Sets the initial highlighted index when dropdown opens.
644
+ * If there's a selected option, highlight it. Otherwise, highlight the first option.
645
+ */
646
+ setInitialHighlightedIndex() {
647
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
648
+ if (selectableOptions.length === 0) {
649
+ this.highlightedIndex = -1;
650
+ return;
651
+ }
652
+ // If there's a selected option, find its index in the filtered options
653
+ if (this.selectedOption) {
654
+ const selectedIndex = selectableOptions.findIndex(option => option === this.selectedOption);
655
+ if (selectedIndex >= 0) {
656
+ this.highlightedIndex = selectedIndex;
657
+ return;
658
+ }
659
+ }
660
+ // No selected option or selected option not in filtered results, highlight first option
661
+ this.highlightedIndex = 0;
662
+ }
490
663
  /**
491
664
  * Focus management helper - moves focus to the first option when dropdown opens
492
665
  */
@@ -494,7 +667,7 @@ export class PdsCombobox {
494
667
  if (this.isOpen) {
495
668
  const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
496
669
  if (selectableOptions.length > 0) {
497
- this.highlightedIndex = 0;
670
+ this.setInitialHighlightedIndex();
498
671
  // DON'T focus the option elements - keep focus on trigger and use aria-activedescendant
499
672
  // This prevents the focusout event that was closing the dropdown
500
673
  // But still call updateOptionFocus for scrolling
@@ -513,20 +686,20 @@ export class PdsCombobox {
513
686
  this.isArrowKeyNavigationMode = true;
514
687
  const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
515
688
  if (selectableOptions.length > 0) {
516
- this.highlightedIndex = 0;
517
- // For arrow key navigation, actually focus the first option
689
+ this.setInitialHighlightedIndex();
690
+ // For arrow key navigation, actually focus the highlighted option
518
691
  if (this.listboxEl) {
519
692
  const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
520
- const firstOption = optionElements[0];
521
- if (firstOption) {
693
+ const highlightedOption = optionElements[this.highlightedIndex];
694
+ if (highlightedOption) {
522
695
  // Remove tabindex from all options first
523
696
  optionElements.forEach(option => {
524
697
  option.setAttribute('tabindex', '-1');
525
698
  });
526
- // Set tabindex and focus on first option
527
- firstOption.setAttribute('tabindex', '0');
528
- firstOption.focus();
529
- firstOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
699
+ // Set tabindex and focus on highlighted option
700
+ highlightedOption.setAttribute('tabindex', '0');
701
+ highlightedOption.focus();
702
+ highlightedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
530
703
  }
531
704
  }
532
705
  // Update aria-activedescendant on trigger
@@ -592,7 +765,7 @@ export class PdsCombobox {
592
765
  }
593
766
  // Get the label of the selected option
594
767
  get selectedLabel() {
595
- return this.selectedOption ? this.getOptionLabel(this.selectedOption) : '';
768
+ return this.displayText || '';
596
769
  }
597
770
  // Get the layout content of the selected option for button trigger
598
771
  get selectedLayoutContent() {
@@ -602,10 +775,110 @@ export class PdsCombobox {
602
775
  get selectedHasLayout() {
603
776
  return this.selectedOption ? this.isOptionLayout(this.selectedOption) : false;
604
777
  }
778
+ // Extract chip sentiment from selected option's attributes, layout content, or slotted trigger content
779
+ get selectedChipSentiment() {
780
+ // First priority: Check selected option's chip attributes (new automatic approach)
781
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
782
+ const sentiment = this.selectedOption.getAttribute('chip-sentiment');
783
+ if (sentiment)
784
+ return sentiment;
785
+ }
786
+ // Second priority: Check selected option's layout content (existing custom layout approach)
787
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
788
+ const chipElement = this.selectedOption.querySelector('pds-chip');
789
+ const sentiment = chipElement === null || chipElement === void 0 ? void 0 : chipElement.getAttribute('sentiment');
790
+ if (sentiment)
791
+ return sentiment;
792
+ }
793
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
794
+ if (this.customTriggerContent) {
795
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
796
+ if (slottedChip) {
797
+ const sentiment = slottedChip.getAttribute('sentiment');
798
+ if (sentiment)
799
+ return sentiment;
800
+ }
801
+ }
802
+ // Fallback: Use component props
803
+ return this.chipSentiment;
804
+ }
805
+ // Extract chip large from selected option's attributes, layout content, or slotted trigger content
806
+ get selectedChipLarge() {
807
+ // First priority: Check selected option's chip attributes (new automatic approach)
808
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
809
+ if (this.selectedOption.hasAttribute('chip-large'))
810
+ return true;
811
+ }
812
+ // Second priority: Check selected option's layout content (existing custom layout approach)
813
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
814
+ const chipElement = this.selectedOption.querySelector('pds-chip');
815
+ if (chipElement === null || chipElement === void 0 ? void 0 : chipElement.hasAttribute('large'))
816
+ return true;
817
+ }
818
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
819
+ if (this.customTriggerContent) {
820
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
821
+ if (slottedChip && slottedChip.hasAttribute('large')) {
822
+ return true;
823
+ }
824
+ }
825
+ // Fallback: Use component props
826
+ return this.chipLarge;
827
+ }
828
+ // Extract chip icon from selected option's attributes, layout content, or slotted trigger content
829
+ get selectedChipIcon() {
830
+ // First priority: Check selected option's chip attributes (new automatic approach)
831
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
832
+ const icon = this.selectedOption.getAttribute('chip-icon');
833
+ if (icon)
834
+ return icon;
835
+ }
836
+ // Second priority: Check selected option's layout content (existing custom layout approach)
837
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
838
+ const chipElement = this.selectedOption.querySelector('pds-chip');
839
+ const icon = chipElement === null || chipElement === void 0 ? void 0 : chipElement.getAttribute('icon');
840
+ if (icon)
841
+ return icon;
842
+ }
843
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
844
+ if (this.customTriggerContent) {
845
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
846
+ if (slottedChip) {
847
+ const icon = slottedChip.getAttribute('icon');
848
+ if (icon)
849
+ return icon;
850
+ }
851
+ }
852
+ // Fallback: Use component props
853
+ return this.chipIcon;
854
+ }
855
+ // Extract chip dot from selected option's attributes, layout content, or slotted trigger content
856
+ get selectedChipDot() {
857
+ // First priority: Check selected option's chip attributes (new automatic approach)
858
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
859
+ if (this.selectedOption.hasAttribute('chip-dot'))
860
+ return true;
861
+ }
862
+ // Second priority: Check selected option's layout content (existing custom layout approach)
863
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
864
+ const chipElement = this.selectedOption.querySelector('pds-chip');
865
+ if (chipElement === null || chipElement === void 0 ? void 0 : chipElement.hasAttribute('dot'))
866
+ return true;
867
+ }
868
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
869
+ if (this.customTriggerContent) {
870
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
871
+ if (slottedChip && slottedChip.hasAttribute('dot')) {
872
+ return true;
873
+ }
874
+ }
875
+ // Fallback: Use component props
876
+ return this.chipDot;
877
+ }
605
878
  handleOptionClick(option) {
606
879
  // Update reactive state - single source of truth
880
+ // The @Watch('selectedOption') will handle displayText, value, and form internals
607
881
  this.setSelectedOption(option);
608
- this.value = this.getOptionLabel(option);
609
882
  this.isOpen = false;
610
883
  this.pdsComboboxChange.emit({ value: option.value });
611
884
  }
@@ -629,12 +902,14 @@ export class PdsCombobox {
629
902
  const isSelected = this.isOptionSelected(option);
630
903
  const isHighlighted = this.highlightedIndex === optionIndex;
631
904
  const isLayout = this.isOptionLayout(option);
905
+ const isChip = this.isOptionChip(option);
632
906
  const currentOptionIndex = optionIndex++;
633
- 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 ? option.getAttribute('aria-label') || this.getOptionLabel(option) : undefined, tabindex: isHighlighted ? '0' : '-1', class: {
907
+ 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: {
634
908
  'pds-combobox__option': true,
635
909
  'pds-combobox__option--highlighted': isHighlighted,
636
910
  'pds-combobox__option--layout': isLayout,
637
- }, "data-option-index": currentOptionIndex, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (h("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : (this.getOptionLabel(option)), isSelected && h("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
911
+ 'pds-combobox__option--chip': isChip,
912
+ }, "data-option-index": currentOptionIndex, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (h("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : isChip ? (this.renderOptionChip(option)) : (this.getOptionLabel(option)), isSelected && h("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
638
913
  }
639
914
  return null;
640
915
  })));
@@ -655,6 +930,23 @@ export class PdsCombobox {
655
930
  shouldShowLayoutContent() {
656
931
  return this.selectedHasLayout && !!this.selectedLayoutContent;
657
932
  }
933
+ // Helper method to build chip trigger CSS classes
934
+ getChipTriggerClass() {
935
+ const classes = ['pds-combobox__chip-trigger'];
936
+ // Add sentiment class
937
+ classes.push(`pds-combobox__chip-trigger--${this.selectedChipSentiment}`);
938
+ // Always use dropdown variant for chip triggers
939
+ classes.push('pds-combobox__chip-trigger--dropdown');
940
+ // Add large class if needed
941
+ if (this.selectedChipLarge) {
942
+ classes.push('pds-combobox__chip-trigger--large');
943
+ }
944
+ // Add dot class if needed
945
+ if (this.selectedChipDot) {
946
+ classes.push('pds-combobox__chip-trigger--dot');
947
+ }
948
+ return classes.join(' ');
949
+ }
658
950
  renderButtonTriggerContent() {
659
951
  // Case 1: Custom trigger content with layout priority
660
952
  if (this.customTriggerContent) {
@@ -671,15 +963,81 @@ export class PdsCombobox {
671
963
  // Case 3: Standard mode with default text content
672
964
  return [this.renderDefaultContent(), this.renderCaretIcon()];
673
965
  }
966
+ renderChipTriggerContent() {
967
+ // Case 1: Custom trigger content with layout priority
968
+ if (this.customTriggerContent) {
969
+ if (this.shouldShowLayoutContent()) {
970
+ // When using custom layouts, the chip handles its own dropdown arrow
971
+ return this.renderChipTriggerLayoutContent();
972
+ }
973
+ // Fall back to slot content when no layout is available - chip handles its own dropdown arrow
974
+ return h("slot", { name: "trigger-content" });
975
+ }
976
+ // Case 2: Standard mode with layout content
977
+ if (this.shouldShowLayoutContent()) {
978
+ // When using custom layouts, the chip handles its own dropdown arrow
979
+ return this.renderChipTriggerLayoutContent();
980
+ }
981
+ // Case 3: Automatic chip mode - selected option has chip attributes
982
+ if (this.selectedOption && this.selectedOptionChipProps) {
983
+ // Render as chip automatically - chip handles its own dropdown arrow
984
+ return this.renderSelectedOptionAsChip();
985
+ }
986
+ // Case 4: Standard mode with default text content
987
+ return [
988
+ this.renderChipTriggerDefaultContent(),
989
+ this.renderCaretIcon()
990
+ ];
991
+ }
992
+ // Helper method to render selected option as chip for trigger (automatic approach)
993
+ renderSelectedOptionAsChip() {
994
+ if (!this.selectedOption || !this.selectedOptionChipProps)
995
+ return null;
996
+ return (h("pds-chip", { sentiment: this.selectedOptionChipProps.sentiment, variant: "dropdown" // Always use dropdown variant for triggers
997
+ ,
998
+ large: this.selectedOptionChipProps.large, icon: this.selectedOptionChipProps.icon, dot: this.selectedOptionChipProps.dot, class: "pds-combobox__chip-trigger-auto" }, this.getOptionLabel(this.selectedOption)));
999
+ }
1000
+ // Helper method to render chip trigger layout content
1001
+ renderChipTriggerLayoutContent() {
1002
+ return (h("div", { class: "pds-combobox__chip-trigger-layout-wrapper", innerHTML: this.getModifiedLayoutContentForTrigger() }));
1003
+ }
1004
+ // Helper method to modify layout content for trigger use (ensure dropdown variant)
1005
+ getModifiedLayoutContentForTrigger() {
1006
+ let content = this.selectedLayoutContent;
1007
+ // If the content contains a pds-chip, ensure it has variant="dropdown"
1008
+ if (content.includes('<pds-chip')) {
1009
+ // Use a temporary div to parse and modify the HTML
1010
+ const tempDiv = document.createElement('div');
1011
+ tempDiv.innerHTML = content;
1012
+ const chipElement = tempDiv.querySelector('pds-chip');
1013
+ if (chipElement) {
1014
+ chipElement.setAttribute('variant', 'dropdown');
1015
+ content = tempDiv.innerHTML;
1016
+ }
1017
+ }
1018
+ return content;
1019
+ }
1020
+ // Helper method to render chip trigger default content
1021
+ renderChipTriggerDefaultContent() {
1022
+ return (h("span", { class: "pds-combobox__chip-trigger-label" }, this.selectedChipIcon && h("pds-icon", { icon: this.selectedChipIcon, class: "pds-combobox__chip-trigger-icon" }), this.selectedLabel || this.placeholder));
1023
+ }
1024
+ // Helper method to render option as chip (new automatic approach)
1025
+ renderOptionChip(option) {
1026
+ const chipProps = this.getOptionChipProps(option);
1027
+ return (h("pds-chip", { sentiment: chipProps.sentiment, variant: "text" // Dropdown options use text variant, not dropdown
1028
+ ,
1029
+ large: chipProps.large, icon: chipProps.icon, dot: chipProps.dot, class: "pds-combobox__option-chip" }, this.getOptionLabel(option)));
1030
+ }
674
1031
  render() {
675
1032
  const triggerClass = `pds-combobox__button-trigger pds-combobox__button-trigger--${this.triggerVariant}`;
676
- return (h(Host, { key: 'a7e29f0e0c5ee43f1516b3668dbabb3231ecf728' }, h("div", { key: '67da7d8953761ec64f30a4292785b7e8ed5d1449', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut }, this.label && (h("label", { key: '0f013de1a3d6ccdce2fe31c18b144f7178a2c30f', htmlFor: this.componentId, class: "pds-combobox__label" }, h("span", { key: '3c7dfa84d68565e10b5784aa2365d9c5164b7d06', class: this.hideLabel ? 'visually-hidden' : '' }, this.label))), this.trigger === 'input' ? (h("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, h("input", { ref: el => {
1033
+ return (h(Host, { key: 'd62992abd6eae05cfff52cfc0272490ca6370291' }, h("div", { key: 'affff971535065b7352daee494742bf7b65a61f4', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut }, this.label && (h("label", { key: 'c27f88928932bc4535698cb88595b1559cb22e55', htmlFor: this.componentId, class: "pds-combobox__label" }, h("span", { key: '0b65e67897735819cb2a4dc7d6d7d355af2f28d5', class: this.hideLabel ? 'visually-hidden' : '' }, this.label))), this.trigger === 'input' ? (h("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, h("input", { ref: el => {
677
1034
  this.inputEl = el;
678
1035
  this.triggerEl = el;
679
- }, 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.value, 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" }))) : (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: 'cbf26d489f2ffc32fc1f0820f962aef74b62bed4', style: { display: 'none' } }, h("slot", { key: 'ad01cd795f9cd5aba1bbe25d0dac2d489b3e5f20', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
1036
+ }, 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: '47c259c2bc5b6f4f1d249d9bddd476b11c5a90fe', style: { display: 'none' } }, h("slot", { key: '83355a804fe978b6fb58838b4174bc815cf2f933', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
680
1037
  }
681
1038
  static get is() { return "pds-combobox"; }
682
1039
  static get encapsulation() { return "shadow"; }
1040
+ static get formAssociated() { return true; }
683
1041
  static get originalStyleUrls() {
684
1042
  return {
685
1043
  "$": ["pds-combobox.scss"]
@@ -711,6 +1069,25 @@ export class PdsCombobox {
711
1069
  "attribute": "component-id",
712
1070
  "reflect": false
713
1071
  },
1072
+ "name": {
1073
+ "type": "string",
1074
+ "mutable": false,
1075
+ "complexType": {
1076
+ "original": "string",
1077
+ "resolved": "string",
1078
+ "references": {}
1079
+ },
1080
+ "required": false,
1081
+ "optional": true,
1082
+ "docs": {
1083
+ "tags": [],
1084
+ "text": "The name of the form control. Submitted with the form as part of a name/value pair."
1085
+ },
1086
+ "getter": false,
1087
+ "setter": false,
1088
+ "attribute": "name",
1089
+ "reflect": true
1090
+ },
714
1091
  "customOptionLayouts": {
715
1092
  "type": "boolean",
716
1093
  "mutable": false,
@@ -927,8 +1304,8 @@ export class PdsCombobox {
927
1304
  "type": "string",
928
1305
  "mutable": false,
929
1306
  "complexType": {
930
- "original": "'input' | 'button'",
931
- "resolved": "\"button\" | \"input\"",
1307
+ "original": "'input' | 'button' | 'chip'",
1308
+ "resolved": "\"button\" | \"chip\" | \"input\"",
932
1309
  "references": {}
933
1310
  },
934
1311
  "required": false,
@@ -938,7 +1315,7 @@ export class PdsCombobox {
938
1315
  "name": "default",
939
1316
  "text": "'input'"
940
1317
  }],
941
- "text": "Determines the combobox trigger: 'input' (editable input) or 'button' (button-like, non-editable)."
1318
+ "text": "Determines the combobox trigger: 'input' (editable input), 'button' (button-like, non-editable), or 'chip' (chip-like, non-editable)."
942
1319
  },
943
1320
  "getter": false,
944
1321
  "setter": false,
@@ -992,6 +1369,100 @@ export class PdsCombobox {
992
1369
  "reflect": false,
993
1370
  "defaultValue": "'secondary'"
994
1371
  },
1372
+ "chipSentiment": {
1373
+ "type": "string",
1374
+ "mutable": false,
1375
+ "complexType": {
1376
+ "original": "ChipSentimentType",
1377
+ "resolved": "\"accent\" | \"brand\" | \"danger\" | \"info\" | \"neutral\" | \"success\" | \"warning\"",
1378
+ "references": {
1379
+ "ChipSentimentType": {
1380
+ "location": "import",
1381
+ "path": "@utils/types",
1382
+ "id": "src/utils/types.ts::ChipSentimentType"
1383
+ }
1384
+ }
1385
+ },
1386
+ "required": false,
1387
+ "optional": false,
1388
+ "docs": {
1389
+ "tags": [{
1390
+ "name": "default",
1391
+ "text": "'neutral'"
1392
+ }],
1393
+ "text": "The sentiment for the chip trigger. Matches Pine chip sentiments."
1394
+ },
1395
+ "getter": false,
1396
+ "setter": false,
1397
+ "attribute": "chip-sentiment",
1398
+ "reflect": false,
1399
+ "defaultValue": "'neutral'"
1400
+ },
1401
+ "chipLarge": {
1402
+ "type": "boolean",
1403
+ "mutable": false,
1404
+ "complexType": {
1405
+ "original": "boolean",
1406
+ "resolved": "boolean",
1407
+ "references": {}
1408
+ },
1409
+ "required": false,
1410
+ "optional": false,
1411
+ "docs": {
1412
+ "tags": [{
1413
+ "name": "default",
1414
+ "text": "false"
1415
+ }],
1416
+ "text": "Whether the chip trigger should be displayed in a larger size."
1417
+ },
1418
+ "getter": false,
1419
+ "setter": false,
1420
+ "attribute": "chip-large",
1421
+ "reflect": false,
1422
+ "defaultValue": "false"
1423
+ },
1424
+ "chipIcon": {
1425
+ "type": "string",
1426
+ "mutable": false,
1427
+ "complexType": {
1428
+ "original": "string",
1429
+ "resolved": "string",
1430
+ "references": {}
1431
+ },
1432
+ "required": false,
1433
+ "optional": true,
1434
+ "docs": {
1435
+ "tags": [],
1436
+ "text": "The name of the icon to display in the chip trigger."
1437
+ },
1438
+ "getter": false,
1439
+ "setter": false,
1440
+ "attribute": "chip-icon",
1441
+ "reflect": false
1442
+ },
1443
+ "chipDot": {
1444
+ "type": "boolean",
1445
+ "mutable": false,
1446
+ "complexType": {
1447
+ "original": "boolean",
1448
+ "resolved": "boolean",
1449
+ "references": {}
1450
+ },
1451
+ "required": false,
1452
+ "optional": false,
1453
+ "docs": {
1454
+ "tags": [{
1455
+ "name": "default",
1456
+ "text": "false"
1457
+ }],
1458
+ "text": "Whether a dot should be displayed on the chip trigger."
1459
+ },
1460
+ "getter": false,
1461
+ "setter": false,
1462
+ "attribute": "chip-dot",
1463
+ "reflect": false,
1464
+ "defaultValue": "false"
1465
+ },
995
1466
  "value": {
996
1467
  "type": "string",
997
1468
  "mutable": true,
@@ -1016,11 +1487,13 @@ export class PdsCombobox {
1016
1487
  }
1017
1488
  static get states() {
1018
1489
  return {
1490
+ "displayText": {},
1019
1491
  "filteredItems": {},
1020
1492
  "highlightedIndex": {},
1021
1493
  "isOpen": {},
1022
1494
  "selectedOption": {},
1023
- "selectedOptionLayoutContent": {}
1495
+ "selectedOptionLayoutContent": {},
1496
+ "selectedOptionChipProps": {}
1024
1497
  };
1025
1498
  }
1026
1499
  static get events() {