@pine-ds/core 4.10.0 → 4.12.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 (511) hide show
  1. package/components/aria-references.js +1 -0
  2. package/components/attributes.js +1 -1
  3. package/components/index2.js +1 -1
  4. package/components/pds-alert.js +1 -1
  5. package/components/pds-avatar.js +1 -1
  6. package/components/pds-box2.js +1 -1
  7. package/components/pds-button2.js +1 -1
  8. package/components/pds-checkbox2.js +1 -1
  9. package/components/pds-chip2.js +1 -1
  10. package/components/pds-combobox.js +2 -2
  11. package/components/pds-copytext.js +1 -1
  12. package/components/pds-datepicker.js +1 -1
  13. package/components/pds-drawer-content.js +1 -1
  14. package/components/pds-drawer-footer.js +1 -1
  15. package/components/pds-drawer-header.js +1 -1
  16. package/components/pds-drawer.js +1 -1
  17. package/components/pds-dropdown-menu-item.js +1 -1
  18. package/components/pds-dropdown-menu-separator.js +1 -1
  19. package/components/pds-dropdown-menu.js +1 -1
  20. package/components/pds-filter.js +1 -1
  21. package/components/pds-image.js +1 -1
  22. package/components/pds-input2.js +1 -1
  23. package/components/pds-link2.js +1 -1
  24. package/components/pds-loader2.js +1 -1
  25. package/components/pds-modal-footer.js +1 -1
  26. package/components/pds-modal-header.js +1 -1
  27. package/components/pds-modal2.js +1 -1
  28. package/components/pds-multiselect.js +1 -1
  29. package/components/pds-popover.js +1 -1
  30. package/components/pds-progress.js +1 -1
  31. package/components/pds-radio-group.js +1 -1
  32. package/components/pds-radio.js +1 -1
  33. package/components/pds-select.js +1 -1
  34. package/components/pds-sortable-item.js +1 -1
  35. package/components/pds-sortable.js +2 -2
  36. package/components/pds-switch.js +1 -1
  37. package/components/pds-table-body.js +1 -1
  38. package/components/pds-table-cell2.js +1 -1
  39. package/components/pds-table-head-cell2.js +1 -1
  40. package/components/pds-table-head.js +1 -1
  41. package/components/pds-table-row.js +1 -1
  42. package/components/pds-table.js +1 -1
  43. package/components/pds-tabs.js +1 -1
  44. package/components/pds-text2.js +1 -1
  45. package/components/pds-textarea.js +1 -1
  46. package/components/pds-toast.js +1 -1
  47. package/components/pds-tooltip.js +1 -1
  48. package/components/sortable-label.js +1 -0
  49. package/components/truncation-tooltip.js +1 -1
  50. package/dist/cjs/aria-references-CUmqibnO.js +54 -0
  51. package/dist/cjs/{attributes-CW49XqaL.js → attributes-Cgbkw6gO.js} +3 -0
  52. package/dist/cjs/loader.cjs.js +1 -1
  53. package/dist/cjs/pds-alert.cjs.entry.js +2 -2
  54. package/dist/cjs/pds-avatar.cjs.entry.js +3 -2
  55. package/dist/cjs/pds-box.cjs.entry.js +4 -3
  56. package/dist/cjs/pds-button.cjs.entry.js +25 -45
  57. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -4
  58. package/dist/cjs/pds-chip.cjs.entry.js +3 -3
  59. package/dist/cjs/pds-combobox.cjs.entry.js +246 -106
  60. package/dist/cjs/pds-copytext.cjs.entry.js +3 -3
  61. package/dist/cjs/pds-datepicker.cjs.entry.js +295 -82
  62. package/dist/cjs/pds-drawer-content.cjs.entry.js +1 -1
  63. package/dist/cjs/pds-drawer-footer.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-drawer-header.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-drawer.cjs.entry.js +5 -7
  66. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +85 -49
  67. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
  68. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +83 -10
  69. package/dist/cjs/pds-filter.cjs.entry.js +24 -2
  70. package/dist/cjs/pds-image.cjs.entry.js +148 -6
  71. package/dist/cjs/pds-input.cjs.entry.js +4 -4
  72. package/dist/cjs/pds-link.cjs.entry.js +4 -5
  73. package/dist/cjs/pds-loader.cjs.entry.js +4 -3
  74. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  75. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  76. package/dist/cjs/pds-modal.cjs.entry.js +9 -12
  77. package/dist/cjs/pds-multiselect.cjs.entry.js +64 -18
  78. package/dist/cjs/pds-popover.cjs.entry.js +8 -6
  79. package/dist/cjs/pds-progress.cjs.entry.js +3 -3
  80. package/dist/cjs/pds-radio-group.cjs.entry.js +4 -4
  81. package/dist/cjs/pds-radio.cjs.entry.js +6 -6
  82. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  83. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  84. package/dist/cjs/pds-sortable-item.cjs.entry.js +28 -5
  85. package/dist/cjs/pds-sortable.cjs.entry.js +356 -4
  86. package/dist/cjs/pds-switch.cjs.entry.js +92 -15
  87. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  88. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  89. package/dist/cjs/pds-table-cell.cjs.entry.js +24 -5
  90. package/dist/cjs/pds-table-head-cell.cjs.entry.js +59 -11
  91. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  92. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  93. package/dist/cjs/pds-table.cjs.entry.js +260 -5
  94. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  95. package/dist/cjs/pds-tabs.cjs.entry.js +3 -3
  96. package/dist/cjs/pds-text.cjs.entry.js +5 -3
  97. package/dist/cjs/pds-textarea.cjs.entry.js +8 -7
  98. package/dist/cjs/pds-toast.cjs.entry.js +8 -4
  99. package/dist/cjs/pds-tooltip.cjs.entry.js +1 -1
  100. package/dist/cjs/pine-core.cjs.js +1 -1
  101. package/dist/cjs/sortable-label-DOcJrHvA.js +37 -0
  102. package/dist/cjs/{truncation-tooltip-Bikp7n9I.js → truncation-tooltip-CM5HgRHh.js} +69 -0
  103. package/dist/collection/components/pds-alert/pds-alert.css +0 -3
  104. package/dist/collection/components/pds-alert/pds-alert.js +3 -2
  105. package/dist/collection/components/pds-avatar/pds-avatar.js +7 -6
  106. package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +1 -1
  107. package/dist/collection/components/pds-box/pds-box.css +1273 -1189
  108. package/dist/collection/components/pds-box/pds-box.js +180 -156
  109. package/dist/collection/components/pds-box/stories/pds-box.stories.js +79 -37
  110. package/dist/collection/components/pds-button/pds-button.js +26 -4
  111. package/dist/collection/components/pds-button/stories/pds-button.stories.js +25 -11
  112. package/dist/collection/components/pds-checkbox/pds-checkbox.js +10 -10
  113. package/dist/collection/components/pds-chip/pds-chip.js +3 -3
  114. package/dist/collection/components/pds-combobox/pds-combobox.css +162 -53
  115. package/dist/collection/components/pds-combobox/pds-combobox.js +261 -121
  116. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +35 -4
  117. package/dist/collection/components/pds-copytext/pds-copytext.js +2 -2
  118. package/dist/collection/components/pds-datepicker/date-utils.js +42 -0
  119. package/dist/collection/components/pds-datepicker/pds-datepicker.js +164 -65
  120. package/dist/collection/components/pds-datepicker/presets.js +42 -7
  121. package/dist/collection/components/pds-datepicker/stories/pds-datepicker.stories.js +11 -0
  122. package/dist/collection/components/pds-datepicker/value.js +76 -18
  123. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +2 -5
  124. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +2 -1
  125. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +2 -1
  126. package/dist/collection/components/pds-drawer/pds-drawer.js +8 -10
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +17 -8
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +95 -62
  129. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +3 -3
  130. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +2 -0
  131. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +84 -9
  132. package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +24 -1
  133. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +2 -1
  134. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +24 -7
  135. package/dist/collection/components/pds-image/image-interface.js +1 -0
  136. package/dist/collection/components/pds-image/pds-image.css +11 -0
  137. package/dist/collection/components/pds-image/pds-image.js +249 -8
  138. package/dist/collection/components/pds-image/stories/pds-image.stories.js +117 -1
  139. package/dist/collection/components/pds-input/pds-input.js +14 -9
  140. package/dist/collection/components/pds-link/pds-link.js +10 -14
  141. package/dist/collection/components/pds-link/stories/pds-link.stories.js +6 -2
  142. package/dist/collection/components/pds-loader/pds-loader.js +5 -4
  143. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +2 -1
  144. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +2 -1
  145. package/dist/collection/components/pds-modal/pds-modal.js +11 -13
  146. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +7 -7
  147. package/dist/collection/components/pds-multiselect/pds-multiselect.css +2 -2
  148. package/dist/collection/components/pds-multiselect/pds-multiselect.js +63 -18
  149. package/dist/collection/components/pds-popover/pds-popover.css +1 -1
  150. package/dist/collection/components/pds-popover/pds-popover.js +9 -7
  151. package/dist/collection/components/pds-progress/pds-progress.js +4 -4
  152. package/dist/collection/components/pds-radio/pds-radio.css +5 -1
  153. package/dist/collection/components/pds-radio/pds-radio.js +9 -9
  154. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +9 -9
  155. package/dist/collection/components/pds-radio-group/pds-radio-group.js +7 -7
  156. package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +3 -3
  157. package/dist/collection/components/pds-row/stories/pds-row.stories.js +15 -14
  158. package/dist/collection/components/pds-select/pds-select.js +7 -4
  159. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.css +38 -0
  160. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +47 -5
  161. package/dist/collection/components/pds-sortable/pds-sortable.js +481 -5
  162. package/dist/collection/components/pds-sortable/sortable-label.js +33 -0
  163. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +27 -0
  164. package/dist/collection/components/pds-switch/pds-switch.js +114 -17
  165. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +79 -0
  166. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +4 -1
  167. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +47 -4
  168. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +6 -2
  169. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +11 -0
  170. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +98 -10
  171. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +5 -1
  172. package/dist/collection/components/pds-table/pds-table.css +8 -0
  173. package/dist/collection/components/pds-table/pds-table.js +295 -7
  174. package/dist/collection/components/pds-table/stories/pds-table.stories.js +131 -6
  175. package/dist/collection/components/pds-tabs/pds-tabs.js +3 -3
  176. package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +1 -1
  177. package/dist/collection/components/pds-text/pds-text.js +5 -3
  178. package/dist/collection/components/pds-textarea/pds-textarea.js +16 -14
  179. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +2 -13
  180. package/dist/collection/components/pds-toast/pds-toast.css +4 -3
  181. package/dist/collection/components/pds-toast/pds-toast.js +9 -5
  182. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +2 -2
  183. package/dist/collection/components/pds-tooltip/pds-tooltip.css +2 -1
  184. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +17 -17
  185. package/dist/collection/utils/aria-references.js +9 -3
  186. package/dist/collection/utils/truncation-tooltip.js +67 -0
  187. package/dist/docs.json +1150 -371
  188. package/dist/esm/aria-references-CNn1lObg.js +50 -0
  189. package/dist/esm/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +3 -0
  190. package/dist/esm/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  191. package/dist/esm/loader.js +1 -1
  192. package/dist/esm/pds-accordion.entry.js +1 -1
  193. package/dist/esm/pds-alert.entry.js +2 -2
  194. package/dist/esm/pds-avatar.entry.js +4 -3
  195. package/dist/esm/pds-box.entry.js +4 -3
  196. package/dist/esm/pds-button.entry.js +24 -44
  197. package/dist/esm/pds-checkbox.entry.js +5 -5
  198. package/dist/esm/pds-chip.entry.js +4 -4
  199. package/dist/esm/pds-combobox.entry.js +246 -106
  200. package/dist/esm/pds-copytext.entry.js +4 -4
  201. package/dist/esm/pds-datepicker.entry.js +296 -83
  202. package/dist/esm/pds-drawer-content.entry.js +1 -1
  203. package/dist/esm/pds-drawer-footer.entry.js +1 -1
  204. package/dist/esm/pds-drawer-header.entry.js +1 -1
  205. package/dist/esm/pds-drawer.entry.js +5 -7
  206. package/dist/esm/pds-dropdown-menu-item.entry.js +85 -49
  207. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  208. package/dist/esm/pds-dropdown-menu.entry.js +84 -11
  209. package/dist/esm/pds-filter.entry.js +25 -3
  210. package/dist/esm/pds-image.entry.js +149 -7
  211. package/dist/esm/pds-input.entry.js +5 -5
  212. package/dist/esm/pds-link.entry.js +5 -6
  213. package/dist/esm/pds-loader.entry.js +4 -3
  214. package/dist/esm/pds-modal-footer.entry.js +1 -1
  215. package/dist/esm/pds-modal-header.entry.js +1 -1
  216. package/dist/esm/pds-modal.entry.js +9 -12
  217. package/dist/esm/pds-multiselect.entry.js +65 -19
  218. package/dist/esm/pds-popover.entry.js +8 -6
  219. package/dist/esm/pds-progress.entry.js +3 -3
  220. package/dist/esm/pds-radio-group.entry.js +5 -5
  221. package/dist/esm/pds-radio.entry.js +7 -7
  222. package/dist/esm/pds-row.entry.js +1 -1
  223. package/dist/esm/pds-select.entry.js +3 -3
  224. package/dist/esm/pds-sortable-item.entry.js +29 -6
  225. package/dist/esm/pds-sortable.entry.js +357 -5
  226. package/dist/esm/pds-switch.entry.js +94 -17
  227. package/dist/esm/pds-tab.entry.js +1 -1
  228. package/dist/esm/pds-table-body.entry.js +1 -1
  229. package/dist/esm/pds-table-cell.entry.js +24 -5
  230. package/dist/esm/pds-table-head-cell.entry.js +60 -12
  231. package/dist/esm/pds-table-head.entry.js +1 -1
  232. package/dist/esm/pds-table-row.entry.js +1 -1
  233. package/dist/esm/pds-table.entry.js +261 -6
  234. package/dist/esm/pds-tabpanel.entry.js +1 -1
  235. package/dist/esm/pds-tabs.entry.js +3 -3
  236. package/dist/esm/pds-text.entry.js +5 -3
  237. package/dist/esm/pds-textarea.entry.js +9 -8
  238. package/dist/esm/pds-toast.entry.js +8 -4
  239. package/dist/esm/pds-tooltip.entry.js +1 -1
  240. package/dist/esm/pine-core.js +1 -1
  241. package/dist/esm/sortable-label-PItnzVVR.js +35 -0
  242. package/dist/esm/{truncation-tooltip-DBcPipr9.js → truncation-tooltip-CkIWm6Z-.js} +68 -1
  243. package/dist/esm-es5/aria-references-CNn1lObg.js +1 -0
  244. package/dist/esm-es5/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +1 -1
  245. package/dist/esm-es5/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  246. package/dist/esm-es5/loader.js +1 -1
  247. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  248. package/dist/esm-es5/pds-alert.entry.js +1 -1
  249. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  250. package/dist/esm-es5/pds-box.entry.js +1 -1
  251. package/dist/esm-es5/pds-button.entry.js +1 -1
  252. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  253. package/dist/esm-es5/pds-chip.entry.js +1 -1
  254. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  255. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  256. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  257. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  258. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  259. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  260. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  261. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  262. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  263. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  264. package/dist/esm-es5/pds-filter.entry.js +1 -1
  265. package/dist/esm-es5/pds-image.entry.js +1 -1
  266. package/dist/esm-es5/pds-input.entry.js +1 -1
  267. package/dist/esm-es5/pds-link.entry.js +1 -1
  268. package/dist/esm-es5/pds-loader.entry.js +1 -1
  269. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  270. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  271. package/dist/esm-es5/pds-modal.entry.js +1 -1
  272. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  273. package/dist/esm-es5/pds-popover.entry.js +1 -1
  274. package/dist/esm-es5/pds-progress.entry.js +1 -1
  275. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  276. package/dist/esm-es5/pds-radio.entry.js +1 -1
  277. package/dist/esm-es5/pds-row.entry.js +1 -1
  278. package/dist/esm-es5/pds-select.entry.js +1 -1
  279. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  280. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  281. package/dist/esm-es5/pds-switch.entry.js +1 -1
  282. package/dist/esm-es5/pds-tab.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  284. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  285. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  286. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  287. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  288. package/dist/esm-es5/pds-table.entry.js +1 -1
  289. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  290. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  291. package/dist/esm-es5/pds-text.entry.js +1 -1
  292. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  293. package/dist/esm-es5/pds-toast.entry.js +1 -1
  294. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  295. package/dist/esm-es5/pine-core.js +1 -1
  296. package/dist/esm-es5/sortable-label-PItnzVVR.js +1 -0
  297. package/dist/esm-es5/truncation-tooltip-CkIWm6Z-.js +1 -0
  298. package/dist/pine-core/{p-f834cb07.system.entry.js → p-00891b8d.system.entry.js} +1 -1
  299. package/dist/pine-core/{p-3f8bd3fb.system.entry.js → p-053ff8eb.system.entry.js} +1 -1
  300. package/dist/pine-core/p-08b9e3ad.entry.js +1 -0
  301. package/dist/pine-core/{p-4d98bc0c.system.entry.js → p-0a7570dd.system.entry.js} +1 -1
  302. package/dist/pine-core/{p-d018dc60.system.entry.js → p-0ac4262e.system.entry.js} +1 -1
  303. package/dist/pine-core/{p-89d38a82.system.entry.js → p-0e1b8bd1.system.entry.js} +1 -1
  304. package/dist/pine-core/{p-e1d1b5d8.entry.js → p-12fdc65f.entry.js} +1 -1
  305. package/dist/pine-core/{p-d48fe5a0.system.entry.js → p-16fceef6.system.entry.js} +1 -1
  306. package/dist/pine-core/p-1765a41b.system.entry.js +1 -0
  307. package/dist/pine-core/{p-a594c41f.entry.js → p-18524c25.entry.js} +1 -1
  308. package/dist/pine-core/p-1a013a5c.system.entry.js +1 -0
  309. package/dist/pine-core/{p-2b9622c1.system.entry.js → p-1ab52531.system.entry.js} +1 -1
  310. package/dist/pine-core/p-1c584a20.entry.js +1 -0
  311. package/dist/pine-core/p-1edef412.entry.js +1 -0
  312. package/dist/pine-core/{p-5946203c.entry.js → p-1f998e3e.entry.js} +1 -1
  313. package/dist/pine-core/{p-39e57657.entry.js → p-1fb1ca3d.entry.js} +1 -1
  314. package/dist/pine-core/p-2b6becc2.entry.js +1 -0
  315. package/dist/pine-core/p-2cc7c682.entry.js +1 -0
  316. package/dist/pine-core/{p-639acef8.system.entry.js → p-2ddcd845.system.entry.js} +1 -1
  317. package/dist/pine-core/{p-6a1aa8d3.entry.js → p-2f15e85f.entry.js} +1 -1
  318. package/dist/pine-core/{p-67f795d5.system.entry.js → p-33da254f.system.entry.js} +1 -1
  319. package/dist/pine-core/{p-c6a9e62c.system.entry.js → p-3fc9ef80.system.entry.js} +1 -1
  320. package/dist/pine-core/p-4125a4a6.system.entry.js +1 -0
  321. package/dist/pine-core/p-47df9e9f.system.entry.js +3 -0
  322. package/dist/pine-core/p-51680c9c.system.entry.js +1 -0
  323. package/dist/pine-core/p-55535481.system.entry.js +1 -0
  324. package/dist/pine-core/p-55a4659a.system.entry.js +1 -0
  325. package/dist/pine-core/{p-c5e1eb3c.system.entry.js → p-57af5c29.system.entry.js} +1 -1
  326. package/dist/pine-core/p-57edd301.system.entry.js +1 -0
  327. package/dist/pine-core/{p-bfa34194.entry.js → p-5d582798.entry.js} +1 -1
  328. package/dist/pine-core/p-5db87fda.system.entry.js +1 -0
  329. package/dist/pine-core/{p-19cf1d91.system.entry.js → p-5eb0c78c.system.entry.js} +1 -1
  330. package/dist/pine-core/{p-42f70f93.system.entry.js → p-6017afb5.system.entry.js} +1 -1
  331. package/dist/pine-core/{p-63f85859.system.entry.js → p-60e65fe0.system.entry.js} +1 -1
  332. package/dist/pine-core/{p-973c3ac0.entry.js → p-627a94da.entry.js} +1 -1
  333. package/dist/pine-core/{p-a9d96e22.entry.js → p-68328afc.entry.js} +1 -1
  334. package/dist/pine-core/{p-bd7dc317.system.entry.js → p-72668673.system.entry.js} +1 -1
  335. package/dist/pine-core/p-72ff5ad2.system.entry.js +1 -0
  336. package/dist/pine-core/p-736ea7dd.entry.js +7 -0
  337. package/dist/pine-core/p-765f4207.entry.js +1 -0
  338. package/dist/pine-core/{p-2a18852f.entry.js → p-77530cf2.entry.js} +1 -1
  339. package/dist/pine-core/p-77a22399.entry.js +1 -0
  340. package/dist/pine-core/p-783127bf.entry.js +1 -0
  341. package/dist/pine-core/{p-d9719e37.entry.js → p-82f7eed1.entry.js} +1 -1
  342. package/dist/pine-core/{p-124a0a24.entry.js → p-84d4ae26.entry.js} +1 -1
  343. package/dist/pine-core/p-8deeda07.entry.js +1 -0
  344. package/dist/pine-core/{p-849ec281.system.entry.js → p-8e17a6d8.system.entry.js} +1 -1
  345. package/dist/pine-core/p-8e7e7bba.entry.js +1 -0
  346. package/dist/pine-core/{p-e82f758f.system.entry.js → p-907c69e9.system.entry.js} +1 -1
  347. package/dist/pine-core/{p-1415c988.system.entry.js → p-90f83a5b.system.entry.js} +1 -1
  348. package/dist/pine-core/p-97145eee.system.entry.js +1 -0
  349. package/dist/pine-core/{p-a09c9c5e.system.entry.js → p-9d983e09.system.entry.js} +1 -1
  350. package/dist/pine-core/{p-1e3ef425.entry.js → p-9e005996.entry.js} +1 -1
  351. package/dist/pine-core/{p-DvN3tyZp.js → p-B0DXTeeV.js} +1 -1
  352. package/dist/pine-core/{p-CNXspDYs.system.js → p-BlJQebvG.system.js} +1 -1
  353. package/dist/pine-core/p-C35-349-.system.js +1 -0
  354. package/dist/pine-core/{p-vFsJv75D.system.js → p-CIe1DGXa.system.js} +1 -1
  355. package/dist/pine-core/p-CNn1lObg.js +1 -0
  356. package/dist/pine-core/p-CQJ44c6o.system.js +1 -0
  357. package/dist/pine-core/p-Dv9QBmIF.js +1 -0
  358. package/dist/pine-core/p-PItnzVVR.js +1 -0
  359. package/dist/pine-core/p-VPGVqK3P.system.js +1 -0
  360. package/dist/pine-core/p-XK45dzWR.system.js +1 -1
  361. package/dist/pine-core/p-a149af29.entry.js +1 -0
  362. package/dist/pine-core/p-a20d9eca.system.entry.js +1 -0
  363. package/dist/pine-core/{p-f6f4fd42.entry.js → p-a5782d99.entry.js} +1 -1
  364. package/dist/pine-core/p-a5e9c583.entry.js +1 -0
  365. package/dist/pine-core/{p-4d47023c.system.entry.js → p-a9eaf160.system.entry.js} +1 -1
  366. package/dist/pine-core/{p-143b33a6.entry.js → p-b00b07e3.entry.js} +1 -1
  367. package/dist/pine-core/{p-c7a53c4f.entry.js → p-b7b29392.entry.js} +1 -1
  368. package/dist/pine-core/p-b96bdff6.entry.js +1 -0
  369. package/dist/pine-core/{p-f71d71ca.entry.js → p-bbd9ab75.entry.js} +1 -1
  370. package/dist/pine-core/p-bdab6c9f.entry.js +1 -0
  371. package/dist/pine-core/p-biShcgLI.js +1 -0
  372. package/dist/pine-core/{p-548bce53.system.entry.js → p-c12b5cd7.system.entry.js} +1 -1
  373. package/dist/pine-core/p-c1dc7692.entry.js +1 -0
  374. package/dist/pine-core/p-c76d8b9e.system.entry.js +1 -0
  375. package/dist/pine-core/{p-590df41a.entry.js → p-c89ea2d3.entry.js} +1 -1
  376. package/dist/pine-core/{p-d920d759.system.entry.js → p-c9630934.system.entry.js} +1 -1
  377. package/dist/pine-core/{p-6f4ab1ea.system.entry.js → p-cb9227f6.system.entry.js} +1 -1
  378. package/dist/pine-core/p-ceef0eb1.entry.js +1 -0
  379. package/dist/pine-core/p-d1283e8d.entry.js +1 -0
  380. package/dist/pine-core/p-d676926d.system.entry.js +1 -0
  381. package/dist/pine-core/{p-61cfdbb2.entry.js → p-d7d7a4e1.entry.js} +1 -1
  382. package/dist/pine-core/p-d85d50cb.entry.js +1 -0
  383. package/dist/pine-core/p-daa802f1.entry.js +2 -0
  384. package/dist/pine-core/p-ddf4b9b5.system.entry.js +1 -0
  385. package/dist/pine-core/p-de3b319e.system.entry.js +8 -0
  386. package/dist/pine-core/{p-cb9baf78.system.entry.js → p-e00777da.system.entry.js} +1 -1
  387. package/dist/pine-core/p-e2541eeb.entry.js +1 -0
  388. package/dist/pine-core/{p-01f1cdaf.system.entry.js → p-e2a1a49a.system.entry.js} +1 -1
  389. package/dist/pine-core/p-e4ebea88.system.entry.js +1 -0
  390. package/dist/pine-core/{p-947582e1.entry.js → p-e554bd64.entry.js} +1 -1
  391. package/dist/pine-core/{p-dd7ded84.entry.js → p-e6427c87.entry.js} +1 -1
  392. package/dist/pine-core/{p-50ddadbf.entry.js → p-e72e8b8f.entry.js} +1 -1
  393. package/dist/pine-core/p-e92d0f0f.system.entry.js +1 -0
  394. package/dist/pine-core/{p-9b32727a.system.entry.js → p-eab165b9.system.entry.js} +1 -1
  395. package/dist/pine-core/p-eabc4bd8.entry.js +1 -0
  396. package/dist/pine-core/p-ef9f84f2.system.entry.js +1 -0
  397. package/dist/pine-core/{p-c9ae7964.entry.js → p-f026af73.entry.js} +1 -1
  398. package/dist/pine-core/{p-99530cb5.entry.js → p-f0509c8e.entry.js} +1 -1
  399. package/dist/pine-core/p-f1252e72.system.entry.js +1 -0
  400. package/dist/pine-core/p-f3496fd1.entry.js +1 -0
  401. package/dist/pine-core/{p-eecd9ad8.system.entry.js → p-f90f4be7.system.entry.js} +1 -1
  402. package/dist/pine-core/p-f9bdaadd.system.entry.js +1 -0
  403. package/dist/pine-core/{p-128c04e7.entry.js → p-fda791df.entry.js} +1 -1
  404. package/dist/pine-core/p-fea4296d.entry.js +1 -0
  405. package/dist/pine-core/pine-core.esm.js +1 -1
  406. package/dist/types/components/pds-alert/pds-alert.d.ts +2 -1
  407. package/dist/types/components/pds-avatar/pds-avatar.d.ts +5 -4
  408. package/dist/types/components/pds-box/pds-box.d.ts +68 -57
  409. package/dist/types/components/pds-button/pds-button.d.ts +14 -3
  410. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +15 -8
  411. package/dist/types/components/pds-chip/pds-chip.d.ts +2 -2
  412. package/dist/types/components/pds-combobox/pds-combobox.d.ts +48 -11
  413. package/dist/types/components/pds-copytext/pds-copytext.d.ts +3 -1
  414. package/dist/types/components/pds-datepicker/date-utils.d.ts +19 -0
  415. package/dist/types/components/pds-datepicker/datepicker-interface.d.ts +22 -5
  416. package/dist/types/components/pds-datepicker/pds-datepicker.d.ts +33 -7
  417. package/dist/types/components/pds-datepicker/presets.d.ts +3 -2
  418. package/dist/types/components/pds-datepicker/value.d.ts +14 -2
  419. package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +1 -4
  420. package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +1 -0
  421. package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +1 -0
  422. package/dist/types/components/pds-drawer/pds-drawer.d.ts +4 -6
  423. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +20 -16
  424. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +1 -1
  425. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +7 -0
  426. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +6 -5
  427. package/dist/types/components/pds-image/image-interface.d.ts +12 -0
  428. package/dist/types/components/pds-image/pds-image.d.ts +69 -9
  429. package/dist/types/components/pds-input/pds-input.d.ts +17 -7
  430. package/dist/types/components/pds-link/pds-link.d.ts +8 -8
  431. package/dist/types/components/pds-loader/pds-loader.d.ts +3 -2
  432. package/dist/types/components/pds-modal/pds-modal-footer/pds-modal-footer.d.ts +1 -0
  433. package/dist/types/components/pds-modal/pds-modal-header/pds-modal-header.d.ts +1 -0
  434. package/dist/types/components/pds-modal/pds-modal.d.ts +7 -9
  435. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +14 -8
  436. package/dist/types/components/pds-popover/pds-popover.d.ts +2 -2
  437. package/dist/types/components/pds-progress/pds-progress.d.ts +2 -2
  438. package/dist/types/components/pds-radio/pds-radio.d.ts +6 -5
  439. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +5 -4
  440. package/dist/types/components/pds-select/pds-select.d.ts +9 -3
  441. package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +8 -2
  442. package/dist/types/components/pds-sortable/pds-sortable.d.ts +82 -1
  443. package/dist/types/components/pds-sortable/sortable-label.d.ts +7 -0
  444. package/dist/types/components/pds-switch/pds-switch.d.ts +17 -2
  445. package/dist/types/components/pds-table/pds-table-body/pds-table-body.d.ts +3 -0
  446. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +10 -0
  447. package/dist/types/components/pds-table/pds-table-head/pds-table-head.d.ts +5 -1
  448. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +21 -0
  449. package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +4 -0
  450. package/dist/types/components/pds-table/pds-table.d.ts +76 -2
  451. package/dist/types/components/pds-tabs/pds-tabs.d.ts +1 -1
  452. package/dist/types/components/pds-textarea/pds-textarea.d.ts +15 -13
  453. package/dist/types/components/pds-toast/pds-toast.d.ts +5 -1
  454. package/dist/types/components.d.ts +505 -335
  455. package/dist/types/utils/aria-references.d.ts +4 -0
  456. package/dist/types/utils/truncation-tooltip.d.ts +39 -0
  457. package/dist/types/utils/types.d.ts +3 -0
  458. package/dist/vscode.html-data.json +350 -137
  459. package/hydrate/index.js +2054 -427
  460. package/hydrate/index.mjs +2054 -427
  461. package/package.json +3 -3
  462. package/readme.md +26 -55
  463. package/dist/esm-es5/truncation-tooltip-DBcPipr9.js +0 -1
  464. package/dist/pine-core/p-07323107.entry.js +0 -1
  465. package/dist/pine-core/p-08b8e941.entry.js +0 -1
  466. package/dist/pine-core/p-0b7b3fc2.system.entry.js +0 -3
  467. package/dist/pine-core/p-0d5f0ab5.system.entry.js +0 -1
  468. package/dist/pine-core/p-14dedf01.system.entry.js +0 -1
  469. package/dist/pine-core/p-1ca8d183.entry.js +0 -1
  470. package/dist/pine-core/p-1f62bb71.entry.js +0 -7
  471. package/dist/pine-core/p-2dd30d12.entry.js +0 -1
  472. package/dist/pine-core/p-35s7h-dk.js +0 -1
  473. package/dist/pine-core/p-3610cb3b.entry.js +0 -1
  474. package/dist/pine-core/p-39276663.entry.js +0 -1
  475. package/dist/pine-core/p-3a1dc752.system.entry.js +0 -1
  476. package/dist/pine-core/p-42d43c3f.system.entry.js +0 -1
  477. package/dist/pine-core/p-4a90b9c8.system.entry.js +0 -1
  478. package/dist/pine-core/p-4cfe922b.entry.js +0 -1
  479. package/dist/pine-core/p-5f181694.system.entry.js +0 -1
  480. package/dist/pine-core/p-60a30975.system.entry.js +0 -1
  481. package/dist/pine-core/p-62aa6a78.system.entry.js +0 -1
  482. package/dist/pine-core/p-64bcb378.entry.js +0 -1
  483. package/dist/pine-core/p-724baba3.system.entry.js +0 -1
  484. package/dist/pine-core/p-72659a0e.system.entry.js +0 -1
  485. package/dist/pine-core/p-8436cbfb.entry.js +0 -1
  486. package/dist/pine-core/p-8ade17ce.entry.js +0 -1
  487. package/dist/pine-core/p-8e7f75e6.entry.js +0 -1
  488. package/dist/pine-core/p-8fb520df.entry.js +0 -1
  489. package/dist/pine-core/p-92115e88.entry.js +0 -1
  490. package/dist/pine-core/p-94c9b7d1.system.entry.js +0 -1
  491. package/dist/pine-core/p-97356d4b.entry.js +0 -1
  492. package/dist/pine-core/p-97653e60.entry.js +0 -1
  493. package/dist/pine-core/p-97b73359.entry.js +0 -1
  494. package/dist/pine-core/p-BZVUD2on.js +0 -1
  495. package/dist/pine-core/p-Dj-z_ugg.system.js +0 -1
  496. package/dist/pine-core/p-ad5208a4.system.entry.js +0 -1
  497. package/dist/pine-core/p-afc2f165.entry.js +0 -1
  498. package/dist/pine-core/p-bcc378ba.system.entry.js +0 -8
  499. package/dist/pine-core/p-c8a0b562.system.entry.js +0 -1
  500. package/dist/pine-core/p-d47b2a6a.system.entry.js +0 -1
  501. package/dist/pine-core/p-d6f338e0.entry.js +0 -1
  502. package/dist/pine-core/p-da8b864a.entry.js +0 -2
  503. package/dist/pine-core/p-db7fb5a3.entry.js +0 -1
  504. package/dist/pine-core/p-de455073.system.entry.js +0 -1
  505. package/dist/pine-core/p-e3de6a1d.entry.js +0 -1
  506. package/dist/pine-core/p-e84fa9ed.entry.js +0 -1
  507. package/dist/pine-core/p-eb4f0daa.system.entry.js +0 -1
  508. package/dist/pine-core/p-eb56af4a.system.entry.js +0 -1
  509. package/dist/pine-core/p-ef0eba9b.system.entry.js +0 -1
  510. package/dist/pine-core/p-f11cce27.system.entry.js +0 -1
  511. package/dist/pine-core/p-f354dbac.entry.js +0 -1
@@ -1,11 +1,11 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { setColor } from "../../utils/utils";
3
3
  import { launch } from "@pine-ds/icons/icons";
4
- // Used when `externalLabel` is unset; an empty string hides the icon instead.
4
+ // Used when `externalLabel` is unset; an empty string makes the icon decorative instead.
5
5
  const DEFAULT_EXTERNAL_LABEL = '(opens in a new tab)';
6
6
  /**
7
7
  * @part link - Link element styles.
8
- * @slot (default) - Text content placed between the opening and closing tags. If no text is provided, the **href** will be used as a fallback.
8
+ * @slot (default) - Text content placed between the opening and closing tags. If the slot is empty (whitespace counts as content), the **href** will be used as a fallback.
9
9
  */
10
10
  export class PdsLink {
11
11
  constructor() {
@@ -17,9 +17,8 @@ export class PdsLink {
17
17
  */
18
18
  this.active = false;
19
19
  /**
20
- * Determines whether the link should open in a new tab.
20
+ * Shows the external-link (launch) icon. Opens in a new tab unless `target` says otherwise.
21
21
  * @defaultValue false
22
- * @deprecated Consider using the `target` prop for more control. This prop will be maintained for backward compatibility.
23
22
  */
24
23
  this.external = false;
25
24
  /**
@@ -65,8 +64,8 @@ export class PdsLink {
65
64
  // label is empty.
66
65
  const externalLabel = (_a = this.externalLabel) !== null && _a !== void 0 ? _a : DEFAULT_EXTERNAL_LABEL;
67
66
  const externalIconLabel = opensInNewTab && externalLabel !== '' ? externalLabel : undefined;
68
- return (h("a", { key: 'ae7928aa6dce42657545a1d17581818d3724746f', class: this.classNames(), download: this.download, href: this.href, id: this.componentId, part: "link", "aria-current": this.active ? 'page' : undefined, target: targetValue, rel: relValue, style: this.setLinkStyles(), "data-turbo": this.turbo || undefined, "data-turbo-frame": this.turboFrame || undefined, "data-turbo-action": this.turboAction || undefined, "data-turbo-method": this.turboMethod || undefined, "data-turbo-confirm": this.turboConfirm || undefined, "data-turbo-stream": this.turboStream || undefined, "data-turbo-prefetch": this.turboPrefetch || undefined, "data-turbo-preload": this.turboPreload || undefined }, h("slot", { key: 'e61374c58fddec869f2f5dda54634a0b1ba9f345' }, this.href), showExternalIcon &&
69
- h("pds-icon", { key: '161657146e5f3ce360480c573ea8f14c9012cb1f', icon: launch, size: this.fontSize, "aria-label": externalIconLabel, "aria-hidden": externalIconLabel === undefined ? 'true' : undefined })));
67
+ return (h("a", { key: '43d5871702d13430c5759b28887c146263e4ee0d', class: this.classNames(), download: this.download, href: this.href, id: this.componentId, part: "link", "aria-current": this.active ? 'page' : undefined, target: targetValue, rel: relValue, style: this.setLinkStyles(), "data-turbo": this.turbo || undefined, "data-turbo-frame": this.turboFrame || undefined, "data-turbo-action": this.turboAction || undefined, "data-turbo-method": this.turboMethod || undefined, "data-turbo-confirm": this.turboConfirm || undefined, "data-turbo-stream": this.turboStream || undefined, "data-turbo-prefetch": this.turboPrefetch || undefined, "data-turbo-preload": this.turboPreload || undefined }, h("slot", { key: '15552982e8f9ca7e8844f65e98f99df3101db8a5' }, this.href), showExternalIcon &&
68
+ h("pds-icon", { key: 'a4356792c73269a02397b543e1cc8b532ba3e690', icon: launch, size: this.fontSize, "aria-label": externalIconLabel, "aria-hidden": externalIconLabel === undefined ? 'true' : undefined })));
70
69
  }
71
70
  static get is() { return "pds-link"; }
72
71
  static get encapsulation() { return "shadow"; }
@@ -176,11 +175,8 @@ export class PdsLink {
176
175
  "tags": [{
177
176
  "name": "defaultValue",
178
177
  "text": "false"
179
- }, {
180
- "name": "deprecated",
181
- "text": "Consider using the `target` prop for more control. This prop will be maintained for backward compatibility."
182
178
  }],
183
- "text": "Determines whether the link should open in a new tab."
179
+ "text": "Shows the external-link (launch) icon. Opens in a new tab unless `target` says otherwise."
184
180
  },
185
181
  "getter": false,
186
182
  "setter": false,
@@ -203,7 +199,7 @@ export class PdsLink {
203
199
  "name": "defaultValue",
204
200
  "text": "'(opens in a new tab)'"
205
201
  }],
206
- "text": "Accessible label for the icon that `external` shows, appended to the\nlink's name. It isn't announced when `target` keeps the link in the same\ntab. Pass a translated string to localize it; defaults to English. Pass an\nempty string to make the icon decorative."
202
+ "text": "Accessible label for the icon that `external` shows, appended to the\nlink's name. It isn't announced when `target` is anything other than\n`_blank`. Pass a translated string to localize it; defaults to English. Pass an\nempty string to make the icon decorative."
207
203
  },
208
204
  "getter": false,
209
205
  "setter": false,
@@ -226,9 +222,9 @@ export class PdsLink {
226
222
  "text": "undefined"
227
223
  }, {
228
224
  "name": "example",
229
- "text": "<pds-link href=\"https://example.com\" target=\"_blank\">Opens in new tab</pds-link>"
225
+ "text": "<pds-link href=\"/dashboard\" target=\"_top\">Opens in the top-level frame</pds-link>"
230
226
  }],
231
- "text": "Specifies where to open the linked document."
227
+ "text": "Specifies where to open the linked document. Overrides the new-tab\ndefault of `external`; the icon still shows."
232
228
  },
233
229
  "getter": false,
234
230
  "setter": false,
@@ -293,7 +289,7 @@ export class PdsLink {
293
289
  "optional": false,
294
290
  "docs": {
295
291
  "tags": [],
296
- "text": "The hyperlink's destination URL. If no text is provided in the custom slot, the href will be used."
292
+ "text": "The hyperlink's destination URL. If the default slot is empty (whitespace counts as content), the href will be used as the link text."
297
293
  },
298
294
  "getter": false,
299
295
  "setter": false,
@@ -4,6 +4,10 @@ import { ifDefined } from 'lit/directives/if-defined.js';
4
4
  export default {
5
5
  args: { href: '#some-anchor' },
6
6
  argTypes: {
7
+ target: {
8
+ control: 'select',
9
+ options: [undefined, '_blank', '_self', '_parent', '_top'],
10
+ },
7
11
  variant: {
8
12
  control: 'radio',
9
13
  options: ['inline', 'plain'],
@@ -13,8 +17,8 @@ export default {
13
17
  title: 'components/Link'
14
18
  }
15
19
 
16
- const BaseTemplate = (args) => html`<pds-link color=${args.color} ?external=${args.external} external-label=${ifDefined(args.externalLabel)} font-size=${args.fontSize} href=${args.href} component-id=${args.componentId} variant=${args.variant}></pds-link>`;
17
- const BaseTemplateWithSlot = (args) => html` <pds-link color=${args.color} ?external=${args.external} external-label=${ifDefined(args.externalLabel)} font-size=${args.fontSize} href=${args.href} component-id=${args.componentId} variant=${args.variant}>${args.slot}</pds-link>`;
20
+ const BaseTemplate = (args) => html`<pds-link color=${args.color} ?external=${args.external} external-label=${ifDefined(args.externalLabel)} target=${ifDefined(args.target)} font-size=${args.fontSize} href=${args.href} component-id=${args.componentId} variant=${args.variant}></pds-link>`;
21
+ const BaseTemplateWithSlot = (args) => html` <pds-link color=${args.color} ?external=${args.external} external-label=${ifDefined(args.externalLabel)} target=${ifDefined(args.target)} font-size=${args.fontSize} href=${args.href} component-id=${args.componentId} variant=${args.variant}>${args.slot}</pds-link>`;
18
22
 
19
23
  export const Colors = BaseTemplate.bind();
20
24
  Colors.args = {
@@ -3,7 +3,7 @@ import { HostStylingKeeper } from "../../utils/attributes";
3
3
  import { restoreReflectedDefault } from "../../utils/reflected-attribute-default";
4
4
  /**
5
5
  * @part loader-svg - Exposes the spinner SVG element for color customization.
6
- * @slot label - Default slot for Loader label text.
6
+ * @slot label - Label text. Defaults to "Loading...". Text outside this slot isn't shown or read.
7
7
  */
8
8
  export class PdsLoader {
9
9
  constructor() {
@@ -17,7 +17,8 @@ export class PdsLoader {
17
17
  */
18
18
  this.showLabel = false;
19
19
  /**
20
- * Sets the size of the spinner loader. Value can be preset or custom.
20
+ * Sets the size of the spinner loader: `xs` (24px), `sm` (32px), `md` (48px), `lg` (64px), `xl` (80px),
21
+ * or a custom CSS length such as `128px`. The `typing` variant ignores it.
21
22
  */
22
23
  this.size = 'md';
23
24
  /**
@@ -66,7 +67,7 @@ export class PdsLoader {
66
67
  'aria-live': 'polite',
67
68
  };
68
69
  this.hostKeeper.record(hostClass, {}, hostAttributes);
69
- return (h(Host, Object.assign({ key: 'eaf8a64d5c2e37349ed2d2426a6c6bf1df68005f', class: hostClass }, hostAttributes), this.variant === 'spinner' && (h("div", { key: '216143117aabd29ca52c56cd7951a27f9742e466', class: "pds-loader--spinner" }, h("svg", { key: '9c9db37e883fb3a4ba5e0c7c173a5d7a76cdadda', style: this.getSvgStyle(), viewBox: "0 0 200 200", fill: "none", part: "loader-svg" }, h("defs", { key: '8f65f537290ea2dd96b66343324851d243fec3dd' }, h("linearGradient", { key: '8b1a53bcc9401b98dafa805cae8e417af7646bfd', id: "spinner-secondHalf" }, h("stop", { key: 'f06605f7180e9c07d5eb4c9dbadcdb87cee0dd70', offset: "0%", "stop-opacity": "0", "stop-color": "currentColor" }), h("stop", { key: '0bf492e4d5578bd0d98a2f7570a1dd21ca2ecf3d', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" })), h("linearGradient", { key: '6c7038c158d786866a408063b07b236bf17cefc1', id: "spinner-firstHalf" }, h("stop", { key: '916502c73bc4b78368bb210aed318537841917b9', offset: "0%", "stop-opacity": "1", "stop-color": "currentColor" }), h("stop", { key: '2d20708106bb3a685fbaf4bdcf099684a36359c0', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" }))), h("g", { key: '93165f80e7d5155b3dc8f2fc62e326bec7604c57', class: "pds-loader__spinner-path" }, h("path", { key: '4b1e39a899aadf9d4b4cbf954c783c1103c43c24', stroke: "url(#spinner-secondHalf)", d: "M 4 100 A 96 96 0 0 1 196 100" }), h("path", { key: '0aa1683dc97e2a01cc076a52a4883388c1d09c6f', stroke: "url(#spinner-firstHalf)", d: "M 196 100 A 96 96 0 0 1 4 100" }), h("path", { key: '9839fb9e0b473814d3b10eb27f7be87990b6c088', stroke: "currentColor", "stroke-linecap": "round", d: "M 4 100 A 96 96 0 0 1 4 98" }))))), this.variant === 'typing' && (h("div", { key: 'd83e4625ea2d41a545a98e08edb3033b83e7eb5b', class: "pds-loader--typing" }, h("span", { key: '2e793f3f5b17cb7709c8fc89e2054d7cd77fafd4' }), h("span", { key: 'c266ad3b8edf6c1cc392c544027f7cfd543b711c' }), h("span", { key: '061f9e3030cce603e50e8d86d3aa5036800c1324' }))), h("div", { key: '747c1c6c28136cfb9ba9dac0d4944bc6281af075', class: `pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}` }, h("slot", { key: '5eb5a5710deafa10bd269429edff0ac677546cf5', name: "label" }, "Loading..."))));
70
+ return (h(Host, Object.assign({ key: '25f67dfddaf7b5e5947e1b9e97a3a3341fc4a9ca', class: hostClass }, hostAttributes), this.variant === 'spinner' && (h("div", { key: 'bea9dd77e189750aac17522ae227ada7b14f15e2', class: "pds-loader--spinner" }, h("svg", { key: 'ab4fc80a77459c8f24e3327ed7f15070f34dd4a4', style: this.getSvgStyle(), viewBox: "0 0 200 200", fill: "none", part: "loader-svg" }, h("defs", { key: '997df5cefd2dd832f5ea9251b5fc80c2ce84a9c5' }, h("linearGradient", { key: '92084cf660d2fabd0e7375cbfaf2f5d87f2aa628', id: "spinner-secondHalf" }, h("stop", { key: 'ad8d852e05684a7611d833e0305ed4bbd5ca35d0', offset: "0%", "stop-opacity": "0", "stop-color": "currentColor" }), h("stop", { key: '5664d937062006658a4aafe9b7e35131c9d34b75', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" })), h("linearGradient", { key: 'f7dfa63b3ffa1904596bb0ac8f41d45d6614c660', id: "spinner-firstHalf" }, h("stop", { key: 'ec7a496b42d4782c0e48126408b403ca3bfddd21', offset: "0%", "stop-opacity": "1", "stop-color": "currentColor" }), h("stop", { key: '87b44ef8885072cb41629e0c58419be7aa832ebd', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" }))), h("g", { key: 'f6ead61041e2f6d06886f0d93b89da36c498ee2d', class: "pds-loader__spinner-path" }, h("path", { key: '8c0dd0255f75c7cba65cfe752e4626e9381de461', stroke: "url(#spinner-secondHalf)", d: "M 4 100 A 96 96 0 0 1 196 100" }), h("path", { key: 'adb47eb99461bd721da58706930496d8a33101fa', stroke: "url(#spinner-firstHalf)", d: "M 196 100 A 96 96 0 0 1 4 100" }), h("path", { key: '67ec5d33f29a617c074479fd976c7f4cfc0c8530', stroke: "currentColor", "stroke-linecap": "round", d: "M 4 100 A 96 96 0 0 1 4 98" }))))), this.variant === 'typing' && (h("div", { key: 'be149ae7df72a5aeda1c4f064e35c1ec201426f8', class: "pds-loader--typing" }, h("span", { key: '6f35aa1230b6ef6c4dada525a0406fcb484068c3' }), h("span", { key: 'fa523ebab73e1f4d225c4252514b1aed57503441' }), h("span", { key: 'bd1df232b4ea00971581956cc6208c816ae91430' }))), h("div", { key: 'aee3c4b21ed5b4efd7c47056af042c0c1d296ed9', class: `pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}` }, h("slot", { key: '0655b2f83082a960c859b978f858bc1238f30ac6', name: "label" }, "Loading..."))));
70
71
  }
71
72
  static get is() { return "pds-loader"; }
72
73
  static get encapsulation() { return "shadow"; }
@@ -134,7 +135,7 @@ export class PdsLoader {
134
135
  "optional": true,
135
136
  "docs": {
136
137
  "tags": [],
137
- "text": "Sets the size of the spinner loader. Value can be preset or custom."
138
+ "text": "Sets the size of the spinner loader: `xs` (24px), `sm` (32px), `md` (48px), `lg` (64px), `xl` (80px),\nor a custom CSS length such as `128px`. The `typing` variant ignores it."
138
139
  },
139
140
  "getter": false,
140
141
  "setter": false,
@@ -1,6 +1,7 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { unwrapReconnectedContent } from "../../../utils/reconnected-content";
3
3
  /**
4
+ * Holds the modal's actions. It adds no padding or layout, so wrap its content in a `pds-box` with `padding="md"`.
4
5
  * @lightDom renders-markup
5
6
  */
6
7
  export class PdsModalFooter {
@@ -9,7 +10,7 @@ export class PdsModalFooter {
9
10
  unwrapReconnectedContent(this.el.querySelector('.pds-modal__footer'), '.pds-modal__footer');
10
11
  }
11
12
  render() {
12
- return (h("footer", { key: 'c0d50408471355d80759112e63f58c8a34fb7906', class: "pds-modal__footer" }, h("slot", { key: '6566d446457be8b57e37bf1542a5863b0018d233' })));
13
+ return (h("footer", { key: '3ea8f3a2b955f75682f7ab212f4fc7b05a13cbba', class: "pds-modal__footer" }, h("slot", { key: 'e9e53c0d225e48ec1f271646907194421ab2bc68' })));
13
14
  }
14
15
  static get is() { return "pds-modal-footer"; }
15
16
  static get originalStyleUrls() {
@@ -1,6 +1,7 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { unwrapReconnectedContent } from "../../../utils/reconnected-content";
3
3
  /**
4
+ * Holds the modal's title and close control. It adds no padding or layout, so wrap its content in a `pds-box` with `padding="md"`.
4
5
  * @lightDom renders-markup
5
6
  */
6
7
  export class PdsModalHeader {
@@ -9,7 +10,7 @@ export class PdsModalHeader {
9
10
  unwrapReconnectedContent(this.el.querySelector('.pds-modal__header'), '.pds-modal__header');
10
11
  }
11
12
  render() {
12
- return (h("header", { key: 'eb295ff36fd23b7965296b6dfcfcf783a32079a0', class: "pds-modal__header" }, h("slot", { key: '9c97566ff79f8d9b233d814395d5a7e893751a06' })));
13
+ return (h("header", { key: '9778bdebb88711827eeb0268298e269b920999bd', class: "pds-modal__header" }, h("slot", { key: 'e806f49f030839540317cf524ec6058388606cc9' })));
13
14
  }
14
15
  static get is() { return "pds-modal-header"; }
15
16
  static get originalStyleUrls() {
@@ -52,6 +52,7 @@ function deepActiveElement() {
52
52
  }
53
53
  /**
54
54
  * @lightDom renders-markup
55
+ * @part modal - The panel inside the dialog that holds the modal's content. `pds-modal` has no shadow root, so `::part(modal)` doesn't match it; select it with `pds-modal [part="modal"]` instead.
55
56
  */
56
57
  export class PdsModal {
57
58
  constructor() {
@@ -90,15 +91,12 @@ export class PdsModal {
90
91
  */
91
92
  this.disableTopLayer = false;
92
93
  /**
93
- * Whether to skip moving focus into the modal when it opens — both our own
94
- * `setInitialFocus()` and the browser's native "dialog focusing steps",
95
- * which move focus into the dialog as soon as `show()`/`showModal()` is
96
- * called regardless of application code. Focus return on close is
97
- * unaffected either way. For a modal opened by something other than a
98
- * direct user click — a redirect, a deep link, a background event —
99
- * stealing focus on open can interrupt whatever the user was already
100
- * doing. Default `false` preserves today's behavior for every existing
101
- * consumer.
94
+ * Whether to skip moving focus into the modal when it opens. Set it for a
95
+ * modal that can open from a background event while the user is mid-task
96
+ * elsewhere on the page, where moving focus would interrupt them. Pair it
97
+ * with `disableTopLayer`: in the top layer the rest of the page is inert, so
98
+ * focus can't stay there. On close, focus moves back only if nothing outside
99
+ * the modal has taken it.
102
100
  * @default false
103
101
  */
104
102
  this.disableInitialFocus = false;
@@ -565,14 +563,14 @@ export class PdsModal {
565
563
  }
566
564
  render() {
567
565
  const [sizeClass = 'md', customSize] = this.resolveSize();
568
- return (h("dialog", { key: 'cd574868a46b69185e2058c60374dbec34677732', class: {
566
+ return (h("dialog", { key: '39f42306fff4fae51a9dffe86500a2c7e55cf8f5', class: {
569
567
  'pds-modal__backdrop': true,
570
568
  'open': this.open
571
- }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick, onCancel: this.handleCancel }, h("div", { key: '8c50fb4810b4bb07d62348fed44df30b14a52acd', class: {
569
+ }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick, onCancel: this.handleCancel }, h("div", { key: 'baff708cc933457027074dda27ce440e7a65a0da', class: {
572
570
  'pds-modal': true,
573
571
  [`pds-modal--${sizeClass}`]: true,
574
572
  'pds-modal--scrollable': this.scrollable
575
- }, style: customSize !== undefined ? { '--pds-modal-max-width': customSize } : undefined, part: "modal" }, h("slot", { key: '25a71c95dfeff4648a28edef21bf510b1743ed7c' }))));
573
+ }, style: customSize !== undefined ? { '--pds-modal-max-width': customSize } : undefined, part: "modal" }, h("slot", { key: 'd752edad801a28fcd5b93aa50f52528255a319b8' }))));
576
574
  }
577
575
  static get is() { return "pds-modal"; }
578
576
  static get originalStyleUrls() {
@@ -747,7 +745,7 @@ export class PdsModal {
747
745
  "name": "default",
748
746
  "text": "false"
749
747
  }],
750
- "text": "Whether to skip moving focus into the modal when it opens \u2014 both our own\n`setInitialFocus()` and the browser's native \"dialog focusing steps\",\nwhich move focus into the dialog as soon as `show()`/`showModal()` is\ncalled regardless of application code. Focus return on close is\nunaffected either way. For a modal opened by something other than a\ndirect user click \u2014 a redirect, a deep link, a background event \u2014\nstealing focus on open can interrupt whatever the user was already\ndoing. Default `false` preserves today's behavior for every existing\nconsumer."
748
+ "text": "Whether to skip moving focus into the modal when it opens. Set it for a\nmodal that can open from a background event while the user is mid-task\nelsewhere on the page, where moving focus would interrupt them. Pair it\nwith `disableTopLayer`: in the top layer the rest of the page is inert, so\nfocus can't stay there. On close, focus moves back only if nothing outside\nthe modal has taken it."
751
749
  },
752
750
  "getter": false,
753
751
  "setter": false,
@@ -32,7 +32,7 @@ const BaseTemplate = (args) => html`
32
32
  id="${args.componentId}"
33
33
  component-id="${args.componentId}"
34
34
  size="${args.size}"
35
- ?backdrop-dismiss=${args.backdropDismiss}
35
+ backdrop-dismiss="${args.backdropDismiss}"
36
36
  ?disable-top-layer=${args.disableTopLayer}
37
37
  scrollable="${args.scrollable}"
38
38
  ?open=${args.open}
@@ -113,7 +113,7 @@ const DestructiveTemplate = (args) => html`
113
113
  id="${args.componentId}"
114
114
  component-id="${args.componentId}"
115
115
  size="${args.size}"
116
- ?backdrop-dismiss=${args.backdropDismiss}
116
+ backdrop-dismiss="${args.backdropDismiss}"
117
117
  ?open=${args.open}
118
118
  >
119
119
  <pds-modal-header>
@@ -179,7 +179,7 @@ const CustomContentTemplate = (args) => html`
179
179
  <pds-modal
180
180
  id="${args.componentId}"
181
181
  size="${args.size}"
182
- ?backdrop-dismiss=${args.backdropDismiss}
182
+ backdrop-dismiss="${args.backdropDismiss}"
183
183
  ?open=${args.open}
184
184
  >
185
185
 
@@ -267,7 +267,7 @@ const ScrollableTemplate = (args) => {
267
267
  <pds-modal
268
268
  id="${args.componentId}"
269
269
  size="${args.size}"
270
- ?backdrop-dismiss=${args.backdropDismiss}
270
+ backdrop-dismiss="${args.backdropDismiss}"
271
271
  ?open=${args.open}
272
272
  >
273
273
  <pds-modal-header>
@@ -350,7 +350,7 @@ const FullscreenTemplate = (args) => html`
350
350
  <pds-modal
351
351
  id="${args.componentId}"
352
352
  size=${args.size}
353
- ?backdrop-dismiss=${args.backdropDismiss}
353
+ backdrop-dismiss="${args.backdropDismiss}"
354
354
  ?open=${args.open}
355
355
  >
356
356
  <pds-modal-header>
@@ -437,7 +437,7 @@ const NonScrollableTemplate = (args) => html`
437
437
  id="${args.componentId}"
438
438
  component-id="${args.componentId}"
439
439
  size="${args.size}"
440
- ?backdrop-dismiss=${args.backdropDismiss}
440
+ backdrop-dismiss="${args.backdropDismiss}"
441
441
  scrollable="${args.scrollable}"
442
442
  ?open=${args.open}
443
443
  key="${args.scrollable ? 'scrollable' : 'non-scrollable'}"
@@ -683,7 +683,7 @@ const DisableTopLayerTemplate = (args) => html`
683
683
  id="${args.componentId}"
684
684
  component-id="${args.componentId}"
685
685
  size="${args.size}"
686
- ?backdrop-dismiss=${args.backdropDismiss}
686
+ backdrop-dismiss="${args.backdropDismiss}"
687
687
  ?disable-top-layer=${args.disableTopLayer}
688
688
  ?open=${args.open}
689
689
  >
@@ -35,7 +35,7 @@
35
35
  border-radius: var(--pine-dimension-125);
36
36
  cursor: pointer;
37
37
  display: flex;
38
- font: var(--pine-typography-body-medium);
38
+ font: var(--pine-typography-body);
39
39
  gap: var(--pine-dimension-xs);
40
40
  justify-content: space-between;
41
41
  letter-spacing: var(--pine-letter-spacing);
@@ -163,7 +163,7 @@
163
163
  .pds-multiselect__search {
164
164
  align-items: center;
165
165
  border-block-end: var(--pine-border);
166
- border-block-end-color: var(--pine-color-border-subtle);
166
+ border-block-end-color: var(--pine-color-border-active);
167
167
  display: flex;
168
168
  gap: var(--pine-dimension-xs);
169
169
  padding: var(--pine-dimension-xs) var(--pine-dimension-sm);
@@ -4,6 +4,7 @@ import { cancelDebouncedEvent, debounceEvent, flushDebouncedEvent } from "../../
4
4
  import { isSpecTest, messageId, assignDescription } from "../../utils/form";
5
5
  import { danger, enlarge } from "@pine-ds/icons/icons";
6
6
  import { formatMessage, pluralize } from "../../i18n";
7
+ import { bindTruncationTooltips } from "../../utils/truncation-tooltip";
7
8
  // Names only: pds-icon's `icon` prop also fetches URLs and data: SVGs, unsanitized.
8
9
  const PINE_ICON_NAME = /^[a-z0-9-]+$/i;
9
10
  const TABBABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
@@ -18,6 +19,21 @@ const TABBABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled]
18
19
  */
19
20
  export class PdsMultiselect {
20
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
+ }));
21
37
  this.hasDisabledSlottedTrigger = false;
22
38
  /**
23
39
  * Placeholder text for the input field. Pass a translated string to localize it; defaults to English.
@@ -294,34 +310,31 @@ export class PdsMultiselect {
294
310
  }
295
311
  // Escape is handled by the global @Listen('keydown') handler
296
312
  case 'Tab': {
297
- const firstFooterTabbable = e.shiftKey ? undefined : this.getFooterTabbables()[0];
298
- firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.focus();
299
- if (firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.matches(':focus')) {
300
- // Each option's checkbox is a tab stop, so jump past them to the footer.
313
+ const row = e.shiftKey ? undefined : this.getSelectedItemTabbables()[0];
314
+ if (row !== undefined) {
315
+ row.focus();
301
316
  e.preventDefault();
302
317
  }
303
318
  else {
304
- this.closeDropdown();
305
- // Tab would move on to an option's checkbox, which closing removes, dropping focus to the page.
306
- // Land on the trigger instead, as Escape does; Shift+Tab already reaches it.
307
- const trigger = e.shiftKey ? undefined : this.activeTriggerEl;
308
- trigger === null || trigger === void 0 ? void 0 : trigger.focus();
309
- if (trigger === null || trigger === void 0 ? void 0 : trigger.matches(':focus'))
310
- e.preventDefault();
319
+ this.tabPastOptions(e);
311
320
  }
312
321
  break;
313
322
  }
314
323
  }
315
324
  };
325
+ this.handleSelectedListKeyDown = (e) => {
326
+ if (e.key === 'Tab' && !e.shiftKey && e.composedPath()[0] === this.getSelectedItemTabbables().pop())
327
+ this.tabPastOptions(e);
328
+ };
316
329
  this.handleFooterKeyDown = (e) => {
317
- var _a;
330
+ var _a, _b;
318
331
  if (e.key !== 'Tab')
319
332
  return;
320
333
  const tabbables = this.getFooterTabbables();
321
334
  const focused = e.composedPath()[0];
322
335
  if (e.shiftKey && focused === tabbables[0]) {
323
336
  e.preventDefault();
324
- (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
337
+ (_b = ((_a = this.getSelectedItemTabbables().pop()) !== null && _a !== void 0 ? _a : this.searchInputEl)) === null || _b === void 0 ? void 0 : _b.focus();
325
338
  }
326
339
  else if (!e.shiftKey && focused === tabbables[tabbables.length - 1]) {
327
340
  this.closeDropdown();
@@ -413,6 +426,7 @@ export class PdsMultiselect {
413
426
  if (this.el.attachInternals && !this.internals) {
414
427
  this.internals = this.el.attachInternals();
415
428
  }
429
+ this.syncTruncationTooltips();
416
430
  }
417
431
  /**
418
432
  * Form Associated Custom Elements API: Called when the form is disabled
@@ -461,8 +475,19 @@ export class PdsMultiselect {
461
475
  this.updateOptionsFromSlot();
462
476
  }
463
477
  }
478
+ componentDidRender() {
479
+ this.syncTruncationTooltips();
480
+ }
481
+ syncTruncationTooltips() {
482
+ var _a;
483
+ const root = this.el.shadowRoot;
484
+ this.triggerTextTooltip.sync([root === null || root === void 0 ? void 0 : root.querySelector('.pds-multiselect__trigger-text')]);
485
+ this.selectedItemTooltips.sync((_a = root === null || root === void 0 ? void 0 : root.querySelectorAll('.pds-multiselect__selected-item')) !== null && _a !== void 0 ? _a : []);
486
+ }
464
487
  disconnectedCallback() {
465
488
  var _a, _b;
489
+ this.triggerTextTooltip.destroy();
490
+ this.selectedItemTooltips.destroy();
466
491
  cancelDebouncedEvent(this.pdsMultiselectSearch);
467
492
  (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
468
493
  (_b = this.cleanupAutoUpdate) === null || _b === void 0 ? void 0 : _b.call(this);
@@ -981,6 +1006,26 @@ export class PdsMultiselect {
981
1006
  this.creating = false;
982
1007
  }
983
1008
  }
1009
+ tabPastOptions(e) {
1010
+ const firstFooterTabbable = e.shiftKey ? undefined : this.getFooterTabbables()[0];
1011
+ firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.focus();
1012
+ if (firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.matches(':focus')) {
1013
+ // Each option's checkbox is a tab stop, so jump past them to the footer.
1014
+ e.preventDefault();
1015
+ }
1016
+ else {
1017
+ this.closeDropdown();
1018
+ // Tab would move on to an option's checkbox, which closing removes, dropping focus to the page.
1019
+ // Land on the trigger instead, as Escape does; Shift+Tab already reaches it.
1020
+ const trigger = e.shiftKey ? undefined : this.activeTriggerEl;
1021
+ trigger === null || trigger === void 0 ? void 0 : trigger.focus();
1022
+ if (trigger === null || trigger === void 0 ? void 0 : trigger.matches(':focus'))
1023
+ e.preventDefault();
1024
+ }
1025
+ }
1026
+ getSelectedItemTabbables() {
1027
+ return Array.from(this.el.shadowRoot.querySelectorAll('.pds-multiselect__selected-item[tabindex="0"]'));
1028
+ }
984
1029
  getFooterTabbables() {
985
1030
  const candidates = [];
986
1031
  Array.from(this.el.children)
@@ -1197,7 +1242,7 @@ export class PdsMultiselect {
1197
1242
  renderSelectedItemsList() {
1198
1243
  if (this.hideSelectedItems || this.selectedItems.length === 0)
1199
1244
  return null;
1200
- return (h("div", { class: "pds-multiselect__selected-section" }, h("ul", { class: "pds-multiselect__selected-list", role: "list" }, this.selectedItems.map(item => (h("li", { key: String(item.id), class: "pds-multiselect__selected-item" }, item.text))))));
1245
+ 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))))));
1201
1246
  }
1202
1247
  renderDropdown() {
1203
1248
  if (!this.isOpen)
@@ -1266,10 +1311,10 @@ export class PdsMultiselect {
1266
1311
  }
1267
1312
  render() {
1268
1313
  const hasSelections = this.selectedItems.length > 0;
1269
- return (h(Host, { key: '8f1ce5ef092285ce7c0855643fae76a4ec86ee17', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: 'c14c3d52c1d55fb33a89f1a25055728215a1e4ab', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: 'aacd3339b0db2048b31fbc5963f7232bbff78efe', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1314
+ return (h(Host, { key: '2e5f7188cbb3928df3098644f9437449f5d5128d', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: 'f6b7d9d70e7635510bbcff648e1547c9cc222005', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: '9e3f0bc63e20e0a1f03f87f4b89c478331bf4001', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1270
1315
  'pds-multiselect__label': true,
1271
1316
  'visually-hidden': this.hideLabel,
1272
- } }, this.label)), h("div", { key: '5e1ef76aa5d46798519e5ac885bfa1c8d7c7106c', 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: {
1317
+ } }, this.label)), h("div", { key: 'efdf274b7223f77d646ac838f4163291ae310c31', 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: {
1273
1318
  'pds-multiselect__trigger': true,
1274
1319
  'pds-multiselect__trigger--open': this.isOpen,
1275
1320
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -1285,7 +1330,7 @@ export class PdsMultiselect {
1285
1330
  }, 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: {
1286
1331
  'pds-multiselect__trigger-text': true,
1287
1332
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
1288
- } }, 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: '590045e4769812a1a2f7a97580d21d95dbe4e872', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: '419f4349b7cb17260f03d2bdcfd777561a62de42', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: 'b922af14c83348607aa9aaaefe9b03b39e71bd42', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: 'bd08726adf14a42f2ecf0cdfcd390e5639f9fd96', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)), h("div", { key: '42ad7905fb1816ccdd29b6aa438779929804b368', style: { display: 'none' } }, h("slot", { key: '4f3bf380e93d216790efb0a5de85d6479862350e' })))));
1333
+ } }, 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: 'd90262ab6971d16dab6f8a367d038ab2607d888c', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: '4baf142546462bea84ccb67b7ce288517f1de754', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: 'fdea175d93bc566d18cbad560e970f8c61495b1d', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '63977a25e35def8a6a4b39b0039e2da08f99d02e', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)), h("div", { key: 'cb43771ef04a682a6d14d80b0b37618acc5748ad', style: { display: 'none' } }, h("slot", { key: '7733626ae7bd4ba83cb30bbbdb81c28e413e46a3' })))));
1289
1334
  }
1290
1335
  static get is() { return "pds-multiselect"; }
1291
1336
  static get encapsulation() { return "shadow"; }
@@ -2413,7 +2458,7 @@ export class PdsMultiselect {
2413
2458
  "composed": true,
2414
2459
  "docs": {
2415
2460
  "tags": [],
2416
- "text": "Emitted when the dropdown is dismissed via Escape key or click outside.\n\nThis event fires only when the user explicitly dismisses the panel without making a selection:\n- \u2705 Fires: Pressing Escape key while dropdown is open\n- \u2705 Fires: Clicking outside the component while dropdown is open\n- \u274C Does NOT fire: When panel closes due to selection (including when `closePanelOnSelect` is true)\n- \u274C Does NOT fire: When panel closes programmatically via `closeDropdown()`\n\nEquivalent to Sage's `onEscapeHook`. Use this to restore parent UI state or run cleanup when the user cancels their interaction."
2461
+ "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."
2417
2462
  },
2418
2463
  "complexType": {
2419
2464
  "original": "void",
@@ -1,5 +1,5 @@
1
1
  :host {
2
- --sizing-max-width-default: 352px;
2
+ --sizing-max-width-default: 400px;
3
3
  display: inline-block;
4
4
  }
5
5
  :host .pds-popover__trigger-wrapper {
@@ -159,10 +159,10 @@ export class PdsPopover {
159
159
  */
160
160
  this.popoverType = 'auto';
161
161
  /**
162
- * Sets the maximum width of the popover content
163
- * @defaultValue 352
162
+ * Sets the maximum width of the popover, in pixels, including its padding.
163
+ * @defaultValue 400
164
164
  */
165
- this.maxWidth = 352;
165
+ this.maxWidth = 400;
166
166
  /**
167
167
  * Sets the padding of the popover content
168
168
  * @defaultValue "md"
@@ -562,6 +562,8 @@ export class PdsPopover {
562
562
  this.portalEl.style.backgroundColor = 'var(--pine-color-background-overlay)';
563
563
  this.portalEl.style.borderRadius = 'var(--pine-dimension-125)';
564
564
  this.portalEl.style.boxShadow = 'var(--pine-box-shadow-200)';
565
+ // So the padding below stays inside max-width rather than adding to it.
566
+ this.portalEl.style.boxSizing = 'border-box';
565
567
  this.portalEl.style.margin = 'var(--pine-dimension-none)';
566
568
  this.portalEl.style.padding = this.paddingToken();
567
569
  // Generate unique ID
@@ -1032,7 +1034,7 @@ export class PdsPopover {
1032
1034
  portal.style.left = `${left - origin.left}px`;
1033
1035
  }
1034
1036
  render() {
1035
- return (h(Host, { key: '85422eb7544a4795ce78b51684b7224a5d856a4e', id: this.componentId }, h("span", { key: '6fe9c827ed4d46ca723d6013f296faf80ba31366', class: "pds-popover__trigger-wrapper" }, h("slot", { key: '970d1974d2be1451e670a36e7d2ccdc5979595bb', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("span", { key: '0c76f76286a30d8e6e948bd0abab3317b3673aa6', class: "pds-popover__tab-guard", ref: (el) => (this.tabGuardEl = el !== null && el !== void 0 ? el : null), onFocus: this.handleTabGuardFocus }), h("div", { key: '692c45e93899e74a3d5970f3a3625f6115ab63b0', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: 'f1566e0eb1eb08626f2a8285447702ce96b09f4d', onSlotchange: this.handleContentSlotChange }))));
1037
+ return (h(Host, { key: 'c76e121eb82b0d4f89f49bc83ff592ccf5774d57', id: this.componentId }, h("span", { key: '01061721f373e6f83729624d19f0beac0d6f093e', class: "pds-popover__trigger-wrapper" }, h("slot", { key: 'e68a2bd22ee6657e534da3d097bdaf3189815262', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("span", { key: 'd48301ebb6a9e0729083829a0587a0a285faedda', class: "pds-popover__tab-guard", ref: (el) => (this.tabGuardEl = el !== null && el !== void 0 ? el : null), onFocus: this.handleTabGuardFocus }), h("div", { key: 'c7d2e348545adaa7566da7c4f6b13a7ee78d1322', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: '312f54fa917c135adc2f2a5ccbbb3159a980df24', onSlotchange: this.handleContentSlotChange }))));
1036
1038
  }
1037
1039
  static get is() { return "pds-popover"; }
1038
1040
  static get encapsulation() { return "shadow"; }
@@ -1146,15 +1148,15 @@ export class PdsPopover {
1146
1148
  "docs": {
1147
1149
  "tags": [{
1148
1150
  "name": "defaultValue",
1149
- "text": "352"
1151
+ "text": "400"
1150
1152
  }],
1151
- "text": "Sets the maximum width of the popover content"
1153
+ "text": "Sets the maximum width of the popover, in pixels, including its padding."
1152
1154
  },
1153
1155
  "getter": false,
1154
1156
  "setter": false,
1155
1157
  "reflect": false,
1156
1158
  "attribute": "max-width",
1157
- "defaultValue": "352"
1159
+ "defaultValue": "400"
1158
1160
  },
1159
1161
  "padding": {
1160
1162
  "type": "string",
@@ -10,7 +10,7 @@ export class PdsProgress {
10
10
  */
11
11
  this.animated = false;
12
12
  /**
13
- * Sets the progress fill pecentage and visually displayed when `show-percentage=true`.
13
+ * Sets the progress fill percentage (0–100). Shown as text when `show-percent` is set.
14
14
  * @defaultValue 0
15
15
  */
16
16
  this.percent = 0;
@@ -30,7 +30,7 @@ export class PdsProgress {
30
30
  const normalizedFillColor = normalizeColorValue(this.fillColor);
31
31
  const hostClass = this.animated ? { 'is-animated': this.animated } : '';
32
32
  this.hostKeeper.record(hostClass);
33
- return (h(Host, { key: '6d2151cdd1f65b33a7478e5ac12df711d8252d1f', class: hostClass }, h("div", { key: '4a902c6c7d51fe8e8a778e1fa24bdbf95d625b1f', class: "pds-progress" }, h("label", { key: 'c50955234a7eee05cdf47531e25b4413f206e416', class: "pds-progress__label", htmlFor: this.componentId }, this.label), h("progress", { key: 'c54ad90f7b3fcf3368afca4c5618949f1a370114', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && h("div", { key: '6b3e3f42f04a516ef7992d1f8bc967be432f55bb', class: "pds-progress__percentage" }, this.percent, "%")));
33
+ return (h(Host, { key: '494b5fcb8cbfbb54570e05bf5cb3e122f281b0aa', class: hostClass }, h("div", { key: '9b1d956ac587add8d7bf46d258a04043484d65bb', class: "pds-progress" }, h("label", { key: '20f7a7e3107ee1f87eb7ebcd74baf484aefeaa15', class: "pds-progress__label", htmlFor: this.componentId }, this.label), h("progress", { key: '3eb27fc07b60196b9528b200db990faf3c8f1293', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && h("div", { key: '68ec67c4e415eaee29cc1eb66786f356768ed585', class: "pds-progress__percentage" }, this.percent, "%")));
34
34
  }
35
35
  static get is() { return "pds-progress"; }
36
36
  static get encapsulation() { return "shadow"; }
@@ -101,7 +101,7 @@ export class PdsProgress {
101
101
  "docs": {
102
102
  "tags": [{
103
103
  "name": "defaultValue",
104
- "text": "'var(--pine-color-blue-300)'"
104
+ "text": "'var(--pine-color-primary)'"
105
105
  }],
106
106
  "text": "Sets the progress fill color. Accepts a color token or a [valid color value](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value)."
107
107
  },
@@ -144,7 +144,7 @@ export class PdsProgress {
144
144
  "name": "defaultValue",
145
145
  "text": "0"
146
146
  }],
147
- "text": "Sets the progress fill pecentage and visually displayed when `show-percentage=true`."
147
+ "text": "Sets the progress fill percentage (0\u2013100). Shown as text when `show-percent` is set."
148
148
  },
149
149
  "getter": false,
150
150
  "setter": false,
@@ -196,7 +196,11 @@ label:has(input:disabled) {
196
196
  border: var(--pine-border-hover);
197
197
  }
198
198
  :host(.has-image):has(input:checked) {
199
- box-shadow: 0 0 0 2px var(--pine-color-primary-hover);
199
+ box-shadow: 0 0 0 var(--pine-border-width-thick) var(--pine-color-primary-hover);
200
+ }
201
+ :host(.has-image):has(input:focus-visible) {
202
+ outline: var(--pine-outline-focus);
203
+ outline-offset: calc(var(--pine-border-width-thick) + var(--pine-border-width));
200
204
  }
201
205
  :host(.has-image) label {
202
206
  color: var(--pine-color-text);