@pine-ds/core 4.11.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 (506) 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 +44 -9
  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/pds-datepicker.js +3 -3
  119. package/dist/collection/components/pds-datepicker/presets.js +42 -7
  120. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +2 -5
  121. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +2 -1
  122. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +2 -1
  123. package/dist/collection/components/pds-drawer/pds-drawer.js +8 -10
  124. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +17 -8
  125. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +95 -62
  126. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +3 -3
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +2 -0
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +84 -9
  129. package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +24 -1
  130. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +2 -1
  131. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +24 -7
  132. package/dist/collection/components/pds-image/image-interface.js +1 -0
  133. package/dist/collection/components/pds-image/pds-image.css +11 -0
  134. package/dist/collection/components/pds-image/pds-image.js +249 -8
  135. package/dist/collection/components/pds-image/stories/pds-image.stories.js +117 -1
  136. package/dist/collection/components/pds-input/pds-input.js +14 -9
  137. package/dist/collection/components/pds-link/pds-link.js +10 -14
  138. package/dist/collection/components/pds-link/stories/pds-link.stories.js +6 -2
  139. package/dist/collection/components/pds-loader/pds-loader.js +5 -4
  140. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +2 -1
  141. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +2 -1
  142. package/dist/collection/components/pds-modal/pds-modal.js +11 -13
  143. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +7 -7
  144. package/dist/collection/components/pds-multiselect/pds-multiselect.css +2 -2
  145. package/dist/collection/components/pds-multiselect/pds-multiselect.js +63 -18
  146. package/dist/collection/components/pds-popover/pds-popover.css +1 -1
  147. package/dist/collection/components/pds-popover/pds-popover.js +9 -7
  148. package/dist/collection/components/pds-progress/pds-progress.js +4 -4
  149. package/dist/collection/components/pds-radio/pds-radio.css +5 -1
  150. package/dist/collection/components/pds-radio/pds-radio.js +9 -9
  151. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +9 -9
  152. package/dist/collection/components/pds-radio-group/pds-radio-group.js +7 -7
  153. package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +3 -3
  154. package/dist/collection/components/pds-row/stories/pds-row.stories.js +15 -14
  155. package/dist/collection/components/pds-select/pds-select.js +7 -4
  156. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.css +38 -0
  157. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +47 -5
  158. package/dist/collection/components/pds-sortable/pds-sortable.js +481 -5
  159. package/dist/collection/components/pds-sortable/sortable-label.js +33 -0
  160. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +27 -0
  161. package/dist/collection/components/pds-switch/pds-switch.js +114 -17
  162. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +79 -0
  163. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +4 -1
  164. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +47 -4
  165. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +6 -2
  166. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +11 -0
  167. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +98 -10
  168. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +5 -1
  169. package/dist/collection/components/pds-table/pds-table.css +8 -0
  170. package/dist/collection/components/pds-table/pds-table.js +295 -7
  171. package/dist/collection/components/pds-table/stories/pds-table.stories.js +131 -6
  172. package/dist/collection/components/pds-tabs/pds-tabs.js +3 -3
  173. package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +1 -1
  174. package/dist/collection/components/pds-text/pds-text.js +5 -3
  175. package/dist/collection/components/pds-textarea/pds-textarea.js +16 -14
  176. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +2 -13
  177. package/dist/collection/components/pds-toast/pds-toast.css +4 -3
  178. package/dist/collection/components/pds-toast/pds-toast.js +9 -5
  179. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +2 -2
  180. package/dist/collection/components/pds-tooltip/pds-tooltip.css +2 -1
  181. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +17 -17
  182. package/dist/collection/utils/aria-references.js +9 -3
  183. package/dist/collection/utils/truncation-tooltip.js +67 -0
  184. package/dist/docs.json +1124 -374
  185. package/dist/esm/aria-references-CNn1lObg.js +50 -0
  186. package/dist/esm/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +3 -0
  187. package/dist/esm/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  188. package/dist/esm/loader.js +1 -1
  189. package/dist/esm/pds-accordion.entry.js +1 -1
  190. package/dist/esm/pds-alert.entry.js +2 -2
  191. package/dist/esm/pds-avatar.entry.js +4 -3
  192. package/dist/esm/pds-box.entry.js +4 -3
  193. package/dist/esm/pds-button.entry.js +24 -44
  194. package/dist/esm/pds-checkbox.entry.js +5 -5
  195. package/dist/esm/pds-chip.entry.js +4 -4
  196. package/dist/esm/pds-combobox.entry.js +246 -106
  197. package/dist/esm/pds-copytext.entry.js +4 -4
  198. package/dist/esm/pds-datepicker.entry.js +45 -10
  199. package/dist/esm/pds-drawer-content.entry.js +1 -1
  200. package/dist/esm/pds-drawer-footer.entry.js +1 -1
  201. package/dist/esm/pds-drawer-header.entry.js +1 -1
  202. package/dist/esm/pds-drawer.entry.js +5 -7
  203. package/dist/esm/pds-dropdown-menu-item.entry.js +85 -49
  204. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  205. package/dist/esm/pds-dropdown-menu.entry.js +84 -11
  206. package/dist/esm/pds-filter.entry.js +25 -3
  207. package/dist/esm/pds-image.entry.js +149 -7
  208. package/dist/esm/pds-input.entry.js +5 -5
  209. package/dist/esm/pds-link.entry.js +5 -6
  210. package/dist/esm/pds-loader.entry.js +4 -3
  211. package/dist/esm/pds-modal-footer.entry.js +1 -1
  212. package/dist/esm/pds-modal-header.entry.js +1 -1
  213. package/dist/esm/pds-modal.entry.js +9 -12
  214. package/dist/esm/pds-multiselect.entry.js +65 -19
  215. package/dist/esm/pds-popover.entry.js +8 -6
  216. package/dist/esm/pds-progress.entry.js +3 -3
  217. package/dist/esm/pds-radio-group.entry.js +5 -5
  218. package/dist/esm/pds-radio.entry.js +7 -7
  219. package/dist/esm/pds-row.entry.js +1 -1
  220. package/dist/esm/pds-select.entry.js +3 -3
  221. package/dist/esm/pds-sortable-item.entry.js +29 -6
  222. package/dist/esm/pds-sortable.entry.js +357 -5
  223. package/dist/esm/pds-switch.entry.js +94 -17
  224. package/dist/esm/pds-tab.entry.js +1 -1
  225. package/dist/esm/pds-table-body.entry.js +1 -1
  226. package/dist/esm/pds-table-cell.entry.js +24 -5
  227. package/dist/esm/pds-table-head-cell.entry.js +60 -12
  228. package/dist/esm/pds-table-head.entry.js +1 -1
  229. package/dist/esm/pds-table-row.entry.js +1 -1
  230. package/dist/esm/pds-table.entry.js +261 -6
  231. package/dist/esm/pds-tabpanel.entry.js +1 -1
  232. package/dist/esm/pds-tabs.entry.js +3 -3
  233. package/dist/esm/pds-text.entry.js +5 -3
  234. package/dist/esm/pds-textarea.entry.js +9 -8
  235. package/dist/esm/pds-toast.entry.js +8 -4
  236. package/dist/esm/pds-tooltip.entry.js +1 -1
  237. package/dist/esm/pine-core.js +1 -1
  238. package/dist/esm/sortable-label-PItnzVVR.js +35 -0
  239. package/dist/esm/{truncation-tooltip-DBcPipr9.js → truncation-tooltip-CkIWm6Z-.js} +68 -1
  240. package/dist/esm-es5/aria-references-CNn1lObg.js +1 -0
  241. package/dist/esm-es5/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +1 -1
  242. package/dist/esm-es5/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  243. package/dist/esm-es5/loader.js +1 -1
  244. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  245. package/dist/esm-es5/pds-alert.entry.js +1 -1
  246. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  247. package/dist/esm-es5/pds-box.entry.js +1 -1
  248. package/dist/esm-es5/pds-button.entry.js +1 -1
  249. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  250. package/dist/esm-es5/pds-chip.entry.js +1 -1
  251. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  252. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  253. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  254. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  255. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  256. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  257. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  258. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  259. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  260. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  261. package/dist/esm-es5/pds-filter.entry.js +1 -1
  262. package/dist/esm-es5/pds-image.entry.js +1 -1
  263. package/dist/esm-es5/pds-input.entry.js +1 -1
  264. package/dist/esm-es5/pds-link.entry.js +1 -1
  265. package/dist/esm-es5/pds-loader.entry.js +1 -1
  266. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  267. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  268. package/dist/esm-es5/pds-modal.entry.js +1 -1
  269. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  270. package/dist/esm-es5/pds-popover.entry.js +1 -1
  271. package/dist/esm-es5/pds-progress.entry.js +1 -1
  272. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  273. package/dist/esm-es5/pds-radio.entry.js +1 -1
  274. package/dist/esm-es5/pds-row.entry.js +1 -1
  275. package/dist/esm-es5/pds-select.entry.js +1 -1
  276. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  277. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  278. package/dist/esm-es5/pds-switch.entry.js +1 -1
  279. package/dist/esm-es5/pds-tab.entry.js +1 -1
  280. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  281. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  282. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  284. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  285. package/dist/esm-es5/pds-table.entry.js +1 -1
  286. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  287. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  288. package/dist/esm-es5/pds-text.entry.js +1 -1
  289. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  290. package/dist/esm-es5/pds-toast.entry.js +1 -1
  291. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  292. package/dist/esm-es5/pine-core.js +1 -1
  293. package/dist/esm-es5/sortable-label-PItnzVVR.js +1 -0
  294. package/dist/esm-es5/truncation-tooltip-CkIWm6Z-.js +1 -0
  295. package/dist/pine-core/{p-f834cb07.system.entry.js → p-00891b8d.system.entry.js} +1 -1
  296. package/dist/pine-core/{p-3f8bd3fb.system.entry.js → p-053ff8eb.system.entry.js} +1 -1
  297. package/dist/pine-core/p-08b9e3ad.entry.js +1 -0
  298. package/dist/pine-core/{p-4d98bc0c.system.entry.js → p-0a7570dd.system.entry.js} +1 -1
  299. package/dist/pine-core/{p-d018dc60.system.entry.js → p-0ac4262e.system.entry.js} +1 -1
  300. package/dist/pine-core/{p-89d38a82.system.entry.js → p-0e1b8bd1.system.entry.js} +1 -1
  301. package/dist/pine-core/{p-e1d1b5d8.entry.js → p-12fdc65f.entry.js} +1 -1
  302. package/dist/pine-core/{p-d48fe5a0.system.entry.js → p-16fceef6.system.entry.js} +1 -1
  303. package/dist/pine-core/p-1765a41b.system.entry.js +1 -0
  304. package/dist/pine-core/{p-a594c41f.entry.js → p-18524c25.entry.js} +1 -1
  305. package/dist/pine-core/p-1a013a5c.system.entry.js +1 -0
  306. package/dist/pine-core/{p-2b9622c1.system.entry.js → p-1ab52531.system.entry.js} +1 -1
  307. package/dist/pine-core/p-1c584a20.entry.js +1 -0
  308. package/dist/pine-core/p-1edef412.entry.js +1 -0
  309. package/dist/pine-core/{p-5946203c.entry.js → p-1f998e3e.entry.js} +1 -1
  310. package/dist/pine-core/{p-39e57657.entry.js → p-1fb1ca3d.entry.js} +1 -1
  311. package/dist/pine-core/p-2b6becc2.entry.js +1 -0
  312. package/dist/pine-core/p-2cc7c682.entry.js +1 -0
  313. package/dist/pine-core/{p-639acef8.system.entry.js → p-2ddcd845.system.entry.js} +1 -1
  314. package/dist/pine-core/{p-6a1aa8d3.entry.js → p-2f15e85f.entry.js} +1 -1
  315. package/dist/pine-core/{p-67f795d5.system.entry.js → p-33da254f.system.entry.js} +1 -1
  316. package/dist/pine-core/{p-c6a9e62c.system.entry.js → p-3fc9ef80.system.entry.js} +1 -1
  317. package/dist/pine-core/p-4125a4a6.system.entry.js +1 -0
  318. package/dist/pine-core/p-47df9e9f.system.entry.js +3 -0
  319. package/dist/pine-core/p-51680c9c.system.entry.js +1 -0
  320. package/dist/pine-core/p-55535481.system.entry.js +1 -0
  321. package/dist/pine-core/p-55a4659a.system.entry.js +1 -0
  322. package/dist/pine-core/{p-c5e1eb3c.system.entry.js → p-57af5c29.system.entry.js} +1 -1
  323. package/dist/pine-core/p-57edd301.system.entry.js +1 -0
  324. package/dist/pine-core/{p-bfa34194.entry.js → p-5d582798.entry.js} +1 -1
  325. package/dist/pine-core/p-5db87fda.system.entry.js +1 -0
  326. package/dist/pine-core/{p-19cf1d91.system.entry.js → p-5eb0c78c.system.entry.js} +1 -1
  327. package/dist/pine-core/{p-42f70f93.system.entry.js → p-6017afb5.system.entry.js} +1 -1
  328. package/dist/pine-core/{p-63f85859.system.entry.js → p-60e65fe0.system.entry.js} +1 -1
  329. package/dist/pine-core/{p-973c3ac0.entry.js → p-627a94da.entry.js} +1 -1
  330. package/dist/pine-core/{p-a9d96e22.entry.js → p-68328afc.entry.js} +1 -1
  331. package/dist/pine-core/{p-bd7dc317.system.entry.js → p-72668673.system.entry.js} +1 -1
  332. package/dist/pine-core/p-72ff5ad2.system.entry.js +1 -0
  333. package/dist/pine-core/p-736ea7dd.entry.js +7 -0
  334. package/dist/pine-core/p-765f4207.entry.js +1 -0
  335. package/dist/pine-core/{p-2a18852f.entry.js → p-77530cf2.entry.js} +1 -1
  336. package/dist/pine-core/p-77a22399.entry.js +1 -0
  337. package/dist/pine-core/p-783127bf.entry.js +1 -0
  338. package/dist/pine-core/{p-d9719e37.entry.js → p-82f7eed1.entry.js} +1 -1
  339. package/dist/pine-core/{p-124a0a24.entry.js → p-84d4ae26.entry.js} +1 -1
  340. package/dist/pine-core/p-8deeda07.entry.js +1 -0
  341. package/dist/pine-core/{p-849ec281.system.entry.js → p-8e17a6d8.system.entry.js} +1 -1
  342. package/dist/pine-core/p-8e7e7bba.entry.js +1 -0
  343. package/dist/pine-core/{p-e82f758f.system.entry.js → p-907c69e9.system.entry.js} +1 -1
  344. package/dist/pine-core/{p-1415c988.system.entry.js → p-90f83a5b.system.entry.js} +1 -1
  345. package/dist/pine-core/p-97145eee.system.entry.js +1 -0
  346. package/dist/pine-core/{p-a09c9c5e.system.entry.js → p-9d983e09.system.entry.js} +1 -1
  347. package/dist/pine-core/{p-1e3ef425.entry.js → p-9e005996.entry.js} +1 -1
  348. package/dist/pine-core/{p-DvN3tyZp.js → p-B0DXTeeV.js} +1 -1
  349. package/dist/pine-core/{p-CNXspDYs.system.js → p-BlJQebvG.system.js} +1 -1
  350. package/dist/pine-core/p-C35-349-.system.js +1 -0
  351. package/dist/pine-core/{p-vFsJv75D.system.js → p-CIe1DGXa.system.js} +1 -1
  352. package/dist/pine-core/p-CNn1lObg.js +1 -0
  353. package/dist/pine-core/p-CQJ44c6o.system.js +1 -0
  354. package/dist/pine-core/p-Dv9QBmIF.js +1 -0
  355. package/dist/pine-core/p-PItnzVVR.js +1 -0
  356. package/dist/pine-core/p-VPGVqK3P.system.js +1 -0
  357. package/dist/pine-core/p-XK45dzWR.system.js +1 -1
  358. package/dist/pine-core/p-a149af29.entry.js +1 -0
  359. package/dist/pine-core/p-a20d9eca.system.entry.js +1 -0
  360. package/dist/pine-core/{p-f6f4fd42.entry.js → p-a5782d99.entry.js} +1 -1
  361. package/dist/pine-core/p-a5e9c583.entry.js +1 -0
  362. package/dist/pine-core/{p-4d47023c.system.entry.js → p-a9eaf160.system.entry.js} +1 -1
  363. package/dist/pine-core/{p-143b33a6.entry.js → p-b00b07e3.entry.js} +1 -1
  364. package/dist/pine-core/{p-c7a53c4f.entry.js → p-b7b29392.entry.js} +1 -1
  365. package/dist/pine-core/p-b96bdff6.entry.js +1 -0
  366. package/dist/pine-core/{p-f71d71ca.entry.js → p-bbd9ab75.entry.js} +1 -1
  367. package/dist/pine-core/p-bdab6c9f.entry.js +1 -0
  368. package/dist/pine-core/p-biShcgLI.js +1 -0
  369. package/dist/pine-core/{p-548bce53.system.entry.js → p-c12b5cd7.system.entry.js} +1 -1
  370. package/dist/pine-core/p-c1dc7692.entry.js +1 -0
  371. package/dist/pine-core/p-c76d8b9e.system.entry.js +1 -0
  372. package/dist/pine-core/{p-590df41a.entry.js → p-c89ea2d3.entry.js} +1 -1
  373. package/dist/pine-core/{p-d920d759.system.entry.js → p-c9630934.system.entry.js} +1 -1
  374. package/dist/pine-core/{p-6f4ab1ea.system.entry.js → p-cb9227f6.system.entry.js} +1 -1
  375. package/dist/pine-core/p-ceef0eb1.entry.js +1 -0
  376. package/dist/pine-core/p-d1283e8d.entry.js +1 -0
  377. package/dist/pine-core/p-d676926d.system.entry.js +1 -0
  378. package/dist/pine-core/{p-61cfdbb2.entry.js → p-d7d7a4e1.entry.js} +1 -1
  379. package/dist/pine-core/p-d85d50cb.entry.js +1 -0
  380. package/dist/pine-core/p-daa802f1.entry.js +2 -0
  381. package/dist/pine-core/p-ddf4b9b5.system.entry.js +1 -0
  382. package/dist/pine-core/p-de3b319e.system.entry.js +8 -0
  383. package/dist/pine-core/{p-cb9baf78.system.entry.js → p-e00777da.system.entry.js} +1 -1
  384. package/dist/pine-core/p-e2541eeb.entry.js +1 -0
  385. package/dist/pine-core/{p-01f1cdaf.system.entry.js → p-e2a1a49a.system.entry.js} +1 -1
  386. package/dist/pine-core/p-e4ebea88.system.entry.js +1 -0
  387. package/dist/pine-core/{p-947582e1.entry.js → p-e554bd64.entry.js} +1 -1
  388. package/dist/pine-core/{p-dd7ded84.entry.js → p-e6427c87.entry.js} +1 -1
  389. package/dist/pine-core/{p-50ddadbf.entry.js → p-e72e8b8f.entry.js} +1 -1
  390. package/dist/pine-core/p-e92d0f0f.system.entry.js +1 -0
  391. package/dist/pine-core/{p-9b32727a.system.entry.js → p-eab165b9.system.entry.js} +1 -1
  392. package/dist/pine-core/p-eabc4bd8.entry.js +1 -0
  393. package/dist/pine-core/p-ef9f84f2.system.entry.js +1 -0
  394. package/dist/pine-core/{p-c9ae7964.entry.js → p-f026af73.entry.js} +1 -1
  395. package/dist/pine-core/{p-99530cb5.entry.js → p-f0509c8e.entry.js} +1 -1
  396. package/dist/pine-core/p-f1252e72.system.entry.js +1 -0
  397. package/dist/pine-core/p-f3496fd1.entry.js +1 -0
  398. package/dist/pine-core/{p-eecd9ad8.system.entry.js → p-f90f4be7.system.entry.js} +1 -1
  399. package/dist/pine-core/p-f9bdaadd.system.entry.js +1 -0
  400. package/dist/pine-core/{p-128c04e7.entry.js → p-fda791df.entry.js} +1 -1
  401. package/dist/pine-core/p-fea4296d.entry.js +1 -0
  402. package/dist/pine-core/pine-core.esm.js +1 -1
  403. package/dist/types/components/pds-alert/pds-alert.d.ts +2 -1
  404. package/dist/types/components/pds-avatar/pds-avatar.d.ts +5 -4
  405. package/dist/types/components/pds-box/pds-box.d.ts +68 -57
  406. package/dist/types/components/pds-button/pds-button.d.ts +14 -3
  407. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +15 -8
  408. package/dist/types/components/pds-chip/pds-chip.d.ts +2 -2
  409. package/dist/types/components/pds-combobox/pds-combobox.d.ts +48 -11
  410. package/dist/types/components/pds-copytext/pds-copytext.d.ts +3 -1
  411. package/dist/types/components/pds-datepicker/datepicker-interface.d.ts +20 -4
  412. package/dist/types/components/pds-datepicker/pds-datepicker.d.ts +3 -2
  413. package/dist/types/components/pds-datepicker/presets.d.ts +3 -2
  414. package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +1 -4
  415. package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +1 -0
  416. package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +1 -0
  417. package/dist/types/components/pds-drawer/pds-drawer.d.ts +4 -6
  418. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +20 -16
  419. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +1 -1
  420. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +7 -0
  421. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +6 -5
  422. package/dist/types/components/pds-image/image-interface.d.ts +12 -0
  423. package/dist/types/components/pds-image/pds-image.d.ts +69 -9
  424. package/dist/types/components/pds-input/pds-input.d.ts +17 -7
  425. package/dist/types/components/pds-link/pds-link.d.ts +8 -8
  426. package/dist/types/components/pds-loader/pds-loader.d.ts +3 -2
  427. package/dist/types/components/pds-modal/pds-modal-footer/pds-modal-footer.d.ts +1 -0
  428. package/dist/types/components/pds-modal/pds-modal-header/pds-modal-header.d.ts +1 -0
  429. package/dist/types/components/pds-modal/pds-modal.d.ts +7 -9
  430. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +14 -8
  431. package/dist/types/components/pds-popover/pds-popover.d.ts +2 -2
  432. package/dist/types/components/pds-progress/pds-progress.d.ts +2 -2
  433. package/dist/types/components/pds-radio/pds-radio.d.ts +6 -5
  434. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +5 -4
  435. package/dist/types/components/pds-select/pds-select.d.ts +9 -3
  436. package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +8 -2
  437. package/dist/types/components/pds-sortable/pds-sortable.d.ts +82 -1
  438. package/dist/types/components/pds-sortable/sortable-label.d.ts +7 -0
  439. package/dist/types/components/pds-switch/pds-switch.d.ts +17 -2
  440. package/dist/types/components/pds-table/pds-table-body/pds-table-body.d.ts +3 -0
  441. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +10 -0
  442. package/dist/types/components/pds-table/pds-table-head/pds-table-head.d.ts +5 -1
  443. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +21 -0
  444. package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +4 -0
  445. package/dist/types/components/pds-table/pds-table.d.ts +76 -2
  446. package/dist/types/components/pds-tabs/pds-tabs.d.ts +1 -1
  447. package/dist/types/components/pds-textarea/pds-textarea.d.ts +15 -13
  448. package/dist/types/components/pds-toast/pds-toast.d.ts +5 -1
  449. package/dist/types/components.d.ts +480 -325
  450. package/dist/types/utils/aria-references.d.ts +4 -0
  451. package/dist/types/utils/truncation-tooltip.d.ts +39 -0
  452. package/dist/types/utils/types.d.ts +3 -0
  453. package/dist/vscode.html-data.json +340 -134
  454. package/hydrate/index.js +1800 -353
  455. package/hydrate/index.mjs +1800 -353
  456. package/package.json +3 -3
  457. package/readme.md +26 -55
  458. package/dist/esm-es5/truncation-tooltip-DBcPipr9.js +0 -1
  459. package/dist/pine-core/p-07323107.entry.js +0 -1
  460. package/dist/pine-core/p-08b8e941.entry.js +0 -1
  461. package/dist/pine-core/p-0b7b3fc2.system.entry.js +0 -3
  462. package/dist/pine-core/p-0d5f0ab5.system.entry.js +0 -1
  463. package/dist/pine-core/p-14dedf01.system.entry.js +0 -1
  464. package/dist/pine-core/p-1ca8d183.entry.js +0 -1
  465. package/dist/pine-core/p-1f62bb71.entry.js +0 -7
  466. package/dist/pine-core/p-2dd30d12.entry.js +0 -1
  467. package/dist/pine-core/p-3359a935.entry.js +0 -1
  468. package/dist/pine-core/p-35s7h-dk.js +0 -1
  469. package/dist/pine-core/p-3610cb3b.entry.js +0 -1
  470. package/dist/pine-core/p-39276663.entry.js +0 -1
  471. package/dist/pine-core/p-3a1dc752.system.entry.js +0 -1
  472. package/dist/pine-core/p-42d43c3f.system.entry.js +0 -1
  473. package/dist/pine-core/p-4a90b9c8.system.entry.js +0 -1
  474. package/dist/pine-core/p-4cfe922b.entry.js +0 -1
  475. package/dist/pine-core/p-5f181694.system.entry.js +0 -1
  476. package/dist/pine-core/p-60a30975.system.entry.js +0 -1
  477. package/dist/pine-core/p-62aa6a78.system.entry.js +0 -1
  478. package/dist/pine-core/p-64bcb378.entry.js +0 -1
  479. package/dist/pine-core/p-724baba3.system.entry.js +0 -1
  480. package/dist/pine-core/p-72659a0e.system.entry.js +0 -1
  481. package/dist/pine-core/p-8ade17ce.entry.js +0 -1
  482. package/dist/pine-core/p-8e7f75e6.entry.js +0 -1
  483. package/dist/pine-core/p-8fb520df.entry.js +0 -1
  484. package/dist/pine-core/p-92115e88.entry.js +0 -1
  485. package/dist/pine-core/p-94c9b7d1.system.entry.js +0 -1
  486. package/dist/pine-core/p-97356d4b.entry.js +0 -1
  487. package/dist/pine-core/p-97653e60.entry.js +0 -1
  488. package/dist/pine-core/p-97b73359.entry.js +0 -1
  489. package/dist/pine-core/p-BZVUD2on.js +0 -1
  490. package/dist/pine-core/p-Dj-z_ugg.system.js +0 -1
  491. package/dist/pine-core/p-ad5208a4.system.entry.js +0 -1
  492. package/dist/pine-core/p-afc2f165.entry.js +0 -1
  493. package/dist/pine-core/p-bcc378ba.system.entry.js +0 -8
  494. package/dist/pine-core/p-c8a0b562.system.entry.js +0 -1
  495. package/dist/pine-core/p-d4968f9d.system.entry.js +0 -1
  496. package/dist/pine-core/p-d6f338e0.entry.js +0 -1
  497. package/dist/pine-core/p-da8b864a.entry.js +0 -2
  498. package/dist/pine-core/p-db7fb5a3.entry.js +0 -1
  499. package/dist/pine-core/p-de455073.system.entry.js +0 -1
  500. package/dist/pine-core/p-e3de6a1d.entry.js +0 -1
  501. package/dist/pine-core/p-e84fa9ed.entry.js +0 -1
  502. package/dist/pine-core/p-eb4f0daa.system.entry.js +0 -1
  503. package/dist/pine-core/p-eb56af4a.system.entry.js +0 -1
  504. package/dist/pine-core/p-ef0eba9b.system.entry.js +0 -1
  505. package/dist/pine-core/p-f11cce27.system.entry.js +0 -1
  506. package/dist/pine-core/p-f354dbac.entry.js +0 -1
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-D9iJuJCP.js');
4
+ var closest = require('./closest-D0qyYtJ3.js');
4
5
  var scroll = require('./scroll-2XcoE_6Q.js');
5
- var truncationTooltip = require('./truncation-tooltip-Bikp7n9I.js');
6
+ var truncationTooltip = require('./truncation-tooltip-CM5HgRHh.js');
6
7
  require('./keep-hydrated-AKoh0DG4.js');
7
8
  require('./floating-ui.dom-Dw41zbyY.js');
8
9
  require('./portal-target-e8WQ6dLx.js');
@@ -39,14 +40,16 @@ const PdsTableCell = class {
39
40
  };
40
41
  }
41
42
  componentWillRender() {
42
- this.tableRef = this.hostElement.closest('pds-table');
43
+ // The shadow-crossing `closest` util, not the native one -- a selectable row's checkbox
44
+ // cell lives inside pds-table-row's own shadow root, which native `closest` can't see past.
45
+ this.tableRef = closest.closest('pds-table', this.hostElement);
43
46
  }
44
47
  // Fires again each time the cell is moved (a sort re-appends every row), unlike componentDidLoad,
45
48
  // so it re-binds what disconnectedCallback tore down. The tooltip binds to the host, which exists before load.
46
49
  connectedCallback() {
47
50
  if (!this.hasLoaded)
48
51
  return;
49
- this.tableRef = this.hostElement.closest('pds-table');
52
+ this.tableRef = closest.closest('pds-table', this.hostElement);
50
53
  this.cleanupScrollListener();
51
54
  if (this.needsScrollShadow) {
52
55
  this.setupScrollListener();
@@ -112,6 +115,22 @@ const PdsTableCell = class {
112
115
  this.setupTimer = undefined;
113
116
  }
114
117
  this.setupRetries = 0; // Reset retry counter
118
+ // Without a listener there's no way to know the scroll position any more, so the shadow
119
+ // this drove shouldn't linger -- matters when a rebind tears this down without setting it
120
+ // back up (responsive turned off while scrolled), not just on disconnect.
121
+ this.tableScrolling = false;
122
+ }
123
+ /**
124
+ * Re-binds the scroll listener to the table's current responsive container. Called by
125
+ * `pds-table` after a live `responsive` toggle: the cell stays in light DOM across that change,
126
+ * so it never reconnects on its own and would otherwise keep listening to a container the
127
+ * table already replaced or removed.
128
+ */
129
+ async rebindScrollListener() {
130
+ this.cleanupScrollListener();
131
+ if (this.needsScrollShadow) {
132
+ this.setupScrollListener();
133
+ }
115
134
  }
116
135
  handleTruncateChange(newValue) {
117
136
  if (newValue) {
@@ -152,11 +171,11 @@ const PdsTableCell = class {
152
171
  return classNames.join(' ');
153
172
  }
154
173
  render() {
155
- return (index.h(index.Host, { key: 'fd84150bcb9bd5d2029624394d4f69b0a7234bc0', class: this.classNames(), role: "gridcell", part: "cell", style: this.tableRef &&
174
+ return (index.h(index.Host, { key: 'bc40b70bcb8f1df7307df6c00e3b73427c8d5ff2', class: this.classNames(), role: "gridcell", part: "cell", style: this.tableRef &&
156
175
  this.tableRef.fixedColumn &&
157
176
  this.tableRef.selectable
158
177
  ? { '--fixed-cell-position': '40px' }
159
- : {} }, index.h("slot", { key: '9256f033ec58b9cb2acc74d705acc9726507668b' })));
178
+ : {} }, index.h("slot", { key: '418219bf8b870557f5f39ae6553db78fe7037389' })));
160
179
  }
161
180
  get hostElement() { return index.getElement(this); }
162
181
  static get watchers() { return {
@@ -2,10 +2,11 @@
2
2
 
3
3
  var index = require('./index-D9iJuJCP.js');
4
4
  var index$1 = require('./index-BDnbr0DK.js');
5
+ var closest = require('./closest-D0qyYtJ3.js');
5
6
  var scroll = require('./scroll-2XcoE_6Q.js');
6
7
  require('./keep-hydrated-AKoh0DG4.js');
7
8
 
8
- const pdsTableHeadCellCss = () => `:host{--border-head-cell-default:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);--box-shadow-default:3px 3px 6px -2px rgba(0, 0, 0, 0.1);-webkit-border-after:var(--border-head-cell-default);border-block-end:var(--border-head-cell-default);color:var(--pine-color-text);display:table-cell;font-family:var(--pine-font-family-body);font-size:var(--pine-font-size);font-weight:var(--pine-font-weight-regular);letter-spacing:var(--pine-letter-spacing);line-height:var(--pine-line-height-body);padding:var(--pine-dimension-sm);position:relative;text-align:start;vertical-align:inherit}:host(.is-compact){padding-block:var(--pine-dimension-2xs)}:host(.is-fixed){background:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(.is-fixed.has-head-background){background-color:var(--pine-color-background-subtle)}:host(.has-head-border){-webkit-border-before:var(--border-head-cell-default);border-block-start:var(--border-head-cell-default)}:host-context([dir=rtl]){--box-shadow-default:-3px 3px 6px -2px rgba(0, 0, 0, 0.1)}:host(.has-scrolled.is-fixed){-webkit-box-shadow:var(--box-shadow-default);box-shadow:var(--box-shadow-default)}:host(.is-sortable){cursor:pointer}:host(.is-sortable) pds-icon{-webkit-margin-start:var(--pine-dimension-2xs);margin-inline-start:var(--pine-dimension-2xs);-webkit-padding-before:2px;padding-block-start:2px;position:absolute}:host(.is-sortable:hover),:host(.is-active){color:var(--pine-color-text-strong)}:host(.pds-table-head-cell--align-start){text-align:start}:host(.pds-table-head-cell--align-center){text-align:center}:host(.pds-table-head-cell--align-end){text-align:end}:host(.pds-table-head-cell--align-justify){text-align:justify}`;
9
+ const pdsTableHeadCellCss = () => `:host{--border-head-cell-default:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);--box-shadow-default:3px 3px 6px -2px rgba(0, 0, 0, 0.1);-webkit-border-after:var(--border-head-cell-default);border-block-end:var(--border-head-cell-default);color:var(--pine-color-text);display:table-cell;font-family:var(--pine-font-family-body);font-size:var(--pine-font-size);font-weight:var(--pine-font-weight-regular);letter-spacing:var(--pine-letter-spacing);line-height:var(--pine-line-height-body);padding:var(--pine-dimension-sm);position:relative;text-align:start;vertical-align:inherit}:host(.has-width){-webkit-box-sizing:border-box;box-sizing:border-box;min-width:var(--pds-table-head-cell-width);width:var(--pds-table-head-cell-width)}:host(.has-auto-width){-webkit-box-sizing:border-box;box-sizing:border-box;width:var(--pds-table-head-cell-auto-floor-width, auto)}:host(.is-compact){padding-block:var(--pine-dimension-2xs)}:host(.is-fixed){background:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(.is-fixed.has-head-background){background-color:var(--pine-color-background-subtle)}:host(.has-head-border){-webkit-border-before:var(--border-head-cell-default);border-block-start:var(--border-head-cell-default)}:host-context([dir=rtl]){--box-shadow-default:-3px 3px 6px -2px rgba(0, 0, 0, 0.1)}:host(.has-scrolled.is-fixed){-webkit-box-shadow:var(--box-shadow-default);box-shadow:var(--box-shadow-default)}:host(.is-sortable){cursor:pointer}:host(.is-sortable) pds-icon{-webkit-margin-start:var(--pine-dimension-2xs);margin-inline-start:var(--pine-dimension-2xs);-webkit-padding-before:2px;padding-block-start:2px;position:absolute}:host(.is-sortable:hover),:host(.is-active){color:var(--pine-color-text-strong)}:host(.pds-table-head-cell--align-start){text-align:start}:host(.pds-table-head-cell--align-center){text-align:center}:host(.pds-table-head-cell--align-end){text-align:end}:host(.pds-table-head-cell--align-justify){text-align:justify}`;
9
10
 
10
11
  const PdsTableHeadCell = class {
11
12
  constructor(hostRef) {
@@ -13,6 +14,7 @@ const PdsTableHeadCell = class {
13
14
  this.pdsTableSort = index.createEvent(this, "pdsTableSort");
14
15
  this.scrollContainer = null;
15
16
  this.setupRetries = 0;
17
+ this.hasLoaded = false;
16
18
  /**
17
19
  * The direction of sorting.
18
20
  */
@@ -104,22 +106,39 @@ const PdsTableHeadCell = class {
104
106
  this.hostElement.classList.remove('is-active');
105
107
  }
106
108
  componentWillLoad() {
107
- // Set initial references and state before first render
108
- this.tableRef = this.hostElement.closest('pds-table');
109
- const tableHead = this.hostElement.closest('pds-table-head');
109
+ // Set initial references and state before first render. The shadow-crossing `closest`
110
+ // util, not the native one -- the select-all cell lives inside pds-table-head's own shadow
111
+ // root, which native `closest` can't see past.
112
+ this.tableRef = closest.closest('pds-table', this.hostElement);
113
+ const tableHead = closest.closest('pds-table-head', this.hostElement);
110
114
  if (tableHead) {
111
115
  this.hasHeadBorder = tableHead.hasAttribute('border');
112
116
  this.hasHeadBackground = tableHead.hasAttribute('background');
113
117
  }
114
118
  }
119
+ // Fires again each time the cell is moved (such as a reparent or DOM morph), unlike
120
+ // componentDidLoad, so it re-binds what disconnectedCallback tore down.
121
+ connectedCallback() {
122
+ if (!this.hasLoaded)
123
+ return;
124
+ this.tableRef = closest.closest('pds-table', this.hostElement);
125
+ if (this.tableRef && this.tableRef.responsive && this.tableRef.fixedColumn) {
126
+ this.setupScrollListener();
127
+ }
128
+ this.setupHeadObserver();
129
+ }
115
130
  componentDidLoad() {
131
+ this.hasLoaded = true;
116
132
  if (this.tableRef && this.tableRef.responsive && this.tableRef.fixedColumn) {
117
133
  // For responsive tables with fixed columns, set up scroll detection
118
134
  // This enables the first column header to show a shadow when the table is scrolled horizontally
119
135
  this.setupScrollListener();
120
136
  }
121
- // Watch for changes to the parent table-head's border and background attributes
122
- const tableHead = this.hostElement.closest('pds-table-head');
137
+ this.setupHeadObserver();
138
+ }
139
+ // Watches the parent table-head's border and background attributes.
140
+ setupHeadObserver() {
141
+ const tableHead = closest.closest('pds-table-head', this.hostElement);
123
142
  if (tableHead && typeof MutationObserver !== 'undefined') {
124
143
  // Defensive guard: disconnect existing observer before creating a new one
125
144
  if (this.headObserver) {
@@ -180,6 +199,22 @@ const PdsTableHeadCell = class {
180
199
  this.setupTimer = undefined;
181
200
  }
182
201
  this.setupRetries = 0; // Reset retry counter
202
+ // Without a listener there's no way to know the scroll position any more, so the shadow
203
+ // this drove shouldn't linger -- matters when a rebind tears this down without setting it
204
+ // back up (responsive turned off while scrolled), not just on disconnect.
205
+ this.tableScrolling = false;
206
+ }
207
+ /**
208
+ * Re-binds the scroll listener to the table's current responsive container. Called by
209
+ * `pds-table` after a live `responsive` toggle: the cell stays in light DOM across that
210
+ * change, so it never reconnects on its own and would otherwise keep listening to a container
211
+ * the table already replaced or removed.
212
+ */
213
+ async rebindScrollListener() {
214
+ this.cleanupScrollListener();
215
+ if (this.tableRef && this.tableRef.responsive && this.tableRef.fixedColumn) {
216
+ this.setupScrollListener();
217
+ }
183
218
  }
184
219
  classNames() {
185
220
  const classNames = [];
@@ -204,14 +239,27 @@ const PdsTableHeadCell = class {
204
239
  if (this.hasHeadBorder) {
205
240
  classNames.push('has-head-border');
206
241
  }
242
+ if (this.width) {
243
+ classNames.push('has-width');
244
+ }
245
+ else if (this.tableRef && this.tableRef.tableLayout === 'fixed') {
246
+ classNames.push('has-auto-width');
247
+ }
207
248
  return classNames.join(' ');
208
249
  }
250
+ hostStyles() {
251
+ const styles = {};
252
+ if (this.tableRef && this.tableRef.fixedColumn && this.tableRef.selectable) {
253
+ styles['--fixed-cell-position'] = '40px';
254
+ }
255
+ // Hand the width to the stylesheet as a custom property rather than an inline width.
256
+ if (this.width) {
257
+ styles['--pds-table-head-cell-width'] = this.width;
258
+ }
259
+ return styles;
260
+ }
209
261
  render() {
210
- return (index.h(index.Host, { key: 'd609309180968913315c1428d0403c3974a4bfc0', class: this.classNames(), role: "columnheader", onClick: this.toggleSort, part: "head-cell", style: this.tableRef &&
211
- this.tableRef.fixedColumn &&
212
- this.tableRef.selectable
213
- ? { '--fixed-cell-position': '40px' }
214
- : {} }, index.h("slot", { key: '7aff5994fe4c5250ce83516960183dbd9ffa9c69' }), this.sortable && this.isActive && (index.h("pds-icon", { key: '0a7b99ab2c56ea0cfb3aa6f810bf802422a29bef', icon: this.sortingDirection === 'asc' ? index$1.upSmall : index$1.downSmall, part: "sort-icon", "aria-hidden": "true" }))));
262
+ return (index.h(index.Host, { key: '353a05a4026064d05a4b924bec3fa2f17f1902ce', class: this.classNames(), role: "columnheader", onClick: this.toggleSort, part: "head-cell", style: this.hostStyles() }, index.h("slot", { key: '51ead68fc052805d60bbfc6e626f6aedcc5671fc' }), this.sortable && this.isActive && (index.h("pds-icon", { key: '9a5c27232f06a15dc8329c329f01b08cb6d836b8', icon: this.sortingDirection === 'asc' ? index$1.upSmall : index$1.downSmall, part: "sort-icon", "aria-hidden": "true" }))));
215
263
  }
216
264
  get hostElement() { return index.getElement(this); }
217
265
  };
@@ -50,7 +50,7 @@ const PdsTableHead = class {
50
50
  }
51
51
  }
52
52
  render() {
53
- return (index.h(index.Host, { key: '4fb8d7bf4a9b0bce672208651c0600fbc94214af', role: "row", part: "head" }, this.tableRef && this.tableRef.selectable && (index.h("pds-table-head-cell", { key: '20b86146540208178bd63bd136e14e5534c7ec76', part: this.tableRef.selectable ? 'checkbox-cell' : '' }, !this.tableRef.disableSelectAll && (index.h("pds-checkbox", { key: 'fa8054dd7ee36c6401e9eeb9c962a820d3a02558', componentId: this.generateUniqueId(), indeterminate: this.indeterminate, onInput: this.handleInput, label: "Select All Rows", hideLabel: true, checked: this.isSelected, part: "select-all-checkbox" })))), index.h("slot", { key: 'a0000270ae6ed1cab1c6e802ccc53ba0de3e54c9' })));
53
+ return (index.h(index.Host, { key: 'ba81f3a9655b49cf01311c697a8aae3e69de0e81', role: "row", part: "head" }, this.tableRef && this.tableRef.selectable && (index.h("pds-table-head-cell", { key: '4f182b3053469afbaff81c4918bf66376fc7ade4', part: this.tableRef.selectable ? 'checkbox-cell' : '', width: this.tableRef.tableLayout === 'fixed' ? 'var(--pine-dimension-2xl)' : undefined }, !this.tableRef.disableSelectAll && (index.h("pds-checkbox", { key: 'b26c7e8c26b3cc837f180431dc53a17ae0d84f1f', componentId: this.generateUniqueId(), indeterminate: this.indeterminate, onInput: this.handleInput, label: "Select All Rows", hideLabel: true, checked: this.isSelected, part: "select-all-checkbox" })))), index.h("slot", { key: 'e9eef43af95340fcce2d9f2f60800d897ee423f1' })));
54
54
  }
55
55
  get hostElement() { return index.getElement(this); }
56
56
  };
@@ -145,7 +145,7 @@ const PdsTableRow = class {
145
145
  }
146
146
  }
147
147
  render() {
148
- return (index.h(index.Host, { key: 'dc956e7253971bdadc003448822a83953ed4658f', class: this.classNames(), role: "row", part: "row" }, this.tableRef && this.tableRef.selectable && (index.h("pds-table-cell", { key: '1f119c5036ab1d27c5138106968a40492222b6f3', part: this.tableRef.fixedColumn ? 'checkbox-cell' : 'checkbox-cell', class: this.tableRef.selectable ? 'has-checkbox' : '' }, index.h("pds-checkbox", { key: 'f7a3534eceeabe478fb85e6e476f814e03988cfb', componentId: this.generateUniqueId(), onPdsCheckboxChange: this.handleCheckboxChange, indeterminate: this.indeterminate, label: "Select Row", hideLabel: true, checked: this.isSelected, part: "row-checkbox" }))), index.h("slot", { key: '287c0fe2c39bac5df7a977e31290aeddd0cd46b3' })));
148
+ return (index.h(index.Host, { key: '3bf8a5bf5f0ccb4a933a756d3ba52aaa2e35d4f0', class: this.classNames(), role: "row", part: "row" }, this.tableRef && this.tableRef.selectable && (index.h("pds-table-cell", { key: '5dfb53c4c7c550abbe445753828aa5a40cf53a7f', part: this.tableRef.fixedColumn ? 'checkbox-cell' : 'checkbox-cell', class: this.tableRef.selectable ? 'has-checkbox' : '' }, index.h("pds-checkbox", { key: 'a53b603e4e9a09705263341ecacd3b77d96fd75f', componentId: this.generateUniqueId(), onPdsCheckboxChange: this.handleCheckboxChange, indeterminate: this.indeterminate, label: "Select Row", hideLabel: true, checked: this.isSelected, part: "row-checkbox" }))), index.h("slot", { key: '4ae4007c867694a25b2ca0df6d69635bc0fa7cd0' })));
149
149
  }
150
150
  get hostElement() { return index.getElement(this); }
151
151
  };
@@ -4,8 +4,15 @@ var index = require('./index-D9iJuJCP.js');
4
4
  var scroll = require('./scroll-2XcoE_6Q.js');
5
5
  require('./keep-hydrated-AKoh0DG4.js');
6
6
 
7
- const pdsTableCss = () => `@charset "UTF-8";:host{--color-background-default:var(--pine-color-background-container);background:var(--color-background-default);border-collapse:separate;border-radius:inherit;-webkit-box-sizing:border-box;box-sizing:border-box;display:table;isolation:isolate;width:100%}:host(:focus-visible){outline:var(--pine-outline-focus)}:host(.pds-table-responsive-host){border-radius:inherit;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;display:block !important;max-width:100% !important;overflow:hidden !important;position:relative !important;width:100% !important}.pds-table-responsive-container{border-radius:inherit;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;overflow-x:auto !important;overflow-y:visible !important;position:relative !important;width:100% !important}.pds-table-responsive-wrapper{border-radius:inherit;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;display:block !important;position:relative !important;width:100% !important}.pds-table-responsive-wrapper .pds-table{display:table !important;min-width:-webkit-max-content !important;min-width:-moz-max-content !important;min-width:max-content !important;table-layout:auto !important;white-space:nowrap !important;width:100% !important}.scroll-shadow-left,.scroll-shadow-right{height:100%;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-transition:opacity 0.1s ease;transition:opacity 0.1s ease;width:4px;z-index:var(--pine-z-index)}.scroll-shadow-left{background:-webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to right, rgba(0, 0, 0, 0.1), transparent);border-end-start-radius:inherit;border-start-start-radius:inherit;inset-inline-start:0}:host-context([dir=rtl]) .scroll-shadow-left{background:-webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to left, rgba(0, 0, 0, 0.1), transparent)}.scroll-shadow-right{background:-webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to left, rgba(0, 0, 0, 0.1), transparent);border-end-end-radius:inherit;border-start-end-radius:inherit;inset-inline-end:0}:host-context([dir=rtl]) .scroll-shadow-right{background:-webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to right, rgba(0, 0, 0, 0.1), transparent)}`;
7
+ const pdsTableCss = () => `@charset "UTF-8";:host{--color-background-default:var(--pine-color-background-container);background:var(--color-background-default);border-collapse:separate;border-radius:inherit;-webkit-box-sizing:border-box;box-sizing:border-box;display:table;isolation:isolate;width:100%}:host(:focus-visible){outline:var(--pine-outline-focus)}:host(.is-fixed-layout){table-layout:fixed}:host(.pds-table-responsive-host){border-radius:inherit;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;display:block !important;max-width:100% !important;overflow:hidden !important;position:relative !important;width:100% !important}.pds-table-responsive-container{border-radius:inherit;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;overflow-x:auto !important;overflow-y:visible !important;position:relative !important;width:100% !important}.pds-table-responsive-wrapper{border-radius:inherit;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;display:block !important;position:relative !important;width:100% !important}.pds-table-responsive-wrapper .pds-table{display:table !important;min-width:-webkit-max-content !important;min-width:-moz-max-content !important;min-width:max-content !important;table-layout:auto !important;white-space:nowrap !important;width:100% !important}.pds-table-responsive-wrapper .pds-table.is-fixed-layout{table-layout:fixed !important}.scroll-shadow-left,.scroll-shadow-right{height:100%;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-transition:opacity 0.1s ease;transition:opacity 0.1s ease;width:4px;z-index:var(--pine-z-index)}.scroll-shadow-left{background:-webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to right, rgba(0, 0, 0, 0.1), transparent);border-end-start-radius:inherit;border-start-start-radius:inherit;inset-inline-start:0}:host-context([dir=rtl]) .scroll-shadow-left{background:-webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to left, rgba(0, 0, 0, 0.1), transparent)}.scroll-shadow-right{background:-webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to left, rgba(0, 0, 0, 0.1), transparent);border-end-end-radius:inherit;border-start-end-radius:inherit;inset-inline-end:0}:host-context([dir=rtl]) .scroll-shadow-right{background:-webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.1)), to(transparent));background:linear-gradient(to right, rgba(0, 0, 0, 0.1), transparent)}`;
8
8
 
9
+ // A column with no width of its own, under table-layout: fixed, otherwise shares whatever's left
10
+ // after the explicit-width columns -- which can go to nothing on a narrow viewport. Below this,
11
+ // it keeps this floor instead and the table grows wider, scrollable under `responsive` -- the
12
+ // only mode this applies in. Without `responsive` there's no container to measure that the floor
13
+ // itself can't grow (the table's own width would, chasing its tail) and no way to scroll the
14
+ // overflow it would create.
15
+ const AUTO_COLUMN_FLOOR_WIDTH_PX = 120;
9
16
  const PdsTable = class {
10
17
  constructor(hostRef) {
11
18
  index.registerInstance(this, hostRef);
@@ -15,6 +22,14 @@ const PdsTable = class {
15
22
  this._responsiveHandleResize = null;
16
23
  this._responsiveResizeObserver = null;
17
24
  this._teardownResponsive = null;
25
+ this._fixedLayoutResizeObserver = null;
26
+ this._fixedLayoutHandleResize = null;
27
+ this._fixedLayoutMutationObserver = null;
28
+ this._pendingColumnWidthsRecalc = false;
29
+ // componentDidLoad fires once; a later connectedCallback (the table was re-parented, reordered,
30
+ // or moved by a DOM morph) needs this to know it's a reconnect, not the first load, so it
31
+ // re-attaches what disconnectedCallback tore down.
32
+ this.hasLoaded = false;
18
33
  /**
19
34
  * Hides the select-all checkbox in the table header while keeping individual row checkboxes functional.
20
35
  * Only applies when `selectable` is true.
@@ -26,6 +41,18 @@ const PdsTable = class {
26
41
  * @defaultValue false
27
42
  */
28
43
  this.rowDividers = false;
44
+ /**
45
+ * Sets how the table sizes its columns. With `auto`, each column is sized from its content,
46
+ * so columns can change width when the rows change (for example after a sort). With `fixed`,
47
+ * columns take the `width` set on their `pds-table-head-cell` and ignore their content;
48
+ * columns without a `width` share the remaining space. Under `responsive`, that remaining
49
+ * share keeps a 120px floor on narrow viewports where the other columns' widths already fill
50
+ * it, growing the table instead (scrollable) -- without `responsive` there's no floor, since
51
+ * there would be nothing to scroll the overflow it would create. Content longer than its
52
+ * column overflows, so add `truncate` to cells whose content may not fit.
53
+ * @defaultValue 'auto'
54
+ */
55
+ this.tableLayout = 'auto';
29
56
  /**
30
57
  * The direction to sort the default column on initial load.
31
58
  * Only applies if `defaultSortColumn` is set.
@@ -42,11 +69,89 @@ const PdsTable = class {
42
69
  * @defaultValue 'asc'
43
70
  */
44
71
  this.sortingDirection = 'asc';
72
+ /**
73
+ * `tableLayout` or `responsive` changing at runtime is handled here, deferred to
74
+ * `componentDidRender` rather than done directly -- a `@Watch` runs before this component's
75
+ * own re-render, and both the floor's measurement and the responsive scroll setup query
76
+ * `.pds-table-responsive-container`, which that re-render is what creates or removes. Reading
77
+ * it any earlier would still see the old tree.
78
+ */
79
+ this._pendingFixedLayoutInputsSync = false;
80
+ /**
81
+ * Measures the explicit-width columns against the available space and gives the columns with
82
+ * no `width` of their own (which otherwise share whatever's left) a floor so none of them
83
+ * squeeze below `AUTO_COLUMN_FLOOR_WIDTH_PX`. Re-run on resize, since the responsive
84
+ * container's available width can change after load -- and only under `responsive`: that
85
+ * container is the one thing in this layout the floor's own growth can't also grow, which is
86
+ * what keeps this from measuring its own effect and oscillating.
87
+ * @private
88
+ */
89
+ this.recalcAutoColumnWidths = () => {
90
+ var _a, _b, _c, _d, _e, _f;
91
+ if (this.tableLayout !== 'fixed' || !this.responsive)
92
+ return;
93
+ const headCells = Array.from(this.el.querySelectorAll('pds-table-head-cell'));
94
+ const autoCells = [];
95
+ let explicitWidthPx = 0;
96
+ for (const cell of headCells) {
97
+ if (!cell.getAttribute('width')) {
98
+ autoCells.push(cell);
99
+ continue;
100
+ }
101
+ // Measured from layout rather than parsed from the attribute, so any CSS length -- px,
102
+ // rem, %, a token -- counts correctly, the same as the select-all column below.
103
+ explicitWidthPx += cell.getBoundingClientRect().width;
104
+ }
105
+ if (autoCells.length === 0)
106
+ return;
107
+ // A selectable table's select-all column lives in pds-table-head's shadow root, out of reach
108
+ // of the query above, and its width is a token rather than a px value -- so measure it.
109
+ if (this.selectable) {
110
+ const selectAllCell = (_b = (_a = this.el
111
+ .querySelector('pds-table-head')) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('pds-table-head-cell');
112
+ explicitWidthPx += (_c = selectAllCell === null || selectAllCell === void 0 ? void 0 : selectAllCell.getBoundingClientRect().width) !== null && _c !== void 0 ? _c : 0;
113
+ }
114
+ const measureEl = (_d = this.el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.pds-table-responsive-container');
115
+ const availableWidth = (_e = measureEl === null || measureEl === void 0 ? void 0 : measureEl.clientWidth) !== null && _e !== void 0 ? _e : 0;
116
+ const sharePerAutoColumn = (availableWidth - explicitWidthPx) / autoCells.length;
117
+ const needsFloor = sharePerAutoColumn < AUTO_COLUMN_FLOOR_WIDTH_PX;
118
+ autoCells.forEach((cell) => {
119
+ if (needsFloor) {
120
+ cell.style.setProperty('--pds-table-head-cell-auto-floor-width', `${AUTO_COLUMN_FLOOR_WIDTH_PX}px`);
121
+ }
122
+ else {
123
+ cell.style.removeProperty('--pds-table-head-cell-auto-floor-width');
124
+ }
125
+ });
126
+ // The floor can widen the table past its container on its own, with no scroll or
127
+ // container-resize event of its own to trigger the shadows' usual recompute -- reading
128
+ // `scrollWidth` just below forces the layout the style change above needs anyway.
129
+ (_f = this._responsiveHandleScroll) === null || _f === void 0 ? void 0 : _f.call(this);
130
+ };
131
+ // A `width` attribute change or a new head cell fires this in the same turn as that cell's
132
+ // own re-render, which is what applies `--pds-table-head-cell-width` -- measuring right away
133
+ // would still see the previous layout. Deferred one frame, by which point Stencil's own (also
134
+ // rAF-scheduled) write for that cell has flushed. Resize and window-resize don't need this:
135
+ // both fire only once layout has already settled.
136
+ this.scheduleColumnWidthsRecalc = () => {
137
+ if (this._pendingColumnWidthsRecalc)
138
+ return;
139
+ this._pendingColumnWidthsRecalc = true;
140
+ requestAnimationFrame(() => {
141
+ // A teardown in the meantime (disconnect, or the floor turning off) leaves this flag
142
+ // cleared but can't cancel an already-scheduled frame -- checked here so it's a no-op
143
+ // rather than measuring and writing styles on a table that's no longer set up for it.
144
+ if (!this._pendingColumnWidthsRecalc)
145
+ return;
146
+ this._pendingColumnWidthsRecalc = false;
147
+ if (this.el.isConnected)
148
+ this.recalcAutoColumnWidths();
149
+ });
150
+ };
45
151
  }
46
152
  componentDidLoad() {
47
- if (this.responsive) {
48
- this.setupResponsiveScrolling();
49
- }
153
+ this.hasLoaded = true;
154
+ this.attachLifecycleBoundSetup();
50
155
  // Apply default sort if specified
51
156
  // Use requestAnimationFrame to defer until child components are fully initialized
52
157
  if (this.defaultSortColumn) {
@@ -82,11 +187,150 @@ const PdsTable = class {
82
187
  console.warn(`Default sort column "${this.defaultSortColumn}" not found.`);
83
188
  }
84
189
  }
190
+ /**
191
+ * Re-attaches the responsive scroll listeners and the fixed-layout width floor after the table
192
+ * reconnects (it was re-parented, reordered, or moved by a DOM morph) -- `disconnectedCallback`
193
+ * tears both down, and neither comes back on its own.
194
+ */
195
+ connectedCallback() {
196
+ if (!this.hasLoaded)
197
+ return;
198
+ this.attachLifecycleBoundSetup();
199
+ }
200
+ attachLifecycleBoundSetup() {
201
+ if (this.responsive) {
202
+ this.setupResponsiveScrolling();
203
+ }
204
+ if (this.tableLayout === 'fixed' && this.responsive) {
205
+ this.setupFixedLayoutWidths();
206
+ }
207
+ }
85
208
  disconnectedCallback() {
86
209
  if (this._teardownResponsive) {
87
210
  this._teardownResponsive();
88
211
  this._teardownResponsive = null;
89
212
  }
213
+ this.teardownFixedLayoutWidths();
214
+ // A disconnect in the same turn as a pending tableLayout/responsive change could be the
215
+ // table being moved rather than removed for good -- there's no way to tell them apart yet
216
+ // here, and dropping the pending sync unconditionally would lose a change that's still
217
+ // coming once a same-turn reconnect's own render flushes. Checked on a microtask instead, by
218
+ // which point a same-turn reconnect has already happened; a disconnect that sticks still
219
+ // won't leave anything queued to leak a listener later.
220
+ if (this._pendingFixedLayoutInputsSync) {
221
+ queueMicrotask(() => {
222
+ if (!this.el.isConnected)
223
+ this._pendingFixedLayoutInputsSync = false;
224
+ });
225
+ }
226
+ }
227
+ handleFixedLayoutInputsChange() {
228
+ this._pendingFixedLayoutInputsSync = true;
229
+ }
230
+ componentDidRender() {
231
+ if (!this._pendingFixedLayoutInputsSync)
232
+ return;
233
+ this._pendingFixedLayoutInputsSync = false;
234
+ this.syncFixedLayoutInputs();
235
+ }
236
+ /**
237
+ * The floor only applies with `tableLayout="fixed"` and `responsive` both set, so either one
238
+ * changing at runtime can turn it on or off -- and `responsive` on its own also starts or stops
239
+ * the (separate) scroll listeners, same as it does on first load. A head cell only reads
240
+ * `tableLayout` during its own render, and the floor this sets lives in inline style, not a
241
+ * re-render -- so turning the floor off (including live, e.g. the Storybook control) needs
242
+ * both cleared explicitly, not just the observers torn down. The select-all column reads
243
+ * `tableLayout` the same way, one level up in `pds-table-head`'s own render, since it owns that
244
+ * cell rather than letting it through a `<slot>`. A `fixedColumn` cell's own sticky-shadow
245
+ * scroll listener is bound to this same container, cached on the cell itself -- it stays in
246
+ * light DOM across this change and never reconnects on its own, so it needs telling directly
247
+ * rather than finding out the container moved.
248
+ * @private
249
+ */
250
+ syncFixedLayoutInputs() {
251
+ if (this._teardownResponsive) {
252
+ this._teardownResponsive();
253
+ this._teardownResponsive = null;
254
+ }
255
+ if (this.responsive)
256
+ this.setupResponsiveScrolling();
257
+ this.teardownFixedLayoutWidths();
258
+ const floorActive = this.tableLayout === 'fixed' && this.responsive;
259
+ if (floorActive)
260
+ this.setupFixedLayoutWidths();
261
+ this.allHeadCells().forEach((cell) => {
262
+ if (!floorActive)
263
+ cell.style.removeProperty('--pds-table-head-cell-auto-floor-width');
264
+ index.forceUpdate(cell);
265
+ void cell.rebindScrollListener();
266
+ });
267
+ this.allBodyCells().forEach((cell) => {
268
+ void cell.rebindScrollListener();
269
+ });
270
+ const head = this.el.querySelector('pds-table-head');
271
+ if (head)
272
+ index.forceUpdate(head);
273
+ // The select-all cell's `width` is applied by that `forceUpdate`, which hasn't flushed yet --
274
+ // the floor's own recalc above just ran against its previous (or absent) width. That cell
275
+ // sits in `pds-table-head`'s shadow root, out of reach of the mutation observer that would
276
+ // otherwise catch the change, so this needs scheduling directly rather than left to notice.
277
+ if (floorActive)
278
+ this.scheduleColumnWidthsRecalc();
279
+ }
280
+ // The select-all cell sits in `pds-table-head`'s own shadow root, and a selectable row's
281
+ // checkbox cell in its own, rather than coming through a `<slot>` like the rest -- a
282
+ // light-DOM-only `querySelectorAll` from here never reaches either one.
283
+ allHeadCells() {
284
+ var _a;
285
+ const slotted = Array.from(this.el.querySelectorAll('pds-table-head-cell'));
286
+ const head = this.el.querySelector('pds-table-head');
287
+ const ownCell = (_a = head === null || head === void 0 ? void 0 : head.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('pds-table-head-cell');
288
+ return ownCell ? [...slotted, ownCell] : slotted;
289
+ }
290
+ allBodyCells() {
291
+ const slotted = Array.from(this.el.querySelectorAll('pds-table-cell'));
292
+ const rows = Array.from(this.el.querySelectorAll('pds-table-row'));
293
+ const ownCells = rows
294
+ .map((row) => { var _a; return (_a = row.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('pds-table-cell'); })
295
+ .filter((cell) => cell !== null);
296
+ return [...slotted, ...ownCells];
297
+ }
298
+ setupFixedLayoutWidths() {
299
+ this.recalcAutoColumnWidths();
300
+ if (typeof window === 'undefined')
301
+ return;
302
+ this._fixedLayoutHandleResize = () => this.recalcAutoColumnWidths();
303
+ if (window.ResizeObserver) {
304
+ try {
305
+ this._fixedLayoutResizeObserver = new ResizeObserver(this._fixedLayoutHandleResize);
306
+ this._fixedLayoutResizeObserver.observe(this.el);
307
+ }
308
+ catch (error) {
309
+ // ResizeObserver not available in some environments (e.g., tests); window resize still covers it.
310
+ }
311
+ }
312
+ window.addEventListener('resize', this._fixedLayoutHandleResize);
313
+ // A column added, removed, or given a different `width` changes the floor calc's inputs,
314
+ // and none of that is a resize of anything this observes above.
315
+ if (typeof MutationObserver !== 'undefined') {
316
+ this._fixedLayoutMutationObserver = new MutationObserver(this.scheduleColumnWidthsRecalc);
317
+ this._fixedLayoutMutationObserver.observe(this.el, { childList: true, subtree: true, attributeFilter: ['width'] });
318
+ }
319
+ }
320
+ teardownFixedLayoutWidths() {
321
+ if (this._fixedLayoutResizeObserver) {
322
+ this._fixedLayoutResizeObserver.disconnect();
323
+ this._fixedLayoutResizeObserver = null;
324
+ }
325
+ if (this._fixedLayoutMutationObserver) {
326
+ this._fixedLayoutMutationObserver.disconnect();
327
+ this._fixedLayoutMutationObserver = null;
328
+ }
329
+ if (typeof window !== 'undefined' && this._fixedLayoutHandleResize) {
330
+ window.removeEventListener('resize', this._fixedLayoutHandleResize);
331
+ }
332
+ this._fixedLayoutHandleResize = null;
333
+ this._pendingColumnWidthsRecalc = false;
90
334
  }
91
335
  /**
92
336
  * Sets up responsive scrolling behavior for the table.
@@ -180,6 +424,9 @@ const PdsTable = class {
180
424
  if (this.responsive) {
181
425
  classNames.push('is-responsive');
182
426
  }
427
+ if (this.tableLayout === 'fixed') {
428
+ classNames.push('is-fixed-layout');
429
+ }
183
430
  return classNames.join(' ');
184
431
  }
185
432
  sortTable(column, direction) {
@@ -248,11 +495,19 @@ const PdsTable = class {
248
495
  }
249
496
  render() {
250
497
  if (this.responsive) {
251
- return (index.h(index.Host, { class: "pds-table is-responsive pds-table-responsive-host", id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0", part: "table responsive-table" }, index.h("div", { class: "scroll-shadow-left", part: "scroll-shadow-left" }), index.h("div", { class: "scroll-shadow-right", part: "scroll-shadow-right" }), index.h("div", { class: "pds-table-responsive-container", part: "responsive-container" }, index.h("div", { class: "pds-table-responsive-wrapper", part: "responsive-wrapper" }, index.h("div", { class: this.classNames(), part: "table-inner" }, index.h("slot", null))))));
498
+ return (index.h(index.Host, { class: `${this.classNames()} pds-table-responsive-host`, id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0", part: "table responsive-table" }, index.h("div", { class: "scroll-shadow-left", part: "scroll-shadow-left" }), index.h("div", { class: "scroll-shadow-right", part: "scroll-shadow-right" }), index.h("div", { class: "pds-table-responsive-container", part: "responsive-container" }, index.h("div", { class: "pds-table-responsive-wrapper", part: "responsive-wrapper" }, index.h("div", { class: this.classNames(), part: "table-inner" }, index.h("slot", null))))));
252
499
  }
253
500
  return (index.h(index.Host, { class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0", part: "table" }, index.h("slot", null)));
254
501
  }
255
502
  get el() { return index.getElement(this); }
503
+ static get watchers() { return {
504
+ "tableLayout": [{
505
+ "handleFixedLayoutInputsChange": 0
506
+ }],
507
+ "responsive": [{
508
+ "handleFixedLayoutInputsChange": 0
509
+ }]
510
+ }; }
256
511
  };
257
512
  PdsTable.style = pdsTableCss();
258
513
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-D9iJuJCP.js');
4
- var attributes = require('./attributes-CW49XqaL.js');
4
+ var attributes = require('./attributes-Cgbkw6gO.js');
5
5
  var reconnectedContent = require('./reconnected-content-CpnEQcTp.js');
6
6
  require('./keep-hydrated-AKoh0DG4.js');
7
7
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-D9iJuJCP.js');
4
- var attributes = require('./attributes-CW49XqaL.js');
4
+ var attributes = require('./attributes-Cgbkw6gO.js');
5
5
  require('./keep-hydrated-AKoh0DG4.js');
6
6
 
7
7
  const pdsTabsCss = () => `:host{--tabs-dimension-panel-margin-top:var(--pine-dimension-none);--tabs-dimension-panel-padding:0;display:block}.pds-tabs__tablist{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-md)}:host(.pds-tabs--divider) .pds-tabs__tablist{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle)}:host(.pds-tabs--stretch){block-size:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.pds-tabs--stretch) .pds-tabs__tablist{-ms-flex:0 0 auto;flex:0 0 auto}:host(.pds-tabs--availability) .pds-tabs__tablist{gap:var(--pine-dimension-xs)}:host(.pds-tabs--filter) .pds-tabs__tablist{gap:var(--pine-dimension-sm)}:host(.pds-tabs--pill) .pds-tabs__tablist{background-color:var(--pine-color-background-app);border:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-radius:var(--pine-dimension-100);display:-ms-inline-flexbox;display:inline-flex;display:-ms-flexbox;display:flex;gap:0;height:var(--pine-dimension-450)}`;
@@ -45,7 +45,7 @@ const PdsTabs = class {
45
45
  */
46
46
  this.divider = false;
47
47
  /**
48
- * Stretches the component so the active tab panel fills the remaining height.
48
+ * Stretches the component to fill its container's height. The active tab panel keeps the height of its content.
49
49
  * Requires the component to have a constrained height (e.g. a flex parent).
50
50
  * @defaultValue false
51
51
  */
@@ -278,7 +278,7 @@ const PdsTabs = class {
278
278
  // Only the classes: `active-tab-name` backs the mutable activeTabName prop, so a morph that drops
279
279
  // it is a prop change, not a strip.
280
280
  this.hostKeeper.record(hostClass);
281
- return (index.h(index.Host, { key: '08ac02be358bebbd95dd5edca30cd99789445f50', "active-tab-name": this.activeTabName, class: hostClass, id: this.componentId }, tabList, index.h("slot", { key: '02395c056f80f46f1fa9117eafde68ef170b4188', name: "tabpanels" })));
281
+ return (index.h(index.Host, { key: '69985d6800ac879a8655d52a6b4f72c5b6a20c61', "active-tab-name": this.activeTabName, class: hostClass, id: this.componentId }, tabList, index.h("slot", { key: '0fb1b2521b15c77a50d81431cc1f0f6a40360cfa', name: "tabpanels" })));
282
282
  }
283
283
  get el() { return index.getElement(this); }
284
284
  };
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-D9iJuJCP.js');
4
4
  var utils = require('./utils-BhRmyxT8.js');
5
- var truncationTooltip = require('./truncation-tooltip-Bikp7n9I.js');
5
+ var truncationTooltip = require('./truncation-tooltip-CM5HgRHh.js');
6
6
  var index$1 = require('./index.cjs.js');
7
7
  require('./keep-hydrated-AKoh0DG4.js');
8
8
  require('./floating-ui.dom-Dw41zbyY.js');
@@ -86,7 +86,9 @@ const PdsText = class {
86
86
  this.truncationCleanup = truncationTooltip.setupTruncationTooltip({
87
87
  hostEl: this.el,
88
88
  contentEl: this.contentEl,
89
- getTooltipText: () => this.el.textContent || '',
89
+ // Not `textContent`: a consumer that wraps its own slot in this text, as `pds-alert` does, holds a
90
+ // `<slot>` here, which counts as empty and would leave the tooltip with nothing to show.
91
+ getTooltipText: () => truncationTooltip.flattenedText(this.el),
90
92
  // A wrapping link or button already takes focus, so its focus reveals the text instead of a nested tab stop.
91
93
  manageTabIndex: !usesWrapper,
92
94
  focusEl: usesWrapper ? wrapper : this.el,
@@ -122,7 +124,7 @@ const PdsText = class {
122
124
  ? `pds-text--decoration-${this.decoration}`
123
125
  : ''}
124
126
  `;
125
- return (index.h(Tag, { key: '30566c7810d3fd7f76ae281ae6d9a7e66803f0a3', ref: (el) => (this.contentEl = el), style: this.color && utils.setColor(this.color), class: typeClasses, part: "content" }, index.h("slot", { key: 'f5113458aa9295803fc1c0bc552f9f92602cacba' })));
127
+ return (index.h(Tag, { key: '3b9efbad7872410a7e07438801ec17382282ab16', ref: (el) => (this.contentEl = el), style: this.color && utils.setColor(this.color), class: typeClasses, part: "content" }, index.h("slot", { key: '0784e6aee6ce23f93f0e3c077da5fa3ca944aebb' })));
126
128
  }
127
129
  get el() { return index.getElement(this); }
128
130
  static get watchers() { return {