@pine-ds/core 5.0.0-mercury.0 → 5.0.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 (1473) hide show
  1. package/components/aria-references.js +1 -0
  2. package/components/attributes.js +1 -0
  3. package/components/closest.js +1 -11
  4. package/components/floating-ui.dom.js +1 -0
  5. package/components/form.js +1 -0
  6. package/components/i18n-format.js +1 -0
  7. package/components/index.d.ts +51 -0
  8. package/components/index.js +1 -33
  9. package/components/index2.js +1 -14
  10. package/components/keep-hydrated.js +1 -0
  11. package/components/mock-pds-modal.d.ts +11 -0
  12. package/components/mock-pds-modal.js +1 -0
  13. package/components/pds-accordion.js +1 -68
  14. package/components/pds-alert.d.ts +11 -0
  15. package/components/pds-alert.js +1 -0
  16. package/components/pds-avatar.js +1 -103
  17. package/components/pds-box.js +1 -124
  18. package/components/pds-box2.js +1 -0
  19. package/components/pds-button.js +1 -8
  20. package/components/pds-button2.js +1 -84
  21. package/components/pds-checkbox.js +1 -8
  22. package/components/pds-checkbox2.js +1 -101
  23. package/components/pds-chip.js +1 -78
  24. package/components/pds-chip2.js +1 -0
  25. package/components/pds-combobox.d.ts +11 -0
  26. package/components/pds-combobox.js +2 -0
  27. package/components/pds-container.d.ts +11 -0
  28. package/components/pds-container.js +1 -0
  29. package/components/pds-copytext.js +1 -88
  30. package/components/pds-datepicker.d.ts +11 -0
  31. package/components/pds-datepicker.js +1 -0
  32. package/components/pds-divider.js +1 -54
  33. package/components/pds-drawer-content.d.ts +11 -0
  34. package/components/pds-drawer-content.js +1 -0
  35. package/components/pds-drawer-footer.d.ts +11 -0
  36. package/components/pds-drawer-footer.js +1 -0
  37. package/components/pds-drawer-header.d.ts +11 -0
  38. package/components/pds-drawer-header.js +1 -0
  39. package/components/pds-drawer.d.ts +11 -0
  40. package/components/pds-drawer.js +1 -0
  41. package/components/pds-dropdown-menu-item.d.ts +11 -0
  42. package/components/pds-dropdown-menu-item.js +1 -0
  43. package/components/pds-dropdown-menu-separator.d.ts +11 -0
  44. package/components/pds-dropdown-menu-separator.js +1 -0
  45. package/components/pds-dropdown-menu.d.ts +11 -0
  46. package/components/pds-dropdown-menu.js +1 -0
  47. package/components/pds-filter.d.ts +11 -0
  48. package/components/pds-filter.js +1 -0
  49. package/components/pds-filters.d.ts +11 -0
  50. package/components/pds-filters.js +1 -0
  51. package/components/pds-icon.js +1 -8
  52. package/components/pds-icon2.js +1 -370
  53. package/components/pds-image.js +1 -55
  54. package/components/pds-input.js +1 -72
  55. package/components/pds-input2.js +1 -0
  56. package/components/pds-link.js +1 -65
  57. package/components/pds-link2.js +1 -0
  58. package/components/pds-loader.js +1 -68
  59. package/components/pds-loader2.js +1 -0
  60. package/components/pds-modal-content.d.ts +11 -0
  61. package/components/pds-modal-content.js +1 -0
  62. package/components/pds-modal-footer.d.ts +11 -0
  63. package/components/pds-modal-footer.js +1 -0
  64. package/components/pds-modal-header.d.ts +11 -0
  65. package/components/pds-modal-header.js +1 -0
  66. package/components/pds-modal.d.ts +11 -0
  67. package/components/pds-modal.js +1 -0
  68. package/components/pds-modal2.js +1 -0
  69. package/components/pds-multiselect.d.ts +11 -0
  70. package/components/pds-multiselect.js +1 -0
  71. package/components/pds-popover.d.ts +11 -0
  72. package/components/pds-popover.js +1 -0
  73. package/components/pds-progress.js +1 -49
  74. package/components/pds-property.d.ts +11 -0
  75. package/components/pds-property.js +1 -0
  76. package/components/pds-radio-group.d.ts +11 -0
  77. package/components/pds-radio-group.js +1 -0
  78. package/components/pds-radio.js +1 -78
  79. package/components/pds-row.js +1 -72
  80. package/components/pds-select.d.ts +11 -0
  81. package/components/pds-select.js +1 -0
  82. package/components/pds-sortable-item.js +1 -58
  83. package/components/pds-sortable.js +3 -2718
  84. package/components/pds-switch.js +1 -82
  85. package/components/pds-tab.js +1 -53
  86. package/components/pds-table-body.js +1 -36
  87. package/components/pds-table-cell.js +1 -8
  88. package/components/pds-table-cell2.js +1 -72
  89. package/components/pds-table-head-cell.js +1 -8
  90. package/components/pds-table-head-cell2.js +1 -98
  91. package/components/pds-table-head.js +1 -90
  92. package/components/pds-table-row.js +1 -95
  93. package/components/pds-table.js +1 -124
  94. package/components/pds-tabpanel.js +1 -45
  95. package/components/pds-tabs.js +1 -119
  96. package/components/pds-text.d.ts +11 -0
  97. package/components/pds-text.js +1 -0
  98. package/components/pds-text2.js +1 -0
  99. package/components/pds-textarea.js +1 -82
  100. package/components/pds-toast.d.ts +11 -0
  101. package/components/pds-toast.js +1 -0
  102. package/components/pds-tooltip.js +1 -178
  103. package/components/portal-target.js +1 -0
  104. package/components/reconnected-content.js +1 -0
  105. package/components/reflected-attribute-default.js +1 -0
  106. package/components/scroll.js +1 -0
  107. package/components/sortable-label.js +1 -0
  108. package/components/tabbable.js +1 -0
  109. package/components/truncation-tooltip.js +1 -0
  110. package/components/utils.js +1 -0
  111. package/dist/cjs/aria-references-CUmqibnO.js +54 -0
  112. package/dist/cjs/attributes-Cgbkw6gO.js +188 -0
  113. package/dist/cjs/closest-D0qyYtJ3.js +20 -0
  114. package/dist/cjs/floating-ui.dom-Dw41zbyY.js +1715 -0
  115. package/dist/cjs/form-MhwfKTuo.js +69 -0
  116. package/dist/cjs/i18n-format-BD0PmYzT.js +65 -0
  117. package/dist/cjs/index-BDnbr0DK.js +39 -0
  118. package/dist/cjs/index-D9iJuJCP.js +2950 -0
  119. package/dist/cjs/index.cjs.js +21 -2
  120. package/dist/cjs/keep-hydrated-AKoh0DG4.js +197 -0
  121. package/dist/cjs/loader.cjs.js +4 -8
  122. package/dist/cjs/mock-pds-modal.cjs.entry.js +92 -0
  123. package/dist/cjs/pds-accordion.cjs.entry.js +16 -14
  124. package/dist/cjs/pds-alert.cjs.entry.js +88 -0
  125. package/dist/cjs/pds-avatar.cjs.entry.js +123 -28
  126. package/dist/cjs/pds-box.cjs.entry.js +143 -58
  127. package/dist/cjs/pds-button.cjs.entry.js +234 -25
  128. package/dist/cjs/pds-checkbox.cjs.entry.js +102 -26
  129. package/dist/cjs/pds-chip.cjs.entry.js +226 -23
  130. package/dist/cjs/pds-combobox.cjs.entry.js +4500 -0
  131. package/dist/cjs/pds-container.cjs.entry.js +37 -0
  132. package/dist/cjs/pds-copytext.cjs.entry.js +98 -17
  133. package/dist/cjs/pds-datepicker.cjs.entry.js +2139 -0
  134. package/dist/cjs/pds-divider.cjs.entry.js +16 -11
  135. package/dist/cjs/pds-drawer-content.cjs.entry.js +24 -0
  136. package/dist/cjs/pds-drawer-footer.cjs.entry.js +24 -0
  137. package/dist/cjs/pds-drawer-header.cjs.entry.js +24 -0
  138. package/dist/cjs/pds-drawer.cjs.entry.js +156 -0
  139. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +151 -0
  140. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +23 -0
  141. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +453 -0
  142. package/dist/cjs/pds-filter.cjs.entry.js +512 -0
  143. package/dist/cjs/pds-filters.cjs.entry.js +18 -0
  144. package/dist/cjs/pds-icon.cjs.entry.js +334 -44
  145. package/dist/cjs/pds-image.cjs.entry.js +158 -16
  146. package/dist/cjs/pds-input.cjs.entry.js +300 -26
  147. package/dist/cjs/pds-link.cjs.entry.js +50 -13
  148. package/dist/cjs/pds-loader.cjs.entry.js +49 -14
  149. package/dist/cjs/pds-modal-content.cjs.entry.js +199 -0
  150. package/dist/cjs/pds-modal-footer.cjs.entry.js +24 -0
  151. package/dist/cjs/pds-modal-header.cjs.entry.js +24 -0
  152. package/dist/cjs/pds-modal.cjs.entry.js +592 -0
  153. package/dist/cjs/pds-multiselect.cjs.entry.js +1384 -0
  154. package/dist/cjs/pds-popover.cjs.entry.js +1103 -0
  155. package/dist/cjs/pds-progress.cjs.entry.js +30 -12
  156. package/dist/cjs/pds-property.cjs.entry.js +22 -0
  157. package/dist/cjs/pds-radio-group.cjs.entry.js +260 -0
  158. package/dist/cjs/pds-radio.cjs.entry.js +101 -23
  159. package/dist/cjs/pds-row.cjs.entry.js +50 -21
  160. package/dist/cjs/pds-select.cjs.entry.js +380 -0
  161. package/dist/cjs/pds-sortable-item.cjs.entry.js +59 -11
  162. package/dist/cjs/pds-sortable.cjs.entry.js +504 -119
  163. package/dist/cjs/pds-switch.cjs.entry.js +185 -27
  164. package/dist/cjs/pds-tab.cjs.entry.js +78 -16
  165. package/dist/cjs/pds-table-body.cjs.entry.js +5 -9
  166. package/dist/cjs/pds-table-cell.cjs.entry.js +150 -19
  167. package/dist/cjs/pds-table-head-cell.cjs.entry.js +222 -30
  168. package/dist/cjs/pds-table-head.cjs.entry.js +17 -13
  169. package/dist/cjs/pds-table-row.cjs.entry.js +104 -16
  170. package/dist/cjs/pds-table.cjs.entry.js +434 -22
  171. package/dist/cjs/pds-tabpanel.cjs.entry.js +32 -13
  172. package/dist/cjs/pds-tabs.cjs.entry.js +206 -18
  173. package/dist/cjs/pds-text.cjs.entry.js +141 -0
  174. package/dist/cjs/pds-textarea.cjs.entry.js +318 -29
  175. package/dist/cjs/pds-toast.cjs.entry.js +156 -0
  176. package/dist/cjs/pds-tooltip.cjs.entry.js +401 -110
  177. package/dist/cjs/pine-core.cjs.js +8 -10
  178. package/dist/cjs/portal-target-e8WQ6dLx.js +70 -0
  179. package/dist/cjs/reconnected-content-CpnEQcTp.js +29 -0
  180. package/dist/cjs/reflected-attribute-default-DVYHG6O1.js +44 -0
  181. package/dist/cjs/scroll-2XcoE_6Q.js +79 -0
  182. package/dist/cjs/sortable-label-DOcJrHvA.js +37 -0
  183. package/dist/cjs/tabbable-BrrrGvdG.js +86 -0
  184. package/dist/cjs/truncation-tooltip-CM5HgRHh.js +430 -0
  185. package/dist/cjs/utils-BhRmyxT8.js +121 -0
  186. package/dist/collection/collection-manifest.json +30 -3
  187. package/dist/collection/components/_internal/pds-label/pds-label.js +0 -1
  188. package/dist/collection/components/pds-accordion/pds-accordion.css +24 -29
  189. package/dist/collection/components/pds-accordion/pds-accordion.js +36 -9
  190. package/dist/collection/components/pds-accordion/stories/pds-accordion.stories.js +12 -18
  191. package/dist/collection/components/pds-alert/pds-alert.css +141 -0
  192. package/dist/collection/components/pds-alert/pds-alert.js +291 -0
  193. package/dist/collection/components/pds-alert/pds-alert.tokens.css +85 -0
  194. package/dist/collection/components/pds-alert/stories/pds-alert.stories.js +114 -0
  195. package/dist/collection/components/pds-avatar/pds-avatar.css +56 -23
  196. package/dist/collection/components/pds-avatar/pds-avatar.js +284 -32
  197. package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +41 -3
  198. package/dist/collection/components/pds-box/pds-box.css +5520 -264
  199. package/dist/collection/components/pds-box/pds-box.js +2854 -252
  200. package/dist/collection/components/pds-box/stories/pds-box.stories.js +86 -30
  201. package/dist/collection/components/pds-button/pds-button.css +255 -93
  202. package/dist/collection/components/pds-button/pds-button.js +470 -40
  203. package/dist/collection/components/pds-button/stories/pds-button.stories.js +242 -16
  204. package/dist/collection/components/pds-checkbox/checkbox-interface.js +0 -1
  205. package/dist/collection/components/pds-checkbox/pds-checkbox.css +168 -60
  206. package/dist/collection/components/pds-checkbox/pds-checkbox.js +186 -54
  207. package/dist/collection/components/pds-checkbox/stories/pds-checkbox.stories.js +45 -15
  208. package/dist/collection/components/pds-chip/pds-chip.css +239 -114
  209. package/dist/collection/components/pds-chip/pds-chip.js +437 -60
  210. package/dist/collection/components/pds-chip/pds-chip.tokens.css +69 -0
  211. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +164 -24
  212. package/dist/collection/components/pds-combobox/combobox-interface.js +1 -0
  213. package/dist/collection/components/pds-combobox/grouped-options-panel.js +318 -0
  214. package/dist/collection/components/pds-combobox/pds-combobox.css +953 -0
  215. package/dist/collection/components/pds-combobox/pds-combobox.js +3839 -0
  216. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +934 -0
  217. package/dist/collection/components/pds-container/pds-container.css +26 -0
  218. package/dist/collection/components/pds-container/pds-container.js +111 -0
  219. package/dist/collection/components/pds-container/stories/pds-container.stories.js +89 -0
  220. package/dist/collection/components/pds-copytext/pds-copytext.css +39 -51
  221. package/dist/collection/components/pds-copytext/pds-copytext.js +116 -23
  222. package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +6 -12
  223. package/dist/collection/components/pds-datepicker/calendar-portal.js +99 -0
  224. package/dist/collection/components/pds-datepicker/date-utils.js +174 -0
  225. package/dist/collection/components/pds-datepicker/datepicker-interface.js +1 -0
  226. package/dist/collection/components/pds-datepicker/pds-datepicker.css +547 -0
  227. package/dist/collection/components/pds-datepicker/pds-datepicker.js +2505 -0
  228. package/dist/collection/components/pds-datepicker/presets.js +131 -0
  229. package/dist/collection/components/pds-datepicker/stories/pds-datepicker.stories.js +206 -0
  230. package/dist/collection/components/pds-datepicker/value.js +296 -0
  231. package/dist/collection/components/pds-divider/pds-divider.css +71 -40
  232. package/dist/collection/components/pds-divider/pds-divider.js +47 -11
  233. package/dist/collection/components/pds-divider/stories/pds-divider.stories.js +7 -2
  234. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.css +22 -0
  235. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +27 -0
  236. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.css +15 -0
  237. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +27 -0
  238. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.css +15 -0
  239. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +27 -0
  240. package/dist/collection/components/pds-drawer/pds-drawer.css +47 -0
  241. package/dist/collection/components/pds-drawer/pds-drawer.js +405 -0
  242. package/dist/collection/components/pds-drawer/stories/pds-drawer.stories.js +77 -0
  243. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +93 -0
  244. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +398 -0
  245. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.css +7 -0
  246. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +71 -0
  247. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +68 -0
  248. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +545 -0
  249. package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +100 -0
  250. package/dist/collection/components/pds-filters/pds-filter/filter-interface.js +1 -0
  251. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +200 -0
  252. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +756 -0
  253. package/dist/collection/components/pds-filters/pds-filter/stories/pds-filter.stories.js +87 -0
  254. package/dist/collection/components/pds-filters/pds-filters.css +10 -0
  255. package/dist/collection/components/pds-filters/pds-filters.js +44 -0
  256. package/dist/collection/components/pds-filters/stories/pds-filters.stories.js +34 -0
  257. package/dist/collection/components/pds-icon/stories/pds-icon.stories.js +2 -2
  258. package/dist/collection/components/pds-image/image-interface.js +1 -0
  259. package/dist/collection/components/pds-image/pds-image.css +13 -1
  260. package/dist/collection/components/pds-image/pds-image.js +297 -31
  261. package/dist/collection/components/pds-image/stories/pds-image.stories.js +124 -8
  262. package/dist/collection/components/pds-input/input-interface.js +1 -0
  263. package/dist/collection/components/pds-input/pds-input.css +275 -63
  264. package/dist/collection/components/pds-input/pds-input.js +687 -57
  265. package/dist/collection/components/pds-input/pds-input.tokens.css +3 -0
  266. package/dist/collection/components/pds-input/stories/pds-input.stories.js +310 -14
  267. package/dist/collection/components/pds-link/pds-link.css +45 -30
  268. package/dist/collection/components/pds-link/pds-link.js +332 -19
  269. package/dist/collection/components/pds-link/stories/pds-link.stories.js +82 -4
  270. package/dist/collection/components/pds-loader/pds-loader.css +17 -30
  271. package/dist/collection/components/pds-loader/pds-loader.js +62 -14
  272. package/dist/collection/components/pds-loader/stories/pds-loader.stories.js +3 -5
  273. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.css +25 -0
  274. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +235 -0
  275. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.css +8 -0
  276. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +27 -0
  277. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.css +8 -0
  278. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +27 -0
  279. package/dist/collection/components/pds-modal/pds-modal.css +142 -0
  280. package/dist/collection/components/pds-modal/pds-modal.js +852 -0
  281. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +745 -0
  282. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +286 -0
  283. package/dist/collection/components/pds-multiselect/multiselect-interface.js +1 -0
  284. package/dist/collection/components/pds-multiselect/pds-multiselect.css +365 -0
  285. package/dist/collection/components/pds-multiselect/pds-multiselect.js +2597 -0
  286. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +866 -0
  287. package/dist/collection/components/pds-popover/pds-popover.css +16 -0
  288. package/dist/collection/components/pds-popover/pds-popover.js +1347 -0
  289. package/dist/collection/components/pds-popover/popover-interface.js +1 -0
  290. package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +117 -0
  291. package/dist/collection/components/pds-progress/pds-progress.css +11 -24
  292. package/dist/collection/components/pds-progress/pds-progress.js +49 -16
  293. package/dist/collection/components/pds-progress/stories/pds-progress.stories.js +2 -4
  294. package/dist/collection/components/pds-property/pds-property.css +4 -0
  295. package/dist/collection/components/pds-property/pds-property.js +70 -0
  296. package/dist/collection/components/pds-property/stories/pds-property.stories.js +16 -0
  297. package/dist/collection/components/pds-radio/pds-radio.css +285 -54
  298. package/dist/collection/components/pds-radio/pds-radio.js +226 -53
  299. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +66 -19
  300. package/dist/collection/components/pds-radio-group/pds-radio-group.css +45 -0
  301. package/dist/collection/components/pds-radio-group/pds-radio-group.js +514 -0
  302. package/dist/collection/components/pds-radio-group/radio-group-interface.js +1 -0
  303. package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +179 -0
  304. package/dist/collection/components/pds-row/pds-row.css +10 -9
  305. package/dist/collection/components/pds-row/pds-row.js +132 -30
  306. package/dist/collection/components/pds-row/stories/pds-row.stories.js +27 -24
  307. package/dist/collection/components/pds-select/pds-select.css +168 -0
  308. package/dist/collection/components/pds-select/pds-select.js +728 -0
  309. package/dist/collection/components/pds-select/pds-select.tokens.css +3 -0
  310. package/dist/collection/components/pds-select/stories/pds-select.stories.js +205 -0
  311. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.css +64 -26
  312. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +87 -10
  313. package/dist/collection/components/pds-sortable/pds-sortable-item/stories/pds-sortable-item.stories.js +0 -2
  314. package/dist/collection/components/pds-sortable/pds-sortable.css +2 -4
  315. package/dist/collection/components/pds-sortable/pds-sortable.js +571 -17
  316. package/dist/collection/components/pds-sortable/sortable-interface.js +0 -1
  317. package/dist/collection/components/pds-sortable/sortable-label.js +33 -0
  318. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +49 -13
  319. package/dist/collection/components/pds-switch/pds-switch.css +60 -59
  320. package/dist/collection/components/pds-switch/pds-switch.js +268 -63
  321. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +90 -28
  322. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +4 -2
  323. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +36 -19
  324. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +193 -15
  325. package/dist/collection/components/pds-table/pds-table-cell/stories/pds-table-cell.stories.js +22 -7
  326. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.css +22 -5
  327. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +75 -11
  328. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +57 -25
  329. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +328 -24
  330. package/dist/collection/components/pds-table/pds-table-head-cell/stories/pds-table-head-cell.stories.js +12 -7
  331. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.css +14 -5
  332. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +118 -13
  333. package/dist/collection/components/pds-table/pds-table-row/stories/pds-table-row.stories.js +3 -9
  334. package/dist/collection/components/pds-table/pds-table.css +106 -17
  335. package/dist/collection/components/pds-table/pds-table.js +576 -44
  336. package/dist/collection/components/pds-table/stories/pds-table.stories.js +428 -33
  337. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +102 -60
  338. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +240 -18
  339. package/dist/collection/components/pds-tabs/pds-tab/stories/pds-tab.stories.js +15 -0
  340. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.css +15 -2
  341. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +68 -12
  342. package/dist/collection/components/pds-tabs/pds-tabpanel/stories/pds-tabpanel.stories.js +15 -0
  343. package/dist/collection/components/pds-tabs/pds-tabs.css +31 -11
  344. package/dist/collection/components/pds-tabs/pds-tabs.js +301 -30
  345. package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +70 -27
  346. package/dist/collection/components/pds-text/pds-text.css +207 -0
  347. package/dist/collection/components/pds-text/pds-text.js +328 -0
  348. package/dist/collection/components/pds-text/stories/pds-text.stories.js +141 -0
  349. package/dist/collection/components/pds-textarea/pds-textarea.css +127 -57
  350. package/dist/collection/components/pds-textarea/pds-textarea.js +598 -57
  351. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +101 -25
  352. package/dist/collection/components/pds-textarea/textarea-interface.js +0 -1
  353. package/dist/collection/components/pds-toast/pds-toast.css +167 -0
  354. package/dist/collection/components/pds-toast/pds-toast.js +362 -0
  355. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +98 -0
  356. package/dist/collection/components/pds-tooltip/pds-tooltip.css +73 -79
  357. package/dist/collection/components/pds-tooltip/pds-tooltip.js +451 -80
  358. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +52 -24
  359. package/dist/collection/global/pine-global.js +6 -0
  360. package/dist/collection/global/pine-ui-global.js +0 -1
  361. package/dist/collection/global/styles/utils/label.css +17 -0
  362. package/dist/collection/i18n/i18n-format.js +59 -0
  363. package/dist/collection/i18n/index.js +1 -0
  364. package/dist/collection/index.js +3 -1
  365. package/dist/collection/utils/aria-references.js +48 -0
  366. package/dist/collection/utils/attributes.js +180 -0
  367. package/dist/collection/utils/closest.js +8 -1
  368. package/dist/collection/utils/css.js +41 -0
  369. package/dist/collection/utils/form.js +41 -8
  370. package/dist/collection/utils/interfaces.js +1 -0
  371. package/dist/collection/utils/keep-hydrated.js +188 -0
  372. package/dist/collection/utils/overlay.js +66 -50
  373. package/dist/collection/utils/portal-target.js +64 -0
  374. package/dist/collection/utils/reconnected-content.js +25 -0
  375. package/dist/collection/utils/reflected-attribute-default.js +40 -0
  376. package/dist/collection/utils/scroll.js +77 -0
  377. package/dist/collection/utils/tabbable.js +82 -0
  378. package/dist/collection/utils/test/axe.js +106 -0
  379. package/dist/collection/utils/test/host-strip.js +50 -0
  380. package/dist/collection/utils/test/reconnect-safety.js +31 -0
  381. package/dist/collection/utils/test/reduced-motion.js +78 -0
  382. package/dist/collection/utils/truncation-tooltip.js +422 -0
  383. package/dist/collection/utils/types.js +18 -2
  384. package/dist/collection/utils/utils.js +109 -4
  385. package/dist/docs.d.ts +45 -0
  386. package/dist/docs.json +25718 -2809
  387. package/dist/esm/aria-references-CNn1lObg.js +50 -0
  388. package/dist/esm/attributes-CD8knu3a.js +183 -0
  389. package/dist/esm/closest-DHPzKMVS.js +17 -0
  390. package/dist/esm/floating-ui.dom-Cuc0DYlm.js +1706 -0
  391. package/dist/esm/form-BuRbS7Hp.js +63 -0
  392. package/dist/esm/i18n-format-BJgZHCWe.js +61 -0
  393. package/dist/esm/index-4_RRPJTO.js +2938 -0
  394. package/dist/esm/index-B0DXTeeV.js +21 -0
  395. package/dist/esm/index.js +21 -2
  396. package/dist/esm/keep-hydrated-BgNaWLoS.js +190 -0
  397. package/dist/esm/loader.js +4 -6
  398. package/dist/esm/mock-pds-modal.entry.js +90 -0
  399. package/dist/esm/pds-accordion.entry.js +16 -12
  400. package/dist/esm/pds-alert.entry.js +86 -0
  401. package/dist/esm/pds-avatar.entry.js +123 -26
  402. package/dist/esm/pds-box.entry.js +143 -56
  403. package/dist/esm/pds-button.entry.js +233 -22
  404. package/dist/esm/pds-checkbox.entry.js +103 -25
  405. package/dist/esm/pds-chip.entry.js +227 -22
  406. package/dist/esm/pds-combobox.entry.js +4498 -0
  407. package/dist/esm/pds-container.entry.js +35 -0
  408. package/dist/esm/pds-copytext.entry.js +98 -15
  409. package/dist/esm/pds-datepicker.entry.js +2137 -0
  410. package/dist/esm/pds-divider.entry.js +16 -9
  411. package/dist/esm/pds-drawer-content.entry.js +22 -0
  412. package/dist/esm/pds-drawer-footer.entry.js +22 -0
  413. package/dist/esm/pds-drawer-header.entry.js +22 -0
  414. package/dist/esm/pds-drawer.entry.js +154 -0
  415. package/dist/esm/pds-dropdown-menu-item.entry.js +149 -0
  416. package/dist/esm/pds-dropdown-menu-separator.entry.js +21 -0
  417. package/dist/esm/pds-dropdown-menu.entry.js +451 -0
  418. package/dist/esm/pds-filter.entry.js +510 -0
  419. package/dist/esm/pds-filters.entry.js +16 -0
  420. package/dist/esm/pds-icon.entry.js +334 -42
  421. package/dist/esm/pds-image.entry.js +158 -14
  422. package/dist/esm/pds-input.entry.js +301 -25
  423. package/dist/esm/pds-link.entry.js +50 -11
  424. package/dist/esm/pds-loader.entry.js +49 -12
  425. package/dist/esm/pds-modal-content.entry.js +197 -0
  426. package/dist/esm/pds-modal-footer.entry.js +22 -0
  427. package/dist/esm/pds-modal-header.entry.js +22 -0
  428. package/dist/esm/pds-modal.entry.js +590 -0
  429. package/dist/esm/pds-multiselect.entry.js +1382 -0
  430. package/dist/esm/pds-popover.entry.js +1101 -0
  431. package/dist/esm/pds-progress.entry.js +30 -10
  432. package/dist/esm/pds-property.entry.js +20 -0
  433. package/dist/esm/pds-radio-group.entry.js +258 -0
  434. package/dist/esm/pds-radio.entry.js +102 -22
  435. package/dist/esm/pds-row.entry.js +50 -19
  436. package/dist/esm/pds-select.entry.js +378 -0
  437. package/dist/esm/pds-sortable-item.entry.js +59 -9
  438. package/dist/esm/pds-sortable.entry.js +504 -117
  439. package/dist/esm/pds-switch.entry.js +186 -26
  440. package/dist/esm/pds-tab.entry.js +78 -14
  441. package/dist/esm/pds-table-body.entry.js +5 -7
  442. package/dist/esm/pds-table-cell.entry.js +150 -17
  443. package/dist/esm/pds-table-head-cell.entry.js +222 -28
  444. package/dist/esm/pds-table-head.entry.js +17 -11
  445. package/dist/esm/pds-table-row.entry.js +104 -14
  446. package/dist/esm/pds-table.entry.js +434 -20
  447. package/dist/esm/pds-tabpanel.entry.js +32 -11
  448. package/dist/esm/pds-tabs.entry.js +206 -16
  449. package/dist/esm/pds-text.entry.js +139 -0
  450. package/dist/esm/pds-textarea.entry.js +319 -28
  451. package/dist/esm/pds-toast.entry.js +154 -0
  452. package/dist/esm/pds-tooltip.entry.js +401 -108
  453. package/dist/esm/pine-core.js +6 -7
  454. package/dist/esm/portal-target-CKRzRKdO.js +66 -0
  455. package/dist/esm/reconnected-content-RFpTWV6r.js +27 -0
  456. package/dist/esm/reflected-attribute-default-t3idJwV0.js +42 -0
  457. package/dist/esm/scroll-DtgUQhjl.js +75 -0
  458. package/dist/esm/sortable-label-PItnzVVR.js +35 -0
  459. package/dist/esm/tabbable-C6ZWpp3v.js +84 -0
  460. package/dist/esm/truncation-tooltip-CkIWm6Z-.js +425 -0
  461. package/dist/esm/utils-OYK5-nwe.js +114 -0
  462. package/dist/esm-es5/aria-references-CNn1lObg.js +1 -0
  463. package/dist/esm-es5/attributes-CD8knu3a.js +1 -0
  464. package/dist/esm-es5/closest-DHPzKMVS.js +1 -0
  465. package/dist/esm-es5/floating-ui.dom-Cuc0DYlm.js +1 -0
  466. package/dist/esm-es5/form-BuRbS7Hp.js +1 -0
  467. package/dist/esm-es5/i18n-format-BJgZHCWe.js +1 -0
  468. package/dist/esm-es5/index-4_RRPJTO.js +2 -0
  469. package/dist/esm-es5/index-B0DXTeeV.js +1 -0
  470. package/dist/esm-es5/index.js +1 -2
  471. package/dist/esm-es5/keep-hydrated-BgNaWLoS.js +1 -0
  472. package/dist/esm-es5/loader.js +1 -2
  473. package/dist/esm-es5/mock-pds-modal.entry.js +1 -0
  474. package/dist/esm-es5/pds-accordion.entry.js +1 -2
  475. package/dist/esm-es5/pds-alert.entry.js +1 -0
  476. package/dist/esm-es5/pds-avatar.entry.js +1 -2
  477. package/dist/esm-es5/pds-box.entry.js +1 -2
  478. package/dist/esm-es5/pds-button.entry.js +1 -2
  479. package/dist/esm-es5/pds-checkbox.entry.js +1 -2
  480. package/dist/esm-es5/pds-chip.entry.js +1 -2
  481. package/dist/esm-es5/pds-combobox.entry.js +2 -0
  482. package/dist/esm-es5/pds-container.entry.js +1 -0
  483. package/dist/esm-es5/pds-copytext.entry.js +1 -2
  484. package/dist/esm-es5/pds-datepicker.entry.js +1 -0
  485. package/dist/esm-es5/pds-divider.entry.js +1 -2
  486. package/dist/esm-es5/pds-drawer-content.entry.js +1 -0
  487. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -0
  488. package/dist/esm-es5/pds-drawer-header.entry.js +1 -0
  489. package/dist/esm-es5/pds-drawer.entry.js +1 -0
  490. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -0
  491. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -0
  492. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -0
  493. package/dist/esm-es5/pds-filter.entry.js +1 -0
  494. package/dist/esm-es5/pds-filters.entry.js +1 -0
  495. package/dist/esm-es5/pds-icon.entry.js +1 -2
  496. package/dist/esm-es5/pds-image.entry.js +1 -2
  497. package/dist/esm-es5/pds-input.entry.js +1 -2
  498. package/dist/esm-es5/pds-link.entry.js +1 -2
  499. package/dist/esm-es5/pds-loader.entry.js +1 -2
  500. package/dist/esm-es5/pds-modal-content.entry.js +1 -0
  501. package/dist/esm-es5/pds-modal-footer.entry.js +1 -0
  502. package/dist/esm-es5/pds-modal-header.entry.js +1 -0
  503. package/dist/esm-es5/pds-modal.entry.js +1 -0
  504. package/dist/esm-es5/pds-multiselect.entry.js +1 -0
  505. package/dist/esm-es5/pds-popover.entry.js +1 -0
  506. package/dist/esm-es5/pds-progress.entry.js +1 -2
  507. package/dist/esm-es5/pds-property.entry.js +1 -0
  508. package/dist/esm-es5/pds-radio-group.entry.js +1 -0
  509. package/dist/esm-es5/pds-radio.entry.js +1 -2
  510. package/dist/esm-es5/pds-row.entry.js +1 -2
  511. package/dist/esm-es5/pds-select.entry.js +1 -0
  512. package/dist/esm-es5/pds-sortable-item.entry.js +1 -2
  513. package/dist/esm-es5/pds-sortable.entry.js +3 -4
  514. package/dist/esm-es5/pds-switch.entry.js +1 -2
  515. package/dist/esm-es5/pds-tab.entry.js +1 -2
  516. package/dist/esm-es5/pds-table-body.entry.js +1 -2
  517. package/dist/esm-es5/pds-table-cell.entry.js +1 -2
  518. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -2
  519. package/dist/esm-es5/pds-table-head.entry.js +1 -2
  520. package/dist/esm-es5/pds-table-row.entry.js +1 -2
  521. package/dist/esm-es5/pds-table.entry.js +1 -2
  522. package/dist/esm-es5/pds-tabpanel.entry.js +1 -2
  523. package/dist/esm-es5/pds-tabs.entry.js +1 -2
  524. package/dist/esm-es5/pds-text.entry.js +1 -0
  525. package/dist/esm-es5/pds-textarea.entry.js +1 -2
  526. package/dist/esm-es5/pds-toast.entry.js +1 -0
  527. package/dist/esm-es5/pds-tooltip.entry.js +1 -2
  528. package/dist/esm-es5/pine-core.js +1 -2
  529. package/dist/esm-es5/portal-target-CKRzRKdO.js +1 -0
  530. package/dist/esm-es5/reconnected-content-RFpTWV6r.js +1 -0
  531. package/dist/esm-es5/reflected-attribute-default-t3idJwV0.js +1 -0
  532. package/dist/esm-es5/scroll-DtgUQhjl.js +1 -0
  533. package/dist/esm-es5/sortable-label-PItnzVVR.js +1 -0
  534. package/dist/esm-es5/tabbable-C6ZWpp3v.js +1 -0
  535. package/dist/esm-es5/truncation-tooltip-CkIWm6Z-.js +1 -0
  536. package/dist/esm-es5/utils-OYK5-nwe.js +1 -0
  537. package/dist/pine-core/index.esm.js +1 -2
  538. package/dist/pine-core/p-053ff8eb.system.entry.js +1 -0
  539. package/dist/pine-core/p-08b9e3ad.entry.js +1 -0
  540. package/dist/pine-core/p-0ac4262e.system.entry.js +1 -0
  541. package/dist/pine-core/p-0e1b8bd1.system.entry.js +1 -0
  542. package/dist/pine-core/p-12fdc65f.entry.js +1 -0
  543. package/dist/pine-core/p-1765a41b.system.entry.js +1 -0
  544. package/dist/pine-core/p-18524c25.entry.js +1 -0
  545. package/dist/pine-core/p-191eb9e5.system.entry.js +1 -0
  546. package/dist/pine-core/p-1c584a20.entry.js +1 -0
  547. package/dist/pine-core/p-1d4ecc35.entry.js +7 -0
  548. package/dist/pine-core/p-1e0c9738.system.entry.js +1 -0
  549. package/dist/pine-core/p-1fb1ca3d.entry.js +1 -0
  550. package/dist/pine-core/p-2482e4ab.system.entry.js +1 -0
  551. package/dist/pine-core/p-2cc7c682.entry.js +1 -0
  552. package/dist/pine-core/p-2f15e85f.entry.js +1 -0
  553. package/dist/pine-core/p-3306dc5a.system.entry.js +1 -0
  554. package/dist/pine-core/p-3338fc2e.entry.js +1 -0
  555. package/dist/pine-core/p-33da254f.system.entry.js +1 -0
  556. package/dist/pine-core/p-34d22a45.system.entry.js +1 -0
  557. package/dist/pine-core/p-35b90796.entry.js +1 -0
  558. package/dist/pine-core/p-38148f5b.entry.js +1 -0
  559. package/dist/pine-core/p-39264dfb.system.entry.js +1 -0
  560. package/dist/pine-core/p-3aed0418.system.entry.js +1 -0
  561. package/dist/pine-core/p-3dd879fd.entry.js +1 -0
  562. package/dist/pine-core/p-3f1c05cd.system.entry.js +1 -0
  563. package/dist/pine-core/p-3fc9ef80.system.entry.js +1 -0
  564. package/dist/pine-core/p-4125a4a6.system.entry.js +1 -0
  565. package/dist/pine-core/p-42376f2c.entry.js +1 -0
  566. package/dist/pine-core/p-4263038f.entry.js +1 -0
  567. package/dist/pine-core/p-47df9e9f.system.entry.js +3 -0
  568. package/dist/pine-core/p-55a4659a.system.entry.js +1 -0
  569. package/dist/pine-core/p-563baadd.system.entry.js +1 -0
  570. package/dist/pine-core/p-57af5c29.system.entry.js +1 -0
  571. package/dist/pine-core/p-587bd9ed.entry.js +1 -0
  572. package/dist/pine-core/p-5c7dfa7a.entry.js +1 -0
  573. package/dist/pine-core/p-5db87fda.system.entry.js +1 -0
  574. package/dist/pine-core/p-5eb0c78c.system.entry.js +1 -0
  575. package/dist/pine-core/p-6017afb5.system.entry.js +1 -0
  576. package/dist/pine-core/p-63d47dd4.system.entry.js +1 -0
  577. package/dist/pine-core/p-66e61921.system.entry.js +1 -0
  578. package/dist/pine-core/p-67999353.entry.js +1 -0
  579. package/dist/pine-core/p-68328afc.entry.js +1 -0
  580. package/dist/pine-core/p-6a965119.entry.js +1 -0
  581. package/dist/pine-core/p-6fdc6df9.system.entry.js +1 -0
  582. package/dist/pine-core/p-72668673.system.entry.js +1 -0
  583. package/dist/pine-core/p-765f4207.entry.js +1 -0
  584. package/dist/pine-core/p-77530cf2.entry.js +1 -0
  585. package/dist/pine-core/p-77a22399.entry.js +1 -0
  586. package/dist/pine-core/p-783127bf.entry.js +1 -0
  587. package/dist/pine-core/p-7a51f15e.entry.js +1 -0
  588. package/dist/pine-core/p-7b978fff.system.entry.js +1 -0
  589. package/dist/pine-core/p-82f7eed1.entry.js +1 -0
  590. package/dist/pine-core/p-863ff553.system.entry.js +1 -0
  591. package/dist/pine-core/p-87a32ded.system.entry.js +1 -0
  592. package/dist/pine-core/p-87cadd6f.system.entry.js +8 -0
  593. package/dist/pine-core/p-8db554fe.entry.js +1 -0
  594. package/dist/pine-core/p-8e7e7bba.entry.js +1 -0
  595. package/dist/pine-core/p-907c69e9.system.entry.js +1 -0
  596. package/dist/pine-core/p-90f83a5b.system.entry.js +1 -0
  597. package/dist/pine-core/p-931a0ccd.system.entry.js +1 -0
  598. package/dist/pine-core/p-94fd9595.entry.js +1 -0
  599. package/dist/pine-core/p-96bccf85.system.entry.js +1 -0
  600. package/dist/pine-core/p-9a63bf72.entry.js +1 -0
  601. package/dist/pine-core/p-9d983e09.system.entry.js +1 -0
  602. package/dist/pine-core/p-9da10cfb.system.entry.js +1 -0
  603. package/dist/pine-core/p-9e005996.entry.js +1 -0
  604. package/dist/pine-core/p-B0DXTeeV.js +1 -0
  605. package/dist/pine-core/p-BJgZHCWe.js +1 -0
  606. package/dist/pine-core/p-BK1sLRfg.system.js +2 -0
  607. package/dist/pine-core/p-BNTlHhoO.system.js +1 -0
  608. package/dist/pine-core/p-BSRFZB4I.system.js +1 -0
  609. package/dist/pine-core/p-BZ1l3LGl.system.js +1 -0
  610. package/dist/pine-core/p-BZsj6eAn.system.js +1 -0
  611. package/dist/pine-core/p-BbXp4qBM.system.js +1 -0
  612. package/dist/pine-core/p-BgNaWLoS.js +1 -0
  613. package/dist/pine-core/p-Bkho_oFB.system.js +1 -0
  614. package/dist/pine-core/p-BlJQebvG.system.js +1 -0
  615. package/dist/pine-core/p-BuRbS7Hp.js +1 -0
  616. package/dist/pine-core/p-BxIzb-Wc.system.js +1 -0
  617. package/dist/pine-core/p-C35-349-.system.js +1 -0
  618. package/dist/pine-core/p-C6ZWpp3v.js +1 -0
  619. package/dist/pine-core/p-CANeE7Ss.system.js +1 -0
  620. package/dist/pine-core/p-CIe1DGXa.system.js +1 -0
  621. package/dist/pine-core/p-CKRzRKdO.js +1 -0
  622. package/dist/pine-core/p-CNn1lObg.js +1 -0
  623. package/dist/pine-core/p-CQJ44c6o.system.js +1 -0
  624. package/dist/pine-core/p-Cuc0DYlm.js +1 -0
  625. package/dist/pine-core/p-DHPzKMVS.js +1 -0
  626. package/dist/pine-core/p-DVra397g.system.js +1 -0
  627. package/dist/pine-core/p-DtgUQhjl.js +1 -0
  628. package/dist/pine-core/p-Dv9QBmIF.js +1 -0
  629. package/dist/pine-core/p-Dx8tEj0U.system.js +1 -0
  630. package/dist/pine-core/p-M31tvpDN.js +2 -0
  631. package/dist/pine-core/p-OYK5-nwe.js +1 -0
  632. package/dist/pine-core/p-PItnzVVR.js +1 -0
  633. package/dist/pine-core/p-RFpTWV6r.js +1 -0
  634. package/dist/pine-core/p-VPGVqK3P.system.js +1 -0
  635. package/dist/pine-core/p-XK45dzWR.system.js +1 -0
  636. package/dist/pine-core/p-a0fa77b1.system.entry.js +1 -0
  637. package/dist/pine-core/p-a149af29.entry.js +1 -0
  638. package/dist/pine-core/p-a1575919.entry.js +1 -0
  639. package/dist/pine-core/p-a20d9eca.system.entry.js +1 -0
  640. package/dist/pine-core/p-a5782d99.entry.js +1 -0
  641. package/dist/pine-core/p-a9eaf160.system.entry.js +1 -0
  642. package/dist/pine-core/p-aae96744.entry.js +1 -0
  643. package/dist/pine-core/p-b379d9bc.system.entry.js +1 -0
  644. package/dist/pine-core/p-b96bdff6.entry.js +1 -0
  645. package/dist/pine-core/p-badde164.entry.js +1 -0
  646. package/dist/pine-core/p-bbd9ab75.entry.js +1 -0
  647. package/dist/pine-core/p-biShcgLI.js +1 -0
  648. package/dist/pine-core/p-c12b5cd7.system.entry.js +1 -0
  649. package/dist/pine-core/p-c2afe4f3.system.entry.js +1 -0
  650. package/dist/pine-core/p-c65f4eaa.system.entry.js +1 -0
  651. package/dist/pine-core/p-c6c5ada6.system.entry.js +1 -0
  652. package/dist/pine-core/p-c76d8b9e.system.entry.js +1 -0
  653. package/dist/pine-core/p-c89ea2d3.entry.js +1 -0
  654. package/dist/pine-core/p-ce9fa14b.entry.js +1 -0
  655. package/dist/pine-core/p-d4b0122f.system.entry.js +1 -0
  656. package/dist/pine-core/p-d61a0fe8.system.entry.js +1 -0
  657. package/dist/pine-core/p-d7d7a4e1.entry.js +1 -0
  658. package/dist/pine-core/p-d85d50cb.entry.js +1 -0
  659. package/dist/pine-core/p-daa802f1.entry.js +2 -0
  660. package/dist/pine-core/p-de3f4a28.system.entry.js +1 -0
  661. package/dist/pine-core/p-e00777da.system.entry.js +1 -0
  662. package/dist/pine-core/p-e2a1a49a.system.entry.js +1 -0
  663. package/dist/pine-core/p-e334af06.entry.js +1 -0
  664. package/dist/pine-core/p-e4216ff6.entry.js +1 -0
  665. package/dist/pine-core/p-e68044b3.entry.js +1 -0
  666. package/dist/pine-core/p-e75d8bc1.entry.js +1 -0
  667. package/dist/pine-core/p-e871cfce.entry.js +1 -0
  668. package/dist/pine-core/p-e92d0f0f.system.entry.js +1 -0
  669. package/dist/pine-core/p-eab165b9.system.entry.js +1 -0
  670. package/dist/pine-core/p-eabc4bd8.entry.js +1 -0
  671. package/dist/pine-core/p-eeYeEogd.system.js +1 -0
  672. package/dist/pine-core/p-eee042d3.entry.js +1 -0
  673. package/dist/pine-core/p-ef9f84f2.system.entry.js +1 -0
  674. package/dist/pine-core/p-f026af73.entry.js +1 -0
  675. package/dist/pine-core/p-f0509c8e.entry.js +1 -0
  676. package/dist/pine-core/p-f1252e72.system.entry.js +1 -0
  677. package/dist/pine-core/p-f3496fd1.entry.js +1 -0
  678. package/dist/pine-core/p-f65127f1.entry.js +1 -0
  679. package/dist/pine-core/p-f90f4be7.system.entry.js +1 -0
  680. package/dist/pine-core/p-f99bd77f.entry.js +1 -0
  681. package/dist/pine-core/p-fda791df.entry.js +1 -0
  682. package/dist/pine-core/p-t3idJwV0.js +1 -0
  683. package/dist/pine-core/p-wB2y8gR7.system.js +1 -0
  684. package/dist/pine-core/pine-core.css +1 -1
  685. package/dist/pine-core/pine-core.esm.js +1 -2
  686. package/dist/pine-core/pine-core.js +1 -1
  687. package/dist/scripts/vscode-custom-data-generator.js +406 -0
  688. package/dist/scripts/vscode-settings-patcher.cjs +89 -0
  689. package/dist/types/components/pds-accordion/pds-accordion.d.ts +9 -1
  690. package/dist/types/components/pds-alert/pds-alert.d.ts +62 -0
  691. package/dist/types/components/pds-avatar/pds-avatar.d.ts +53 -3
  692. package/dist/types/components/pds-box/pds-box.d.ts +495 -16
  693. package/dist/types/components/pds-button/pds-button.d.ts +91 -13
  694. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +43 -9
  695. package/dist/types/components/pds-chip/pds-chip.d.ts +77 -14
  696. package/dist/types/components/pds-combobox/combobox-interface.d.ts +73 -0
  697. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +128 -0
  698. package/dist/types/components/pds-combobox/pds-combobox.d.ts +714 -0
  699. package/dist/types/components/pds-container/pds-container.d.ts +22 -0
  700. package/dist/types/components/pds-copytext/pds-copytext.d.ts +20 -5
  701. package/dist/types/components/pds-datepicker/calendar-portal.d.ts +36 -0
  702. package/dist/types/components/pds-datepicker/date-utils.d.ts +67 -0
  703. package/dist/types/components/pds-datepicker/datepicker-interface.d.ts +47 -0
  704. package/dist/types/components/pds-datepicker/pds-datepicker.d.ts +515 -0
  705. package/dist/types/components/pds-datepicker/presets.d.ts +24 -0
  706. package/dist/types/components/pds-datepicker/value.d.ts +59 -0
  707. package/dist/types/components/pds-divider/pds-divider.d.ts +10 -2
  708. package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +9 -0
  709. package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +9 -0
  710. package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +9 -0
  711. package/dist/types/components/pds-drawer/pds-drawer.d.ts +89 -0
  712. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +87 -0
  713. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +13 -0
  714. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +60 -0
  715. package/dist/types/components/pds-filters/pds-filter/filter-interface.d.ts +19 -0
  716. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +135 -0
  717. package/dist/types/components/pds-filters/pds-filters.d.ts +11 -0
  718. package/dist/types/components/pds-image/image-interface.d.ts +12 -0
  719. package/dist/types/components/pds-image/pds-image.d.ts +75 -11
  720. package/dist/types/components/pds-input/input-interface.d.ts +12 -0
  721. package/dist/types/components/pds-input/pds-input.d.ts +174 -9
  722. package/dist/types/components/pds-link/pds-link.d.ts +81 -11
  723. package/dist/types/components/pds-loader/pds-loader.d.ts +10 -3
  724. package/dist/types/components/pds-modal/pds-modal-content/pds-modal-content.d.ts +43 -0
  725. package/dist/types/components/pds-modal/pds-modal-footer/pds-modal-footer.d.ts +9 -0
  726. package/dist/types/components/pds-modal/pds-modal-header/pds-modal-header.d.ts +9 -0
  727. package/dist/types/components/pds-modal/pds-modal.d.ts +152 -0
  728. package/dist/types/components/pds-modal/test/mock-pds-modal.d.ts +68 -0
  729. package/dist/types/components/pds-multiselect/multiselect-interface.d.ts +61 -0
  730. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +402 -0
  731. package/dist/types/components/pds-popover/pds-popover.d.ts +292 -0
  732. package/dist/types/components/pds-popover/popover-interface.d.ts +4 -0
  733. package/dist/types/components/pds-progress/pds-progress.d.ts +6 -2
  734. package/dist/types/components/pds-property/pds-property.d.ts +14 -0
  735. package/dist/types/components/pds-radio/pds-radio.d.ts +42 -11
  736. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +84 -0
  737. package/dist/types/components/pds-radio-group/radio-group-interface.d.ts +5 -0
  738. package/dist/types/components/pds-row/pds-row.d.ts +17 -2
  739. package/dist/types/components/pds-select/pds-select.d.ts +182 -0
  740. package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +14 -3
  741. package/dist/types/components/pds-sortable/pds-sortable.d.ts +99 -4
  742. package/dist/types/components/pds-sortable/sortable-interface.d.ts +3 -1
  743. package/dist/types/components/pds-sortable/sortable-label.d.ts +7 -0
  744. package/dist/types/components/pds-switch/pds-switch.d.ts +51 -17
  745. package/dist/types/components/pds-table/pds-table-body/pds-table-body.d.ts +3 -0
  746. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +40 -1
  747. package/dist/types/components/pds-table/pds-table-head/pds-table-head.d.ts +19 -2
  748. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +73 -2
  749. package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +27 -4
  750. package/dist/types/components/pds-table/pds-table.d.ts +138 -12
  751. package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +55 -0
  752. package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +12 -0
  753. package/dist/types/components/pds-tabs/pds-tabs.d.ts +45 -5
  754. package/dist/types/components/pds-text/pds-text.d.ts +61 -0
  755. package/dist/types/components/pds-textarea/pds-textarea.d.ts +140 -15
  756. package/dist/types/components/pds-textarea/textarea-interface.d.ts +5 -1
  757. package/dist/types/components/pds-toast/pds-toast.d.ts +83 -0
  758. package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +80 -20
  759. package/dist/types/components.d.ts +7070 -1247
  760. package/dist/types/global/pine-global.d.ts +2 -0
  761. package/dist/types/home/runner/work/pine/pine/libs/core/.stencil/scripts/vscode-custom-data-generator.d.ts +6 -0
  762. package/dist/types/i18n/i18n-format.d.ts +38 -0
  763. package/dist/types/i18n/index.d.ts +2 -0
  764. package/dist/types/index.d.ts +3 -0
  765. package/dist/types/stencil-public-runtime.d.ts +195 -8
  766. package/dist/types/utils/aria-references.d.ts +28 -0
  767. package/dist/types/utils/attributes.d.ts +44 -0
  768. package/dist/types/utils/closest.d.ts +2 -0
  769. package/dist/types/utils/css.d.ts +7 -0
  770. package/dist/types/utils/form.d.ts +23 -1
  771. package/dist/types/utils/interfaces.d.ts +6 -0
  772. package/dist/types/utils/keep-hydrated.d.ts +56 -0
  773. package/dist/types/utils/overlay.d.ts +3 -3
  774. package/dist/types/utils/portal-target.d.ts +17 -0
  775. package/dist/types/utils/reconnected-content.d.ts +14 -0
  776. package/dist/types/utils/reflected-attribute-default.d.ts +31 -0
  777. package/dist/types/utils/scroll.d.ts +21 -0
  778. package/dist/types/utils/tabbable.d.ts +2 -0
  779. package/dist/types/utils/test/axe.d.ts +81 -0
  780. package/dist/types/utils/test/host-strip.d.ts +10 -0
  781. package/dist/types/utils/test/reconnect-safety.d.ts +11 -0
  782. package/dist/types/utils/test/reduced-motion.d.ts +30 -0
  783. package/dist/types/utils/truncation-tooltip.d.ts +88 -0
  784. package/dist/types/utils/types.d.ts +13 -2
  785. package/dist/types/utils/utils.d.ts +37 -2
  786. package/dist/vscode.html-data.json +11913 -0
  787. package/hydrate/index.d.ts +58 -7
  788. package/hydrate/index.js +29932 -3726
  789. package/hydrate/index.mjs +29929 -3725
  790. package/package.json +52 -26
  791. package/readme.md +26 -55
  792. package/components/closest.js.map +0 -1
  793. package/components/index.js.map +0 -1
  794. package/components/index2.js.map +0 -1
  795. package/components/pds-accordion.js.map +0 -1
  796. package/components/pds-avatar.js.map +0 -1
  797. package/components/pds-box.js.map +0 -1
  798. package/components/pds-button.js.map +0 -1
  799. package/components/pds-button2.js.map +0 -1
  800. package/components/pds-checkbox.js.map +0 -1
  801. package/components/pds-checkbox2.js.map +0 -1
  802. package/components/pds-chip.js.map +0 -1
  803. package/components/pds-copytext.js.map +0 -1
  804. package/components/pds-divider.js.map +0 -1
  805. package/components/pds-icon.js.map +0 -1
  806. package/components/pds-icon2.js.map +0 -1
  807. package/components/pds-image.js.map +0 -1
  808. package/components/pds-input.js.map +0 -1
  809. package/components/pds-label.js +0 -39
  810. package/components/pds-label.js.map +0 -1
  811. package/components/pds-link.js.map +0 -1
  812. package/components/pds-loader.js.map +0 -1
  813. package/components/pds-progress.js.map +0 -1
  814. package/components/pds-radio.js.map +0 -1
  815. package/components/pds-row.js.map +0 -1
  816. package/components/pds-sortable-item.js.map +0 -1
  817. package/components/pds-sortable.js.map +0 -1
  818. package/components/pds-switch.js.map +0 -1
  819. package/components/pds-tab.js.map +0 -1
  820. package/components/pds-table-body.js.map +0 -1
  821. package/components/pds-table-cell.js.map +0 -1
  822. package/components/pds-table-cell2.js.map +0 -1
  823. package/components/pds-table-head-cell.js.map +0 -1
  824. package/components/pds-table-head-cell2.js.map +0 -1
  825. package/components/pds-table-head.js.map +0 -1
  826. package/components/pds-table-row.js.map +0 -1
  827. package/components/pds-table.js.map +0 -1
  828. package/components/pds-tabpanel.js.map +0 -1
  829. package/components/pds-tabs.js.map +0 -1
  830. package/components/pds-textarea.js.map +0 -1
  831. package/components/pds-tooltip.js.map +0 -1
  832. package/dist/cjs/app-globals-3a1e7e63.js +0 -7
  833. package/dist/cjs/app-globals-3a1e7e63.js.map +0 -1
  834. package/dist/cjs/closest-b45138d3.js +0 -13
  835. package/dist/cjs/closest-b45138d3.js.map +0 -1
  836. package/dist/cjs/index-46fb0736.js +0 -1956
  837. package/dist/cjs/index-46fb0736.js.map +0 -1
  838. package/dist/cjs/index-de3f0730.js +0 -24
  839. package/dist/cjs/index-de3f0730.js.map +0 -1
  840. package/dist/cjs/index.cjs.js.map +0 -1
  841. package/dist/cjs/loader.cjs.js.map +0 -1
  842. package/dist/cjs/pds-accordion.cjs.entry.js.map +0 -1
  843. package/dist/cjs/pds-avatar.cjs.entry.js.map +0 -1
  844. package/dist/cjs/pds-box.cjs.entry.js.map +0 -1
  845. package/dist/cjs/pds-button.cjs.entry.js.map +0 -1
  846. package/dist/cjs/pds-checkbox.cjs.entry.js.map +0 -1
  847. package/dist/cjs/pds-chip.cjs.entry.js.map +0 -1
  848. package/dist/cjs/pds-copytext.cjs.entry.js.map +0 -1
  849. package/dist/cjs/pds-divider.cjs.entry.js.map +0 -1
  850. package/dist/cjs/pds-icon.cjs.entry.js.map +0 -1
  851. package/dist/cjs/pds-image.cjs.entry.js.map +0 -1
  852. package/dist/cjs/pds-input.cjs.entry.js.map +0 -1
  853. package/dist/cjs/pds-label-7aabdc4e.js +0 -44
  854. package/dist/cjs/pds-label-7aabdc4e.js.map +0 -1
  855. package/dist/cjs/pds-link.cjs.entry.js.map +0 -1
  856. package/dist/cjs/pds-loader.cjs.entry.js.map +0 -1
  857. package/dist/cjs/pds-progress.cjs.entry.js.map +0 -1
  858. package/dist/cjs/pds-radio.cjs.entry.js.map +0 -1
  859. package/dist/cjs/pds-row.cjs.entry.js.map +0 -1
  860. package/dist/cjs/pds-sortable-item.cjs.entry.js.map +0 -1
  861. package/dist/cjs/pds-sortable.cjs.entry.js.map +0 -1
  862. package/dist/cjs/pds-switch.cjs.entry.js.map +0 -1
  863. package/dist/cjs/pds-tab.cjs.entry.js.map +0 -1
  864. package/dist/cjs/pds-table-body.cjs.entry.js.map +0 -1
  865. package/dist/cjs/pds-table-cell.cjs.entry.js.map +0 -1
  866. package/dist/cjs/pds-table-head-cell.cjs.entry.js.map +0 -1
  867. package/dist/cjs/pds-table-head.cjs.entry.js.map +0 -1
  868. package/dist/cjs/pds-table-row.cjs.entry.js.map +0 -1
  869. package/dist/cjs/pds-table.cjs.entry.js.map +0 -1
  870. package/dist/cjs/pds-tabpanel.cjs.entry.js.map +0 -1
  871. package/dist/cjs/pds-tabs.cjs.entry.js.map +0 -1
  872. package/dist/cjs/pds-textarea.cjs.entry.js.map +0 -1
  873. package/dist/cjs/pds-tooltip.cjs.entry.js.map +0 -1
  874. package/dist/cjs/pine-core.cjs.js.map +0 -1
  875. package/dist/collection/components/_internal/pds-label/pds-label.js.map +0 -1
  876. package/dist/collection/components/pds-accordion/pds-accordion.js.map +0 -1
  877. package/dist/collection/components/pds-avatar/pds-avatar.js.map +0 -1
  878. package/dist/collection/components/pds-box/pds-box.js.map +0 -1
  879. package/dist/collection/components/pds-button/pds-button.js.map +0 -1
  880. package/dist/collection/components/pds-checkbox/checkbox-interface.js.map +0 -1
  881. package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +0 -1
  882. package/dist/collection/components/pds-chip/pds-chip.js.map +0 -1
  883. package/dist/collection/components/pds-copytext/pds-copytext.js.map +0 -1
  884. package/dist/collection/components/pds-divider/pds-divider.js.map +0 -1
  885. package/dist/collection/components/pds-image/pds-image.js.map +0 -1
  886. package/dist/collection/components/pds-input/pds-input.js.map +0 -1
  887. package/dist/collection/components/pds-link/pds-link.js.map +0 -1
  888. package/dist/collection/components/pds-loader/pds-loader.js.map +0 -1
  889. package/dist/collection/components/pds-progress/pds-progress.js.map +0 -1
  890. package/dist/collection/components/pds-radio/pds-radio.js.map +0 -1
  891. package/dist/collection/components/pds-row/pds-row.js.map +0 -1
  892. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js.map +0 -1
  893. package/dist/collection/components/pds-sortable/pds-sortable.js.map +0 -1
  894. package/dist/collection/components/pds-sortable/sortable-interface.js.map +0 -1
  895. package/dist/collection/components/pds-switch/pds-switch.js.map +0 -1
  896. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js.map +0 -1
  897. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js.map +0 -1
  898. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js.map +0 -1
  899. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js.map +0 -1
  900. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js.map +0 -1
  901. package/dist/collection/components/pds-table/pds-table.js.map +0 -1
  902. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js.map +0 -1
  903. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js.map +0 -1
  904. package/dist/collection/components/pds-tabs/pds-tabs.js.map +0 -1
  905. package/dist/collection/components/pds-textarea/pds-textarea.js.map +0 -1
  906. package/dist/collection/components/pds-textarea/textarea-interface.js.map +0 -1
  907. package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +0 -1
  908. package/dist/collection/global/pine-ui-global.js.map +0 -1
  909. package/dist/collection/index.js.map +0 -1
  910. package/dist/collection/stories/_helpers/index.js +0 -15
  911. package/dist/collection/stories/_helpers/index.js.map +0 -1
  912. package/dist/collection/utils/closest.js.map +0 -1
  913. package/dist/collection/utils/form.js.map +0 -1
  914. package/dist/collection/utils/overlay.js.map +0 -1
  915. package/dist/collection/utils/types.js.map +0 -1
  916. package/dist/collection/utils/utils.js.map +0 -1
  917. package/dist/esm/app-globals-0f993ce5.js +0 -5
  918. package/dist/esm/app-globals-0f993ce5.js.map +0 -1
  919. package/dist/esm/closest-d2d192be.js +0 -11
  920. package/dist/esm/closest-d2d192be.js.map +0 -1
  921. package/dist/esm/index-2a33b470.js +0 -1927
  922. package/dist/esm/index-2a33b470.js.map +0 -1
  923. package/dist/esm/index-a1e2f9af.js +0 -14
  924. package/dist/esm/index-a1e2f9af.js.map +0 -1
  925. package/dist/esm/index.js.map +0 -1
  926. package/dist/esm/loader.js.map +0 -1
  927. package/dist/esm/pds-accordion.entry.js.map +0 -1
  928. package/dist/esm/pds-avatar.entry.js.map +0 -1
  929. package/dist/esm/pds-box.entry.js.map +0 -1
  930. package/dist/esm/pds-button.entry.js.map +0 -1
  931. package/dist/esm/pds-checkbox.entry.js.map +0 -1
  932. package/dist/esm/pds-chip.entry.js.map +0 -1
  933. package/dist/esm/pds-copytext.entry.js.map +0 -1
  934. package/dist/esm/pds-divider.entry.js.map +0 -1
  935. package/dist/esm/pds-icon.entry.js.map +0 -1
  936. package/dist/esm/pds-image.entry.js.map +0 -1
  937. package/dist/esm/pds-input.entry.js.map +0 -1
  938. package/dist/esm/pds-label-31a5848b.js +0 -39
  939. package/dist/esm/pds-label-31a5848b.js.map +0 -1
  940. package/dist/esm/pds-link.entry.js.map +0 -1
  941. package/dist/esm/pds-loader.entry.js.map +0 -1
  942. package/dist/esm/pds-progress.entry.js.map +0 -1
  943. package/dist/esm/pds-radio.entry.js.map +0 -1
  944. package/dist/esm/pds-row.entry.js.map +0 -1
  945. package/dist/esm/pds-sortable-item.entry.js.map +0 -1
  946. package/dist/esm/pds-sortable.entry.js.map +0 -1
  947. package/dist/esm/pds-switch.entry.js.map +0 -1
  948. package/dist/esm/pds-tab.entry.js.map +0 -1
  949. package/dist/esm/pds-table-body.entry.js.map +0 -1
  950. package/dist/esm/pds-table-cell.entry.js.map +0 -1
  951. package/dist/esm/pds-table-head-cell.entry.js.map +0 -1
  952. package/dist/esm/pds-table-head.entry.js.map +0 -1
  953. package/dist/esm/pds-table-row.entry.js.map +0 -1
  954. package/dist/esm/pds-table.entry.js.map +0 -1
  955. package/dist/esm/pds-tabpanel.entry.js.map +0 -1
  956. package/dist/esm/pds-tabs.entry.js.map +0 -1
  957. package/dist/esm/pds-textarea.entry.js.map +0 -1
  958. package/dist/esm/pds-tooltip.entry.js.map +0 -1
  959. package/dist/esm/pine-core.js.map +0 -1
  960. package/dist/esm-es5/app-globals-0f993ce5.js +0 -2
  961. package/dist/esm-es5/app-globals-0f993ce5.js.map +0 -1
  962. package/dist/esm-es5/closest-d2d192be.js +0 -2
  963. package/dist/esm-es5/closest-d2d192be.js.map +0 -1
  964. package/dist/esm-es5/index-2a33b470.js +0 -3
  965. package/dist/esm-es5/index-2a33b470.js.map +0 -1
  966. package/dist/esm-es5/index-a1e2f9af.js +0 -2
  967. package/dist/esm-es5/index-a1e2f9af.js.map +0 -1
  968. package/dist/esm-es5/index.js.map +0 -1
  969. package/dist/esm-es5/loader.js.map +0 -1
  970. package/dist/esm-es5/pds-accordion.entry.js.map +0 -1
  971. package/dist/esm-es5/pds-avatar.entry.js.map +0 -1
  972. package/dist/esm-es5/pds-box.entry.js.map +0 -1
  973. package/dist/esm-es5/pds-button.entry.js.map +0 -1
  974. package/dist/esm-es5/pds-checkbox.entry.js.map +0 -1
  975. package/dist/esm-es5/pds-chip.entry.js.map +0 -1
  976. package/dist/esm-es5/pds-copytext.entry.js.map +0 -1
  977. package/dist/esm-es5/pds-divider.entry.js.map +0 -1
  978. package/dist/esm-es5/pds-icon.entry.js.map +0 -1
  979. package/dist/esm-es5/pds-image.entry.js.map +0 -1
  980. package/dist/esm-es5/pds-input.entry.js.map +0 -1
  981. package/dist/esm-es5/pds-label-31a5848b.js +0 -2
  982. package/dist/esm-es5/pds-label-31a5848b.js.map +0 -1
  983. package/dist/esm-es5/pds-link.entry.js.map +0 -1
  984. package/dist/esm-es5/pds-loader.entry.js.map +0 -1
  985. package/dist/esm-es5/pds-progress.entry.js.map +0 -1
  986. package/dist/esm-es5/pds-radio.entry.js.map +0 -1
  987. package/dist/esm-es5/pds-row.entry.js.map +0 -1
  988. package/dist/esm-es5/pds-sortable-item.entry.js.map +0 -1
  989. package/dist/esm-es5/pds-sortable.entry.js.map +0 -1
  990. package/dist/esm-es5/pds-switch.entry.js.map +0 -1
  991. package/dist/esm-es5/pds-tab.entry.js.map +0 -1
  992. package/dist/esm-es5/pds-table-body.entry.js.map +0 -1
  993. package/dist/esm-es5/pds-table-cell.entry.js.map +0 -1
  994. package/dist/esm-es5/pds-table-head-cell.entry.js.map +0 -1
  995. package/dist/esm-es5/pds-table-head.entry.js.map +0 -1
  996. package/dist/esm-es5/pds-table-row.entry.js.map +0 -1
  997. package/dist/esm-es5/pds-table.entry.js.map +0 -1
  998. package/dist/esm-es5/pds-tabpanel.entry.js.map +0 -1
  999. package/dist/esm-es5/pds-tabs.entry.js.map +0 -1
  1000. package/dist/esm-es5/pds-textarea.entry.js.map +0 -1
  1001. package/dist/esm-es5/pds-tooltip.entry.js.map +0 -1
  1002. package/dist/esm-es5/pine-core.js.map +0 -1
  1003. package/dist/pine-core/index.esm.js.map +0 -1
  1004. package/dist/pine-core/p-06c33261.system.entry.js +0 -2
  1005. package/dist/pine-core/p-06c33261.system.entry.js.map +0 -1
  1006. package/dist/pine-core/p-07f80cb6.entry.js +0 -2
  1007. package/dist/pine-core/p-07f80cb6.entry.js.map +0 -1
  1008. package/dist/pine-core/p-09b1c7f1.system.entry.js +0 -2
  1009. package/dist/pine-core/p-09b1c7f1.system.entry.js.map +0 -1
  1010. package/dist/pine-core/p-0a4b1ce9.system.entry.js +0 -2
  1011. package/dist/pine-core/p-0a4b1ce9.system.entry.js.map +0 -1
  1012. package/dist/pine-core/p-0b541f88.js +0 -3
  1013. package/dist/pine-core/p-0b541f88.js.map +0 -1
  1014. package/dist/pine-core/p-0b77685e.js +0 -2
  1015. package/dist/pine-core/p-0b77685e.js.map +0 -1
  1016. package/dist/pine-core/p-0d6fafef.system.entry.js +0 -2
  1017. package/dist/pine-core/p-0d6fafef.system.entry.js.map +0 -1
  1018. package/dist/pine-core/p-0e1c0d03.entry.js +0 -8
  1019. package/dist/pine-core/p-0e1c0d03.entry.js.map +0 -1
  1020. package/dist/pine-core/p-0e936138.entry.js +0 -2
  1021. package/dist/pine-core/p-0e936138.entry.js.map +0 -1
  1022. package/dist/pine-core/p-143795e5.system.entry.js +0 -2
  1023. package/dist/pine-core/p-143795e5.system.entry.js.map +0 -1
  1024. package/dist/pine-core/p-1f2b0be3.system.entry.js +0 -2
  1025. package/dist/pine-core/p-1f2b0be3.system.entry.js.map +0 -1
  1026. package/dist/pine-core/p-224a435b.system.js +0 -2
  1027. package/dist/pine-core/p-224a435b.system.js.map +0 -1
  1028. package/dist/pine-core/p-31056348.system.entry.js +0 -2
  1029. package/dist/pine-core/p-31056348.system.entry.js.map +0 -1
  1030. package/dist/pine-core/p-32498622.system.entry.js +0 -2
  1031. package/dist/pine-core/p-32498622.system.entry.js.map +0 -1
  1032. package/dist/pine-core/p-3261fdf5.system.entry.js +0 -2
  1033. package/dist/pine-core/p-3261fdf5.system.entry.js.map +0 -1
  1034. package/dist/pine-core/p-32e41e3d.system.entry.js +0 -2
  1035. package/dist/pine-core/p-32e41e3d.system.entry.js.map +0 -1
  1036. package/dist/pine-core/p-34631565.system.js +0 -2
  1037. package/dist/pine-core/p-34631565.system.js.map +0 -1
  1038. package/dist/pine-core/p-3ba3d44c.entry.js +0 -2
  1039. package/dist/pine-core/p-3ba3d44c.entry.js.map +0 -1
  1040. package/dist/pine-core/p-46161cec.entry.js +0 -2
  1041. package/dist/pine-core/p-46161cec.entry.js.map +0 -1
  1042. package/dist/pine-core/p-4f69a7b7.entry.js +0 -2
  1043. package/dist/pine-core/p-4f69a7b7.entry.js.map +0 -1
  1044. package/dist/pine-core/p-50a23474.entry.js +0 -2
  1045. package/dist/pine-core/p-50a23474.entry.js.map +0 -1
  1046. package/dist/pine-core/p-511bf308.entry.js +0 -2
  1047. package/dist/pine-core/p-511bf308.entry.js.map +0 -1
  1048. package/dist/pine-core/p-52515d64.system.entry.js +0 -2
  1049. package/dist/pine-core/p-52515d64.system.entry.js.map +0 -1
  1050. package/dist/pine-core/p-56ba5cbf.system.js +0 -2
  1051. package/dist/pine-core/p-56ba5cbf.system.js.map +0 -1
  1052. package/dist/pine-core/p-5a384517.entry.js +0 -2
  1053. package/dist/pine-core/p-5a384517.entry.js.map +0 -1
  1054. package/dist/pine-core/p-5bee6677.system.entry.js +0 -2
  1055. package/dist/pine-core/p-5bee6677.system.entry.js.map +0 -1
  1056. package/dist/pine-core/p-5df76e04.system.js +0 -2
  1057. package/dist/pine-core/p-5df76e04.system.js.map +0 -1
  1058. package/dist/pine-core/p-62ec9a0f.system.entry.js +0 -2
  1059. package/dist/pine-core/p-62ec9a0f.system.entry.js.map +0 -1
  1060. package/dist/pine-core/p-6a7a864f.entry.js +0 -2
  1061. package/dist/pine-core/p-6a7a864f.entry.js.map +0 -1
  1062. package/dist/pine-core/p-6ae2f0f5.entry.js +0 -2
  1063. package/dist/pine-core/p-6ae2f0f5.entry.js.map +0 -1
  1064. package/dist/pine-core/p-6e146962.entry.js +0 -2
  1065. package/dist/pine-core/p-6e146962.entry.js.map +0 -1
  1066. package/dist/pine-core/p-6ff9ebfa.entry.js +0 -2
  1067. package/dist/pine-core/p-6ff9ebfa.entry.js.map +0 -1
  1068. package/dist/pine-core/p-701ba882.entry.js +0 -2
  1069. package/dist/pine-core/p-701ba882.entry.js.map +0 -1
  1070. package/dist/pine-core/p-73eb1722.entry.js +0 -2
  1071. package/dist/pine-core/p-73eb1722.entry.js.map +0 -1
  1072. package/dist/pine-core/p-78c6c37a.system.entry.js +0 -2
  1073. package/dist/pine-core/p-78c6c37a.system.entry.js.map +0 -1
  1074. package/dist/pine-core/p-79ca4ab9.system.entry.js +0 -2
  1075. package/dist/pine-core/p-79ca4ab9.system.entry.js.map +0 -1
  1076. package/dist/pine-core/p-7c33a02e.entry.js +0 -2
  1077. package/dist/pine-core/p-7c33a02e.entry.js.map +0 -1
  1078. package/dist/pine-core/p-7dac515e.system.entry.js +0 -2
  1079. package/dist/pine-core/p-7dac515e.system.entry.js.map +0 -1
  1080. package/dist/pine-core/p-7ea6838b.system.entry.js +0 -2
  1081. package/dist/pine-core/p-7ea6838b.system.entry.js.map +0 -1
  1082. package/dist/pine-core/p-7ebfdef4.system.entry.js +0 -2
  1083. package/dist/pine-core/p-7ebfdef4.system.entry.js.map +0 -1
  1084. package/dist/pine-core/p-829777e4.system.entry.js +0 -2
  1085. package/dist/pine-core/p-829777e4.system.entry.js.map +0 -1
  1086. package/dist/pine-core/p-8317c6c2.js +0 -2
  1087. package/dist/pine-core/p-8317c6c2.js.map +0 -1
  1088. package/dist/pine-core/p-8469b65a.entry.js +0 -2
  1089. package/dist/pine-core/p-8469b65a.entry.js.map +0 -1
  1090. package/dist/pine-core/p-8d8de5fd.entry.js +0 -2
  1091. package/dist/pine-core/p-8d8de5fd.entry.js.map +0 -1
  1092. package/dist/pine-core/p-8df8debd.entry.js +0 -2
  1093. package/dist/pine-core/p-8df8debd.entry.js.map +0 -1
  1094. package/dist/pine-core/p-8f73bf14.system.entry.js +0 -2
  1095. package/dist/pine-core/p-8f73bf14.system.entry.js.map +0 -1
  1096. package/dist/pine-core/p-8fbec4fe.system.js +0 -2
  1097. package/dist/pine-core/p-8fbec4fe.system.js.map +0 -1
  1098. package/dist/pine-core/p-909b305c.system.entry.js +0 -2
  1099. package/dist/pine-core/p-909b305c.system.entry.js.map +0 -1
  1100. package/dist/pine-core/p-936d96ec.system.entry.js +0 -9
  1101. package/dist/pine-core/p-936d96ec.system.entry.js.map +0 -1
  1102. package/dist/pine-core/p-9583e6d5.entry.js +0 -2
  1103. package/dist/pine-core/p-9583e6d5.entry.js.map +0 -1
  1104. package/dist/pine-core/p-96c750d1.entry.js +0 -2
  1105. package/dist/pine-core/p-96c750d1.entry.js.map +0 -1
  1106. package/dist/pine-core/p-a03e587c.entry.js +0 -2
  1107. package/dist/pine-core/p-a03e587c.entry.js.map +0 -1
  1108. package/dist/pine-core/p-a79a8159.entry.js +0 -2
  1109. package/dist/pine-core/p-a79a8159.entry.js.map +0 -1
  1110. package/dist/pine-core/p-a962fe8e.entry.js +0 -2
  1111. package/dist/pine-core/p-a962fe8e.entry.js.map +0 -1
  1112. package/dist/pine-core/p-ac228abf.entry.js +0 -2
  1113. package/dist/pine-core/p-ac228abf.entry.js.map +0 -1
  1114. package/dist/pine-core/p-ad4238c9.system.entry.js +0 -2
  1115. package/dist/pine-core/p-ad4238c9.system.entry.js.map +0 -1
  1116. package/dist/pine-core/p-af7df3c2.system.entry.js +0 -2
  1117. package/dist/pine-core/p-af7df3c2.system.entry.js.map +0 -1
  1118. package/dist/pine-core/p-b18b20f4.system.js +0 -2
  1119. package/dist/pine-core/p-b18b20f4.system.js.map +0 -1
  1120. package/dist/pine-core/p-b4518566.entry.js +0 -2
  1121. package/dist/pine-core/p-b4518566.entry.js.map +0 -1
  1122. package/dist/pine-core/p-b5c7e02a.entry.js +0 -2
  1123. package/dist/pine-core/p-b5c7e02a.entry.js.map +0 -1
  1124. package/dist/pine-core/p-bc20946b.system.entry.js +0 -2
  1125. package/dist/pine-core/p-bc20946b.system.entry.js.map +0 -1
  1126. package/dist/pine-core/p-c52d0465.system.entry.js +0 -2
  1127. package/dist/pine-core/p-c52d0465.system.entry.js.map +0 -1
  1128. package/dist/pine-core/p-c84cc2f8.system.entry.js +0 -2
  1129. package/dist/pine-core/p-c84cc2f8.system.entry.js.map +0 -1
  1130. package/dist/pine-core/p-ca239d59.system.entry.js +0 -2
  1131. package/dist/pine-core/p-ca239d59.system.entry.js.map +0 -1
  1132. package/dist/pine-core/p-cfacf2e0.system.entry.js +0 -2
  1133. package/dist/pine-core/p-cfacf2e0.system.entry.js.map +0 -1
  1134. package/dist/pine-core/p-e1255160.js +0 -2
  1135. package/dist/pine-core/p-e1255160.js.map +0 -1
  1136. package/dist/pine-core/p-e4b3115c.entry.js +0 -2
  1137. package/dist/pine-core/p-e4b3115c.entry.js.map +0 -1
  1138. package/dist/pine-core/p-e60fccc0.js +0 -2
  1139. package/dist/pine-core/p-e60fccc0.js.map +0 -1
  1140. package/dist/pine-core/p-eb56f262.system.entry.js +0 -2
  1141. package/dist/pine-core/p-eb56f262.system.entry.js.map +0 -1
  1142. package/dist/pine-core/p-ec484bf6.entry.js +0 -2
  1143. package/dist/pine-core/p-ec484bf6.entry.js.map +0 -1
  1144. package/dist/pine-core/p-f59d4a46.entry.js +0 -2
  1145. package/dist/pine-core/p-f59d4a46.entry.js.map +0 -1
  1146. package/dist/pine-core/p-f74c489d.system.js +0 -3
  1147. package/dist/pine-core/p-f74c489d.system.js.map +0 -1
  1148. package/dist/pine-core/pine-core.esm.js.map +0 -1
  1149. package/dist/pine-core/svg/access-key.svg +0 -1
  1150. package/dist/pine-core/svg/add-circle.svg +0 -1
  1151. package/dist/pine-core/svg/add-image.svg +0 -1
  1152. package/dist/pine-core/svg/add-small.svg +0 -1
  1153. package/dist/pine-core/svg/add-square.svg +0 -1
  1154. package/dist/pine-core/svg/add.svg +0 -1
  1155. package/dist/pine-core/svg/advanced.svg +0 -1
  1156. package/dist/pine-core/svg/ai-sparkle.svg +0 -1
  1157. package/dist/pine-core/svg/ai-writer-filled.svg +0 -1
  1158. package/dist/pine-core/svg/ai-writer.svg +0 -1
  1159. package/dist/pine-core/svg/align-center.svg +0 -1
  1160. package/dist/pine-core/svg/align-justify.svg +0 -1
  1161. package/dist/pine-core/svg/align-left.svg +0 -1
  1162. package/dist/pine-core/svg/align-right.svg +0 -1
  1163. package/dist/pine-core/svg/app-store.svg +0 -1
  1164. package/dist/pine-core/svg/archive.svg +0 -1
  1165. package/dist/pine-core/svg/arrow-corner.svg +0 -1
  1166. package/dist/pine-core/svg/arrow-down.svg +0 -1
  1167. package/dist/pine-core/svg/arrow-left.svg +0 -1
  1168. package/dist/pine-core/svg/arrow-right.svg +0 -1
  1169. package/dist/pine-core/svg/arrow-up.svg +0 -1
  1170. package/dist/pine-core/svg/assessment.svg +0 -1
  1171. package/dist/pine-core/svg/at-sign.svg +0 -1
  1172. package/dist/pine-core/svg/attach.svg +0 -1
  1173. package/dist/pine-core/svg/automations.svg +0 -1
  1174. package/dist/pine-core/svg/ban.svg +0 -1
  1175. package/dist/pine-core/svg/bank.svg +0 -1
  1176. package/dist/pine-core/svg/bar-chart-10-tone.svg +0 -1
  1177. package/dist/pine-core/svg/bell-01-tone.svg +0 -1
  1178. package/dist/pine-core/svg/bell.svg +0 -1
  1179. package/dist/pine-core/svg/block.svg +0 -1
  1180. package/dist/pine-core/svg/blog-filled.svg +0 -1
  1181. package/dist/pine-core/svg/blog.svg +0 -1
  1182. package/dist/pine-core/svg/bold.svg +0 -1
  1183. package/dist/pine-core/svg/broadcast.svg +0 -1
  1184. package/dist/pine-core/svg/bulb.svg +0 -1
  1185. package/dist/pine-core/svg/button.svg +0 -1
  1186. package/dist/pine-core/svg/calendar-date.svg +0 -1
  1187. package/dist/pine-core/svg/calendar-schedule.svg +0 -1
  1188. package/dist/pine-core/svg/calendar-simple.svg +0 -1
  1189. package/dist/pine-core/svg/card-amex.svg +0 -1
  1190. package/dist/pine-core/svg/card-android.svg +0 -1
  1191. package/dist/pine-core/svg/card-apple.svg +0 -1
  1192. package/dist/pine-core/svg/card-diners-club.svg +0 -1
  1193. package/dist/pine-core/svg/card-discover.svg +0 -1
  1194. package/dist/pine-core/svg/card-generic.svg +0 -1
  1195. package/dist/pine-core/svg/card-gpay.svg +0 -1
  1196. package/dist/pine-core/svg/card-mastercard.svg +0 -1
  1197. package/dist/pine-core/svg/card-paypal.svg +0 -1
  1198. package/dist/pine-core/svg/card-stripe.svg +0 -1
  1199. package/dist/pine-core/svg/card-update.svg +0 -1
  1200. package/dist/pine-core/svg/card-visa.svg +0 -1
  1201. package/dist/pine-core/svg/caret-down.svg +0 -1
  1202. package/dist/pine-core/svg/caret-left.svg +0 -1
  1203. package/dist/pine-core/svg/caret-right.svg +0 -1
  1204. package/dist/pine-core/svg/caret-up.svg +0 -1
  1205. package/dist/pine-core/svg/cart-add.svg +0 -1
  1206. package/dist/pine-core/svg/cart.svg +0 -1
  1207. package/dist/pine-core/svg/certificate.svg +0 -1
  1208. package/dist/pine-core/svg/chart-filled.svg +0 -1
  1209. package/dist/pine-core/svg/chart.svg +0 -1
  1210. package/dist/pine-core/svg/check-circle-filled.svg +0 -1
  1211. package/dist/pine-core/svg/check-circle.svg +0 -1
  1212. package/dist/pine-core/svg/check.svg +0 -1
  1213. package/dist/pine-core/svg/circle-1.svg +0 -1
  1214. package/dist/pine-core/svg/circle-2.svg +0 -1
  1215. package/dist/pine-core/svg/circle-3.svg +0 -1
  1216. package/dist/pine-core/svg/circle-4.svg +0 -1
  1217. package/dist/pine-core/svg/circle-5.svg +0 -1
  1218. package/dist/pine-core/svg/circle-6.svg +0 -1
  1219. package/dist/pine-core/svg/circle-7.svg +0 -1
  1220. package/dist/pine-core/svg/circle-8.svg +0 -1
  1221. package/dist/pine-core/svg/circle-9.svg +0 -1
  1222. package/dist/pine-core/svg/circle-a.svg +0 -1
  1223. package/dist/pine-core/svg/circle-b.svg +0 -1
  1224. package/dist/pine-core/svg/circle-dashed.svg +0 -1
  1225. package/dist/pine-core/svg/clapperboard-tone.svg +0 -1
  1226. package/dist/pine-core/svg/clock.svg +0 -1
  1227. package/dist/pine-core/svg/closed-captions.svg +0 -1
  1228. package/dist/pine-core/svg/cloud-upload.svg +0 -1
  1229. package/dist/pine-core/svg/code-block.svg +0 -1
  1230. package/dist/pine-core/svg/code.svg +0 -1
  1231. package/dist/pine-core/svg/color.svg +0 -1
  1232. package/dist/pine-core/svg/columns.svg +0 -1
  1233. package/dist/pine-core/svg/comment-no.svg +0 -1
  1234. package/dist/pine-core/svg/comment.svg +0 -1
  1235. package/dist/pine-core/svg/connect.svg +0 -1
  1236. package/dist/pine-core/svg/contact.svg +0 -1
  1237. package/dist/pine-core/svg/conversation.svg +0 -1
  1238. package/dist/pine-core/svg/copy.svg +0 -1
  1239. package/dist/pine-core/svg/coupon.svg +0 -1
  1240. package/dist/pine-core/svg/course-filled.svg +0 -1
  1241. package/dist/pine-core/svg/course.svg +0 -1
  1242. package/dist/pine-core/svg/creator-studio-filled.svg +0 -1
  1243. package/dist/pine-core/svg/creator-studio.svg +0 -1
  1244. package/dist/pine-core/svg/credit-card-02-tone.svg +0 -1
  1245. package/dist/pine-core/svg/cube-01-tone.svg +0 -1
  1246. package/dist/pine-core/svg/cursor-pointer.svg +0 -1
  1247. package/dist/pine-core/svg/cursor.svg +0 -1
  1248. package/dist/pine-core/svg/custom-field.svg +0 -1
  1249. package/dist/pine-core/svg/customize.svg +0 -1
  1250. package/dist/pine-core/svg/danger-filled.svg +0 -1
  1251. package/dist/pine-core/svg/danger.svg +0 -1
  1252. package/dist/pine-core/svg/delete-circle.svg +0 -1
  1253. package/dist/pine-core/svg/delete-key.svg +0 -1
  1254. package/dist/pine-core/svg/delete-x.svg +0 -1
  1255. package/dist/pine-core/svg/dollar.svg +0 -1
  1256. package/dist/pine-core/svg/dot-menu-horizontal.svg +0 -1
  1257. package/dist/pine-core/svg/dots-horizontal-tone.svg +0 -1
  1258. package/dist/pine-core/svg/down-small.svg +0 -1
  1259. package/dist/pine-core/svg/download.svg +0 -1
  1260. package/dist/pine-core/svg/downsell.svg +0 -1
  1261. package/dist/pine-core/svg/draft.svg +0 -1
  1262. package/dist/pine-core/svg/drawer-collapse.svg +0 -1
  1263. package/dist/pine-core/svg/drawer-expand.svg +0 -1
  1264. package/dist/pine-core/svg/drop.svg +0 -1
  1265. package/dist/pine-core/svg/duplicate.svg +0 -1
  1266. package/dist/pine-core/svg/editor-filled.svg +0 -1
  1267. package/dist/pine-core/svg/editor.svg +0 -1
  1268. package/dist/pine-core/svg/email-activity.svg +0 -1
  1269. package/dist/pine-core/svg/emoji.svg +0 -1
  1270. package/dist/pine-core/svg/enlarge-vertical.svg +0 -1
  1271. package/dist/pine-core/svg/enlarge.svg +0 -1
  1272. package/dist/pine-core/svg/expand.svg +0 -1
  1273. package/dist/pine-core/svg/favorite.svg +0 -1
  1274. package/dist/pine-core/svg/feedback.svg +0 -1
  1275. package/dist/pine-core/svg/file-02.svg +0 -1
  1276. package/dist/pine-core/svg/file-money.svg +0 -1
  1277. package/dist/pine-core/svg/file.svg +0 -1
  1278. package/dist/pine-core/svg/filter.svg +0 -1
  1279. package/dist/pine-core/svg/flag.svg +0 -1
  1280. package/dist/pine-core/svg/flash-filled.svg +0 -1
  1281. package/dist/pine-core/svg/flash.svg +0 -1
  1282. package/dist/pine-core/svg/floppy-disk.svg +0 -1
  1283. package/dist/pine-core/svg/folder-group.svg +0 -1
  1284. package/dist/pine-core/svg/folder.svg +0 -1
  1285. package/dist/pine-core/svg/form-field.svg +0 -1
  1286. package/dist/pine-core/svg/form-filled.svg +0 -1
  1287. package/dist/pine-core/svg/form.svg +0 -1
  1288. package/dist/pine-core/svg/fullscreen.svg +0 -1
  1289. package/dist/pine-core/svg/funnel.svg +0 -1
  1290. package/dist/pine-core/svg/gear-filled.svg +0 -1
  1291. package/dist/pine-core/svg/gear.svg +0 -1
  1292. package/dist/pine-core/svg/grant-offer.svg +0 -1
  1293. package/dist/pine-core/svg/handle-2-vertical.svg +0 -1
  1294. package/dist/pine-core/svg/handle-2.svg +0 -1
  1295. package/dist/pine-core/svg/handle.svg +0 -1
  1296. package/dist/pine-core/svg/hashtag.svg +0 -1
  1297. package/dist/pine-core/svg/hd-video.svg +0 -1
  1298. package/dist/pine-core/svg/heading-1.svg +0 -1
  1299. package/dist/pine-core/svg/heading-2.svg +0 -1
  1300. package/dist/pine-core/svg/heading-3.svg +0 -1
  1301. package/dist/pine-core/svg/heading-4.svg +0 -1
  1302. package/dist/pine-core/svg/heading-5.svg +0 -1
  1303. package/dist/pine-core/svg/heading-6.svg +0 -1
  1304. package/dist/pine-core/svg/heading-large.svg +0 -1
  1305. package/dist/pine-core/svg/heading-small.svg +0 -1
  1306. package/dist/pine-core/svg/headset-tone.svg +0 -1
  1307. package/dist/pine-core/svg/headset.svg +0 -1
  1308. package/dist/pine-core/svg/help-filled.svg +0 -1
  1309. package/dist/pine-core/svg/help.svg +0 -1
  1310. package/dist/pine-core/svg/home-02-tone.svg +0 -1
  1311. package/dist/pine-core/svg/home-alt.svg +0 -1
  1312. package/dist/pine-core/svg/home-filled.svg +0 -1
  1313. package/dist/pine-core/svg/home.svg +0 -1
  1314. package/dist/pine-core/svg/horizontal-line.svg +0 -1
  1315. package/dist/pine-core/svg/image.svg +0 -1
  1316. package/dist/pine-core/svg/info-circle-filled.svg +0 -1
  1317. package/dist/pine-core/svg/info-circle.svg +0 -1
  1318. package/dist/pine-core/svg/ios-battery.svg +0 -1
  1319. package/dist/pine-core/svg/ios-data.svg +0 -1
  1320. package/dist/pine-core/svg/ios-wifi.svg +0 -1
  1321. package/dist/pine-core/svg/italic.svg +0 -1
  1322. package/dist/pine-core/svg/kajabi-filled.svg +0 -1
  1323. package/dist/pine-core/svg/kajabi.svg +0 -1
  1324. package/dist/pine-core/svg/klarna.svg +0 -1
  1325. package/dist/pine-core/svg/lab.svg +0 -1
  1326. package/dist/pine-core/svg/launch.svg +0 -1
  1327. package/dist/pine-core/svg/layout-grid.svg +0 -1
  1328. package/dist/pine-core/svg/layout-list.svg +0 -1
  1329. package/dist/pine-core/svg/left-small.svg +0 -1
  1330. package/dist/pine-core/svg/list-bullet.svg +0 -1
  1331. package/dist/pine-core/svg/list-details.svg +0 -1
  1332. package/dist/pine-core/svg/list-numbers.svg +0 -1
  1333. package/dist/pine-core/svg/location.svg +0 -1
  1334. package/dist/pine-core/svg/lock-alt.svg +0 -1
  1335. package/dist/pine-core/svg/lock.svg +0 -1
  1336. package/dist/pine-core/svg/logo-afterpay.svg +0 -1
  1337. package/dist/pine-core/svg/logo-facebook-round.svg +0 -1
  1338. package/dist/pine-core/svg/logo-facebook.svg +0 -1
  1339. package/dist/pine-core/svg/logo-instagram.svg +0 -1
  1340. package/dist/pine-core/svg/logo-linkedin.svg +0 -1
  1341. package/dist/pine-core/svg/logo-tiktok.svg +0 -1
  1342. package/dist/pine-core/svg/logo-twitter-x.svg +0 -1
  1343. package/dist/pine-core/svg/logo-twitter.svg +0 -1
  1344. package/dist/pine-core/svg/logo-youtube.svg +0 -1
  1345. package/dist/pine-core/svg/loop.svg +0 -1
  1346. package/dist/pine-core/svg/mail-01-tone.svg +0 -1
  1347. package/dist/pine-core/svg/mail-filled.svg +0 -1
  1348. package/dist/pine-core/svg/mail-open.svg +0 -1
  1349. package/dist/pine-core/svg/mail.svg +0 -1
  1350. package/dist/pine-core/svg/map.svg +0 -1
  1351. package/dist/pine-core/svg/mapped.svg +0 -1
  1352. package/dist/pine-core/svg/margin-left.svg +0 -1
  1353. package/dist/pine-core/svg/margin-right.svg +0 -1
  1354. package/dist/pine-core/svg/marker-filled.svg +0 -1
  1355. package/dist/pine-core/svg/marker.svg +0 -1
  1356. package/dist/pine-core/svg/megaphone-filled.svg +0 -1
  1357. package/dist/pine-core/svg/megaphone.svg +0 -1
  1358. package/dist/pine-core/svg/menu-alt.svg +0 -1
  1359. package/dist/pine-core/svg/menu-bordered.svg +0 -1
  1360. package/dist/pine-core/svg/menu.svg +0 -1
  1361. package/dist/pine-core/svg/merge.svg +0 -1
  1362. package/dist/pine-core/svg/microphone-off.svg +0 -1
  1363. package/dist/pine-core/svg/microphone.svg +0 -1
  1364. package/dist/pine-core/svg/monitor-03-tone.svg +0 -1
  1365. package/dist/pine-core/svg/monitor-filled.svg +0 -1
  1366. package/dist/pine-core/svg/monitor.svg +0 -1
  1367. package/dist/pine-core/svg/more-menu-filled.svg +0 -1
  1368. package/dist/pine-core/svg/more-menu.svg +0 -1
  1369. package/dist/pine-core/svg/move-left.svg +0 -1
  1370. package/dist/pine-core/svg/move-right.svg +0 -1
  1371. package/dist/pine-core/svg/multi-pay.svg +0 -1
  1372. package/dist/pine-core/svg/newsletter-2.svg +0 -1
  1373. package/dist/pine-core/svg/newsletter.svg +0 -1
  1374. package/dist/pine-core/svg/one-off-session.svg +0 -1
  1375. package/dist/pine-core/svg/one-time.svg +0 -1
  1376. package/dist/pine-core/svg/packages.svg +0 -1
  1377. package/dist/pine-core/svg/pause-circle.svg +0 -1
  1378. package/dist/pine-core/svg/pause.svg +0 -1
  1379. package/dist/pine-core/svg/payout.svg +0 -1
  1380. package/dist/pine-core/svg/pen.svg +0 -1
  1381. package/dist/pine-core/svg/phone-02-tone.svg +0 -1
  1382. package/dist/pine-core/svg/phone-portrait.svg +0 -1
  1383. package/dist/pine-core/svg/phone-toolbar-filled.svg +0 -1
  1384. package/dist/pine-core/svg/phone-toolbar.svg +0 -1
  1385. package/dist/pine-core/svg/play-circle.svg +0 -1
  1386. package/dist/pine-core/svg/play-outline.svg +0 -1
  1387. package/dist/pine-core/svg/play-store.svg +0 -1
  1388. package/dist/pine-core/svg/play.svg +0 -1
  1389. package/dist/pine-core/svg/plug.svg +0 -1
  1390. package/dist/pine-core/svg/premium.svg +0 -1
  1391. package/dist/pine-core/svg/present.svg +0 -1
  1392. package/dist/pine-core/svg/preview-off.svg +0 -1
  1393. package/dist/pine-core/svg/preview-on.svg +0 -1
  1394. package/dist/pine-core/svg/product-filled.svg +0 -1
  1395. package/dist/pine-core/svg/product.svg +0 -1
  1396. package/dist/pine-core/svg/question-circle.svg +0 -1
  1397. package/dist/pine-core/svg/quote.svg +0 -1
  1398. package/dist/pine-core/svg/redo.svg +0 -1
  1399. package/dist/pine-core/svg/refresh.svg +0 -1
  1400. package/dist/pine-core/svg/remove-circle.svg +0 -1
  1401. package/dist/pine-core/svg/remove.svg +0 -1
  1402. package/dist/pine-core/svg/rename.svg +0 -1
  1403. package/dist/pine-core/svg/reset-password.svg +0 -1
  1404. package/dist/pine-core/svg/restore.svg +0 -1
  1405. package/dist/pine-core/svg/right-small.svg +0 -1
  1406. package/dist/pine-core/svg/rocket-filled.svg +0 -1
  1407. package/dist/pine-core/svg/rocket.svg +0 -1
  1408. package/dist/pine-core/svg/round-dollar.svg +0 -1
  1409. package/dist/pine-core/svg/rows.svg +0 -1
  1410. package/dist/pine-core/svg/scissor.svg +0 -1
  1411. package/dist/pine-core/svg/screen-share-off.svg +0 -1
  1412. package/dist/pine-core/svg/screen-share-on.svg +0 -1
  1413. package/dist/pine-core/svg/search-md-tone.svg +0 -1
  1414. package/dist/pine-core/svg/search-small.svg +0 -1
  1415. package/dist/pine-core/svg/search.svg +0 -1
  1416. package/dist/pine-core/svg/send-message.svg +0 -1
  1417. package/dist/pine-core/svg/sequences.svg +0 -1
  1418. package/dist/pine-core/svg/settings-01-tone.svg +0 -1
  1419. package/dist/pine-core/svg/share.svg +0 -1
  1420. package/dist/pine-core/svg/skipped.svg +0 -1
  1421. package/dist/pine-core/svg/slash-divider.svg +0 -1
  1422. package/dist/pine-core/svg/speaker.svg +0 -1
  1423. package/dist/pine-core/svg/stack.svg +0 -1
  1424. package/dist/pine-core/svg/star.svg +0 -1
  1425. package/dist/pine-core/svg/stars-01-tone.svg +0 -1
  1426. package/dist/pine-core/svg/stop.svg +0 -1
  1427. package/dist/pine-core/svg/stopwatch.svg +0 -1
  1428. package/dist/pine-core/svg/strikethrough.svg +0 -1
  1429. package/dist/pine-core/svg/subscript.svg +0 -1
  1430. package/dist/pine-core/svg/subscriptions.svg +0 -1
  1431. package/dist/pine-core/svg/super-admin.svg +0 -1
  1432. package/dist/pine-core/svg/superscript.svg +0 -1
  1433. package/dist/pine-core/svg/sync.svg +0 -1
  1434. package/dist/pine-core/svg/tablet-landscape.svg +0 -1
  1435. package/dist/pine-core/svg/tablet-portrait.svg +0 -1
  1436. package/dist/pine-core/svg/tag-filled.svg +0 -1
  1437. package/dist/pine-core/svg/tag.svg +0 -1
  1438. package/dist/pine-core/svg/text-styles.svg +0 -1
  1439. package/dist/pine-core/svg/theme-store-filled.svg +0 -1
  1440. package/dist/pine-core/svg/theme-store.svg +0 -1
  1441. package/dist/pine-core/svg/thumb-down-filled.svg +0 -1
  1442. package/dist/pine-core/svg/thumb-down.svg +0 -1
  1443. package/dist/pine-core/svg/thumb-up-filled.svg +0 -1
  1444. package/dist/pine-core/svg/thumb-up.svg +0 -1
  1445. package/dist/pine-core/svg/trash.svg +0 -1
  1446. package/dist/pine-core/svg/trophy-filled.svg +0 -1
  1447. package/dist/pine-core/svg/trophy.svg +0 -1
  1448. package/dist/pine-core/svg/underline.svg +0 -1
  1449. package/dist/pine-core/svg/undo.svg +0 -1
  1450. package/dist/pine-core/svg/unlock.svg +0 -1
  1451. package/dist/pine-core/svg/unmapped.svg +0 -1
  1452. package/dist/pine-core/svg/up-small.svg +0 -1
  1453. package/dist/pine-core/svg/upload.svg +0 -1
  1454. package/dist/pine-core/svg/url.svg +0 -1
  1455. package/dist/pine-core/svg/user-circle-filled.svg +0 -1
  1456. package/dist/pine-core/svg/user-circle.svg +0 -1
  1457. package/dist/pine-core/svg/user-filled.svg +0 -1
  1458. package/dist/pine-core/svg/user-star-filled.svg +0 -1
  1459. package/dist/pine-core/svg/user-star.svg +0 -1
  1460. package/dist/pine-core/svg/user.svg +0 -1
  1461. package/dist/pine-core/svg/users-02-tone.svg +0 -1
  1462. package/dist/pine-core/svg/users-alt.svg +0 -1
  1463. package/dist/pine-core/svg/users-filled.svg +0 -1
  1464. package/dist/pine-core/svg/users.svg +0 -1
  1465. package/dist/pine-core/svg/video-off.svg +0 -1
  1466. package/dist/pine-core/svg/video-on.svg +0 -1
  1467. package/dist/pine-core/svg/warning-filled.svg +0 -1
  1468. package/dist/pine-core/svg/warning.svg +0 -1
  1469. package/dist/pine-core/svg/window-paragraph.svg +0 -1
  1470. package/dist/pine-core/svg/world.svg +0 -1
  1471. package/dist/pine-core/svg/wrench.svg +0 -1
  1472. package/dist/types/stories/_helpers/index.d.ts +0 -12
  1473. package/loader/package.json +0 -11
@@ -0,0 +1,2597 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import { computePosition, flip, offset, shift, size, autoUpdate } from "@floating-ui/dom";
3
+ import { cancelDebouncedEvent, debounceEvent, flushDebouncedEvent } from "../../utils/utils";
4
+ import { isSpecTest, messageId, assignDescription } from "../../utils/form";
5
+ import { danger, enlarge } from "@pine-ds/icons/icons";
6
+ import { formatMessage, pluralize } from "../../i18n";
7
+ import { bindTruncationTooltips } from "../../utils/truncation-tooltip";
8
+ // Names only: pds-icon's `icon` prop also fetches URLs and data: SVGs, unsanitized.
9
+ const PINE_ICON_NAME = /^[a-z0-9-]+$/i;
10
+ const TABBABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
11
+ /**
12
+ * @slot (default) - Static option elements for the multiselect
13
+ * @slot empty - Custom empty state message when no options match
14
+ * @slot loading - Custom loading indicator
15
+ * @slot trigger - Custom trigger element that replaces the built-in trigger. It opens the dropdown panel and receives `aria-expanded` and `aria-haspopup`; it supplies its own accessible name. Slot the focusable control itself, not a wrapper around it.
16
+ * @slot footer - Links or buttons displayed below the options inside the dropdown panel
17
+ * @part trigger - The trigger surface that opens the dropdown panel
18
+ * @part pill-toggle - The chevron button inside the inline pill trigger
19
+ */
20
+ export class PdsMultiselect {
21
+ constructor() {
22
+ this.triggerTextTooltip = bindTruncationTooltips((textEl) => {
23
+ var _a;
24
+ return ({
25
+ // Not the host, which holds the panel.
26
+ hostEl: (_a = textEl.closest('[part="trigger"]')) !== null && _a !== void 0 ? _a : textEl,
27
+ contentEl: textEl,
28
+ getTooltipText: () => this.getTriggerText(),
29
+ manageTabIndex: false,
30
+ });
31
+ });
32
+ this.selectedItemTooltips = bindTruncationTooltips((item) => ({
33
+ hostEl: item,
34
+ contentEl: item,
35
+ getTooltipText: () => { var _a; return (_a = item.textContent) !== null && _a !== void 0 ? _a : ''; },
36
+ }));
37
+ this.hasDisabledSlottedTrigger = false;
38
+ /**
39
+ * Placeholder text for the input field. Pass a translated string to localize it; defaults to English.
40
+ * @defaultValue 'Select...'
41
+ */
42
+ this.placeholder = 'Select...';
43
+ /**
44
+ * Placeholder text for the search input inside the dropdown panel. Pass a translated string to localize it; defaults to English.
45
+ * @defaultValue 'Find...'
46
+ */
47
+ this.searchPlaceholder = 'Find...';
48
+ /**
49
+ * Accessible label for the search input. Pass a translated string to localize it; defaults to English.
50
+ * @defaultValue 'Search options'
51
+ */
52
+ this.searchOptionsLabel = 'Search options';
53
+ /**
54
+ * Accessible label for the selected-items region. Pass a translated string to localize it; defaults to English.
55
+ * @defaultValue 'Selected items'
56
+ */
57
+ this.selectedItemsLabel = 'Selected items';
58
+ /**
59
+ * Accessible label for the options listbox (falls back to this when `label` is unset). Pass a translated string to localize it; defaults to English.
60
+ * @defaultValue 'Options'
61
+ */
62
+ this.optionsLabel = 'Options';
63
+ /**
64
+ * Text shown when no options match the search. Pass a translated string to localize it; defaults to English.
65
+ * @defaultValue 'No options found'
66
+ */
67
+ this.noOptionsFoundLabel = 'No options found';
68
+ /**
69
+ * Visible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
70
+ * @defaultValue 'Add "{text}"'
71
+ */
72
+ this.createOptionLabel = 'Add "{text}"';
73
+ /**
74
+ * Accessible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
75
+ * @defaultValue 'Create new tag: {text}'
76
+ */
77
+ this.createOptionAriaLabel = 'Create new tag: {text}';
78
+ /**
79
+ * Screen-reader announcement when an item is removed. Pass a translated string to localize it; `{item}` is interpolated.
80
+ * @defaultValue '{item} removed'
81
+ */
82
+ this.itemRemovedLabel = '{item} removed';
83
+ /**
84
+ * Accessible label for the remove button on each selected-item pill. Pass a translated string to localize it; defaults to English.
85
+ * @defaultValue 'Remove'
86
+ */
87
+ this.pillRemoveLabel = 'Remove';
88
+ /**
89
+ * Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.
90
+ * A single selection shows the item's name instead, so this applies to other counts that a locale's plural rules treat as singular, and to a single selection whose item has no text.
91
+ * @defaultValue '{count} item'
92
+ */
93
+ this.selectedCountLabelOne = '{count} item';
94
+ /**
95
+ * Plural (and fallback) form of the selected-count trigger text — used for English and any locale whose selected plural category isn't supplied via `selectedCountLabels`. Pass a translated string to localize it; `{count}` is interpolated.
96
+ * @defaultValue '{count} items'
97
+ */
98
+ this.selectedCountLabelOther = '{count} items';
99
+ /**
100
+ * Whether to close the panel after an option is selected.
101
+ * Defaults to `false` (panel stays open for multi-select).
102
+ */
103
+ this.closePanelOnSelect = false;
104
+ /**
105
+ * Array of selected option values.
106
+ */
107
+ this.value = [];
108
+ /**
109
+ * Determines whether or not the multiselect is disabled.
110
+ */
111
+ this.disabled = false;
112
+ /**
113
+ * HTTP method for async requests.
114
+ */
115
+ this.asyncMethod = 'GET';
116
+ /**
117
+ * Debounce delay in milliseconds for search/fetch.
118
+ */
119
+ this.debounce = 300;
120
+ /**
121
+ * Timeout in milliseconds for async fetch requests.
122
+ */
123
+ this.fetchTimeout = 30000;
124
+ /**
125
+ * Maximum height of the dropdown before scrolling.
126
+ */
127
+ this.maxHeight = '300px';
128
+ /**
129
+ * Width of the trigger button (and reference for dropdown positioning).
130
+ */
131
+ this.triggerWidth = '100%';
132
+ /**
133
+ * Minimum width of the dropdown panel.
134
+ */
135
+ this.minWidth = '250px';
136
+ /**
137
+ * Visually hides the label but keeps it accessible.
138
+ */
139
+ this.hideLabel = false;
140
+ /**
141
+ * Hides the selected items summary section in the dropdown panel.
142
+ */
143
+ this.hideSelectedItems = false;
144
+ /**
145
+ * Display mode for selected items outside the dropdown panel.
146
+ * `'count'` shows the item's name in the trigger when one is selected and
147
+ * "N items" text otherwise (default). `'pill'` renders selected items as
148
+ * dismissible pds-chip tags.
149
+ * @default 'count'
150
+ */
151
+ this.selectedDisplay = 'count';
152
+ /**
153
+ * Position of pill chips when `selectedDisplay` is `'pill'`.
154
+ * `'inline'` places chips inside the trigger; `'below'` places chips in a
155
+ * flex-wrap row directly below the trigger.
156
+ * @default 'inline'
157
+ */
158
+ this.pillPosition = 'inline';
159
+ /**
160
+ * Maximum chips shown inline before collapsing to a "+N more" badge.
161
+ * Only applies when `selectedDisplay='pill'` and `pillPosition='inline'`.
162
+ * @default 3
163
+ */
164
+ this.maxInlinePills = 3;
165
+ /**
166
+ * Display mode for options in the dropdown panel.
167
+ * `'text'` shows each option's text (default). `'chip'` shows each option as a
168
+ * pds-chip, with a dot when the option has a `dotColor`.
169
+ * @defaultValue 'text'
170
+ */
171
+ this.optionDisplay = 'text';
172
+ /**
173
+ * If true, the multiselect is required.
174
+ */
175
+ this.required = false;
176
+ /**
177
+ * Whether the component is currently loading async options.
178
+ */
179
+ this.loading = false;
180
+ /**
181
+ * CSRF header name for authenticated requests. Defaults to `X-CSRF-Token`.
182
+ */
183
+ this.csrfHeaderName = 'X-CSRF-Token';
184
+ /**
185
+ * Shows an action icon on each option that has an `actionIcon`, such as an edit pencil.
186
+ * The icon shows on the hovered or highlighted option; clicking it, or pressing Right Arrow on the highlighted option, emits `pdsMultiselectOptionAction`.
187
+ */
188
+ this.optionActions = false;
189
+ /**
190
+ * Tooltip for an option's action icon when the option has no `actionLabel`. Pass a translated string to localize it; `{text}` is interpolated.
191
+ * @defaultValue 'Edit {text}'
192
+ */
193
+ this.optionActionLabel = 'Edit {text}';
194
+ /**
195
+ * Screen-reader hint on each option that has an action, naming the key that runs it. Pass a translated string to localize it; `{action}` is interpolated with the option's action label.
196
+ * @defaultValue 'Press Right Arrow to {action}'
197
+ */
198
+ this.optionActionDescription = 'Press Right Arrow to {action}';
199
+ // Internal state
200
+ this.isOpen = false;
201
+ this.searchQuery = '';
202
+ this.highlightedIndex = -1;
203
+ this.internalOptions = [];
204
+ this.selectedItems = [];
205
+ this.currentPage = 1;
206
+ this.hasMore = false;
207
+ this.creating = false;
208
+ this.removalAnnouncement = '';
209
+ // Flag to prevent focusout from closing during open transition
210
+ this.isOpening = false;
211
+ // Flag to suppress dismiss event when panel closes due to selection (not user dismissal)
212
+ this.isClosingViaSelection = false;
213
+ // Flag to track if initial async fetch has been triggered (prevents double fetch)
214
+ this.initialAsyncFetchTriggered = false;
215
+ // Flag to track if value changed during loading and needs resolution after fetch completes
216
+ this.pendingUnresolvedFetch = false;
217
+ this.handleTriggerClick = (e) => {
218
+ if (this.disabled)
219
+ return;
220
+ // In inline-pill mode, ignore clicks that originated inside a pds-chip.
221
+ // Chip close-button clicks are handled by handlePillRemove; chip body clicks should not toggle the panel.
222
+ if (e && !this.slottedTriggerEl && this.selectedDisplay === 'pill' && this.pillPosition === 'inline') {
223
+ const fromChip = e.composedPath().some(el => { var _a; return ((_a = el.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'pds-chip'; });
224
+ if (fromChip)
225
+ return;
226
+ }
227
+ if (this.isOpen) {
228
+ this.closeDropdown();
229
+ }
230
+ else {
231
+ this.openDropdown();
232
+ }
233
+ };
234
+ this.handleTriggerKeyDown = (e) => {
235
+ if (this.disabled)
236
+ return;
237
+ // Ignore keydown events that bubbled from child elements (e.g. chip close buttons).
238
+ // Only handle keys when the trigger itself is the event target.
239
+ if (e.target !== this.activeTriggerEl)
240
+ return;
241
+ switch (e.key) {
242
+ case 'ArrowDown':
243
+ case 'ArrowUp':
244
+ case 'Enter':
245
+ case ' ':
246
+ e.preventDefault();
247
+ if (!this.isOpen) {
248
+ this.openDropdown();
249
+ }
250
+ break;
251
+ }
252
+ };
253
+ this.handleSearchInputChange = (e) => {
254
+ const target = e.target;
255
+ this.searchQuery = target.value;
256
+ this.highlightedIndex = -1;
257
+ // Emit search event for consumer-managed async
258
+ this.pdsMultiselectSearch.emit({ query: this.searchQuery });
259
+ // Fetch from async URL if configured
260
+ if (this.asyncUrl) {
261
+ this.debouncedFetchAsyncOptions(this.searchQuery, 1);
262
+ }
263
+ };
264
+ this.handleSearchInputKeyDown = (e) => {
265
+ var _a, _b, _c;
266
+ const filteredOptions = this.getFilteredOptions();
267
+ switch (e.key) {
268
+ case 'ArrowDown': {
269
+ e.preventDefault();
270
+ let nextIndex = this.highlightedIndex + 1;
271
+ while (nextIndex < filteredOptions.length && ((_a = filteredOptions[nextIndex]) === null || _a === void 0 ? void 0 : _a.disabled)) {
272
+ nextIndex++;
273
+ }
274
+ if (nextIndex < filteredOptions.length) {
275
+ this.highlightedIndex = nextIndex;
276
+ this.scrollOptionIntoView();
277
+ }
278
+ break;
279
+ }
280
+ case 'ArrowUp': {
281
+ e.preventDefault();
282
+ // Clamp to 0 so ArrowUp from uninitialised state (-1) attempts the first option;
283
+ // stays at -1 if that option is disabled.
284
+ let prevIndex = Math.max(this.highlightedIndex - 1, 0);
285
+ while (prevIndex > 0 && ((_b = filteredOptions[prevIndex]) === null || _b === void 0 ? void 0 : _b.disabled)) {
286
+ prevIndex--;
287
+ }
288
+ if (!((_c = filteredOptions[prevIndex]) === null || _c === void 0 ? void 0 : _c.disabled)) {
289
+ this.highlightedIndex = prevIndex;
290
+ this.scrollOptionIntoView();
291
+ }
292
+ break;
293
+ }
294
+ case 'Enter':
295
+ e.preventDefault();
296
+ if (this.highlightedIndex >= 0) {
297
+ const option = filteredOptions[this.highlightedIndex];
298
+ if (option) {
299
+ this.selectOption(option);
300
+ }
301
+ }
302
+ break;
303
+ // Right Arrow still moves the caret through typed text; a plain Right Arrow at the end runs the action.
304
+ case 'ArrowRight': {
305
+ const option = filteredOptions[this.highlightedIndex];
306
+ const isPlainKey = !e.altKey && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.isComposing;
307
+ if (isPlainKey && option && this.hasOptionAction(option) && this.isCaretAtEndOfSearch()) {
308
+ e.preventDefault();
309
+ this.runOptionAction(option);
310
+ }
311
+ break;
312
+ }
313
+ // Escape is handled by the global @Listen('keydown') handler
314
+ case 'Tab': {
315
+ const row = e.shiftKey ? undefined : this.getSelectedItemTabbables()[0];
316
+ if (row !== undefined) {
317
+ row.focus();
318
+ e.preventDefault();
319
+ }
320
+ else {
321
+ this.tabPastOptions(e);
322
+ }
323
+ break;
324
+ }
325
+ }
326
+ };
327
+ this.handleSelectedListKeyDown = (e) => {
328
+ if (e.key === 'Tab' && !e.shiftKey && e.composedPath()[0] === this.getSelectedItemTabbables().pop())
329
+ this.tabPastOptions(e);
330
+ };
331
+ this.handleFooterKeyDown = (e) => {
332
+ var _a, _b;
333
+ if (e.key !== 'Tab')
334
+ return;
335
+ const tabbables = this.getFooterTabbables();
336
+ const focused = e.composedPath()[0];
337
+ if (e.shiftKey && focused === tabbables[0]) {
338
+ e.preventDefault();
339
+ (_b = ((_a = this.getSelectedItemTabbables().pop()) !== null && _a !== void 0 ? _a : this.searchInputEl)) === null || _b === void 0 ? void 0 : _b.focus();
340
+ }
341
+ else if (!e.shiftKey && focused === tabbables[tabbables.length - 1]) {
342
+ this.closeDropdown();
343
+ }
344
+ };
345
+ this.handleContainerFocusOut = () => {
346
+ // Use setTimeout to delay the check - this allows click events and focus transitions to complete
347
+ // before we decide to close the dropdown
348
+ setTimeout(() => {
349
+ var _a;
350
+ // Don't close if we're in the middle of opening, already closed,
351
+ // or closing due to a selection (not a user dismissal)
352
+ if (!this.isOpen || this.isOpening || this.isClosingViaSelection)
353
+ return;
354
+ const activeElement = document.activeElement;
355
+ // Check if focus is within our component's shadow root
356
+ const isInShadowRoot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.contains(activeElement);
357
+ // Also check the host itself and its light DOM, where slotted trigger and footer content live
358
+ const isInHost = this.el.contains(activeElement);
359
+ if (!isInShadowRoot && !isInHost) {
360
+ this.pdsMultiselectDismiss.emit();
361
+ this.closeDropdown();
362
+ }
363
+ }, 0);
364
+ };
365
+ this.handleOptionMouseDown = (option) => (e) => {
366
+ e.preventDefault(); // Prevent focus change
367
+ this.toggleOption(option);
368
+ };
369
+ // mousedown already toggled the option. Without this, a click on the chip reaches the
370
+ // checkbox through its label and toggles it a second time.
371
+ this.handleOptionClick = (e) => {
372
+ e.preventDefault();
373
+ };
374
+ this.handleOptionMouseEnter = (index, option) => () => {
375
+ if (option.disabled)
376
+ return;
377
+ this.highlightedIndex = index;
378
+ };
379
+ this.handleOptionActionMouseDown = (e) => {
380
+ // Stops the row's mousedown from toggling the option, and keeps focus in the search input.
381
+ e.preventDefault();
382
+ e.stopPropagation();
383
+ };
384
+ this.handleOptionActionClick = (option) => () => {
385
+ this.runOptionAction(option);
386
+ };
387
+ // Keeps focus in the search input so the panel stays open until the footer's click lands.
388
+ this.handleFooterMouseDown = (e) => {
389
+ e.preventDefault();
390
+ };
391
+ this.handleScroll = (e) => {
392
+ if (!this.asyncUrl || !this.hasMore || this.loading)
393
+ return;
394
+ const target = e.target;
395
+ const scrollBottom = target.scrollHeight - target.scrollTop - target.clientHeight;
396
+ // Load more when near bottom (within 50px)
397
+ if (scrollBottom < 50) {
398
+ this.pdsMultiselectLoadOptions.emit({
399
+ query: this.searchQuery,
400
+ page: this.currentPage + 1,
401
+ });
402
+ this.debouncedFetchAsyncOptions(this.searchQuery, this.currentPage + 1);
403
+ }
404
+ };
405
+ this.handlePillRemove = (item) => () => {
406
+ var _a, _b;
407
+ if (this.disabled)
408
+ return;
409
+ const optionId = String(item.id);
410
+ this.value = this.value.filter(v => v !== optionId);
411
+ this.syncSelectedItems();
412
+ this.emitChange({ removed: [optionId] });
413
+ // Clear first so screen readers re-announce even when the same item is removed twice
414
+ this.removalAnnouncement = '';
415
+ queueMicrotask(() => { this.removalAnnouncement = formatMessage(this.itemRemovedLabel, { item: item.text }); });
416
+ this.isClosingViaSelection = true;
417
+ if (this.isOpen) {
418
+ (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
419
+ }
420
+ else {
421
+ (_b = this.activeTriggerEl) === null || _b === void 0 ? void 0 : _b.focus();
422
+ }
423
+ setTimeout(() => { this.isClosingViaSelection = false; }, 0);
424
+ };
425
+ }
426
+ connectedCallback() {
427
+ // Initialize ElementInternals for form association (only once per element instance)
428
+ if (this.el.attachInternals && !this.internals) {
429
+ this.internals = this.el.attachInternals();
430
+ }
431
+ this.syncTruncationTooltips();
432
+ }
433
+ /**
434
+ * Form Associated Custom Elements API: Called when the form is disabled
435
+ */
436
+ formDisabledCallback(disabled) {
437
+ // Also fires when this element's own `disabled` attribute is merely present, even as the
438
+ // literal string "false" (a consumer's or React's attribute serialization can write that) —
439
+ // the platform treats any value as disabled, independent of fieldset state. A real disabled
440
+ // fieldset ancestor confirms this is genuinely that, not this element's own attribute.
441
+ if (disabled && !this.el.closest('fieldset[disabled]'))
442
+ return;
443
+ this.disabled = disabled;
444
+ }
445
+ componentWillLoad() {
446
+ this.originalSearchEmitter = this.pdsMultiselectSearch;
447
+ this.syncSelectedItems();
448
+ this.syncSlottedTrigger();
449
+ }
450
+ componentDidLoad() {
451
+ this.setupDebounce();
452
+ this.setupMutationObserver();
453
+ this.setupSlotChangeListener();
454
+ this.updateFormValue();
455
+ // Ensure preselected values sync after DOM is fully ready
456
+ // This handles cases where slot content loads after initial render (e.g., in docs/MDX)
457
+ requestAnimationFrame(() => {
458
+ this.updateOptionsFromSlot();
459
+ this.syncSelectedItems();
460
+ });
461
+ // If we have preselected values and asyncUrl, fetch options to resolve them
462
+ // This ensures the trigger shows "X items" instead of placeholder on initial render
463
+ if (this.asyncUrl && this.ensureValueArray().length > 0) {
464
+ this.initialAsyncFetchTriggered = true;
465
+ this.fetchOptions('', 1);
466
+ }
467
+ }
468
+ setupSlotChangeListener() {
469
+ var _a;
470
+ const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
471
+ if (slot) {
472
+ slot.addEventListener('slotchange', () => {
473
+ this.updateOptionsFromSlot();
474
+ this.syncSelectedItems();
475
+ });
476
+ // Also call it immediately in case content is already slotted
477
+ this.updateOptionsFromSlot();
478
+ }
479
+ }
480
+ componentDidRender() {
481
+ this.syncTruncationTooltips();
482
+ }
483
+ syncTruncationTooltips() {
484
+ var _a;
485
+ const root = this.el.shadowRoot;
486
+ this.triggerTextTooltip.sync([root === null || root === void 0 ? void 0 : root.querySelector('.pds-multiselect__trigger-text')]);
487
+ this.selectedItemTooltips.sync((_a = root === null || root === void 0 ? void 0 : root.querySelectorAll('.pds-multiselect__selected-item')) !== null && _a !== void 0 ? _a : []);
488
+ }
489
+ disconnectedCallback() {
490
+ var _a, _b;
491
+ this.triggerTextTooltip.destroy();
492
+ this.selectedItemTooltips.destroy();
493
+ cancelDebouncedEvent(this.pdsMultiselectSearch);
494
+ (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
495
+ (_b = this.cleanupAutoUpdate) === null || _b === void 0 ? void 0 : _b.call(this);
496
+ this.clearAsyncFetchState();
497
+ }
498
+ setupDebounce() {
499
+ const { pdsMultiselectSearch, debounce, originalSearchEmitter } = this;
500
+ this.pdsMultiselectSearch = debounce === undefined
501
+ ? originalSearchEmitter !== null && originalSearchEmitter !== void 0 ? originalSearchEmitter : pdsMultiselectSearch
502
+ : debounceEvent(pdsMultiselectSearch, debounce);
503
+ // After the swap, so an emit made while flushing goes to the new emitter, not the old one.
504
+ flushDebouncedEvent(pdsMultiselectSearch);
505
+ }
506
+ valueChanged(newValue) {
507
+ // Handle JSON string values (from HTML attributes)
508
+ if (typeof newValue === 'string') {
509
+ try {
510
+ const parsed = JSON.parse(newValue);
511
+ if (Array.isArray(parsed)) {
512
+ this.value = parsed;
513
+ return; // The assignment will trigger this watcher again with the array
514
+ }
515
+ }
516
+ catch (_a) {
517
+ // Not valid JSON, treat as single value
518
+ this.value = newValue ? [newValue] : [];
519
+ return;
520
+ }
521
+ }
522
+ this.syncSelectedItems();
523
+ this.updateFormValue();
524
+ // If using asyncUrl and some values couldn't be resolved, fetch options
525
+ // This handles programmatic value changes where the options aren't loaded yet
526
+ if (this.asyncUrl) {
527
+ const valueArray = this.ensureValueArray();
528
+ const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;
529
+ if (hasUnresolvedValues) {
530
+ if (this.loading) {
531
+ // Mark that we need to re-check after current fetch completes
532
+ this.pendingUnresolvedFetch = true;
533
+ }
534
+ else {
535
+ this.fetchOptions('', 1);
536
+ }
537
+ }
538
+ }
539
+ }
540
+ optionsChanged() {
541
+ if (this.options) {
542
+ this.internalOptions = [...this.options];
543
+ }
544
+ }
545
+ internalOptionsChanged() {
546
+ // Re-sync selected items when options become available
547
+ // This handles the case where value is set before options are loaded (e.g., from slot)
548
+ this.syncSelectedItems();
549
+ }
550
+ isOpenChanged() {
551
+ var _a;
552
+ (_a = this.slottedTriggerEl) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', String(this.isOpen));
553
+ }
554
+ disabledChanged(disabled) {
555
+ var _a, _b;
556
+ this.syncSlottedTrigger();
557
+ // A disabled control can't stay open, or its options could still be toggled.
558
+ if (!disabled || !this.isOpen)
559
+ return;
560
+ const activeElement = document.activeElement;
561
+ const focusInside = !!(((_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.contains(activeElement)) || this.el.contains(activeElement));
562
+ this.closeDropdown();
563
+ // A disabled built-in trigger can't take focus back (falls to <body>, as natively); a slotted
564
+ // trigger without its own disabled property only gets aria-disabled and stays focusable, so
565
+ // focus would otherwise stay stranded on the closed panel's former content.
566
+ if (focusInside)
567
+ (_b = this.activeTriggerEl) === null || _b === void 0 ? void 0 : _b.focus();
568
+ }
569
+ /**
570
+ * Sets focus on the trigger button.
571
+ */
572
+ async setFocus() {
573
+ var _a;
574
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
575
+ }
576
+ /**
577
+ * Clears all selected values and resets the component. Works while disabled too, as setting a
578
+ * native control's value from script does.
579
+ */
580
+ async clear() {
581
+ const hadValues = this.value.length > 0 || this.searchQuery !== '';
582
+ const removed = this.ensureValueArray();
583
+ this.value = [];
584
+ this.searchQuery = '';
585
+ this.syncSelectedItems();
586
+ this.updateFormValue();
587
+ if (hadValues) {
588
+ this.emitChange({ removed });
589
+ }
590
+ }
591
+ /**
592
+ * Refetches the first page of options from `asyncUrl` for the current search, such as after an option is renamed
593
+ * or recolored elsewhere. Selected items in that page pick up the new text and dot color without emitting a change;
594
+ * other selected items keep the text and dot color they were last loaded with. Does nothing without `asyncUrl`.
595
+ */
596
+ async refreshOptions() {
597
+ await this.fetchOptions(this.searchQuery, 1);
598
+ }
599
+ /**
600
+ * Handle global keyboard events for accessibility.
601
+ * Closes dropdown on Escape key press regardless of focus location. Taken in document's capture
602
+ * phase, before a modal around the multiselect hears it on document and closes too.
603
+ */
604
+ handleWindowKeyDown(event) {
605
+ var _a;
606
+ if (!this.isOpen || event.defaultPrevented)
607
+ return;
608
+ if (event.key === 'Escape') {
609
+ event.preventDefault();
610
+ this.pdsMultiselectDismiss.emit();
611
+ this.closeDropdown();
612
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
613
+ }
614
+ }
615
+ get activeTriggerEl() {
616
+ var _a;
617
+ return (_a = this.slottedTriggerEl) !== null && _a !== void 0 ? _a : this.triggerEl;
618
+ }
619
+ syncSlottedTrigger() {
620
+ const trigger = Array.from(this.el.children).find(child => child.getAttribute('slot') === 'trigger');
621
+ if (trigger !== this.slottedTriggerEl) {
622
+ const previous = this.slottedTriggerEl;
623
+ if (previous) {
624
+ previous.removeEventListener('click', this.handleTriggerClick);
625
+ previous.removeEventListener('keydown', this.handleTriggerKeyDown);
626
+ previous.removeAttribute('aria-expanded');
627
+ previous.removeAttribute('aria-haspopup');
628
+ previous.removeAttribute('aria-disabled');
629
+ this.setSlottedTriggerDisabled(previous, false);
630
+ }
631
+ trigger === null || trigger === void 0 ? void 0 : trigger.addEventListener('click', this.handleTriggerClick);
632
+ trigger === null || trigger === void 0 ? void 0 : trigger.addEventListener('keydown', this.handleTriggerKeyDown);
633
+ this.slottedTriggerEl = trigger;
634
+ }
635
+ if (!trigger)
636
+ return;
637
+ trigger.setAttribute('aria-haspopup', 'listbox');
638
+ trigger.setAttribute('aria-expanded', String(this.isOpen));
639
+ if (this.disabled) {
640
+ trigger.setAttribute('aria-disabled', 'true');
641
+ }
642
+ else {
643
+ trigger.removeAttribute('aria-disabled');
644
+ }
645
+ this.setSlottedTriggerDisabled(trigger, this.disabled);
646
+ }
647
+ setSlottedTriggerDisabled(trigger, disabled) {
648
+ if (!('disabled' in trigger)) {
649
+ // A custom element gets its `disabled` property once it's defined, which can be after the multiselect loads.
650
+ if (disabled && trigger.localName.includes('-') && customElements.get(trigger.localName) === undefined) {
651
+ customElements.whenDefined(trigger.localName).then(() => this.syncSlottedTrigger());
652
+ }
653
+ return;
654
+ }
655
+ const control = trigger;
656
+ // Only re-enable a trigger the multiselect disabled, so one the consumer disabled stays disabled.
657
+ if (disabled && !control.disabled) {
658
+ control.disabled = true;
659
+ this.hasDisabledSlottedTrigger = true;
660
+ }
661
+ else if (!disabled && this.hasDisabledSlottedTrigger) {
662
+ control.disabled = false;
663
+ this.hasDisabledSlottedTrigger = false;
664
+ }
665
+ }
666
+ setupMutationObserver() {
667
+ this.observer = new MutationObserver(records => {
668
+ if (records.some(record => record.target === this.el)) {
669
+ this.syncSlottedTrigger();
670
+ }
671
+ // Changes inside the slotted trigger, like re-rendered chips, can't change the options.
672
+ const trigger = this.slottedTriggerEl;
673
+ if (!trigger || records.some(record => !trigger.contains(record.target))) {
674
+ this.updateOptionsFromSlot();
675
+ }
676
+ });
677
+ this.observer.observe(this.el, {
678
+ childList: true,
679
+ subtree: true,
680
+ });
681
+ }
682
+ updateOptionsFromSlot() {
683
+ var _a;
684
+ const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
685
+ if (!slot)
686
+ return;
687
+ const options = [];
688
+ slot.assignedElements({ flatten: true }).forEach(el => {
689
+ if (el.tagName === 'OPTGROUP') {
690
+ const optgroup = el;
691
+ const groupLabel = optgroup.label;
692
+ const groupDisabled = optgroup.disabled;
693
+ optgroup.querySelectorAll('option').forEach((opt) => {
694
+ const option = this.parseSlottedOption(opt, groupDisabled);
695
+ if (groupLabel) {
696
+ option.group = groupLabel;
697
+ }
698
+ options.push(option);
699
+ });
700
+ }
701
+ else if (el.tagName === 'OPTION') {
702
+ options.push(this.parseSlottedOption(el, false));
703
+ }
704
+ });
705
+ // Only update if we actually found options AND we're not using async/external options
706
+ // Don't clear internalOptions if slot returns empty (might be mid-DOM-update)
707
+ if (options.length > 0 && !this.asyncUrl && !this.options) {
708
+ this.internalOptions = options;
709
+ }
710
+ }
711
+ parseSlottedOption(opt, groupDisabled) {
712
+ var _a;
713
+ const option = {
714
+ id: opt.value,
715
+ text: ((_a = opt.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || opt.value,
716
+ disabled: opt.disabled || groupDisabled || undefined,
717
+ };
718
+ const dotColor = opt.getAttribute('data-dot-color');
719
+ if (dotColor) {
720
+ option.dotColor = dotColor;
721
+ }
722
+ const actionIcon = opt.getAttribute('data-action-icon');
723
+ if (actionIcon) {
724
+ option.actionIcon = actionIcon;
725
+ }
726
+ const actionLabel = opt.getAttribute('data-action-label');
727
+ if (actionLabel) {
728
+ option.actionLabel = actionLabel;
729
+ }
730
+ return option;
731
+ }
732
+ clearAsyncFetchState() {
733
+ var _a;
734
+ if (this.fetchDebounceTimer !== undefined) {
735
+ window.clearTimeout(this.fetchDebounceTimer);
736
+ this.fetchDebounceTimer = undefined;
737
+ }
738
+ if (this.fetchTimeoutTimer !== undefined) {
739
+ window.clearTimeout(this.fetchTimeoutTimer);
740
+ this.fetchTimeoutTimer = undefined;
741
+ }
742
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
743
+ this.abortController = undefined;
744
+ }
745
+ debouncedFetchAsyncOptions(query, page = 1) {
746
+ var _a;
747
+ if (!this.asyncUrl)
748
+ return;
749
+ if (this.fetchDebounceTimer !== undefined) {
750
+ window.clearTimeout(this.fetchDebounceTimer);
751
+ }
752
+ const delay = Math.max(0, (_a = this.debounce) !== null && _a !== void 0 ? _a : 0);
753
+ this.fetchDebounceTimer = window.setTimeout(() => {
754
+ this.fetchDebounceTimer = undefined;
755
+ this.fetchOptions(query, page);
756
+ }, delay);
757
+ }
758
+ syncSelectedItems() {
759
+ // Ensure value is an array (may be string from HTML attribute)
760
+ const valueArray = this.ensureValueArray();
761
+ const allOptions = this.getAllOptions();
762
+ // Map values to options, preserving existing selectedItems for values not yet in options
763
+ const newSelectedItems = [];
764
+ const existingItemsMap = new Map(this.selectedItems.map(item => [String(item.id), item]));
765
+ valueArray.forEach(val => {
766
+ // First try to find in available options
767
+ const option = allOptions.find(opt => String(opt.id) === String(val));
768
+ if (option) {
769
+ newSelectedItems.push(option);
770
+ }
771
+ else if (existingItemsMap.has(String(val))) {
772
+ // If not in options but exists in current selectedItems, preserve it
773
+ // This handles the case where async data hasn't loaded yet or newly created items
774
+ newSelectedItems.push(existingItemsMap.get(String(val)));
775
+ }
776
+ // Note: We don't create placeholders for values without matching options.
777
+ // This ensures selectedItems remains empty until options are actually loaded,
778
+ // which matches the expected behavior for preselected values.
779
+ });
780
+ this.selectedItems = newSelectedItems;
781
+ }
782
+ ensureValueArray() {
783
+ // Handle JSON string values passed via HTML attribute
784
+ if (typeof this.value === 'string') {
785
+ try {
786
+ const parsed = JSON.parse(this.value);
787
+ if (Array.isArray(parsed)) {
788
+ this.value = parsed;
789
+ return parsed;
790
+ }
791
+ }
792
+ catch (_a) {
793
+ // Not valid JSON, treat as single value
794
+ const singleValue = this.value;
795
+ this.value = singleValue ? [singleValue] : [];
796
+ return this.value;
797
+ }
798
+ }
799
+ return Array.isArray(this.value) ? this.value : [];
800
+ }
801
+ getAllOptions() {
802
+ return this.options || this.internalOptions;
803
+ }
804
+ getFilteredOptions() {
805
+ const allOptions = this.getAllOptions();
806
+ const query = this.searchQuery.toLowerCase();
807
+ const filtered = allOptions.filter(opt => {
808
+ // Filter by search query only - don't filter out selected items
809
+ if (query) {
810
+ return opt.text.toLowerCase().includes(query);
811
+ }
812
+ return true;
813
+ });
814
+ // Add create option if enabled and no matches found
815
+ if (this.createUrl && this.searchQuery.trim() && filtered.length === 0) {
816
+ return [{
817
+ id: '__create__',
818
+ text: this.searchQuery.trim(),
819
+ isCreateOption: true,
820
+ }];
821
+ }
822
+ return filtered;
823
+ }
824
+ updateFormValue() {
825
+ var _a;
826
+ if (isSpecTest())
827
+ return;
828
+ if ((_a = this.internals) === null || _a === void 0 ? void 0 : _a.setFormValue) {
829
+ // Ensure value is an array before iterating
830
+ const valueArray = this.ensureValueArray();
831
+ // Submit as multiple values with same name (native select multiple behavior)
832
+ const formData = new FormData();
833
+ valueArray.forEach(val => {
834
+ if (this.name) {
835
+ formData.append(this.name, val);
836
+ }
837
+ });
838
+ this.internals.setFormValue(formData);
839
+ // Update validity state for required validation
840
+ if (this.required && valueArray.length === 0) {
841
+ this.internals.setValidity({ valueMissing: true }, 'Please select at least one option.', this.activeTriggerEl);
842
+ }
843
+ else {
844
+ this.internals.setValidity({});
845
+ }
846
+ }
847
+ }
848
+ getCsrfToken() {
849
+ // Use provided token if available
850
+ if (this.csrfToken) {
851
+ return this.csrfToken;
852
+ }
853
+ // Try to read from meta tag
854
+ const metaTag = document.querySelector('meta[name="csrf-token"]');
855
+ return (metaTag === null || metaTag === void 0 ? void 0 : metaTag.content) || null;
856
+ }
857
+ async fetchOptions(query, page = 1) {
858
+ var _a;
859
+ if (!this.asyncUrl)
860
+ return;
861
+ // Abort any pending request and clear existing timeout
862
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
863
+ if (this.fetchTimeoutTimer !== undefined) {
864
+ window.clearTimeout(this.fetchTimeoutTimer);
865
+ this.fetchTimeoutTimer = undefined;
866
+ }
867
+ this.abortController = new AbortController();
868
+ this.loading = true;
869
+ // Set up timeout for fetch request
870
+ this.fetchTimeoutTimer = window.setTimeout(() => {
871
+ var _a;
872
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
873
+ this.fetchTimeoutTimer = undefined;
874
+ }, this.fetchTimeout);
875
+ try {
876
+ // Guard against malformed asyncUrl
877
+ let url;
878
+ try {
879
+ url = new URL(this.asyncUrl, window.location.origin);
880
+ }
881
+ catch (urlError) {
882
+ throw new TypeError(`Invalid asyncUrl: ${this.asyncUrl}`);
883
+ }
884
+ if (this.asyncMethod === 'GET') {
885
+ url.searchParams.set('search', query);
886
+ url.searchParams.set('page', String(page));
887
+ }
888
+ const csrfToken = this.getCsrfToken();
889
+ const headers = {
890
+ 'Content-Type': 'application/json',
891
+ 'Accept': 'application/json',
892
+ };
893
+ if (csrfToken) {
894
+ const headerName = this.csrfHeaderName || 'X-CSRF-Token';
895
+ headers[headerName] = csrfToken;
896
+ }
897
+ const response = await fetch(url.toString(), Object.assign({ method: this.asyncMethod, signal: this.abortController.signal, headers }, (this.asyncMethod === 'POST' && {
898
+ body: JSON.stringify({ search: query, page }),
899
+ })));
900
+ // Clear timeout on successful response
901
+ if (this.fetchTimeoutTimer !== undefined) {
902
+ window.clearTimeout(this.fetchTimeoutTimer);
903
+ this.fetchTimeoutTimer = undefined;
904
+ }
905
+ if (!response.ok)
906
+ throw new Error('Failed to fetch options');
907
+ const data = await response.json();
908
+ const formattedResults = data.results.map(item => {
909
+ // If formatResult is provided, use it
910
+ if (this.formatResult) {
911
+ return this.formatResult(item);
912
+ }
913
+ // Defensive check: ensure item is an object before spreading
914
+ if (typeof item === 'object' && item !== null) {
915
+ return Object.assign({ id: item.id, text: item.text }, item);
916
+ }
917
+ // Handle primitives by converting to safe shape
918
+ return {
919
+ id: String(item),
920
+ text: String(item),
921
+ };
922
+ });
923
+ if (page === 1) {
924
+ this.internalOptions = formattedResults;
925
+ }
926
+ else {
927
+ this.internalOptions = [...this.internalOptions, ...formattedResults];
928
+ }
929
+ this.hasMore = data.totalCount ? this.internalOptions.length < data.totalCount : false;
930
+ this.currentPage = page;
931
+ }
932
+ catch (error) {
933
+ // Clear timeout on error
934
+ if (this.fetchTimeoutTimer !== undefined) {
935
+ window.clearTimeout(this.fetchTimeoutTimer);
936
+ this.fetchTimeoutTimer = undefined;
937
+ }
938
+ if (error.name !== 'AbortError') {
939
+ console.error('PdsMultiselect: Failed to fetch options', error);
940
+ }
941
+ }
942
+ finally {
943
+ this.loading = false;
944
+ // Check if value changed during loading and still has unresolved values
945
+ if (this.pendingUnresolvedFetch) {
946
+ this.pendingUnresolvedFetch = false;
947
+ const valueArray = this.ensureValueArray();
948
+ const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;
949
+ if (hasUnresolvedValues) {
950
+ this.fetchOptions('', 1);
951
+ }
952
+ }
953
+ }
954
+ }
955
+ async createOption(query) {
956
+ if (!this.createUrl || !query.trim())
957
+ return;
958
+ // Reentrancy guard: prevent duplicate POSTs if creation is already in-flight
959
+ if (this.creating)
960
+ return;
961
+ this.creating = true;
962
+ try {
963
+ const url = new URL(this.createUrl, window.location.origin);
964
+ const csrfToken = this.getCsrfToken();
965
+ const headers = {
966
+ 'Content-Type': 'application/json',
967
+ 'Accept': 'application/json',
968
+ };
969
+ if (csrfToken) {
970
+ const headerName = this.csrfHeaderName || 'X-CSRF-Token';
971
+ headers[headerName] = csrfToken;
972
+ }
973
+ const response = await fetch(url.toString(), {
974
+ method: 'POST',
975
+ headers,
976
+ body: JSON.stringify({ text: query.trim() }),
977
+ });
978
+ if (!response.ok)
979
+ throw new Error('Failed to create option');
980
+ const data = await response.json();
981
+ const newOption = Object.assign({ id: data.id, text: data.text }, data);
982
+ // Add to internal options first
983
+ this.internalOptions = [...this.internalOptions, newOption];
984
+ // Select the new option
985
+ this.value = [...this.value, String(newOption.id)];
986
+ // Sync selected items to update display with new option
987
+ this.syncSelectedItems();
988
+ // Emit create event
989
+ this.pdsMultiselectCreate.emit({
990
+ query: query.trim(),
991
+ newOption,
992
+ });
993
+ // Emit change event with synced items
994
+ this.emitChange({ added: [String(newOption.id)] });
995
+ // Clear search and keep dropdown open
996
+ this.searchQuery = '';
997
+ this.highlightedIndex = -1;
998
+ // Focus back on search input
999
+ requestAnimationFrame(() => {
1000
+ var _a;
1001
+ (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
1002
+ });
1003
+ }
1004
+ catch (error) {
1005
+ console.error('PdsMultiselect: Failed to create option', error);
1006
+ }
1007
+ finally {
1008
+ this.creating = false;
1009
+ }
1010
+ }
1011
+ tabPastOptions(e) {
1012
+ const firstFooterTabbable = e.shiftKey ? undefined : this.getFooterTabbables()[0];
1013
+ firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.focus();
1014
+ if (firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.matches(':focus')) {
1015
+ // Each option's checkbox is a tab stop, so jump past them to the footer.
1016
+ e.preventDefault();
1017
+ }
1018
+ else {
1019
+ this.closeDropdown();
1020
+ // Tab would move on to an option's checkbox, which closing removes, dropping focus to the page.
1021
+ // Land on the trigger instead, as Escape does; Shift+Tab already reaches it.
1022
+ const trigger = e.shiftKey ? undefined : this.activeTriggerEl;
1023
+ trigger === null || trigger === void 0 ? void 0 : trigger.focus();
1024
+ if (trigger === null || trigger === void 0 ? void 0 : trigger.matches(':focus'))
1025
+ e.preventDefault();
1026
+ }
1027
+ }
1028
+ getSelectedItemTabbables() {
1029
+ return Array.from(this.el.shadowRoot.querySelectorAll('.pds-multiselect__selected-item[tabindex="0"]'));
1030
+ }
1031
+ getFooterTabbables() {
1032
+ const candidates = [];
1033
+ Array.from(this.el.children)
1034
+ .filter(child => child.getAttribute('slot') === 'footer')
1035
+ .forEach(content => candidates.push(content, ...Array.from(content.querySelectorAll('*'))));
1036
+ // Browsers without checkVisibility (Safari before 17.4) count every control as visible.
1037
+ return candidates
1038
+ .map(el => { var _a; return (el.matches(TABBABLE_SELECTOR) ? el : (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(TABBABLE_SELECTOR)); })
1039
+ .filter((el) => { var _a, _b; return !!el && ((_b = (_a = el.checkVisibility) === null || _a === void 0 ? void 0 : _a.call(el)) !== null && _b !== void 0 ? _b : true); });
1040
+ }
1041
+ isCaretAtEndOfSearch() {
1042
+ var _a, _b;
1043
+ const input = this.searchInputEl;
1044
+ if (!input)
1045
+ return true;
1046
+ const end = input.value.length;
1047
+ return ((_a = input.selectionStart) !== null && _a !== void 0 ? _a : end) === end && ((_b = input.selectionEnd) !== null && _b !== void 0 ? _b : end) === end;
1048
+ }
1049
+ hasOptionAction(option) {
1050
+ return (this.optionActions &&
1051
+ typeof option.actionIcon === 'string' &&
1052
+ PINE_ICON_NAME.test(option.actionIcon) &&
1053
+ !option.isCreateOption &&
1054
+ !option.disabled);
1055
+ }
1056
+ // Without hover, revealing the icon would take a tap that also toggles the option, so touch shows every icon.
1057
+ get isHoverless() {
1058
+ var _a, _b, _c;
1059
+ (_a = this.hoverlessQuery) !== null && _a !== void 0 ? _a : (this.hoverlessQuery = (_b = window.matchMedia) === null || _b === void 0 ? void 0 : _b.call(window, '(hover: none)'));
1060
+ return !!((_c = this.hoverlessQuery) === null || _c === void 0 ? void 0 : _c.matches);
1061
+ }
1062
+ runOptionAction(option) {
1063
+ var _a;
1064
+ this.isClosingViaSelection = true;
1065
+ this.closeDropdown();
1066
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
1067
+ this.pdsMultiselectOptionAction.emit({ option });
1068
+ }
1069
+ openDropdown() {
1070
+ if (this.disabled)
1071
+ return;
1072
+ this.isOpening = true;
1073
+ this.isOpen = true;
1074
+ this.highlightedIndex = -1;
1075
+ // Trigger initial fetch if async (skip if already fetching from componentDidLoad)
1076
+ if (this.asyncUrl && this.internalOptions.length === 0 && !this.initialAsyncFetchTriggered) {
1077
+ this.debouncedFetchAsyncOptions(this.searchQuery, 1);
1078
+ }
1079
+ // Reset the flag so subsequent opens can fetch if needed
1080
+ this.initialAsyncFetchTriggered = false;
1081
+ requestAnimationFrame(() => {
1082
+ var _a;
1083
+ this.positionDropdown();
1084
+ // Focus the search input after the panel is positioned
1085
+ (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
1086
+ // Clear the opening flag after focus has moved
1087
+ setTimeout(() => {
1088
+ this.isOpening = false;
1089
+ }, 50);
1090
+ });
1091
+ }
1092
+ closeDropdown() {
1093
+ this.isOpen = false;
1094
+ this.highlightedIndex = -1;
1095
+ this.searchQuery = '';
1096
+ // Reset the selection-close guard after the focusout handler's setTimeout has resolved
1097
+ if (this.isClosingViaSelection) {
1098
+ setTimeout(() => {
1099
+ this.isClosingViaSelection = false;
1100
+ }, 0);
1101
+ }
1102
+ // Clean up auto-update
1103
+ if (this.cleanupAutoUpdate) {
1104
+ this.cleanupAutoUpdate();
1105
+ this.cleanupAutoUpdate = undefined;
1106
+ }
1107
+ }
1108
+ positionDropdown() {
1109
+ if (!this.containerEl || !this.panelEl)
1110
+ return;
1111
+ // In inline pill mode, triggerEl is the small chevron button — use the full-width
1112
+ // wrapper div as the Floating UI reference so the panel aligns with the whole trigger.
1113
+ const referenceEl = this.slottedTriggerEl || this.pillInlineTriggerEl || this.triggerEl || this.containerEl;
1114
+ const { minWidth, panelWidth } = this;
1115
+ const updatePosition = () => {
1116
+ computePosition(referenceEl, this.panelEl, {
1117
+ placement: 'bottom-start',
1118
+ strategy: 'fixed',
1119
+ middleware: [
1120
+ offset(12),
1121
+ flip(),
1122
+ shift({ padding: 8 }),
1123
+ size({
1124
+ apply: ({ rects, elements }) => {
1125
+ Object.assign(elements.floating.style, {
1126
+ width: panelWidth !== null && panelWidth !== void 0 ? panelWidth : `${rects.reference.width}px`,
1127
+ minWidth,
1128
+ });
1129
+ },
1130
+ }),
1131
+ ],
1132
+ }).then(({ x, y }) => {
1133
+ if (this.panelEl) {
1134
+ this.panelEl.style.left = `${x}px`;
1135
+ this.panelEl.style.top = `${y}px`;
1136
+ }
1137
+ });
1138
+ };
1139
+ // Initial position
1140
+ updatePosition();
1141
+ // Set up auto-update for window resize and scroll
1142
+ const cleanupAutoUpdate = autoUpdate(referenceEl, this.panelEl, updatePosition);
1143
+ this.cleanupAutoUpdate = () => {
1144
+ cleanupAutoUpdate();
1145
+ this.clearAsyncFetchState();
1146
+ };
1147
+ }
1148
+ scrollOptionIntoView() {
1149
+ requestAnimationFrame(() => {
1150
+ var _a;
1151
+ const highlighted = (_a = this.listboxEl) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-index="${this.highlightedIndex}"]`);
1152
+ highlighted === null || highlighted === void 0 ? void 0 : highlighted.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
1153
+ });
1154
+ }
1155
+ emitChange({ added = [], removed = [] }) {
1156
+ this.pdsMultiselectChange.emit({ values: this.value, items: this.selectedItems, added, removed });
1157
+ }
1158
+ toggleOption(option) {
1159
+ var _a, _b;
1160
+ if (option.disabled)
1161
+ return;
1162
+ // Handle create option
1163
+ if (option.isCreateOption) {
1164
+ // Prevent multiple create calls while one is in-flight
1165
+ if (!this.creating) {
1166
+ this.createOption(this.searchQuery);
1167
+ }
1168
+ return;
1169
+ }
1170
+ const optionId = String(option.id);
1171
+ const isSelected = this.value.includes(optionId);
1172
+ if (isSelected) {
1173
+ // Remove from selection
1174
+ this.value = this.value.filter(v => v !== optionId);
1175
+ }
1176
+ else {
1177
+ // Add to selection
1178
+ if (this.maxSelections && this.value.length >= this.maxSelections) {
1179
+ return;
1180
+ }
1181
+ this.value = [...this.value, optionId];
1182
+ }
1183
+ // Sync selected items to ensure no duplicates and accurate state
1184
+ this.syncSelectedItems();
1185
+ // Emit change event with synced items
1186
+ this.emitChange(isSelected ? { removed: [optionId] } : { added: [optionId] });
1187
+ if (this.closePanelOnSelect) {
1188
+ this.isClosingViaSelection = true;
1189
+ this.closeDropdown();
1190
+ (_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
1191
+ }
1192
+ else {
1193
+ // Keep focus on search input, don't close dropdown
1194
+ (_b = this.searchInputEl) === null || _b === void 0 ? void 0 : _b.focus();
1195
+ }
1196
+ }
1197
+ selectOption(option) {
1198
+ // For keyboard navigation - toggle the option
1199
+ this.toggleOption(option);
1200
+ }
1201
+ getGroupedRenderItems(filteredOptions) {
1202
+ const items = [];
1203
+ let currentGroup = null;
1204
+ filteredOptions.forEach((option, index) => {
1205
+ const group = option.group;
1206
+ if (group !== undefined) {
1207
+ if (!currentGroup || currentGroup.group !== group) {
1208
+ currentGroup = { type: 'group', group, options: [] };
1209
+ items.push(currentGroup);
1210
+ }
1211
+ currentGroup.options.push({ option, index });
1212
+ }
1213
+ else {
1214
+ currentGroup = null;
1215
+ items.push({ type: 'option', option, index });
1216
+ }
1217
+ });
1218
+ return items;
1219
+ }
1220
+ renderOption(option, index, valueArray) {
1221
+ const isSelected = valueArray.includes(String(option.id));
1222
+ const isCreateOption = option.isCreateOption;
1223
+ const isDisabled = option.disabled;
1224
+ const isHighlighted = index === this.highlightedIndex && !isCreateOption;
1225
+ const optionId = `${this.componentId}-option-${index}`;
1226
+ const isCreateDisabled = isCreateOption && this.creating;
1227
+ const hasAction = this.hasOptionAction(option);
1228
+ return (h("li", { key: String(option.id), id: optionId, class: {
1229
+ 'pds-multiselect__option': true,
1230
+ 'pds-multiselect__option--highlighted': isHighlighted,
1231
+ 'pds-multiselect__option--selected': isSelected,
1232
+ 'pds-multiselect__option--create': isCreateOption,
1233
+ 'pds-multiselect__option--disabled': isDisabled || isCreateDisabled,
1234
+ }, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": isDisabled || isCreateDisabled ? 'true' : undefined, "aria-label": isCreateOption ? formatMessage(this.createOptionAriaLabel, { text: option.text }) : undefined, "aria-describedby": hasAction ? `${optionId}-action-description` : undefined, "data-index": index, onMouseDown: this.handleOptionMouseDown(option), onClick: this.handleOptionClick, onMouseEnter: this.handleOptionMouseEnter(index, option) }, isCreateOption ? (h("pds-box", { class: "pds-multiselect__create-option", "align-items": "center", gap: "xs" }, h("pds-icon", { name: "add", size: "small", "aria-hidden": "true" }), h("pds-text", null, formatMessage(this.createOptionLabel, { text: option.text })))) : (h("pds-checkbox", { componentId: `${this.componentId}-checkbox-${index}`, checked: isSelected, label: option.text, disabled: isDisabled, style: { pointerEvents: 'none' } }, this.optionDisplay === 'chip' && (h("pds-chip", { slot: "label", sentiment: "subtle", dot: !!option.dotColor, "dot-color": option.dotColor, "max-width": "100%" }, option.text)))), hasAction && this.renderOptionAction(option, optionId, isHighlighted)));
1235
+ }
1236
+ renderOptionAction(option, optionId, isHighlighted) {
1237
+ var _a;
1238
+ const label = formatMessage((_a = option.actionLabel) !== null && _a !== void 0 ? _a : this.optionActionLabel, { text: option.text });
1239
+ return [
1240
+ h("span", { class: "pds-multiselect__option-action", title: label, "aria-hidden": "true", onMouseDown: this.handleOptionActionMouseDown, onClick: this.handleOptionActionClick(option) }, (isHighlighted || this.isHoverless) && h("pds-icon", { name: option.actionIcon })),
1241
+ h("span", { id: `${optionId}-action-description`, hidden: true }, formatMessage(this.optionActionDescription, { action: label })),
1242
+ ];
1243
+ }
1244
+ renderSelectedItemsList() {
1245
+ if (this.hideSelectedItems || this.selectedItems.length === 0)
1246
+ return null;
1247
+ return (h("div", { class: "pds-multiselect__selected-section" }, h("ul", { class: "pds-multiselect__selected-list", role: "list", onKeyDown: this.handleSelectedListKeyDown }, this.selectedItems.map(item => (h("li", { key: String(item.id), class: "pds-multiselect__selected-item" }, item.text))))));
1248
+ }
1249
+ renderDropdown() {
1250
+ if (!this.isOpen)
1251
+ return null;
1252
+ const filteredOptions = this.getFilteredOptions();
1253
+ const valueArray = this.ensureValueArray();
1254
+ const hasSlottedEmpty = !!this.el.querySelector('[slot="empty"]');
1255
+ const hasSlottedLoading = !!this.el.querySelector('[slot="loading"]');
1256
+ const hasSlottedFooter = !!this.el.querySelector('[slot="footer"]');
1257
+ return (h("div", { class: "pds-multiselect__panel", ref: el => (this.panelEl = el), style: { minWidth: this.minWidth } }, h("div", { class: "pds-multiselect__search" }, h("pds-icon", { name: "search", size: "small", "aria-hidden": "true" }), h("input", { ref: el => (this.searchInputEl = el), type: "text", class: "pds-multiselect__search-input", placeholder: this.searchPlaceholder, value: this.searchQuery, "aria-label": this.searchOptionsLabel, "aria-controls": `${this.componentId}-listbox`, "aria-activedescendant": this.highlightedIndex >= 0 ? `${this.componentId}-option-${this.highlightedIndex}` : undefined, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": "true", "aria-autocomplete": "list", autocomplete: "off", onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchInputKeyDown })), this.renderSelectedItemsList(), h("ul", { class: "pds-multiselect__listbox", role: "listbox", "aria-multiselectable": "true", "aria-label": this.label || this.optionsLabel, id: `${this.componentId}-listbox`, ref: el => (this.listboxEl = el), style: { maxHeight: this.maxHeight }, onScroll: this.handleScroll }, this.loading && (h("li", { class: "pds-multiselect__loading", role: "presentation" }, hasSlottedLoading ? (h("slot", { name: "loading" })) : (h("pds-loader", { size: "small" })))), !this.loading && filteredOptions.length === 0 && (h("li", { class: "pds-multiselect__empty", role: "presentation" }, hasSlottedEmpty ? (h("slot", { name: "empty" })) : (h("span", null, this.noOptionsFoundLabel)))), this.getGroupedRenderItems(filteredOptions).map((item, itemIndex) => {
1258
+ if (item.type === 'group') {
1259
+ return (h("li", { key: `group-${itemIndex}`, role: "group", "aria-label": item.group, class: "pds-multiselect__group" }, h("span", { class: "pds-multiselect__group-header", "aria-hidden": "true" }, item.group), h("ul", { class: "pds-multiselect__group-list", role: "presentation" }, item.options.map(({ option, index }) => this.renderOption(option, index, valueArray)))));
1260
+ }
1261
+ return this.renderOption(item.option, item.index, valueArray);
1262
+ }), this.hasMore && !this.loading && (h("li", { class: "pds-multiselect__load-more", role: "presentation" }, h("pds-loader", { size: "small" })))), hasSlottedFooter && (h("div", { class: "pds-multiselect__footer", onMouseDown: this.handleFooterMouseDown, onKeyDown: this.handleFooterKeyDown }, h("slot", { name: "footer" })))));
1263
+ }
1264
+ renderInlinePills() {
1265
+ const hasSelections = this.selectedItems.length > 0;
1266
+ if (!hasSelections) {
1267
+ return (h("span", { class: "pds-multiselect__trigger-text pds-multiselect__trigger-text--placeholder" }, this.placeholder || 'Select...'));
1268
+ }
1269
+ const variant = this.disabled ? 'text' : 'tag';
1270
+ const visibleItems = this.selectedItems.slice(0, Math.max(1, this.maxInlinePills));
1271
+ const overflowCount = this.selectedItems.length - visibleItems.length;
1272
+ return (h("div", { class: "pds-multiselect__pill-list pds-multiselect__pill-list--inline", "aria-label": this.selectedItemsLabel }, visibleItems.map(item => (h("pds-chip", { key: String(item.id), "component-id": `${this.componentId}-pill-${item.id}`, variant: variant, size: "sm", sentiment: "neutral", "dismiss-label": this.pillRemoveLabel, onPdsTagCloseClick: this.handlePillRemove(item) }, item.text))), overflowCount > 0 && (h("span", { class: "pds-multiselect__pill-overflow" }, "+", overflowCount))));
1273
+ }
1274
+ renderBelowPills() {
1275
+ if (this.selectedItems.length === 0)
1276
+ return null;
1277
+ const variant = this.disabled ? 'text' : 'tag';
1278
+ return (h("div", { class: "pds-multiselect__pill-list pds-multiselect__pill-list--below", "aria-label": this.selectedItemsLabel }, this.selectedItems.map(item => (h("pds-chip", { key: String(item.id), "component-id": `${this.componentId}-pill-${item.id}`, variant: variant, size: "md", sentiment: "neutral", "dismiss-label": this.pillRemoveLabel, onPdsTagCloseClick: this.handlePillRemove(item) }, item.text)))));
1279
+ }
1280
+ getTriggerText() {
1281
+ var _a;
1282
+ const count = this.selectedItems.length;
1283
+ if (count === 0 || (this.selectedDisplay === 'pill' && this.pillPosition === 'below')) {
1284
+ // Fall back to a non-empty string: the trigger's accessible name comes from
1285
+ // this text, so an empty/undefined placeholder must never leave it nameless
1286
+ // (WCAG 4.1.2). The prop is localizable; this last-resort default is not.
1287
+ return this.placeholder || 'Select...';
1288
+ }
1289
+ // One selection shows its name; the count only says something once there's more than one.
1290
+ // An option without text still falls back to the count, so the trigger is never nameless.
1291
+ if (count === 1 && ((_a = this.selectedItems[0].text) === null || _a === void 0 ? void 0 : _a.trim())) {
1292
+ return this.selectedItems[0].text;
1293
+ }
1294
+ return pluralize(this.el, count, this.resolveCountForms());
1295
+ }
1296
+ /**
1297
+ * The text that sets the trigger's width. A single selection's name could be any length, so the
1298
+ * trigger keeps the width the count would give it and the name truncates inside that, rather than
1299
+ * widening a multiselect that has no width of its own.
1300
+ */
1301
+ getTriggerSizerText() {
1302
+ const text = this.getTriggerText();
1303
+ const count = this.selectedItems.length;
1304
+ const showsName = count === 1 && text === this.selectedItems[0].text && !(this.selectedDisplay === 'pill' && this.pillPosition === 'below');
1305
+ return showsName ? pluralize(this.el, count, this.resolveCountForms()) : text;
1306
+ }
1307
+ /**
1308
+ * The `one`/`other` props are the ergonomic English defaults; `selectedCountLabels`
1309
+ * (object or JSON-string attribute) layers full CLDR forms on top for locales
1310
+ * that need `few`/`many`/`two`/`zero`. Malformed JSON degrades to the defaults.
1311
+ */
1312
+ resolveCountForms() {
1313
+ const base = {
1314
+ one: this.selectedCountLabelOne,
1315
+ other: this.selectedCountLabelOther,
1316
+ };
1317
+ const extra = this.selectedCountLabels;
1318
+ if (!extra)
1319
+ return base;
1320
+ if (typeof extra === 'string') {
1321
+ try {
1322
+ const parsed = JSON.parse(extra);
1323
+ return parsed && typeof parsed === 'object' ? Object.assign(Object.assign({}, base), parsed) : base;
1324
+ }
1325
+ catch (_a) {
1326
+ return base; // not valid JSON → fall back to the English-shape defaults
1327
+ }
1328
+ }
1329
+ return Object.assign(Object.assign({}, base), extra);
1330
+ }
1331
+ render() {
1332
+ const hasSelections = this.selectedItems.length > 0;
1333
+ return (h(Host, { key: '12298f9692ac8644230195cc1abe0e26bb5715a9', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '5d98f9edae2f471d9662c65454fbef7b2dec83e1', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: '2f6d4162d0649978bc53c34327b6149dc971fd4c', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1334
+ 'pds-multiselect__label': true,
1335
+ 'visually-hidden': this.hideLabel,
1336
+ } }, this.label)), h("div", { key: '7a337e876c8fff854e5b9a067ef89b9d5136df4f', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (h("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1337
+ 'pds-multiselect__trigger': true,
1338
+ 'pds-multiselect__trigger--open': this.isOpen,
1339
+ 'pds-multiselect__trigger--disabled': this.disabled,
1340
+ 'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
1341
+ 'pds-multiselect__trigger--has-value': hasSelections,
1342
+ 'pds-multiselect__trigger--pill-inline': true,
1343
+ }, onClick: this.handleTriggerClick }, this.renderInlinePills(), h("button", { ref: el => (this.triggerEl = el), type: "button", id: this.componentId, part: "pill-toggle", class: "pds-multiselect__pill-toggle", disabled: this.disabled, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-labelledby": this.label ? `${this.componentId}-label` : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onKeyDown: this.handleTriggerKeyDown }, h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge })))) : (h("button", { ref: el => (this.triggerEl = el), type: "button", part: "trigger", class: {
1344
+ 'pds-multiselect__trigger': true,
1345
+ 'pds-multiselect__trigger--open': this.isOpen,
1346
+ 'pds-multiselect__trigger--disabled': this.disabled,
1347
+ 'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
1348
+ 'pds-multiselect__trigger--has-value': hasSelections,
1349
+ }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, h("span", { class: "pds-multiselect__trigger-label" }, h("span", { class: "pds-multiselect__trigger-sizer", "aria-hidden": "true" }, this.getTriggerSizerText()), h("span", { class: {
1350
+ 'pds-multiselect__trigger-text': true,
1351
+ 'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
1352
+ } }, this.getTriggerText())), h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: 'd3cf5bb64a6c296c84af30628698559c0c904117', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: 'a711280151ff360758143906a76fa2d25f4078a9', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: '17411d6bb55843f45f8d7ee410b627de846eed65', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '446ffc0ed08b7856f0ef8c49bdf06b6011404a12', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)), h("div", { key: 'a83ed6c5d84cbf38f267f7e15bd871d09534c554', style: { display: 'none' } }, h("slot", { key: '294ce6a2bd4405854161aed5d8166fcc86e211e3' })))));
1353
+ }
1354
+ static get is() { return "pds-multiselect"; }
1355
+ static get encapsulation() { return "shadow"; }
1356
+ static get formAssociated() { return true; }
1357
+ static get originalStyleUrls() {
1358
+ return {
1359
+ "$": ["pds-multiselect.scss"]
1360
+ };
1361
+ }
1362
+ static get styleUrls() {
1363
+ return {
1364
+ "$": ["pds-multiselect.css"]
1365
+ };
1366
+ }
1367
+ static get properties() {
1368
+ return {
1369
+ "componentId": {
1370
+ "type": "string",
1371
+ "mutable": false,
1372
+ "complexType": {
1373
+ "original": "string",
1374
+ "resolved": "string",
1375
+ "references": {}
1376
+ },
1377
+ "required": true,
1378
+ "optional": false,
1379
+ "docs": {
1380
+ "tags": [],
1381
+ "text": "A unique identifier used for the underlying component `id` attribute."
1382
+ },
1383
+ "getter": false,
1384
+ "setter": false,
1385
+ "reflect": false,
1386
+ "attribute": "component-id"
1387
+ },
1388
+ "label": {
1389
+ "type": "string",
1390
+ "mutable": false,
1391
+ "complexType": {
1392
+ "original": "string",
1393
+ "resolved": "string",
1394
+ "references": {}
1395
+ },
1396
+ "required": false,
1397
+ "optional": true,
1398
+ "docs": {
1399
+ "tags": [],
1400
+ "text": "Text to be displayed as the multiselect label."
1401
+ },
1402
+ "getter": false,
1403
+ "setter": false,
1404
+ "reflect": false,
1405
+ "attribute": "label"
1406
+ },
1407
+ "placeholder": {
1408
+ "type": "string",
1409
+ "mutable": false,
1410
+ "complexType": {
1411
+ "original": "string",
1412
+ "resolved": "string",
1413
+ "references": {}
1414
+ },
1415
+ "required": false,
1416
+ "optional": false,
1417
+ "docs": {
1418
+ "tags": [{
1419
+ "name": "defaultValue",
1420
+ "text": "'Select...'"
1421
+ }],
1422
+ "text": "Placeholder text for the input field. Pass a translated string to localize it; defaults to English."
1423
+ },
1424
+ "getter": false,
1425
+ "setter": false,
1426
+ "reflect": false,
1427
+ "attribute": "placeholder",
1428
+ "defaultValue": "'Select...'"
1429
+ },
1430
+ "searchPlaceholder": {
1431
+ "type": "string",
1432
+ "mutable": false,
1433
+ "complexType": {
1434
+ "original": "string",
1435
+ "resolved": "string",
1436
+ "references": {}
1437
+ },
1438
+ "required": false,
1439
+ "optional": false,
1440
+ "docs": {
1441
+ "tags": [{
1442
+ "name": "defaultValue",
1443
+ "text": "'Find...'"
1444
+ }],
1445
+ "text": "Placeholder text for the search input inside the dropdown panel. Pass a translated string to localize it; defaults to English."
1446
+ },
1447
+ "getter": false,
1448
+ "setter": false,
1449
+ "reflect": false,
1450
+ "attribute": "search-placeholder",
1451
+ "defaultValue": "'Find...'"
1452
+ },
1453
+ "searchOptionsLabel": {
1454
+ "type": "string",
1455
+ "mutable": false,
1456
+ "complexType": {
1457
+ "original": "string",
1458
+ "resolved": "string",
1459
+ "references": {}
1460
+ },
1461
+ "required": false,
1462
+ "optional": false,
1463
+ "docs": {
1464
+ "tags": [{
1465
+ "name": "defaultValue",
1466
+ "text": "'Search options'"
1467
+ }],
1468
+ "text": "Accessible label for the search input. Pass a translated string to localize it; defaults to English."
1469
+ },
1470
+ "getter": false,
1471
+ "setter": false,
1472
+ "reflect": false,
1473
+ "attribute": "search-options-label",
1474
+ "defaultValue": "'Search options'"
1475
+ },
1476
+ "selectedItemsLabel": {
1477
+ "type": "string",
1478
+ "mutable": false,
1479
+ "complexType": {
1480
+ "original": "string",
1481
+ "resolved": "string",
1482
+ "references": {}
1483
+ },
1484
+ "required": false,
1485
+ "optional": false,
1486
+ "docs": {
1487
+ "tags": [{
1488
+ "name": "defaultValue",
1489
+ "text": "'Selected items'"
1490
+ }],
1491
+ "text": "Accessible label for the selected-items region. Pass a translated string to localize it; defaults to English."
1492
+ },
1493
+ "getter": false,
1494
+ "setter": false,
1495
+ "reflect": false,
1496
+ "attribute": "selected-items-label",
1497
+ "defaultValue": "'Selected items'"
1498
+ },
1499
+ "optionsLabel": {
1500
+ "type": "string",
1501
+ "mutable": false,
1502
+ "complexType": {
1503
+ "original": "string",
1504
+ "resolved": "string",
1505
+ "references": {}
1506
+ },
1507
+ "required": false,
1508
+ "optional": false,
1509
+ "docs": {
1510
+ "tags": [{
1511
+ "name": "defaultValue",
1512
+ "text": "'Options'"
1513
+ }],
1514
+ "text": "Accessible label for the options listbox (falls back to this when `label` is unset). Pass a translated string to localize it; defaults to English."
1515
+ },
1516
+ "getter": false,
1517
+ "setter": false,
1518
+ "reflect": false,
1519
+ "attribute": "options-label",
1520
+ "defaultValue": "'Options'"
1521
+ },
1522
+ "noOptionsFoundLabel": {
1523
+ "type": "string",
1524
+ "mutable": false,
1525
+ "complexType": {
1526
+ "original": "string",
1527
+ "resolved": "string",
1528
+ "references": {}
1529
+ },
1530
+ "required": false,
1531
+ "optional": false,
1532
+ "docs": {
1533
+ "tags": [{
1534
+ "name": "defaultValue",
1535
+ "text": "'No options found'"
1536
+ }],
1537
+ "text": "Text shown when no options match the search. Pass a translated string to localize it; defaults to English."
1538
+ },
1539
+ "getter": false,
1540
+ "setter": false,
1541
+ "reflect": false,
1542
+ "attribute": "no-options-found-label",
1543
+ "defaultValue": "'No options found'"
1544
+ },
1545
+ "createOptionLabel": {
1546
+ "type": "string",
1547
+ "mutable": false,
1548
+ "complexType": {
1549
+ "original": "string",
1550
+ "resolved": "string",
1551
+ "references": {}
1552
+ },
1553
+ "required": false,
1554
+ "optional": false,
1555
+ "docs": {
1556
+ "tags": [{
1557
+ "name": "defaultValue",
1558
+ "text": "'Add \"{text}\"'"
1559
+ }],
1560
+ "text": "Visible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated."
1561
+ },
1562
+ "getter": false,
1563
+ "setter": false,
1564
+ "reflect": false,
1565
+ "attribute": "create-option-label",
1566
+ "defaultValue": "'Add \"{text}\"'"
1567
+ },
1568
+ "createOptionAriaLabel": {
1569
+ "type": "string",
1570
+ "mutable": false,
1571
+ "complexType": {
1572
+ "original": "string",
1573
+ "resolved": "string",
1574
+ "references": {}
1575
+ },
1576
+ "required": false,
1577
+ "optional": false,
1578
+ "docs": {
1579
+ "tags": [{
1580
+ "name": "defaultValue",
1581
+ "text": "'Create new tag: {text}'"
1582
+ }],
1583
+ "text": "Accessible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated."
1584
+ },
1585
+ "getter": false,
1586
+ "setter": false,
1587
+ "reflect": false,
1588
+ "attribute": "create-option-aria-label",
1589
+ "defaultValue": "'Create new tag: {text}'"
1590
+ },
1591
+ "itemRemovedLabel": {
1592
+ "type": "string",
1593
+ "mutable": false,
1594
+ "complexType": {
1595
+ "original": "string",
1596
+ "resolved": "string",
1597
+ "references": {}
1598
+ },
1599
+ "required": false,
1600
+ "optional": false,
1601
+ "docs": {
1602
+ "tags": [{
1603
+ "name": "defaultValue",
1604
+ "text": "'{item} removed'"
1605
+ }],
1606
+ "text": "Screen-reader announcement when an item is removed. Pass a translated string to localize it; `{item}` is interpolated."
1607
+ },
1608
+ "getter": false,
1609
+ "setter": false,
1610
+ "reflect": false,
1611
+ "attribute": "item-removed-label",
1612
+ "defaultValue": "'{item} removed'"
1613
+ },
1614
+ "pillRemoveLabel": {
1615
+ "type": "string",
1616
+ "mutable": false,
1617
+ "complexType": {
1618
+ "original": "string",
1619
+ "resolved": "string",
1620
+ "references": {}
1621
+ },
1622
+ "required": false,
1623
+ "optional": false,
1624
+ "docs": {
1625
+ "tags": [{
1626
+ "name": "defaultValue",
1627
+ "text": "'Remove'"
1628
+ }],
1629
+ "text": "Accessible label for the remove button on each selected-item pill. Pass a translated string to localize it; defaults to English."
1630
+ },
1631
+ "getter": false,
1632
+ "setter": false,
1633
+ "reflect": false,
1634
+ "attribute": "pill-remove-label",
1635
+ "defaultValue": "'Remove'"
1636
+ },
1637
+ "selectedCountLabelOne": {
1638
+ "type": "string",
1639
+ "mutable": false,
1640
+ "complexType": {
1641
+ "original": "string",
1642
+ "resolved": "string",
1643
+ "references": {}
1644
+ },
1645
+ "required": false,
1646
+ "optional": false,
1647
+ "docs": {
1648
+ "tags": [{
1649
+ "name": "defaultValue",
1650
+ "text": "'{count} item'"
1651
+ }],
1652
+ "text": "Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.\nA single selection shows the item's name instead, so this applies to other counts that a locale's plural rules treat as singular, and to a single selection whose item has no text."
1653
+ },
1654
+ "getter": false,
1655
+ "setter": false,
1656
+ "reflect": false,
1657
+ "attribute": "selected-count-label-one",
1658
+ "defaultValue": "'{count} item'"
1659
+ },
1660
+ "selectedCountLabelOther": {
1661
+ "type": "string",
1662
+ "mutable": false,
1663
+ "complexType": {
1664
+ "original": "string",
1665
+ "resolved": "string",
1666
+ "references": {}
1667
+ },
1668
+ "required": false,
1669
+ "optional": false,
1670
+ "docs": {
1671
+ "tags": [{
1672
+ "name": "defaultValue",
1673
+ "text": "'{count} items'"
1674
+ }],
1675
+ "text": "Plural (and fallback) form of the selected-count trigger text \u2014 used for English and any locale whose selected plural category isn't supplied via `selectedCountLabels`. Pass a translated string to localize it; `{count}` is interpolated."
1676
+ },
1677
+ "getter": false,
1678
+ "setter": false,
1679
+ "reflect": false,
1680
+ "attribute": "selected-count-label-other",
1681
+ "defaultValue": "'{count} items'"
1682
+ },
1683
+ "selectedCountLabels": {
1684
+ "type": "string",
1685
+ "mutable": false,
1686
+ "complexType": {
1687
+ "original": "PluralForms | string",
1688
+ "resolved": "\"few\" | \"many\" | \"one\" | \"other\" | \"two\" | \"zero\" | string",
1689
+ "references": {
1690
+ "PluralForms": {
1691
+ "location": "import",
1692
+ "path": "../../i18n",
1693
+ "id": "src/i18n/index.ts::PluralForms",
1694
+ "referenceLocation": "PluralForms"
1695
+ }
1696
+ }
1697
+ },
1698
+ "required": false,
1699
+ "optional": true,
1700
+ "docs": {
1701
+ "tags": [{
1702
+ "name": "defaultValue",
1703
+ "text": "undefined"
1704
+ }],
1705
+ "text": "Full CLDR plural forms for the selected-count trigger text, for locales with more than the English `one`/`other` categories (e.g. Polish `few`/`many`, Arabic `zero`/`two`). Accepts an object property or a JSON string attribute keyed by CLDR category \u2014 `{ one, other, few, many, two, zero }`. Any form omitted here falls back to `selectedCountLabelOne`/`selectedCountLabelOther`. `{count}` is interpolated. A single selection shows the item's name instead of any form, unless the item has no text."
1706
+ },
1707
+ "getter": false,
1708
+ "setter": false,
1709
+ "reflect": false,
1710
+ "attribute": "selected-count-labels"
1711
+ },
1712
+ "closePanelOnSelect": {
1713
+ "type": "boolean",
1714
+ "mutable": false,
1715
+ "complexType": {
1716
+ "original": "boolean",
1717
+ "resolved": "boolean",
1718
+ "references": {}
1719
+ },
1720
+ "required": false,
1721
+ "optional": false,
1722
+ "docs": {
1723
+ "tags": [],
1724
+ "text": "Whether to close the panel after an option is selected.\nDefaults to `false` (panel stays open for multi-select)."
1725
+ },
1726
+ "getter": false,
1727
+ "setter": false,
1728
+ "reflect": false,
1729
+ "attribute": "close-panel-on-select",
1730
+ "defaultValue": "false"
1731
+ },
1732
+ "name": {
1733
+ "type": "string",
1734
+ "mutable": false,
1735
+ "complexType": {
1736
+ "original": "string",
1737
+ "resolved": "string",
1738
+ "references": {}
1739
+ },
1740
+ "required": false,
1741
+ "optional": true,
1742
+ "docs": {
1743
+ "tags": [],
1744
+ "text": "Specifies the name. Submitted with the form as part of a name/value pair."
1745
+ },
1746
+ "getter": false,
1747
+ "setter": false,
1748
+ "reflect": false,
1749
+ "attribute": "name"
1750
+ },
1751
+ "value": {
1752
+ "type": "unknown",
1753
+ "mutable": true,
1754
+ "complexType": {
1755
+ "original": "string[]",
1756
+ "resolved": "string[]",
1757
+ "references": {}
1758
+ },
1759
+ "required": false,
1760
+ "optional": false,
1761
+ "docs": {
1762
+ "tags": [],
1763
+ "text": "Array of selected option values."
1764
+ },
1765
+ "getter": false,
1766
+ "setter": false,
1767
+ "defaultValue": "[]"
1768
+ },
1769
+ "disabled": {
1770
+ "type": "boolean",
1771
+ "mutable": false,
1772
+ "complexType": {
1773
+ "original": "boolean",
1774
+ "resolved": "boolean",
1775
+ "references": {}
1776
+ },
1777
+ "required": false,
1778
+ "optional": false,
1779
+ "docs": {
1780
+ "tags": [],
1781
+ "text": "Determines whether or not the multiselect is disabled."
1782
+ },
1783
+ "getter": false,
1784
+ "setter": false,
1785
+ "reflect": false,
1786
+ "attribute": "disabled",
1787
+ "defaultValue": "false"
1788
+ },
1789
+ "asyncUrl": {
1790
+ "type": "string",
1791
+ "mutable": false,
1792
+ "complexType": {
1793
+ "original": "string",
1794
+ "resolved": "string",
1795
+ "references": {}
1796
+ },
1797
+ "required": false,
1798
+ "optional": true,
1799
+ "docs": {
1800
+ "tags": [],
1801
+ "text": "URL endpoint for async data fetching."
1802
+ },
1803
+ "getter": false,
1804
+ "setter": false,
1805
+ "reflect": false,
1806
+ "attribute": "async-url"
1807
+ },
1808
+ "asyncMethod": {
1809
+ "type": "string",
1810
+ "mutable": false,
1811
+ "complexType": {
1812
+ "original": "'GET' | 'POST'",
1813
+ "resolved": "\"GET\" | \"POST\"",
1814
+ "references": {}
1815
+ },
1816
+ "required": false,
1817
+ "optional": false,
1818
+ "docs": {
1819
+ "tags": [],
1820
+ "text": "HTTP method for async requests."
1821
+ },
1822
+ "getter": false,
1823
+ "setter": false,
1824
+ "reflect": false,
1825
+ "attribute": "async-method",
1826
+ "defaultValue": "'GET'"
1827
+ },
1828
+ "debounce": {
1829
+ "type": "number",
1830
+ "mutable": false,
1831
+ "complexType": {
1832
+ "original": "number",
1833
+ "resolved": "number",
1834
+ "references": {}
1835
+ },
1836
+ "required": false,
1837
+ "optional": false,
1838
+ "docs": {
1839
+ "tags": [],
1840
+ "text": "Debounce delay in milliseconds for search/fetch."
1841
+ },
1842
+ "getter": false,
1843
+ "setter": false,
1844
+ "reflect": false,
1845
+ "attribute": "debounce",
1846
+ "defaultValue": "300"
1847
+ },
1848
+ "fetchTimeout": {
1849
+ "type": "number",
1850
+ "mutable": false,
1851
+ "complexType": {
1852
+ "original": "number",
1853
+ "resolved": "number",
1854
+ "references": {}
1855
+ },
1856
+ "required": false,
1857
+ "optional": false,
1858
+ "docs": {
1859
+ "tags": [],
1860
+ "text": "Timeout in milliseconds for async fetch requests."
1861
+ },
1862
+ "getter": false,
1863
+ "setter": false,
1864
+ "reflect": false,
1865
+ "attribute": "fetch-timeout",
1866
+ "defaultValue": "30000"
1867
+ },
1868
+ "maxSelections": {
1869
+ "type": "number",
1870
+ "mutable": false,
1871
+ "complexType": {
1872
+ "original": "number",
1873
+ "resolved": "number",
1874
+ "references": {}
1875
+ },
1876
+ "required": false,
1877
+ "optional": true,
1878
+ "docs": {
1879
+ "tags": [],
1880
+ "text": "Maximum number of selections allowed."
1881
+ },
1882
+ "getter": false,
1883
+ "setter": false,
1884
+ "reflect": false,
1885
+ "attribute": "max-selections"
1886
+ },
1887
+ "maxHeight": {
1888
+ "type": "string",
1889
+ "mutable": false,
1890
+ "complexType": {
1891
+ "original": "string",
1892
+ "resolved": "string",
1893
+ "references": {}
1894
+ },
1895
+ "required": false,
1896
+ "optional": false,
1897
+ "docs": {
1898
+ "tags": [],
1899
+ "text": "Maximum height of the dropdown before scrolling."
1900
+ },
1901
+ "getter": false,
1902
+ "setter": false,
1903
+ "reflect": false,
1904
+ "attribute": "max-height",
1905
+ "defaultValue": "'300px'"
1906
+ },
1907
+ "triggerWidth": {
1908
+ "type": "string",
1909
+ "mutable": false,
1910
+ "complexType": {
1911
+ "original": "string",
1912
+ "resolved": "string",
1913
+ "references": {}
1914
+ },
1915
+ "required": false,
1916
+ "optional": false,
1917
+ "docs": {
1918
+ "tags": [],
1919
+ "text": "Width of the trigger button (and reference for dropdown positioning)."
1920
+ },
1921
+ "getter": false,
1922
+ "setter": false,
1923
+ "reflect": false,
1924
+ "attribute": "trigger-width",
1925
+ "defaultValue": "'100%'"
1926
+ },
1927
+ "minWidth": {
1928
+ "type": "string",
1929
+ "mutable": false,
1930
+ "complexType": {
1931
+ "original": "string",
1932
+ "resolved": "string",
1933
+ "references": {}
1934
+ },
1935
+ "required": false,
1936
+ "optional": false,
1937
+ "docs": {
1938
+ "tags": [],
1939
+ "text": "Minimum width of the dropdown panel."
1940
+ },
1941
+ "getter": false,
1942
+ "setter": false,
1943
+ "reflect": false,
1944
+ "attribute": "min-width",
1945
+ "defaultValue": "'250px'"
1946
+ },
1947
+ "panelWidth": {
1948
+ "type": "string",
1949
+ "mutable": false,
1950
+ "complexType": {
1951
+ "original": "string",
1952
+ "resolved": "string",
1953
+ "references": {}
1954
+ },
1955
+ "required": false,
1956
+ "optional": true,
1957
+ "docs": {
1958
+ "tags": [],
1959
+ "text": "Width of the dropdown panel. Defaults to the trigger width."
1960
+ },
1961
+ "getter": false,
1962
+ "setter": false,
1963
+ "reflect": false,
1964
+ "attribute": "panel-width"
1965
+ },
1966
+ "hideLabel": {
1967
+ "type": "boolean",
1968
+ "mutable": false,
1969
+ "complexType": {
1970
+ "original": "boolean",
1971
+ "resolved": "boolean",
1972
+ "references": {}
1973
+ },
1974
+ "required": false,
1975
+ "optional": false,
1976
+ "docs": {
1977
+ "tags": [],
1978
+ "text": "Visually hides the label but keeps it accessible."
1979
+ },
1980
+ "getter": false,
1981
+ "setter": false,
1982
+ "reflect": false,
1983
+ "attribute": "hide-label",
1984
+ "defaultValue": "false"
1985
+ },
1986
+ "hideSelectedItems": {
1987
+ "type": "boolean",
1988
+ "mutable": false,
1989
+ "complexType": {
1990
+ "original": "boolean",
1991
+ "resolved": "boolean",
1992
+ "references": {}
1993
+ },
1994
+ "required": false,
1995
+ "optional": false,
1996
+ "docs": {
1997
+ "tags": [],
1998
+ "text": "Hides the selected items summary section in the dropdown panel."
1999
+ },
2000
+ "getter": false,
2001
+ "setter": false,
2002
+ "reflect": false,
2003
+ "attribute": "hide-selected-items",
2004
+ "defaultValue": "false"
2005
+ },
2006
+ "selectedDisplay": {
2007
+ "type": "string",
2008
+ "mutable": false,
2009
+ "complexType": {
2010
+ "original": "'count' | 'pill'",
2011
+ "resolved": "\"count\" | \"pill\"",
2012
+ "references": {}
2013
+ },
2014
+ "required": false,
2015
+ "optional": false,
2016
+ "docs": {
2017
+ "tags": [{
2018
+ "name": "default",
2019
+ "text": "'count'"
2020
+ }],
2021
+ "text": "Display mode for selected items outside the dropdown panel.\n`'count'` shows the item's name in the trigger when one is selected and\n\"N items\" text otherwise (default). `'pill'` renders selected items as\ndismissible pds-chip tags."
2022
+ },
2023
+ "getter": false,
2024
+ "setter": false,
2025
+ "reflect": false,
2026
+ "attribute": "selected-display",
2027
+ "defaultValue": "'count'"
2028
+ },
2029
+ "pillPosition": {
2030
+ "type": "string",
2031
+ "mutable": false,
2032
+ "complexType": {
2033
+ "original": "'inline' | 'below'",
2034
+ "resolved": "\"below\" | \"inline\"",
2035
+ "references": {}
2036
+ },
2037
+ "required": false,
2038
+ "optional": false,
2039
+ "docs": {
2040
+ "tags": [{
2041
+ "name": "default",
2042
+ "text": "'inline'"
2043
+ }],
2044
+ "text": "Position of pill chips when `selectedDisplay` is `'pill'`.\n`'inline'` places chips inside the trigger; `'below'` places chips in a\nflex-wrap row directly below the trigger."
2045
+ },
2046
+ "getter": false,
2047
+ "setter": false,
2048
+ "reflect": false,
2049
+ "attribute": "pill-position",
2050
+ "defaultValue": "'inline'"
2051
+ },
2052
+ "maxInlinePills": {
2053
+ "type": "number",
2054
+ "mutable": false,
2055
+ "complexType": {
2056
+ "original": "number",
2057
+ "resolved": "number",
2058
+ "references": {}
2059
+ },
2060
+ "required": false,
2061
+ "optional": false,
2062
+ "docs": {
2063
+ "tags": [{
2064
+ "name": "default",
2065
+ "text": "3"
2066
+ }],
2067
+ "text": "Maximum chips shown inline before collapsing to a \"+N more\" badge.\nOnly applies when `selectedDisplay='pill'` and `pillPosition='inline'`."
2068
+ },
2069
+ "getter": false,
2070
+ "setter": false,
2071
+ "reflect": false,
2072
+ "attribute": "max-inline-pills",
2073
+ "defaultValue": "3"
2074
+ },
2075
+ "optionDisplay": {
2076
+ "type": "string",
2077
+ "mutable": false,
2078
+ "complexType": {
2079
+ "original": "'text' | 'chip'",
2080
+ "resolved": "\"chip\" | \"text\"",
2081
+ "references": {}
2082
+ },
2083
+ "required": false,
2084
+ "optional": false,
2085
+ "docs": {
2086
+ "tags": [{
2087
+ "name": "defaultValue",
2088
+ "text": "'text'"
2089
+ }],
2090
+ "text": "Display mode for options in the dropdown panel.\n`'text'` shows each option's text (default). `'chip'` shows each option as a\npds-chip, with a dot when the option has a `dotColor`."
2091
+ },
2092
+ "getter": false,
2093
+ "setter": false,
2094
+ "reflect": false,
2095
+ "attribute": "option-display",
2096
+ "defaultValue": "'text'"
2097
+ },
2098
+ "errorMessage": {
2099
+ "type": "string",
2100
+ "mutable": false,
2101
+ "complexType": {
2102
+ "original": "string",
2103
+ "resolved": "string",
2104
+ "references": {}
2105
+ },
2106
+ "required": false,
2107
+ "optional": true,
2108
+ "docs": {
2109
+ "tags": [],
2110
+ "text": "Error message to display."
2111
+ },
2112
+ "getter": false,
2113
+ "setter": false,
2114
+ "reflect": false,
2115
+ "attribute": "error-message"
2116
+ },
2117
+ "helperMessage": {
2118
+ "type": "string",
2119
+ "mutable": false,
2120
+ "complexType": {
2121
+ "original": "string",
2122
+ "resolved": "string",
2123
+ "references": {}
2124
+ },
2125
+ "required": false,
2126
+ "optional": true,
2127
+ "docs": {
2128
+ "tags": [],
2129
+ "text": "Helper message to display below the input."
2130
+ },
2131
+ "getter": false,
2132
+ "setter": false,
2133
+ "reflect": false,
2134
+ "attribute": "helper-message"
2135
+ },
2136
+ "invalid": {
2137
+ "type": "boolean",
2138
+ "mutable": false,
2139
+ "complexType": {
2140
+ "original": "boolean",
2141
+ "resolved": "boolean",
2142
+ "references": {}
2143
+ },
2144
+ "required": false,
2145
+ "optional": true,
2146
+ "docs": {
2147
+ "tags": [],
2148
+ "text": "If true, the multiselect is in an invalid state."
2149
+ },
2150
+ "getter": false,
2151
+ "setter": false,
2152
+ "reflect": false,
2153
+ "attribute": "invalid"
2154
+ },
2155
+ "required": {
2156
+ "type": "boolean",
2157
+ "mutable": false,
2158
+ "complexType": {
2159
+ "original": "boolean",
2160
+ "resolved": "boolean",
2161
+ "references": {}
2162
+ },
2163
+ "required": false,
2164
+ "optional": false,
2165
+ "docs": {
2166
+ "tags": [],
2167
+ "text": "If true, the multiselect is required."
2168
+ },
2169
+ "getter": false,
2170
+ "setter": false,
2171
+ "reflect": false,
2172
+ "attribute": "required",
2173
+ "defaultValue": "false"
2174
+ },
2175
+ "loading": {
2176
+ "type": "boolean",
2177
+ "mutable": true,
2178
+ "complexType": {
2179
+ "original": "boolean",
2180
+ "resolved": "boolean",
2181
+ "references": {}
2182
+ },
2183
+ "required": false,
2184
+ "optional": false,
2185
+ "docs": {
2186
+ "tags": [],
2187
+ "text": "Whether the component is currently loading async options."
2188
+ },
2189
+ "getter": false,
2190
+ "setter": false,
2191
+ "reflect": false,
2192
+ "attribute": "loading",
2193
+ "defaultValue": "false"
2194
+ },
2195
+ "options": {
2196
+ "type": "unknown",
2197
+ "mutable": false,
2198
+ "complexType": {
2199
+ "original": "MultiselectOption[]",
2200
+ "resolved": "MultiselectOption[]",
2201
+ "references": {
2202
+ "MultiselectOption": {
2203
+ "location": "import",
2204
+ "path": "./multiselect-interface",
2205
+ "id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectOption",
2206
+ "referenceLocation": "MultiselectOption"
2207
+ }
2208
+ }
2209
+ },
2210
+ "required": false,
2211
+ "optional": true,
2212
+ "docs": {
2213
+ "tags": [],
2214
+ "text": "Options provided externally (for consumer-managed async).\nWhen using `group` on options, keep each group block contiguous in the array.\nThe same `group` label appearing again after other items produces a separate header (same as native `<optgroup>`)."
2215
+ },
2216
+ "getter": false,
2217
+ "setter": false
2218
+ },
2219
+ "formatResult": {
2220
+ "type": "unknown",
2221
+ "mutable": false,
2222
+ "complexType": {
2223
+ "original": "(item: unknown) => MultiselectOption",
2224
+ "resolved": "(item: unknown) => MultiselectOption",
2225
+ "references": {
2226
+ "MultiselectOption": {
2227
+ "location": "import",
2228
+ "path": "./multiselect-interface",
2229
+ "id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectOption",
2230
+ "referenceLocation": "MultiselectOption"
2231
+ }
2232
+ }
2233
+ },
2234
+ "required": false,
2235
+ "optional": true,
2236
+ "docs": {
2237
+ "tags": [],
2238
+ "text": "Function to format async results. Receives raw API response item."
2239
+ },
2240
+ "getter": false,
2241
+ "setter": false
2242
+ },
2243
+ "createUrl": {
2244
+ "type": "string",
2245
+ "mutable": false,
2246
+ "complexType": {
2247
+ "original": "string",
2248
+ "resolved": "string",
2249
+ "references": {}
2250
+ },
2251
+ "required": false,
2252
+ "optional": true,
2253
+ "docs": {
2254
+ "tags": [],
2255
+ "text": "URL endpoint for creating new options. When set, shows \"Add\" option when no matches found."
2256
+ },
2257
+ "getter": false,
2258
+ "setter": false,
2259
+ "reflect": false,
2260
+ "attribute": "create-url"
2261
+ },
2262
+ "csrfToken": {
2263
+ "type": "string",
2264
+ "mutable": false,
2265
+ "complexType": {
2266
+ "original": "string",
2267
+ "resolved": "string",
2268
+ "references": {}
2269
+ },
2270
+ "required": false,
2271
+ "optional": true,
2272
+ "docs": {
2273
+ "tags": [],
2274
+ "text": "CSRF token for authenticated requests. If not provided, attempts to read from meta tag."
2275
+ },
2276
+ "getter": false,
2277
+ "setter": false,
2278
+ "reflect": false,
2279
+ "attribute": "csrf-token"
2280
+ },
2281
+ "csrfHeaderName": {
2282
+ "type": "string",
2283
+ "mutable": false,
2284
+ "complexType": {
2285
+ "original": "string",
2286
+ "resolved": "string",
2287
+ "references": {}
2288
+ },
2289
+ "required": false,
2290
+ "optional": true,
2291
+ "docs": {
2292
+ "tags": [],
2293
+ "text": "CSRF header name for authenticated requests. Defaults to `X-CSRF-Token`."
2294
+ },
2295
+ "getter": false,
2296
+ "setter": false,
2297
+ "reflect": false,
2298
+ "attribute": "csrf-header-name",
2299
+ "defaultValue": "'X-CSRF-Token'"
2300
+ },
2301
+ "optionActions": {
2302
+ "type": "boolean",
2303
+ "mutable": false,
2304
+ "complexType": {
2305
+ "original": "boolean",
2306
+ "resolved": "boolean",
2307
+ "references": {}
2308
+ },
2309
+ "required": false,
2310
+ "optional": false,
2311
+ "docs": {
2312
+ "tags": [],
2313
+ "text": "Shows an action icon on each option that has an `actionIcon`, such as an edit pencil.\nThe icon shows on the hovered or highlighted option; clicking it, or pressing Right Arrow on the highlighted option, emits `pdsMultiselectOptionAction`."
2314
+ },
2315
+ "getter": false,
2316
+ "setter": false,
2317
+ "reflect": false,
2318
+ "attribute": "option-actions",
2319
+ "defaultValue": "false"
2320
+ },
2321
+ "optionActionLabel": {
2322
+ "type": "string",
2323
+ "mutable": false,
2324
+ "complexType": {
2325
+ "original": "string",
2326
+ "resolved": "string",
2327
+ "references": {}
2328
+ },
2329
+ "required": false,
2330
+ "optional": false,
2331
+ "docs": {
2332
+ "tags": [{
2333
+ "name": "defaultValue",
2334
+ "text": "'Edit {text}'"
2335
+ }],
2336
+ "text": "Tooltip for an option's action icon when the option has no `actionLabel`. Pass a translated string to localize it; `{text}` is interpolated."
2337
+ },
2338
+ "getter": false,
2339
+ "setter": false,
2340
+ "reflect": false,
2341
+ "attribute": "option-action-label",
2342
+ "defaultValue": "'Edit {text}'"
2343
+ },
2344
+ "optionActionDescription": {
2345
+ "type": "string",
2346
+ "mutable": false,
2347
+ "complexType": {
2348
+ "original": "string",
2349
+ "resolved": "string",
2350
+ "references": {}
2351
+ },
2352
+ "required": false,
2353
+ "optional": false,
2354
+ "docs": {
2355
+ "tags": [{
2356
+ "name": "defaultValue",
2357
+ "text": "'Press Right Arrow to {action}'"
2358
+ }],
2359
+ "text": "Screen-reader hint on each option that has an action, naming the key that runs it. Pass a translated string to localize it; `{action}` is interpolated with the option's action label."
2360
+ },
2361
+ "getter": false,
2362
+ "setter": false,
2363
+ "reflect": false,
2364
+ "attribute": "option-action-description",
2365
+ "defaultValue": "'Press Right Arrow to {action}'"
2366
+ }
2367
+ };
2368
+ }
2369
+ static get states() {
2370
+ return {
2371
+ "isOpen": {},
2372
+ "searchQuery": {},
2373
+ "highlightedIndex": {},
2374
+ "internalOptions": {},
2375
+ "selectedItems": {},
2376
+ "currentPage": {},
2377
+ "hasMore": {},
2378
+ "creating": {},
2379
+ "removalAnnouncement": {},
2380
+ "slottedTriggerEl": {}
2381
+ };
2382
+ }
2383
+ static get events() {
2384
+ return [{
2385
+ "method": "pdsMultiselectChange",
2386
+ "name": "pdsMultiselectChange",
2387
+ "bubbles": true,
2388
+ "cancelable": true,
2389
+ "composed": true,
2390
+ "docs": {
2391
+ "tags": [],
2392
+ "text": "Emitted when selection changes."
2393
+ },
2394
+ "complexType": {
2395
+ "original": "MultiselectChangeEventDetail",
2396
+ "resolved": "MultiselectChangeEventDetail",
2397
+ "references": {
2398
+ "MultiselectChangeEventDetail": {
2399
+ "location": "import",
2400
+ "path": "./multiselect-interface",
2401
+ "id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectChangeEventDetail",
2402
+ "referenceLocation": "MultiselectChangeEventDetail"
2403
+ }
2404
+ }
2405
+ }
2406
+ }, {
2407
+ "method": "pdsMultiselectSearch",
2408
+ "name": "pdsMultiselectSearch",
2409
+ "bubbles": true,
2410
+ "cancelable": true,
2411
+ "composed": true,
2412
+ "docs": {
2413
+ "tags": [],
2414
+ "text": "Emitted on search input (for consumer-managed async)."
2415
+ },
2416
+ "complexType": {
2417
+ "original": "MultiselectSearchEventDetail",
2418
+ "resolved": "MultiselectSearchEventDetail",
2419
+ "references": {
2420
+ "MultiselectSearchEventDetail": {
2421
+ "location": "import",
2422
+ "path": "./multiselect-interface",
2423
+ "id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectSearchEventDetail",
2424
+ "referenceLocation": "MultiselectSearchEventDetail"
2425
+ }
2426
+ }
2427
+ }
2428
+ }, {
2429
+ "method": "pdsMultiselectLoadOptions",
2430
+ "name": "pdsMultiselectLoadOptions",
2431
+ "bubbles": true,
2432
+ "cancelable": true,
2433
+ "composed": true,
2434
+ "docs": {
2435
+ "tags": [],
2436
+ "text": "Emitted to request more options (pagination)."
2437
+ },
2438
+ "complexType": {
2439
+ "original": "MultiselectLoadOptionsEventDetail",
2440
+ "resolved": "MultiselectLoadOptionsEventDetail",
2441
+ "references": {
2442
+ "MultiselectLoadOptionsEventDetail": {
2443
+ "location": "import",
2444
+ "path": "./multiselect-interface",
2445
+ "id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectLoadOptionsEventDetail",
2446
+ "referenceLocation": "MultiselectLoadOptionsEventDetail"
2447
+ }
2448
+ }
2449
+ }
2450
+ }, {
2451
+ "method": "pdsMultiselectCreate",
2452
+ "name": "pdsMultiselectCreate",
2453
+ "bubbles": true,
2454
+ "cancelable": true,
2455
+ "composed": true,
2456
+ "docs": {
2457
+ "tags": [],
2458
+ "text": "Emitted when a new option is created."
2459
+ },
2460
+ "complexType": {
2461
+ "original": "MultiselectCreateEventDetail",
2462
+ "resolved": "MultiselectCreateEventDetail",
2463
+ "references": {
2464
+ "MultiselectCreateEventDetail": {
2465
+ "location": "import",
2466
+ "path": "./multiselect-interface",
2467
+ "id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectCreateEventDetail",
2468
+ "referenceLocation": "MultiselectCreateEventDetail"
2469
+ }
2470
+ }
2471
+ }
2472
+ }, {
2473
+ "method": "pdsMultiselectDismiss",
2474
+ "name": "pdsMultiselectDismiss",
2475
+ "bubbles": true,
2476
+ "cancelable": true,
2477
+ "composed": true,
2478
+ "docs": {
2479
+ "tags": [],
2480
+ "text": "Emitted when the dropdown is dismissed with the Escape key, or by focus moving outside the\ncomponent, such as with a click elsewhere on the page.\n\nIt doesn't fire when the panel closes any other way: from a selection (including with\n`closePanelOnSelect`) or an option action, a click on the trigger, Tab, or the multiselect\nbecoming disabled. Safari doesn't focus a clicked button, so there a click on the trigger while\nthe panel is open fires this event, and the panel opens again.\nUse it to restore parent UI state or run cleanup when the user cancels."
2481
+ },
2482
+ "complexType": {
2483
+ "original": "void",
2484
+ "resolved": "void",
2485
+ "references": {}
2486
+ }
2487
+ }, {
2488
+ "method": "pdsMultiselectOptionAction",
2489
+ "name": "pdsMultiselectOptionAction",
2490
+ "bubbles": true,
2491
+ "cancelable": true,
2492
+ "composed": true,
2493
+ "docs": {
2494
+ "tags": [],
2495
+ "text": "Emitted when an option's action runs, from a click on its icon or Right Arrow on the highlighted option.\nThe panel closes and focus returns to the trigger first, so a modal opened from the handler restores focus to the trigger."
2496
+ },
2497
+ "complexType": {
2498
+ "original": "MultiselectOptionActionEventDetail",
2499
+ "resolved": "MultiselectOptionActionEventDetail",
2500
+ "references": {
2501
+ "MultiselectOptionActionEventDetail": {
2502
+ "location": "import",
2503
+ "path": "./multiselect-interface",
2504
+ "id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectOptionActionEventDetail",
2505
+ "referenceLocation": "MultiselectOptionActionEventDetail"
2506
+ }
2507
+ }
2508
+ }
2509
+ }];
2510
+ }
2511
+ static get methods() {
2512
+ return {
2513
+ "setFocus": {
2514
+ "complexType": {
2515
+ "signature": "() => Promise<void>",
2516
+ "parameters": [],
2517
+ "references": {
2518
+ "Promise": {
2519
+ "location": "global",
2520
+ "id": "global::Promise"
2521
+ }
2522
+ },
2523
+ "return": "Promise<void>"
2524
+ },
2525
+ "docs": {
2526
+ "text": "Sets focus on the trigger button.",
2527
+ "tags": []
2528
+ }
2529
+ },
2530
+ "clear": {
2531
+ "complexType": {
2532
+ "signature": "() => Promise<void>",
2533
+ "parameters": [],
2534
+ "references": {
2535
+ "Promise": {
2536
+ "location": "global",
2537
+ "id": "global::Promise"
2538
+ }
2539
+ },
2540
+ "return": "Promise<void>"
2541
+ },
2542
+ "docs": {
2543
+ "text": "Clears all selected values and resets the component. Works while disabled too, as setting a\nnative control's value from script does.",
2544
+ "tags": []
2545
+ }
2546
+ },
2547
+ "refreshOptions": {
2548
+ "complexType": {
2549
+ "signature": "() => Promise<void>",
2550
+ "parameters": [],
2551
+ "references": {
2552
+ "Promise": {
2553
+ "location": "global",
2554
+ "id": "global::Promise"
2555
+ }
2556
+ },
2557
+ "return": "Promise<void>"
2558
+ },
2559
+ "docs": {
2560
+ "text": "Refetches the first page of options from `asyncUrl` for the current search, such as after an option is renamed\nor recolored elsewhere. Selected items in that page pick up the new text and dot color without emitting a change;\nother selected items keep the text and dot color they were last loaded with. Does nothing without `asyncUrl`.",
2561
+ "tags": []
2562
+ }
2563
+ }
2564
+ };
2565
+ }
2566
+ static get elementRef() { return "el"; }
2567
+ static get watchers() {
2568
+ return [{
2569
+ "propName": "debounce",
2570
+ "methodName": "setupDebounce"
2571
+ }, {
2572
+ "propName": "value",
2573
+ "methodName": "valueChanged"
2574
+ }, {
2575
+ "propName": "options",
2576
+ "methodName": "optionsChanged"
2577
+ }, {
2578
+ "propName": "internalOptions",
2579
+ "methodName": "internalOptionsChanged"
2580
+ }, {
2581
+ "propName": "isOpen",
2582
+ "methodName": "isOpenChanged"
2583
+ }, {
2584
+ "propName": "disabled",
2585
+ "methodName": "disabledChanged"
2586
+ }];
2587
+ }
2588
+ static get listeners() {
2589
+ return [{
2590
+ "name": "keydown",
2591
+ "method": "handleWindowKeyDown",
2592
+ "target": "document",
2593
+ "capture": true,
2594
+ "passive": false
2595
+ }];
2596
+ }
2597
+ }